Índice:

Display WIFI para gerenciamento de produção: 6 etapas
Display WIFI para gerenciamento de produção: 6 etapas

Vídeo: Display WIFI para gerenciamento de produção: 6 etapas

Vídeo: Display WIFI para gerenciamento de produção: 6 etapas
Vídeo: Programador Sênior VS júnior #short #shorts 2024, Novembro
Anonim
Display WIFI para gerenciamento de produção
Display WIFI para gerenciamento de produção

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 e ferramentas usadas
Peças e ferramentas usadas

Peças de hardware usadas:

  1. ESP nodemcu
  2. TM1637 relógio de 4 dígitos Display
  3. Botão de pressão
  4. Resistor de 10k
  5. alguns fios de ligação

Ferramentas de software usadas:

  1. IDE Arduino
  2. 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

Personalização do Wifi Manager
Personalização do Wifi Manager

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

Funções personalizadas para ação de formulário
Funções personalizadas para ação de formulário
Funções personalizadas para ação de formulário
Funções personalizadas para ação de formulário
Funções personalizadas para ação de formulário
Funções personalizadas para ação de 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

Conexões e programa principal
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

Criando Servidor Web
Criando Servidor Web
Criando Servidor Web
Criando 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 !

Passo final!!!
Passo final!!!
Passo final!!!
Passo final!!!
Passo final!!!
Passo 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: