Этот репозиторий дает вам все, что вам нужно, чтобы легко построить (это проект DIY!) Отличное качество Gateway Lora-To-MQTT, основанное на модулях Ebyte Lora и ESP32 и работает либо с Wi-Fi, либо с Ethernet, выбегая от 5V. Есть две разные версии шлюза, подробности об этих версиях, которые вы должны выбрать ниже:
Для предоставления возможностей Ethernet, я использую шляпу Ethernet Ethernet. Конечно, вполне естественно, что я также должен был использовать Quindel ESP32, но у меня было несколько запасных стандартных Devboards ESP32, которые лежали без использования, поэтому я разработал доску вокруг них. Но, тем не менее, я мог бы однажды разработать версию, полностью основанную на Quinled-ESP32.
Чтобы легко переключиться между Wi-Fi и Ethernet, на доске есть перемычка, чтобы сделать именно это. Это даже работает с питанием доски; Нет необходимости сокращать мощность.
Опять же, это проект DIY! Поэтому, во -первых, вам нужно несколько навыков пайки, и я настоятельно рекомендую либо горячую тарелку SMD, либо пистолет горячего воздуха, чтобы припаять модуль Ebyte E32. Очень очень сложно припаять только с железом!
Таким образом, вы хотите напечатать PCBS на фабрике PCB по вашему выбору, например JLCPCB или PCBWAY. Я включил файлы Gerber для обоих в папку соответствующего. Если вы хотите использовать другого поставщика услуг, вам необходимо проверить, могут ли они принять эти Герберс или генерировать их самостоятельно.
Я также настоятельно рекомендую вам заказать эту печатную плату с трафаретом, иначе вам будет трудно положить пасту на колодки модуля Ebyte!
Каждая папка PCB имеет файл IBOM HTML, который дает вам хорошие инструкции по пайке / обзор, найдите его в папке ibom в каждой папке версий. Когда вы паяли доску, просто подключите ее с источником питания 5 В, и вот иду! Он потребляет менее 200 мА, поэтому вы можете легко использовать для него старое телефонное зарядное устройство 500, 1А (или выше).
Источник доступен в папке src . Загрузите Arduino IDE, проверьте файл config.h и замените заполнители на настройки, компиляцию и загрузку в ESP32. Это должно быть, и шлюз должен появиться на вашем сервере MQTT и отправлять сообщения медицинских проверок каждые 5 секунд.
Как теперь вы можете, чтобы ваши датчики и доски были отправлены сообщения LORA, можно найти в разделе «Исходный код / программное обеспечение» ниже.
Какой из них вы должны выбрать? Это довольно просто и определено одним фактором:
Вам необходимо выбрать между ними, так как модули Ebyte, которые используют последовательную связь, не могут общаться с модулями RFM95, хотя они используют один и тот же Semtech SX1276 Lora Chip. Это связано с тем, что у серийных модулей Ebyte также есть Litte MCU на борту, который уже делает свой собственный «материал» / протокол при отправке сообщений через Лору. Таким образом, вы не разговариваете напрямую с Semtech Chip, но вместо этого маленький MCU. Нужно понять, как именно это работает для чтения этих сообщений с помощью модулей LORA, которые используют прямую связь SPI с чипом Semtech (например, конкретный модуль E32, который я использую, или RFM95), чтобы заставить их работать друг с другом.
Эта версия основана на Ebyte E32-400M20S или E32-900M20S, который предлагает прямую последовательную связь с Semtech SX1276. Во время последнего исследования (начало 2022 года) это единственный электронный модуль, который работает на этой печатной плате, так что вы не можете использовать любой другой, который использует последовательную связь: они не поместятся на доске / имеют другую распину! Выберите правильный для вашего региона (TL; DR: 400 для США/Азии, 900 для Европы).
Модуль не в файле Bom CSV, вам нужно снять его с Aliexpress:
Если вы обычно работаете в экосистеме Ebyte с ее серийными модулями с интерфейсом, эта плата для вас. Однако я не сделал порт моего программного обеспечения на основе E32 для этой платы. И я на самом деле не планирую это делать, так как лично использую версию E32. Но вы можете портировать его, используя библиотеку Renzo Aschiantis Arduino.
Модуль не в файле Bom CSV, вам нужно снять его с Aliexpress:
Программное обеспечение, которое я разработал для этого, должно быть легко расширяемым, не касаясь фактической логики самого шлюза, а вместо этого добавлять небольшой кусок кода в отдельный файл.
Взгляните на lora-ids.h . Этот файл предназначен для использования между этим шлюзом и всеми датчиками, которые вы разрабатываете. Он имеет список различных типов сообщений, и вы можете легко добавить свой собственный. Например, у него есть тип «почтового ящика», который определяет несколько свойств, которые отправит почтовый ящик. Это позволяет очень легко читать и обрабатывать эти сообщения и создавать темы на вашем сервере MQTT, которые вы затем можете прослушать. Есть также «пользовательский» тип, который в основном имеет бесплатный текст и, возможно, полезен для отладки.
Не стесняйтесь добавлять свои собственные типы в этот файл. Вам нужно будет добавить две вещи:
#define LORA_MESSAGE_ID_CUSTOM 0x0struct LoRaMessageCustom : LoRaBaseСубъект, в который попадает сообщение, построено из идентификатора шлюза, идентификатора устройства и идентификатора сообщения. Итак, для следующего примера мы предполагаем, что:
0xA и mailbox-sensorLORA_MESSAGE_ID_MAILBOX и0x1 и название lora-gateway-e32 получает его. Итак, давайте сначала возьмем тип сообщения mailbox в качестве примера. Это определяет эти свойства:
Кроме того, он определяет свое собственное имя (и с этим: родитель для этих свойств):
String getMqttTopicName() { return "mailbox"; }Поэтому всякий раз, когда шлюз получат сообщение такого типа, он будет читать свойства от него и бросить их в эти темы:
???/messages/mailbox/duration???/messages/mailbox/distance???/messages/mailbox/humidity???/messages/mailbox/temperature Но где формируется /messages/ часть и что такое ???/ . Это легко: простое устройство / датчик, который вы разработаете, также должно быть зарегистрировано в lora-ids.h . На самом верху, есть список устройств, каждый с:
Шлюз сортирует все сообщения, которые он получает по устройству, и префикс его с этим именем устройства, а также сортирует все сообщения под темой messages , чтобы у устройства были другие темы рядом с фактическими сообщениями. Это позволяет вам прислушиваться к конкретным полям/значениям конкретных типов сообщений с определенного устройства!
Итак, теперь мы знаем это:
???/mailbox-sensor/messages/mailbox/duration???/mailbox-sensor/messages/mailbox/distance???/mailbox-sensor/messages/mailbox/humidity???/mailbox-sensor/messages/mailbox/temperatureПоследняя недостающая часть - это шлюз, который получает сообщения. Он также определяется как устройство, поэтому он также имеет имя, поэтому мы можем легко построить полное имя темы для нашего примера:
lora-gateway-e32/devices/mailbox-sensor/messages/mailbox/durationlora-gateway-e32/devices/mailbox-sensor/messages/mailbox/distancelora-gateway-e32/devices/mailbox-sensor/messages/mailbox/humiditylora-gateway-e32/devices/mailbox-sensor/messages/mailbox/temperatureТеперь вы можете легко:
LORA_DEVICE_IDS с идентификатором и именем Взгляните на функцию sendLoRaMessage : bool sendLoRaMessage(byte messageID, LoRaBase *loRaMessage, byte recipientId = 0, byte senderId = 0) Он ожидает, что мы дадим:
Мы также можем указать:
LORA_GATEWAY_IDLORA_DEVICE_ID , если не указан Итак, в вашем коде просто создайте экземпляр идентификатора сообщения, который вы хотите отправить, и передать его sendLoRaMessage :
LoRaMessageMailbox *loRaMessage = new LoRaMessageMailbox;
loRaMessage->duration = duration;
loRaMessage->distance = distance;
loRaMessage->humidity = humidity;
loRaMessage->temperature = temperature;
sendLoRaMessage(LORA_MESSAGE_ID_MAILBOX, loRaMessage);
И это все :)
Для этого мы рассмотрим, как построено фактическое сообщение, которое отправляется через Лору. Основная идея украдена из библиотеки Arduino-Lora, которая использует отдельные байты для идентификации отправителей, приемников и т. Д.
Глядя на одно сообщение:
| Полем Таким образом, взяв пример сообщения mailbox свыше, значение для сообщения может выглядеть следующим образом: 12345|3.56|44.55|27.4