Índice:
- Suprimentos
- Etapa 1: Faça funcionar
- Etapa 2: Como funciona o código
- Etapa 3: Definir o NODEMCU como servidor
- Etapa 4: Carregar o arquivo HTML
- Etapa 5: experimente
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:35
Olá, estou usando atualmente o Windows 10, NodeMCU 1.0 e aqui está a lista de software que usei e os guias de instalação que segui:
- IDE Arduino
- Placas adicionais para esp8266
- Spiff
Biblioteca usada:
Websocket
Eu usei o NodeMCU como um servidor para servir um arquivo HTML que fiz a partir deste tutorial. Para servir este arquivo, carreguei o arquivo no sistema de arquivos nodemcu usando Spiffs. O arquivo HTML envia dados para o nodemcu usando websockets para serem impressos no monitor serial para isso. A comunicação bidirecional rápida via websockets do servidor e cliente permite que este seja usado como controle remoto. Nas etapas a seguir, explicarei como meu código funciona
Suprimentos
NodeMCU
Etapa 1: Faça funcionar
Aqui estão as etapas de como funciona
- Baixe o arquivo anexado e abra o arquivo mousebot.ino
- Vá para sketch> show sketch folder e crie uma nova pasta chamada data
- Salve o arquivo html deste tutorial na pasta chamada. Eu chamei o meu de "Joystick"
- Certifique-se de que seu spiff já está funcional acessando ferramentas e vendo o "upload de dados de esboço esp8266"
- Carregue o arquivo html para nodemcu clicando em "upload de dados de esboço esp8266"
- Após o upload do arquivo, faça upload do arquivo mousebot.ino para o nodemcu, acessando o IDE do arduino e pressionando ctrl U
Etapa 2: Como funciona o código
Primeiro, incluímos as bibliotecas que este código usará
// para permitir que o ESP8266 se conecte ao WIFI
#include #include #include // Habilita o ESP8266 a atuar como um servidor #include // habilita a comunicação com o servidor e o cliente (seu dispositivo conectado) #include #include // Para abrir o arquivo uplaoded no nodemcu #include
Defina o esp8266 como um servidor web aberto na porta 80. As portas são caminhos pelos quais os dados passarão. Como porta do servidor, enviará o arquivo HTML para o cliente (os dispositivos conectados a ele).
Adiciona uma conexão de websocket usando a porta 81 para ouvir mensagens do cliente
O websockets possui o parâmetro num, WStype_t, carga útil e tamanho. O num determina o numeber do cliente, payload é a mensagem enviada, size é o comprimento da mensagem e WStype_t é para eventos diferentes, como
- WStype_DISCONNECTED - na desconexão de um cliente.
- WStype_CONNECTED: - quando um cliente se conecta
- WStype_TEXT - Dados recebidos do cliente
Dependendo do tipo de evento, diferentes ações são feitas e comentadas aqui
void webSocketEvent (uint8_t num, WStype_t type, uint8_t * payload, size_t length) {
switch (tipo) {case WStype_DISCONNECTED: Serial.printf ("[% u] Desconectado! / n", num); // imprime dados para o monitor serial break; case WStype_CONNECTED: {IPAddress ip = webSocket.remoteIP (num); // obtém o IP do cliente Serial.printf ("[% u] Conectado de% d.% d.% d.% d url:% s / n", num, ip [0], ip [1], ip [2], ip [3], carga útil); webSocket.sendTXT (num, "Conectado"); // envia "conencted" para o console do navegador} break; case WStype_TEXT: Serial.printf ("[% u] Dados:% s / n", num, carga útil); // imprime o número do cliente em% u e os dados recebidos como strings em% s / n break;}}
Etapa 3: Definir o NODEMCU como servidor
define o SSID e a senha que você usará para se conectar a ele mais tarde
const char * ssid = "Experimente";
const char * password = "12345678";
na configuração, especificamos a taxa na qual nosso nodemcu e pc se comunicarão, que é 115200.
void setup (void) {
Serial.begin (115200); Serial.print ("\ n");
definido como verdadeiro para ver a saída de diagnóstico de wi-fi no terminal serila
Serial.setDebugOutput (true);
initaliaze o sistema de arquivos
SPIFFS.begin ();
Configure o nodemcu como um ponto de acesso com ssid e senha defiend anteriormente e imprima o ip do nodemcu ao qual você se conectará anteriormente. por padrão é 192.168.4.1
Serial.print ("Configurando ponto de acesso…");
WiFi.mode (WIFI_AP); WiFi.softAP (ssid, senha); IPAddress myIP = WiFi.softAPIP (); Serial.print ("endereço IP do AP:"); Serial.println (myIP);
Inicialize o websocket no nodemcu, que é pur servidor
webSocket.begin ();
Chama a função webSocketEvent quando ocorre um evento de websocket.
webSocket.onEvent (webSocketEvent);
Para depuração, imprima "Servidor WebSocket iniciado" em uma nova linha. Isso é para determinar a linha de código que o nodemcu está processando
Serial.println ("servidor WebSocket iniciado.");
quando um cliente visita 192.168.4.1, ele irá chamar a função handleFileRead e enviar com ela o URI do servidor de parâmetros que neste caso é a nossa informação nodemcu. A função handleFileRead servirá o arquivo html do sistema de arquivos nodemcu
server.onNotFound ( () {
if (! handleFileRead (server.uri ()))
se não for encontrado irá mostrar "FileNotFound"
server.send (404, "text / plain", "FileNotFound");
});
Inicia o servidor e o servidor HTTP de impressão é iniciado.
server.begin (); Serial.println ("servidor HTTP iniciado");
Em nosso loop vazio, habilitamos o servidor a lidar continuamente com o cliente e suas comunicações de websockets da seguinte maneira:
void loop (void) {
server.handleClient (); webSocket.loop ();}
Etapa 4: Carregar o arquivo HTML
usaremos uma função chamada handleFileRead para abrir o arquivo html do sistema de arquivos nodemcu. ele retornará um booleano de valor para determinar se está carregado ou não.
Quando "192.168.4.1/" é aberto pelo cliente, definimos o caminho do arquivo como "/Joystick.html, o nome do nosso arquivo na pasta de dados
bool handleFileRead (String path) {
Serial.println ("handleFileRead:" + caminho); if (path.endsWith ("/")) path + = "Joystick.html"; if (SPIFFS.exists (path)) {File file = SPIFFS.open (path, "r"); size_t sent = server.streamFile (arquivo, "text / html"); file.close (); return true; } retorna falso; }
Verifique se o caminho do arquivo "/Joystick.html" existe
if (SPIFFS.exists (path)) {
Se existir, abra o caminho com o propósito de lê-lo especificado pelo "r". Vá aqui para mais propósitos.
Arquivo de arquivo = SPIFFS.open (caminho, "r");
Envia o arquivo para o servidor com um tipo de conteúdo "text / html"
size_t sent = server.streamFile (arquivo, "text / html");
feche o arquivo
file.close ();
a função handleFileRead retorna verdadeiro
return true;}
se o caminho do arquivo não existir, a função handleFileRead retorna falso
return true; }
Etapa 5: experimente
Conecte-se ao nodeMCU e vá para "192.168.4.1" e experimente!:)
Recomendado:
Abridor de porta de garagem com feedback usando Esp8266 como servidor da Web: 6 etapas
Abridor de porta de garagem com feedback usando Esp8266 como servidor da Web .: Olá, vou mostrar como fazer uma maneira simples de fazer um abridor de porta de garagem.-ESP8266 é codificado como servidor da web, a porta pode ser aberta em qualquer lugar do mundo-Com feedback, você saberá se a porta está aberta ou fechada em tempo real - Simples, apenas um atalho para fazer i
Tutorial: Como usar ESP32-CAM no servidor da Web de streaming de vídeo: 3 etapas
Tutorial: Como usar ESP32-CAM no servidor da Web de streaming de vídeo: Descrição: ESP32-CAM é uma placa de desenvolvimento de visão de IoT sem fio ESP32 em um formato muito pequeno, projetada para ser usada em vários projetos de IoT, como dispositivos domésticos inteligentes, industriais controle sem fio, monitoramento sem fio, identificação sem fio QR
Inglês / Português: S4A Como Instalar E Usar / S4A Como instalar e usar: 7 etapas
Inglês / Português: S4A Como Instalar E Usar / S4A Como instalar e usar: O S4A (ou Scratch para Arduino) é um sistema que baseado no Scratch que permite interagir diretamente com um Arduino. É uma forma muito did á tica de usar programa ç ã o e verificar em tempo real a intera ç & atild
Como usar o terminal Mac e como usar as funções principais: 4 etapas
Como usar o Terminal Mac e como usar as funções principais: Mostraremos como abrir o Terminal MAC. Também mostraremos alguns recursos do Terminal, como ifconfig, alteração de diretórios, acesso a arquivos e arp. Ifconfig permitirá que você verifique seu endereço IP e seu anúncio MAC
Relógio de animação SMART LED conectado à web com painel de controle baseado na web, servidor de hora sincronizado: 11 etapas (com imagens)
Relógio de animação SMART LED conectado à web com painel de controle baseado na web, servidor de tempo sincronizado: a história desse relógio remonta há muito tempo - mais de 30 anos. Meu pai foi o pioneiro dessa ideia quando eu tinha apenas 10 anos de idade, muito antes da revolução do LED - na época em que os LEDs tinham 1/1000 do brilho de seu atual brilho ofuscante. Um verdadeiro