Índice:

Solução IoTea LoRa vista (atualização 1811): 5 etapas
Solução IoTea LoRa vista (atualização 1811): 5 etapas

Vídeo: Solução IoTea LoRa vista (atualização 1811): 5 etapas

Vídeo: Solução IoTea LoRa vista (atualização 1811): 5 etapas
Vídeo: High Density 2022 2024, Julho
Anonim
Solução IoTea LoRa vista (atualização 1811)
Solução IoTea LoRa vista (atualização 1811)

Internet + é um conceito popular agora. Desta vez, tentamos a Internet mais a agricultura para fazer o jardim de chá cultivar o Internet Tea.

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

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 são refletidos 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.

Etapa 3: Conexão de Hardware

O hardware deste projeto pode ser dividido em 4 partes: Potência, Sensores, Nó e Gateway. O artigo a seguir mostrará como concluí-lo passo a passo.

Parte de energia

A parte de energia contém principalmente um painel solar e uma bateria de lítio, se você apenas construir este projeto para demonstração, você pode ignorá-los. Ou você pode seguir o tutorial anterior para instalar a energia do nó.

Parte Sensores

Na parte Sensores, por causa da quantidade de sensores, usamos uma estação meteorológica, e também fizemos um suporte de acrílico para instalá-los.

Imagem
Imagem

Como você pode ver na foto acima, o Sensor Digital de Luz está sempre na parte superior, para que possa coletar informações sobre a iluminação. Os sensores que irão gerar calor são instalados no meio do suporte de acrílico, como Sensor de O2, Sensor de Poeira e Sensor de CO2. Por fim, Sensor de Temperatura e Umidade na parte inferior do suporte de acrílico.

Além disso, o Sensor de Temperatura e Umidade do Solo é instalado sozinho no solo. Parte do Nó

Imagem
Imagem

O Node Part é um Seeeduino LoRaWan que instalado em uma caixa à prova d'água, ele se conecta a energia e sensores através de juntas de água. Entre eles, o sensor de poeira se conecta ao pino digital D3 do LoRaWan, o sensor de CO2 se conecta aos pinos D4 e D5, o sensor de solo se conecta aos pinos D6 e D7, o sensor de O2 se conecta ao pino analógico A1 e o sensor de luz e o sensor barômetro se conectam à porta I2C.

NOTA: Um resistor de 10k deve ser adicionado entre o cabo azul (dados) do sensor de solo e o cabo vermelho (Vcc).

O Seeeduino LoRaWan coleta o valor dos sensores de vez em quando e os envia para o Gateway via LoRa. O formato dos dados como abaixo:

{

[0], / * Temperatura do ar (℃) * / [1], / * Umidade do ar (%) * / [2], / * Altitude (m) byte alto * / [3], / * Altitude (m) byte baixo * / [4], / * concentração de CO2 (PPM) byte alto * / [5], / * concentração de CO2 (PPM) byte baixo * / [6], / * concentração de poeira (pcs / 0,01cf) byte alto * / [7], / * Concentração de poeira (pcs / 0,01cf) byte baixo * / [8], / * Intensidade da luz (lux) byte alto * / [9], / * Intensidade da luz (lux) byte baixo * / [10], / * concentração de O2 (%) * / [11], / * Temperatura do solo (℃) * / [12], / * Umidade do solo (%) * / [13], / * Tensão da bateria (V) * / [14] / * Código de erro do sensor * /}

Cada bit no byte do código de erro do sensor tem um significado diferente, assim como abaixo:

{

bit0: 1; / * Erro do sensor do barômetro * / bit1: 1; / * Erro do sensor de CO2 * / bit2: 1; / * Erro do sensor de poeira * / bit3: 1; / * Erro do sensor de luz * / bit4: 1; / * Erro do sensor de O2 * / bit5: 1; / * Erro do sensor de solo * / reservado: 2; /* Reservado */ }

Parte do Gateway

Imagem
Imagem

O Gateway Part é um Raspberry Pi que conectou o módulo Gateway RHF0M301–868 e a ponte PRI 2 RHF4T002, ele foi instalado em uma caixa à prova d'água e se conectou à alimentação e à câmera USB através de juntas de água. Por usar firmware especializado, siga o Seeed Wiki para configurá-lo.

Etapa 4: Programação de software

Como a Conexão de Hardware, a Programação de Software também pode ser dividida, ela pode ser dividida em 3 partes: Nó, Gateway e Site.

Parte do Nó

A maioria dos drivers exigidos pelo Node Part já estão contidos na pasta origin_driver. As bibliotecas a seguir precisam ser instaladas manualmente:

Adafruit_ASFcore

Como o projeto é complicado, recomendamos que você use o Microsoft Visual Studio em vez do Arduino IDE. Um plugin chamado Visual Micro pode ajudá-lo a biuld um projeto Arduino usando o Visual Studio, clique aqui para mais informações.

Para melhor legibilidade e manutenção, usamos a Programação Orientada a Objetos desta vez. O diagrama de classes deste projeto é parecido com o seguinte:

Imagem
Imagem

Para aqueles sensores que já possuem driver OOP, nós o reembalamos para adaptar este projeto, para outros, reescrevemos seus drivers usando OOP. A classe Sensor na camada de middleware é usada para unificar interfaces de sensores reais, por exemplo, um sensor barômetro pode coletar temperatura, umidade e altitude ao mesmo tempo, portanto, possui 3 interfaces para adquirir temperatura, umidade e altitude. Mas eles têm um nome de método diferente, o que tornará o programa de aquisição de valores de sensores mais complicado, assim:

barômetro-> getTemperature ();

barômetro-> getHumidity (); barômetro-> getAltitude (); //… outro_sensor-> getSomeValue (); //…

Mas usando OOP, é assim:

para (auto i = 0; i getValue ();

}

Também empacotamos uma classe Application, ela implementa a interface IApplication, o método setup () e loop () em IoTea.ino pode chamar o método setup () e loop () no objeto Application.

NOTA: USB Serial é usado SOMENTE para depurar. Após a depuração, comente seu código de inicialização no método setup ().

Parte do Gateway

O programa Python da Gateway Part na pasta inicial é usado para tirar fotos e enviá-las ao Amazon S3 Server a cada hora. Antes de usá-lo, certifique-se de que o fswebcam já esteja instalado no seu Raspberry Pi:

sudo apt-get update && sudo apt-get install fswebcam

Se você deseja fazer upload de fotos, configure seu AWS seguindo as etapas. Primeiro, instale o AWS SDK e o AWS CLI em seu Raspberry Pi usando estes comandos:

sudo pip install boto3

sudo pip install awscli

e, em seguida, execute o AWS CLI:

sudo aws configure

Configure sua AWS Access Key ID, AWS Secret Access ID e o nome de região padrão.

Se você não gosta de fazer upload de suas fotos, pode pular as etapas de configuração da AWS e os códigos de comentário sobre o upload em photo.py. Para executar este programa após inicializar o Raspberry Pi todas as vezes, você pode criar uma foto com o nome de arquivo em /etc/init.d e escrever o seguinte código nele.

#! / bin / bash

# /etc/init.d/photo ### BEGIN INIT INFO # Fornece: seeed_photo # Required-Start: $ remote_fs $ syslog # Required-Stop: $ remote_fs $ syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Breve descrição: initscript de captura de fotos # Descrição: Este serviço é usado para gerenciar a captura de fotos ### END INIT INFO caso "$ 1" no início) echo "Começar a tirar foto" /home/rxhf/photo.py &;; parar) echo "Parar de tirar foto" kill $ (ps aux | grep -m 1 'python3 /home/rxhf/photo.py' | awk '{print $ 2}');; *) echo "Uso: serviço foto start | stop" exit 1;; saída 0 esac

definir permissão de execução

sudo chmod 777 /etc/init.d/photo

sudo chmod 777 /home/rxhf/photo.py

e teste

sudo /etc/init.d/photo start

Se não houver nenhum problema, pare-o e adicione-o ao aplicativo de inicialização

sudo /etc/init.d/foto parar

sudo update-rc.d photo defaults

NOTA: Se você deseja iniciar o gateway após a inicialização do Raspberry Pi, adicione os códigos de início do gateway em Seeed Wiki em /etc/rc.local, parecido com:

#! / bin / sh -e

# # rc.local # # Este script é executado no final de cada nível de execução multiusuário. # Certifique-se de que o script "sairá 0" em caso de sucesso ou qualquer outro valor # em caso de erro. # # Para habilitar ou desabilitar este script, basta alterar os # bits de execução. # # Por padrão, este script não faz nada. # Imprime o endereço IP _IP = $ (hostname -I) || verdadeiro se ["$ _IP"]; então printf "Meu endereço IP é% s / n" "$ _IP" fi cd /home/rxhf/loriot/1.0.2 sudo systemctl stop pktfwd sudo gwrst wget https://cn1.loriot.io/home/gwsw/loriot -risinghf-r… -O loriot-gw.bin chmod + x loriot-gw.bin./loriot-gw.bin -f -s cn1.loriot.io saída 0

Local na rede Internet

Implantamos o site no CentOS 7. As etapas a seguir mostrarão como implantar.

Etapa 1. Instale o Python3

sudo yum -y install epel-release

sudo yum -y install python 36

Etapa 2. Instalar Python pip e ambiente virtual

wget

sudo python36 get-pip.py sudo pip install virtualenv

Setp 3. Clone nosso site do GitHub

sudo yum -y install git

git clone

Etapa 4. Crie e ative o ambiente virtual

virtualenv -p python36 iotea-hb

cd iotea-hb fonte bin / ativar

Etapa 5. Instalar bibliotecas dependentes

pip install pymysql

pip instalar dbutils pip instalar frasco pip instalar websocket-cliente pip instalar cofigparser

Etapa 6. Criar banco de dados

sudo yum -y install mariadb mariabd-server

sudo systemctl ativar mariadb sudo systemctl iniciar mariadb mysql -uroot -p

e use iotea_hb.sql para criar uma tabela.

Etapa 7. Crie db.ini e escreva esses códigos nele

[db]

db_port = 3306 db_user = root db_host = localhost db_pass = db_name = iotea

alterar o caminho do db.ini em db.py

# em db.py

# cf.read ("/ data / www / python3_iotea_hb / iotea / conf / db.ini") cf.read ("/ home // iotea-hb / db.ini")

Etapa 8. Altere a porta em app.py e inicie o site:

# em app.py

# app.run (debug = True, port = 6000) app.run (debug = True, port = 8080)

# no terminal

pip install gunicorn gunicorn -w 5 -b 0.0.0.0:8080 app: app

agora visite 127.0.0.1:8080 em seu navegador da web, você pode ver o site, mas os dados em tempo real não são exibidos.

Etapa 9. Obter dados de Loriot

Abra outro terminal, entre novamente no ambiente virtual e inicie o aplicativo Loriot:

cd iotea-hb

fonte bin / ativar gunicorn loriot: app

Espere um pouco, você verá os dados exibidos no site, ou você pode alterar o wss em loriot.py:

# em loriot.py

#ws = create_connection ("wss: //cn1.loriot.io/app? token = vnwEuwAAAA1jbjEubG9yaW90LmlvRpscoh9Uq1L7K1zbrcBz6w ==")

ws = create_connection ()

Etapa 5: Operação

Você pode visitar nossos sites para visualizar dados em tempo real:

  • Em Ya'an
  • Para Demonstração

Recomendado: