Pull to refresh
299.57
FirstVDS
Виртуальные серверы в ДЦ в Москве и Амстердаме

DIY: передаем данные на километры с помощью контроллера Micro::Bit и радиомодуля EBYTE LoRa (Часть 1)

Reading time17 min
Views17K

BBC micro::bit как платформа для старта

Если посмотреть, на какой базе сегодня обучают школьников в кружках робототехники, то окажется, что в большинстве своем это Лего-подобные наборы с контроллером Arduino. 

Что и говорить, микроконтроллер Arduino очень известен и доступен по низкой цене. На базе Arduino можно сделать много разных игрушек как для детей, так и для взрослых. Идеи, заложенные в Лего, позволяют без особого труда собирать довольно сложные конструкции. Если возможностей наборов Лего не хватает, имеются многочисленные периферийные устройства. Опять же, для Arduino написано много книг, в том числе на русском языке, а в интернете есть сообщества пользователей этой платформы.

Но чем же тогда хорош micro::bit?

Прежде всего, низким порогом входа для тех, кто не владеет языками программирования. Если для Arduino нужны Arduino IDE и язык С, то для micro::bit используется графическая среда Microsoft MakeCode, доступная и детям. Причем доступная из браузера, без установки каких-либо программ. Но если нужно, можно составлять программы для micro::bit на JavaScript и Python, а для специалистов доступен и С++.

Справедливости ради надо сказать, что для Arduino тоже есть графические среды программирования, например, Scratch for Arduino или Ardublock, но их нужно специально устанавливать на компьютер. 

Второе преимущество micro::bit в том, что на плате этого микроконтроллера имеется довольно много периферийных устройств. Вот, например, что есть в micro::bit версии 2:

  • три программируемые кнопки, одна из которых сенсорная;

  • монитор из 25 светодиодов;

  • микрофон;

  • динамик;

  • акселерометр (датчик ускорения);

  • магнитометр (встроенный компас);

  • измеритель температуры;

  • встроенный модуль Bluetooth диапазона 2,4 ГГц для беспроводных коммуникаций;

  • интерфейс USB;

  • встроенный аналого-цифровой преобразователь;

  • интерфейс GPIO (General Purpose Input Output)

Да, конечно, можно купить нужные модули отдельно и подключить к Arduino, но в micro::bit это все уже есть на плате очень небольшого размера, подключено и готово к работе.

Если сравнивать вычислительную мощность, объем памяти и другие параметры, то и здесь micro::bit обходит Arduino с большим отрывом. Ниже в таблице мы привели сравнение micro::bit и Arduino UNO.

Параметр

micro::bit v1.5

micro::bit v2

Arduino UNO

Рабочая частота, МГц

16

64

16

Разрядность, бит

32

32

8

Объем ОЗУ, КБайт

16

128

2

Процессор

nRF51822

nRF52833 с модулем FPU

ATmega 328

Объем памяти Flash, КБайт

256

512

2

Кол-во цифровых контактов

19

19

20

Микрофон

-

1

-

Динамик

-

1

-

Кнопки

2

3

-

Кол-во аналоговых входов

3

3

6

Разрядность АЦП

10

10

10

Интерфейсы SPI

1

1

1

Интерфейсы I2C

1

1

1

Интерфейсы UART

1

1

1

Таймеры

-

-

3

Напряжение питания, В

3,3

3,3

7–12

Как видите, даже версия 1.5 микроконтроллера micro::bit выглядит мощнее и привлекательнее, чем Arduino UNO. При этом для micro::bit в продаже имеется огромное количество совместимых периферийных модулей, наборов и конструкторов, в том числе собираемых по принципу Лего.

Цена micro::bit на сайте aliexpress.ru начинается примерно от 1200 руб. Это заметно дороже в сравнении с ценой Arduino UNO (от 250 руб. на том же сайте). Однако с учетом упомянутых выше преимуществ micro::bit представляет собой неплохое вложение средств в обучение микрокомпьютерной технике.

Строим систему сбора данных о погоде

Может показаться, что micro::bit пригоден только для простейших игрушек. Однако на самом деле это не так. Давайте создадим учебный проект STEM (science, technology, engineering and mathematics) системы сбора данных.

Эта система позволит вам контролировать через интернет данные о температуре, влажности, давлении, температуре точки росы и освещенности на довольно обширной территории. Ее можно развернуть на ферме, на большом участке возле загородного дома или на фабрике.

Такая задача решается различными способами. Можно, например, установить какую-нибудь систему умного дома, с проводной или беспроводной передачей данных, либо использовать промышленные решения. Но все это стоит немалых денег, а установка обычно выполняется специалистами. 

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

Архитектура системы сбора данных

Для получения данных о погоде используем микроконтроллеры micro::bit с небольшим количеством дополнительных модулей. Разместим эти микроконтроллеры в тех местах, где нужно контролировать погоду, а полученные данные будем передавать по радиоканалу в шлюз. Шлюз мы соберем на базе микроконтроллера Raspberry Pi, подключенного к интернету.

Для просмотра результатов измерений мы создадим сайт, разместив его, например, на том же самом микроконтроллере Raspberry Pi. 

Если размер территории, на которой нужно собирать данные, не превышает нескольких квадратных километров, то можно использовать архитектуру типа "звезда" (рис. 1). 

Рис. 1. Система сбора данных с архитектурой типа «звезда»
Рис. 1. Система сбора данных с архитектурой типа «звезда»

При этом в центре (объект «Большой дом») будет находиться узел шлюза, рассылающий запросы на получение данных от периферийных узлов и предоставляющий доступ к этим данным через интернет. 

В периферийных узлах (объекты «Летний домик», «Гараж» и «Парник») мы будем получать данные измерений и передавать их через радиоканал по запросу со стороны шлюза.

Почему не Bluetooth

На плате micro::bit есть контроллер Bluetooth, с помощью которого очень легко передавать данные на расстояния до 70 м. Этого хватит для сбора данных, например, в пределах не очень большой квартиры. 

В теории для расширения покрытия можно было бы создать ретрансляционные узлы и собрать на micro::bit что-то вроде Mesh-сети. Однако для расстояний, измеряемых сотнями метров или километрами такая технология не подойдет из-за того, что потребуется очень много узлов, да и настройка сети будет очень непростая.

Почему не Wi-Fi

Почему бы для сбора данных не использовать микроконтроллеры с Wi-Fi, отправляя с них данные сразу в интернет?

Во-первых, не везде доступен интернет и Wi-Fi. Если на участке есть дом, оборудованный Wi-Fi, то на периферии участка сигнал Wi-Fi может быть уже недоступен.

Во-вторых, провайдеры интернета обычно ограничивают количество одновременно подключенных устройств. Если вам нужно разместить на территории большое количество узлов сбора данных, это ограничение может оказаться критическим.

В-третьих, контроллеры с Wi-Fi потребляют слишком много энергии, чтобы делать для них автономные источники питания. В то же время удаленные узлы системы сбора данных могут располагаться в таких местах, куда не подведена линия электропитания.

Используем технологию LoRa

В нашем проекте мы используем радиомодули LoRa (Long Range), способные передавать данные на расстояния до сотен метров и километров. Технология запатентована компанией Semtech и реализована в микросхемах приемо-передатчиков (трансиверов), таких как SX1268, SX1276, SX1278. 

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

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

К сожалению, скорость передачи данных модулями LoRa не превышает 2400–19200  бит/c.  Но так как нам нужно передавать только числа и текстовые строки, а не фото или видео, то такая скорость будет вполне допустимой.

Подбираем оборудование

Чтобы собрать систему сбора данных, нам потребуется:

  • микроконтроллеры micro::bit по одному на каждый узел сбора данных (в нашем случае 3 шт.);

  • адаптеры micro:bit Breakout (3 шт.) для монтажа micro::bit на макетную плату;

  • стабилизаторы напряжения на базе AMS1117 или MP2315 для питания micro::bit напряжением 3,3 В (4 шт.);

  • погодная станция BME-280 для измерения температуры, давления и влажности (2 шт.);

  • измеритель освещенности GY-30;

  • OLED дисплей с интерфейсом I2C (2 шт.);

  • радиомодуль LoRa c антенной (4 шт.):

  • микроконтроллер Raspberry Pi 3 Model B+ или Raspberry Pi 4 для шлюза;

  • корпус и блок питания для Raspberry Pi;

  • карта памяти SD для установки ОС Raspberry Pi OS Lite;

  • переходник для подключения карты памяти SD к USB-порту компьютера;

  • макетная плата (4 шт.) с соединительными проводами

Микроконтроллеры, макетные платы, переходники, провода, различные модули и блоки питания можно приобрести на сайтах Aliexpress, Onpad, Amperka, Chipdip, 3DIY, Amperkot, Вольтик и в других аналогичных магазинах. 

Микроконтроллер micro::bit

Для каждого узла нашей системы, где мы будем получать данные, потребуется микроконтроллер micro::bit версии 1.5 или 2.0 (рис. 2). 

Рис. 2. Микроконтроллеры micro::bit версий 1.5 и 2.0
Рис. 2. Микроконтроллеры micro::bit версий 1.5 и 2.0

Чтобы установить micro::bit на макетную плату, нужно будет приобрести адаптер micro:bit Breakout (рис. 3).

Рис. 3. Контроллер установлен в адаптер micro:bit Breakout
Рис. 3. Контроллер установлен в адаптер micro:bit Breakout

На плате адаптера все контакты обозначены, что облегчает подключение.

Микроконтроллер Raspberry Pi

Нам подойдет Raspberry Pi 3 Model B+ или Raspberry Pi 4. Для установки ОС Raspberry Pi OS Lite будет нужна карта памяти SD емкостью от 4 Гбайт и переходник, с помощью которого эту карту можно будет подключить к USB-порту вашего компьютера.

Учтите, что для Raspberry Pi 4 нужен специальный блок питания, созданный именно для этой версии микроконтроллера. Также рекомендуем приобрести корпус с вентилятором. И еще нужно чтобы выбранный корпус допускал подключение проводов к порту GPIO Raspberry Pi.

Погодная станция BME-280

На плате micro:bit уже имеется измеритель температуры, однако он находится внутри процессора и измеряет температуру самого процессора, а не окружающей среды.

Для измерения температуры, давления, влажности и температуры точки росы мы используем погодную станцию BME-280 (рис. 4).

Рис. 4. Погодная станция BME-280
Рис. 4. Погодная станция BME-280

Контакт питания BME-280, обозначенный как VCC, нужно подключить к контакту 3V3 микроконтроллера micro::bit, а вывод GND — к одноименному выводу micro::bit, то есть к земле.

В нашей системе сбора данных мы будем подключать внешние устройства к микроконтроллеру через шину I2C. При этом контакты SCL (синхронизация) и SDA (данные) погодной станции нужно подключить к контактам P19 и P20 платы micro:bit, соответственно. Заметим, что BME-280 использует адрес 0x76 на шине I2C. 

Что касается контактов SCB и SDD устройства BME280, то они позволяют работать с помощью протокола SPI. Оставьте их свободными.

Измеритель освещенности BH1750 FVI GY-30

Хотя на плате micro::bit есть встроенный измеритель уровня освещенности, для более точных измерений используем модуль BH1750 FVI GY-30 (рис. 5). 

Рис. 5. Люксметр BH1750 FVI GY-30
Рис. 5. Люксметр BH1750 FVI GY-30

Этот датчик (люксметр) возвращает измеренное значение в люксах.

Выводы GY-30, обозначенные как  GND и VCC, нужно подключить к земле GND и питанию 3V3 контроллера micro::bit, соответственно. 

Вывод SCL подключите к контакту P19, а вывод SDA — к контакту P20 микроконтроллера micro:bit.

Контакт ADD устройства GY-30 задает адрес устройства на шине I2C. При заземлении адрес будет равен 0x23. Если же его подключить к контакту питания micro:bit или не подключить вовсе, адрес будет равен 0x5C.

OLED-дисплей SSD1306

На плате контроллера micro:bit есть светодиодный экран из 25 светодиодов, который можно использовать для отображения графической, цифровой и текстовой информации.

Но для отладки и локального отображения чисел  и текстовых строк на узлах нашей системы больше подойдет OLED дисплей SSD1306 с интерфейсом I2C и разрешением 128x64 (рис. 6).

Рис. 6. OLED дисплей SSD1306 с интерфейсом I2C
Рис. 6. OLED дисплей SSD1306 с интерфейсом I2C

На вывод VCC подайте 3,3 В, а вывод GND подключите к земле. Контакт SDA монитора подключите к контакту P20 micro:bit, а контакт SDC — к контакту P19.

Электропитание

Для питания узлов системы, собранных на базе micro::bit, мы будем использовать батареи или аккумуляторы напряжением от 4,5 В до 9 В. С помощью модуля стабилизатора напряжения на базе AMS1117 или MP2315 (рис. 7) это напряжение должно быть понижено до 3,3 В.

