Sisukord:
- 1. samm: demonstratsioon
- Samm: serveri paigaldamine
- 3. samm: kliendi kokkupanek
- 4. samm: voog - server
- 5. samm: voog - klient
- Samm 6: Client.ino
- Samm 7: Server.ino
- 8. samm: failid
Video: Arduino IDE kahetuumaline: kaugjuhtimispult: 8 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:48
See video räägib kõikehõlmavast. Tegeleme multitegumtöötluse, multikooride ja mitme kliendiga. Mõni aeg tagasi tegin puldi kahe ESP -ga: klient ja pääsupunkt. Selle põhjal seadistame täna multiklientide serveri. See tähendab, et meil on ühe ESP -ga ühendatud mitu klienti.
Seega hõlmab õppetund täna ESP32 -s serveri loomist, uute klientide lisamist ahelasse ja päringute käsitlemist teises tuumas. Kliendid saadavad teavet oma tihvtide oleku muutmise kohta ja server reprodutseerib neid olekumuutusi.
1. samm: demonstratsioon
Samm: serveri paigaldamine
3. samm: kliendi kokkupanek
4. samm: voog - server
5. samm: voog - klient
Samm 6: Client.ino
Deklaratsioonid ja muutujad
#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 or server WiFiClient client; // Struct que define os dados que vamos enviar (deve ser igual no server) typedef structure {int number; int staatus; } 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 vokê pode alterar para os pinos que desejar Pin pins [PIN_COUNT] = { {.arv = 21}, {.arv = 19}};
Seadistamine
void setup () {Serial.begin (115200); // Tempo para arvestades a conexão como perdida client.setTimeout (5000); // Conectamos Wi -Fi ja serveri seadistamise Wi -Fi ühendamiseks (); connectClient (); jaoks (int i = 0; i
WiFi seadistamine
void setupWiFi () {Serial.print ("Ühendamine" + string (SSID)); // Conectamos à rede WiFi criado pelo outro ESP WiFi.begin (SSID, PASSWORD); // Esperamos conectar while (WiFi.status ()! = WL_CONNECTED) {Serial.print ("."); viivitus (500); } // Se chegou aqui está conectado à rede WiFi Serial.println (); Serial.println ("Ühendatud!"); }
ConnectClient
void connectClient () {Serial.println ("Ühendav klient"); // Esperamos conectar com o server while (! Client.connect (WiFi.gatewayIP (), SERVER_PORT)) {Serial.print ("."); viivitus (500); } // Se chegou aqui está conectado com server server Serial.println (); Serial.println ("Klient ühendatud!"); }
Loop
void loop () {// Se não estiver conectado à rede WiFi, mandamos conectar if (WiFi.status ()! = WL_CONNECTED) {setupWiFi (); }}
Käepideühendus
void handleConnection (void* pvParameters) {// IMPORTANTE: Tarefa não pode terminal, 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 .arv); // Se o estado do pino for diferente if (pins .status! = PinStatus) {// Guardamos o novo estado e retornamos true pins .status = pinStatus; tagastama tõene; } // Só chegará aqui se o estado não foi alterado // Então retornamos falso return false; }
sendPinStatus
// Envia para või server os dados do pino na posição 'i' do arrayvoid sendPinStatus (int i) {client.write ((uint8_t*) & pins , sizeof (Pin)); client.flush (); }
Samm 7: Server.ino
Deklaratsioonid ja muutujad
#include #include // Dados da rede // Deve ser igual no Client #define SSID "ESP32Server" #define PASSWORD "87654321" #define SERVER_PORT 5000 // Criamos um server with porta määratlus 'SERVER_PORT' WiFiServer server (SERVER_PORT); // Vektorid, mis on lisatud klientidele Conforme eles forem conectando std:: vektorkliendid; // Struct que define os dados que vamos enviar (deve ser igual no client) typedef structure {int number; int staatus; } Pin;
Seadistamine
void setup () {Serial.begin (115200); // Criamos a rede WiFi e iniciamos või 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); // Número do core que será executab a tarefa (usamos o core 0 para o loop ficar livre com o core 1)}
WiFi seadistamine
void setupWiFi () {// Coloca este ESP como Access Point WiFi.mode (WIFI_AP); // SSID ja Senha selle sektori jaoks ja ESP WiFi.softAP (SSID, PASSWORD); }
Loop
void loop () {// Verifica se um novo client está tentando se conectar WiFiClient client = server.available (); // Se sim colocamos ele no vector if (klient) {kliendid.push_back (klient); }}
KäepideKliendid
void handleClients (void* pvParameters) {// TÄHTIS: Tarefa não pode terminal, deve ficar presa em um loop infinito while (true) {// Para cada client que temos no vector for (int i = 0; i
8. samm: failid
Laadige failid alla
INO
Soovitan:
Arduino brauseripõhine kaugjuhtimispult (linux): 9 sammu (piltidega)
Arduino brauseripõhine kaugjuhtimispult (linux): meil on lapsi. Ma armastan neid tükkideks, kuid nad peidavad lastekanalite sisselülitamisel pidevalt satelliidi ja teleri kaugjuhtimispulti. Pärast seda juhtus see iga päev mitu aastat ja pärast seda, kui mu kallis naine lubas mul
Teie arvuti IR -kaugjuhtimispult Arduino abil: 6 sammu
Arvuti IR -kaugjuhtimispult Arduino abil: selle vastuvõtjaga saate oma arvutit kaugjuhtida tänu IR -moodulile ja Arduinole. Lazzy režiim aktiveeritud ^^
Arduino: ajaprogrammid ja kaugjuhtimispult Androidi rakendusest: 7 sammu (piltidega)
Arduino: ajaprogrammid ja kaugjuhtimispult Androidi rakendusest: Olen alati mõelnud, mis juhtub kõigi nende Arduino tahvlitega, mida inimesed pärast lahedate projektide lõpetamist ei vaja. Tõde on natuke häiriv: mitte midagi. Olen seda täheldanud oma pere kodus, kus isa üritas oma kodu ehitada
Automaatne kanalivahetuse kaugjuhtimispult Arduino abil: 6 sammu
Automaatne kanalivahetuse kaugjuhtimispult koos Arduinoga: Selle projekti esialgne motivatsioon oli see, et meie kliendil on vaskulaarne dementsus ja ta on juriidiliselt pime. See on tekitanud tal raskusi meeles pidada, millal ja millistes kanalites televiisor talle meelepäraseid saateid näitab, samuti näha, kuidas
Arduino IR -andur ja LCD -ekraaniga kaugjuhtimispult: 4 sammu
Arduino IR -andur ja LCD -kaugjuhtimispult: oleme rühm UQD10801 (Robocon1) üliõpilasi Universiti Tun Hussein Onn Malaisiast (UTHM). Selles õpetuses saate teada, kuidas kuvada infrapunakauguse nuppe vedelkristallkuvarile (LCD ), kasutades Arduino Uno R3. See õpetus on