Раз уж
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
Сам задумывался об этом.
Хоть с ценами на микро уже не так актуально, но все равно очень полезно знать.
И ссылочки хорошие повесили.
Будет возможность найти и поиграть с восьмеркой для самых простых вещей — будет здорово!
Не хотелось бы вас огорчать, но в данный переходник не влезает Atmega 328, только 16 и 32.Сам накололся.
А для 28-пиновых микросхем таких не увидел в продаже
Для PIC aliexpress.com/item/PIC-K150-ICSP-Programmer-USB-Automatic-Programming-Develop-Microcontroller-USB-ICSP-cable/1166909040.html
НО, так как они 32 битные, то программирование отличается от распространенных 8битных
Потому с ними сложнее, меньше инфы в инете, меньше знающих и способных помочь людей
Но они более навороченные =)
Arduino Due тоже 32 разрядный, только дорогой.
по функционалу конечно не подскажу, но вроде его по потихоньку допиливают
Цена очень вкусная раз, мощность по сравнению с ардуино просто огромная(я на старшей меге упирался и в скорость и в память, когда рисовал только примитивное подобие GUI)? ну и ARM — за ним будущее… Что останавливает — это как раз переход на серьезное программирование, я эти Си и IDE все не люблю до ужаса
Сама платка всего в пару раз больше голой микросхемы в DIP корпусе, но на ней уже запаян кварц, стабилизатор питания, а в процессор уже залит бутлоадер для загрузки через UART.
Лично мне такой вариант показался более интересным… хотя и выходит чуток дороже.
Но в отличии от всяких «Arduino uno» мелкие «pro mini» уже можно (и, что самое главное — не жалко при такой-то цене) пихать во всякие мелкие самоделки.
Я вот думаю, на Тиньки нужно переходить. Для многих проектов вполне их хватит
Получится небольшая плата на стойках поверх большой основной.
Или вот такой пирог на разъемах
Интернет наше все, поэтому хочу подключать ардуины по ethernet. Чтобы и шить по сети можно было. И управлять с любого устройства отовсюду.
Даже скетчи писать предпочитаю тут codebender.cc/
Да и нет в них полноценного TCP. Все через одно место костылями работает.
Еще сам не разобрался как, но раз кнопочка имеется, то и сделать как-то можно.
Цитата из блога
«together with an Ethernet shield flashed with a properly designed TFTP bootloader, you will be able to upload a sketch remotely, over the internet! „
Сам еще не пробовал.
Но радиобрелки — это какой то прошлый век. Все должно уметь управляться с телефона, раз мы уж говорим об удаленном управлении
Ардуины общаются между собой через NRF24L01+ или 433Мгц платами.
Одна работает как шлюз к Zyxel Keenetic, через него то и можно телефонами управлять. А витую пару тянуть к каждой ардуине — западло. WiFi шилды же стоят каких-то неправильных денег.
Как с помехами на этих платах? Какая лучше?
Одна будет умирать от wifi и микроволновки, вторая от других 433Мгц пультов? )
В качестве wifi-клиента для ардуины наверняка можно использовать TP-LINK TL-WR702N pf 560р, но тоже дорого выходит.
Ротер использую какой есть для интернета.
Спасибо, удалю из корзины тогда 433 платы, и добавлю NRF24L01
у нас от 200 до 450 за 1 штуку кадетсья в дип корпусе. пластик
Да и кот такой же. :)
приятно читать такие обзоры
И еще я себе такую штуку взял — STM8S105C6T6 за $9.20 — дешево и сердито, да и миниатюрная (вместо STM8S-Discovery).
Читателям ещё может помочь вот это вот руководство — jeelabs.net/pub/wk101/Overige%20docs/04%20-%20byoa.pdf — там более развёрнутый вариант сборки описан.
В действительности я узнал о ARDUINO намного позже чем о контроллерах фирмы Atmel, вся соль в том что среда разработки для Arduino очень тяжёлая, и приложения написанные на ней получаются громоздкие и тормозные. Но все же я купил давно UNO чтобы оценить, и считаю что для начинающего это отличный вараинт, тем более что уже появились модификации среды даже под язык Basic, собственно практически для детей дошкольного возраста.
Теперь о программировании, в общем то штатаная среда разработки Atmel'а представляет на много больше удобства и возможностей нежели Арджуно… и советую вам её попробовать, тем более что программаторов для этого валом…
P.S. Если есть люди интересующиеся как начать что купить что делать… пишите в личку расскажу…
Все эти переходники лежат где-то в коробке как невостребованные
samopal.pro/avr-prog/
ЗЫ.
Давно уже подписан на ленту на твоем сайте. И много статьи занесены в мои «заметки» (в проге outwiker).
ru.aliexpress.com/item/nano-Mini-USB-Nano-3-0/32850536443.html