Коммуникатор судного дня «Armachat» LoRa

в 11:00, , рубрики: 3rd PCB Design Contest, arduino, communicator, disaster, diy или сделай сам, FirstDEDIC, firstvds, lora, rfm95, Блог компании FirstVDS, Разработка под Arduino
Технология LoRa отлично подходит не только для сбора информации с удалённых датчиков. Её можно использовать как основу системы для обмена сообщениями. Именно такую систему я воплотил в жизнь в виде персонального коммуникатора Armachat. Для меня это самый настоящий учебный проект, на котором я оттачивал навыки создания печатных плат с беспроводными модулями и графическими дисплеями. Устройство питается от аккумулятора, оно представляет собой нечто вроде высокотехнологичной портативной рации, поддерживающей обмен текстовыми сообщениями. При этом для сборки этой рации нужно сравнительно мало компонентов — всего около 25.

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

image

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

Программная часть устройства пока не готова полностью. Но уже сейчас можно составлять и сохранять сообщения, можно их отправлять и принимать (с подтверждением доставки), можно повторно отправлять с устройства на устройство неотправленные сообщения с высокой вероятностью их успешной доставки.

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

Коммуникатор судного дня «Armachat» LoRa - 2

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

Коммуникатор судного дня «Armachat» LoRa - 3

Рис. A

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

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

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

Коммуникатор судного дня «Armachat» LoRa - 4

Рис. B

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

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

Коммуникатор судного дня «Armachat» LoRa - 5

Рис. C

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

Коммуникатор судного дня «Armachat» LoRa - 6

Рис. D

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

  • Clock Source: INTERNAL_OSCILLATOR
  • Serial Config: ONE_UART_ONE_WIRE_TWO_SPI

Коммуникатор судного дня «Armachat» LoRa - 7

Рис. 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. Пайка оставшихся компонентов

Коммуникатор судного дня «Armachat» LoRa - 8

Рис. F

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

Коммуникатор судного дня «Armachat» LoRa - 9

Рис. G

Коммуникатор судного дня «Armachat» LoRa - 10

Рис. H

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

Коммуникатор судного дня «Armachat» LoRa - 11

Рис. I

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

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

Коммуникатор судного дня «Armachat» LoRa - 12

Рис. J

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

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

Коммуникатор судного дня «Armachat» LoRa - 13

Рис. K

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

Коммуникатор судного дня «Armachat» LoRa - 14

Рис. L

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

Коммуникатор судного дня «Armachat» LoRa - 15

Рис. M

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

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

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

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

Коммуникатор судного дня «Armachat» LoRa - 16

Рис. N

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

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

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

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

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

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

Итоги

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

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

Коммуникатор судного дня «Armachat» LoRa - 17

Рис. 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.

Автор:
FirstJohn

Источник


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js