Índice:
- Etapa 1: Coisas usadas neste projeto
- Etapa 2: História
- Etapa 3: Conexão de Hardware
- Etapa 4: Programação de software
- Etapa 5: Operação
Vídeo: Solução IoTea LoRa vista (atualização 1811): 5 etapas
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:38
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.
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ó
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
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:
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:
Experimentos de PWM com motor DC aleatório + solução de problemas do codificador: 4 etapas
Experimentos de PWM com motor DC aleatório + solução de problemas do codificador: Muitas vezes, o lixo de alguém é o tesouro de outro, e esse foi um desses momentos para mim. Se você tem me acompanhado, provavelmente sabe que assumi um grande projeto para criar minha própria impressora 3D CNC a partir de sucata. Essas peças foram
Arduino - Robô de solução de labirinto (MicroMouse) Robô que segue a parede: 6 etapas (com imagens)
Arduino | Maze Solving Robot (MicroMouse) Wall seguindo Robot: Bem-vindo, sou Isaac e este é meu primeiro robô " Striker v1.0 ". Este robô foi projetado para resolver um labirinto simples. Na competição, tivemos dois labirintos e o robô foi capaz de identificá-los. Quaisquer outras mudanças no labirinto podem exigir uma mudança no
Solução LoRa IoTea observada: 5 etapas
Seeed LoRa IoTea Solution: Um sistema automático de coleta de informações aplicado à plantação de chá. Faz parte da coleta inteligente de informações agrícolas
Solução IoTea LoRa vista (com Azure, atualização 1812): 5 etapas
Solução IoTea LoRa observada (com Azure, atualização 1812): o Microsoft Azure é um serviço em nuvem que fornece potência de computação mais poderosa e estável. Desta vez, tentamos enviar nossos dados IoTea para ele
Projeto Arduino: Testar o módulo LoRa RF1276 para solução de rastreamento GPS: 9 etapas (com imagens)
Projeto Arduino: Teste do Módulo LoRa RF1276 para GPS Tracking Solução: Conexão: USB - SerialNeed: Navegador Chrome Necessidade: 1 X Arduino Mega Necessidade: 1 X GPS Necessidade: 1 X cartão SD Necessidade: 2 X LoRa Modem RF1276Função: Arduino Enviar valor GPS para a base principal - dados de armazenamento da base principal no Dataino Server Lora Module: Ultra long range