Tartalomjegyzék:
- 1. lépés: Demonstráció
- 2. lépés: Szerver telepítése
- 3. lépés: Az ügyfél összeállítása
- 4. lépés: Folyamat - szerver
- 5. lépés: Folyamat - Ügyfél
- 6. lépés: Client.ino
- 7. lépés: Server.ino
- 8. lépés: Fájlok
Videó: Arduino IDE kettős maggal: Távirányító: 8 lépés
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:42
Ez a videó a „multi” -ról szól. Többfeladatos, multicores és multiclientekkel van dolgunk. Régebben készítettem egy távirányítót két ESP -vel: egy kliens és egy hozzáférési pont. Ennek alapján ma egy multiclient szervert állítunk be. Ez azt jelenti, hogy több ügyfélünk lesz egy ESP -ben.
Így a mai lecke magában foglalja egy szerver létrehozását az ESP32 -ben, új ügyfelek hozzáadását a ciklushoz és a kérések kezelését egy másik magban. Az ügyfelek információt küldenek a csapjaik állapotváltozásáról, és a szerver reprodukálja ezeket az állapotváltozásokat.
1. lépés: Demonstráció
2. lépés: Szerver telepítése
3. lépés: Az ügyfél összeállítása
4. lépés: Folyamat - szerver
5. lépés: Folyamat - Ügyfél
6. lépés: Client.ino
Nyilatkozatok és változók
#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 szám; int állapot; } Tű; // 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] = { {.szám = 21}, {.szám = 19}};
Beállít
void setup () {Serial.begin (115200); // Tempo para harkint a conexão como perdida client.setTimeout (5000); // Conectamos a WiFi és a szerver beállításaihoz Wi -Fi (); connectClient (); mert (int i = 0; i
WiFi beállítása
void setupWiFi () {Serial.print ("Csatlakozás" + String (SSID)); // Conectamos à rede WiFi criado pelo outro ESP WiFi.begin (SSID, JELSZÓ); // Esperamos conectar while (WiFi.status ()! = WL_CONNECTED) {Serial.print ("."); késleltetés (500); } // Se chegou aqui está conectado à rede WiFi Serial.println (); Serial.println ("Csatlakoztatva!"); }
ConnectClient
void connectClient () {Serial.println ("Csatlakozó kliens"); // Esperamos conectar com o server while (! Client.connect (WiFi.gatewayIP (), SERVER_PORT)) {Serial.print ("."); késleltetés (500); } // Se chegou aqui está conectado com or server Serial.println (); Serial.println ("Kliens csatlakoztatva!"); }
Hurok
void loop () {// Se não estiver conectado à rede WiFi, mandamos conectar if (WiFi.status ()! = WL_CONNECTED) {setupWiFi (); }}
HandleConnection
void handleConnection (void* pvParameters) {// IMPORTANTE: A tarefa não pode terminary, 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 .szám); // Se o estado do pino for diferente if (pins .status! = PinStatus) {// Guardamos o novo estado e retornamos true pins .status = pinStatus; return true; } // Só chegará aqui se o estado não foi alterado // Então retornamos falso return false; }
sendPinStatus
// Envia para or server os dados do pino na posição 'i' do arrayvoid sendPinStatus (int i) {client.write ((uint8_t*) & pins , sizeof (Pin)); client.flush (); }
7. lépés: Server.ino
Nyilatkozatok és változók
#include #include // Dados da rede // Deve ser igual no Client #define SSID "ESP32Server" #define PASSWORD "87654321" #define SERVER_PORT 5000 // Criamos um szerver a "SERVER_PORT" WiFiServer szerver portján (SERVER_PORT); // Vector onde vamos adicionary os customers conforme eles forem conectando std:: vector customers; // Struct que define os dados que vamos enviar (deve ser igual no client) typedef structure {int szám; int állapot; } Tű;
Beállít
void setup () {Serial.begin (115200); // Criamos a rede WiFi e iniciamos vagy szerver setupWiFi (); szerver.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)}
Wi -Fi beállítása
void setupWiFi () {// Coloca este ESP como Access Point WiFi.mode (WIFI_AP); // SSID és Senha para se conectarem a este ESP WiFi.softAP (SSID, JELSZÓ); }
Hurok
void loop () {// Verifica se um novo client está tentando se conectar WiFiClient client = server.available (); // Se sim colocamos ele no vector if (kliens) {ügyfelek.push_back (kliens); }}
HandleClients
void handleClients (void* pvParameters) {// FONTOS: A tarefa não pode terminary, deve ficar presa em um loop infinito while (true) {// Para cada client que temos no vector for (int i = 0; i
8. lépés: Fájlok
Töltse le a fájlokat
ÉN NEM
Ajánlott:
A 4G LTE kettős BiQuade antenna egyszerű lépései: 3 lépés
Hogyan készítsünk egyszerű lépéseket a 4G LTE kettős BiQuade antenna számára: Legtöbbször szembesültem azzal, hogy nincs jó jelerősség a mindennapi munkámhoz. Így. Keresek és próbálok különböző típusú antennákat, de nem működik. Az elvesztegetett idő után találtam egy antennát, amelyet remélem elkészíthetek és kipróbálhatok, mert építési elve nem
LM3886 teljesítményerősítő, kettős vagy híd (továbbfejlesztett): 11 lépés (képekkel)
LM3886 teljesítményerősítő, kettős vagy híd (továbbfejlesztett): A kompakt kettős teljesítményű (vagy híd) erősítő könnyen megépíthető, ha rendelkezik némi elektronikai tapasztalattal. Csak néhány alkatrészre van szükség. Természetesen még egyszerűbb mono erősítőt építeni. A döntő kérdések az áramellátás és a hűtés. A kompatibilis
Kettős színű oszlopdiagram áramkörrel Python: 5 lépés (képekkel)
Kettős színű oszlopdiagram CircuitPython-szal: Láttam ezt a LED-es oszlopdiagramot a Pimoroni webhelyen, és azt hittem, hogy olcsó és szórakoztató projekt lehet a covid-19 lezárása során. Mindegyikben 24 LED, egy piros és egy zöld található. 12 szegmens, így elméletileg képesnek kell lennie arra, hogy megjelenítse az
Zöld kettős kocka: 11 lépés
Zöld dupla szerszám: Ez a projekt egy dupla kockás konstrukció, CMOS technológiával a számlálóktól a kapuig. A kettős 4518 -as számlálótól kezdve annak OR, AND és NOT kapujai 4071, 4081 és 4049, míg az 555 időzítő változó frekvenciát generál a
DS1803 kettős digitális potenciométer Arduino -val: 5 lépés
DS1803 kettős digitális potenciométer az Arduino -val: Szeretem megosztani a DS1803 digitális potméter használatát egy Arduino -val. Ez az IC két digitális potmétert tartalmaz, amelyek kétvezetékes interfészen keresztül vezérelhetők, ehhez a wire.h könyvtárat használom. Ez az IC helyettesítheti a normál analóg potmétert. Ebben