Sadržaj:
- Korak 1: Demonstracija
- Korak 2: Montiranje servera
- Korak 3: Sastavljanje klijenta
- Korak 4: Tok - Server
- Korak 5: Tok - klijent
- Korak 6: Client.ino
- Korak 7: Server.ino
- Korak 8: Datoteke
Video: Arduino IDE sa dvostrukim jezgrom: Daljinski upravljač: 8 koraka
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:07
Ovaj video je o "multi". Bavimo se multitaskingom, višespratnicama i više klijentima. Maloprije sam napravio daljinski upravljač sa dva ESP -a: klijentom i pristupnom tačkom. Na osnovu ovoga, danas ćemo postaviti višestruki server. To znači da ćemo imati više klijenata povezanih u jednom ESP -u.
Dakle, današnja lekcija uključuje stvaranje servera u ESP32, dodavanje novih klijenata u petlju i rukovanje zahtjevima u drugom jezgru. Klijenti će slati informacije o promjeni stanja svojih pinova, a poslužitelj će reproducirati te promjene stanja.
Korak 1: Demonstracija
Korak 2: Montiranje servera
Korak 3: Sastavljanje klijenta
Korak 4: Tok - Server
Korak 5: Tok - klijent
Korak 6: Client.ino
Deklaracije i varijable
#include // Datoteke za ponovno učitavanje // Nema servera bez servera #define SSID "ESP32Server" #define PASSWORD "87654321" #define SERVER_PORT 5000 // Objekat koji želite da povežete sa serverom WiFiClient klijent; // Struct que define os dados que vamos enviar (deve ser igual bez servera) 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šene alterar para os pinos que desejar Pin pins [PIN_COUNT] = { {.broj = 21}, {.broj = 19}};
Postaviti
void setup () {Serial.begin (115200); // Vremenski parametri koji se odnose na conexão como perdida client.setTimeout (5000); // Conectamos à rede WiFi i conectamos ao server setupWiFi (); connectClient (); za (int i = 0; i
Podesite WiFi
void setupWiFi () {Serial.print ("Povezivanje sa" + niz (SSID)); // Conectamos à rede WiFi WiFi out of ESP WiFi.begin (SSID, PASSWORD); // Esperamos povezivanje while (WiFi.status ()! = WL_CONNECTED) {Serial.print ("."); kašnjenje (500); } // Možete provjeriti jesu li povezani povezivanjem na WiFi Serial.println (); Serial.println ("Povezano!"); }
ConnectClient
void connectClient () {Serial.println ("Povezivanje klijenta"); // Esperamos conectar com o poslužitelju while (! Client.connect (WiFi.gatewayIP (), SERVER_PORT)) {Serial.print ("."); kašnjenje (500); } // Možete provjeriti jesu li povezani na poslužitelj Serial.println (); Serial.println ("Klijent povezan!"); }
Petlja
void loop () {// Nije potrebno sve što je potrebno za ponovno povezivanje WiFi mreže, ako je (WiFi.status ()! = WL_CONNECTED) {setupWiFi (); }}
HandleConnection
void handleConnection (void* pvParameters) {// VAŽNO: A tarefa nije podešen termin, potrebno je da um umreži petlju 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. Pogledajte podatke o serveru ili novom stanju za (int i = 0; i
hasPinStatusChanged
// Verificira se o stanju do pina na poziciju '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 .broj); // Se o estado do pino for diferente if (pins .status! = PinStatus) {// Guardamos o novom 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
// Omogućavanje servera da do pino -a doda poziciju 'i' u polje arrayvoid sendPinStatus (int i) {client.write ((uint8_t*) & pins , sizeof (Pin)); client.flush (); }
Korak 7: Server.ino
Deklaracije i varijable
#include #include // Datos da rede // Deve ser igual no Client #define SSID "ESP32Server" #define PASSWORD "87654321" #define SERVER_PORT 5000 // Criamos um server na porti definida za 'SERVER_PORT' WiFiServerski server (SERVER_PORT); // Vektorski dodaci za korisnike prilagođeni klijentima prilagođeni forem konektando std:: vektorski klijenti; // Struct que define os dados que vamos enviar (deve ser igual no client) typedef struct {int number; int status; } Pin;
Postaviti
void setup () {Serial.begin (115200); // Criamos a rede WiFi i inicijalizacija servera setupWiFi (); server.begin (); xTaskCreatePinnedToCore (handleClients, // Função que será executada "handleClients", // Ime da tarefa 10000, // Tamanho da pilha NULL, // Parâmetro da tarefa (nema caso não usamos) 2, // Prioritet da tarefa NULL, // Caso queria manter uma referência para a tarefa que vai ser criada (no caso não precisamos) 0); // Numeričko jezgro koje izvodi izvršnu datoteku i tarefu (upotreba o jezgru 0 za petlju ili petlja o jezgri 1)}
SetupWiFi
void setupWiFi () {// Kolonije ESP -a za pristupnu točku WiFi.mode (WIFI_AP); // SSID e Senha za povezivanje i ESP WiFi.softAP (SSID, PASSWORD); }
Petlja
void loop () {// Verifikuje se um novi klijent i mora se povezati WiFiClient client = server.available (); // Se sim colocamos ele no vector if (client) {clients.push_back (client); }}
HandleClients
void handleClients (void* pvParameters) {// VAŽNO: A tarefa nije podešen terminar, potrebno je da um umreži petlju beskonačno while (true) {// Para cada klijent que temos nema vektor za (int i = 0; i
Korak 8: Datoteke
Preuzmite datoteke
JA NE
Preporučuje se:
Klonirajte bilo koji daljinski upravljač s Arduino Nano: 5 koraka
Klonirajte bilo koji daljinski upravljač pomoću Arduino Nano: Klonirajte bilo koji daljinski upravljač pomoću Arduino Nano
TV daljinski upravljač postaje RF daljinski -- NRF24L01+ Vodič: 5 koraka (sa slikama)
TV daljinski upravljač postaje RF daljinski || Vodič za NRF24L01+: U ovom projektu ću vam pokazati kako sam koristio popularni nRF24L01+ RF IC za bežično podešavanje svjetline LED trake putem tri beskorisna dugmeta na daljinskom upravljaču televizora. Hajde da počnemo
IRduino: Arduino daljinski upravljač - oponašajte izgubljeni daljinski upravljač: 6 koraka
IRduino: Arduino daljinski upravljač - oponašajte izgubljeni daljinski upravljač: Ako ste ikada izgubili daljinski upravljač za televizor ili DVD uređaj, znate koliko je frustrirajuće morati hodati do, pronaći i koristiti tipke na samom uređaju. Ponekad ti gumbi čak ne nude istu funkcionalnost kao daljinski. Primiti
Daljinski video daljinski upravljač za računare Video player: 6 koraka
Video daljinski upravljač za malu djecu za PC Video player: Izrađujem daljinski upravljač koji se povezuje s računarom putem USB -a. Veliki daljinski upravljač omogućuje mom djetetu odabir i reprodukciju videozapisa na starom računaru. Ovo je relativno jednostavan projekt. Osnovna komponenta je ili USB tastatura ili bežična USB tastatura. Zatim
Izrada jednostavnog induktora sa jezgrom zraka (indukcijski svitak): 5 koraka
Izrada jednostavnog induktora sa jezgrom (indukcijski svitak): Ovo uputstvo će vam reći kako napraviti jednostavan induktor sa jezgrom sa jezgrom, posebno za Niftymitter. Niftymitter je FM odašiljač otvorenog koda zasnovan na najjednostavnijem FM odašiljaču Tetsuo Kogawe, slobodni krug oscilatora, stoga