Плата расширения (HAT) LoRa для Raspberry Pi и связь с Arduino по технологии LoRa


Платы расширения (HAT) для Raspberry Pi – это платы, которые имеют примерно такой же размер как и плата Raspberry Pi. Они непосредственно одеваются сверху на плату Raspberry Pi и при этом не требуют никаких других соединений с платой. Сейчас на рынке продается несколько сотен видов различных плат расширения для Raspberry Pi.

Внешний вид платы расширения (HAT) LoRa для Raspberry Pi

В данной статье мы рассмотрим создание платы расширения (HAT) LoRa для Raspberry Pi на основе печатной платы. Данная плата расширения будет состоять из модуля LoRa SX1278 433MHz, модуля OLED дисплея и схемы повышающего преобразователя напряжения с 3.7 до 5V. Данную плату расширения LoRa для Raspberry Pi будет удобно использовать, к примеру, для создания Mesh сети на основе технологии LoRa или для размещения оконечных узлов LoRa. Также в данном проекте мы рассмотрим организацию беспроводной связи по технологии LoRa между платами Raspberry Pi (с использованием разработанной для нее платы расширения LoRa) и Arduino.

Также, прежде чем приступать к изучению данной статьи, вы можете посмотреть на нашем сайте следующие проекты с использованием технологии LoRa, которые помогут вам лучше разобраться в основах данной технологии:

Необходимые компоненты

  1. Плата Raspberry Pi (купить на AliExpress).
  2. Модуль LoRa SX1278 433MHz (купить на AliExpress).
  3. Модуль OLED дисплея (купить на AliExpress).
  4. FP6291 Boost Converter IC (микросхема для повышения напряжения).
  5. Резисторы 12 кОм (1 шт.), 48 кОм (1 шт.), 88 кОм (1 шт.) (купить на AliExpress).
  6. Конденсаторы 0,1 мкФ (2 шт.) (купить на AliExpress), 10 мкФ (1 шт.), 20 мкФ (2 шт.) (купить на AliExpress).
  7. Катушка индуктивности 4.7µH.
  8. Диод 1N5388BRLG.
  9. Литиевый аккумулятор 18650.
  10. Держатель (слот) для аккумулятора 18650.
  11. 6-контактный кнопочный переключатель.

Схема проекта

Схема платы расширения LoRa для Raspberry Pi представлена на следующем рисунке.

Схема платы расширения LoRa для Raspberry PiСхема нарисована в редакторе EasyEDA. Схема состоит из модуля LoRa SX1278, OLED дисплея и схемы повышения напряжения (Booster circuit), которая собрана на основе микросхемы FP6291 и предназначена для повышения напряжения с 3.7V до 5V. Закрепляться эта плата расширения будет непосредственно сверху платы Raspberry Pi.

Микросхема FP6291 представляет собой повышающий конвертер напряжения постоянного тока (DC-DC Step-Up Booster IC), работающий на частоте 1 МГц. Она используется во многих приложениях и позволяет получить стабильное напряжение 5V из батарейки на 3V. Для функционирования этой микросхемы необходимо подключить к ней несколько дополнительных компонентов, показанных на приведенной схеме. Стабильной напряжение 5V постоянного тока с выхода микросхемы FP6291 поступает на контакт 5V платы Raspberry Pi. Выходное напряжение с выхода микросхемы FP6291 можно настроить с помощью схемы делителя напряжения. В этом случае формула для расчета выходного напряжения будет выглядеть следующим образом:

VOUT = 0.6(1+ R1/ R2)

Изготовление печатной платы для Raspberry Pi LoRa HAT

Авторы проекта (ссылка на оригинал приведена в конце статьи) использовали редактор EasyEDA для разработки печатной платы для данного проекта.

Разработанная 3D модель верхнего и нижнего слоя печатной платы LoRa HAT для Raspberry Pi выглядит следующим образом:

3D модель верхнего и нижнего слоя печатной платы LoRa HAT для Raspberry Pi

Также вы можете скачать Gerber файлы, необходимые для изготовления печатной платы данного проекта.

Заказ печатной платы с сервиса PCBWay

Чтобы заказать изготовление печатной платы с сервиса PCBWay выполните следующую последовательность шагов.

Шаг 1. Перейдите на сайт https://www.pcbway.com/ и зарегистрируйтесь на нем. После этого введите размеры вашей печатной платы, число слоев и число необходимых вам экземпляров печатной платы.

Главная страница заказа печатной платы на PCBWay

Шаг 2. После этого нажмите на кнопку ‘Quote Now’ (заказать сейчас). После этого вас перебросит на страницу, где вам необходимо будет ввести дополнительные параметры для изготовления вашей печатной платы: ее тип, слои, материалы, толщину и т.д. Для данного проекта для всех этих параметров можно оставить значения по умолчанию.

Ввод параметров печатной платы на PCBWay

Шаг 3. На заключительном этапе загрузите ваши Gerber файлы в сервис PCBWAY и подождите пока сервис проверит их корректность. Если все нормально, то вы можете переходить к оплате заказа.

Загрузка Gerber файлов на PCBWay

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

Сборка конструкции проекта

Через несколько дней после заказа авторы проекта получили изготовленную печатную плату, ее вид показан на следующем рисунке.

Внешний вид изготовленной печатной платы для нашего проекта

После припаивания на нее необходимых компонентов получилась следующая конструкция проекта:

Внешний вид печатной платы с припаянными на нее компонентами

И после помещения на нее OLED дисплея мы получили следующий окончательный вид конструкции проекта:

Внешний вид собранной конструкции проекта

Настройка Raspberry Pi для работы с платой расширения LoRa

Сначала необходимо обновить программное обеспечение Raspberry Pi:

Установка pyLoRa на Raspberry Pi

Используйте следующую команду для установки пакета spidev. Spidev – этот пакет на языке python для Linux, который используется для осуществления связи по протоколу SPI в плате Raspberry Pi.

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

Установка luma.oled

Пакет luma.oled обеспечивает интерфейс Python3 с OLED дисплеями, построенными на основе контроллеров SSD1306, SSD1309, SSD1322, SSD1325, SSD1327, SSD1331, SSD1351, SSD1362, SH1106 и WS0010. Более подробную информацию по данному пакету вы можете прочитать по следующей ссылке.

Для установки пакета luma.oled и необходимых ему дополнений используйте команды:

Далее нам необходимо проверить включены ли интерфейсы SPI и I2C в настройках платы. Для этого введите в терминале команду:

В открывшейся панели настроек выберите настройки подключения и включите в них использование интерфейсов SPI и I2C.

Объяснение программы для Raspberry Pi

Полный код программы приведен в конце статьи, здесь же мы кратко рассмотрим его основные фрагменты.

В данном проекте плата Raspberry Pi выступает в роли клиента, а плата Arduino – в роли сервера. Подобную логику работы между этими платами мы уже рассматривали в предыдущей статье про технологию LoRa.

Первым делом в программе подключим (импортируем) все необходимые библиотеки.

Далее создадим класс LoRa с тремя методами (функциями): init class, start class и on_rx_done class. init class используется для инициализации модуля LoRa на частоте 433 МГц с шириной полосы 125 кГц. Модуль инициализируется в спящем режиме для экономии энергопотребления.

Функция start используется для настройки модуля в режиме приемника и получения от него уровня принимаемого сигнала (RSSI status), рабочей частоты и т.д. Внутри этой функции мы устанавливаем для модуля режим дежурного приема (continuous receiver mode, RXCONT), то есть выводим модуль из спящего режима, и затем используем цикл while чтобы считать значения RSSI и статус модуля.

Функция on_rx_done используется для приема пакетов данных. Принятые значения сохраняются в переменной payload. Затем они декодируются в формат utf-8 чтобы их можно было вывести на экран терминала.

Затем мы выведем принятые данные на экран OLED дисплея. Для этого мы используем шрифт 'arial.ttf'. Чтобы использовать другой шрифт необходимо скачать его и поместить в каталог шрифтов библиотеки luma.oled. Шрифт ‘arial.ttf’ можно скачать по этой ссылке.

Тестирование работы проекта

Когда аппаратная часть проекта будет готова, загрузите коды программ в платы Arduino и Raspberry Pi и запустите их на выполнение.

Подготовка проекта к тестированию

Если все работает исправно, то на OLED дисплее сконструированной нами платы расширения вы должны увидеть пакеты, передаваемые платой Arduino.

Тестирование работы проекта

Исходный код программы на Python

Код программы для платы Arduino возьмите из предыдущей статьи про связь Arduino и Raspberry Pi с помощью технологии LoRa.

Видео, демонстрирующее работу проекта

Источник статьи

(Проголосуй первым!)
Загрузка...
503 просмотров

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *