Как начать программирование микроконтроллера?

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

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

Ответ 1

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

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

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

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

Ответ 2

Я бы предпочел второе предложение Arduino. Они дешевы, есть несколько поставщиков, поскольку аппаратное обеспечение является открытым исходным кодом (хотя имя нет), 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 имеет функцию setup(), которая запускается при подаче питания или на плате reset и функция loop(), которая выполняется навсегда. Конечно, у вас также есть таймеры и функции прерывания, или вы можете использовать loop() для ввода запросов на голосование, а затем вызывать другие функции. Средство IDE Arduino находится поверх GCC и использует те же библиотеки и включает в себя то, что вы использовали бы, если бы пишете программу для barebone для микроконтроллера Atmega. Это означает, что (а) он скрывает жесткие части до тех пор, пока вы этого захотите (загрузчики, предохранители и т.д.), (Б) вы можете добраться до внутренних частей программы, если хотите, и (c) вы можете используйте большой выбор библиотек, которые существуют для этого семейства микроконтроллеров.

Ответ 3

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

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

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

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

  • Сборка: большинство производителей предоставляют бесплатные или довольно дешевые комплекты для разработки своих микроконтроллеров (для краткости MCU). Это самый мощный вариант, и тот, который вы должны использовать, если вам удобно. Он также научит вас много о компьютерах в целом.
  • Что-то еще: если вы предпочитаете использовать что-то вроде C, вам придется заплатить совсем немного денег для компилятора (хотя есть хотя бы один вариант с открытым исходным кодом для некоторых устройств), и вы должны учитывать, что код, созданный языками высокого уровня, обычно занимает много места/памяти в устройстве. Кроме того, в зависимости от стандартной библиотеки вы в конечном итоге сами программируете достаточное количество функций.
  • Базовый/паскальский язык: некоторые MCU поставляются с интерпретатором Basic/Pascal. Это здорово начать делать некоторые "игрушечные" проекты и получать представление о том, как это работает.

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

Моя рекомендация для стартеров:

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

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

Ответ 4

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

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

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

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

Ответ 5

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

Parallax BASIC Stamp

Ответ 6

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

Для работы более низкого уровня один чрезвычайно распространенный вариант - это PIC, дешевый (< $4) и быстрый (~ 20 MHz) с практически без встроенной памяти. Вы можете найти список среды разработки в Википедии.

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

Ответ 7

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

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

Ответ 8

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

Ответ 9

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

Ответ 10

Отъезд Физические вычисления Дэна О'Салливана: http://itp.nyu.edu/~dbo3/physical/physical.html Он также имеет ссылки на Basic Stamp, BX24, Basic Atom и PIC "Быстрые ссылки".

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

Ответ 11

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

Ответ 12

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

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

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

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

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

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

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

Ответ 13

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

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

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

Ответ 14

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