Índice:
Vídeo: UCL - IIOT Greenhouse: 11 etapas
2025 Autor: John Day | [email protected]. Última modificação: 2025-01-13 06:58
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
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
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
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 +
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
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:
- PySerial
- 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
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
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.