Микроконтроллеры программирование. Программирование микроконтроллеров: от основ до продвинутых техник

Что такое микроконтроллеры и как их программировать. Какие языки и инструменты используются для разработки встраиваемых систем. Как работать с периферийными устройствами и прерываниями микроконтроллеров. Какие существуют особенности и ограничения при программировании микроконтроллеров.

Содержание

Что такое микроконтроллер и зачем его программировать

Микроконтроллер — это миниатюрный компьютер, размещенный на одной интегральной схеме. Он содержит процессор, память и программируемые входы/выходы. Микроконтроллеры используются для управления различными электронными устройствами и системами.

Основные преимущества использования микроконтроллеров:

  • Компактные размеры
  • Низкое энергопотребление
  • Невысокая стоимость
  • Наличие встроенной периферии (таймеры, АЦП, интерфейсы и т.д.)
  • Возможность программирования под конкретную задачу

Программирование микроконтроллера позволяет реализовать требуемый алгоритм работы устройства. Это дает возможность создавать «умные» устройства, способные выполнять сложные функции.


Языки программирования микроконтроллеров

Для программирования микроконтроллеров используются различные языки, наиболее распространенными являются:

  • Ассемблер — низкоуровневый язык, обеспечивающий прямой доступ к аппаратным ресурсам
  • C/C++ — позволяют писать эффективный и переносимый код
  • Python — упрощает разработку прототипов
  • BASIC — хорошо подходит для начинающих

Выбор языка зависит от конкретной задачи, требований к производительности и имеющегося опыта разработчика. Для большинства проектов оптимальным выбором является язык C.

Особенности программирования микроконтроллеров

При разработке программ для микроконтроллеров необходимо учитывать следующие особенности:

  • Ограниченные ресурсы (память, вычислительная мощность)
  • Работа в реальном времени
  • Необходимость оптимизации кода
  • Прямой доступ к аппаратным ресурсам
  • Использование прерываний
  • Отсутствие операционной системы

Эти особенности требуют от программиста тщательного планирования архитектуры программы и эффективного использования доступных ресурсов микроконтроллера.


Инструменты для разработки

Для программирования микроконтроллеров используются следующие инструменты:

  • Интегрированные среды разработки (IDE)
  • Компиляторы
  • Программаторы
  • Отладчики
  • Симуляторы

Выбор конкретных инструментов зависит от типа используемого микроконтроллера и предпочтений разработчика. Многие производители микроконтроллеров предоставляют собственные наборы средств разработки.

Работа с периферийными устройствами

Микроконтроллеры имеют встроенные периферийные устройства, которые позволяют взаимодействовать с внешним миром. Основные типы периферии:

  • Порты ввода-вывода
  • Таймеры/счетчики
  • АЦП и ЦАП
  • Интерфейсы UART, SPI, I2C
  • ШИМ-генераторы

Для работы с периферией используются специальные регистры, через которые осуществляется настройка и управление. Важно внимательно изучить документацию на микроконтроллер, чтобы правильно использовать доступную периферию.

Прерывания в микроконтроллерах

Прерывания позволяют микроконтроллеру реагировать на внешние события в реальном времени. Основные типы прерываний:


  • Внешние (от кнопок, датчиков и т.п.)
  • Таймерные
  • От периферийных устройств

При возникновении прерывания выполнение основной программы приостанавливается и управление передается обработчику прерывания. Это позволяет оперативно реагировать на события без постоянного опроса.

Оптимизация кода для микроконтроллеров

Оптимизация важна из-за ограниченных ресурсов микроконтроллеров. Основные способы оптимизации:

  • Использование битовых операций
  • Замена умножения и деления на сдвиги
  • Использование встроенных функций компилятора
  • Оптимизация циклов
  • Правильный выбор типов данных

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

Отладка программ для микроконтроллеров

Отладка встраиваемых систем имеет свои особенности. Основные методы отладки:

  • Использование светодиодов и пинов портов
  • Вывод отладочной информации по UART
  • Использование встроенных отладчиков (JTAG, SWD)
  • Симуляция на ПК

Важно продумать возможности отладки на этапе проектирования устройства. Это позволит значительно упростить поиск и устранение ошибок в дальнейшем.



Программирование микроконтроллеров — Учимся программировать микроконтроллеры / Хабр

Учимся программировать микроконтроллеры

Статьи Авторы Компании

Сначала показывать

Порог рейтинга

rukhi7

Программирование *Анализ и проектирование систем *C *Программирование микроконтроллеров *

Когда-то мне довелось делать программу для управления процессом измерения в мониторе артериального давления (АД). Хочу на этом примере разобрать и продемонстрировать что нужно для решения задач реального времени.

Наверно на этом примере можно понять, в том числе, когда нужно использовать RTOS.

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

Читать далее

Всего голосов 10: ↑8 и ↓2 +6

Просмотры

1.4K

Комментарии 24

marus-ka

Программирование микроконтроллеров *Производство и разработка электроники *

На волне подъема всеобщего интереса к отечественным микроконтроллерам и процессорам мне захотелось разобраться, а что за камни делает НИИЭТ? Про микроконтроллеры и процессоры других производителей написано немало (как на самом Хабре, так и в тематических журналах). А про МК НИИЭТ крайне мало информации, особенно практической и особенно про 8-ми и 16-битные.

Читать далее

Всего голосов 20: ↑20 и ↓0 +20

Просмотры

2.8K

Комментарии 22

aabzel

Программирование микроконтроллеров *Производство и разработка электроники *

Tutorial

Часто в РФ приходится слышать мнение, что в Embedded разработке якобы в принципе не может быть никакого модульного тестирования. Инженеры за 40 в (7 случаях из 10) даже никогда не слышали термина unit testing. В России бытует даже расхожее мнение

Не нужны никакие тесты. Если программист хороший, то и код он пишет без ошибок.

Попробуем разобраться какие есть плюсы и минусы в модульном тестировании и понять надо это или нет.

Читать далее

Всего голосов 13: ↑7 и ↓6 +1

Просмотры

1. 5K

Комментарии 46

bougumot

Блог компании Auriga Программирование *Системное программирование *Программирование микроконтроллеров *

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

Читать далее

Всего голосов 10: ↑10 и ↓0 +10

Просмотры

1K

Комментарии 0

aabzel

Программирование микроконтроллеров *Производство и разработка электроники *

Tutorial

Перепрошивка Пастильды обернулась настоящим квестом. Как перепрошить Pastild(у) или бег с препятствиями. Инструкция для обыкновенного пользователя компьютером.

Читать далее

Всего голосов 4: ↑4 и ↓0 +4

Просмотры

1.3K

Комментарии 11

dmitriyrudnev

Блог компании RUVDS.com Разработка систем связи *Программирование микроконтроллеров *Схемотехника *DIY или Сделай сам

Во второй части публикации речь пойдёт о реализации линейного входа описанной ранее звуковой карты USB на встроенном в MCUSTM32F411CEU6АЦП.

В статье будут разобраны несколько неочевидных нюансов подобной реализации, а в финале мы сравним характеристики линейного входа на встроенном АЦП с характеристиками линейного входа на кодеке TLV320AIC3104IRHB.

Читать дальше →

Всего голосов 47: ↑46 и ↓1 +45

Просмотры

4.3K

Комментарии 16

YuriPanchul

FPGA *Программирование микроконтроллеров *Образование за рубежом Производство и разработка электроники *Процессоры

Обнаружил интересный баг американской системы образования:

У многих студентов в резюме стоит «делал курсовой проект по алгоритму Томасуло, out-of-order суперскаляру, многопоточному процессору итд».

На это я спрашиваю: «Прекрасно, давайте возмем два процессорных ядра — одно со статическим конвейером, а у другого с динамическим, как в вашем курсовике. Насколько ваш процессор будет производительнее?»

На это они отвечают «процессор будет производительнее, потому что» — и начинают ковыряться в деталях зависимостей между инструкциями.

На это я машу руками и говорю «стоп-стоп-стоп. Я не просил вас объяснить мне что такой RaW (read-after-write), WaR и WaW зависимости. Я вообще не спрашивал у вас «почему?» Я спросил у вас «сколько?» Я просил вас грубо оценить пользу от вашей разработки.

И представляете что они мне отвечают?

Всего голосов 68: ↑53 и ↓15 +38

Просмотры

23K

Комментарии 174

DSarovsky

C++ *Программирование микроконтроллеров *

В продолжение темы применения современного C++, а именно шаблонов, в программировании микроконтроллеров рассматриваю реализацию еще одного популярного класса USB — Mass Storage, а также вопрос создания композитного устройства.

Читать далее

Всего голосов 18: ↑15 и ↓3 +12

Просмотры

3. 4K

Комментарии 10

aabzel

Программирование микроконтроллеров *Производство и разработка электроники *Электроника для начинающих

Tutorial

В этом тексте я написал про особенности интерфейса I2S и про то как можно тестировать и отлаживать интерфейс I2S.

Читать далее

Всего голосов 13: ↑12 и ↓1 +11

Просмотры

2.6K

Комментарии 2

avsolovyev

Программирование микроконтроллеров *

Как избавиться от дополнительных разъемов на печатной плате IoT-устройств при наличии разъема Type-C?

Этим вопросом мы задались, когда в своих разработках начали переход с micro-USB на 24pin Type-C. В этой статье я постараюсь описать наш опыт использования Type-C, расскажу о распиновке разъемов Type-C для устройств с ESP32, STM32, Миландра, RISC-V или ARM, а также о том, что внутри кабеля Type-C и как его выбрать.

Читать далее

Всего голосов 29: ↑28 и ↓1 +27

Просмотры

4.2K

Комментарии 14

rukhi7

C *Программирование микроконтроллеров *Производство и разработка электроники *

Хочу поделиться своим вариантом способа хранения параметров. Мой вариант подходит не только для хранения в какой-то отдельной энергонезависимой памяти (далее Епром), он изначально придуман для хранения калибровочных значений в остатке флеш памяти программ.

Я рассматривал задачу не только с точки зрения хранения данных, а еще и с точки зрения эффективного использования Епром для их изменения.

Читать далее

Всего голосов 8: ↑7 и ↓1 +6

Просмотры

1.7K

Комментарии 29

reug

Программирование микроконтроллеров *

Продолжая цикл публикаций по микроконтроллерам на ядре Cortex-M0 компании Megawin (см. предыдущие статьи 1, 2, 3, 4, 5, 6 и 7), сегодня рассмотрим модуль интерфейса SPI в роли ведущего и ведомого, а также:

Читать далее

Всего голосов 10: ↑9 и ↓1 +8

Просмотры

886

Комментарии 3

dmitriyrudnev

Блог компании RUVDS.com Разработка систем связи *Программирование микроконтроллеров *Схемотехника *DIY или Сделай сам

С момента публикации материала о реализации составного устройства USB на STM32 прошло полтора года. Данная статья в двух частях будет своеобразным отчётом о проделанной за это время работе.

Напомню, что описанное в предыдущей публикации решение состоит из двухканального звукового устройства USB и виртуального COM-порта. Разрабатывалось составное устройство USB для применения в составе любительской SDR-радиостанции.

Далее речь пойдёт об аппаратно-программной доработке двухканального звукового устройства USB в полноценную звуковую карту USB.

Читать дальше →

Всего голосов 49: ↑48 и ↓1 +47

Просмотры

5K

Комментарии 13

Evgeny_E

Программирование микроконтроллеров *Производство и разработка электроники *DIY или Сделай сам Звук

Условия эксплуатации танка, как известно, весьма суровые: пыль и вибрация, широкий диапазон рабочих температур, большие изменения влажности. Именно поэтому обойтись дешёвыми китайскими платами с Aliexpress здесь не получится. К тому же плеер должен органично вписываться в существующий конструктив, не мешать орудиям и рычагам управления. А вот большой объем памяти наоборот не требуется, воспроизводить нужно два трека: выстрел из пушки и пулемёт.

Читать далее

Всего голосов 31: ↑22 и ↓9 +13

Просмотры

12K

Комментарии 12

YuriPanchul

Алгоритмы *GPGPU *FPGA *Программирование микроконтроллеров *Карьера в IT-индустрии

Я работаю проектировщиком аппаратного блока графического процессора в телефонах Samsung, в рамках совместного проекта с AMD. Сейчас наш менеджмент расширяет команду и поощряет инженеров распостранять информацию о новых позициях среди своих знакомых. Я решил написать это пост для более широкой аудитории, так как множество людей, способных пройти интервью на RTL или DV позицию — больше, чем множество моих знакомых. Если вы сможете прислать мне ответ на задачку в моем посте вместе с вашим резюме, я перешлю его нанимающему менеджеру и рекрутеру нашей группы (в комментах прошу ответ не писать). Если резюме им понравится, вам нужно будет пройти стандартное собеседование на несколько часов, с несколькими инженерами, у каждого из которых свой набор задачек.

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

Читать далее

Всего голосов 17: ↑14 и ↓3 +11

Просмотры

4.3K

Комментарии 33

aabzel

Open source *Программирование *Промышленное программирование *Программирование микроконтроллеров *DevOps *

Tutorial

Итак в вашем репозитории накопилось количество сборок превысившее число 1. Настало время задуматься о DevOps(е). Как же уследить за всеми этими сборками?

Классическое решение это запустить сервер сборки. Есть готовая технология, называется Jenkins.

Идея проста. Сервер сборки это инфраструктурный прикладной процесс, который периодически запускает скрипты построения конкретных программных проектов и затем сохраняет бинари в конкретную папку или архив. Обычно сервер сборки работает автономно 24/7 и собирает артефакты из репозитория с кодом.

В этом тексте я написал инструкцию для разворачивания Jenkins на Windows компьютере.

Читать далее

Всего голосов 11: ↑4 и ↓7 -3

Просмотры

2.8K

Комментарии 23

Indemsys

Разработка систем связи *Программирование микроконтроллеров *Схемотехника *Производство и разработка электроники *DIY или Сделай сам

IoT маршрутизатор нужен для сбора и передачи данных в облака от различных проводных локальных шин (CAN, RS485, USB …) и беспроводных локальных сетей (Bluetooth, LoRa …).

Используя Azure RTOS сделать свой маршрутизатор достаточно просто. Нужно только правильно выбрать пару ингредиентов: Wi-Fi модуль и универсальный, быстрый, защищённый, экономичный микроконтроллер с открытой архитектурой.

Читать далее

Всего голосов 4: ↑3 и ↓1 +2

Просмотры

1.9K

Комментарии 4

Yufi

Программирование микроконтроллеров *Схемотехника *Электроника для начинающих

Как-то мне пришлось делать устройство на голой esp8266, и о сложностях (моей тупоголовости) я сейчас поведаю.

Если вы когда-нибудь делали устройство на голой esp, навряд ли я вам мир открою, статья рассчитана на начинающих, так что давайте преступим к вопросу безотлагательно.

Итак, речь пойдет не о самой микрухе esp, а о модуле с распаянными памятью, обвязкой и тд. Но даже если вы будете разводить плату на микрухе, информация вам пригодится.

Читать далее

Всего голосов 25: ↑7 и ↓18 -11

Просмотры

3.7K

Комментарии 11

hddmasters

Системное администрирование *Восстановление данных *Реверс-инжиниринг *Программирование микроконтроллеров *Компьютерное железо

Tutorial

На вопрос, какие не самые обычные случаи восстановления данных могут повстречаться в компании, профиль которой – извлекать информацию из поврежденных накопителей, можно привести пример одной из недавних задач с MMC картой из промышленного ПЛК (PLC) Siemens Simatic S7-300, в задачи которого входило управление несколькими десятками электродвигателей и клапанов, а также анализ параметров целой россыпи датчиков некоего конвейера.

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

Читать далее

Всего голосов 34: ↑34 и ↓0 +34

Просмотры

5.4K

Комментарии 33

aabzel

Криптография *Open source *C++ *Программирование микроконтроллеров *Схемотехника *

Решил купить себе Pastild(у). Это аппаратный хранитель паролей и одновременно USB Flash(ка). Также понравилась возможность съёмной SD карты. Идея аппаратного менеджера паролей, который не требует отдельного USB просто великолепная!

Какие же впечатления от использования Пастильды (User experience)?

Читать далее

Всего голосов 8: ↑7 и ↓1 +6

Просмотры

3K

Комментарии 12

Программирование 32-разрядных микроконтроллеров

Программирование 32-разрядных микроконтроллеров

Занятие 1: Введение. Устройство микроконтроллера. Понятие «микроконтроллер». Семейства микроконтроллеров. Применение микроконтроллеров. Блоки контроллера: общий ввод-вывод, тактирование, таймеры, прерывания, периферия, возможность отладки. Язык С для ARM. Отличия написания программы по сравнению с программированием под PC. Ввод и вывод. Адресация. Двоичное и шестнадцатиричное счисление. Среда программирования IAR EWARM. Загрузка программы в микроконтроллер. Создание программы ввода-вывода. Освоение связи схемы платы и прошивки, документации, поиска адресов аппаратных регистров.

Занятие 2: Зачем нужны прерывания. Блок контроля прерываний, вектора прерываний, приоритеты. Флаги прерываний в контроллерах LuminaryMicro. Написание программы асинхронного ввода-вывода. Освоение документации к NVIC, возможностей прерываний GPIO, маски побитового доступа, стартового кода, таблицы векторов прерываний, дребезга контактов, макросов таблиц адресов аппартаных регистров и доступа к ним, правил написания обработчиков прерываний.

Занятие 3: Обмен данными. UART. Обмен данными с другими устройствами. Последовательная и параллельная передача данных, UART. Понятие протокола передачи данных. Помехоустойчивость и коррекция ошибок. RS232 для микроконтроллера и компьютера. Виртуальный USB-RS232 порт. Альтернативные функции порта GPIO. Написание эхо-программы UART с использованием прерываний. Освоение альтернативной функции GPIO, правил как не сломать контроллер, работы с COM портом на компьютере, событий UART.

Занятие 4. Таймеры. Режимы работы таймеров, измерение коротких времен. Написание программы синхронного вывода с использованием прерываний и таймера. Освоение библиотеки driverlib.

Занятие 5. Доделывание программ: ввод-вывод, асинхронный ввод-вывод, UART-эхо, синхронный вывод при помощи таймера.

Занятие 6. Широтно-импульсная модуляция (ШИМ). Методы синхронизации каналов ШИМ. Разработка программ периодического плавного управления выходной мощностью с использованием таймера и генератора ШИМ. Освоение цифровых компараторов как 
способа плавного регулирования, счётчиков как делителей частоты.

Занятие 7: АЦП, ЦАП. Скорость дискретизации и разрядность. Режимы запуска АЦП, дифференциальный режим измерения. Алгоритмы усреднения измеренных величин: скользящее среднее и экспоненциальное усреднение Разработка программы цифрового контроллера напряжения.

Занятие 8: Интерфейс I2C. Физическая реализация. Open-drain и pull-up. Выделенные адреса. Арбитраж. Типы обнаруживаемых ошибок. Multi-master. Как можно автоматически распределить адреса? Примеры других последовательных интерфейсов (SPI, CAN). Программа обнаружения дисплея на тестовой плате и автоматическое определение его адреса.

Занятие 9: Взаимодействие с дисплеем. Устройство дисплея. Пиксели, цвет, битность изображения. Протокол записи информации на дисплей. Написание программы вывода на дисплей.

Занятие 10: Работа с флеш-памятью микроконтроллера. Виды памяти и принципы их работы. Запись во флэш память из прошивки. Отличие от записи в оперативную память. Написание простой программы с использованием флеш памяти.

Introduction to Microcontrollers — Beginnings

Майк Сильва●20 августа 2013 г.●Tweet

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

  • Часть 1. Введение в микроконтроллеры. Начало
  • Часть 2. Введение в микроконтроллеры. Дальнейшее начало
  • Часть 3. Введение в микроконтроллеры. Hello World
  • Часть 4. Введение в микроконтроллеры. Введение в микроконтроллеры. Прерывания
  • Часть 6. Введение в микроконтроллеры. Подробнее о прерываниях
  • Часть 7. Введение в микроконтроллеры. Таймеры
  • Часть 8. Введение в микроконтроллеры.0008
  • Часть 9. Знакомство с микроконтроллерами — дополнительные таймеры и дисплеи
  • Часть 10. Знакомство с микроконтроллерами — кнопки и дребезг
  • Часть 11. Знакомство с микроконтроллерами — матрица кнопок и автоматическое повторение
  • Часть 12. Знакомство с микроконтроллерами — управление WS2812 Светодиоды RGB
  • Часть 13. Введение в микроконтроллеры — 7-сегментные дисплеи и мультиплексирование
  • Часть 14. Введение в микроконтроллеры — Ада — 7 сегментов и обнаружение ошибок

Целевая аудитория

Эта серия руководств предназначена для студентов, любителей, программистов и разработчиков оборудования, которые хотят изучить основы программирования микроконтроллеров или заполнить некоторые пробелы в своих знаниях в области программирования. Этот учебник не научит вас программированию в целом, хотя в нем будут обсуждаться методы программирования, представляющие особый интерес для микроконтроллеров. Этот учебник также не научит вас проектировать аппаратное обеспечение, хотя и проиллюстрирует аппаратные проблемы, с которыми обычно сталкиваются при использовании микроконтроллеров. Я надеюсь, что это поможет новичку понять, что такое микроконтроллер (μC), какими возможностями он обычно обладает и как использовать эти возможности. Он будет идти с самого начала — как подключить и запрограммировать микроконтроллер на мигание и светодиод (микроконтроллерная версия программы «Hello World»), через различные функции и периферийные устройства, обычно используемые в микроконтроллерах, такие как прерывания, таймеры / счетчики, UART, SPI, I2C, АЦП, ЦАП, ШИМ, сторожевой таймер и т. д. Также будут рассмотрены общие темы, такие как подавление дребезга входных сигналов, фильтрация значений АЦП, управление жидкокристаллическими дисплеями символов и другие подобные задачи.

болтать.

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

Ну, как я всегда говорю: «Покажи мне мигающий светодиод, и я покажу тебе человека, пускающего слюни». Достаточно сказать, что диорама моего друга теперь превратилась в фестиваль огней — чтобы войти в комнату, нужно быть почти в темных очках.

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

Что мне посоветовать? Ну, это немного сложно, потому что все зависит от того, что люди пытаются делать. Конечно, существуют всевозможные системы разработки микроконтроллеров. Лично мне очень удобно пользоваться платами Arduino и их клонами. Мне также нравится относительная простота интегрированной среды разработки (IDE) Arduino, с помощью которой вы записываете свои программы, компилируете их и загружаете на макетную плату.

Что касается языков программирования, то на протяжении многих лет я пробовал их самые разные, включая различные языки ассемблера, BASIC, FORTRAN, Pascal, C и Python. У меня есть друзья, которые являются страстными сторонниками Python, и мне самому он очень нравится, но когда дело доходит до работы с микроконтроллерами, я в значительной степени придерживаюсь языка программирования C вместе с любыми вызовами функций, которые мне нужно использовать в любой работе. Библиотеки C++, с которыми мне довелось работать в то время.

Что касается конкретных макетных плат, это зависит от того, чем я занимаюсь в данный момент — все, о чем я прошу, это чтобы они были совместимы с Arduino и чтобы их можно было запрограммировать с помощью Arduino IDE. Например, некоторое время назад я создал массив шариков для пинг-понга размером 12×12, каждый из которых содержал трехцветный светодиод в форме WS2812B (он же NeoPixel). На самом деле, я недавно загрузил это видео, показывающее, как мой массив работает с игрой Conway’s Game of Life (GOL).

В данном случае я выбрал недорогой (примерно 5 долларов) Seeeduino XIAO от Seeed Studio, который, хотя и размером с обычную почтовую марку, может похвастаться 32-разрядным процессором Arm Cortex-M0+, работающим на частоте 48 МГц с 256 КБ флэш-памяти и 32 КБ SRAM (см. Также «Скажи привет Seeeduino XIAO»).

Seeeduino XIAO размером с небольшую почтовую марку
(Источник изображения: Seeed Studio)

Для сравнения, еще один из моих проектов — легендарный Prognostication Engine (не спрашивайте). Как мы видим в этом видео, эта безрассудная красавица может похвастаться изобилием старинных переключателей, ручек и аналоговых счетчиков. В нижнем корпусе есть 116 трехцветных светодиодов, связанных с ручками, переключателями и кнопками; 64 трехцветных светодиода в топке в верхнем шкафу; и 140 трехцветных светодиодов, связанных с большими вакуумными трубками, установленными в верхней части двигателя.

Я начал с нескольких плат Arduino Mega, но заставить их всех общаться друг с другом было головной болью, а это не лучшее место для боли. Совсем недавно я начал использовать ShieldBuddy TC375 от Hitex (см. также Вздох в восторге от ShieldBuddy TC375).

ShieldBuddy TC375 (Источник изображения: Hitex)

Несмотря на то, что ShieldBuddy имеет тот же форм-фактор, что и Arduino Mega, он невероятно мощнее, начиная с того факта, что у него три 32-битных процессорных ядра, каждое из которых работает. на частоте 300 МГц, каждый со своим собственным модулем с плавающей запятой (FPU), и каждый с большим объемом памяти, чем вы можете бросить! Хотя ядра работают независимо, они могут обмениваться данными и координировать свои действия, используя такие методы, как разделяемая память и программные прерывания.

Одна из замечательных особенностей использования Arduino заключается в том, что у вас есть доступ к огромному количеству съемных плат, называемых шилдами, которые выполняют всевозможные полезные функции. Эти платы также поставляются с примерами программного обеспечения, которое поможет вам быстро и легко приступить к работе. Например, недавно я хотел начать играть с датчиками MEMS (микроэлектромеханические системы), поэтому я выбрал Fusion Breakout Board (BOB) с 9 степенями свободы (9 степеней свободы) от Adafruit.

Разделительная плата Fusion с 9 степенями свободы (Источник изображения: Adafruit)

На этой плате установлен датчик MEMS BNO055 от Bosch. В свою очередь, этот датчик имеет 3-осевой акселерометр, 3-осевой гироскоп и 3-осевой магнитометр. Кроме того, он оснащен 32-разрядным процессором Arm Cortex M0+, который выполняет слияние датчиков и возвращает значения в форме, которую вы можете понять, не выходя из ушей. Как мы видим в этом видео, я прикрепил один из этих датчиков к моему набору шариков для понг-понга 12×12. Идея заключалась в том, чтобы использовать датчик для измерения наклона массива и использовать эти измерения, чтобы «катать» «шар» по массиву.

Используя пример кода, предоставленный Adafruit, мне буквально потребовалось всего пару минут, чтобы начать доступ к показаниям датчика. Не более чем через 15 минут я использовал датчик для управления своим массивом.

Итак, предположим, что вы абсолютный новичок и у вас есть соблазн попробовать Arduino, какой из них выбрать? Если я учу кого-то новичка, я обычно советую начать с Arduino Uno или Arduino Nano, потому что оба они легко укладываются в голове.

Обе платы используют 8-битный процессор ATmega328 (хотя и в разных корпусах), работающий на частоте 16 МГц и предлагающий 32 КБ флэш-памяти и 2 КБ ОЗУ. С одной стороны, это немного с точки зрения памяти или производительности. С другой стороны, удивительно, что вы можете сделать с этими маленькими негодяями, и работать в рамках ограничений полезно для вас, когда вы только начинаете.

Хорошо, каков ваш следующий шаг? Что ж, в Интернете доступно огромное количество бесплатных ресурсов. Кроме того, на Amazon есть несколько замечательных стартовых наборов Arduino. Сказав это, в этих наборах обычно используются макетные платы, что может быть как благословением, так и проклятием. Взгляните на следующее изображение, которое имеет сверхъестественное сходство со многими моими собственными прототипами.

Типичный сценарий прототипирования Arduino Uno (Источник изображения: Dr Duino)

Здесь мы видим все элементы, которые я обычно использую в своих проектах — некоторые кнопочные переключатели мгновенного действия, некоторые потенциометры, несколько традиционных светодиодов с сопутствующие токоограничивающие резисторы, «палочка» из трехцветных светодиодов NeoPixel и, конечно же, куча летающих проводов. Это сплошное развлечение и игра, пока один из супругов не попросит вас «убрать свой электронный мусор с обеденного стола» (просто чтобы выбрать случайный пример из воздуха), и один или несколько ваших проводов отсоединяются в процессе, и вы можете не помню, кто куда идет.

Но смените хмурый взгляд на улыбку, потому что мой приятель Гвидо Бонелли решил что-то сделать, чтобы решить эту проблему. Гвидо представляет собой интересный случай в том смысле, что еще в глубине веков он использовал на работе сложные платформы для разработки микроконтроллеров и наборы инструментов на основе Eclipse, но ему хотелось чего-то более дешевого и простого для использования в своих хобби-проектах дома, и именно так он пришел, чтобы начать играть с Arduino.

Совсем недавно Гвидо создал комплект под названием Dr. Duino Pioneer Shield, который поставляется с Arduino Uno. Pioneer, который подключается к верхней части Uno, предоставляет пользователю обычные светодиоды, планку из восьми NeoPixels, кнопочные переключатели, потенциометры, светозависимый резистор (LDR), пьезозуммер и разъемы для подключения I2C. датчики на основе. Кроме того, на этом изображении не показан тот факт, что Pioneer поставляется с ультразвуковым датчиком измерения расстояния и соответствующим кабелем для его подключения к экрану.

Dr. Duino Pioneer (Источник изображения: Dr Duino)

Следующий шаг — тот, который стоит у меня на столе — это комплект Dr. Duino Explorer. В нем есть все функции Pioneer, дополненные рогом изобилия других вкусностей, включая дисплей на органических светодиодах (OLED), мощный регулятор напряжения для питания ваших проектов, небольшую макетную плату и небольшую область для прототипирования.

Dr. Duino Explorer (Источник изображения: Dr Duino)

Как вы помните, Pioneer поставлялся с Arduino Uno. Что ж, Explorer поставляется с Arduino Nano, который вы можете видеть подключенным к середине нижнего края на фотографии выше. Однако, если вы хотите, вы можете удалить Nano, а затем подключить Explorer в качестве щита к Uno (вы можете видеть заголовки Uno, окружающие небольшую макетную плату).

Существует также пакет расширения, который можно использовать как с Pioneer, так и с Explorer. Это включает в себя плату звуковых эффектов, пассивный инфракрасный (PIR) датчик, датчик 6-DOF (шесть степеней свободы) с 3-осевым акселерометром и 3-осевым магнитометром, атмосферный датчик (температура, влажность, атмосферное давление), и так далее.

ОЧЕНЬ ВАЖНО! Я только что вспомнил, что должен сказать вам, что и Pioneer, и Explorer поставляются в виде наборов деталей, которые вы должны собрать сами. С другой стороны, если вы планируете действительно заняться микроконтроллерами для проектов «сделай сам», вы будете делать много всего, и это самое хорошее место для начала, как и везде.

К счастью, когда вы покупаете Dr. Duino Pioneer или Explorer, вы также получаете доступ к Dr. Duino Labs. Здесь вы будете работать с Мастером, который проведет вас через процесс сборки (в том числе порекомендует инструменты и научит вас паять) в одном из лучших пошаговых руководств, которые я когда-либо видел, и это не то, что я мягко сказать.

После того, как вы собрали свой комплект, система проведет вас через процесс загрузки и установки Arduino IDE и запуска некоторых простых программ (также известных как «эскизы» в мире Arduino). Все это приводит к некоторым умным небольшим проектам, таким как сканер Ларсона, который является своего рода эффектом, наблюдаемым в KITT из Knight Rider или Cylons из Battlestar Galactica. Следуя предоставленным инструкциям, вы можете реализовать собственную версию этих культовых велосипедных фонарей на вашем Pioneer или Explorer.

Где Гвидо действительно сделал «лишнюю милю», так это в партнерстве с компанией под названием Programming Electronics Academy (PEA).

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *