Სარჩევი:
- ნაბიჯი 1: დემონსტრაცია
- ნაბიჯი 2: სერვერის დამონტაჟება
- ნაბიჯი 3: კლიენტების შეკრება
- ნაბიჯი 4: ნაკადი - სერვერი
- ნაბიჯი 5: ნაკადი - კლიენტი
- ნაბიჯი 6: Client.ino
- ნაბიჯი 7: Server.ino
- ნაბიჯი 8: ფაილები
ვიდეო: Arduino IDE ორმაგი ბირთვით: დისტანციური მართვა: 8 ნაბიჯი
2024 ავტორი: John Day | [email protected]. ბოლოს შეცვლილი: 2024-01-30 10:19
ეს ვიდეო არის "მრავალზე". ჩვენ საქმე გვაქვს მრავალ ამოცანასთან, მრავალმხრივ და მრავალმხრივ კომპონენტებთან. ცოტა ხნის წინ, მე გავაკეთე დისტანციური მართვა ორი ESP– ით: კლიენტი და წვდომის წერტილი. ამის საფუძველზე, დღეს ჩვენ შევქმნით მრავალ კლიენტის სერვერს. ეს ნიშნავს, რომ ჩვენ გვეყოლება რამდენიმე კლიენტი, რომლებიც დაკავშირებულია ერთ ESP– ში.
ამრიგად, დღეს გაკვეთილი მოიცავს სერვერის შექმნას ESP32– ში, ახალი კლიენტების დამატებას მარშრუტში და მოთხოვნების დამუშავებას სხვა ბირთვში. კლიენტები გაგზავნიან ინფორმაციას მათი ქინძისთავების მდგომარეობის შეცვლის შესახებ და სერვერი ამ მდგომარეობის ცვლილებების რეპროდუცირებას მოახდენს.
ნაბიჯი 1: დემონსტრაცია
ნაბიჯი 2: სერვერის დამონტაჟება
ნაბიჯი 3: კლიენტების შეკრება
ნაბიჯი 4: ნაკადი - სერვერი
ნაბიჯი 5: ნაკადი - კლიენტი
ნაბიჯი 6: Client.ino
დეკლარაციები და ცვლადები
#ჩართეთ // Dados da rede // Deve ser giual no Server #განსაზღვრეთ 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 ნომერი; int სტატუსი; } ჩამაგრება; // Quantidade de pinos que iremos ler e enviar o status #define PIN_COUNT 2 // მასივი 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); // Tempo para parasyshrar a conexão como perdida client.setTimeout (5000); // Conectamos de rede WiFi e conectamos ao server setupWiFi (); connectClient (); for (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 (pin . რიცხვი); // Se o estado do pino for diferente if (pins .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
// Envia para o server os dados do pino na posição 'i' do arrayvoid sendPinStatus (int i) {client.write ((uint8_t*) & pins , sizeof (Pin)); client.flush (); }
ნაბიჯი 7: Server.ino
დეკლარაციები და ცვლადები
#ჩართეთ #ჩართეთ // Dados da rede // Deve ser igual no Client #განსაზღვრეთ SSID "ESP32Server" #define PASSWORD "87654321" #define SERVER_PORT 5000 // Criamos um server და porta definida for 'SERVER_PORT' WiFiServer server (SERVER_PORT) server; // Vector onde vamos adicionar os clients conforme eles forem conectando std:: ვექტორული კლიენტები; // Struct que define os dados que vamos enviar (deve ser igual no client) typedef struct {int ნომერი; int სტატუსი; } ჩამაგრება;
Აწყობა
void setup () {Serial.begin (115200); // Criamos a rede WiFi e iniciamos ან server 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 e 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); }}
სახელური კლიენტები
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: ფაილები
ჩამოტვირთეთ ფაილები
ინო
გირჩევთ:
Arduino ბრაუზერის დაფუძნებული დისტანციური მართვა (linux): 9 ნაბიჯი (სურათებით)
Arduino ბრაუზერზე დაფუძნებული დისტანციური მართვა (linux): ჩვენ გვყავს ბავშვები. მე მიყვარს ისინი, მაგრამ ისინი მუდმივად მალავენ დისტანციური მართვის სატელიტს და ტელევიზიას, როდესაც ისინი ბავშვთა არხებს აყენებენ. მას შემდეგ რაც ეს ხდება რამდენიმე წლის განმავლობაში ყოველდღიურად, და მას შემდეგ რაც ჩემმა საყვარელმა მეუღლემ მომცა საშუალება მქონოდა
IR დისტანციური მართვა თქვენი კომპიუტერისთვის Arduino– ით: 6 ნაბიჯი
IR დისტანციური მართვა თქვენი კომპიუტერისთვის Arduino– ით: ამ მიმღებით, აკონტროლეთ თქვენი კომპიუტერი დისტანციურად IR მოდულისა და Arduino– ს წყალობით. ზარმაცი რეჟიმი გააქტიურებულია ^^
LED RF დისტანციური მართვის დისტანციური მართვა "არაფრის"!: 5 ნაბიჯი
LED RF დისტანციური მართვის დისტანციური მართვა "არაფრის"!: ამ პროექტში მე გაჩვენებთ თუ როგორ უნდა გამოიყენოთ LED RF დისტანციური მართვის პულტი იმისათვის, რომ გააკონტროლოთ თითქმის ყველაფერი რაც გსურთ. ეს ნიშნავს, რომ ჩვენ უფრო ახლოს შევხედავთ RF დისტანციური გადაცემის პროცესს, წაიკითხავთ გაგზავნილ მონაცემებს Arduino µC– ით
დისტანციური Arduino დისტანციური მართვა: 5 ნაბიჯი
უსაფრთხო Arduino დისტანციური: ეს არის მაგალითი იმისა, თუ როგორ უნდა გააკეთოთ ულტრა უსაფრთხო უკაბელო (ავტოფარეხი) დისტანციური. ჩვეულებრივ დისტანციურ დისკებს აქვს მოძრავი კოდის ტიპის უსაფრთხოება, რომლის გვერდის ავლით ნებისმიერი მოწინავე ქურდი შეძლებს. ეს დისტანციური სისტემა ეყრდნობა 16 ბაიტიანი ღილაკის გამოყენებას, ასე რომ მისი გატეხვა იქნება
დისტანციური დისტანციური მართვა: 11 ნაბიჯი (სურათებით)
დისტანციური მართვა: მე მყავს ახალშობილი ბავშვი და ის არ ფიქრობს, რომ მან უნდა დაიძინოს მანამ, სანამ მე და ჩემმა ცოლმა მასაც ვუსურვოთ. ერთი რამ, რაც მას ბედნიერს ხდის თავის საწოლში არის მობილური, რომელიც მის თავზეა ჩამოკიდებული. ასე რომ, როდესაც ის გაიღვიძებს, თუ ჩვენ გვჭირდება კიდევ 25 წუთი ან მეტი