Рис. 7. Стабилизаторы напряжения на базе AMS1117 и MP2315
Рис. 7. Стабилизаторы напряжения на базе AMS1117 и MP2315

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

Рис. 7. Установка выходного напряжения с помощью перемычек на плате MP2315
Рис. 7. Установка выходного напряжения с помощью перемычек на плате MP2315

Для нашего применения задайте выходное напряжение, равное 3,3 В. При этом входное напряжение должно находиться в пределах от 4,5 В до 24 В.

Упомянутые модули легко найти в интернете по фразам «модуль стабилизатора напряжения на базе AMS1117» и «понижающий DC-DC преобразователь на базе MP2315». 

Модуль AMS1117 можно приобрести на этом сайте,  а модуль MP2315 имеется в продаже здесь.

Входное напряжение от батареи на 4,5-9 В нужно подавать на контакты преобразователей, обозначенные как VIN+. При этом выходное стабилизированное напряжение нужно снимать с вывода, обозначенного как VOUT+ или VO+. Земля подключается к выводам GND.

Собирая устройство, перед подключением стабилизатора или преобразователя к микроконтроллерам или модулям обязательно проверьте выходное напряжение с помощью мультиметра. Оно должно быть равно 3,3 В. Ошибка в напряжении или в полярности подключения может привести к выходу микроконтроллера и модулей из строя, так что проверьте все дважды.

Радиомодули LoRa

Для нашего проекта мы используем радиомодули LoRa производства компании EBYTE

Но как выбрать нужные модули из большого разнообразия, представленного на этом сайте?

Прежде всего, нужно ориентироваться на законодательство той страны, в которой вы будете запускать свою систему сбора данных. Лучше всего использовать безлицензионные диапазоны частот (Industrial, Scientific, Medical, ISM), выделенные для LoRa. 

На момент написания статьи в России к безлицензионным диапазонам частот отнесены 433 МГц, 868 МГц, 2400 МГц и 5725 МГц. Для создания сетей интернета вещей в России часто используют диапазон частот от 864 МГц до 869 МГц при мощности передатчика до 25 мВт. 

При этом выделяются поддиапазоны от 864,0 МГц до 865,0 МГц и 868,7 МГц до 869,2 МГц. В первом из этих поддиапазонов действуют дополнительные ограничения: период активной работы может составлять не более 0,1%. Кроме того, не разрешается работать вблизи аэропортов. У второго поддиапазона таких ограничений нет.

Правила использования радиочастотного спектра устанавливаются Государственной комиссией по радиочастотам (ГКРЧ). Также рекомендуем ознакомиться с этой статьей. Учтите, что законодательство постоянно изменяется.

Далее, с точки зрения удобства монтажа на макетной плате проще всего использовать модули с выводами, а не предназначенные для пайки. Кроме того, радиомодули должны работать с интерфейсом UART.

В табл. 1 перечислены подходящие радиомодули EBYTE с интерфейсом UART. 

Табл. 1. Радиомодули EBYTE с интерфейсом UART

Модуль

Частота, МГц

Мощность, dBm (мВт)

Расстояние, Км

Чип

E32-433T20D

410-441

10-20 (10-100)

3

SX1278

E32-433T27D

410-441

18-27 (63-500)

5

SX1278

E32-433T30D

410-441

21-30 (125-1000)

8

SX1278

E32-868T20D

862-893

10-20 (10-100)

3

SX1276

E32-868T30D

862-893

21-30 (125-1000)

8

SX1276

E32-915T20D

900-931

10-20 (10-100)

3

SX1276

E32-915T30D

900-931

21-30 (125-1000)

8

SX1276

В России можно использовать такие модули на 433 МГц и 868 МГц, например, E32-433T20D, E32-433T27D, E32-433T30D, E32-868T20D и E32-868T30D.

Все перечисленные радиомодули можно купить на Aliexpress. Просто введите название модуля в поиске и выберите предложение, подходящее по цене и другим условиям.

Для подключения в радиомодулях серии E32 предусмотрены семь контактов: M0, M1, RXD, TXD, AUX, VCC и GND, а также разъем для антенны (рис. 8).

Рис. 8. Радиомодули EBYTE LoRa серии E32
Рис. 8. Радиомодули EBYTE LoRa серии E32

Контакты GND и VCC подключите к земле и линии питающего напряжения от 3,3 В до 5,2 В. Учтите, что потребляемый ток может достигать 1 А при высокой мощности передатчика. В простейшем случае, при минимальной мощности передатчика, контакт VCC можно подключить к тому же стабилизатору на 3,3 В, от которого питается micro::bit. Но лучше всего установить для радиомодуля отдельный стабилизатор.

Контакты RXD и TXD предназначены, соответственно, для приема и передачи данных с помощью протокола UART. Их нужно подключить к цифровым контактам micro:bit.

Также к цифровым контактам micro:bit подключаются контакты M0, M1 и AUX. Первые два из них задают режим работы радиомодуля:

  • режим установки параметров (конфигурирования);

  • режим обычной работы;

  • режим сохранения мощности;

  • режим автоматического перехода из режима сохранения мощности в активный режим при получении данных по радиоканалу

Для изменения параметров работы модуля на выводы M0 и M1 нужно подавать с выводов micro:bit напряжение 3,3 В, что соответствует логической единице. В режиме передачи данных на эти выводы необходимо подавать нулевое напряжение. 

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

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

Антенны для радиомодулей

Радиомодули нельзя включать без антенны. В табл. 2 мы привели рекомендуемые антенны для перечисленных выше радиомодулей.

Табл. 2. Рекомендуемые антенны для радиомодулей E32

Модуль

Тип антенны, высота, усиление

E32-433T20D, E32-433T27D, E32-433T30D

TX433-XPH-300, 96,5 см, 6 dBi (автомобильная),
TX433-XP-200, 19 см, 4 dBi (гибкая с присоской),
TX433-JKD-20, 200 мм, 3 dBi,
TX433-JK-11, 110 мм, 2,5 dBi,
TX433-JWG-7, 75мм, 2,5 dBi,
TX433-JW-5, 50 мм, 2 dBi

E32-868T20D, E32-868T30D

TX868-XPL-100, 29 см, 3,5 dBi (гибкая с присоской),
TX868-JZ-5, 52 мм, 2 dBi,
TX868-JK-20, 48 мм, 3 dBi

E32-915T20D, E32-915T30D

TX915-XP-100, 26 см, 3,5 dBi (гибкая с присоской),
TX915-JKD-20, 175 мм, 3 dBi,
TX915-JK-11, 90 мм, 2,5 dBi,
TX915-JZ-5, 50 мм, 2 dBi

Для получения максимальной дальности связи выбирайте антенны с наибольшим усилением. У антенны должен быть интерфейс SMA-J. Документация на радиомодули, а также информация о совместимых антеннах имеется на сайте EBYTE. Откройте страницу нужного вам модуля, а затем щелкните кнопку Manual. Рекомендации по выбору антенн есть в разделе Antenna recommendation.

На рис. 9 мы показали радиомодуль с малогабаритной антенной.

Рис. 9. Радиомодуль E32 с малогабаритной антенной
Рис. 9. Радиомодуль E32 с малогабаритной антенной

Собираем стенд

Сборку стенда для отладки системы сбора данных начнем с установки шлюза на Raspberry PI для передачи результатов измерений в интернет. Далее соберем периферийные узлы на базе micro::bit.

Подготовка карты SD для установки Raspberry Pi OS Lite

Подключите к вашему настольному компьютеру или ноутбуку карту SD емкостью от 4 Гбайт. Возможно, вам потребуется переходник для подключения карты SD к порту USB. 

Далее скачайте с официального сайта программу Raspberry Pi Imager и запустите ее (рис. 10).

Рис. 10. Программа Raspberry Pi Imager
Рис. 10. Программа Raspberry Pi Imager

Отформатируйте карту, выбрав в меню Operating System программы Raspberry Pi Imager строку Erase, а в меню Storage — вашу карту SD. Для запуска форматирования щелкните кнопку Write и подтвердите выполнение операции.

После завершения форматирования выберите в Operating System нужную версию ОС. Если вам на шлюзе не нужен настольный интерфейс Raspberry Pi Desktop (что скорее всего), то выберите Raspberry Pi OS (other), а затем Raspberry Pi OS Lite (32-bit).

Программа Raspberry Pi Imager скачает и запишет на карту SD выбранную ОС.

Если у вас старый Raspberry Pi, то записанная таким образом ОС может не загрузиться. В этом случае нужно скачать архивную версию ОС Raspberry Pi OS Lite (Legacy) со страницы

Полученный файл с именем вида 2022-04-04-raspios-buster-armhf-lite.img.xz можно распаковать с помощью 7zip, а затем открыть все той же программой Raspberry Pi Imager. Далее остается только выбрать в меню Storage карту SD и щелкнуть кнопку Write.

Настройка Raspberry Pi OS Lite

Вставьте подготовленную SD карту в Raspberry Pi. Также подключите к Raspberry Pi внешний монитор через интерфейс HDMI и клавиатуру USB. Подключите к Raspberry Pi штатный блок питания и после его включения наблюдайте процесс загрузки ОС на экране монитора.

После загрузки ОС с карты SD на консоли появится приглашение для ввода логина. Подключитесь с логином «pi» и паролем «raspberry».

Чтобы работать с консолью микроконтроллера удаленно через SSH, запустите программу конфигурирования:

$ sudo raspi-config

Выберите строку Interfacing options, затем строку SSH и включите доступ через SSH, выбрав Yes. Завершите программу конфигурирования и узнайте текущий адрес IP, полученный контроллером от DHCP, командой ip a:

$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether b8:27:eb:65:2c:52 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.19/24 brd 192.168.0.255 scope global dynamic noprefixroute eth0
       valid_lft 85784sec preferred_lft 74984sec
    inet6 fe80::a72e:fcef:b025:f86d/64 scope link
       valid_lft forever preferred_lft forever
3: wlan0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether b8:27:eb:30:79:07 brd ff:ff:ff:ff:ff:ff

В нашем случае это адрес 192.168.0.19. Подключитесь по этому адресу к Raspberry Pi через SSH с помощью таких программ, как PuTTY или MobaXterm с логином pi.

На следующем шаге обновите ОС:

sudo apt-get update 
sudo apt-get upgrade

Теперь снова вернемся к конфигурированию микроконтроллера. Нам нужно разрешить доступ к GPIO и порту последовательной передачи данных Serial. Это необходимо для работы с радиомодулем EBYTE LoRa.

Запустите в командной строке программу raspi-config:

$ sudo raspi-config

Далее выберите строку Interface Options (рис. 11).

Рис. 11. Выбор строки Interface Options
Рис. 11. Выбор строки Interface Options

Появится меню конфигурирования периферийных устройств (рис. 12).

Рис. 12. Меню конфигурирования периферийных устройств
Рис. 12. Меню конфигурирования периферийных устройств

Теперь включите Serial Port, для чего выберите соответствующую строку. 

На вопрос «Would you like a login shell to be accessible over serial?» нужно ответить No, а на последующий вопрос «Would you like the serial port hardware to be enabled?» ответьте Yes

Вы должны увидеть на консоли сообщения:

The serial login shell is disabled
The serial interface is enabled

Перезагрузите ОС и убедитесь, что появилось доступное устройство serial0:

$ ls -lh /dev | grep serial
lrwxrwxrwx 1 root root           5 May  5 13:04 serial0 -> ttyS0
lrwxrwxrwx 1 root root           7 May  5 13:04 serial1 -> ttyAMA0

Так как мы будем работать с радиомодулем EBYTE LoRa из программы, составленной на Python, потребуется установить модули RPi.GPIO и serial:

$ sudo apt-get install python-serial
$ sudo apt-get install python3-rpi.gpio

Для Python версии 3 устанавливаем:

sudo apt install python3-pip
sudo pip3 install pyserial

Чтобы шлюз можно было использовать в качестве сервера, устанавливаем на нем фиксированный статический адрес IP. Для этого редактируем файл /etc/dhcpcd.conf:

$ sudo nano /etc/dhcpcd.conf

В этом файле убираем комментарии со строк, показанных ниже, указываем правильные адреса:

interface eth0
static ip_address=192.168.0.19/24
static routers=192.168.0.1
static domain_name_servers=192.168.0.1 8.8.8.8

Затем сохраняем файл и перезагружаем ОС:

$ sudo reboot

Подключаем к Raspberry Pi радиомодуль LoRa

Для того чтобы собрать узел шлюза, нам потребуется макетная плата небольшого размера, радиомодуль EBYTE LoRa и преобразователь AMS1117 (либо MP2315). На рис. 13 показан собранный узел шлюза.

Рис. 13. Собранный узел шлюза
Рис. 13. Собранный узел шлюза

Контакт порта GPIO с номером 4 нужно подключить к линии + макетной платы (красный провод), а контакт 6 — к общему проводу макетной платы (черный провод).

При этом питание будет подаваться на макетную плату с контроллера Raspberry Pi. Для питания модуля EBYTE LoRa мы понижаем напряжение питания до 3,3 В с помощью стабилизатора на базе AMS1117 или MP2315 (на рис. 13 показан MP2315).

Контакты 8 и 10 порта GPIO Raspberry Pi мы подключаем, соответственно, к контактам RxD м TxD модуля EBYTE LoRa, а контакты 13 и 15 — к контактам M1 и M0 этого модуля. Обозначения контактов есть на самом модуле EBYTE LoRa.

Чтобы посмотреть расположение и обозначение выводов Raspberry Pi, запустите в консоли утилиту pinout, входящую в состав Raspberry Pi OS (рис. 14).

Рис. 14. Просмотр расположения и обозначение выводов Raspberry Pi
Рис. 14. Просмотр расположения и обозначение выводов Raspberry Pi

Более подробную информацию о назначении выводов GPIO можно найти на сайте.

Перед включением питания Raspberry Pi тщательно проверьте все соединения. Отдельно проверьте напряжение на выходе стабилизатора AMS1117 или MP2315. Ошибки могут привести к выходу из строя микроконтроллера и радиомодуля LoRa.

Собираем периферийные узлы

Для периферийных узлов нам потребуются макетные платы стандартного размера. Установите на этих платах адаптеры micro:bit Breakout, радиомодули EBYTE LoRa, OLED-дисплей, погодную станцию BME-280, а также стабилизатор на базе AMS1117 или MP2315 (на рисунке показан AMS1117), необходимый для получения напряжения питания 3,3 В для micro::bit и радиомодуля LoRa E32. Для электропитания узла мы использовали батарею 6F22 напряжением 9 В.

Ниже на рис. 15 мы показали в сборе периферийный узел 1. Узел 2 имеет аналогичную конструкцию.

Рис. 15. Периферийный узел 1 в сборе
Рис. 15. Периферийный узел 1 в сборе

Радиомодуль E32 нужно подключить к контактам платы micro:bit. При этом контакты M0 и M1 подключите к контактам P16 и P12, соответственно. Контакты передачи данных UART, обозначенные на радиомодуле как TX и RX, подключите к контактам P2 и P8, а контакт AUX — к контакту P1 контроллера micro:bit.

Обозначения контактов micro::bit нанесены на адаптер micro:bit Breakout. Подробную информацию о назначении выводов micro::bit смотрите на сайте

Дисплей OLED, как и погодную станцию BME-280, подключите к питанию, а также к шине I2C. При этом контакты SCL и SDA дисплея нужно подключить к контактам P19 и P20 платы micro:bit.

Периферийный узел с номером 3 помимо радиомодуля содержит только измеритель освещенности GY-30 (рис. 16). При этом радиомодуль и измеритель освещенности получают питание от контроллера micro::bit, подключенного к компьютеру через порт USB.

Разумеется, для питания вы можете использовать здесь стабилизатор на базе AMS1117 или MP2315.

Рис. 16. Периферийный узел номер 3
Рис. 16. Периферийный узел номер 3

Подключая GY-30, соедините его контакты GND и VCC к земле GND и питанию 3V3 контроллера micro::bit, соответственно. Вывод SCL подключите к контакту P19, а вывод SDA — к контакту P20 контроллера micro:bit.

Перед включением питания тщательно проверьте все соединения. Перед тем, как подключать выходные контакты стабилизатора AMS1117 или MP2315, убедитесь, что на их выходе напряжение равно 3,3 В. Ни в коем случае не перепутайте полярность.

На этом сделаем паузу. В следующей статье будем программировать радиомодули на узле шлюза, рассмотрим программы для периферийных узлов и создадим сайт на базе Express.

Автор: Александр Фролов.


НЛО прилетело и оставило здесь промокод для читателей нашего блога:— 15% на все тарифы VDS (кроме тарифа Прогрев) — HABRFIRSTVDS.

Tags:
Hubs:
Total votes 4: ↑4 and ↓0+4
Comments14

Articles

Information

Website
firstvds.ru
Registered
Founded
Employees
51–100 employees
Location
Россия
Representative
FirstJohn