Про Lora, UART, Lua, NodeMCU та ESP8266

Останнім часом вирішили поглибити досвід роботи з LoRa.

Модуль LoRa обирали за наступними принципами:

  • відносно низька вартість;
  • є достатніми, щоб перевірити і зрозуміти технологію LoRa у режимі P2P;
  • має простий інтерфейс програмування – UART (сам чіп зазвичай має лише SPI – незручний інтерфейс для LoRa у якості модему)
  • підтримка режиму роботи Node – Node, тобто без “LoRa-хаба”.
  • також завдяки UART, має легко конфігуруватися у консолі – має бути підтримка

Ми знайшли один такий і придбали комплект для тестування. Це модулі AIThinker RA-06 на базі вже не нового і всім відомого чіпа Semtech  SX1278.

Заздалегідь відомі недоліки

Для цих чіпів немає готових драйверів під ESPHome (читай Home Assistant).

Щоправда, в ESPHome є потенційна можливість: підключення через Custom UART Text Sensor API, але це значить, окрім інтеграційних скриптів на YAML, програмування конекторів/парсерів на С. І це не дуже добре, адже Home Assistant зараз є дуже популярною платформою. Чомусь розробники HA/ESPHome не зробили жодної підтримки для LoRa.

На перший погляд, цей модуль (2013 року випуску) не дуже годиться для нових продуктів. Але те що треба для тестування LoRa і власного навчання.

Втім, інші модулі, які є сучасними і можуть бути претендентами для великих комерційних проектів, все ще мають дуже високу вартість і для DIY-проектів не дуже придатні з цієї точки зору.

Саме тому ми все ж вирішили попрацювати з RA-06 SX1278.

Підтримка модуля в прошивці NodeMCU

Тут теж немає готового драйвера ні для модуля AIThinker RA-06, ні для чіпа SX1278, але у складі прошивки NodeMCU є універсальний модуль Soft-UART, що дозволяє підключити модуль до будь-яких двох GPIO ESP8266 і програмувати його на рівні Lua.

На жаль, під час тестування виявилося, що один з параметрів протоколу UART не підтримується обопільно двома цими системами:

  • Soft-UART прошивки NodeMCU функціонально обмежений і не підтримує режим Parity: Odd або Even. Доступний лише Parity:None.
  • LoRa модуль не підтримує Parity:None, але підтримує Odd чи Even.

Ця дрібничка, на яку зазвичай взагалі ніхто не звертає уваги, не дозволяє працювати з модулем LoRa через програмний Soft-UART.

Апаратний інтерфейс UART контролера ESP8266

Залишається лише можливість використовувати апаратний інтерфейс UART 0 модуля ESP8266.

І тоді все має бути добре. – Якби не прикрість, що цей UART в NodeMCU застосовується для консолі програмування. А ще одного повного TX/RX UART в ESP8266EX немає.

Що ж робити?

Є вихід. Потрібно лишень:

  • перенаправити консоль програмування у інший протокол – наприклад, працювати з консоллю через інкапсульований у WiFi і TCP : telnet.
  • підключити LoRa модуль на місце консолі (тобто на апаратний UART0)

Про результати спроби запустити LoRa через UART на ESP8266 під керуванням NodeMCU розповімо зовсім скоро у наших наступних публікаціях.