Përmbajtje:
- Hapi 1: Demonstrim
- Hapi 2: Montimi i serverit
- Hapi 3: Asambleja e Klientit
- Hapi 4: Flow - Server
- Hapi 5: Rrjedha - Klienti
- Hapi 6: Client.ino
- Hapi 7: Server.ino
- Hapi 8: Skedarët
Video: Arduino IDE Me dy bërthama: Telekomandë: 8 hapa
2024 Autor: John Day | [email protected]. E modifikuara e fundit: 2024-01-30 12:21
Kjo video ka të bëjë me "multi". Kemi të bëjmë me multitasking, multicore dhe multiclients. Pak kohë më parë, bëra një telekomandë me dy ESP: një klient dhe një pikë aksesi. Bazuar në këtë, sot ne do të krijojmë një server me shumë klientë. Kjo do të thotë që do të kemi klientë të shumtë të lidhur në një ESP të vetme.
Kështu, mësimi sot përfshin krijimin e një serveri në ESP32, shtimin e klientëve të rinj në lak dhe trajtimin e kërkesave në një bërthamë tjetër. Klientët do të dërgojnë informacion në lidhje me ndryshimin e gjendjes së kunjave të tyre, dhe serveri do të riprodhojë këto ndryshime të gjendjes.
Hapi 1: Demonstrim
Hapi 2: Montimi i serverit
Hapi 3: Asambleja e Klientit
Hapi 4: Flow - Server
Hapi 5: Rrjedha - Klienti
Hapi 6: Client.ino
Deklaratat dhe ndryshoret
#include // Dados da rede // Deve ser giual no Server #define SSID "ESP32Server" #define PASSWORD "87654321" #define SERVER_PORT 5000 // Objecto que vai fazer a conexão com o server WiFiClient client; // Struktura që përcakton sistemin operativ (nuk ka server) shtypni strukturën {int numrin; int statusi; }Gjilpere; // 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 masa e kodit të ndryshimit për os os pinos que desejar Pin pin [PIN_COUNT] = { {.numri = 21}, {.numri = 19}};
Konfigurimi
void setup () {Serial.begin (115200); // Tempo para shqyrtimit të një klienti të caktuar.setTimeout (5000); // Conectamos de redde WiFi dhe conectamos ao server setupWiFi (); connectClient (); për (int i = 0; i
Konfiguro WiFi
void setupWiFi () {Serial.print ("Lidhja me" + String (SSID)); // Conectamos à rede WiFi criado pelo outro ESP WiFi.begin (SSID, PASSWORD); // Esperamos conectar while (WiFi.status ()! = WL_CONNECTED) {Serial.print ("."); vonesë (500); } // Se chegou aqui está conectado à rede WiFi Serial.println (); Serial.println ("I lidhur!"); }
ConnectClient
void connectClient () {Serial.println ("Lidh klientin"); // Esperamos conectar com o server ndërsa (! Client.connect (WiFi.gatewayIP (), SERVER_PORT)) {Serial.print ("."); vonesë (500); } // Se chegou aqui está conectado com o server Serial.println (); Serial.println ("Klienti i lidhur!"); }
Lak
void loop () {// Se não estiver conectado à rede WiFi, mandamos conectar if (WiFi.status ()! = WL_CONNECTED) {setupWiFi (); }}
HandleConnection
dorezë e pavlefshme Lidhja (e pavlefshme* pvParametrat) {// E RORTNDSISHME: Një terminal i vetëm për kodin, zbuloni një paralajmërim të pafund të kohës kur (e vërtetë) {// Shihni një lidhje me serverin, mandamos konektorin nëse (! klient.lidhur ()) {connectClient (); } // Para cada pino, verificamos se mudou o estado. Për më tepër ju mund të përdorni serverin e ri për (int i = 0; i
hasPinStatusChanged
// Verifikimi se çfarë do të thotë për një postim '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 .numri); // Se o estado do pino for diferente if (kunjat .status! = PinStatus) {// Guardamos o novo estado e retornamos këmbët e vërteta .status = pinStatus; kthehet e vërtetë; } // Só chegará aqui se o estado não foi alterado // Então retornamos falso return false; }
sendPinStatus
// Përgjigje për serverin tuaj dhe ju lutem bëni një postim në 'i' në arrayvoid sendPinStatus (int i) {client.write ((uint8_t*) & pin , sizeof (Pin)); klient.flush (); }
Hapi 7: Server.ino
Deklaratat dhe ndryshoret
#include #include // Dados da rede // Deve ser igual no Client #define SSID "ESP32Server" #define PASSWORD "87654321" #define SERVER_PORT 5000 // Criamos um server dhe porta definicion për 'SERVER_PORT' serverin WiFiServer (SERVER_PORT); // Vector onde vamos adicionar os client conforme eles forem conectando std:: klientët vektorë; // Struktura që përcakton os dados que vamos enviar (deve ser igual no client) typedef struct {int number; int statusi; }Gjilpere;
Konfigurimi
void setup () {Serial.begin (115200); // Criamos a Redde WiFi dhe iniciamos ose server setupWiFi (); server.filloj (); 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 që të ekzekutojë një tarefa (përdorimi i 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 dhe Senha për lidhjen e një ESP WiFi.softAP (SSID, PASSWORD); }
Lak
void loop () {// Verifica se um novo client está tentando se conectar WiFiClient client = server.available (); // Se sim colocamos nuk ka vektor nëse (klienti) {clients.push_back (klienti); }}
HandleClients
void handleClients (void* pvParameters) {// I RORTNDSISHME: Një terminal não pode, deve ficar presa em um loop infinito while (true) {// Para cada client que temos asnjë vektor për (int i = 0; i
Hapi 8: Skedarët
Shkarkoni skedarët
INO
Recommended:
Klononi çdo telekomandë me Arduino Nano: 5 hapa
Klononi çdo telekomandë me Arduino Nano: Klononi çdo telekomandë me Arduino Nano
Makinë Arduino Me L293D dhe Telekomandë: 5 Hapa
Makinë Arduino Me L293D dhe Telekomandë: Ndodh që kam çip L293D dhe telekomandë dhe marrës IR. Dua të ndërtoj një makinë Arduino pa blerë shumë gjëra, kështu që solla vetëm shasi të makinave me katër rrota Arduino. Meqenëse Tinkercad kanë marrës L293D dhe IR dhe Arduino, kështu që krijova skicë
IRduino: Telekomandë Arduino - Imitoni një telekomandë të humbur: 6 hapa
IRduino: Telekomandë Arduino - Imitoni një telekomandë të humbur: Nëse e keni humbur ndonjëherë telekomandën për televizorin ose DVD player -in tuaj, e dini sa frustruese është të ecësh, të gjesh dhe të përdorësh butonat në vetë pajisjen. Ndonjëherë, këto butona nuk ofrojnë as të njëjtin funksionalitet si telekomanda. Merr
Roboti me telekomandë duke përdorur Arduino dhe T.V. Telekomandë: 11 hapa
Roboti me telekomandë duke përdorur Arduino dhe TV Telekomandë: Kjo makinë me telekomandë mund të lëvizet duke përdorur praktikisht çdo lloj telekomande si TV, AC etj. Përdor faktin që telekomanda lëshon IR (infra të kuqe). Kjo pronë përdoret duke përdorur një marrës IR, i cili është një sensor shumë i lirë. Në
Pan dhe telekomandë me telekomandë: 7 hapa
Pan i kontrolluar nga distanca dhe koka e pjerrët: Unë gjithmonë kam dashur një tigan të kontrolluar nga distanca dhe kokë të pjerrët. Ndoshta ishte për kamerën time video, një gjuajtës i gomës ose një gjuajtës me armë uji. Nuk ka shumë rëndësi se çfarë vendosni në kuvertën e sipërme (përderisa nuk është shumë e rëndë), me këtë projekt të vogël ju