Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

Rastreador solar baseado na Internet das coisas (IoT)

Componentes e suprimentos

Arduino Mega 2560
× 1
Ethernet Shield (Wiznet W5100) para Arduino
× 1
Micro servo motor SG90
× 2
LDR, 5 Mohm
× 4
Sensor de temperatura DHT22
× 1
Mini painel solar
× 1
Resistor 330 ohm
× 4
Resistor de furo passante, 10 ohm
× 2
Resistor 220 ohm
× 1
LED de 5 mm:Vermelho
× 1

Aplicativos e serviços online

myDevices Cayenne
Arduino IDE

Sobre este projeto


Este projeto apresenta uma solução de IoT simples e de baixo custo para monitorar e controlar um sistema rastreador solar de eixo duplo inteligente para avaliação de desempenho.



O sistema rastreador solar baseado em IoT proposto é representado na Fig. 1. É um rastreador solar de eixo duplo que pode girar automaticamente para rastrear a posição do sol usando sensores LDR, ou manualmente pelo usuário através do painel de um aplicativo IoT. O sistema começa com a detecção da posição do sol (intensidade da luz) pelos sensores LDR e envia os dados para o controlador (placa Arduino Mega). Este último então processa esses dados para comandar os servomotores (SM1 e SM2) que seguram o painel PV para girar em direção ao sol. Os valores de tensão e corrente fotovoltaica gerada, temperatura e umidade também são enviados ao Arduino por meio de sensores associados. Em seguida, o escudo Ethernet, que é montado com o Arduino e permite a conexão com a Internet, enviará os dados que foram capturados e / ou processados ​​pelo Arduino para a nuvem (servidor web). Por último, os dados do rastreador solar, incluindo sensores LDR, energia fotovoltaica, temperatura e umidade, são exibidos em tempo real no aplicativo de monitoramento de IoT por meio de widgets pré-criados. O aplicativo de monitoramento IoT é projetado usando Cayenne myDevicesplatform. Uma vez que o usuário está conectado à internet de seu computador ou smartphone, ele pode visualizar, no painel do aplicativo IoT, todos os dados do rastreador solar em seus widgets associados. Portanto, o usuário possui os dados necessários vinculados ao ambiente e ao desempenho do painel FV. Além disso, no modo manual, os servomotores obterão direções angulares de seus widgets associados no painel. Assim, o usuário pode controlar seu sistema para buscar as melhores condições ambientais e extrair o máximo de energia do painel fotovoltaico. O aplicativo IoT também é programado para enviar alertas de notificação (SMS ou e-mail) quando um senor atinge um valor limite predefinido.

Design de hardware

Conforme mostrado na Fig. 2, o sistema rastreador solar IoT consiste em um painel fotovoltaico, dois servo motores, quatro sensores LDR, um circuito divisor de tensão, um sensor de temperatura e umidade, um Led e a placa Arduino Mega.

O painel fotovoltaico usado tem 115 mm por 85 mm de tamanho com uma saída de 1,6 W e pode gerar uma tensão de até 6 V. Dois servomotores de 180 graus são usados ​​para motorizar o rastreador solar e são controlados pela placa Arduino através dos pinos 5 e PWM 6. O servo motor esquerda-direita (LR) (MG996R) gira o rastreador solar no eixo vertical (Leste / Oeste), enquanto o servo motor Up-down (UD) (SG90) gira o rastreador solar no eixo horizontal ( Sul Norte).

Quatro LDRs (Cds GL5528) são usados ​​para detectar a posição do sol e que foram fixados nos quatro cantos do painel. Os sensores LDR são conectados ao Arduino por meio de pinos analógicos de A0 a A3. O LDR é um resistor cujo valor diminui com o aumento da intensidade da luz incidente em sua superfície. O sensor LDR é projetado como um circuito divisor de tensão, como pode ser visto na Fig. 2. A tensão de saída do divisor é convertida pelo microcontrolador do Arduino Mega do valor analógico em um valor digital entre 0 e 1023. Porque o analógico para digital O conversor (ADC) do microcontrolador é codificado em 10 bits. O valor do resistor em série no circuito do sensor LDR é 330 Ω.

A temperatura e a umidade são medidas através do sensor DHT22. O DHT22 tem um termistor e um sensor capacitivo de umidade embutido para medir a temperatura e a umidade relativa. Sua faixa de temperatura é de -40 a 80 ° C com <± 0,5 ° C de precisão, e sua faixa de umidade é de 0 a 100% com ± 2% (Máx ± 5%) de precisão. Este sensor usa um fio de sinal para transmitir dados ao Arduino (pino digital 2) e dois fios para a fonte de alimentação.

A tensão e a corrente fotovoltaica são medidas através de um circuito divisor de tensão que atua também como uma carga e que consiste em dois resistores em série de 10 Ohms. A saída do circuito divisor é conectada ao pino analógico A4 do Arduino. Além disso, um LED, que é conectado ao pino digital 3, reflete no circuito do sistema o estado de modo do rastreador solar (manual ou automático).

O Arduino Mega com microcontrolador ATmega2560 é usado como o controlador incorporado que interage com o escudo Arduino Ethernet junto com a plataforma de monitoramento. A blindagem TheEthernet, que é montada acima da placa Arduino, deve ser conectada a um roteador Wi-Fi (ou PC) por meio de um cabo RJ45, conforme mostrado na Fig. 3. A blindagem Ethernet é baseada no chip Ethernet Wiznet W5100 que fornece um pilha de rede (IP) para protocolos TCP e UDP.





Design de software


a. IDE Arduino

Arduino é uma plataforma de prototipagem eletrônica de código aberto com hardware e software fáceis de usar. A plataforma Arduino fornece um ambiente de desenvolvimento integrado (IDE), que inclui suporte para linguagens de programação C e C ++. A placa Arduino usada neste trabalho é programada pelo IDE que serve como um editor de código e a partir do qual o código do programa pode ser carregado para o microcontrolador por meio de um cabo USB, como pode ser mostrado na Fig. 3. A placa Arduino Mega é utilizada para implementar todos os requisitos de software do rastreador solar baseado em IoT.

b. myDevices Cayenne

MyDevices é uma empresa que oferece soluções de IoT. Ele oferece uma plataforma ponta a ponta para a IoT. No nosso projeto vamos nos concentrar no Cayenne, uma das soluções da myDevices. Essa ferramenta permite que desenvolvedores, designers e engenheiros construam protótipos da IoT. Cayenne usa o protocolo Message QueuingTelemetry Transport (MQTT) para conectar qualquer dispositivo com Cayennecloud. Uma vez conectado, o usuário pode enviar e receber dados do dispositivo para o painel do Cayenne por meio dos Widgets criados. MQTT é um protocolo de mensagens de publicação-assinatura baseado no protocolo TCP / IP. A metodologia publicar-assinar usa um agente de mensagem que é responsável por entregar mensagens ao cliente. MQTT é a API para o envio de informações para a nuvem Cayenne ou dispositivos controlados pelo Cayenne. O agente de mensagens nesta conexão é a nuvem, ela gerencia os diferentes clientes (sensores e atuadores) que enviam e recebem os dados.

Para usar MQTT com Cayenne, precisamos usar as bibliotecas Cayenne. Para Arduino, a biblioteca CayenneMQTT pode ser instalada a partir do Gerenciador de Biblioteca do IDE. Para programar nosso aplicativo IoT baseado na plataforma Cayenne IoT, aproveitaremos as vantagens das funções predefinidas. Por exemplo, para estabelecer a conexão entre a nuvem Cayenne e o Arduino Mega equipado com o módulo Ethernet, chamamos a biblioteca CayenneMQTTEthernet onde declaramos nossas informações de autenticação (nome de usuário, senha e ID do cliente) que devem ser obtidas no Painel Cayenne. Então, na parte de configuração do programa, chamamos Cayenne.begin () função para estabelecer a conexão com o painel do Cayenne. Para cada atuador, criamos uma função com um parâmetro inteiro entre 0 e 31 imperativamente chamado CAYENNE IN (VIRTUAL CHANNEL) . Para cada sensor, criamos uma função com um parâmetro inteiro entre 0 e 31 chamado de CAYENNE_OUT (VIRTUAL_CHANNEL) . Na parte do loop do programa, chamamos a função predefinida Cayenne.loop () , esta própria função chama as funções CAYENNE_OUT e CAYENNE_IN. O canal virtual como o próprio nome sugere é um canal que não existe fisicamente, ele caracteriza widgets de visualização ou comando. Permite que sejam vinculados ao sensor ou atuador correspondente.

c. O incorporado design de software

O software embarcado é a peça que será embarcada no Arduino Mega para interagir entre o módulo Ethernet e a nuvem Cayenne (consulte o Apêndice). Ele é projetado da seguinte forma:

(i) O rastreador solar baseado em IoT tem dois modos de função:manual e automático. Um botão criado no painel do Cayenne tem a função de alternar entre os dois modos. Quando está inativo, o modo manual é selecionado, caso contrário, o modo automático. Além disso, é estabelecida uma função no código do Arduino que permite recuperar o estado do botão. O LED no circuito do sistema reflete o estado desta chave.

Portanto, para que o controlador conheça o modo de operação selecionado, basta testar o estado do pino no qual o LED está conectado. Por exemplo, se o estado do LED estiver baixo, o controlador irá chamar a função de modo manual para executar, caso contrário, irá chamar a função automática.

(ii) Se o modo manual for selecionado, o usuário pode controlar diretamente as posições dos servomotores para orientar o painel fotovoltaico de leste a oeste pelo servomotor L-R ou de sul a norte pelo servomotor U-D. O controle é feito a partir dos widgets associados dos servomotores no painel do aplicativo IoT.

Neste modo, o controlador chama Cayenne.loop () função que por si mesma chama todas as funções CAYENNE_IN , incluindo aqueles relacionados a servomotores, para executar. O Cayenne.loop () a função também chamará todas as funções CAYENNE_OUT, vinculadas aos sensores, para executar. Onde os dados relativos aos sensores LDR, corrente PV, tensão e potência, temperatura e umidade seriam enviados ao servidor para que pudessem ser visualizados em seus widgets associados no aplicativo IoT.

(iii) Se o modo automático for selecionado, o algoritmo mostrado na Fig. 4 será executado. O algoritmo começa lendo os valores analógicos retornados pelos sensores LDR. Em seguida, ele processa esses dados para comandar os servomotores que movem o painel PV em direção à posição do sol. Considerando o movimento do rastreador solar baseado no eixo vertical, os valores médios dos dois LDRs à esquerda e os dois LDRs à direita são comparados e se as esquerdas receberem mais luz, o painel PV se moverá nessa direção (sentido horário) através do servomotor LR. Este último irá parar quando o resultado da diferença estiver entre -10 e 10. Esta faixa é usada para estabilizar o controlador e reduzir o consumo de energia dos servomotores. Caso contrário, se o conjunto correto de LDRs receber mais luz, o painel PV se moverá nessa direção (sentido anti-horário) através do servomotor L-R e continuará a girar até que o resultado da diferença esteja na faixa [−10, 10]. A mesma abordagem é usada para o movimento do rastreador solar baseado no eixo horizontal, onde os valores médios dos dois LDRs na parte superior e os dois LDRs na parte inferior são comparados.

Assim como no modo automático, o controlador também chamará o Cayenne.loop () função para enviar os dados do rastreador solar para o aplicativo IoT.

d. Desenvolvimento do aplicativo de monitoramento de IoT

(i) Interface de hardware com a plataforma Cayenne IoT

Para fazer a interface do hardware, incluindo sensores e atuadores, com a plataforma IoT, precisamos seguir as próximas etapas:

+ Depois de criar uma conta, inicie sessão no site Cayenne myDevice (Fig. 5 (a)).

+ Em seguida, clique em “Traga suas próprias coisas” da API Cayenne (Fig. 5 (b)).

+ Copie as credenciais MQTT (nome de usuário, senha e ID do cliente) do Crete App (Fig. 6) e cole-as no código-fonte do Arduino conforme descrito anteriormente. Depois de compilar e enviar com sucesso todo o código para o Arduino Mega, abra o Serial Monitor no Arduino IDE para obter as impressões de log do Cayenne (Fig. 7). Assim que o nosso dispositivo estiver online e se conectar ao Cayenne, a página anterior (Fig. 6) será atualizada automaticamente e veremos nosso dispositivo no painel online, como pode ser visto na Fig. 8.





+ Em seguida, para fazer a interface dos sensores e atuadores, ou seja, criar seus widgets, clique em "Adicionar novo ...", selecione "Dispositivo / Widget" e clique em "Custom Widgets" (Fig. 9). Em seguida, selecione um widget e preencha todas as suas configurações associadas (o número do canal deve ser o mesmo do código) e, por fim, clique em "Adicionar widget" para adicioná-lo ao painel do seu dispositivo. Para nós, escolhemos o widget "valor" para todos os sensores, widget "Botão" para mudar de modo e o widget "Slider" para servomotor.

Finalmente, a Fig. 10 ilustra o aplicativo IoT projetado para monitorar dados do rastreador solar. Uma vez estabelecida a conexão com o sistema rastreador solar, os dados do sensor podem ser visualizados em seus widgets associados, o modo de rastreamento (automático ou manual) pode ser selecionado a partir do botão switch, bem como controlar os ângulos dos servomotores através de seus widgets. Os dados do sensor também podem ser obtidos na forma gráfica, modificando o tipo de representação em suas configurações, ou apenas clicando no ícone gráfico acima do widget.

(ii) Criação de alertas

Um dos critérios mais importantes em um sistema de monitoramento é sua capacidade de enviar alertas de notificação para informar os usuários quando um evento, relacionado aos seus dispositivos monitorados, ocorre. Para isso, aproveitamos um dos recursos do Cayenne para adicionar alertas ao nosso aplicativo IoT, onde podemos pré-programar nosso aplicativo para enviar um alerta de notificação (SMS, e-mail ou ambos) ou para realizar uma ação específica. Por exemplo, um alerta de temperatura é criado para enviar uma notificação por e-mail ao usuário (ou destinatários) quando a temperatura monitorada atingir um valor limite, conforme pode ser mostrado na Fig. 11. Para criar um alerta, clique em “Adicionar novo. .. "e selecione" Trigger ", defina o evento e sua ação e, por fim, clique em" salvar "para adicioná-lo ao painel.





Protótipo


A Fig. 12 apresenta o protótipo do rastreador solar em seu estado destacado e montado. É composto pelo painel PV, servomotores-R e U-D e sensores LDR. O painel é fixado ao U-Dservomotor de um lado e com um rolamento do outro lado para garantir melhor flexibilidade quando o rastreador solar gira em torno do eixo horizontal. O conjunto é conectado ao servomotor L-R. Os sensores LDR são fixados nos quatro cantos do painel dentro de cilindros ocos. Se o painel não for perpendicular ao sol, pelo menos um LDR será coberto pela sombra causada pelo cilindro ao redor. Portanto, haverá uma diferença na intensidade da luz. A melhor orientação é quando as intensidades de luz são iguais em todos os sensores LDR. A Fig. 13 mostra todo o protótipo do sistema rastreador solar baseado em IoT, e é claro que todos os componentes relatados na parte de hardware foram usados ​​para construí-lo.



Para mais detalhes sobre os resultados obtidos, consulte o artigo neste link:https://link.springer.com/chapter/10.1007%2F978-3-030-64565-6_4

Código

  • O código incorporado do sistema de rastreamento solar baseado em IoT
O código integrado do sistema rastreador solar baseado em IoT Arduino
 / ********************************************** ****************** PROJETO:sistema de rastreamento solar baseado em IoT / o software embarcado Aboubakr El Hammoumi / [email protected]********* *************************************************** **** / # define CAYENNE_PRINT Serial # include  // Biblioteca CayenneMQTT #include  // Biblioteca servo motor #include  // Biblioteca DHT #define DHTTYPE DHT22 # ​​define DHTPIN 2DHT dht (DHTPIN, DHTTYPE); // MQTT credentials char nome de usuário [] ="498d2d00-afe2-11ea-883c-638d8ce4c23d"; char senha [] ="ab4a8f92d94033c01f6e18ce1d8a84d8c304c9c8c4"; 93bf-d33a96695544 "; Servo servo_x; // servomotor up-down int servoh =0; int servohLimitHigh =170; int servohLimitLow =10; Servo servo_z; // servomotor esquerdo-direito int servov =0; Int servovLimitHigh =170; int servovLimitLow =10; int topl, topr, botl, botr; int threshold_value =10; float Vout; void setup () {Serial.begin (9600); Cayenne.begin (nome de usuário, senha, clientID); servo_x.attach (5); servo_z.attach (6); dht.begin (); pinMode (3, SAÍDA); digitalWrite (3, BAIXO); } loop vazio () {topr =analogRead (A2); topl =analogRead (A3); botl =analogRead (A4); botr =analogRead (A5); Vout =(analogRead (A1) * 5,0) / 1023; Serial.println ("Modo manual"); Cayenne.loop (); if (digitalRead (3) ==HIGH) {Serial.println ("Modo automático"); servoh =servo_x.read (); servov =servo_z.read (); int avgtop =(topr + topl) / 2; int avgbot =(botr + botl) / 2; int avgright =(topr + botr) / 2; int avgleft =(topl + botl) / 2; int diffhori =avgtop - avgbot; int diffverti =avgleft - avgright; / * rastreamento de acordo com o eixo horizontal * / if (abs (diffhori) <=threshold_value) {servo_x.write (servoh); // parar o servo para cima-para baixo} else {if (diffhori> threshold_value) {Serial.println ("x - 2"); servo_x.write (servoh -2); // Rotação no sentido horário CW if (servoh> servohLimitHigh) {servoh =servohLimitHigh; } atraso (10); } else {servo_x.write (servoh +2); // CCW if (servoh  threshold_value) {servo_z.write (servov -2); // CW if (servov> servovLimitHigh) {servov =servovLimitHigh; } atraso (10); } else {servo_z.write (servov +2); // CCW if (servov  

Esquemas


Processo de manufatura

  1. Internet das coisas fascinante:o que motiva os praticantes de IoT?
  2. Trazendo o blockchain para a Internet das Coisas
  3. O desafio de segurança apresentado pela Internet das Coisas:Parte 2
  4. Segurança cibernética e a Internet das coisas:segurança IoT à prova de futuro
  5. Investindo no potencial da Internet das Coisas
  6. A verdadeira Internet das Coisas?
  7. A Internet das Coisas:Gerenciando o influxo de dados
  8. 5 desafios que a Internet das Coisas ainda enfrenta
  9. Liberando o Poder da Internet das Coisas Industrial
  10. Solar Tracker V2.0