Оглавление:
- Запасы
- Шаг 1: особенности
- Шаг 2: Шаг 1. Узнайте о плате IoT (A)
- Шаг 3: Шаг 2: Как его собрать
- Шаг 4: Шаг 3: Подключите антенну
- Шаг 5: Шаг 4: конфигурация среды ОС и программного обеспечения
- Шаг 6: Шаг 5: Настройка I2C (Raspberry Pi)
- Шаг 7: Шаг 6: Знать информацию о реестре
- Шаг 8:
- Шаг 9: Инструкции:
- Шаг 10: Как использовать модуль GPS с Gpsd (Raspberry Pi)
- Шаг 11: Как использовать модуль GPS с C (Raspberry Pi)
- Шаг 12: Скомпилируйте
- Шаг 13: Как использовать модуль GPS с Python (Raspberry Pi)
- Шаг 14: Как использовать GSM-модуль с PPPd (Raspberry Pi)
- Шаг 15: Как диагностировать мой GSM-модуль (Raspberry Pi)
- Шаг 16: Как использовать Lora TX и RX с C (Raspberry Pi)
- Шаг 17: Специальное описание пропускной способности I2C
- Шаг 18: Готово
Видео: [Серия Docker Pi] Как использовать модуль узла IoT (A) на Raspberry Pi: 18 шагов
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:51
Что такое модуль 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)
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: Как его собрать
Его очень легко собрать из-за его «шляпного» дизайна, вы просто надеваете его на свой raspberry pi и подключаете через контакты GPIO, это как «шляпа» на raspberry pi, так что вам не нужно добавлять массу провод.
Шаг 4: Шаг 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)
Запустите 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)
Сначала замените /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)
Следующий код рекомендуется выполнить с использованием Python 3 и установить библиотеку gpsd-py3 и GPS 2D / 3D Fix:
импортировать gpsd
# Подключаемся к локальному gpsd
gpsd.connect ()
# Получить положение gps
пакет = gpsd.get_current ()
# См. Встроенную документацию по GpsResponse для получения доступных данных
печать (packet.position ())
Шаг 14: Как использовать 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)
Следующий код рекомендуется выполнить с использованием 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 ледяная башня :
Рекомендуемые:
Как использовать модуль RFID-RC522 с Arduino: 5 шагов
Как использовать модуль RFID-RC522 с Arduino: в этом руководстве я расскажу об основополагающем принципе работы модуля RFID вместе с его тегами и микросхемами. Я также приведу краткий пример проекта, который я сделал с использованием этого модуля RFID со светодиодом RGB. Как обычно с моими Ins
Как использовать модуль часов реального времени (DS3231): 5 шагов
Как использовать модуль часов реального времени (DS3231): DS3231 - это недорогие, чрезвычайно точные часы реального времени (RTC) I2C со встроенным кварцевым генератором с температурной компенсацией (TCXO) и кварцевым резонатором. Устройство оснащено аккумуляторным входом и поддерживает точное хронометраж при включении основного питания
Как использовать ИК-датчик и модуль зуммера - Учебное пособие по Visuino: 6 шагов
Как использовать ИК-датчик и модуль зуммера - Учебное пособие по Visuino: в этом учебном пособии мы узнаем, как использовать ИК-датчик и модуль зуммера, чтобы издавать звук каждый раз, когда ИК-датчик обнаруживает движение. Посмотреть демонстрационное видео
Как использовать кнопочный модуль с SkiiiD: 9 шагов
Как использовать кнопочный модуль с SkiiiD: этот проект представляет собой инструкцию «как использовать Buzzer HW-508 (применимо для KY-006) с Arduino через skiiiD Перед запуском ниже приведено базовое руководство по использованию skiiiD https: // www.instructables.com/id/Getting-Started-With-SkiiiD-Editor
Как использовать терминал Mac и как использовать ключевые функции: 4 шага
Как использовать терминал Mac и как использовать основные функции: мы покажем вам, как открыть терминал MAC. Мы также покажем вам несколько функций Терминала, такие как ifconfig, изменение каталогов, доступ к файлам и arp. Ifconfig позволит вам проверить ваш IP-адрес и ваш MAC-адрес