Índice:

Solução LoRa IoTea observada: 5 etapas
Solução LoRa IoTea observada: 5 etapas

Vídeo: Solução LoRa IoTea observada: 5 etapas

Vídeo: Solução LoRa IoTea observada: 5 etapas
Vídeo: Обзор и конфигурация модуля EBYTE LoRa 2024, Julho
Anonim
Solução LoRa IoTea observada
Solução LoRa IoTea observada

Um sistema automático de coleta de informações aplicado à plantação de chá. Faz parte da coleta inteligente de informações agrícolas.

Etapa 1: Coisas usadas neste projeto

Componentes de hardware

  • Grove - Sensor de dióxido de carbono (MH-Z16)
  • Grove - Sensor Digital de Luz
  • Grove - Sensor de Poeira (PPD42NS)
  • Grove - Sensor de oxigênio (ME2-O2-Ф20)
  • Sensor de umidade e temperatura do solo
  • Gateway LoRa LoRaWAN - Kit de 868 MHz com Raspberry Pi 3
  • Grove - Sensor de temperatura e humi e barômetro (BME280)

Aplicativos de software e serviços online

Microsoft Visual Studio 2015

Etapa 2: História

Agricultura inteligente é aplicar a tecnologia da Internet das Coisas à agricultura tradicional, usando sensores e software para controlar a produção agrícola por meio de plataformas móveis ou de computador, tornando a agricultura tradicional mais “inteligente”.

Na Montanha Mengding, a nordeste de Ya'an, Sichuan, o cume da montanha corre de oeste para leste em um mar verde. Esta é uma visão muito familiar para Deng, de 36 anos, um dos poucos fabricantes de chá Mengding de sua geração, com uma plantação de 50mu (= 3,3 hectares) situada a 1100m acima do nível do mar. Deng vem de uma família de fabricantes de chá, mas levar adiante o legado familiar não é uma tarefa fácil. “Nossos chás são cultivados em grande altitude em ambiente orgânico para garantir sua excelente qualidade. Mas, ao mesmo tempo, a densidade de crescimento é baixa, o custo é alto e a floração é desigual, tornando o chá difícil de colher. É por isso que os chás de alta montanha são normalmente de safras pequenas e seus valores não se refletem no mercado.” Nos últimos dois anos, Deng tem tentado conscientizar os consumidores sobre o chá de alta montanha para promover seu valor. E quando ele conheceu Fan, que estava procurando uma plantação para implementar a tecnologia IoTea da Seeed, uma combinação perfeita para uma solução foi feita. A solução Seeed IoTea visa ajudar os produtores de chá a gerenciar melhor as plantações sem alterar as práticas tradicionais de cultivo do chá e apresentar dados ambientais em tempo real das plantações em uma plataforma aberta.

Composto por sensores, nós e gateways, o IoTea coleta dados em tempo real de fatores que podem afetar a qualidade do chá durante o cultivo e os processos de produção, incluindo temperatura e umidade, CO2, O2, PM e exposição à luz. Os dados são coletados pelos sensores, enviados pelos nós ao gateway e, eventualmente, à nuvem, e são disponibilizados aos clientes finais em uma página da web.

Etapa 3: Conexão de Hardware

Passo 1: Conexão de Gateway

O gateway é instalado separadamente em uma caixa. Considerando o problema de dissipação de calor, adicionamos 2 ventoinhas. Um é para a dissipação de calor do Raspberry Pi, o outro é para a circulação de ar interna e externa. A caixa de entrada é colocada na casa de um fazendeiro, então não precisamos considerar seu problema de energia.

Imagem
Imagem

Passo 2: Conexão do Nó

O nó é o terminal dos dados e todos os dados originais são obtidos a partir daqui. Existem 6 sensores conectados ao nó. Além do sensor de umidade e temperatura do solo, colocamos outros sensores dentro da caixa da veneziana.

Imagem
Imagem
Imagem
Imagem

O nó é colocado em uma caixa à prova d'água. Para ter uma melhor conexão com o nodo, fazemos uma placa adaptadora. Por fim, forneceremos o link de download do esquema desta placa. Conforme mostrado abaixo, os cabos dos sensores são conectados à placa adaptadora por meio de blocos de terminais. Usamos 3 tubos MOS (SI2301) para construir circuitos de interruptores para controlar a ativação e desativação dos sensores e do ventilador. Ventilador é usado para esfriar. Temos um sensor de temperatura (DS18B20) montado na placa. Ele pode nos dizer a temperatura interna da caixa, e então o microcontrolador decide se deve ligar o ventilador. Usamos vários resistores para fazer um circuito divisor de tensão para medir a tensão da bateria de chumbo-ácido. Finalmente, reservamos 3 interfaces IIC e porta serial na placa para expansão e depuração posteriores.

Imagem
Imagem

Vamos falar sobre o problema de fornecimento de energia do nó. O nó é colocado na plantação de chá aleatoriamente, então o método tradicional de fornecimento de energia não é mais aplicável. Usar uma solução de energia solar é uma boa ideia. Existem muitas soluções fornecidas no mercado atualmente. Podemos selecionar um deles que atenda às nossas necessidades. Existem 3 partes na solução que escolhemos: painel solar, controlador de carregamento solar e bateria de chumbo-ácido. Para captar melhor a energia solar, colocamos o painel solar na parte superior do suporte e ajustamos seu ângulo para garantir que esteja voltado para o sol. Colocamos o controlador de carregamento solar na mesma caixa com o nó. Por não haver espaço extra dentro da caixa, tivemos que encontrar uma nova caixa à prova d'água para colocar a bateria de chumbo-ácido.

Imagem
Imagem
Imagem
Imagem
Imagem
Imagem

Etapa 4: configuração do software

Nesta seção, apresentaremos principalmente a configuração de software do nó.

Formato de dados

Dados carregados pelo nó para o gateway:

unsigned char Lora_data [15] = {0, 1, 2, 3,, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14};

Significado de cada bit de dados:

Lora_data [0] : Temperatura do ar, ℃

Lora_data [1] : Umidade do ar,%

Lora_data [2] : Altitude alta oito, m

Lora_data [3] : Altitude baixo oito

Lora_data [4]: concentração de CO2 alta de oito, ppm

Lora_data [5]: Concentração de CO2 baixa oito

Lora_data [6]: Concentração de poeira alta, oito, pcs / 0,01cf

Lora_data [7]: Concentração de poeira baixa oito

Lora_data [8]: Intensidade de luz alta oito, lux

Lora_data [9]: Intensidade de luz baixa oito

Lora_data [10]: concentração de O2,% (dados brutos divididos por 1000)

Lora_data [11]: Temperatura do solo, ℃

Lora_data [12]: Umidade do solo,%

Lora_data [13]: Tensão da bateria, v

Lora_data [14]: Código de erro dos sensores

Erro de código:

Lora_data [14] = [bit7, bit6, bit5, bit4, bit3, bit2, bit1, bit0]

Significado de cada bit:

bit 0: 1 ---- Erro do sensor de temperatura e humi e barômetro (BME280)

bit 1: 1 ---- Erro do sensor de dióxido de carbono (MH-Z16)

bit 2: 1 ---- Erro do sensor de poeira (PPD42NS)

bit 3: 1 ---- Erro do sensor de luz digital

bit 4: 1 ---- Erro do sensor de oxigênio (ME2-O2-Ф20)

bit 5: 1 ---- Erro do sensor de umidade e temperatura do solo

bit 6: Reservado

bit 7: Reservado

Fizemos um Error_code_transform.exe, abrimos e inserimos o código de erro em hexadecimal, você saberá rapidamente qual sensor está com erro. O link para download está no final deste artigo.

Ajuste de parâmetros: a) Ciclo de transmissão de dados

// seeedtea.ino

#defineinterval_time 600 // segundo

Este parâmetro pode ser variado para alterar o ciclo de transmissão de dados. Em cada ciclo, a aquisição de dados leva cerca de 1 minuto. Portanto, não é recomendável alterar esse valor para menos de 60 segundos.

b) Tempo de aquecimento do sensor de poeira

//seeedtea.ino

#definePreheat_time 30000 // Tempo de aquecimento do DustSensor, milissegundos //Dust_other.cpp #definesampletime_ms 30000 // samplingtime30s

c) Coeficiente de tensão

//POWER_Ctrl.cpp

#defineBattery_coefficient 0,159864 // valor ADC × Battery_coefficient = battery_voltage #defineSolar_coefficient 0,22559 // valor ADC × Solar_coefficient = solar_voltage

Esses dois parâmetros são calculados com base no circuito divisor de tensão.

d) Limite de temperatura de abertura do ventilador

//POWER_Ctrl.cpp

#defineFan_start_temp 45 // temperaturethreshold #defineFan_start_light 500 // intensidade da luz

Quando a temperatura real exceder o limite, o ventilador começará a esfriar.

e) Parâmetro de inicialização do sensor de O2

//Oxygen.cpp

# defineO2_percentage 208.00 //20.8%

f) Chave macro

//seeedtea.ino

#defineLORA_RUN // Após o comentário, a inicialização do Lora e a transmissão de dados irão parar #defineSENSOR_RUN // Após o comentário, os sensores externos irão parar de funcionar //POWER_Ctrl.cpp #defineFAN_ON // Apenas Fortesting, aplicação prática precisa ser comentada / **** *** Modo de controle DS18B20 *********************** / #defineSlower_Mode // Modo lento para obter a temperatura. Comentário é o modo rápido

g) Mapeamento de pinos

D2: Indicador LED e microcontrolador de reset externoIIC: SCL e SDA

//Dust_other.h

#defineDust_pin 3 // Sensor de poeira //CO2.cpp # defineCO2_serial Serial1 // usa a porta hardwareserial (D0 & D1) //seeedtea.ino #definedataPin 6 // Pino de dados do solo #defineclockPin 7 // Pino do relógio do solo // POWER_Ctrl. h # defineDS18B20_pin 8 // DS18B20 #defineFan_pin 9 // Ventilador #defineAir_CtrlPin 10 // Pino de controle para os sensores colocados em louverbox #defineSoil_CtrlPin 11 // Botão do sensor de umidade e temperatura do solo #defineBattery_pin A2 // Mede a tensão da bateria #defineSolar_pin A3 / / Medir a tensão do painel solar //Oxygen.h # defineO2_pin A1 // sensor de O2

h) Cronômetro de watchdog

O cronômetro de watchdog é usado para monitorar o status de execução do sistema. Quando o sistema está funcionando de forma anormal, o nó será reiniciado, para que possa funcionar continuamente por um longo tempo.

A biblioteca a ser referenciada:

  • Adafruit_SleepyDog.h foi adicionado ao projeto
  • Adafruit_ASFcore-master.zip é empacotado na pasta do projeto e precisa ser adicionado manualmente ao IDE do Arduino.

Funções relacionadas:

Habilitar watchdog

int WatchdogSAMD:: enable (int maxPeriodMS, bool isForSleep)

Parâmetros de entrada:

Int maxPeriodMS: Tempo de espera em milissegundos. O máximo permitido é 16000 milissegundos.

valor de retorno:

Tipo interno, retorna o tempo de espera real

Reiniciar watchdog

void WatchdogSAMD:: reset ()

Chame essa função para zerar o cronômetro de vigilância, conhecido como "alimentar o cachorro". Exceder o tempo de espera sem redefinir fará com que o nó seja reiniciado.

Pare o cão de guarda

void WatchdogSAMD:: disable ()

Porta de entrada

Nesta seção, apresentaremos como se conectar ao servidor Loriot.

Etapa 1: Registro do Loriot Server Gateway

a) O novo usuário precisa primeiro registrar uma conta, clique no endereço de registro. Preencha o nome de usuário, senha e endereço de e-mail para se cadastrar, após o cadastro um e-mail será enviado para você, siga as instruções no e-mail para ativar.

b) Após a ativação bem-sucedida, clique aqui para fazer login. O nível padrão é “Community Network”, que suporta 1 Gateway (RHF2S001) e 10 nós.

c) Entre no Dashboard -> Gateway, clique em Adicionar Gateway e clique em Iniciar para adicionar Gateway.

d) Selecione Raspberry Pi 3

e) Defina como abaixo:

  • Front-end de rádio -> RHF2S001 868/915 MHz (SX1257)
  • BUS -> SPI

f) Preencha o endereço MAC do seu RHF2S001, deve estar no formato b8: 27: eb: xx: xx: xx. E também inserir informações de localização do gateway.

g) Clique em “Registrar gateway Raspberry Pi” para finalizar o registro.

Imagem
Imagem

h) Clique no gateway registrado para entrar na página de configuração, alterne “Plano de frequência” manualmente, seu plano aqui é decidido pelo tipo de seu tipo RHF2S001, o plano disponível é CN470, CN473, CN434, CN780 , EU868, depois de selecionado, atualize a página para obter o canal exato. Neste wiki, escolhemos EU868.

i) Execute o comando no terminal de massa:

cd /home/rxhf/loriot/1.0.2

sudo systemctl stop pktfwd sudo gwrst wget > -O loriot-gw.bin chmod +x loriot-gw.bin./loriot-gw.bin -f -s cn1.loriot.io

j) Finish gateway registration. You will see the gateway is Connected now. Next is to register node.

Imagem
Imagem

Passo 2: Dispositivo Loriot Server Connect Node

a) Obtenha os canais de gateway disponíveis

Os canais de gateway atuais podem ser obtidos em Dashboard -> Gateway -> Seu Gateway, você pode ver os canais disponíveis conforme a imagem abaixo.

Imagem
Imagem

b) Configuração Seeeduino LoRAWAN GPS (RHF3M076)

Abra o monitor serial do ArduinoIDE, toque no comando abaixo.

em + ch

Para confirmar o canal padrão de seu GPS Seeeduino_LoRAWAN, você terá 3 canais. Se não houver um canal disponível, você pode alterar os canais de Seeeduino_LoRAWAN pelo comando abaixo.

em + ch = 0, 868,1

em + ch = 1, 868,3 em + ch = 2, 868,5

Então você pode usar at + ch novamente para verificar.

c) Adicione Seeeduino_LoRAWAN GPS como um NodeLog ABP no servidor Loriot, clique em Dash Board -> Aplicativos -> SimpleApp. Clique em Importar ABP, insira os itens abaixo

  • DevAddr: Seeeduino_LoRAWAN GPS obter por meio do comando "AT + ID" (Observação: Loriot não oferece suporte ao conector de dois pontos, precisa ser removido manualmente)
  • FCntUp : Setto 1
  • FCntDn : Definir para 1
  • NWKSKEY: Valor padrão 2B7E151628AED2A6ABF7158809CF4F3C
  • APPSKEY: Valor padrão 2B7E151628AED2A6ABF7158809CF4F3C
  • EUI : DEVEUI, Seeeduino_LoRAWAN GPS passa pelo comando "AT + ID"
Imagem
Imagem

Clique no botão Importar dispositivo para finalizar a importação do dispositivo. Agora escolha Dashboard-> Applications -> SampleApp, você verá o novo Node ABP que acabou de adicionar.

Imagem
Imagem

d) Enviar dados de Seeeduino_LoRAWAN

ATENÇÃO! Este é apenas um teste.

De volta ao monitor serial do ArduinoIDE, envie o comando:

AT + CMSGHEX = "0a 0b 0c 0d 0e"

Em seguida, vá para Dashboard -> Aplicativos -> SampleApp -> Dispositivo, clique em Node Device EUI ou DevAddr, você encontrará os dados que acabou de enviar aqui.

Imagem
Imagem

Para obter detalhes, consulte este wiki.

Etapa 5: construção do site

Ferramentas Relacionadas

  • virtualenv
  • Python3
  • Gunicorn
  • Supervisor
  • Nginx
  • MySQL

Usamos CentOS7 como ambiente de implementação de teste

virtualenv

Use o virtualenv para construir um ambiente de produção python3 autônomo

a) instalar

pip install virtualenv

b) criar um ambiente virtual python3

virtualenv -p python3 iotea

c) inicie o ambiente virtual e insira o diretório iotea

fonte bin / ativar

d) existe ambiente

desativar

Python3

a) instalar

yum install epel-release

yum install python 36

b) instalar a biblioteca dependente PyMySQL, DBUtils, Flask, websocket-client, configparser

pip install pymysql

pip instalar dbutils pip instalar frasco pip instalar websocket-cliente pip instalar configparser

Gunicorn

a) instalar (em ambiente Python3)

pip instalar gunicorn

b) execute o projeto flask (no diretório do projeto iotea)

gunicorn -w 5 -b 0.0.0.0:5000 app: app

c) execute websocket-clint para obter dados de Loriot

gunicorn loriot: app

d) visualizar a árvore de processo do Gunicorn

pstree -ap | grep gunicorn

Supervisor

a) instalar (usuário root)

supervisor de instalação de pip

b) gerar arquivos de configuração

echo_supervisord_conf> /etc/supervisord.conf

c) criar um diretório e introduzir uma configuração de diretório

mkdir -p /etc/supervisor/conf.d

Edite /etc/supervisord.conf e modifique o campo de arquivos em [incluir] no final do arquivo.

Observe que você precisa remover o ';' na frente dessas duas linhas, que é o caractere de comentário.

[incluir]

Arquivos = /etc/supervisor/conf.d/*.conf

Significa apresentar /etc/supervisor/conf.d/. O seguinte arquivo de configuração é usado como o arquivo de configuração do processo (monitorado pelo supervisor).

d) configuração de entrada (no diretório iotea)

cp iotea.conf /etc/supervisor/conf.d/

cp loriot.conf /etc/supervisor/conf.d/

e) abrir iotea servir

superviosrctl reload #reload o arquivo de configuração

superviosrctl start loriot #open loriot data reception superviosrctl start iotea #open the iotea flask application

f) outras operações comuns

supervisorctl reload # recarregar o arquivo de configuração

supervisorctl update supervisorctl start xxx supervisorctl stop xxx supervisorctl status xxx supervisorctl help # view more command

Nginx

a) instalar

yum install -y nginx

b) configuração

cp NginxIotea.conf /etc/nginx/conf.d/

c) iniciar o Nginx

systemctl start nginx.service

MySQL

a) parâmetros relacionados

usuário = 'root'

passwd = '1234' db = 'iotea' port = 3306

b) arquivo

iotea_iotea.sql

c) arquivo de configuração

db.ini

Recomendado: