[Перевод] Коммуникатор судного дня «Armachat» LoRa

Технология LoRa отлично подходит не только для сбора информации с удалённых датчиков. Её можно использовать как основу системы для обмена сообщениями. Именно такую систему я воплотил в жизнь в виде персонального коммуникатора Armachat. Для меня это самый настоящий учебный проект, на котором я оттачивал навыки создания печатных плат с беспроводными модулями и графическими дисплеями. Устройство питается от аккумулятора, оно представляет собой нечто вроде высокотехнологичной портативной рации, поддерживающей обмен текстовыми сообщениями. При этом для сборки этой рации нужно сравнительно мало компонентов — всего около 25.

Для этого проекта я, чтобы удобнее было выполнять паяльные работы, выбрал микроконтроллер SAMD21E18 в корпусе TQFP32 (того же размера, что и популярный контроллер ATmega328). Правда, к сожалению, этот микроконтроллер продаётся пустым. Для того чтобы прошить в него загрузчик, необходимо специальное устройство — Atmel-ICE. Прошивка загрузчика оказалась самой сложной частью проекта. А в остальном тому, кто решит воспроизвести мой проект, никаких специальных инструментов не понадобится. Всё, что нужно, собрано на плате коммуникатора. А на передней панели, что необязательно, можно разместить подсветку клавиатуры.

image


Сначала я назвал моё устройство «Armageddon communicator» (отсюда и его теперешнее название — «Armachat»), но я не думаю, что оно способно пережить какую-нибудь воображаемую всемирную катастрофу.
Программная часть устройства пока не готова полностью. Но уже сейчас можно составлять и сохранять сообщения, можно их отправлять и принимать (с подтверждением доставки), можно повторно отправлять с устройства на устройство неотправленные сообщения с высокой вероятностью их успешной доставки.

Более свежая версия коммуникатора, Ergo, с разделённой клавиатурой:

5a627d4e7cd40b57b1b15142336cb0cc.jpg


Почему я использовал 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, 128×160, 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. Монтаж элементов на печатной плате


9919fff606cb20a31ff049c03f16342c.jpg

Рис. A

На плате (Рис. A) нужно распаять микроконтроллер, а также все активные и пассивные компоненты (за исключением дисплея, модуля LoRa, кнопок и SMA-разъёма для антенны), ориентируясь на указания, которые имеются на плате.

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


Для записи загрузчика в SAMD21E18, я использую Arduino IDE и программатор Atmel-ICE.

1999a18046a4c9dc98ddb07136cf767f.jpg

Рис. B

В меню Arduino IDE нужно пройти по пути Arduino > Preferences > Additional Boards Manager URLs и добавить в соответствующее поле (Рис. B) следующий URL:

https://www.mattairtech.com/software/arduino/beta/package_MattairTech_index.json

deb45d20cf26a124526d5474cd2c61bf.jpg

Рис. C

Затем в меню Tools надо выбрать пункт Boards Manager и установить MattairTech. После завершения установки нужно пройти по пути Tools > Boards и выбрать плату MattairTech MT-D21E (rev B) (Рис. C).

b694b0d09535594bd0d30607e7d06cd0.jpg

Рис. D

После того, как будет выбрана эта плата, в меню Tools появятся новые настройки (Рис. D). Там надо выбрать следующее:

  • Clock Source: INTERNAL_OSCILLATOR
  • Serial Config: ONE_UART_ONE_WIRE_TWO_SPI


ae300a7001d264a24a27b54e8aabc0f1.jpg

Рис. 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-странице):


Ещё вам понадобится исходный код отсюда. Скомпилируйте этот код и загрузите на устройство с использованием Arduino IDE.

4. Пайка оставшихся компонентов


943d6cf3eb0cebed98d353fe9f7da878.jpg

Рис. F

Теперь к плате нужно припаять дисплей (Рис. F), после чего на плату можно подать питание. Если на дисплей выводятся сообщения — значит, плата работает. Если дисплей чист — попробуйте понажимать на кнопку RESET или нажать её и удерживать. Если это не помогло — проверьте шлейф дисплея. После того, как дисплей заработает, можно приклеить его к плате.

c1ffbb8896e3f54c671bd6bd20b24656.jpg

Рис. G

503ee41cf0a288202d8a738fa4a5a7d1.jpg

Рис. H

Теперь (Рис. G) надо припаять к плате LoRa-модуль. Если после этого подать на плату питание и на экране будет выведено LoRa init succeeded — это значит, что всё идёт по плану. Если такая надпись выведена не будет — надо проверить подключение радиомодуля к плате.

49b443aa4a890c45c8b3ea00b852aaea.jpg

Рис. I

И, наконец, нужно припаять к плате кнопки и SMA-разъём для антенны (Рис. I).

5. Подсветка передней панели (необязательно)


64c6f7b0101d1c972472cd3c595edd3d.jpg

Рис. J

Это необязательный шаг, на котором нужно припаять к передней панели соответствующие светодиоды. Мне хотелось сделать качественную подсветку клавиатуры, поэтому я использовал 30 светодиодов — по одному для каждой кнопки (Рис. J). После пайки передняя панель крепится к устройству с помощью распорных болтов и винтов M2.

Использование Armachat


a82c40ea66ed497ae6b31346323b55bd.jpg

Рис. K

Управление коммуникатором осуществляется с использованием «горячих клавиш». На Рис. K показан главный экран. В надписях, выведенных на нём, можно увидеть упоминание этих клавиш.

e8c30accd2d4b44ca1d3b89d77107b5a.jpg

Рис. L

S: Setup — открывает раздел, где можно настроить параметры LoRa — частоту, другие параметры передачи данных, установить свой ID от 0 до 10 (Рис. L).

78154d348601a22cfd8f1561e728625d.jpg

Рис. M

С: Contacts — открывает адресную книгу, которая (пока) рассчитана на 10 записей с фиксированными именами (Рис. M). Я работаю над новой прошивкой, которая позволит пользователям Armachat выбирать собственное имя, которое автоматически будет синхронизировано с адресными книгами тех, с кем они общаются.

N: New message — новое сообщение. Клавиши клавиатуры имеют различные функции, на них влияет клавиша Alt. Так, в режиме «нижнего регистра» клавиша Enter отправляет сообщение. В других режимах она играет роль клавиши-стрелки «Вправо», а Del играет роль клавиши-стрелки «Влево». Кнопка Пробел позволяет вводить пробелы, точки и запятые.

После отправки сообщения Armachat ожидает подтверждения его доставки. Если доставка не подтверждена — сообщение сохраняется в памяти с атрибутом undelivered, указывающем на то, что оно не доставлено получателю.

Устройства Armachat при включении отправляют сообщение alive. Каждое устройство, получившее подобное сообщение, пытается отправить недоставленные сообщения.

a8d22a4e963ab037cf5bd3ac36e121fd.jpg

Рис. N

M: Messages — этот раздел позволяет читать новые сообщения и даёт доступ к отправленным/полученным/недоставленным сообщениям (Рис. N).

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

Исследования расстояния передачи сообщений


Технология LoRa известна тем, что позволяет передавать данные на значительные расстояния. Вот каких максимальных расстояний передачи данных мне удалось достичь с использованием Armachat в моём посёлке с учётом того, что приёмник и передатчик разделяло не свободное пространство, а небольшие холмы и строения, и того, что устройство использовалось на максимальной мощности и с параметром Spread factor, установленным в значение 12:

  • 700 метров до шлюза, находящегося в саду, на террасе.
  • 1500 метров до шлюза, закреплённого на окне, на высоте примерно 4 метра над землёй.
  • 4300 метров до шлюза, установленного на окне чердака — примерно в 10 метрах над землёй.


Конечно, расстояние, на котором можно установить LoRa-связь, сильно зависит от антенны, от препятствий, которые имеются на пути радиосигнала, и от настроек радиочасти устройства.

Итоги


Устройство, о котором я рассказал, это в конечном счёте учебный проект, предназначенный для экспериментов с LoRa и для изучения высокотехнологичных сторон Arduino. Благодаря этому проекту я углубил свои знания в следующих сферах:

  • Чтение данных с QWERTY-клавиатуры.
  • Создание и вывод графики.
  • Проектирование пользовательских интерфейсов.
  • Хранение данных во флеш-памяти.
  • Отправка данных по радиоканалу или по USB.
  • Работа с I2C-датчиками.
  • Обработка GPS-данных.


a1b95d1ceee6bac7e1a50044c10445e3.jpg

Рис. O

Сейчас я работаю над новым вариантом Armachat — над платой Ergo. Она предусматривает использование разделённой клавиатуры, работать с которой проще и удобнее, чем с обычной. Тут в одной из новых плат используется тот же микроконтроллер и тот же LoRa-модуль, что и в исходном варианте Armachat, но другой дисплей (1,3 дюйма, 240×240 ST7759 IPS). А в другой — модуль RAK4260 производства RAKwireless Technology. В нём Microchip ATSAMR34J18 SiP объединён с возможностями LoRa (Рис. O). Это позволяет упростить плату, на которой, помимо этого чипа, нужно разместить лишь модуль заряда аккумулятора, регулятор напряжения на 3,3 В и излучатель звука.

И, наконец, я создал компактную версию Armachat без клавиатуры, но — с USB-портом для подключения внешней клавиатуры. Она называется Nano, а её размеры составляют всего 4×4 см. Я работаю над новой прошивкой, которая позволит использовать эту плату в виде миниатюрного репитера или ресивера.

Если говорить о других проектах, напоминающих Armachat, то среди них можно отметить Meshtastic и Disaster.radio.

© Habrahabr.ru