Innehållsförteckning:
- Steg 1: Demonstration
- Steg 2: Monteringsserver
- Steg 3: Klientmontering
- Steg 4: Flow - Server
- Steg 5: Flow - Client
- Steg 6: Client.ino
- Steg 7: Server.ino
- Steg 8: Filer
Video: Arduino IDE Med Dual Core: Fjärrkontroll: 8 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:45
Den här videon handlar om "multi". Vi har att göra med multitasking, multicores och multiclients. För ett tag sedan gjorde jag en fjärrkontroll med två ESP: en klient och en åtkomstpunkt. Baserat på detta kommer vi idag att skapa en server för flera klienter. Det betyder att vi kommer att ha flera klienter anslutna i en enda ESP.
Således innebär lektionen idag skapandet av en server i ESP32, tillägg av nya klienter i loop och hantering av förfrågningar i en annan kärna. Klienter kommer att skicka information om tillståndsändringen av sina nålar, och servern kommer att reproducera dessa tillståndsändringar.
Steg 1: Demonstration
Steg 2: Monteringsserver
Steg 3: Klientmontering
Steg 4: Flow - Server
Steg 5: Flow - Client
Steg 6: Client.ino
Deklarationer och variabler
#include // Dados da rede // Deve ser giual no Server #define SSID "ESP32Server" #define PASSWORD "87654321" #define SERVER_PORT 5000 // Objeto que vai fazer a conexão com o server WiFiClient client; // Struct que definierar os vados que vamos enviar (deve ser igual no server) typedef struct {int number; int status; }Stift; // Quantidade de pinos que iremos ler e enviar o status #define PIN_COUNT 2 // Array com os pinos definidos // No caso vamos trabalhar com os 21 e 19 mas você pode alterar para os pinos que desejar Pin pins [PIN_COUNT] = { {.nummer = 21}, {.nummer = 19}};
Uppstart
void setup () {Serial.begin (115200); // Tempo para considerar a conexão como perdida client.setTimeout (5000); // Conectamos à rede WiFi och conectamos ao server setupWiFi (); connectClient (); för (int i = 0; i
Konfigurera WiFi
void setupWiFi () {Serial.print ("Ansluter till" + String (SSID)); // Conectamos à rede WiFi criado pelo outro ESP WiFi.begin (SSID, LÖSENORD); // Esperamos conectar while (WiFi.status ()! = WL_CONNECTED) {Serial.print ("."); fördröjning (500); } // Se chegou aqui está conectado à rede WiFi Serial.println (); Serial.println ("Ansluten!"); }
ConnectClient
void connectClient () {Serial.println ("Ansluter klient"); // Esperamos konverterar en server medan (! Client.connect (WiFi.gatewayIP (), SERVER_PORT)) {Serial.print ("."); fördröjning (500); } // Se chegou aqui está conectado com o server Serial.println (); Serial.println ("Klient ansluten!"); }
Slinga
void loop () {// Se não estiver conectado à rede WiFi, mandamos conectar if (WiFi.status ()! = WL_CONNECTED) {setupWiFi (); }}
Handtag Anslutning
void handleConnection (void* pvParameters) {// IMPORTANTE: A tarefa não pode terminar, deve ficar presa em um loop infinito while (true) {// Se não estiver conectado com o server, mandamos conectar if (! client.connected ()) {connectClient (); } // Para cada pino, verificamos se mudou o estado. Se mudou enviamos para o server o novo estado for (int i = 0; i
hasPinStatusChanged
// Verifica se o estado do pino na posição 'i' do array mudou // Retorna 'true' se mudou ou 'false' caso contrário boolean hasPinStatusChanged (int i) {// Faz a leitura do pino int pinStatus = digitalRead (pins) .nummer); // Se o estado do pino for diferente if (pins .status! = PinStatus) {// Guardamos o novo estado e retornamos true pins .status = pinStatus; återvända sant; } // Só chegará aqui se o estado não foi alterado // Então retornamos falso return false; }
sendPinStatus
// Envia para o server us dados do pino na posição 'i' do arrayvoid sendPinStatus (int i) {client.write ((uint8_t*) & pins , sizeof (Pin)); client.flush (); }
Steg 7: Server.ino
Deklarationer och variabler
#include #include // Dados da rede // Utveckla inga klienter #define SSID "ESP32Server" #define PASSWORD "87654321" #define SERVER_PORT 5000 // Criamos um server na porta definida por 'SERVER_PORT' WiFiServer server (SERVER_PORT); // Vector onde vamos adicionar os clients conforme eles forem conectando std:: vector clients; // Struct que definiera os dados que vamos enviar (deve ser igual no client) typedef struct {int number; int status; }Stift;
Uppstart
void setup () {Serial.begin (115200); // Criamos a rede WiFi e iniciamos or server setupWiFi (); server.begin (); xTaskCreatePinnedToCore (handleClients, // Função que será executada "handleClients", // Nome da tarefa 10000, // Tamanho da pilha NULL, // Parâmetro da tarefa (no caso não usamos) 2, // Prioridade da tarefa NULL, // Caso queria manter uma referência para a tarefa que vai ser criada (no caso não precisamos) 0); // Numero do core que será executada a tarefa (usamos o core 0 para o loop ficar livre com o core 1)}
SetupWiFi
void setupWiFi () {// Coloca este ESP som Access Point WiFi.mode (WIFI_AP); // SSID e Senha para se conectarem a este ESP WiFi.softAP (SSID, PASSWORD); }
Slinga
void loop () {// Verifica se um novo client está tentando se conectar WiFiClient client = server.available (); // Se sim colocamos ele no vector if (client) {clients.push_back (client); }}
HandtagKlienter
void handleClients (void* pvParameters) {// IMPORTANTE: A tarefa não pode terminar, deve ficar presa em um loop infinito while (true) {// Para cada client que temos no vector for (int i = 0; i
Steg 8: Filer
Ladda ner filerna
INO
Rekommenderad:
RF 433MHZ radiokontroll med HT12D HT12E - Gör en RF -fjärrkontroll med HT12E och HT12D med 433mhz: 5 steg
RF 433MHZ radiokontroll med HT12D HT12E | Skapa en RF -fjärrkontroll med HT12E & HT12D med 433mhz: I den här instruktionsboken ska jag visa dig hur du gör en RADIO -fjärrkontroll med 433mhz -mottagarmodul med HT12E -kodning & HT12D -avkodare IC. I denna instruerbara kan du skicka och ta emot data med mycket mycket billiga KOMPONENTER SOM: HT
Trådlös fjärrkontroll med 2,4 GHz NRF24L01 -modul med Arduino - Nrf24l01 4 -kanals / 6 -kanals sändarmottagare för Quadcopter - Rc helikopter - RC -plan med Arduino: 5 steg (med bilder)
Trådlös fjärrkontroll med 2,4 GHz NRF24L01 -modul med Arduino | Nrf24l01 4 -kanals / 6 -kanals sändarmottagare för Quadcopter | Rc helikopter | Rc -plan med Arduino: Att driva en Rc -bil | Quadcopter | Drone | RC -plan | RC -båt, vi behöver alltid en mottagare och sändare, antag att för RC QUADCOPTER behöver vi en 6 -kanals sändare och mottagare och den typen av TX och RX är för dyr, så vi kommer att göra en på vår
Hur man styr hushållsapparater med TV -fjärrkontroll med timerfunktion: 7 steg (med bilder)
Så här kontrollerar du hushållsapparater med fjärrkontroll med TV -funktion: Även efter 25 års introduktion till konsumentmarknaden är infraröd kommunikation fortfarande mycket relevant de senaste dagarna. Oavsett om det är din 55 -tums 4K -TV eller ditt billjudsystem behöver allt en IR -fjärrkontroll för att svara på vår
Konvertera din IR -fjärrkontroll till RF -fjärrkontroll: 9 steg (med bilder)
Konvertera din IR -fjärrkontroll till RF -fjärrkontroll: I dagens Instructable visar jag dig hur du kan använda en generisk RF -modul utan en mikrokontroller som så småningom kommer att leda oss till att bygga ett projekt där du kan konvertera en IR -fjärrkontroll från vilken enhet som helst till en RF Avlägsen. Den största fördelen med att konvertera en
Styr dina elektriska apparater med din fjärrkontroll för fjärrkontroll (IR -fjärrkontroll) med temperatur- och luftfuktighetsdisplay: 9 steg
Styr dig elektriska apparater med din TV -fjärrkontroll (ir -fjärrkontroll) med temperatur- och luftfuktighetsdisplay: hej jag är Abhay och det är min första blogg om Instructables och idag ska jag visa dig hur du styr dina elektriska apparater med din fjärrkontroll genom att bygga detta enkelt projekt. tack till atl lab för stöd och tillhandahållande av materialet