Оглавление:

[Серия Docker Pi] Как использовать модуль узла IoT (A) на Raspberry Pi: 18 шагов
[Серия Docker Pi] Как использовать модуль узла IoT (A) на Raspberry Pi: 18 шагов

Видео: [Серия Docker Pi] Как использовать модуль узла IoT (A) на Raspberry Pi: 18 шагов

Видео: [Серия Docker Pi] Как использовать модуль узла IoT (A) на Raspberry Pi: 18 шагов
Видео: как убрать (p) с брелка Starline а93/что делать если машина не заводится от брелка? 2024, Июль
Anonim
[Серия Docker Pi] Как использовать модуль узла IoT (A) на Raspberry Pi
[Серия Docker Pi] Как использовать модуль узла IoT (A) на Raspberry Pi

Что такое модуль IoT Node (A)?

IoT Node (A) - это один из модулей серии Docker Pi.

Узел IOT (A) = GPS / BDS + GSM + Lora.

I2C напрямую управляет Lora, отправляет и принимает данные, управляет модулем GSM / GPS / BDS через SC16IS752, материнская плата нуждается только в поддержке I2C.

Поддержка Raspberry Pi и других подобных продуктов.

Запасы

1x Raspberry Pi 2B / 3B / 3B + / 4B / 3A + / ноль / ноль W

1x продукт серии Docker Pi: модуль IoT Node (A)

1x 16 ГБ TF карта класса 10

1x источник питания 5 В / 2,5 А (5 В при 3 А для Pi 4B)

Шаг 1: особенности

Особенности
Особенности
Особенности
Особенности
Особенности
Особенности
  • Серия Docker Pi
  • Программируемый
  • Прямое управление (без программирования)
  • Расширьте контакты GPIO
  • Поддержка GPS / BDS
  • Поддержка GSM
  • Лора Поддержка
  • Можно складывать с другой доской стека
  • Независимо от оборудования материнской платы (требуется поддержка I2C)

Шаг 2: Шаг 1. Узнайте о плате IoT (A)

Шаг 1. Узнайте о плате IoT (A)
Шаг 1. Узнайте о плате IoT (A)
Шаг 1. Узнайте о плате IoT (A)
Шаг 1. Узнайте о плате IoT (A)
Шаг 1. Узнайте о плате IoT (A)
Шаг 1. Узнайте о плате IoT (A)

IoT Node (A) - это один из модулей серии Docker Pi.

Узел IOT (A) = GPS / BDS + GSM + Lora.

I2C напрямую управляет Lora, отправляет и принимает данные, управляет модулем GSM / GPS / BDS через SC16IS752, материнская плата нуждается только в поддержке I2C. Поддержка Raspberry Pi и других подобных продуктов.

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

а также вы можете определить местоположение вашего устройства с помощью встроенного модуля GPS.

Вставьте SIM-карту, она станет передающей станцией через SMS-сообщение.

Шаг 3: Шаг 2: Как его собрать

Шаг 2: как его собрать
Шаг 2: как его собрать
Шаг 2: как его собрать
Шаг 2: как его собрать

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

Шаг 4: Шаг 3: Подключите антенну

Шаг 3: Подключите антенну
Шаг 3: Подключите антенну
Шаг 3: Подключите антенну
Шаг 3: Подключите антенну
Шаг 3: Подключите антенну
Шаг 3: Подключите антенну

Для этого модуля IoT (A) есть 3 антенны, одна из которых предназначена для модуля loar, это антенна типа SMA, и одна из них подходит для вас, GPS, это квадратная антенна с портом IPX. и последний - для модуля SIM (A9G). Это крошечная антенна с портом IPX. подключите антенну и прикрепите шляпу к вашему raspberry pi.

Установка платы Iot Node (A) на Raspberry Pi

Подключите GPS antana и Lora antana к порту IPX.

  • E1 : GPS-ANTANA-IPX
  • E3 : LoRa-ANTANA-IPX

Накручивает антану GPRS на порт SMA.

Шаг 5: Шаг 4: конфигурация среды ОС и программного обеспечения

На этом этапе вы должны сделать следующее:

1. Загрузите последний файл изображения с сайта: www.raspberrypi.org/downloads

2. Разархивируйте его.

3. Прошить TF-карту последней версией образа с помощью инструмента etcher.

4. Измените файл /boot/config.txt и добавьте этот абзац.

dtoverlay = sc16is752-i2c

5. Заменяет файл /boot/overlay/sc16is752-i2c.dtbo на этот файл:

