Բովանդակություն:
- Քայլ 1: rationուցադրություն
- Քայլ 2: Սերվերի տեղադրում
- Քայլ 3: Հաճախորդների հավաքում
- Քայլ 4: Flow - Server
- Քայլ 5. Հոսք - Հաճախորդ
- Քայլ 6: Client.ino
- Քայլ 7: Server.ino
- Քայլ 8: Ֆայլեր
Video: Arduino IDE երկակի միջուկով ՝ հեռակառավարիչ ՝ 8 քայլ
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:49
Այս տեսանյութը ամբողջովին «բազմակի» մասին է: Մենք գործ ունենք բազմաֆունկցիոնալ, բազմաոլորտ և բազմակողմանի գործերի հետ: Քիչ առաջ ես պատրաստեցի հեռակառավարման վահանակ երկու ESP- ով `հաճախորդ և մուտքի կետ: Դրա հիման վրա, այսօր մենք կստեղծենք բազմ հաճախորդների սերվեր: Սա նշանակում է, որ մենք կունենանք բազմաթիվ հաճախորդներ, որոնք կապված են մեկ ESP- ի հետ:
Այսպիսով, այսօրվա դասը ներառում է ESP32- ում սերվերի ստեղծում, օղակում նոր հաճախորդների ավելացում և այլ միջավայրում հարցումների մշակում: Հաճախորդները տեղեկատվություն կուղարկեն իրենց կապերի վիճակի փոփոխության մասին, և սերվերը կվերարտադրի այս վիճակի փոփոխությունները:
Քայլ 1: rationուցադրություն
Քայլ 2: Սերվերի տեղադրում
Քայլ 3: Հաճախորդների հավաքում
Քայլ 4: Flow - Server
Քայլ 5. Հոսք - Հաճախորդ
Քայլ 6: Client.ino
Հռչակագրեր և փոփոխականներ
#ներառել // 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 struct {int number; int կարգավիճակ; } Կապում; // 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] = { {.թիվ = 21}, {.թիվ = 19}};
Կարգավորում
void setup () {Serial.begin (115200); // poամանակը հաշվի է առնում հաճախորդի համար. SetTimeout (5000); // Conectamos de rede WiFi e conectamos ao server setupWiFi (); connectClient (); համար (int i = 0; i
Կարգավորեք WiFi- ը
void setupWiFi () {Serial.print ("Միացում" + լարային (SSID)); // Conectamos à rede WiFi criado pelo outro ESP WiFi.begin (SSID, PASSWORD); // Esperamos conectar while (WiFi.status ()! = WL_CONNECTED) {Serial.print ("."); ուշացում (500); } // Se chegou aqui está conectado à rede WiFi Serial.println (); Serial.println («Միացված է»); }
ConnectClient
void connectClient () {Serial.println ("Հաճախորդը միանում է"); // Esperamos conectar com o server while (! Client.connect (WiFi.gatewayIP (), SERVER_PORT)) {Serial.print ("."); ուշացում (500); } // Se chegou aqui está conectado com o server Serial.println (); Serial.println («Հաճախորդը միացված է»); }
Օղակ
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 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 (կապում .թիվ); // Se o estado do pino for diferente if (կապում .status! = PinStatus) {// Guardamos o novo estado e retornamos true pins .status = pinStatus; վերադարձնել ճշմարիտ; } // Só chegará aqui se o estado não foi alterado // Então retornamos falso return false; }
sendPinStatus
// Նախորդ պարամետրը սերվերի միջոցով թույլ կտա «i» անել arrayvoid sendPinStatus (int i) {client.write ((uint8_t*) & կապում , sizeof (Pin)); client.flush (); }
Քայլ 7: Server.ino
Հռչակագրեր և փոփոխականներ
#ներառել #ներառել // Dados da rede // Deve ser igual no Client #define SSID "ESP32Server" #define PASSWORD "87654321" #define SERVER_PORT 5000 // Criamos um server and porta definida por 'SERVER_PORT' WiFiServer server (SERVER_PORT server); // Vector onde vamos adicionar os client conforme eles forem conectando std:: վեկտոր հաճախորդներ; // Struct que define os dados que vamos enviar (deve ser igual no client) typedef struct {int number; int կարգավիճակ; } Կապում;
Կարգավորում
void setup () {Serial.begin (115200); // Criamos a rede WiFi e iniciamos կամ սերվերի setupWiFi (); server.begin (); xTaskCreatePinnedToCore (handleClients, // Função que será exeada "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á exeada a tarefa (usamos o core 0 para o loop ficar livre com o core 1)}
SetupWiFi
void setupWiFi () {// Coloca este ESP como Access Point WiFi.mode (WIFI_AP); // SSID և Senha para se conectarem a este ESP WiFi.softAP (SSID, PASSWORD); }
Օղակ
void loop () {// Verifica se um novo client está tentando se conectar WiFiClient client = server.available (); // Se sim colocamos ele no vector if (client) {clients.push_back (client); }}
HandleClients
void handleClients (void* pvParameters) {// IMPORTANTE: A 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: Ֆայլեր
Ներբեռնեք ֆայլերը
ԻՆՈ
Խորհուրդ ենք տալիս:
LM3886 հզորության ուժեղացուցիչ, երկակի կամ կամուրջ (բարելավված) ՝ 11 քայլ (նկարներով)
LM3886 հզորության ուժեղացուցիչ, երկակի կամ կամուրջ (բարելավված). Կոմպակտ երկակի հզորության (կամ կամուրջի) ուժեղացուցիչը հեշտ է կառուցել, եթե ունեք էլեկտրոնիկայի որոշակի փորձ: Պահանջվում է ընդամենը մի քանի մաս: Իհարկե, նույնիսկ ավելի հեշտ է կառուցել մոնո ուժեղացուցիչ: Վճռորոշ հարցերն են էլեկտրամատակարարումը և հովացումը: Կոմունալով
Arduino երկակի ալիքի լարման տվիչի մոդուլ ՝ 8 քայլ
Arduino երկակի ալիքի լարման տվիչների մոդուլ. Արդեն մի քանի տարի է, ինչ գրել եմ ուսանելի, ես մտածում էի, որ ժամանակն է վերադառնալ: Ես ուզում էի լարման տվիչ կառուցել, որպեսզի կարողանայի միանալ իմ նստարանի սնուցման աղբյուրին: Ես ունեմ երկու ալիքի փոփոխական սնուցման աղբյուր, այն ունի n
Ինչպես միացնել երկակի առանցքի ջոյսթիկը Arduino Uno- ի հետ. 5 քայլ
Ինչպես միացնել երկակի առանցքի ջոյսթիկը Arduino Uno- ի հետ. Այստեղ մենք մտադիր ենք մեկ մենամարտի առանցքի մեկ ջոիսթիք միացնել arduino uno- ի հետ: Այս ջոիստիկն ունի երկու անալոգային կապում x առանցքի և y առանցքի համար և մեկ թվային քորոց `անջատիչի համար
Անլար հեռակառավարիչ ՝ օգտագործելով 2.4 ԳՀց NRF24L01 մոդուլ Arduino- ով - Nrf24l01 4 ալիք / 6 ալիք հաղորդիչ ընդունիչ քառանկյունի համար - Rc ուղղաթիռ - Rc ինքնաթիռ Arduino- ի միջոցով. 5 քայլ (նկարներով)
Անլար հեռակառավարիչ ՝ օգտագործելով 2.4 ԳՀց NRF24L01 մոդուլ Arduino- ով | Nrf24l01 4 ալիք / 6 ալիք հաղորդիչ ընդունիչ քառանկյունի համար | Rc ուղղաթիռ | Rc ինքնաթիռ Arduino- ի միջոցով. RC մեքենա շահագործելու համար | Quadcopter | Անօդաչու թռչող սարք | RC ինքնաթիռ | RC նավակ, մեզ միշտ պետք է ընդունիչ և հաղորդիչ, ենթադրենք, որ RC QUADCOPTER- ի համար մեզ անհրաժեշտ է 6 ալիքով հաղորդիչ և ընդունիչ, և այդ տիպի TX և RX- ը չափազանց թանկ են, ուստի մենք դա պատրաստելու ենք մեր
DS1803 Երկակի թվային պոտենցիոմետր Arduino- ով. 5 քայլ
DS1803 Երկակի թվային պոտենցիոմետր Arduino- ի հետ. Ես սիրում եմ DS1803 թվային չափիչ սարքի օգտագործումը կիսել Arduino- ի հետ: Այս IC- ն պարունակում է երկու թվային չափիչ սարքեր, որոնք կարող են վերահսկվել երկու մետաղալարերի միջերեսի վրա, դրա համար ես օգտագործում եմ wire.h գրադարանը: Այս IC- ն կարող է փոխարինել սովորական անալոգային չափիչ սարքին: Այս