Раз уж
Arduino стал практически мейнстримом, напишу обзор про микроконтроллеры ATMEGA328
Данный микроконтроллер является сердцем Arduino Uno, Nano, Pro Mini и ряда других плат.
Но Arduino — это слишком просто. Купил, подключил, загрузил программу и
вот уже гордо мигает светодиод на плате. Мы же легких путей не ищем и
программируем голые микроконтроллеры на ассемблере поэтому и куплены данные микросхемы. Тем кому интересно, прошу под кат.
Итак зачем все это нужно?
Ну во первых, это экономия в деньгах (Правда с
ценами на Pro Mini очень сомнительная)
Во вторых, экономия места
В третьих, микросхемы без всяких преобразователей и светодиодов очень
экономичны, что немаловажно в проектах с батарейным питанием.
В четвертых, проекты на Arduino весьма неопрятны из за мотка проводов
вокруг платы. Микроконтроллеры же вполне можно паять на макетках или
нормальных печатных платах.
Ну и в пятых, это ведь интересно и познавательно!
Заказал я данные микросхемы на Алиэксперсс. Лот состоит из 10
микроконтроллеров, 10 панелек для них, и 10 кварцевых резонаторов на
16МГц. Сейчас лот подорожал до $35 и купить за адекватную цену Atmegу
можно разве что на Таобао.
Заказ шел целых 97 дней. Трек быстро отозвался в Китае и завис, не дойдя
до России. Я успел пообщаться с продавцом, открыть спор и выиграть его,
когда нежданно посылка нарисовалась в Москве. Деньги я вернул продавцу
на PayPal, видимо у него где-то есть еще и магазин.
Итак все довольны — продавец получил заслуженную прибыль, а я долгожданный товар.
Подробное описание ATMEGA328 можно посмотреть на
сайте atmel.com.
Буковка «P» в названии означает низкое энергопотребление, а PU-корпус DIP28, который удобно паять обычным паяльником.
Сам товар:
Контроллер с панелькой и кварцем
Как это все готовить?
Для программирования взят очень дешевый
программатор USBasp за 3.14 (Пи?) баксов.
Для простоты, используем ICSP разъем стандартной Arduino UNO
В панельку Arduino вставляем наш микроконтроллер.
Далее качаем и устанавливаем
драйвер для программатора.
Запускам стандартную ArduinoIDE, выбираем в меню
«Сервис->Программатор->USBasp», плату ArduinoUNO и нажимаем
«Записать загрузчик». После окончания процесса загрузки мы получаем
контроллер, такой же как и в UNO, в который можно уже в дальнейшем
заливать программы через стандартный USB Ардуины.
Далее мне захотелось использовать встроенный кварцевый резонатор на 8МГц, чтобы иметь минимум деталей на плате.
Открываем файл с описанием микроконтроллера c:\Program Files (x86)\Arduino\hardware\arduino\boards.txt
Копируем блок с Uno и правим в нм Фьюзы. Это специальные биты для настроки контроллера. Прочитать про них
можно здесь. Сконфигурировать при помощи
онлайн-калькулятора. Загрузив в калькулятор значения от UNO я устанавливаю стандартное значение с встроенным кварцем на 8МГц.
Затем заменяю значение в файле с описанием плат и получаю такое описание:
tmega328_8.name=Atmega328 (5V, 8 MHz internal)
atmega328_8.upload.protocol=arduino
atmega328_8.upload.maximum_size=30720
atmega328_8.upload.speed=57600
atmega328_8.bootloader.low_fuses=0xE2
atmega328_8.bootloader.high_fuses=0xDE
atmega328_8.bootloader.extended_fuses=0x05
atmega328_8.bootloader.path=optiboot
atmega328_8.bootloader.file=optiboot_atmega328.hex
atmega328_8.bootloader.unlock_bits=0x3F
atmega328_8.bootloader.lock_bits=0x0F
atmega328_8.build.mcu=atmega328p
atmega328_8.build.f_cpu=8000000L
atmega328_8.build.core=arduino
atmega328_8.build.variant=standard
Затем в среде Arduino выбираю свой микроконтроллер и снова прошиваю загрузчик.
Все, я получил микроконтроллер, в который можно заливать скетчи на
Arduino UNO плате, а затем использовать его без внешнего кварца.
Можно не прошивать контроллеру загрузчик, но тогда заливать в него программы всегда придется через программатор.
Чтобы не соединять самому 10пинвый разъем на USBasp к 6-ти пиновому ICSP на Arduino заказал
такой переходник
Потом подумал, и заказал
такой переходник для программатора, позволяющий обходится без Arduino Uno. Так что надеюсь, следующие микросхемы буду шить с большим комфортом.
Рекомендую ли я данные микроконтроллеры — скорее нет. При цене на
Arduino Pro Micro — $2.88
это не особенно целесообразно. Сейчас я бы купил Atmega8 стоимостью
около 1$ или Atiny, для проектов, где не нужно возможности Atmega328.
Где я все это планирую применять?
Хочу сделать сенсорные беспроводные выключатели света, вентиляторов и
др. устройств, причем разместить их прямо в корпусах выключателей.
В люстрах, для получения радиокоманд от этих выключателей, а также для диммирования.
В миниатюрном погодном датчике на аккумуляторе за окном.
В контроллере управления вентилятором на кухне и в ванной.
Да мало ли сколько еще «нужных и полезных» устройств можно сделать?
А как же мозг не вскипел все это реализовывать?
Ну конечно же был помощник
Все статьи мои статьи можно найти в моем блоге
samopal.pro