wiki.52pi.com/index.php/File:Sc16is752-i2c…

PS: не забудьте разархивировать его, поместить в папку / boot / overlay / и заменить старый.

6. Перезагрузите Raspberry Pi.

Шаг 6: Шаг 5: Настройка I2C (Raspberry Pi)

Шаг 5: Настройка I2C (Raspberry Pi)
Шаг 5: Настройка I2C (Raspberry Pi)
Шаг 5: Настройка I2C (Raspberry Pi)
Шаг 5: Настройка I2C (Raspberry Pi)
Шаг 5: Настройка I2C (Raspberry Pi)
Шаг 5: Настройка I2C (Raspberry Pi)
Шаг 5: Настройка I2C (Raspberry Pi)
Шаг 5: Настройка I2C (Raspberry Pi)

Запустите sudo raspi-config и следуйте инструкциям по установке поддержки i2c для ядра ARM и ядра Linux. Перейдите к параметрам интерфейса.

Шаг 7: Шаг 6: Знать информацию о реестре

Раздел GPRS

Низкое энергопотребление, ток в режиме ожидания <1 мА2.

Поддержка четырех частотных диапазонов GSM / GPRS, включая 850, 900, 1800, 1900 МГц

GPRS класс 10

Поддержка службы передачи данных GPRS, максимальная скорость передачи данных, загрузка 85,6 кбит / с, загрузка 42,8 кбит / с

Поддержка стандартных GSM07.07, 07.05 AT-команд и доступ к последовательному порту через преобразование интерфейса I2C

Команды AT поддерживают стандартные командные порты AT и TCP / IP

Секция GPS Поддержка совместного позиционирования BDS / GPS

Поддержка A-GPS, A-BDS

Поддержка стандартной SIM-карты

Раздел LORA Дальность передачи: 500 метров (параметры RF: 0x50 @ China City)

Поддержка методов модуляции FSK, GFSK, MSK, GMSK, LoRaTM и OOK

Сверхвысокая чувствительность приемника до -141 дБмВт

Поддержка обнаружения преамбулы

Пакетный движок с CRC, до 256 байт

Индикатор трансивера LORA

Easy TX / RX от Docker Pi

Шаг 8:

Модуль A9G

Модуль A9G предлагает два последовательных порта.

Для связи используйте мост I2C UART.

Имя модуля последовательного порта

  • / dev / ttySC0 GSM
  • / dev / ttySC1 GPS / BDS

Зарегистрировать карту

  • Адрес регистра Значение функции
  • 0x01 LORA_TX1 Lora TX Buffer 1 - Пользовательские данные
  • 0x02 LORA_TX2 Lora TX Buffer 2 - Пользовательские данные
  • 0x03 LORA_TX3 Lora TX Buffer 3 - Пользовательские данные
  • 0x04 LORA_TX4 Lora TX Buffer 4 - Пользовательские данные
  • 0x05 LORA_TX5 Lora TX Buffer 5 - Пользовательские данные
  • 0x06 LORA_TX6 Lora TX Buffer 6 - Пользовательские данные
  • 0x07 LORA_TX7 Lora TX Buffer 7 - Пользовательские данные
  • 0x08 LORA_TX8 Lora TX Buffer 8 - Пользовательские данные
  • 0x09 LORA_TX9 Lora TX Buffer 9 - Пользовательские данные
  • 0x0a LORA_TX10 Lora TX Buffer 10 - Пользовательские данные
  • 0x0b LORA_TX11 Lora TX Buffer 11 - Пользовательские данные
  • 0x0c LORA_TX12 Lora TX Buffer 12 - Пользовательские данные
  • 0x0d LORA_TX13 Lora TX Buffer 13 - Пользовательские данные
  • 0x0e LORA_TX14 Lora TX Buffer 14 - Пользовательские данные
  • 0x0f LORA_TX15 Lora TX Buffer 15 - Пользовательские данные
  • 0x10 LORA_TX16 Lora TX Buffer 16 - Пользовательские данные
  • 0x11 LORA_RX1 Lora RX Buffer 1 - Пользовательские данные
  • 0x12 LORA_RX2 Lora RX Buffer 2 - Пользовательские данные
  • 0x13 LORA_RX3 Lora RX Buffer 3 - Пользовательские данные
  • 0x14 LORA_RX4 Lora RX Buffer 4 - Пользовательские данные
  • 0x15 LORA_RX5 Lora RX Buffer 5 - Пользовательские данные
  • 0x16 LORA_RX6 Lora RX Buffer 6 - Пользовательские данные
  • 0x17 LORA_RX7 Lora RX Buffer 7 - Пользовательские данные
  • 0x18 LORA_RX8 Lora RX Buffer 8 - Пользовательские данные
  • 0x19 LORA_RX9 Lora RX Buffer 9 - Пользовательские данные
  • 0x1a LORA_RX10 Lora RX Buffer 10 - Пользовательские данные
  • 0x1b LORA_RX11 Lora RX Buffer 11 - Пользовательские данные
  • 0x1c LORA_RX12 Lora RX Buffer 12 - Пользовательские данные
  • 0x1d LORA_RX13 Lora RX Buffer 13 - Пользовательские данные
  • 0x1e LORA_RX14 Lora RX Buffer 14 - Пользовательские данные
  • 0x1f LORA_RX15 Lora RX Buffer 15 - Пользовательские данные
  • 0x20 LORA_RX16 Lora RX Buffer 16 - Пользовательские данные
  • 0x01 - 0x10 Только запись.
  • 0x11 - 0x20 Только чтение.

Шаг 9: Инструкции:

Инструкции
Инструкции

L_SET (только запись)

  • Напишите 1, чтобы установить параметры из 0x22 в модуль LORA.
  • Написать 0 не действует

G_RESET (только запись)

  • Запишите 1 для сброса модуля A9G
  • Написать 0 не действует

L_RXNE (чтение и запись)

  • Запишите 1 причину ошибки
  • Напишите 0, чтобы очистить
  • Чтение 1 означает, что данные были получены, пожалуйста, получите данные из регистра 0x11 - 0x20.
  • Чтение 0 означает, что сейчас данные недоступны.

L_SET (только запись)

  • Запишите 1 для отправки данных, пожалуйста, заполните данные в регистре 0x01 - 0x10 перед отправкой.
  • Написать 0 не действует

Шаг 10: Как использовать модуль GPS с Gpsd (Raspberry Pi)

Как использовать модуль GPS с Gpsd (Raspberry Pi)
Как использовать модуль GPS с Gpsd (Raspberry Pi)
Как использовать модуль GPS с Gpsd (Raspberry Pi)
Как использовать модуль GPS с Gpsd (Raspberry Pi)
Как использовать модуль GPS с Gpsd (Raspberry Pi)
Как использовать модуль GPS с Gpsd (Raspberry Pi)

Как использовать модуль GPS с gpsd (Raspberry Pi)

Сначала замените /boot/overlays/sc16is752-i2c.dtbo и убедитесь, что I2C работает правильно.

  • Заменить sc16is752-i2c.dtbo
  • Настройка I2C
  • Установите инструменты gpsd.

Откройте терминал и введите эту команду:

sudo apt установить gpsd gpsd-клиенты

Измените файл / etc / default / gpsd и добавьте следующие параметры:

  • УСТРОЙСТВА = "/ dev / ttySC1"
  • GPSD_OPTIONS = "- F /var/run/gpsd.sock"

Введите команду i2cset -y 1 0x16 0x23 0x40 для сброса модуля GPRS.

Скрипт Python для открытого GPS:

import serialimport os import time # Перезапустить службу gpsd. os.system ("sudo systemctl restart gpsd.socket") # Откройте последовательный порт ser = serial. Serial ('/ dev / ttySC0', 115200) i = 0, если ser.isOpen == False: ser.open () попробуйте: print ("Включить GPS…") while True: ser.write (str.encode ("AT + GPS = 1 / r")) size = ser.inWaiting () if size! = 0: ticks = time.time () response = ser.read (size) gps = str (response, encoding = "utf-8") if (gps.find ("OK")! = -1): os.system ("sudo cgps -s") exit () else: i = i + 1 print ("Ожидание включения GPS, если время слишком велико, проверьте на открытом воздухе:" + str (i)) ser.flushInput () time.sleep (1) except KeyboardInterrupt: ser.flushInput () ser.close ()

Сохраните его и выполните:

python3 GPS.py

Шаг 11: Как использовать модуль GPS с C (Raspberry Pi)

Установите инструменты gpsd

sudo apt-get install libgps-dev

Создайте исходный код и назовите его "gps.c"

#include #include #include

#включают

#включают

int main ()

{int rc; struct timeval tv; struct gps_data_t gps_data; if ((rc = gps_open ("localhost", "2947", & gps_data)) == -1) {printf ("код:% d, причина:% s / n", rc, gps_errstr (rc)); вернуть EXIT_FAILURE; } gps_stream (& gps_data, WATCH_ENABLE | WATCH_JSON, NULL);

в то время как (1)

{/ * подождите 2 секунды, чтобы получить данные * / if (gps_waiting (& gps_data, 2000000)) {/ * прочитать данные * / if ((rc = gps_read (& gps_data)) == -1) {printf ("произошла ошибка чтения данные GPS. код:% d, причина:% s / n ", rc, gps_errstr (rc)); } else {/ * Отображение данных с GPS-приемника. * / if ((gps_data.status == STATUS_FIX) && (gps_data.fix.mode == MODE_2D || gps_data.fix.mode == MODE_3D) &&! isnan (gps_data.fix.latitude) &&! isnan (gps_data.fix.longitude)) {/ * gettimeofday (& tv, NULL); РЕДАКТИРОВАТЬ: tv.tv_sec на самом деле не метка времени! * /

printf ("широта:% f, долгота:% f, скорость:% f, отметка времени:% lf / n", gps_data.fix.latitude, gps_data.fix.longitude, gps_data.fix.speed, gps_data.fix.time);

// РЕДАКТИРОВАТЬ: tv.tv_sec заменен на gps_data.fix.time} else {printf ("данные GPS недоступны / n"); }}} сна (3); } / * Когда вы закончите… * / gps_stream (& gps_data, WATCH_DISABLE, NULL); gps_close (& gps_data); вернуть EXIT_SUCCESS; }

Шаг 12: Скомпилируйте

Скомпилируйте это
Скомпилируйте это

Скомпилировать!

gcc gps.c -lm -lgps -o gps

Exec It!

./GPS

Шаг 13: Как использовать модуль GPS с Python (Raspberry Pi)

Как использовать модуль GPS с Python (Raspberry Pi)
Как использовать модуль GPS с Python (Raspberry Pi)

Следующий код рекомендуется выполнить с использованием Python 3 и установить библиотеку gpsd-py3 и GPS 2D / 3D Fix:

импортировать gpsd

# Подключаемся к локальному gpsd

gpsd.connect ()

# Получить положение gps

пакет = gpsd.get_current ()

# См. Встроенную документацию по GpsResponse для получения доступных данных

печать (packet.position ())

Шаг 14: Как использовать GSM-модуль с PPPd (Raspberry Pi)

Как использовать GSM-модуль с PPPd (Raspberry Pi)
Как использовать GSM-модуль с PPPd (Raspberry Pi)
Как использовать GSM-модуль с PPPd (Raspberry Pi)
Как использовать GSM-модуль с PPPd (Raspberry Pi)
Как использовать GSM-модуль с PPPd (Raspberry Pi)
Как использовать GSM-модуль с PPPd (Raspberry Pi)

A) Сначала замените /boot/overlays/sc16is752-i2c.dtbo и убедитесь, что I2C работает правильно.

  • Заменить sc16is752-i2c.dtbo
  • Настройка I2C

Б) Введите команду i2cset -y 1 0x16 0x23 0x40 для сброса модуля GPRS.

После выполнения команды нужно немного подождать, примерно 10 секунд

Вы также можете использовать следующий метод для сброса.

C) Введите команду

sudo apt install ppp

для установки инструментов ppp.

D) Скопируйте / etc / ppp / peers / provider в / etc / ppp / peers / gprs

E) Измените / etc / ppp / peers / gprs

  • Строка 10: обратитесь к поставщику услуг для пользователя (пример: cmnet).
  • Строка 15: Проконсультируйтесь с вашим поставщиком услуг по поводу apn (пример: cmnet).
  • Строка 18 - Строка 24: Рекомендуемая настройка

F) Измените / etc / chatscripts / gprs (измените строку 34 на строку 35, номер дозвона НЕ может быть * 99 #)

G) Введите команду sudo pppd call gprs для дозвона.

H) Проверьте конфигурацию ppp у своего интернет-провайдера.

I) Введите команду ping -I ppp0 8.8.8.8 проверьте свою сеть (если Интернет доступен и таблица маршрутов верна)

J) Поддерживайте хороший сигнал GSM, иначе произойдет следующее.

Шаг 15: Как диагностировать мой GSM-модуль (Raspberry Pi)

Как диагностировать мой GSM-модуль (Raspberry Pi)
Как диагностировать мой GSM-модуль (Raspberry Pi)
Как диагностировать мой GSM-модуль (Raspberry Pi)
Как диагностировать мой GSM-модуль (Raspberry Pi)
Как диагностировать мой модуль GSM (Raspberry Pi)
Как диагностировать мой модуль GSM (Raspberry Pi)
Как диагностировать мой модуль GSM (Raspberry Pi)
Как диагностировать мой модуль GSM (Raspberry Pi)

Следующий код рекомендуется выполнить с использованием Python 3 и установить библиотеку smbus:

импорт серийного номера, время импорта, импорт, smbus, оператор импорта, импорт ОС

print («Ожидание инициализации…»)

автобус = smbus. SMBus (1)

bus.write_byte_data (0x16, 0x23, 0x40)

ser = serial. Serial ('/ dev / ttySC0', 115200)

если ser.isOpen == False:

ser.open () try: print ('-' * 60) print («Инициализация модуля A9G GPRS.») print («GSM соединение…») time.sleep (3) i = 0 while True: ser.write (str.encode ("AT + CCID / r")) size = ser.inWaiting () if size! = 0: ticks = time.time () response = ser.read (size) ccid = str (response, encoding = "utf -8 ") print (ccid) else: i = i + 1 ser.flushInput () time.sleep (1) за исключением KeyboardInterrupt: ser.close ()

Выполните тестовый сценарий, на основе результатов реализации мы можем диагностировать модуль GSM. Например, следующий возврат, ошибка CME ERROR 53, сообщает нам, что питание не хорошее. Код CME = ошибки, связанные с оборудованием GSM

Конечно, в скрипте есть функция сброса. Если вы можете правильно отобразить CCID, сброс завершен.

Шаг 16: Как использовать Lora TX и RX с C (Raspberry Pi)

Следующий код рекомендуется выполнить с использованием Python 3 и установить библиотеку smbus.

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

Как отправить: после заполнения данных в регистре 0x01 - 0x10 установите бит L_TX, чтобы начать отправку данных.

Импорт времени, импорт smbus, импорт, ос, импорт, sys

автобус = smbus. SMBus (1)

пытаться:

data_list = [170, 85, 165, 90] # записываем данные в регистр, а затем данные будут отправлены. для индекса в диапазоне (1, len (data_list) + 1): bus.write_byte_data (0x16, index, data_list [index - 1]) print ("LORA отправляет данные в% d регистр% d данные"% (index, data_list [индекс - 1])) bus.write_byte_data (0x16, 0x23, 0x01) кроме KeyboardInterrupt: sys.exit ()

Как отправить получение: проверьте бит L_RXNE, если он установлен, поступили новые данные, этот флаг необходимо сбросить вручную

Импорт времени, импорт smbus, импорт, ос, импорт, sys

автобус = smbus. SMBus (1)

recv_data =

пытаться:

if bus.read_byte_data (0x16, 0x23) & 0x02: # вручную очистить L_RXNE bus.write_byte_data (0x16, 0x23, 0x00) register_list = [0x11, 0x12, 0x13, 0x14] # прочитать данные для индекса в диапазоне (0x11, len (register_list) + 0x11): recv_data.append (bus.read_byte_data (0x16, register_list [индекс - 0x11]))

print ("Полученные данные:")

print (recv_data) else: print ("Данные еще не получены ~"), кроме KeyboardInterrupt: sys.exit ()

Шаг 17: Специальное описание пропускной способности I2C

Предел скорости I2C составляет 400 кГц из-за протокола I2C, поэтому эффективная полоса пропускания одного устройства ниже 320 кбит / с, эффективная полоса пропускания нескольких устройств ниже 160 кбит / с. Предел скорости моста I2C UART составляет 115200 бит / с. работают одновременно, пропускная способность I2C недостаточна, потому что 115,2 кбит / с * 2 = 230,4 кбит / с, поэтому некоторые данные будут переполняться. Снижение скорости передачи данных GPS и GSM может уменьшить нехватку полосы пропускания. дополнительная полоса пропускания I2C. Обычно скорость передачи данных по сети низкая, поэтому полоса пропускания GSM не заполнена, поэтому проблема переполнения отсутствует.

Шаг 18: Готово

Надеюсь, вам понравится, и вы справитесь.

Вы можете найти это здесь:

Амазонка

Ночник : https://www.amazon.com/GeeekPi-Night-Light-WS2812-Raspberry/dp/B07LCG2S5S 4-канальная плата реле: https://www.amazon.co.uk/dp/B07MV1TJGR?ref=myi_title_dp : Https: //www.amazon.co.uk/dp/B07TD595VS? Ref = myi_title_dp IoT Node (A) : https://www.amazon.co.uk/dp/B07TY15M1C Sensor HUB : https:// www. amazon.co.uk/dp/B07TZD8B61 ледяная башня :

Рекомендуемые: