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

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

image

Сначала я назвал моё устройство «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-странице):


Ещё вам понадобится исходный код отсюда. Скомпилируйте этот код и загрузите на устройство с использованием 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)


  1. dernuss
    01.10.2021 14:35
    +3

    Неплохо. Но по мне так коммуникатор судного для должен быть немного дальнобойнее, например есть протокол WSPR. Но LoRa тоже ничего


  1. Firz
    01.10.2021 15:01
    +5

    Мне кажется в концепции коммуникатора судного дня имело бы смысл разделить устройство на условные FrontEnd(терминал?) — сам пользовательский терминал с клавиатурой и экраном(которые можно и менять по вкусу или вообще использовать смартфон), и BackEnd(передатчик?) — сам передатчик с мощной антенной, каким-нибудь магнитом для приклеивания на крышу машины/чего-то еще, чтобы можно было его поместить куда-то выше рук пользователя, а связь между модулями уже чем-то попроще реализовать(тем же BLE, тогда как терминал можно и приложение на смартфоне использовать).


    1. osmanov13
      01.10.2021 23:55
      +2

      Так сделано в Meshtastic: https://habr.com/ru/post/568394/


  1. Albert2009ru
    01.10.2021 15:14
    +1

    Atmel-ICE также очень хорош в Microchip (Atmel) Studio для дебага. Прям кайфую от него. Правда по личной жадности я заказал его у китайцев, пришёл оригинальный и полный комплект и даже новый, НО... Вместо оригинальной коробки с роботом, пришла тоже оригинальная, но красная с надписью Microchip. Все провода и преходники и сам Atmel-ICE и коробка имели разные серийные номера. Такое ощущение, что китаец имеет доступ к "микрочиповскому" оригинальному абсолютно рабочему "некомплекту" и приторговывает им в интернете. На этом я сэкономил аж 20 евро, вроде всё рабочее, новое и оригинальное, но осадок в душе остался. СОРРИ за нытьё и оффтоп. Дебаггер реально отменный, всем советую.


  1. STMshchik
    01.10.2021 15:52

    Корпус такой красивый. Жаль ни слова о нем.


    1. FirstJohn Автор
      01.10.2021 15:55
      +2

      Отдельного корпуса и нет. Он просто состоит из двух печатных плат, скреплённых винтам. Передняя печатная плата выступает ещё и как подписи к клавишам. Гениальное и простое решение. На фото ниже хорошо видно, как всё устроено изнутри.

      image


    1. Mapaxa864
      02.10.2021 01:30

      Жаль, что это по сути «бутерброд из текстолита», сначала я думал, что он металлический, пока не пригляделся…


  1. punzik
    01.10.2021 16:15
    +4

    Надо добавить mesh


    1. mikhailian
      01.10.2021 17:22
      +1

      Для революционеров технология очень подходящая.


  1. Stalker_RED
    01.10.2021 16:19

    При лайтовом апокалипсисе удобно будет поднять самодельную GSM вышку и использовать обычные телефоны.

    Тут вам и голос, и SMS, и радиус побольше, чем у LoRa, и древних нокий проще найти, чем устройств из поста.


    1. dobergroup
      01.10.2021 20:08

      А почему радиус должен быть больше?


      1. Popadanec
        02.10.2021 11:42
        +1

        У телефонов мощность передатчика минимум на порядок больше. А в условиях апокалипсиса шум в эфире будет на порядок ниже. И через телефон можно 5-10км атмосферы пробить.


        1. Stalker_RED
          03.10.2021 10:48

          2G из коробки тащит 35 км радиус (естественно если нет помех или серьёзных препятствий). Можно софтово со стороны вышки удвоить радиус, и если вышка высокая, то в степи или на море можно достичь 70 км. А в соседнем посте вон со спутника до обычных телефонов научились доставать)


          1. Popadanec
            03.10.2021 16:41

            Это с вышкой в несколько сотен метров и направленной антенной на ней.


    1. zbot
      01.10.2021 22:01

      будьте снисходительнее, это все таки игрушка. Но эта игрушка хотя-бы доведена до стадии - работает :-)


  1. Gryphon88
    01.10.2021 16:22
    +1

    Немного оффтоп: возможно ли на андроиде выбирать "среду" совершения операции (звонок, смс, передача данных)? Судя по VoWiFi это принципиально возможно, но сложности я не знаю. Если это ничего невероятного, то такое решение неплохо бы смотрелось как подсоединяемый к смартфону по USB модуль для мест с плохой связью, сильно экономных или параноиков.


    1. dobergroup
      01.10.2021 20:07
      +1

      Можно выбрать. Для этого нужно написать свое приложение-звонилку и менеджер sms. Реализовать соответствующий API со стороны устройства. С передачей данных проще - достаточно реализовать на устройстве RNDIS, со стороны андроид поддержка реализована.


  1. NanoVHF
    01.10.2021 19:00
    +2

    В целом не плохо! Плюсом - новое интересное изделие. На этом плюсы заканчиваются.

    Теперь о минусах:

    1) Модуль Rak на территории Ру - довольно дорогое удовольствие (по сравнению с обычными лорами).

    2) Экономичный процессор - это хорошо, но не самый ходовой, а значит тоже не копеечный. Как с доставабельностью? В жадночипе 1500р, на Али не нашёл вообще.

    3) Самый жирный минус - это ленточно-паяльный дисплей. Это сразу выводит изделие из категории домашнего самоделкопаяния в категорию коммерческого изделия. (Ну или для радиолюбителя со стажем монтажных работ)

    Итого: в целом интересное изделие, не дешёвое и предназначенное для опытного подготовленного радиолюбителя.


    1. 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


  1. K35
    01.10.2021 19:29
    +1

    Что-то ни схем, ничего...

    Штука интересная, по дальности действия сравнима с портативными радиостанциями.


  1. proton17
    01.10.2021 23:29
    +1

    Забавная штука) Но очень не оптимальная в плане питания… Во первых напрашивается E-Ink дисплей от какой-нибудь читалки или маленький с Али. А во вторых LDO, серьезно, в девайсе работающим от АКБ? Я бы однозначно воткнул Buck-Boost конвертор типа TPS63020 или любой другой, их сейчас завались. Он позволит высасывать АКБ по полной и не тратить энергию попусту как это делает LDO.


  1. Hodus
    02.10.2021 11:44

    Как идея - добавить точку доступа и web-интерфейс. Подключаешся любым устройством к коробочке armachat раздающей wifi, и из браузера имеешь доступ к чату, адресной книге, настройкам...


    1. K35
      03.10.2021 07:15

      Отличная идея. Можно выкинуть клавиатуру и дисплей.

      А нельзя для этого использовать блутуз?


      1. NanoVHF
        04.10.2021 12:51

        Уже есть подобный проект: описал ТУТ


      1. AndreyHenneberg
        07.10.2021 19:32

        Можно, но тогда надо будет писать приложение. А потом установить. И если на Android с последним проблем нет, то вот поставить его на iPhone… А браузеры есть уже везде и можно спокойно работать с микросайтом.

        И дисплей лучше не выкидывать: как минимум, можно будет читать сообщения прямо на устройстве. Ну и клавиатуру лучше тоже оставить. Хотя бы ради того, чтобы зависеть от телефона. Опять же, можно будет выключить Wi-Fi и Bluetooth.


    1. DIITHiTech
      01.11.2021 01:15

      так а толку если практический радиус такого wifi будет измеряться в десятках, максимум паре сотен метров? Проще крикнуть что надо :) Wifi на 433мгц был бы интересней, но увы это нишевая вещь.


  1. RiverFlow
    02.10.2021 20:45
    +1

    Бозе, какая няшная штукуёвинка, я прям хочу и штук пару!

    Автор - молодец!


  1. eugeneyp
    04.10.2021 17:39

    Идея и исполнение замечательное. Автору пожелание успехов. Изделию для полноты работы в постапокалипсисе не хватает защиты от ЭМИ. Если оно вообще существует для полупроводников на текущий момент. Военные долго не переходили на полупроводники с ламп именно из-за последствий от ЭМИ.


  1. debugtd
    05.10.2021 12:38

    bobricius slovakia за 119$ - 8600руб. за плату только! Ссудный день похоже уже наступил!

    https://www.tindie.com/products/bobricius/armachat-lora-messenger-fusion-3-version/

    красиво но дорого для домашнего проекта


    1. Hodus
      08.10.2021 00:52
      +1

      Столько грузовой автоэлектрик за 42 минуты работы получает в штатах. Судный день наступил, но только у нас


  1. leidek
    05.10.2021 12:38

    Классная штука. Но кнопок многовато. В идеале слизать управление с телефонов нулевых годов.