Orodha ya maudhui:

Arduino IDE Pamoja na Dual Core: Remote Control: 8 Hatua
Arduino IDE Pamoja na Dual Core: Remote Control: 8 Hatua

Video: Arduino IDE Pamoja na Dual Core: Remote Control: 8 Hatua

Video: Arduino IDE Pamoja na Dual Core: Remote Control: 8 Hatua
Video: Lesson 21: Using Infrared Remote Control with Arduino | SunFounder Robojax 2024, Novemba
Anonim
Image
Image
Maandamano
Maandamano

Video hii inahusu "anuwai." Tunashughulika na kazi nyingi, maduka mengi, na vifaa vingi. Wakati uliopita, nilifanya udhibiti wa kijijini na ESP mbili: mteja na mahali pa kufikia. Kulingana na hii, leo tutaanzisha seva yenye vifaa vingi. Hii inamaanisha tutakuwa na wateja wengi waliounganishwa kwenye ESP moja.

Kwa hivyo, somo leo linajumuisha uundaji wa seva katika ESP32, kuongezewa kwa wateja wapya kwenye kitanzi, na utunzaji wa maombi katika msingi mwingine. Wateja watatuma habari juu ya mabadiliko ya hali ya pini zao, na seva itazaa mabadiliko haya ya serikali.

Hatua ya 1: Maonyesho

Hatua ya 2: Kuweka Seva

Kuweka Seva
Kuweka Seva

Hatua ya 3: Bunge la Wateja

Bunge la Mteja
Bunge la Mteja

Hatua ya 4: Mtiririko - Seva

Mtiririko - Seva
Mtiririko - Seva

Hatua ya 5: Mtiririko - Mteja

Mtiririko - Mteja
Mtiririko - Mteja

Hatua ya 6: Mteja.ino

Azimio na vigeugeu

# pamoja na // Dados da rede // Deve ser giual no Server #fasili SSID "ESP32Server" #fasili PASSWORD "87654321" #fafanua SERVER_PORT 5000 // Wasiwasi wanaoshawishi mteja wa mteja wa Wateja wa WiFi; // Muundo wa kufafanua ni nini kinahusu mamos ya wivu (fanya kazi ya kawaida hakuna seva) typedef struct {int number; hali ya int; } Pini; // Quantidade de pinos que iremos ler e enviar o status #fasili PIN_COUNT 2 // Array com os pinos definidos // Hakuna caso vamos trabalhar com os 21 e 19 mas você pode alterar para os pinos que desejar Pin pin [PIN_COUNT] = { {.nambari = 21}, {.nambari = 19}};

Sanidi

kuanzisha batili () {Serial.begin (115200); // Tempo kwa kuzingatia mteja wa conexão como perdida.setTimeout (5000); // Conectamos ni rede WiFi na conectamos ao kuanzisha sevaWiFi (); unganisha Mteja (); kwa (int i = 0; i

Sanidi WiFi

batili setupWiFi () {Serial.print ("Kuunganisha kwa" + Kamba (SSID)); // Conectamos red rede WiFi croado pelo outro ESP WiFi.anza (SSID, PASSWORD); // Esperamos conectar wakati (WiFi.status ()! = WL_CONNECTED) {Serial.print ("."); kuchelewesha (500); } // Seggue aqui está conectado to rede WiFi Serial.println (); Serial.println ("Imeunganishwa!"); }

Unganisha Mteja

batili ConnectClient () {Serial.println ("Kuunganisha mteja"); // Esperamos conectar com o server wakati (! Mteja.connect (WiFi.gatewayIP (), SERVER_PORT)) {Serial.print ("."); kuchelewesha (500); } // Seg chegou aqui is conectado com o server Serial.println (); Serial.println ("Mteja ameunganishwa!"); }

Kitanzi

kitanzi batili () {// Tazama kitovu cha redio ya redio ya WiFi, mandamos conectar ikiwa (WiFi.status ()! = WL_CONNECTED) {setupWiFi (); }}

KushughulikiaKuunganisha

Muunganiko wa kushughulikia batili (batili * pvParamita) {// IMPORTANTE: Kituo cha tarefa não pode, onyesha ficar presa em um loop infinito wakati (ni kweli) {/ {mteja wa connect (); } // Para cada pino, verificamos se mudou o estado. Tazama matakwa ya huduma ya seva yako kwa (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 (pini .nambari); // Se o estado do pino for diferente if (pini .status! = PinStatus) {// Guardamos o novo estado e retornamos pini za kweli .status = pinStatus; kurudi kweli; } // Só chegará aqui se o estado não foi alterado // Então retornamos falso kurudi uongo; }

tumaPinStatus

// Envia para o server os dados do pino na posição 'i' do arrayvoid sendPinStatus (int i) {client.write ((uint8_t *) & pini , sizeof (Pin)); mteja.flush (); }

Hatua ya 7: Server.ino

Azimio na vigeugeu

# pamoja # ikiwa ni pamoja // Dados da rede // Deve ser igual no Client #fefine SSID "ESP32Server" #fasili PASSWORD "87654321" #fafanua SERVER_PORT 5000 // Criamos um server na porta definida por 'SERVER_PORT' WiFiServer server (SERVER_PORT); // Vector onde vamos adicionar os wateja hutegemea eles forem conectando std:: wateja wa vector; // Muundo wa kufafanua ni nini kinahusu mamos ya wivu (fanya kawaida hakuna mteja) typedef struct {int number; hali ya int; } Pini;

Sanidi

kuanzisha batili () {Serial.begin (115200); // Criamos rede WiFi na vifaa vya kuanzisha sevaWiFi (); anza (); 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 (hakuna caso não precisamos) 0); // Nero hufanya msingi wa kufanya kazi (usamos msingi 0 kwa kitanzi cha picha ya msingi 1)}

UsanidiWiFi

batili setupWiFi () {// Coloca este ESP como Access Point WiFi.mode (WIFI_AP); // SSID na Senha kwa mfano wa ESP WiFi.softAP (SSID, PASSWORD); }

Kitanzi

kitanzi batili () {/ // Se sim colocamos ele no vector ikiwa (mteja) {clients.push_back (mteja); }}

Wateja Handle

Wateja wa kushughulikia batili (batili * pvParameter) {// IMPORTANTE: Terefa não pode terminar, deve ficar presa em um loop infinito wakati (kweli) {// Para cada client que temos no vector for (int i = 0; i

Hatua ya 8: Faili

Pakua faili

PDF

INO

Ilipendekeza: