Índice:

[Série Docker Pi] Como usar o módulo IoT Node (A) no Raspberry Pi: 18 etapas
[Série Docker Pi] Como usar o módulo IoT Node (A) no Raspberry Pi: 18 etapas

Vídeo: [Série Docker Pi] Como usar o módulo IoT Node (A) no Raspberry Pi: 18 etapas

Vídeo: [Série Docker Pi] Como usar o módulo IoT Node (A) no Raspberry Pi: 18 etapas
Vídeo: Video 13 - Crear página web IOT con ESP32 VPS Cloud EMQX Broker configurando el Broker EMQ X 2024, Julho
Anonim
[Docker Pi Series] Como usar o módulo IoT Node (A) no Raspberry Pi
[Docker Pi Series] Como usar o módulo IoT Node (A) no Raspberry Pi

O que é o módulo IoT Node (A)?

O Nó IoT (A) é um dos módulos da série Docker Pi.

Nó IOT (A) = GPS / BDS + GSM + Lora.

I2C controla diretamente o Lora, envia e recebe dados, controla o módulo GSM / GPS / BDS através do SC16IS752, a placa-mãe só precisa de suporte I2C.

Suporte Raspberry Pi e outros produtos semelhantes.

Suprimentos

1x Raspberry Pi 2B / 3B / 3B + / 4B / 3A + / Zero / Zero W

1x produto da série Docker Pi: módulo IoT Node (A)

1x cartão de 16GB classe 10 TF

1x fonte de alimentação 5V / 2,5A (5V @ 3A para Pi 4B)

Etapa 1: Recursos

Características
Características
Características
Características
Características
Características
  • Docker Pi Series
  • Programável
  • Controle diretamente (sem programação)
  • Estenda os pinos GPIO
  • Suporte GPS / BDS
  • Suporte GSM
  • Suporte Lora
  • Pode empilhar com outra placa de empilhamento
  • Independente do hardware da placa-mãe (requer suporte I2C)

Etapa 2: Etapa 1: saber sobre a placa IoT (A)

Etapa 1: saber sobre a placa IoT (A)
Etapa 1: saber sobre a placa IoT (A)
Etapa 1: saber sobre a placa IoT (A)
Etapa 1: saber sobre a placa IoT (A)
Etapa 1: saber sobre a placa IoT (A)
Etapa 1: saber sobre a placa IoT (A)

O Nó IoT (A) é um dos módulos da série Docker Pi.

Nó IOT (A) = GPS / BDS + GSM + Lora.

I2C controla diretamente Lora, envia e recebe dados, controla o módulo GSM / GPS / BDS através de SC16IS752, a placa-mãe só precisa de suporte I2C. Suporte Raspberry Pi e outros produtos similares.

Portanto, você pode fazer um dispositivo de comunicação de médio alcance usando dois deles.

e também pode localizar a localização do seu dispositivo usando o módulo GPS a bordo.

Insira um cartão SIM, ele se tornará uma estação transmissora via mensagem SMS.

Etapa 3: Etapa 2: como montá-lo

Etapa 2: como montá-lo
Etapa 2: como montá-lo
Etapa 2: como montá-lo
Etapa 2: como montá-lo

É muito fácil de montar devido ao seu desenho "CHAPÉU", basta colocá-lo no seu pi de framboesa e conectá-lo através de pinos GPIO, é como um "chapéu" no pi de framboesa, para que você não tenha que adicionar a massa arame.

Etapa 4: Etapa 3: conectar a antena

Passo 3: Conecte a antena
Passo 3: Conecte a antena
Passo 3: Conecte a antena
Passo 3: Conecte a antena
Passo 3: Conecte a antena
Passo 3: Conecte a antena

Existem 3 peças de antena para este módulo IoT (A), uma delas é para o módulo loar, é uma antena tipo SMA, e uma delas é boa para seu GPS, é uma antena de caixa quadrada que tem porta IPX. e a última é para o módulo SIM (A9G), é uma antena minúscula que possui uma porta IPX. conecte a antena e monte o chapéu no seu pi de framboesa.

Como montar Monte a placa Iot Node (A) no Raspberry Pi

Conexão GPS antana e Lora antana à porta IPX.

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

Aparafusa a antana GPRS na porta SMA.

Etapa 5: Etapa 4: ambiente do sistema operacional e configurações de software

Nesta etapa, você deve fazer o seguinte:

1. Baixe o arquivo de imagem mais recente em: www.raspberrypi.org/downloads

2. Descompacte-o.

3. Flash seu cartão TF com a imagem mais recente via ferramenta etcher

4. Modifique o arquivo /boot/config.txt e adicione este parágrafo.

dtoverlay = sc16is752-i2c

5. Substitui o arquivo /boot/overlay/sc16is752-i2c.dtbo por este arquivo:

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

PS: lembre-se de descompactá-lo e colocá-lo em sua pasta / boot / overlay / e substituir o antigo.

6. Reinicie o Raspberry Pi.

Etapa 6: Etapa 5: Configurar I2C (Raspberry Pi)

Etapa 5: Configurar I2C (Raspberry Pi)
Etapa 5: Configurar I2C (Raspberry Pi)
Etapa 5: Configurar I2C (Raspberry Pi)
Etapa 5: Configurar I2C (Raspberry Pi)
Etapa 5: Configurar I2C (Raspberry Pi)
Etapa 5: Configurar I2C (Raspberry Pi)
Etapa 5: Configurar I2C (Raspberry Pi)
Etapa 5: Configurar I2C (Raspberry Pi)

Execute sudo raspi-config e siga as instruções para instalar o suporte i2c para o núcleo ARM e kernel do Linux Vá para Opções de Interface

Etapa 7: Etapa 6: saber sobre as informações de registro

Seção GPRS

Baixo consumo de energia, corrente de espera em espera <1mA2.

Suporta quatro bandas de frequência GSM / GPRS, incluindo 850, 900, 1800, 1900 MHz

GPRS Classe 10

Suporte para serviço de dados GPRS, taxa máxima de dados, download 85,6 Kbps, upload 42,8 Kbps

Suporta comandos AT padrão GSM07.07, 07.05 e acesse a porta serial por meio da conversão de interface I2C

Os comandos AT suportam portas de comando AT e TCP / IP padrão

Seção GPSSuporte ao posicionamento da junta BDS / GPS

Suporte A-GPS, A-BDS

Suporta cartão SIM padrão

Seção LORA Distância de transmissão: 500 metros (parâmetros de RF: 0x50 na cidade da China)

Suporta métodos de modulação FSK, GFSK, MSK, GMSK, LoRaTM e OOK

Sensibilidade ultra-alta do receptor tão baixa quanto -141 dBm

Detecção de preâmbulo de suporte

Mecanismo de pacote com CRC, até 256 bytes

Indicador de transceptor LORA

Easy TX / RX por Docker Pi

Etapa 8:

Módulo A9G

O módulo A9G oferece duas portas seriais.

Use a ponte I2C UART para comunicação.

Nome do módulo da porta serial

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

Cadastre-se Mapa

  • Registrar o valor da função de endereço
  • 0x01 LORA_TX1 Lora TX Buffer 1 - Dados do usuário
  • 0x02 LORA_TX2 Lora TX Buffer 2 - Dados do usuário
  • 0x03 LORA_TX3 Lora TX Buffer 3 - Dados do usuário
  • 0x04 LORA_TX4 Lora TX Buffer 4 - Dados do usuário
  • 0x05 LORA_TX5 Lora TX Buffer 5 - Dados do usuário
  • 0x06 LORA_TX6 Lora TX Buffer 6 - Dados do usuário
  • 0x07 LORA_TX7 Lora TX Buffer 7 - Dados do usuário
  • 0x08 LORA_TX8 Lora TX Buffer 8 - Dados do usuário
  • 0x09 LORA_TX9 Lora TX Buffer 9 - Dados do usuário
  • 0x0a LORA_TX10 Lora TX Buffer 10 - Dados do usuário
  • 0x0b LORA_TX11 Lora TX Buffer 11 - Dados do usuário
  • 0x0c LORA_TX12 Lora TX Buffer 12 - Dados do usuário
  • 0x0d LORA_TX13 Lora TX Buffer 13 - Dados do usuário
  • 0x0e LORA_TX14 Lora TX Buffer 14 - Dados do usuário
  • 0x0f LORA_TX15 Lora TX Buffer 15 - Dados do usuário
  • 0x10 LORA_TX16 Lora TX Buffer 16 - Dados do usuário
  • 0x11 LORA_RX1 Lora RX Buffer 1 - Dados do usuário
  • 0x12 LORA_RX2 Lora RX Buffer 2 - Dados do usuário
  • 0x13 LORA_RX3 Lora RX Buffer 3 - Dados do usuário
  • 0x14 LORA_RX4 Lora RX Buffer 4 - Dados do usuário
  • 0x15 LORA_RX5 Lora RX Buffer 5 - Dados do usuário
  • 0x16 LORA_RX6 Lora RX Buffer 6 - Dados do usuário
  • 0x17 LORA_RX7 Lora RX Buffer 7 - Dados do usuário
  • 0x18 LORA_RX8 Lora RX Buffer 8 - Dados do usuário
  • 0x19 LORA_RX9 Lora RX Buffer 9 - Dados do usuário
  • 0x1a LORA_RX10 Lora RX Buffer 10 - Dados do usuário
  • 0x1b LORA_RX11 Lora RX Buffer 11 - Dados do usuário
  • 0x1c LORA_RX12 Lora RX Buffer 12 - Dados do usuário
  • 0x1d LORA_RX13 Lora RX Buffer 13 - Dados do usuário
  • 0x1e LORA_RX14 Lora RX Buffer 14 - Dados do usuário
  • 0x1f LORA_RX15 Lora RX Buffer 15 - Dados do usuário
  • 0x20 LORA_RX16 Lora RX Buffer 16 - Dados do usuário
  • 0x01 - 0x10 Somente gravação.
  • 0x11 - 0x20 Somente leitura.

Etapa 9: Instruções:

Instruções
Instruções

L_SET (somente gravação)

  • Escreva 1 para definir os parâmetros de 0x22 para o Módulo LORA.
  • Escreva 0 sem efeito

G_RESET (somente gravação)

  • Escreva 1 para reiniciar o Módulo A9G
  • Escreva 0 sem efeito

L_RXNE (Leitura e Escrita)

  • Erro de causa de gravação 1
  • Escreva 0 para limpar
  • A leitura 1 significa que os dados foram recebidos, obtenha os dados do registro 0x11 - 0x20.
  • Ler 0 significa que não há dados disponíveis agora.

L_SET (somente gravação)

  • Escreva 1 para enviar dados, preencha os dados no registro 0x01 - 0x10 antes de enviar.
  • Escreva 0 sem efeito

Etapa 10: como usar o módulo GPS com Gpsd (Raspberry Pi)

Como usar o módulo GPS com Gpsd (Raspberry Pi)
Como usar o módulo GPS com Gpsd (Raspberry Pi)
Como usar o módulo GPS com Gpsd (Raspberry Pi)
Como usar o módulo GPS com Gpsd (Raspberry Pi)
Como usar o módulo GPS com Gpsd (Raspberry Pi)
Como usar o módulo GPS com Gpsd (Raspberry Pi)

Como usar o módulo GPS com gpsd (Raspberry Pi)

Primeiro, substitua o /boot/overlays/sc16is752-i2c.dtbo e certifique-se de que o I2C esteja funcionando corretamente.

  • Substitua sc16is752-i2c.dtbo
  • Configurando I2C
  • Instale ferramentas gpsd.

Abra um terminal e digite este comando:

sudo apt instalar clientes gpsd gpsd

Modifique o arquivo / etc / default / gpsd e adicione os seguintes parâmetros:

  • DISPOSITIVOS = "/ dev / ttySC1"
  • GPSD_OPTIONS = "- F /var/run/gpsd.sock"

Digite o comando i2cset -y 1 0x16 0x23 0x40 para reinicializar o módulo GPRS.

Script Python para GPS aberto:

import serialimport os import time # Reinicia o serviço gpsd. os.system ("sudo systemctl restart gpsd.socket") # Abrir porta serial ser = serial. Serial ('/ dev / ttySC0', 115200) i = 0 if ser.isOpen == False: ser.open () try: print ("Turn on GPS…") while True: ser.write (str.encode ("AT + GPS = 1 / r")) size = ser.inWaiting () if size! = 0: ticks = time.time () resposta = ser.read (tamanho) gps = str (resposta, codificação = "utf-8") if (gps.find ("OK")! = -1): os.system ("sudo cgps -s") exit () else: i = i + 1 print ("Esperando habilitar GPS, se o tempo for muito longo, teste ao ar livre:" + str (i)) ser.flushInput () time.sleep (1) exceto KeyboardInterrupt: ser.flushInput () ser.close ()

Salve-o e execute-o:

python3 GPS.py

Etapa 11: como usar o módulo GPS com C (Raspberry Pi)

Instale ferramentas gpsd

sudo apt-get install libgps-dev

Crie o código-fonte com o nome "gps.c"

#include #include #include

#incluir

#incluir

int main ()

{int rc; struct timeval tv; struct gps_data_t gps_data; if ((rc = gps_open ("localhost", "2947", & gps_data)) == -1) {printf ("código:% d, motivo:% s / n", rc, gps_errstr (rc)); return EXIT_FAILURE; } gps_stream (& gps_data, WATCH_ENABLE | WATCH_JSON, NULL);

enquanto (1)

{/ * aguarde 2 segundos para receber os dados * / if (gps_waiting (& gps_data, 2000000)) {/ * ler dados * / if ((rc = gps_read (& gps_data)) == -1) {printf ("ocorreu um erro de leitura dados GPS. código:% d, razão:% s / n ", rc, gps_errstr (rc)); } else {/ * Exibe dados do receptor 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); EDIT: tv.tv_sec não é realmente o carimbo de data / hora! * /

printf ("latitude:% f, longitude:% f, velocidade:% f, timestamp:% lf / n", gps_data.fix.latitude, gps_data.fix.longitude, gps_data.fix.speed, gps_data.fix.time);

// EDITAR: tv.tv_sec substituído por gps_data.fix.time} else {printf ("nenhum dado GPS disponível / n"); }}} sono (3); } / * Quando você terminar… * / gps_stream (& gps_data, WATCH_DISABLE, NULL); gps_close (& gps_data); return EXIT_SUCCESS; }

Etapa 12: Compile

Compile
Compile

Compilar!

gcc gps.c -lm -lgps -o gps

Exec It!

./GPS

Etapa 13: como usar o módulo GPS com Python (Raspberry Pi)

Como usar o módulo GPS com Python (Raspberry Pi)
Como usar o módulo GPS com Python (Raspberry Pi)

O seguinte código é recomendado para ser executado usando Python 3 e instalar a biblioteca gpsd-py3 e GPS 2D / 3D Fix:

importar gpsd

# Conecte-se ao gpsd local

gpsd.connect ()

# Obter posição GPS

pacote = gpsd.get_current ()

# Veja os documentos inline para GpsResponse para os dados disponíveis

imprimir (packet.position ())

Etapa 14: como usar o módulo GSM com PPPd (Raspberry Pi)

Como usar o módulo GSM com PPPd (Raspberry Pi)
Como usar o módulo GSM com PPPd (Raspberry Pi)
Como usar o módulo GSM com PPPd (Raspberry Pi)
Como usar o módulo GSM com PPPd (Raspberry Pi)
Como usar o módulo GSM com PPPd (Raspberry Pi)
Como usar o módulo GSM com PPPd (Raspberry Pi)

A) Primeiro, substitua o /boot/overlays/sc16is752-i2c.dtbo e certifique-se de que o I2C esteja funcionando corretamente.

  • Substitua sc16is752-i2c.dtbo
  • Configurando I2C

B) Digite o comando i2cset -y 1 0x16 0x23 0x40 para reinicializar o módulo GPRS.

Depois de executar o comando, você precisa esperar um pouco, cerca de 10 segundos

Você também pode usar o seguinte método para redefinir.

C) Digite o comando

sudo apt install ppp

para instalar ferramentas ppp.

D) Copie / etc / ppp / peers / provider para / etc / ppp / peers / gprs

E) Modifique / etc / ppp / peers / gprs

  • Linha 10: Consulte seu provedor de serviços para o usuário (Exemplo: cmnet).
  • Linha 15: Consulte seu provedor de serviços para o apn (exemplo: cmnet).
  • Linha 18 - Linha 24: configuração recomendada

F) Modifique / etc / chatscripts / gprs (altere a linha 34 para a linha 35, o número de discagem pode ser NÃO * 99 #)

G) Digite o comando sudo pppd call gprs para discar.

H) Verifique a configuração do seu PPP do seu ISP.

I) Digite o comando ping -I ppp0 8.8.8.8 teste sua rede (se a Internet estiver disponível e a tabela de rotas estiver correta)

J) Mantenha o sinal GSM bom, caso contrário, ocorrerá o seguinte.

Etapa 15: Como diagnosticar meu módulo GSM (Raspberry Pi)

Como diagnosticar meu módulo GSM (Raspberry Pi)
Como diagnosticar meu módulo GSM (Raspberry Pi)
Como diagnosticar meu módulo GSM (Raspberry Pi)
Como diagnosticar meu módulo GSM (Raspberry Pi)
Como diagnosticar meu módulo GSM (Raspberry Pi)
Como diagnosticar meu módulo GSM (Raspberry Pi)
Como diagnosticar meu módulo GSM (Raspberry Pi)
Como diagnosticar meu módulo GSM (Raspberry Pi)

Recomenda-se que o código a seguir seja executado usando Python 3 e instale a biblioteca smbus:

import serialimport time import smbus import operador import os

print ("Aguardando inicialização …")

bus = smbus. SMBus (1)

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

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

if ser.isOpen == False:

ser.open () try: print ('-' * 60) print ("Inicializando o módulo A9G GPRS.") print ("GSM conectando…") time.sleep (3) i = 0 enquanto True: ser.write (str.encode ("AT + CCID / r")) size = ser.inWaiting () if size! = 0: ticks = time.time () response = ser.read (size) ccid = str (resposta, codificação = "utf -8 ") print (ccid) else: i = i + 1 ser.flushInput () time.sleep (1) exceto KeyboardInterrupt: ser.close ()

Executando o Script de Teste, com base nos resultados da implementação, podemos diagnosticar o módulo GSM. Por exemplo, o seguinte retorna, erro CME ERROR 53 nos diz Power not good. Código CME = Erros relacionados ao equipamento GSM

Claro, o script também tem uma função de redefinição. Se você puder exibir o CCID corretamente, a redefinição está concluída.

Etapa 16: como usar Lora TX e RX com C (Raspberry Pi)

Recomenda-se que o código a seguir seja executado em Python 3 e instale a biblioteca smbus.

Deve ser transferido entre os dois Nó IOT (A). O conteúdo enviado por si só não pode ser recebido por si mesmo. Salve-o como um script py para execução.

Como enviar: Após preencher os dados no registro 0x01 - 0x10, defina o bit L_TX para iniciar o envio de dados.

import timeimport smbus import os import sys

bus = smbus. SMBus (1)

Experimente:

data_list = [170, 85, 165, 90] # grava dados para registrar e então os dados serão enviados. para o índice no intervalo (1, len (data_list) + 1): bus.write_byte_data (0x16, index, data_list [index - 1]) print ("LORA envia dados para% d registro% d dados"% (índice, data_list [índice - 1])) bus.write_byte_data (0x16, 0x23, 0x01) exceto KeyboardInterrupt: sys.exit ()

Como enviar e receber: Verifique o bit L_RXNE, se definido, novos dados chegaram, este sinalizador deve ser apagado manualmente

import timeimport smbus import os import sys

bus = smbus. SMBus (1)

recv_data =

Experimente:

if bus.read_byte_data (0x16, 0x23) & 0x02: # limpa manualmente L_RXNE bus.write_byte_data (0x16, 0x23, 0x00) register_list = [0x11, 0x12, 0x13, 0x14] # lê os dados do índice no intervalo (0x11, len (register_list) + 0x11): recv_data.append (bus.read_byte_data (0x16, register_list [index - 0x11]))

imprimir ("Dados recebidos:")

print (recv_data) else: print ("Nenhum dado recebido ainda ~") exceto KeyboardInterrupt: sys.exit ()

Etapa 17: Descrição especial da largura de banda I2C

O limite da velocidade I2C é 400 kHz, devido ao protocolo I2C, então a largura de banda efetiva do único dispositivo é inferior a 320 kbps, a largura de banda efetiva de vários dispositivos é inferior a 160 kbps. O limite da velocidade da ponte I2C UART é 115200bps. Quando GPS e GSM trabalhar ao mesmo tempo, a largura de banda I2C é insuficiente, porque 115,2 kbps * 2 = 230,4 kbps, portanto, alguns dados vão estourar. Reduzir a taxa de transmissão de comunicação GPS e GSM pode melhorar a falta de largura de banda de comunicação. Empilhar outros módulos DockerPi pode demorar largura de banda I2C extra. Normalmente, a velocidade dos dados da rede é lenta, então a largura de banda GSM não está cheia, então não há problema de estouro.

Etapa 18: Concluída

Espero que gostem e façam isso.

Você pode encontrá-lo aqui:

Amazonas

Nightlight : https://www.amazon.com/GeeekPi-Night-Light-WS2812-Raspberry/dp/B07LCG2S5S Placa de retransmissão de 4 canais: https://www.amazon.co.uk/dp/B07MV1TJGR?ref=myi_title_dp Placa de energia : Https: //www.amazon.co.uk/dp/B07TD595VS? Ref = myi_title_dp Nó IoT (A) : https://www.amazon.co.uk/dp/B07TY15M1C Sensor HUB : https:// www. amazon.co.uk/dp/B07TZD8B61 torre de gelo :

Recomendado: