Kazalo:
- 1. korak: demonstracija
- Korak: Namestitev strežnika
- 3. korak: Sestavljanje odjemalca
- 4. korak: Strežnik - tok
- 5. korak: Tok - odjemalec
- 6. korak: Client.ino
- 7. korak: Server.ino
- 8. korak: Datoteke
Video: Arduino IDE z dvojedrnim: daljinski upravljalnik: 8 korakov
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:05
Ta videoposnetek govori o "multi". Ukvarjamo se z večopravilnostjo, večopravilnostjo in več odjemalci. Pred časom sem naredil daljinski upravljalnik z dvema ESP -jema: odjemalcem in dostopno točko. Na podlagi tega bomo danes postavili večstranski strežnik. To pomeni, da bomo imeli v enem ESP povezanih več odjemalcev.
Tako današnja lekcija vključuje ustvarjanje strežnika v ESP32, dodajanje novih odjemalcev v zanki in obravnavanje zahtev v drugem jedru. Odjemalci bodo poslali informacije o spremembi stanja svojih zatičev, strežnik pa bo te spremembe stanja reproduciral.
1. korak: demonstracija
Korak: Namestitev strežnika
3. korak: Sestavljanje odjemalca
4. korak: Strežnik - tok
5. korak: Tok - odjemalec
6. korak: Client.ino
Izjave in spremenljivke
#include // Dados da rede // Deve serial no Server #define SSID "ESP32Server" #define GESLO "87654321" #define SERVER_PORT 5000 // Objeto que vai fazer a conexão com o server odjemalca WiFiClient; // Struct que define os dados que vamos enviar (deve ser igual brez strežnika) 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 pin [PIN_COUNT] = { {.številka = 21}, {.številka = 19}};
Nastaviti
void setup () {Serial.begin (115200); // Tempo para Regardrar a conexão como perdida client.setTimeout (5000); // Conectamos à rede WiFi in conectamos ao server setup setupWiFi (); connectClient (); za (int i = 0; i
Nastavite WiFi
void setupWiFi () {Serial.print ("Povezovanje z" + niz (SSID)); // Conectamos à rede WiFi wiriado pelo out ESP WiFi.begin (SSID, GESLO); // Esperamos conectar while (WiFi.status ()! = WL_CONNECTED) {Serial.print ("."); zamuda (500); } // Se chegou aqui está conectado à rede WiFi Serial.println (); Serial.println ("Povezano!"); }
ConnectClient
void connectClient () {Serial.println ("Povezovalni odjemalec"); // Esperamos conectar com o strežnik while (! Client.connect (WiFi.gatewayIP (), SERVER_PORT)) {Serial.print ("."); zamuda (500); } // Se chegou aqui está conectado com o server Serial.println (); Serial.println ("Odjemalec povezan!"); }
Zanka
void loop () {// Se não estiver conectado à rede WiFi, mandamos conektar if (WiFi.status ()! = WL_CONNECTED) {setupWiFi (); }}
HandleConnection
void handleConnection (void* pvParameters) {// POMEMBNO: 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 (zatiči .število); // Se o estado do pino for diferente if (pins .status! = PinStatus) {// Guardamos o novo estado e retornamos true pins .status = pinStatus; vrni true; } // Só chegará aqui se o estado não foi alterado // Então retornamos falso return false; }
sendPinStatus
// Envia za strežnik, ki do pino na posição 'i' do arrayvoid sendPinStatus (int i) {client.write ((uint8_t*) & pins , sizeof (Pin)); client.flush (); }
7. korak: Server.ino
Izjave in spremenljivke
#include #include // Dados da rede // Deve ser igual no Client #define SSID "ESP32Server" #define PASSWORD "87654321" #define SERVER_PORT 5000 // Criamos um strežnik na porta definida za "SERVER_PORT" WiFiServerski strežnik (SERVER_PORT); // Vector onde vamos adicionar os clients conforme eles forem conectando std:: vector clients; // Struct que define os dados que vamos enviar (deve ser igual brez odjemalca) typedef struct {int number; int status; } Pin;
Nastaviti
void setup () {Serial.begin (115200); // Criamos a rede WiFi in iniciamos o nastavitvi strežnikaWiFi (); server.begin (); xTaskCreatePinnedToCore (handleClients, // Função que será executada "handleClients", // Nome da tarefa 10000, // Tamanho da pilha NULL, // Parâmetro da tarefa (brez caso não usamos) 2, // Prioriteta 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 zanka ficar livre com o core 1)}
Nastavitev Wi -Fi
void setupWiFi () {// Coloca este ESP kot dostopna točka WiFi.mode (WIFI_AP); // SSID e Senha para se poveže z ESP WiFi.softAP (SSID, GESLO); }
Zanka
void loop () {// Preveri, ali je odjemalec novega, če ga želiš povezati, odjemalec WiFiClient = server.available (); // Se sim colocamos ele no vector if (client) {clients.push_back (client); }}
HandleClients
void handleClients (void* pvParameters) {// POMEMBNO: A tarefa não pode terminar, deve ficar presa em um loop loop infinito while (true) {// Para cada client que temos no vector for (int i = 0; i
8. korak: Datoteke
Prenesite datoteke
JAZ NE
Priporočena:
Klonirajte kateri koli daljinski upravljalnik z Arduino Nano: 5 korakov
Klonirajte kateri koli daljinski upravljalnik z Arduino Nano: Klonirajte kateri koli daljinski upravljalnik z Arduino Nano
Daljinski upravljalnik na osnovi brskalnika Arduino (linux): 9 korakov (s slikami)
Daljinski upravljalnik na osnovi brskalnika Arduino (linux): Imamo otroke. Obožujem jih do potankosti, vendar vedno prikrivajo daljinski upravljalnik za satelit in televizijo, ko prižgejo otroške kanale. Potem ko se je to nekaj let dogajalo vsak dan in potem, ko mi je draga žena dovolila
Arduino: časovni programi in daljinski upravljalnik iz aplikacije za Android: 7 korakov (s slikami)
Arduino: časovni programi in daljinski upravljalnik iz aplikacije za Android: Vedno sem se spraševal, kaj se zgodi z vsemi ploščami Arduino, ki jih ljudje ne potrebujejo, ko končajo svoje kul projekte. Resnica je nekoliko moteča: nič. To sem opazil pri družinski hiši, kjer je oče poskušal zgraditi svoj dom
Velika ura Arduino LCD z dvema alarmoma in nadzornikom temperature, ki ju upravlja daljinski upravljalnik IR TV: 5 korakov
Velika Arduino LCD ura z dvema alarmoma in temperaturnim monitorjem, ki ju nadzira daljinski upravljalnik IR TV: Kako sestaviti LCD uro na osnovi Arduino z dvema alarmoma in temperaturnim monitorjem, ki ju nadzira daljinski upravljalnik IR TV
Zaščiten daljinski upravljalnik Arduino: 5 korakov
Zaščiten daljinski upravljalnik Arduino: To je primer, kako narediti izjemno varen brezžični (garažni) daljinski upravljalnik. Običajno imajo daljinski upravljalniki zaščito pred kodo, ki jo lahko zaobide vsak napredni tat. Ta oddaljeni sistem temelji na uporabi 16 -bajtnega ključa, zato vdor v to bi bil pravi