Índice:
- Etapa 1: Peças e ferramentas usadas:
- Etapa 2: Personalização do Gerenciador de Wifi
- Etapa 3: funções personalizadas para ação do formulário
- Etapa 4: Conexões e programa principal
- Etapa 5: Criação do servidor web
- Etapa 6: Etapa final !
Vídeo: Display WIFI para gerenciamento de produção: 6 etapas
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:37
Eu sou um pouco da série sobre IOT e computadores de placa única.
Sempre desejo utilizá-lo além de Projetos Hobby & Fun (Produção e Manufatura reais).
Este Instructable está prestes a criar um display WIFI de 7 segmentos de 4 dígitos com ESP nodemcu para mostrar a entrada de produção por hora. Estou trabalhando na indústria de manufatura de eletrônicos, onde usamos o Manufacturing Execution System (MES) para monitorar e controlar a entrada, a saída e o processo de produção. Neste projeto, estou criando uma pequena unidade de exibição que mostrará a quantidade de entrada de produção por linha, turno e hora.
Em termos técnicos, este projeto é semelhante a uma exibição de contagem de assinantes do Youtube, onde usamos a resposta API / HTTP online. Mas aqui vamos criar nossa própria api para interagir com nosso sistema MES local para obter a quantidade de entrada.
Etapa 1: Peças e ferramentas usadas:
Peças de hardware usadas:
- ESP nodemcu
- TM1637 relógio de 4 dígitos Display
- Botão de pressão
- Resistor de 10k
- alguns fios de ligação
Ferramentas de software usadas:
- IDE Arduino
- Xampp para servidor web PHP / Apache
Biblioteca do Arduino usada:
1. Wifi manager by tzapu & i Customized for my custom fileds (wifimanager)
2. ESP_EEPROM para armazenar meus valores personalizados na memória Flash
3. SevenSegmentTM1637 para exibição
Etapa 2: Personalização do Gerenciador de Wifi
Neste primeiro instalei o gerenciador wi-fi primeiro e depois copiei a pasta do gerenciador Wifi e passei novamente no mesmo na pasta da biblioteca do Arduino, depois renomeado como WiFiManager_custom.
Pasta raiz do diretório Principalmente como
C: / Usuários / nome do seu computador / Documentos / Arduino / bibliotecas
Em seguida, abri a pasta wifimanager_custom e renomeei o arquivo.cpp de cabeçalho como o mesmo que wifimanager_custom, adicionado o mesmo aos arquivos de cabeçalho e.cpp também.
E adicionou meu formulário personalizado e botão no cabeçalho.
em HTTP_PORTAL_OPTIONS PROGMEM eu adicionei meu formulário de botão para Menu.
e adicionado novo formulário para inserir linha e deslocamento. Eu criei este formulário como um formulário de texto simples.
A seguir vamos criar funções de ação para este forms no arquivo.cpp, para isso temos que fazer a declaração da função no arquivo header.
/ * minhas funções personalizadas * /
void handleCustomForm (); void handleCustomSave ();
Eu declarei minhas funções personalizadas no arquivo de cabeçalho. que isso, nosso trabalho no cabeçalho está terminado, temos que ir com o arquivo.cpp para criar nossas funções e ações.
Etapa 3: funções personalizadas para ação do formulário
Agora abrimos nosso arquivo wifimanager_custom.cpp.
e temos que adicionar nosso manipulador de resposta http para chamar nossas funções quando nosso formulário for postado.
server-> on (String (F ("/ custom_config")), std:: bind (& WiFiManager:: handleCustomForm, this)); // MEU identificador personalizado
server-> on (String (F ("/ custom_save")), std:: bind (& WiFiManager:: handleCustomSave, this)); // MEU identificador personalizado
eles chamarão nossas funções personalizadas quando o formulário for postado.
1.handleCustomForm () -> criará uma página com nosso formulário personalizado para entrada de linha e deslocamento e botão Salvar.
2.handleCustomSave () -> esta função obterá os valores do formulário e os armazenará nas localizações da memória Flash 0 (linha) e 50 (deslocamento).
Etapa 4: Conexões e programa principal
As conexões são muito simples..
Conexões e fiação:
nodemcu TM1637 Display
3,3v ---- Vcc
G ---- Gnd
D2 ---- CLK
D3 ----- DIO
nodemcu- push switch
- botão de pressão conectado ao pino D8 do resistor de + 5V - 10K conectado ao pino D8 do aterramento
terminamos de personalizar nosso wi-fimanager. agora temos que criar nosso programa principal.
1. nosso gerenciador wi-fi se conectará à rede wi-fi com as últimas credenciais usadas para se conectar, se falhar, ele abre um servidor wi-fi AutoConnectAP. Podemos configurar novas credenciais wi-fi, linha e deslocamento conectando-se a este servidor wi-fi.
2. então ele entrará no loop principal.
Nosso loop principal conterá duas partes. uma é a subrotina de confi quando precisamos mudar de linha, mudar ou adicionar qualquer credencial wi-fi para chamar o modo de demanda do AP para configurar. isso será chamado quando um botão conectado ao pino D8 for pressionado.
void loop () {
config_loop ();
}
void config_loop () {Serial.println ("");
Serial.println ("Aguardando o status do botão de configuração …");
//display.print("Wait ");
if (digitalRead (TRIGGER_PIN) == HIGH)
{
display.print ("Conf"); // WiFiManager
// Inicialização local. Depois de concluído o processo, não há necessidade de mantê-lo em torno do WiFiManager wifiManager;
// redefinir configurações - para teste
//wifiManager.resetSettings ();
// define o tempo limite até que o portal de configuração seja desligado // útil para fazer com que tudo tente novamente ou vá dormir // em segundos
//wifiManager.setTimeout(120);
// inicia um ponto de acesso com o nome especificado
// aqui "AutoConnectAP" // e entra em um loop de bloqueio aguardando configuração
// SEM ISSO, O AP NÃO PARECE FUNCIONAR CORRETAMENTE COM SDK 1.5, atualize para pelo menos 1.5.1 //WiFi.mode(WIFI_STA);
if (! wifiManager.startConfigPortal ("OnDemandAP")) {Serial.println ("falha ao conectar e atingir o tempo limite"); atraso (3000); // reinicie e tente novamente, ou talvez coloque-o em hibernação ESP.reset (); atraso (5000); }}
//Serial.println("Button status False. Back to Main loop "); //display.print("Main loop "); //display.clear ();
}
O segundo será nosso programa principal para obter uma resposta HTTP de um servidor específico e exibir a quantidade de entrada no display.
Para isso, primeiro temos que obter nossos detalhes de linha e deslocamento do armazenamento Flash do ESP (endereço 0-> linha, 50-> deslocamento)
EEPROM.begin (100); // eeprom storageEEPROM.get (0, linha); // obtém o valor do endereço 0
EEPROM.get (50, turno); // Obter valor do endereço 50
então temos que passar esses detalhes de linha e deslocamento para nosso servidor http pelo método get para obter o valor de entrada e saída.
String Base_url = "removido"; // minha base urlHTTPClient http; // Objeto da classe
String URL = Base_url + "?" + "Line =" + line + "& shift =" + shift;
Serial.println (URL);
http.begin (URL);
int httpCode = http. GET ();
Serial.println (http.getString ()); // isso imprimirá todas as strings de resposta
se você quiser como todo o texto então seu trabalho está terminado aqui ele mesmo podemos exibi-lo diretamente no display tm1637.
display.print (http.getString ());
Mas eu não quero mostrar todo o texto, porque ele contém entrada, saída em formato json e algum outro texto geral sobre seu banco de dados e etcs.
então, primeiro removi o texto geral da string de resposta usando a função Substring ().
Contei o comprimento do texto geral e o cortei.
if (httpCode> 0) {const size_t bufferSize = 100; // DynamicJsonDocument jsonBuffer (bufferSize); DynamicJsonDocument root (bufferSize);
// JsonObject & root = doc.parseObject (http.getString ());
String json_string = http.getString (). Substring (121); / * este é o meu deslocamento do texto geral, se sua resposta não tiver nada parecido com isso, você pode remover este código; * /
//Serial.println(json_string);
Erro de DeserializationError = deserializeJson (root, json_string);
// JsonObject & root = jsonBuffer.parseObject (http.getString ());
if (erro)
{Serial.print (F ("deserializeJson () falhou:"));
Serial.println (error.c_str ());
Retorna;
}
outro{
const char * input = root ["input"];
const char * output = root ["output"];
Serial.print ("Entrada:");
Serial.println (entrada);
Serial.print ("Saída:");
Serial.println (saída);
display.print (".. in..");
display.clear (); // limpar a tela
display.print (input); // imprimir CONTANDO ALGUNS DÍGITOS
}
é isso que nosso programa principal terminou.
Etapa 5: Criação do servidor web
Estou usando o xampp como meu servidor da web e código PHP para obter dados do meu banco de dados SQL para obter a quantidade exata.
Mas eu não posso compartilhar todos os códigos originais dele. porque é confidencialidade da minha empresa. mas vou mostrar como criar um servidor web, mostrar a quantidade de entrada e saída estática fictícia.
Para isso, você deve precisar de qualquer host da web, estou usando aqui o xampp como meu host.
você pode baixar o xampp aqui.
instale o xampp… se precisar de instruções claras, você pode usar este link.
Depois de instalar o xampp, você deve ir para o diretório raiz.
C: / xampp / htdocs
todos os seus programas php devem estar dentro desta raiz.
Eu criei minha página com o nome de esp_api.php
este é o meu código php. aqui estou apenas exibindo valores estáticos de entrada e saída;
$ line = $ _ GET ['line']; $ shift = $ _ GET ['shift'];
echo ("minhaString"); // Texto geral
if ($ line == 'a0401' e $ shift = 'dd') {$ result ['input'] = 100; $ resultado ['saída'] = 99; }
senão {$ result ['input'] = 200; $ resultado ['saída'] = 199; }
$ myObj-> input = ''. $ result ['input']. '';
$ myObj-> output = ''. $ result ['output']. '';
$ myJSON = json_encode ($ myObj);
echo $ myJSON;
Agora nossa API de resposta HTTP está concluída.
Nosso url de base http será como
you_ip_address / esp_api.php
você pode verificar o texto de resposta da API por
localhost/esp_api.php? line = a0401 & shift = dd
aqui eu mencionei a linha como a0401 e shift como dd.
Etapa 6: Etapa final !
Digite o endereço IP do seu computador no URL base
String Base_url = "removido"; // seu url base
e faça o upload para o seu nodemcu ESP. Assim que terminar de ligar o wi-fi em seu celular ou laptop, você obterá uma rede chamada AutoConnectAP. conecte-se a ele e insira suas credenciais e configurações de linha.
Em seguida, reinicie o seu dispositivo e verifique se a sua rede está conectada, uma vez conectado, então tudo está feito.
Você pode ver que a entrada é exibida no visor.
se você quiser alterar qualquer linha ou credencial de wi-fi, você pode pressionar o interruptor por alguns segundos, o display mostra confi.
você entrou no modo demandAP. você pode alterar e redefinir o dispositivo.
A moto principal dele é mostrar como podemos usar nossos projetos de hobby e diversão na área real de produção e manufatura e mostrar
Recomendado:
Gerenciamento fácil fora da faixa para TI: 4 etapas
Gerenciamento fácil fora de banda para TI: ícones feitos por Freepik em www.flaticon.comSaiba como configurar Gerenciamento fora de banda (OOBM) conectando um Raspberry Pi configurado remote.it e um dispositivo Android ou iPhone por tethering USB. Isso funciona em RPi2 / RPi3 / RPi4. Se você não sabe o quê
Gerenciamento de energia para CR2032: 4 etapas
Gerenciamento de energia para CR2032: Fazer aplicações de baixo consumo de energia requer alguns complnents especiais e cuidados com as linhas de código. Alguns componentes oferecem esse recurso, outros precisam ser trabalhados em pouco tempo. a ideia principal quando trabalhamos em aplicações de baixíssima energia é o tipo de bateria. a
Plugues Arduino Mega RJ45 para gerenciamento de cabos: 5 etapas
Plugues RJ45 do Arduino Mega para gerenciamento de cabos: o Arduino Mega tem muitos pinos - esse é um grande motivo para comprar um, certo? Queremos usar todos esses pinos! A fiação pode rapidamente se tornar uma bagunça sem gerenciamento de cabos, no entanto. Podemos consolidar fios usando plugues Ethernet. Os pinos de dados em
Como fazer uma faixa eletrônica bumpin ': produção musical introdutória para FL Studio: 6 etapas
Como fazer uma faixa eletrônica bumpin ': produção musical introdutória para FL Studio: Bem-vindo! Este guia instrutivo ajudará iniciantes a produtores de música intermediários no uso do FL Studio para criar vários gêneros de Electronic Dance Music. Percorrerá os elementos básicos da criação de uma música, com o objetivo de detalhar dicas básicas
POMODORO TECHNIQUE TIMER - FÁCIL USO DE DISPOSITIVO DE HARDWARE PARA GERENCIAMENTO DE TEMPO: 4 etapas
TEMPORIZADOR DA TÉCNICA DE POMODORO - FÁCIL USO DE DISPOSITIVO DE HARDWARE PARA GERENCIAMENTO DE TEMPO: 1. O que é isso? A técnica de pomodoro é uma habilidade de gerenciamento de tempo que divide o tempo de trabalho em blocos de 25 minutos e segue 5 minutos de intervalo. detalhes conforme abaixo: https: //francescocirillo.com/pages/pomodoro-techni… Este cronômetro é fácil de usar ha