2008-09-17 24 views
74

Я разработал программное обеспечение на C++, Java, PHP, .NET, и теперь мне интересно научиться программировать материальные вещи. Я хотел бы запрограммировать систему, которая могла бы взаимодействовать с ИК, ЖК-дисплеем и иметь возможность использовать старые принтеры для его использования и т. Д.Как начать программирование микроконтроллера?

Моя проблема в том, с чего начать? Я искал в Интернете и нашел открытый исходный код Arduino, но как объединить другие электронные компоненты? Какую книгу или учебник я должен сделать, чтобы создать небольшой проект?

+0

Добавление к комментариям в другом месте я хотел бы предложить прочитать книгу под названием «[Итак, вы хотите быть встроенным инженером: руководство по встроенной инженерии, от консультации с корпоративной лестницей») (http://www.amazon.com/You- Wanna-Embedded-инженер-Инжиниринг/дп/0750679530)». Это даст вам подсказку. – avar 2009-04-15 05:22:46

ответ

61

Parallax заведомо завышен. Они избегают этого, потому что они продают свои вещи в образовательные учреждения, которые не знают ничего лучше.

Arduino - хорошее начало, ознакомьтесь с несколькими примерами (нажмите «Обучение» на сайте Arduino) и посмотрите, какие части они требуют. Мой любимый интернет-магазин электроники для хобби - sparkfun.com. У них есть множество деталей, предназначенных для взаимодействия с такими вещами, как Arduino.

Вы можете запрограммировать их на C, C++ или AVR Assembly. Лично я бы сказал, избегаю ОСНОВНЫХ, они медленнее, и если вы уже занимаетесь программированием, это не стоит хлопот.

(FYI, то Arduino в основном плата и программное обеспечение библиотека, созданная вокруг замечательного AVR микроконтроллера)

+0

Отличный ответ! просто добавьте немного, похожее на Arduino, есть проект Freeduino: http://www.freeduino.org/ – 2010-06-03 21:17:57

+0

Лично свечи зажигания немного завышены ... вы можете найти много вещей намного дешевле через ebay или aliexpress .. если вы готовы подождать немного дополнительного времени, поскольку они обычно отправляются из Китая. Но есть много продавцов в США, которые имеют хорошие цены на датчики arduino и т. Д. Но это только мои два цента. – jason 2013-02-26 04:07:11

4

Серия BASIC очень интересна. У них есть много приятных простых плат управления, чтобы вы начали, а программирование было простым. Контроллер фактически выполняет BASIC. Хотя это может не волновать многих людей, написание кода микроконтроллера требует времени, чтобы его повесить. Эта система великолепна, чтобы ваши ноги были влажными. Затем, когда у вас есть хороший (и простой) проект, вы можете перейти к другим более сложным контроллерам. Скорее всего, они будут собраны или запрограммированы C. Отладка будет вашей самой большой проблемой.

Parallax BASIC Stamp

3

Каждый микроконтроллер отличается. BASIC stamp очень популярен среди любителей, потому что вы можете запрограммировать его на языке высокого уровня.

Для работы на более низком уровне один из наиболее распространенных вариантов - PIC, дешевый (< $ 4) и быстрый (~ 20   МГц) чип с почти без встроенной памяти. Вы можете найти list of development environments в Википедии.

Если вам нужно купить электронные компоненты, чтобы пойти с вашим микроконтроллером, DigiKey - отличное место для начала.

1

У меня есть два предложения.

  1. Печатные микроконтроллеры - отличные вводные чипы. Вы можете подобрать комплекты на eBay дешево (< $ 30 обычно). Я также могу рекомендовать книгу Stamp2 Communications and Control Projects от Tom Petruzzellis http://www.amazon.com/STAMP-2-Communications-Control-Projects/dp/0071411976/ref=sr_11_1?ie=UTF8&qid=1221613350&sr=11-1

  2. Microchip (www.microship.com) делает микроконтроллер Stamp. Они также предлагают бесплатные образцы со своего веб-сайта, включая доставку. Я взял пару микрофонов со встроенными радиоприемниками, чтобы сделать двухстороннюю радиосвязь (а не WIFI). Еще одним крупным производителем микроконтроллеров является Dallas Semiconductor http://www.maxim-ic.com/, и они также поставляют бесплатные образцы. Даллас/Максим также имеет Инженерный журнал, который будет отправлять по почте бесплатно по вашему адресу, а журнал имеет массу примеров реализации, используя свои фишки, конечно, из которых вы можете получить много хорошей информации.

+0

Эта книга имеет страшный рейтинг на амазонке: P – 2008-09-17 12:30:55

3

У меня есть впечатление, что вам нужно начать с базовых микроконтроллеров архитектуры вещей. PIC хорош для начала, потому что базовые модели и самые ранние серии могут быть очень полезными - у них не слишком много дополнительных функций, поэтому вы не будете потеряны с дополнительными функциями, концентрирующимися на основах, которые хороши.

После этого вам нужно понять многое о организации памяти и выполнении программы в контексте жизненного цикла и временных моделей микроконтроллера. После этого вы можете начать анализ основных примеров ассемблера для конкретного микроконтроллера и продвигаться вперед с использованием более совершенных методов. Затем вы можете перейти к более продвинутой серии ПОС с ЦАП и другими модулями, которые являются общими для большинства современных микроконтроллеров, но на ПИК вы можете получить множество основ без дополнительной боли, которые будут работать одинаково для всех других чипов.

28

Ну, поле микроконтроллеров довольно большое. У вас есть несколько брендов, каждый из которых обладает полным набором контроллеров с разной степенью мощности, сложностью и способностью.

Это означает, что начать с большинства микроконтроллеров - это прочитать руководство производителей. В отличие от «нормального» программирования, когда большинство программистов придерживаются стандартов, правил и передовых методов и схем и т. Д. Программирование микроконтроллеров по-прежнему выполняется в значительной степени, поскольку программирование было выполнено в начале 1980-х годов: прочитав руководство по контроллеру, воспроизведя примеры и оттуда.

Microchip's manuals, например, отличные. Они также имеют очень хорошее значение community и предоставляют некоторые библиотеки со стандартными функциями, которые вы могли бы использовать (например, математика, ввод-вывод, выполнение последовательных операций ввода-вывода с использованием двух контактов и т. Д.). Многие люди, работающие с ПОС, довольно открыты и обычно делятся своим исходным кодом, если считают, что это может быть полезно кому-то другому.

Есть некоторые варианты, которые вы должны сделать перед началом. Первый - это какой язык вы собираетесь использовать. У вас есть три варианта:

  1. Монтаж: Большинство производителей предоставляют бесплатные или довольно дешевые комплекты для разработки своих микроконтроллеров (для краткости MCU). Это самый мощный вариант, и тот, который вы должны использовать, если вам удобно. Он также научит вас много о компьютерах в целом.
  2. Что-то еще: Если вы предпочитаете использовать что-то вроде C, вам придется заплатить довольно много денег для компилятора (хотя для некоторого устройства есть хотя бы one open source option), и вам нужно рассмотреть код, создаваемый языками высокого уровня, обычно занимает много места/памяти в устройстве. Кроме того, в зависимости от стандартной библиотеки вы в конечном итоге сами программируете достаточное количество функций.
  3. Basic/Pascal-like language: некоторые MCU поставляются с базовым/Pascal-подобным интерпретатором. Это здорово начать делать некоторые «игрушечные» проекты и получать представление о том, как это работает.

Затем вы должны решить, какое устройство вы хотите использовать. Цены на единицу сильно различаются в зависимости от производителя, будь то PROM, EPROM, EEPROM, сколько памяти у него есть, сколько у нее памяти, сколько программируемых контактов и т. Д.

Моя рекомендация, для начала, было бы:

  1. Попробуйте найти свободный «горелки» в Интернете, если вы хотите испытать острые ощущения от программирования вашего микроконтроллеры используя что-то вы построили. Есть много доступных там, просто Google для «простой горелки PIC» или аналогичного. Если это не является обязательным требованием, вы можете купить горелку, но это будет стоить вам справедливой суммы денег.
  2. Получить EEPROM версия MCU, на которую вы думаете, что собираетесь использовать больше всего. Это избавит вас от необходимости выбрасывать аппаратные средства стоимостью 5 долларов только потому, что у вас есть ошибка в коде.
  3. Купите кучу версии PROM MCU. Они дешевы, и они вам понадобятся. И как только вы начнете, вы захотите поместить MCU всюду.
  4. Узнайте, как использовать эмулятор. Большинство SDK поставляются с эмулятором, который вы можете использовать для тестирования своих идей, прежде чем передавать их в PROM.
  5. Найдите себе простой и интересный первый проект. Должен подчеркнуть ПРОСТОЙ. Если вы попытаетесь найти способ контролировать свою микроволновую печь с помощью пульта дистанционного управления сразу, будьте готовы к длительному обучению.

Надеюсь, это вам поможет! Если вам нужна дополнительная информация, я за углом, просто свист! :)

2

Заканчивать Physical Computing Дэн О'Салливан: http://itp.nyu.edu/~dbo3/physical/physical.html Он также содержит ссылки на Basic Stamp, BX24, Basic Atom, и ПИК "Быстрые Ссылки".

Arduino - отличная платформа с большим, поддерживающим сообществом. Я рекомендую это.

31

Я бы определенно предпочел предложение Ардуино. Они дешевы, есть несколько поставщиков, поскольку аппаратное обеспечение является открытым исходным кодом (хотя имя нет), IDE является бесплатным, вы программируете их на C, и их легко подключить практически к чему угодно. Плата имеет 12 цифровых выводов ввода/вывода (два из которых удваиваются как последовательные контакты связи) и шесть 12-разрядных штырей ввода/вывода аналого-цифрового преобразователя (которые также могут быть сконфигурированы как цифровые контакты). Он может обрабатывать широтно-импульсную модуляцию (PWM) для управления двигателем и сервомеханизмом, прерываниями, интерфейсами I2C, и большинство плат могут работать автономно или с USB-порта. Связь с компьютером осуществляется с помощью USB-драйвера FTDI.

В дополнение к Sparkfun.com, также зайдите в www.adafruit.com для некоторых дешевых, небольших плат USB «Boarduino» и нескольких хороших экранов для прототипов для полноразмерного Arduino.

Главный сайт Arduino (Arduino.cc) содержит практически все ссылки и руководства, которые вам нужно для начала работы.

Вот «Привет, мир!». программирования Arduino в качестве примера того, насколько это просто. Программа мигает светодиод, прикрепленный к цифровому выводу 13:

int ledPin = 13;     // LED connected to digital pin 13 

void setup() 
{ 
    pinMode(ledPin, OUTPUT);  // sets the digital pin as output 
} 

void loop() 
{ 
    digitalWrite(ledPin, HIGH); // sets the LED on 
    delay(1000);     // waits for a second 
    digitalWrite(ledPin, LOW); // sets the LED off 
    delay(1000);     // waits for a second 
} 

В принципе каждая программа Arduino имеет функцию настройки(), которая запускается при подаче питания или плата сбрасывается и функция цикла(), которая работает навсегда. Конечно, у вас также есть таймеры и функции прерывания, или вы можете использовать loop() для ввода запросов на голосование, а затем вызывать другие функции.Средство IDE Arduino находится поверх GCC и использует те же библиотеки и включает в себя то, что вы использовали бы, если бы пишете программу для barebone для микроконтроллера Atmega. Это означает, что (а) он скрывает жесткие части до тех пор, пока вы этого захотите (загрузчики, предохранители и т. Д.), (Б) вы можете добраться до внутренних частей программы, если хотите, и (c) вы можете используйте большой выбор библиотек, которые существуют для этого семейства микроконтроллеров.

14

Недавно я начал изучать программирование микроконтроллеров с помощью Arduino. Я купил Arduino Starter Pack от adafruit.com и прошел через их introductory tutorials. Их комплект поставляется с некоторой базовой электроникой (светодиоды, кнопки, фоторезисторы), которые дают вам некоторые вещи для экспериментов прямо с места в карьер.

Если вы уже знаете C/C++, вы сможете начать создавать полезные и интересные проекты в течение нескольких часов.

Arduino также замечательный, потому что как только вы познакомитесь с ним, вы сможете легко перейти к написанию сырого C на любом из Atmel AVR line of microcontrollers.

Я также рекомендую The Electronics Goldmine, где вы можете приобрести ассортимент электроники довольно дешево, чтобы получить хороший стартовый набор для работы.

0

На стороне записки:
Если вы не хотите, чтобы ваши руки грязные пайке много материала или электрически не склонны делать это (как я), поищите в PLC's.
Это промышленные контроллеры с модулями практически для каждой задачи, такие как цифровые входы/выходы, аналоговые входы/выходы, контроллеры шагового двигателя, последовательный ввод-вывод, Ethernet и т. Д. Вы можете программировать их по-разному, ассемблер как, графический и текстовый редактор с кодом, похожим на сочетание Pascal и Basic. Они имеют встроенную многозадачность и обычно работают довольно хорошо, но они немного дороже обычного микроконтроллера. Я всегда рекомендую Wago и их контроллер 750-841.

3

Это, вероятно, слишком много для того, что вы пытаетесь сделать, но программирование системы на базе FPGA может быть забавным. Язык VHDL больше похож на схемы проводов, чем написание C-кода. Плата Nexys-2 можно купить за 130 долларов.

2

Еще один голос за Arduino, который очень крут. С помощью платы Arduino, однопроводного датчика температуры и Hyperterminal, вы можете начать записывать данные о мире вокруг вас. Подхват Обработка, и вы можете регистрировать данные, графа, анализировать их в Excel, что угодно. Ухоженная.

3

Все необходимое для запуска в Arduino и электронике можно найти здесь: http://www.smileymicros.com. Если я хорошо помню, у автора книги была колонка для новичков Arduino в одном из электронных журналов. Кроме того, в общем вы должны изучить I2C, SPI, 1wire и попытаться подключить датчики с такими интерфейсами. Прочтите много спецификаций таких датчиков и попытайтесь понять все в них. Задавайте вопросы, когда застряли. Изучите MODBUS (RTU/ASCII/TCP) или аналогичный протокол, который может открыть ваше устройство в мире после его внедрения в устройство. Изучите общую электронику и попробуйте подключить реле, симисторы, шаговые двигатели, сервоприводы, что подтягивает и тянет вниз, что такое поиск и опускание, как рисовать схемы и подключать базовые драйверы к вашему MCU.

2

Если вы любитель энтузиастов электроники, вы можете создать собственную систему разработки. Это может быть сложнее, но это намного веселее.

Смотрите здесь простую систему развития для PIC16F628A microncontrollers, включая полные схемы и печатной платы: http://www.bobtech.ro/proiecte/microcontrolere/1-bobdemo-sistem-pentru-dezvoltare-aplicatii-cu-microcontroler

Особенности:

  • 12 I/O с кнопками для входов и светодиодов для выходов
  • последовательный интерфейс RS232 порт для ПК
  • датчик инфракрасного пульта дистанционного управления
  • на плате разъем ICSP программирование
  • опционально бортовой батареи 9В (для демонстрационных целей)
  • на плате + 5V источник питания для микроконтроллера и внешних периферийных устройств

Для программирования можно использовать BobProg - ICSP PIC programmer
Перейдите по ссылке для программиста схем и печатных плат ,

Программное обеспечение:

  • (бесплатно) MPLAB IDE от Microchip для развития в C или ASM язык
  • (бесплатно) IC-Prog программирования флэш программное обеспечение использовать для ICSP программатора