Съдържание:

[Docker Pi Series] Как да използвате модул IoT Node (A) на Raspberry Pi: 18 стъпки
[Docker Pi Series] Как да използвате модул IoT Node (A) на Raspberry Pi: 18 стъпки

Видео: [Docker Pi Series] Как да използвате модул IoT Node (A) на Raspberry Pi: 18 стъпки

Видео: [Docker Pi Series] Как да използвате модул IoT Node (A) на Raspberry Pi: 18 стъпки
Видео: Мир! Дружба! Жвачка! — 1 | Первая серия | PREMIER 2024, Ноември
Anonim
[Docker Pi Series] Как да използвам модул IoT Node (A) на Raspberry Pi
[Docker Pi Series] Как да използвам модул IoT Node (A) на Raspberry Pi

Какво е модул IoT Node (A)?

IoT възел (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 16GB карта клас 10 TF

1x 5V/2.5A захранване (5V@3A за Pi 4B)

Стъпка 1: Функции

Характеристики
Характеристики
Характеристики
Характеристики
Характеристики
Характеристики
  • Docker Pi Series
  • Програмируеми
  • Управление директно (без програмиране)
  • Разширете GPIO щифтовете
  • Поддръжка на GPS/BDS
  • Поддръжка на GSM
  • Поддръжка на Лора
  • Може да се подрежда с друга стекова дъска
  • Независимо от хардуера на дънната платка (изисква поддръжка на I2C)

Стъпка 2: Стъпка 1: Знайте за IoT (A) Board

Стъпка 1: Научете за IoT (A) Board
Стъпка 1: Научете за IoT (A) Board
Стъпка 1: Научете за IoT (A) Board
Стъпка 1: Научете за IoT (A) Board
Стъпка 1: Научете за IoT (A) Board
Стъпка 1: Научете за IoT (A) Board

IoT възел (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: Как да го сглобите

Сглобяването му е много лесно поради дизайна му „HAT“, просто го поставяте на вашето малиново пи и го свързвате чрез GPIO щифтове, той е като „шапка“на малинов пи, така че не е нужно да добавяте масата тел.

Стъпка 4: Стъпка 3: Свържете антената

Стъпка 3: Свържете антената
Стъпка 3: Свържете антената
Стъпка 3: Свържете антената
Стъпка 3: Свържете антената
Стъпка 3: Свържете антената
Стъпка 3: Свържете антената

Има 3 части антена за този IoT (A) модул, едната от тях е за модула loar, това е антена тип SMA и една от тях е добра за вас GPS, това е квадратна антена с IPX порт. и последният е за SIM модула (A9G), Това е малка антена, която има IPX порт. свържете антената и монтирайте шапката към вашето малиново пи.

Как се сглобява Монтирайте платката 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 карта с най -новото изображение чрез инструмент за гравиране

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 раздел

Ниска консумация на енергия, ток на заспиване в режим на готовност <1mA2.

Поддържа GSM/GPRS четири честотни ленти, включително 850, 900, 1800, 1900MHZ

GPRS клас 10

Поддръжка на услуга за GPRS данни, максимална скорост на предаване на данни, изтегляне на 85.6Kbps, качване на 42.8Kbps

Поддържа стандартни команди 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 dBm

Поддържа откриване на преамбюла

Пакетна машина с CRC, до 256 байта

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

Лесен TX/RX от Docker Pi

Стъпка 8:

Модул A9G

Модулът A9G предлага два серийни порта.

Използвайте I2C UART мост за комуникация.

Име на модул на сериен порт

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

Регистрирайте картата

  • Регистрирайте Адрес Функция Стойност
  • 0x01 LORA_TX1 Lora TX буфер 1 - Потребителски данни
  • 0x02 LORA_TX2 Lora TX буфер 2 - Потребителски данни
  • 0x03 LORA_TX3 Lora TX Buffer 3 - Потребителски данни
  • 0x04 LORA_TX4 Lora TX буфер 4 - Потребителски данни
  • 0x05 LORA_TX5 Lora TX буфер 5 - потребителски данни
  • 0x06 LORA_TX6 Lora TX буфер 6 - Потребителски данни
  • 0x07 LORA_TX7 Lora TX буфер 7 - Потребителски данни
  • 0x08 LORA_TX8 Lora TX буфер 8 - потребителски данни
  • 0x09 LORA_TX9 Lora TX буфер 9 - Потребителски данни
  • 0x0a LORA_TX10 Lora TX буфер 10 - потребителски данни
  • 0x0b LORA_TX11 Lora TX буфер 11 - Потребителски данни
  • 0x0c LORA_TX12 Lora TX буфер 12 - потребителски данни
  • 0x0d LORA_TX13 Lora TX буфер 13 - Потребителски данни
  • 0x0e LORA_TX14 Lora TX буфер 14 - потребителски данни
  • 0x0f LORA_TX15 Lora TX буфер 15 - потребителски данни
  • 0x10 LORA_TX16 Lora TX буфер 16 - Потребителски данни
  • 0x11 LORA_RX1 Lora RX буфер 1 - Потребителски данни
  • 0x12 LORA_RX2 Lora RX буфер 2 - потребителски данни
  • 0x13 LORA_RX3 Lora RX буфер 3 - Потребителски данни
  • 0x14 LORA_RX4 Lora RX буфер 4 - потребителски данни
  • 0x15 LORA_RX5 Lora RX буфер 5 - Потребителски данни
  • 0x16 LORA_RX6 Lora RX буфер 6 - потребителски данни
  • 0x17 LORA_RX7 Lora RX буфер 7 - потребителски данни
  • 0x18 LORA_RX8 Lora RX буфер 8 - потребителски данни
  • 0x19 LORA_RX9 Lora RX буфер 9 - Потребителски данни
  • 0x1a LORA_RX10 Lora RX буфер 10 - потребителски данни
  • 0x1b LORA_RX11 Lora RX буфер 11 - потребителски данни
  • 0x1c LORA_RX12 Lora RX буфер 12 - потребителски данни
  • 0x1d LORA_RX13 Lora RX буфер 13 - потребителски данни
  • 0x1e LORA_RX14 Lora RX буфер 14 - Потребителски данни
  • 0x1f LORA_RX15 Lora RX буфер 15 - потребителски данни
  • 0x20 LORA_RX16 Lora RX буфер 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 време за импортиране # Рестартирайте услугата gpsd. os.system ("sudo systemctl restart gpsd.socket") # Отваряне на сериен порт ser = serial. Serial ('/dev/ttySC0', 115200) i = 0 if ser.isOpen == False: ser.open () опитайте: print ("Включете GPS …"), докато 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) с изключение на KeyboardInterrupt: ser.flushInput () ser.close ()

Запазете го и го изпълнете:

python3 GPS.py

Стъпка 11: Как да използвате GPS модул с C (Raspberry Pi)

Инсталирайте gpsd инструменти

sudo apt-get install libgps-dev

Създайте изходен код и го наречете „gps.c“

#включи #включи #включи

#включва

#включва

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

Изпълнете го!

./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

B) Въведете команда i2cset -y 1 0x16 0x23 0x40, за да нулирате GPRS модула.

След като изпълните командата, трябва да изчакате малко, около 10 секунди

Можете също да използвате следния метод за нулиране.

В) Въведете команда

sudo apt инсталирате ppp

да инсталирате ppp инструменти.

D) Копирайте/etc/ppp/peers/provider в/etc/ppp/peers/gprs

Д) Променете/etc/ppp/peers/gprs

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

F) Промяна на/etc/chatscripts/gprs (Промяна на ред 34 на ред 35, номер на диалогов прозорец може да не е *99#)

G) Въведете командата sudo pppd call gprs за набиране.

З) Проверете вашата 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 оператор за внос импорт os

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 да започне да изпраща данни.

import timeimport smbus import os import 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, Ако е зададено, пристигат нови данни, този флаг трябва да бъде изчистен ръчно

import timeimport smbus import os import 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 е 400kHz, поради протокола I2C, така че ефективната честотна лента на едно устройство е по -ниска от 320kbps, ефективната честотна лента на много устройства е по -ниска от 160kbps. Границата на скоростта на I2C UART Bridge е 115200bps. Когато GPS и GSM работа в същото време, I2C честотната лента е недостатъчна, тъй като 115.2kbps * 2 = 230.4kbps, така че някои данни ще бъдат препълнени. Намаляването на скоростта на обмен на GPS и GSM комуникацията може да подобри недостига на комуникационна честотна лента. допълнителна честотна лента на I2C. Обикновено скоростта на мрежовите данни е бавна, така че честотната лента на GSM не е пълна, така че няма проблем с препълването.

Стъпка 18: Готово

Надявам се да ви хареса и да успеете.

можете да го намерите тук:

Amazon

Нощна светлина: https://www.amazon.com/GeeekPi-Night-Light-WS2812-Raspberry/dp/B07LCG2S5S 4-канална релейна платка: https://www.amazon.co.uk/dp/B07MV1TJGR?ref=myi_title_dp Power Board : Https: //www.amazon.co.uk/dp/B07TD595VS? Ref = myi_title_dp IoT възел (A): https://www.amazon.co.uk/dp/B07TY15M1C Сензор HUB: https:// www. amazon.co.uk/dp/B07TZD8B61 ледена кула:

Препоръчано: