- PVSM.RU - https://www.pvsm.ru -
Для этого проекта я, чтобы удобнее было выполнять паяльные работы, выбрал микроконтроллер SAMD21E18 в корпусе TQFP32 (того же размера, что и популярный контроллер ATmega328). Правда, к сожалению, этот микроконтроллер продаётся пустым. Для того чтобы прошить в него загрузчик, необходимо специальное устройство — Atmel-ICE. Прошивка загрузчика оказалась самой сложной частью проекта. А в остальном тому, кто решит воспроизвести мой проект, никаких специальных инструментов не понадобится. Всё, что нужно, собрано на плате коммуникатора. А на передней панели, что необязательно, можно разместить подсветку клавиатуры.
Сначала я назвал моё устройство «Armageddon communicator» (отсюда и его теперешнее название — «Armachat»), но я не думаю, что оно способно пережить какую-нибудь воображаемую всемирную катастрофу.
Программная часть устройства пока не готова полностью. Но уже сейчас можно составлять и сохранять сообщения, можно их отправлять и принимать (с подтверждением доставки), можно повторно отправлять с устройства на устройство неотправленные сообщения с высокой вероятностью их успешной доставки.
Более свежая версия коммуникатора, Ergo, с разделённой клавиатурой:
Я выбрал для изготовления Armachat именно этот контроллер по следующим причинам: он совместим с Arduino, потребляет мало энергии, имеет встроенную поддержку USB, поддерживает USB OTG, имеет много флеш-памяти, для него существует MSD-загрузчик от Adafruit, обновление его прошивки выглядит так же, как запись данных на USB-диск. Он ещё и недорого стоит.
А если говорить об энергопотреблении SAMD21E18, то оно и правда очень низкое. Полное энергопотребление Armachat с включённым дисплеем — 60 мА: 20 мА потребляет модуль LoRa, ещё 20 мА — подсветка дисплея и ещё 20 мА — микроконтроллер. Мне удалось загрузить Armachat и заняться отправкой сообщений, используя питание от генератора Стирлинга [1].
Собрать мой коммуникатор довольно просто. Я собрал два десятка прототипов, используя лишь ручную пайку, и никаких проблем у меня не возникло.
Рис. A
На плате (Рис. A) нужно распаять микроконтроллер, а также все активные и пассивные компоненты (за исключением дисплея, модуля LoRa, кнопок и SMA-разъёма для антенны), ориентируясь на указания, которые имеются на плате.
Для записи загрузчика в SAMD21E18, я использую Arduino IDE и программатор Atmel-ICE.
Рис. B
В меню Arduino IDE нужно пройти по пути Arduino > Preferences > Additional Boards Manager URLs
и добавить в соответствующее поле (Рис. B) следующий URL:
https://www.mattairtech.com/software/arduino/beta/package_MattairTech_index.json [5]
Рис. C
Затем в меню Tools
надо выбрать пункт Boards Manager
и установить MattairTech
. После завершения установки нужно пройти по пути Tools > Boards
и выбрать плату MattairTech MT-D21E (rev B)
(Рис. C).
Рис. D
После того, как будет выбрана эта плата, в меню Tools
появятся новые настройки (Рис. D). Там надо выбрать следующее:
Рис. E
Теперь надо подключить плату программатора Atmel-ICE к нашей плате, к контактам GND, VCC, SWC, SWD и RST (Рис. E).
В меню Tools
надо выбрать Programmer: Atmel-ICE
. Затем нужно воспользоваться командой Burn Bootloader
. Теперь можно загружать на устройство скетчи по USB.
‣ Альтернативный вариант: В Atmel Studio запишите специальный файл ARMABOOT.bin
, который можно найти на моей GitHub-странице. После этого загружать прошивки на устройство можно будет, перетаскивая файлы мышью, как при работе с обычным USB-диском.
Если на устройство прошит файл ARMABOOT.bin
— подключите Armachat к компьютеру по USB и дважды нажмите на кнопку RESET
для активации загрузчика.
Если к вашему Armachat уже подключён дисплей — он начнёт мигать.
Скопируйте файл first.uf2
, который можно найти на моей GitHub-странице, на диск, появившийся в системе после подключения Armachat. Подождите завершения записи и снова нажмите на RESET
. Если вы услышали звуковой сигнал — значит прошивка заработала.
UF2-прошивки можно создавать и самостоятельно. Для этого вам понадобятся следующие библиотеки (их можно найти и на моей GitHub-странице):
Ещё вам понадобится исходный код отсюда [11]. Скомпилируйте этот код и загрузите на устройство с использованием Arduino IDE.
Рис. F
Теперь к плате нужно припаять дисплей (Рис. F), после чего на плату можно подать питание. Если на дисплей выводятся сообщения — значит, плата работает. Если дисплей чист — попробуйте понажимать на кнопку RESET
или нажать её и удерживать. Если это не помогло — проверьте шлейф дисплея. После того, как дисплей заработает, можно приклеить его к плате.
Рис. G
Рис. H
Теперь (Рис. G) надо припаять к плате LoRa-модуль. Если после этого подать на плату питание и на экране будет выведено LoRa init succeeded
— это значит, что всё идёт по плану. Если такая надпись выведена не будет — надо проверить подключение радиомодуля к плате.
Рис. I
И, наконец, нужно припаять к плате кнопки и SMA-разъём для антенны (Рис. I).
Рис. J
Это необязательный шаг, на котором нужно припаять к передней панели соответствующие светодиоды. Мне хотелось сделать качественную подсветку клавиатуры, поэтому я использовал 30 светодиодов — по одному для каждой кнопки (Рис. J). После пайки передняя панель крепится к устройству с помощью распорных болтов и винтов M2.
Рис. K
Управление коммуникатором осуществляется с использованием «горячих клавиш». На Рис. K показан главный экран. В надписях, выведенных на нём, можно увидеть упоминание этих клавиш.
Рис. L
S: Setup
— открывает раздел, где можно настроить параметры LoRa — частоту, другие параметры передачи данных, установить свой ID от 0 до 10 (Рис. L).
Рис. M
С: Contacts
— открывает адресную книгу, которая (пока) рассчитана на 10 записей с фиксированными именами (Рис. M). Я работаю над новой прошивкой, которая позволит пользователям Armachat выбирать собственное имя, которое автоматически будет синхронизировано с адресными книгами тех, с кем они общаются.
N: New message
— новое сообщение. Клавиши клавиатуры имеют различные функции, на них влияет клавиша Alt
. Так, в режиме «нижнего регистра» клавиша Enter
отправляет сообщение. В других режимах она играет роль клавиши-стрелки «Вправо», а Del
играет роль клавиши-стрелки «Влево». Кнопка Пробел
позволяет вводить пробелы, точки и запятые.
После отправки сообщения Armachat ожидает подтверждения его доставки. Если доставка не подтверждена — сообщение сохраняется в памяти с атрибутом undelivered
, указывающем на то, что оно не доставлено получателю.
Устройства Armachat при включении отправляют сообщение alive
. Каждое устройство, получившее подобное сообщение, пытается отправить недоставленные сообщения.
Рис. N
M: Messages
— этот раздел позволяет читать новые сообщения и даёт доступ к отправленным/полученным/недоставленным сообщениям (Рис. N).
Как видите, программная часть Armachat устроена очень просто, но я напряжённо работаю над её новыми функциями. LoRa открывает перед нами практически безграничные сетевые возможности, в число которых входит маршрутизация, перенаправление, шифрование сообщений. А само устройство на данном этапе работы имеет большой объём свободной флеш-памяти и немалую незадействованную вычислительную мощь.
Технология LoRa известна тем, что позволяет передавать данные на значительные расстояния. Вот каких максимальных расстояний передачи данных мне удалось достичь с использованием Armachat в моём посёлке с учётом того, что приёмник и передатчик разделяло не свободное пространство, а небольшие холмы и строения, и того, что устройство использовалось на максимальной мощности и с параметром Spread factor, установленным в значение 12:
Конечно, расстояние, на котором можно установить LoRa-связь, сильно зависит от антенны, от препятствий, которые имеются на пути радиосигнала, и от настроек радиочасти устройства.
Устройство, о котором я рассказал, это в конечном счёте учебный проект, предназначенный для экспериментов с LoRa и для изучения высокотехнологичных сторон Arduino. Благодаря этому проекту я углубил свои знания в следующих сферах:
Рис. O
Сейчас я работаю над новым вариантом Armachat — над платой Ergo. Она предусматривает использование разделённой клавиатуры, работать с которой проще и удобнее, чем с обычной. Тут в одной из новых плат используется тот же микроконтроллер и тот же LoRa-модуль, что и в исходном варианте Armachat, но другой дисплей (1,3 дюйма, 240×240 ST7759 IPS). А в другой — модуль RAK4260 производства RAKwireless Technology [12]. В нём Microchip ATSAMR34J18 SiP объединён с возможностями LoRa (Рис. O). Это позволяет упростить плату, на которой, помимо этого чипа, нужно разместить лишь модуль заряда аккумулятора, регулятор напряжения на 3,3 В и излучатель звука.
И, наконец, я создал компактную версию Armachat без клавиатуры, но — с USB-портом для подключения внешней клавиатуры. Она называется Nano, а её размеры составляют всего 4x4 см. Я работаю над новой прошивкой, которая позволит использовать эту плату в виде миниатюрного репитера или ресивера.
Если говорить о других проектах, напоминающих Armachat, то среди них можно отметить Meshtastic [13] и Disaster.radio [14].
Автор:
FirstJohn
Источник [15]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/arduino/368364
Ссылки в тексте:
[1] генератора Стирлинга: https://www.youtube.com/watch?v=l4FwdjfWlA8
[2] Печатные платы: https://www.tindie.com/stores/bobricius/
[3] такой: https://aliexpress.com/item/32818686437.html
[4] Программатор Atmel-ICE: https://microchip.com/DevelopmentTools/ProductDetails/ATATMEL-ICE
[5] https://www.mattairtech.com/software/arduino/beta/package_MattairTech_index.json: https://www.mattairtech.com/software/arduino/beta/package_MattairTech_index.json
[6] playground.arduino.cc/Code/Keypad: https://playground.arduino.cc/Code/Keypad
[7] github.com/adafruit/Adafruit-GFX-Library: https://github.com/adafruit/Adafruit-GFX-Library
[8] github.com/adafruit/Adafruit-ST7735-Library: https://github.com/adafruit/Adafruit-ST7735-Library
[9] github.com/sandeepmistry/arduino-LoRa: https://github.com/sandeepmistry/arduino-LoRa
[10] github.com/cmaglie/FlashStorage: https://github.com/cmaglie/FlashStorage
[11] отсюда: https://github.com/bobricius/armachat
[12] RAKwireless Technology: https://www.rakwireless.com/en-us
[13] Meshtastic: https://meshtastic.org/
[14] Disaster.radio: https://disaster.radio/
[15] Источник: https://habr.com/ru/post/580662/?utm_source=habrahabr&utm_medium=rss&utm_campaign=580662
Нажмите здесь для печати.