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

Controle de clima zoneado com MediaTeks LinkIt ™ Smart 7688

Componentes e suprimentos

Espressif ESP8266 ESP-01
× 1
Arduino Nano R3
× 1
Microchip Technology ATtiny85
× 1
Sensor de temperatura DHT22
× 1
Servos (Tower Pro MG996R)
× 1

Aplicativos e serviços online

Arduino IDE

Sobre este projeto





O inverno está chegando


Quando minha esposa e eu tivemos nosso primeiro filho no inverno passado, compramos um aquecedor elétrico para manter a área ao redor de nossa filha agradável e aquecida. Conforme íamos de um cômodo para outro, trouxemos o aquecedor conosco, pensando que estávamos sendo supereficientes com controle de temperatura no ponto de uso. Um mês depois, recebemos uma conta de luz com o dobro do valor normal e percebemos que teria sido mais barato apenas aquecer a casa inteira com o aquecedor a gás 24 horas por dia.

O inverno está chegando novamente, então desta vez eu atualizei para um termostato WiFi para poder ligar o aquecedor enquanto estou no andar de baixo ou aconchegante debaixo das cobertas. Isso é muito mais conveniente, mas ainda estamos aquecendo a casa inteira, embora na maioria das vezes estejamos todos em uma parte da casa.





Trabalhe com mais inteligência


Olhando para nossos registros de sensor de movimento que controlam nossa iluminação, é bastante óbvio que passamos 4-5 horas no andar de baixo como uma família depois do trabalho e, em seguida, subimos para nossos quartos por volta das 21h, onde dormiremos até sairmos na manhã seguinte para trabalhar. Os fins de semana são um pouco diferentes, mas de segunda a sexta funciona como um relógio (especialmente com uma criança de 10 meses em um horário estrito de sono).

Eu examinei os sistemas HVAC que têm monitoramento de temperatura em várias zonas e defletores de duto controláveis ​​sem fio, mas o hardware é muito caro e todo o software parece ter sido uma reflexão tardia (com pouco suporte ou atualizações conforme a tecnologia fica melhor). Eu já tenho alguns sensores de temperatura habilitados para WiFi em minha casa para controladores de unidades AC de ponto de uso e estou ansioso por uma razão para usar alguns servos pequenos em um projeto. Tudo que eu preciso são servos conectados por WiFi que podem abrir / fechar dutos de ventilação no meu sistema HVAC ... deve ser fácil o suficiente.





LinkIt ™ Smart 7688 da MediaTek


O novo LinkIt Smart 7688 Duo HDK da MediaTek é um microprocessador conectado por WiFi rodando OpenWRT com um microcontrolador compatível com Arduino integrado. É perfeito para este projeto, pois tem todos os pinos de I / O necessários para vários sensores e servo motores, além da capacidade de WiFi para se comunicar com meus sensores de temperatura existentes. Além disso, como já tem OpenWRT instalado com uHTTPd, posso executar o WebApp diretamente no LinkIt Smart 7688 HDK para um pacote totalmente independente.





Configurando o LinkIt Smart 7688 HDK


Esta é a primeira vez que uso uma placa com WiFi embutida, então estava me preparando para uma curva de aprendizado íngreme. Felizmente, a configuração consiste literalmente em 3 etapas:
  • Ligue o Linkit Smart 7688 e conecte-o ao seu ponto de acesso WiFi a partir do seu computador
  • Faça login na interface da web e insira as configurações do seu ponto de acesso WiFi
  • Adicione a placa "LinkIt Smart 7688 Duo" no IDE Arduino

É isso! Quando você seleciona a placa "LinkIt Smart 7688 Duo" no IDE do Arduino, você pode enviar seu esboço via serial como qualquer outra placa ou pode fazer upload por WiFi (isso será muito útil mais tarde). O guia de introdução e o guia do desenvolvedor do Linkit Smart 7688 também podem ser úteis para você.

Se você quiser permitir que o microcontrolador use o WiFi diretamente em seu esboço do Arduino (o que faremos), basta inserir o ssh no HDK e virar um pouco para habilitar a compatibilidade da biblioteca do Arduino Yun.

Você pode simplesmente copiar / colar as linhas aqui:





Cliente WiFi e servo controlador


Como ele é compatível com a biblioteca de pontes Yun e usa o IDE do Arduino, é realmente fácil adaptar o código existente. Usando a biblioteca de ponte, posso fazer com que o HDK pesquise o servidor da web integrado para a configuração de ventilação (no andar de cima, no andar de baixo ou na casa inteira) e, em seguida, ajuste os dois servos de acordo. No vídeo abaixo eu o tinha rodando em um Raspberry Pi 2, mas consegui portar o WebApp para o LinkIt Smart 7688 para torná-lo ainda mais eficiente (código incluído no final).

Meu WebApp é executado em php, então usei apenas o gerenciador de pacotes opkg para instalá-lo, pois está incluído no OpenWRT no LinkIt Smart 7688:

Em seguida, atualizei o arquivo / etc / config / uhttpd para interpretar php adicionando esta linha:

e reiniciou o uHTTPd





Hardware


Eu conectei o chifre do servo diretamente à ventilação e fabriquei um suporte de alumínio para segurar o servo na posição com alguns espaçadores de aço inoxidável. Ainda há um pouco de jogo, então vou adicionar alguns laços zip para tornar isso um pouco mais permanente.





Software


Esta compilação realmente se resume a três componentes:
  • Sensores de temperatura ao redor da casa enviam atualizações periódicas para o servidor da web uHTTPd em execução no LinkIt Smart 7688.
  • Um WebApp em execução no LinkIt Smart 7688 que mostra o estado atual e permite que você reconfigure manualmente as aberturas.
  • O MCU no LinkIt Smart 7688 que controla as aberturas para direcionar o ar quente para cima ou para baixo, dependendo da hora do dia.

Os sensores de temperatura são apenas ATtiny85s ou Arduino Nanos conectados a um DHT11 ou DHT22 e enviando essas informações de temperatura / umidade para um servidor web por meio de um ESP8266 por meio de um software serial. Tenho uma descrição completa desses sensores aqui, uma vez que foram originalmente projetados e desenvolvidos como fase II do meu projeto de ar condicionado de ponto de uso (esta parte é totalmente opcional, mas fornecerá métricas adicionais que podem ser usadas para ajustar sistema e, eventualmente, automatizá-lo).

O próprio LinkIt Smart 7688 HDK está no meu sótão conectado diretamente às aberturas do duto. No lado do OpenWRT, um cronjob atualiza o arquivo de texto do estado de ventilação. O lado do MCU que executa o esboço do Arduino verifica esse arquivo de texto periodicamente e ajusta as aberturas de acordo.

Para verificar o status das aberturas e reconfigurá-las manualmente, criei um pequeno WebApp que está hospedado diretamente no LinkIt Smart 7688. Com dyndns e encaminhamento de porta, posso visualizar e controlar tudo isso de fora de casa, se necessário.





Espaço para melhorar


Com as noites já ficando mais frias, eu precisava fazer isso funcionar o mais rápido possível, então algumas concessões foram feitas em nome da implantação rápida. No lado do hardware, estarei imprimindo em 3D as montagens adequadas para os servos, já que minhas montagens de hack-job funcionam um pouco. Além disso, o pequeno servo RC que usei na demonstração tem todas as engrenagens de plástico que não espero que dure por anos, então, como não quero voltar ao sótão tão cedo, irei trocar -los para servos maiores com engrenagens de metal.

Posso um dia adicionar servos adicionais conectados por WiFi às aberturas em cada quarto e fazer com que todos se conectem de volta ao único LinkIt Smart 7688.

Atualmente, as sondas de temperatura estão apenas despejando as leituras em um arquivo csv para que eu possa rastrear e representar graficamente com facilidade. Seria bom ligar o aquecedor mais cedo se a casa estiver muito fria, mas meu termostato WiFi ainda não tem API. Eu também gostaria de conectar meu sistema de automação residencial para que as aberturas se ajustem automaticamente com base na ocupação do quarto em tempo real derivada de sensores de movimento, em vez de serem inteiramente baseados na hora do dia (especialmente para fins de semana por causa de nossos horários dinâmicos).

Código

  • Ventilador WiFi LinkIt Smart Duo
  • Sensor de temperatura WiFi
  • Vent.php
  • LinkIt Smart Vent Android WebApp
Ventilador WiFi LinkIt Smart Duo C / C ++
Este esboço usa as bibliotecas Bridge e HTTP Client do Arduino Yun para pesquisar um servidor web e abrir / fechar as aberturas HVAC conforme necessário.
 / * Adaptado do exemplo de servo Sweep de BARRAGAN  e Yun Exemplo de cliente HTTP criado por Tom igoe  ** Ambos são de domínio público. *** Código adaptado para HAI (Home Automation w / Intelligence) por Buddy Crotty ** Este esboço do Arduino depende de um servidor web para fazer todo o trabalho pesado. Isso pode ser um dispositivo separado como um Raspberry Pi, ou você pode executá-lo no lado MPU do LinkIt Smart inOpenWRT. ** O servidor web coleta leituras de temperatura de toda a casa e determina onde o ar quente / frio precisa ir com base no tempo de dia, tempo externo (incluindo previsão) e ocupação da casa. ** Em seguida, ele produz 'andar de cima', 'andar de baixo' ou 'casa inteira' dependendo de para onde o ar precisa ser enviado. * / # include  #include  #include  Servo upservo; // cria um objeto servo para controlar o servo no andar de cima Servo downservo; // servo do amortecedor de ventilação do andar de baixo int uppos =0; // variável para armazenar a posição do servo (no andar de cima) int downpos =0; // posição do servo no andar de baixo const char * host ="192.168.1.80"; // IP interno do Home Automation Webserverint dopenangle =80; // Número de graus que seu servo precisa girar entre abrir / fechar no ventint dcloseangle =0; int uopenangle =140; int ucloseangle =0; void setup () {upservo.attach (9); // Pino para o Servo conectado ao amortecedor de ventilação do andar superior downservo.attach (10); // Pino para Servo conectado ao amortecedor de ventilação de baixo // inicia a ponte para OpenWRT pinMode (13, OUTPUT); digitalWrite (13, BAIXO); Bridge.begin (); digitalWrite (13, HIGH);} void wholehouse () {if (downpos <=dcloseangle) {// Certifique-se de que a ventilação já não esteja na posição // abra a ventilação de baixo para (downpos =dcloseangle; downpos <=dopenangle; downpos + =1) // Mova do ângulo fechado definido para o ângulo aberto, um passo de cada vez {downservo.write (downpos); atraso (20); // espera entre as etapas até que o servo alcance a posição}} if (uppos <=uopenangle) {// abre a ventilação do andar de cima para (uppos =ucloseangle; uppos <=uopenangle; uppos + =1) {upservo.write (uppos); atraso (20); }}} void downstairs () {if (downpos <=dopenangle) {// abrir a ventilação de baixo para (downpos =dcloseangle; downpos <=dopenangle; downpos + =1) {downservo.write (downpos); atraso (20); }} if (uppos> =ucloseangle) {// feche a ventilação do andar de cima para (uppos =uopenangle; uppos> =ucloseangle; uppos- =1) {upservo.write (uppos); atraso (20); }}} void upstairs () {if (uppos <=uopenangle) {// abrir a ventilação de cima para (uppos =ucloseangle; uppos <=uopenangle; uppos + =1) {upservo.write (uppos); atraso (20); }} if (downpos> =dcloseangle) {// feche a ventilação do andar de baixo para (downpos =dopenangle; downpos> =dcloseangle; downpos - =1) {downservo.write (downpos); atraso (20); }}} void loop () {cliente HttpClient; // Crie e faça uma solicitação HTTP:String cmd ="http://"; cmd + =host; cmd + ="/vent.txt"; client.get (cmd); // Lê bytes de entrada do servidor while (client.available ()) {int c =client.read (); if (c =='2') lá em cima (); if (c =='1') lá embaixo (); if (c =='0') casa inteira (); } atraso (60000);} 
Sensor de temperatura WiFi C / C ++
Sensor de temperatura e umidade conectado. Registra dados para o servidor central de automação residencial.
 / * * Código adaptado para HAI (Home Automation w / Intelligence) por Buddy Crotty * * Envia dados por meio de solicitações HTTP GET para seu servidor HAI * * A conectividade é via conexão serial de software para um Interface ESP8266 WiFi * já configurada para se conectar à sua wLAN, * mas você pode descomentar as configurações de WiFi para redefinir o SSID / senha * * / const char * host ="192.168.1.80"; // IP interno do servidor da Web de automação residencial char * devID ="downstairs"; // ID do dispositivo (palavra única, sem espaços, sem caracteres especiais) #include  SoftwareSerial ser (10, 11); // (RX, TX) // Serial do software para controlar o módulo ESP8266 // Serial do hardware para debugginglong utime =300000; // Tempo entre as atualizações // 900000 =15 minutos (para bateria / energia solar) // 300000 =5 minutos (para energia CA) // 5000 =5 segundos (para teste) // Deve ser superior a 10000 para ESP8266 a sair do modo de espera (modo de bateria) // Sensor de temperatura e umidade #include  # define DHTPIN 2 // Pino para sensor de temperatura / umidade # define DHTTYPE DHT22 // DHT11, DHT22 (AM2302, ou DHT21 (AM2301 ) DHT dht (DHTPIN, DHTTYPE); void setup () {Serial.begin (9600); ser.begin (9600); //ser.listen (); / * // Não comentar para redefinir o atraso das configurações de WiFi (1000); ser.println ("AT + CWMODE =1"); ser.println ("AT + CWJAP =\" SSID \ ", \" Senha \ ""); * / ser.println ("AT + RST"); / ( "| ------------------------- |"); Serial.print ("|"); para (int x =0; x <25; x ++) {Serial.print ("#"); delay (1000);} Serial.println ("|"); Serial.println ("Concluído");} float t =0; int h =0; float hi =0; void loop () {Serial.println (); // Temperatura e umidade float t =dht.readTemperature (true); int h =dht.readHumidity (); float hi =dht.computeHeatIndex (t, h); // Valores de saída sendo enviados para ThingSpeak Serial.print ("Temperatura:"); Serial.print (t); Serial.print ("* F \ t"); Serial.print ("Índice de calor:"); Serial.print (hi); Serial.println ("* F"); Serial.print ("Umidade:"); Serial.print (h); Serial.println ("% \ t"); Serial.print ("... conectando-se a"); Serial.println (host); // String de conexão TCP cmd ="AT + CIPSTART =\" TCP \ ", \" "; cmd + =host; cmd + =" \ ", 80"; ser.println (cmd); atraso (1000); if (ser.find ("Error")) {Serial.println ("AT + erro CIPSTART"); Retorna; } else {} // prepara GET string String getStr ="GET /tempupdate.php?ID="; getStr + =devID; getStr + ="&field1 ="; // Temp getStr + =t; getStr + ="&field2 ="; // Umidade getStr + =h; getStr + ="&field3 ="; // Índice de calor getStr + =hi; getStr + ="\ r \ n \ r \ n"; Serial.print ("Enviando URL de dados:"); Serial.println (getStr); // enviar comprimento de dados cmd ="AT + CIPSEND ="; cmd + =String (getStr.length ()); ser.println (cmd); if (ser.find (">")) {ser.print (getStr); Serial.println ("Sucesso!"); } else {ser.println ("AT + CIPCLOSE"); Serial.println ("Falha na conexão"); // alertar o usuário} Serial.print ("Próxima atualização em"); Serial.print (utime / 1000); Serial.println ("segundos"); delay (utime); // aguarde entre as atualizações} 
Vent.php PHP
Verifique o status e substitua manualmente a configuração de ventilação.
       
Apenas no andar de cima

Casa inteira

Apenas lá embaixo

Aberturas atualmente abertas para"; if ($ status ==="0 ") imprimir" a casa inteira "; if ($ status ===" 1 ") imprimir" Apenas lá embaixo "; if ($ status ===" 2 ") imprimir" Apenas lá em cima "; imprimir"
"; fclose ($ myfile); if ($ _GET ["zone"] ==""); else {$ myfile =fopen ("vent.txt", "w +") ou die ("Não foi possível abrir o arquivo!"); if ($ _GET ["zone"]! ="") print "

Enviando comando para abrir aberturas para"; if ($ _GET ["zone"] ==="0") imprimir "a casa inteira"; if ($ _GET ["zona"] ==="1") imprimir "Apenas lá embaixo"; if ($ _GET ["zona"] ==="2") imprimir "Apenas lá em cima"; imprimir "

"; fwrite ($ meuarquivo, $ _GET ['zona']); fclose ($ meuarquivo);}?>
LinkIt Smart Vent Android WebApp JSON
Arquivo de manifesto para que o Chrome no Android abra o controlador de ventilação como um aplicativo da web.
 {"name":"LinkIt Smart Vent", "icons":[{"src":"LinkIt_icon_36.png", "tamanhos":"36x36", "tipo":"imagem / png", "densidade":0,75}, {"src":"LinkIt_icon_48.png", "tamanhos":"48x48", "tipo":"imagem / png", "densidade":1,0}, {"src":"LinkIt_icon_128.png", "tamanhos":"128x128", "tipo":"imagem / png", "densidade":1,0}, {"src":"LinkIt_icon_192 .png "," tamanhos ":" 192x192 "," tipo ":" imagem / png "," densidade ":1,0}]," start_url ":" vent.php "," display ":" autônomo "," orientação ":" retrato "} 

Esquemas

ATtiny85 ou Arduino Nano puxando temps de um DHT11 / 22 e WiFi conectado com um ESP8266.

Processo de manufatura

  1. MÓDULO DE DADOS:Tela TFT ultra-esticada de 23,1 ”com controle inteligente
  2. Controle de acesso com QR, RFID e verificação de temperatura
  3. Melhor controle de qualidade com peças impressas em 3D
  4. Saldos de Aquisições Inteligentes AI com HI
  5. Aceitar moeda de controle com Arduino
  6. Controle remoto de TV a bateria com caixa impressa em 3D
  7. Arduino com Bluetooth para controlar um LED!
  8. Arduino Nano:Controle 2 motores de passo com joystick
  9. GÖPEL melhora o controle de qualidade na fabricação automotiva com robôs universais
  10. Torno com CNC