Indholdsfortegnelse:
- Trin 1: Demonstration
- Trin 2: Monteringsserver
- Trin 3: Klientmontering
- Trin 4: Flow - Server
- Trin 5: Flow - klient
- Trin 6: Client.ino
- Trin 7: Server.ino
- Trin 8: Filer
Video: Arduino IDE Med Dual Core: Fjernbetjening: 8 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:28
Denne video handler om "multi". Vi har at gøre med multitasking, multicores og multiclients. For et stykke tid siden lavede jeg en fjernbetjening med to ESP'er: en klient og et adgangspunkt. Baseret på dette vil vi i dag oprette en multiclient -server. Det betyder, at vi har flere klienter forbundet i en enkelt ESP.
Således involverer lektionen i dag oprettelsen af en server i ESP32, tilføjelse af nye klienter i sløjfen og håndteringen af anmodningerne i en anden kerne. Klienter sender oplysninger om tilstandsændringen af deres pins, og serveren gengiver disse tilstandsændringer.
Trin 1: Demonstration
Trin 2: Monteringsserver
Trin 3: Klientmontering
Trin 4: Flow - Server
Trin 5: Flow - klient
Trin 6: Client.ino
Erklæringer og variabler
#include // Dados da rede // Deve ser giual no Server #define SSID "ESP32Server" #define PASSWORD "87654321" #define SERVER_PORT 5000 // Objecto que vai fazer a conexão com o server WiFiClient client; // Struktur, som definerer os, hvad vi kan bruge enviar (deve ser igual no server) typedef struct {int number; int status; }Pin; // 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}};
Opsætning
ugyldig opsætning () {Serial.begin (115200); // Tempo til overvejelse af en konexão como perdida client.setTimeout (5000); // Tilslutning af WiFi og tilslutning til bl.a. server setupWiFi (); connectClient (); for (int i = 0; i
Opsæt WiFi
void setupWiFi () {Serial.print ("Opretter forbindelse til" + streng (SSID)); // Conectamos à rede WiFi criado pelo outro ESP WiFi.begin (SSID, PASSWORD); // Esperamos conectar while (WiFi.status ()! = WL_CONNECTED) {Serial.print ("."); forsinkelse (500); } // Se chegou aqui está conectado à rede WiFi Serial.println (); Serial.println ("Tilsluttet!"); }
ConnectClient
void connectClient () {Serial.println ("Connecting client"); // Esperamos tilsluttede en server, mens (! Client.connect (WiFi.gatewayIP (), SERVER_PORT)) {Serial.print ("."); forsinkelse (500); } // Se chegou aqui está conectado com o server Serial.println (); Serial.println ("Klient forbundet!"); }
Sløjfe
void loop () {// Se não estiver conectado à rede WiFi, mandamos conectar if (WiFi.status ()! = WL_CONNECTED) {setupWiFi (); }}
Håndtag Tilslutning
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; vende tilbage sandt; } // Só chegará aqui se o estado não foi alterado // Então retornamos falso return false; }
sendPinStatus
// Envia para o server os dados do pino na posição 'i' do arrayvoid sendPinStatus (int i) {client.write ((uint8_t*) & pins , sizeof (Pin)); client.flush (); }
Trin 7: Server.ino
Erklæringer og variabler
#include #include // Dados da rede // Deve ser igual no Client #define SSID "ESP32Server" #define PASSWORD "87654321" #define SERVER_PORT 5000 // Criamos um server to porta definida por 'SERVER_PORT' WiFiServer server (SERVER_PORT); // Vector onde vamos adicionar os clients conforme eles forem conectando std:: vector clients; // Struktur, som definerer os dados que vamos enviar (deve ser igual no client) typedef struct {int number; int status; }Pin;
Opsætning
ugyldig opsætning () {Serial.begin (115200); // Criamos a rede WiFi and iniciamos o 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); // Nummer på kerne, der ser udførelse og anvendelse (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); }
Sløjfe
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); }}
HåndtagKlienter
void handleClients (void* pvParameters) {// IMPORTANTE: En 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
Trin 8: Filer
Download filerne
INO
Anbefalede:
SONOFF Dual Tutorial: Fjernbetjening af dine elektriske apparater ved hjælp af MQTT og Ubidots: 4 trin
SONOFF Dual Tutorial: Fjernbetjening af dine elektriske apparater eksternt ved hjælp af MQTT og Ubidots: Dette $ 9 Wi-Fi-relæ kan styre to apparater på samme tid. Lær, hvordan du slutter det til Ubidots og frigør dets fulde potentiale! I denne vejledning lærer du, hvordan du styrer et par 110V-apparater via Wi-Fi for $ 9 ved hjælp af Iteads SONOFF Dual
TV -fjernbetjening Bliver en RF -fjernbetjening -- NRF24L01+ Tutorial: 5 trin (med billeder)
TV -fjernbetjening Bliver en RF -fjernbetjening || NRF24L01+ Tutorial: I dette projekt vil jeg vise dig, hvordan jeg brugte den populære nRF24L01+ RF IC til at justere lysstyrken på en LED -strimmel trådløst gennem tre ubrugelige knapper på en fjernsyns fjernbetjening. Lad os komme igang
IRduino: Arduino fjernbetjening - Efterlign en tabt fjernbetjening: 6 trin
IRduino: Arduino fjernbetjening - Efterlign en tabt fjernbetjening: Hvis du nogensinde har mistet fjernbetjeningen til dit tv eller din dvd -afspiller, ved du, hvor frustrerende det er at skulle gå til, finde og bruge knapperne på selve enheden. Nogle gange tilbyder disse knapper ikke engang den samme funktionalitet som fjernbetjeningen. Modtag
Konverter din IR -fjernbetjening til RF -fjernbetjening: 9 trin (med billeder)
Konverter din IR -fjernbetjening til RF -fjernbetjening: I dagens Instructable viser jeg dig, hvordan du kan bruge et generisk RF -modul uden en mikrokontroller, som i sidste ende vil føre os til at bygge et projekt, hvor du kan konvertere en IR -fjernbetjening af enhver enhed til en RF Fjern. Den største fordel ved at konvertere en
Styr dine elektriske apparater med din tv -fjernbetjening (ir -fjernbetjening) med temperatur- og luftfugtighedsvisning: 9 trin
Styr dig elektriske apparater med din tv -fjernbetjening (ir -fjernbetjening) med temperatur- og luftfugtighedsdisplay: hej, jeg er Abhay, og det er min første blog om Instructables, og i dag vil jeg vise dig, hvordan du styrer dine elektriske apparater med din fjernsyns fjernbetjening ved at bygge denne simpelt projekt. tak til atl lab for støtte og levering af materialet