Índice:

UCL - IIOT Greenhouse: 11 etapas
UCL - IIOT Greenhouse: 11 etapas

Vídeo: UCL - IIOT Greenhouse: 11 etapas

Vídeo: UCL - IIOT Greenhouse: 11 etapas
Vídeo: Week 3 Day 3 Pitch Competition - Africa-UK AgriFood Innovation Mission 2020 - Western 2024, Novembro
Anonim
UCL - IIOT Greenhouse
UCL - IIOT Greenhouse

Este projeto é uma extensão do nosso projeto anterior com o Greenhouse (https://www.instructables.com/id/EAL-EMBEDDED-GREE…).

Neste projeto adicionamos um banco de dados, onde registramos todos os nossos dados e depois os visualizamos com o node-red para uma maior visão geral.

O conteúdo que registramos em nosso banco de dados é umidade, temperatura e umidade do solo, que é mostrado em diferentes diagramas.

Além do dataloggin, também podemos controlar qual perfil está ativo na Estufa e controlá-lo remotamente.

Então, também podemos controlar a bomba e o ventilador manualmente.

Etapa 1: Guia de instalação

Guia de instalação
Guia de instalação

O primeiro passo é instalar todos os diferentes componentes.

Dentro dos colchetes (), listamos onde o componente está conectado. Por exemplo, o Arduino está conectado ao Raspberry Pi por meio de um cabo USB.

Hardware usado:

  • Arduino (Raspberry Pi)
  • Raspberry Pi 3 B +
  • Higrômetro de solo (Arduino)
  • Sensor DHT11 (Arduino)
  • Bomba de água submersível HG-320 (relé)
  • Relé 5V (Arduino)
  • Um ventilador de computador (relé)
  • Fonte de alimentação de 230 V (bomba)

Software usado:

  • Raspbian (SO para Raspberry Pi)
  • IDE Arduino
  • Python (Raspberry Pi) - PySerial- MySQLclient
  • Node-Red (Raspberry Pi) - Pythonshell- Summariser- MySQL- Dashboard
  • Servidor MySQL (freemysqlhosting.net)

Primeiro você terá que conectar os componentes de hardware, então siga este guia para construir a estufa: Guia de instalação.

Então você terá que instalar o Raspbian OS em seu Raspberry Pi. Depois disso, você terá que instalar o Python e, em seguida, instalar as bibliotecas Python.

A próxima etapa é instalar o Node-Red no Raspberry Pi e, em seguida, navegar até o gerenciador de paletas e instalar os módulos declarados anteriormente.

Então vá para este site Servidor MySQL grátis e crie um servidor MySQL grátis.

Quando tudo isso estiver feito, você está pronto para transferir o script Python para o Raspberry Pi, importar o script Node-Red e fazer upload do código para o Arduino.

Etapa 2: Demonstração de controle

Image
Image

Etapa 3: Lista de peças / software usado no projeto

Usamos a seguinte tecnologia para fazer o Greenhouse

  • Arduino
  • Raspberry Pi
  • Nó-Vermelho
  • Pitão
  • PHPMyAdmin

Etapa 4: Lista I / 0

Diagrama de Fiação
Diagrama de Fiação

Etapa 5: Diagrama de fiação

Etapa 6: o código do Arduino

O código do Arduino funciona imprimindo os dados, medidos pelos sensores, para a conexão serial onde são lidos pelo Raspberry Pi e transferidos para o banco de dados.

O Arduino também tem alguns pinos de entrada digitais conectados ao Raspberry Pi que o Arduino lê e se um dos três se tornar ALTO, o perfil será alterado por causa de uma instrução IF.

Além disso, atualizamos o código para usar Millis em vez de atraso, o que permite que os botões e o resto do código sejam lidos o tempo todo, em vez de um intervalo pelo antigo atraso.

Etapa 7: Raspberry Pi 3 B +

Raspberry Pi 3 B +
Raspberry Pi 3 B +

Usamos um Raspberry Pi 3 B + para conectar nosso Arduino à internet e um banco de dados MySQL. Isso nos possibilitou armazenar dados de nossos sensores e fazer uma interface visual para o usuário final. Para a interface do usuário, usamos Node-Red com a paleta Dashboard.

Mas antes que pudéssemos mostrar nossos dados de sensor no Node-Red, precisávamos de uma maneira de fazer upload dos dados em um banco de dados MySQL e, para isso, fizemos um script Python que rodaria em nosso Raspberry Pi.

Etapa 8: Python

Pitão
Pitão

O script Python é usado para receber dados da comunicação serial proveniente do Arduino. O script então envia os dados para um banco de dados MySQL.

Usamos duas bibliotecas, pyserial e mysqlclient.

Portanto, o primeiro passo seria baixar essas duas bibliotecas:

  1. PySerial
  2. MySQLclient

PySerial é usado para coletar dados do Arduino via comunicação serial.

dispositivo = '/ dev / ttyUSB0'

arduino = serial. Serial (dispositivo, 9600)

A primeira linha está sendo usada para definir nossa porta COM. No Raspberry Pi é / dev / ttyUSB0, que usamos para o Arduino. A segunda linha é para abrir a porta serial para o Arduino. Nós apenas definimos qual porta COM e em que velocidade a conexão está rodando.

O resto do código está sendo executado em um loop while.

Em seguida, usamos vários blocos Try e Except. Primeiro, o código está tentando executar dentro do bloco Try, se isso falhar, ele executa o bloco Except. Mas se o bloco Try funcionar bem, ele não executa o bloco Except, apenas executa o resto do código.

Portanto, dentro dos blocos Try, temos o código que lerá a comunicação serial e a enviará para nosso banco de dados MySQL.

hygrolist = arduino.readlines (1)

templist = arduino.readlines (2) humidlist = arduino.readlines (3)

Portanto, o código acima é para ler linhas na comunicação serial. O número no final do código define a linha lida no serial. Portanto, essas linhas estão sendo categorizadas em diferentes variáveis.

Quando os dados do Arduino são recebidos, usamos o módulo mysqlclient para enviar os dados ao nosso servidor MySQL.

db = _mysql.connect (host = "sql7.freemysqlhosting.net", user = "sql7256552", passwd = "3ebtbP8FQ2", db = "sql7256552")

Esta linha é para conexão com nosso banco de dados MySQL. Ele especifica o servidor, nome de usuário, senha e a qual banco de dados ele deve se conectar dentro do servidor. Aqui você deve especificar a conexão com seu banco de dados MySQL.

db.query ("INSERTINTO` TempHumid` (`temp`,` humid`, `higro`) VALORES (% s,% s,% s)"% (temp, úmido, higro))

Então, aqui pegamos nossa conexão de banco de dados e fazemos uma consulta SQL. A consulta diz que os valores devem ser inseridos dentro da tabela “TempHumid” e depois nas colunas “temp”, “úmido” e “higro”. A última parte “(% s,% s,% s)” é a formatação da string e é usada para dar ao banco de dados um formato que ele possa ler.

E toda essa ação é colocada em um loop while, para que continuemos recebendo os dados enviados ao servidor MySQL.

Se você quiser ver todo o código, baixe o script python (TempHumid.py).

Etapa 9: MySQL

MySQL
MySQL
MySQL
MySQL

Para o servidor MySQL, usamos um serviço gratuito em www.freemysqlhosting.net. Poderíamos ter feito um servidor localmente no Raspberry Pi, mas optamos pelo serviço gratuito para torná-lo totalmente conectado à nuvem / internet.

Para acessar seu MySQL, você deve ir para phpmyadmin.co e fazer o login com as credenciais de sua conta freemysqlhosting.

Quando estiver dentro, você deve criar uma tabela chamada "TempHumid", dentro desta tabela você deve criar 4 colunas chamadas "ID", "temp", "úmido" e "higro". Na primeira coluna (ID) você deve marcar a caixa A_I (Incremento Automático). Isso ocorre para que a coluna ID forneça um ID a cada conjunto de dados. Todas as colunas a seguir devem ser definidas como INT (inteiro) e definir o valor padrão como NULL.

Etapa 10: Nó-vermelho

Nó-Vermelho
Nó-Vermelho
Nó-Vermelho
Nó-Vermelho
Nó-Vermelho
Nó-Vermelho

Em nosso projeto, usamos o Node-Red para fazer uma interface gráfica. O Node-Red está sendo executado no Raspberry Pi e está coletando dados de nosso banco de dados MySQL e mostrando esses dados com medidores em formato de rosca e gráficos gráficos, para que o usuário final possa monitorar os dados. A vantagem do Node-Red é que ele pode ser visualizado em qualquer dispositivo, o que significa que o site será redimensionado para o dispositivo que está visualizando o conteúdo.

Para instalar nossa programação Node-Red, olhe para a Etapa 1 e baixe o documento chamado "Node-Red.docx". Em seguida, copie e cole o texto no Node-Red por meio da função de importação no canto superior direito.

Depois disso, altere as configurações do banco de dados para o banco de dados MySQL.

Recomendado: