Для этого проекта я, чтобы удобнее было выполнять паяльные работы, выбрал микроконтроллер SAMD21E18 в корпусе TQFP32 (того же размера, что и популярный контроллер ATmega328). Правда, к сожалению, этот микроконтроллер продаётся пустым. Для того чтобы прошить в него загрузчик, необходимо специальное устройство — Atmel-ICE. Прошивка загрузчика оказалась самой сложной частью проекта. А в остальном тому, кто решит воспроизвести мой проект, никаких специальных инструментов не понадобится. Всё, что нужно, собрано на плате коммуникатора. А на передней панели, что необязательно, можно разместить подсветку клавиатуры.
Сначала я назвал моё устройство «Armageddon communicator» (отсюда и его теперешнее название — «Armachat»), но я не думаю, что оно способно пережить какую-нибудь воображаемую всемирную катастрофу.
Программная часть устройства пока не готова полностью. Но уже сейчас можно составлять и сохранять сообщения, можно их отправлять и принимать (с подтверждением доставки), можно повторно отправлять с устройства на устройство неотправленные сообщения с высокой вероятностью их успешной доставки.
Более свежая версия коммуникатора, Ergo, с разделённой клавиатурой:
Почему я использовал SAMD21E18
Я выбрал для изготовления Armachat именно этот контроллер по следующим причинам: он совместим с Arduino, потребляет мало энергии, имеет встроенную поддержку USB, поддерживает USB OTG, имеет много флеш-памяти, для него существует MSD-загрузчик от Adafruit, обновление его прошивки выглядит так же, как запись данных на USB-диск. Он ещё и недорого стоит.
А если говорить об энергопотреблении SAMD21E18, то оно и правда очень низкое. Полное энергопотребление Armachat с включённым дисплеем — 60 мА: 20 мА потребляет модуль LoRa, ещё 20 мА — подсветка дисплея и ещё 20 мА — микроконтроллер. Мне удалось загрузить Armachat и заняться отправкой сообщений, используя питание от генератора Стирлинга.
Материалы
- Печатные платы — главная плата и плата передней панели.
- Радиомодуль LoRa — RFM95W. 868 МГц для Европы, 915 МГц для США. Или — эквивалентный модуль, подходящий для использования там, где вы живёте.
- Микроконтроллер SAMD21E18A-AU в корпусе TQFP32.
- LDO-регулятор напряжения на 3,3 В — AP2114H-3.3TRG1.
- Контроллер заряда аккумулятора — MCP73831.
- MOSFET-транзисторы — BSS123 (3).
- Микропереключатели DTS-63K, сила переключения 1 Н (30).
- Микропереключатель TACTM-35N-F.
- Литий-ионный аккумулятор формата 18650.
- Аккумуляторный отсек — BHC-18650-1P.
- Micro-USB порт — Molex MX-105017-0001.
- LCD-дисплей — 1,8 дюйма TFT LCD, 128x160, ST7735, например, такой.
- Резисторы, 0603, SMD — 1,5 кОм (2), 4,7 кОм (7), 10 Ом (1).
- Конденсаторы, 0603 — 100 мкФ (2), 1 мкФ (1), 4,7 мкФ (4).
- Танталовый конденсатор 1206, SMD — T491A107M004AT, 4 В, 100 мкФ.
- Краевой SMA-разъём под коаксиальный кабель Adam Tech RF2-143-T-17-50-G или RF2-145A-T-17-50-G-HDW.
- Излучатель звука, SMD — LD-BZEL-T61-0505.
- Светодиод, 0603, красный, для индикатора заряда аккумулятора.
- Антенна — GSM-ANT-SV03 SMA Male. Должна соответствовать используемой частоте LoRa.
- Переключатель питания (движковый) — C&K Components JS202011AQN или Ninigi MSS-2245.
- Крепёжные винты — M2×5 мм (12).
- Распорные болты — M2×5 мм (6).
- Светодиоды, 0802, Right Angle Package, зелёные (30) (необязательно) для подсветки клавиатуры.
- Резистор, 0603, 100 Ом (необязательно) для подсветки клавиатуры.
Инструменты и программы
- Паяльник и припой (подходящие для работы с компонентами для поверхностного монтажа).
- Отвёртки.
- Программатор Atmel-ICE.
- Компьютер с установленными на нём программами:
Сборка устройства
Собрать мой коммуникатор довольно просто. Я собрал два десятка прототипов, используя лишь ручную пайку, и никаких проблем у меня не возникло.
1. Монтаж элементов на печатной плате
Рис. A
На плате (Рис. A) нужно распаять микроконтроллер, а также все активные и пассивные компоненты (за исключением дисплея, модуля LoRa, кнопок и SMA-разъёма для антенны), ориентируясь на указания, которые имеются на плате.
2. Программирование микроконтроллера
Для записи загрузчика в 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
Рис. C
Затем в меню
Tools
надо выбрать пункт Boards Manager
и установить MattairTech
. После завершения установки нужно пройти по пути Tools > Boards
и выбрать плату MattairTech MT-D21E (rev B)
(Рис. C).Рис. D
После того, как будет выбрана эта плата, в меню
Tools
появятся новые настройки (Рис. D). Там надо выбрать следующее:- Clock Source: INTERNAL_OSCILLATOR
- Serial Config: ONE_UART_ONE_WIRE_TWO_SPI
Рис. E
Теперь надо подключить плату программатора Atmel-ICE к нашей плате, к контактам GND, VCC, SWC, SWD и RST (Рис. E).
В меню
Tools
надо выбрать Programmer: Atmel-ICE
. Затем нужно воспользоваться командой Burn Bootloader
. Теперь можно загружать на устройство скетчи по USB.‣ Альтернативный вариант: В Atmel Studio запишите специальный файл
ARMABOOT.bin
, который можно найти на моей GitHub-странице. После этого загружать прошивки на устройство можно будет, перетаскивая файлы мышью, как при работе с обычным USB-диском.3. Загрузка первой прошивки
Если на устройство прошит файл
ARMABOOT.bin
— подключите Armachat к компьютеру по USB и дважды нажмите на кнопку RESET
для активации загрузчика.Если к вашему Armachat уже подключён дисплей — он начнёт мигать.
Скопируйте файл
first.uf2
, который можно найти на моей GitHub-странице, на диск, появившийся в системе после подключения Armachat. Подождите завершения записи и снова нажмите на RESET
. Если вы услышали звуковой сигнал — значит прошивка заработала.UF2-прошивки можно создавать и самостоятельно. Для этого вам понадобятся следующие библиотеки (их можно найти и на моей GitHub-странице):
- playground.arduino.cc/Code/Keypad
- github.com/adafruit/Adafruit-GFX-Library
- github.com/adafruit/Adafruit-ST7735-Library
- github.com/sandeepmistry/arduino-LoRa
- github.com/cmaglie/FlashStorage
Ещё вам понадобится исходный код отсюда. Скомпилируйте этот код и загрузите на устройство с использованием Arduino IDE.
4. Пайка оставшихся компонентов
Рис. F
Теперь к плате нужно припаять дисплей (Рис. F), после чего на плату можно подать питание. Если на дисплей выводятся сообщения — значит, плата работает. Если дисплей чист — попробуйте понажимать на кнопку
RESET
или нажать её и удерживать. Если это не помогло — проверьте шлейф дисплея. После того, как дисплей заработает, можно приклеить его к плате.Рис. G
Рис. H
Теперь (Рис. G) надо припаять к плате LoRa-модуль. Если после этого подать на плату питание и на экране будет выведено
LoRa init succeeded
— это значит, что всё идёт по плану. Если такая надпись выведена не будет — надо проверить подключение радиомодуля к плате.Рис. I
И, наконец, нужно припаять к плате кнопки и SMA-разъём для антенны (Рис. I).
5. Подсветка передней панели (необязательно)
Рис. J
Это необязательный шаг, на котором нужно припаять к передней панели соответствующие светодиоды. Мне хотелось сделать качественную подсветку клавиатуры, поэтому я использовал 30 светодиодов — по одному для каждой кнопки (Рис. J). После пайки передняя панель крепится к устройству с помощью распорных болтов и винтов M2.
Использование Armachat
Рис. 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:
- 700 метров до шлюза, находящегося в саду, на террасе.
- 1500 метров до шлюза, закреплённого на окне, на высоте примерно 4 метра над землёй.
- 4300 метров до шлюза, установленного на окне чердака — примерно в 10 метрах над землёй.
Конечно, расстояние, на котором можно установить LoRa-связь, сильно зависит от антенны, от препятствий, которые имеются на пути радиосигнала, и от настроек радиочасти устройства.
Итоги
Устройство, о котором я рассказал, это в конечном счёте учебный проект, предназначенный для экспериментов с LoRa и для изучения высокотехнологичных сторон Arduino. Благодаря этому проекту я углубил свои знания в следующих сферах:
- Чтение данных с QWERTY-клавиатуры.
- Создание и вывод графики.
- Проектирование пользовательских интерфейсов.
- Хранение данных во флеш-памяти.
- Отправка данных по радиоканалу или по USB.
- Работа с I2C-датчиками.
- Обработка GPS-данных.
Рис. O
Сейчас я работаю над новым вариантом Armachat — над платой Ergo. Она предусматривает использование разделённой клавиатуры, работать с которой проще и удобнее, чем с обычной. Тут в одной из новых плат используется тот же микроконтроллер и тот же LoRa-модуль, что и в исходном варианте Armachat, но другой дисплей (1,3 дюйма, 240×240 ST7759 IPS). А в другой — модуль RAK4260 производства RAKwireless Technology. В нём Microchip ATSAMR34J18 SiP объединён с возможностями LoRa (Рис. O). Это позволяет упростить плату, на которой, помимо этого чипа, нужно разместить лишь модуль заряда аккумулятора, регулятор напряжения на 3,3 В и излучатель звука.
И, наконец, я создал компактную версию Armachat без клавиатуры, но — с USB-портом для подключения внешней клавиатуры. Она называется Nano, а её размеры составляют всего 4x4 см. Я работаю над новой прошивкой, которая позволит использовать эту плату в виде миниатюрного репитера или ресивера.
Если говорить о других проектах, напоминающих Armachat, то среди них можно отметить Meshtastic и Disaster.radio.
Комментарии (31)
Firz
01.10.2021 15:01+5Мне кажется в концепции коммуникатора судного дня имело бы смысл разделить устройство на условные FrontEnd(терминал?) — сам пользовательский терминал с клавиатурой и экраном(которые можно и менять по вкусу или вообще использовать смартфон), и BackEnd(передатчик?) — сам передатчик с мощной антенной, каким-нибудь магнитом для приклеивания на крышу машины/чего-то еще, чтобы можно было его поместить куда-то выше рук пользователя, а связь между модулями уже чем-то попроще реализовать(тем же BLE, тогда как терминал можно и приложение на смартфоне использовать).
Albert2009ru
01.10.2021 15:14+1Atmel-ICE также очень хорош в Microchip (Atmel) Studio для дебага. Прям кайфую от него. Правда по личной жадности я заказал его у китайцев, пришёл оригинальный и полный комплект и даже новый, НО... Вместо оригинальной коробки с роботом, пришла тоже оригинальная, но красная с надписью Microchip. Все провода и преходники и сам Atmel-ICE и коробка имели разные серийные номера. Такое ощущение, что китаец имеет доступ к "микрочиповскому" оригинальному абсолютно рабочему "некомплекту" и приторговывает им в интернете. На этом я сэкономил аж 20 евро, вроде всё рабочее, новое и оригинальное, но осадок в душе остался. СОРРИ за нытьё и оффтоп. Дебаггер реально отменный, всем советую.
STMshchik
01.10.2021 15:52Корпус такой красивый. Жаль ни слова о нем.
FirstJohn Автор
01.10.2021 15:55+2Отдельного корпуса и нет. Он просто состоит из двух печатных плат, скреплённых винтам. Передняя печатная плата выступает ещё и как подписи к клавишам. Гениальное и простое решение. На фото ниже хорошо видно, как всё устроено изнутри.
Mapaxa864
02.10.2021 01:30Жаль, что это по сути «бутерброд из текстолита», сначала я думал, что он металлический, пока не пригляделся…
Stalker_RED
01.10.2021 16:19При лайтовом апокалипсисе удобно будет поднять самодельную GSM вышку и использовать обычные телефоны.
Тут вам и голос, и SMS, и радиус побольше, чем у LoRa, и древних нокий проще найти, чем устройств из поста.
dobergroup
01.10.2021 20:08А почему радиус должен быть больше?
Popadanec
02.10.2021 11:42+1У телефонов мощность передатчика минимум на порядок больше. А в условиях апокалипсиса шум в эфире будет на порядок ниже. И через телефон можно 5-10км атмосферы пробить.
Stalker_RED
03.10.2021 10:482G из коробки тащит 35 км радиус (естественно если нет помех или серьёзных препятствий). Можно софтово со стороны вышки удвоить радиус, и если вышка высокая, то в степи или на море можно достичь 70 км. А в соседнем посте вон со спутника до обычных телефонов научились доставать)
zbot
01.10.2021 22:01будьте снисходительнее, это все таки игрушка. Но эта игрушка хотя-бы доведена до стадии - работает :-)
Gryphon88
01.10.2021 16:22+1Немного оффтоп: возможно ли на андроиде выбирать "среду" совершения операции (звонок, смс, передача данных)? Судя по VoWiFi это принципиально возможно, но сложности я не знаю. Если это ничего невероятного, то такое решение неплохо бы смотрелось как подсоединяемый к смартфону по USB модуль для мест с плохой связью, сильно экономных или параноиков.
dobergroup
01.10.2021 20:07+1Можно выбрать. Для этого нужно написать свое приложение-звонилку и менеджер sms. Реализовать соответствующий API со стороны устройства. С передачей данных проще - достаточно реализовать на устройстве RNDIS, со стороны андроид поддержка реализована.
NanoVHF
01.10.2021 19:00+2В целом не плохо! Плюсом - новое интересное изделие. На этом плюсы заканчиваются.
Теперь о минусах:
1) Модуль Rak на территории Ру - довольно дорогое удовольствие (по сравнению с обычными лорами).
2) Экономичный процессор - это хорошо, но не самый ходовой, а значит тоже не копеечный. Как с доставабельностью? В жадночипе 1500р, на Али не нашёл вообще.
3) Самый жирный минус - это ленточно-паяльный дисплей. Это сразу выводит изделие из категории домашнего самоделкопаяния в категорию коммерческого изделия. (Ну или для радиолюбителя со стажем монтажных работ)
Итого: в целом интересное изделие, не дешёвое и предназначенное для опытного подготовленного радиолюбителя.
zbot
01.10.2021 22:14+2по моему мнению, экономически целесообразно было бы использовать модуль что-то типа ESP 8266 или ESP 32 (145 рублей за 2 ядра по 240Mhz и 520Кб ОЗУ), да и паять их проще. Экран с ленточным шлейфом на самом деле паять не сложно на заводскую плату, полагаю можно было бы подобрать что-то c большей диагональю с 8 битным интерфейсом (к примеру широко распространенный дисплей от Explay N1 стоимостью около 250 рублей) или что-то с SPI интерфейсом. Ну и все таки использовать либо возможность сменить модуль LoRa либо предусмотреть установку двух модулей на 868 и 433 Mhz
K35
01.10.2021 19:29+1Что-то ни схем, ничего...
Штука интересная, по дальности действия сравнима с портативными радиостанциями.
proton17
01.10.2021 23:29+1Забавная штука) Но очень не оптимальная в плане питания… Во первых напрашивается E-Ink дисплей от какой-нибудь читалки или маленький с Али. А во вторых LDO, серьезно, в девайсе работающим от АКБ? Я бы однозначно воткнул Buck-Boost конвертор типа TPS63020 или любой другой, их сейчас завались. Он позволит высасывать АКБ по полной и не тратить энергию попусту как это делает LDO.
Hodus
02.10.2021 11:44Как идея - добавить точку доступа и web-интерфейс. Подключаешся любым устройством к коробочке armachat раздающей wifi, и из браузера имеешь доступ к чату, адресной книге, настройкам...
K35
03.10.2021 07:15Отличная идея. Можно выкинуть клавиатуру и дисплей.
А нельзя для этого использовать блутуз?
AndreyHenneberg
07.10.2021 19:32Можно, но тогда надо будет писать приложение. А потом установить. И если на Android с последним проблем нет, то вот поставить его на iPhone… А браузеры есть уже везде и можно спокойно работать с микросайтом.
И дисплей лучше не выкидывать: как минимум, можно будет читать сообщения прямо на устройстве. Ну и клавиатуру лучше тоже оставить. Хотя бы ради того, чтобы зависеть от телефона. Опять же, можно будет выключить Wi-Fi и Bluetooth.
DIITHiTech
01.11.2021 01:15так а толку если практический радиус такого wifi будет измеряться в десятках, максимум паре сотен метров? Проще крикнуть что надо :) Wifi на 433мгц был бы интересней, но увы это нишевая вещь.
RiverFlow
02.10.2021 20:45+1Бозе, какая няшная штукуёвинка, я прям хочу и штук пару!
Автор - молодец!
eugeneyp
04.10.2021 17:39Идея и исполнение замечательное. Автору пожелание успехов. Изделию для полноты работы в постапокалипсисе не хватает защиты от ЭМИ. Если оно вообще существует для полупроводников на текущий момент. Военные долго не переходили на полупроводники с ламп именно из-за последствий от ЭМИ.
debugtd
05.10.2021 12:38bobricius slovakia за 119$ - 8600руб. за плату только! Ссудный день похоже уже наступил!
https://www.tindie.com/products/bobricius/armachat-lora-messenger-fusion-3-version/
красиво но дорого для домашнего проекта
Hodus
08.10.2021 00:52+1Столько грузовой автоэлектрик за 42 минуты работы получает в штатах. Судный день наступил, но только у нас
leidek
05.10.2021 12:38Классная штука. Но кнопок многовато. В идеале слизать управление с телефонов нулевых годов.
dernuss
Неплохо. Но по мне так коммуникатор судного для должен быть немного дальнобойнее, например есть протокол WSPR. Но LoRa тоже ничего