Satura rādītājs:
- 1. solis: demonstrācija
- 2. darbība: servera uzstādīšana
- 3. solis: klientu montāža
- 4. solis: plūsma - serveris
- 5. darbība: plūsma - klients
- 6. darbība: Client.ino
- 7. solis: Server.ino
- 8. darbība: faili
Video: Arduino IDE ar divkodolu: tālvadība: 8 soļi
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:56
Šis video ir par “multi”. Mums ir darīšana ar vairākuzdevumu veikšanu, multicores un multiclients. Pirms kāda laika es izveidoju tālvadības pulti ar diviem ESP: klientu un piekļuves punktu. Pamatojoties uz to, šodien mēs izveidosim vairāku klientu serveri. Tas nozīmē, ka vienā ESP būs savienoti vairāki klienti.
Tādējādi šodienas mācība ietver servera izveidi ESP32, jaunu klientu pievienošanu cilpai un pieprasījumu apstrādi citā kodolā. Klienti nosūtīs informāciju par tapas stāvokļa maiņu, un serveris reproducēs šīs stāvokļa izmaiņas.
1. solis: demonstrācija
2. darbība: servera uzstādīšana
3. solis: klientu montāža
4. solis: plūsma - serveris
5. darbība: plūsma - klients
6. darbība: Client.ino
Deklarācijas un mainīgie
#include // Dados da rede // Izstrādāt serveri bez servera #define SSID "ESP32Server" #define PASSWORD "87654321" #define SERVER_PORT 5000 // Objeto que vai fazer a conexão com o server WiFiClient client; // Struct que define os dados que vamos enviar (deve ser igual no server) typedef structure {int numurs; int statuss; } Piespraude; // 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 pins [PIN_COUNT] = { {.skaitlis = 21}, {.numurs = 19}};
Uzstādīt
void setup () {Serial.begin (115200); // Tempo para harkint a conexão como perdida client.setTimeout (5000); // Conectamos un Wi -Fi savienojums ar servera iestatīšanuWiFi (); connectClient (); par (int i = 0; i
Iestatiet WiFi
void setupWiFi () {Serial.print ("Savienojuma izveide ar" + virkne (SSID)); // Conectamos à rede WiFi criado pelo outro ESP WiFi.begin (SSID, PASSWORD); // Esperamos conectar while (WiFi.status ()! = WL_CONNECTED) {Serial.print ("."); kavēšanās (500); } // Se chegou aqui está conectado à rede WiFi Serial.println (); Serial.println ("Savienots!"); }
ConnectClient
void connectClient () {Serial.println ("Klienta savienojums"); // Esperamos conectar com serveris while (! Client.connect (WiFi.gatewayIP (), SERVER_PORT)) {Serial.print ("."); kavēšanās (500); } // Skatiet chegou aqui está conectado com serveri Serial.println (); Serial.println ("Klients savienots!"); }
Cilpa
void loop () {// Se não estiver conectado à rede WiFi, mandamos conectar if (WiFi.status ()! = WL_CONNECTED) {setupWiFi (); }}
HandleConnection
void handleConnection (void* pvParameters) {// SVARĪGI: Tarefa não pode terminar, 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 (pins .skaitlis); // Se o estado do pino for diferente if (pins .status! = PinStatus) {// Guardamos o novo estado e retornamos true pins .status = pinStatus; atgriezties patiesi; } // Só chegará aqui se o estado não foi alterado // Então retornamos falso return false; }
sendPinStatus
// Envia para or server os dados do pino na posição 'i' do arrayvoid sendPinStatus (int i) {client.write ((uint8_t*) & pins , sizeof (Pin)); client.flush (); }
7. solis: Server.ino
Deklarācijas un mainīgie
#include #include // Dados da rede // Deve ser igual no Client #define SSID "ESP32Server" #define PASSWORD "87654321" #define SERVER_PORT 5000 // Criamos um server ar porta definīciju no 'SERVER_PORT' WiFiServer server (SERVER_PORT); // Vector onde vamos adicionar os customers conforme eles forem conectando std:: vector clients; // Struct que define os dados que vamos enviar (deve ser igual no client) typedef structure {int numurs; int statuss; } Piespraude;
Uzstādīt
void setup () {Serial.begin (115200); // Criamos a rede WiFi e iniciamos o server setupWiFi (); server.begin (); 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 (no caso não precisamos) 0); // Número do core que será executab a tarefa (usamos o core 0 para o loop ficar livre com o core 1)}
Wi -Fi iestatīšana
void setupWiFi () {// Coloca este ESP como Access Point WiFi.mode (WIFI_AP); // SSID un Senha para se conectarem a este ESP WiFi.softAP (SSID, PASSWORD); }
Cilpa
void loop () {// Verifica se um novo client está tentando se conectar WiFiClient client = server.available (); // Se sim colocamos ele no vector, ja (klients) {klienti.push_back (klients); }}
HandleClients
void handleClients (void* pvParameters) {// SVARĪGI: Tarefa não pode termināls, deve ficar presa em um loop infinito while (true) {// Para cada client que temos no vector for (int i = 0; i
8. darbība: faili
Lejupielādējiet failus
ES NĒ
Ieteicams:
Pārveidot automašīnu: tālvadība ar paškontroli: 4 soļi
Pārveidot automašīnu: tālvadība ar paškontroli: tas ir uzlauzums RC automašīnai ar salauztu tālvadības pulti. Garāžas tirdzniecībā var atrast daudz
ESP 8266 Nodemcu RGB LED sloksne, ko kontrolē tīmekļa servera tālvadība: 4 soļi
ESP 8266 Nodemcu RGB LED sloksne, ko kontrolē tīmekļa servera tālvadības pults: Šajā pamācībā mēs uzzināsim, kā pārvērst nodemcu par RGB LED sloksnes IR tālvadības pulti un ka nodemcu tālvadības pulti jākontrolē ar tīmekļa vietni, ko mitina mobilais tālrunis vai dators
Bezvadu tālvadība, izmantojot 2,4 GHz NRF24L01 moduli ar Arduino - Nrf24l01 4 kanālu / 6 kanālu raidītāja uztvērējs kvadrakopteram - Rc helikopters - Rc lidmašīna, izmantojot Arduino: 5 soļi (ar attēliem)
Bezvadu tālvadība, izmantojot 2,4 GHz NRF24L01 moduli ar Arduino | Nrf24l01 4 kanālu / 6 kanālu raidītāja uztvērējs kvadrakopteram | Rc helikopters | Rc lidmašīna, izmantojot Arduino: lai vadītu Rc automašīnu | Kvadkopters | Drons | RC plakne | RC laiva, mums vienmēr ir nepieciešams uztvērējs un raidītājs, pieņemsim, ka RC QUADCOPTER mums ir nepieciešams 6 kanālu raidītājs un uztvērējs, un šāda veida TX un RX ir pārāk dārgi, tāpēc mēs to izgatavosim savā
Jūsu Arduino robota tālvadība: 7 soļi
Jūsu Arduino robota tālvadība: šajā pamācībā es aplūkošu Adafruit motora vairoga izmantošanu Arduino V2 blakus nRF24L01 antenai, lai izveidotu tālvadības tālvadības robotu. Es izmantoju veco Adafruit Arduino 101 CurrieBot ar Arduino Uno, nevis
Vienkārša Arduino automašīnas BT tālvadība: 3 soļi (ar attēliem)
Easy Arduino Car BT tālvadības pults: "Easy Arduino Car BT Remote" ir Android lietojumprogramma. Šī lietotne palīdz jums izveidot Bluetooth automašīnu bez Android programmēšanas. Šajā apmācībā es palīdzu izveidot savu Arduino automašīnu, un es uzrakstīju Arduino kodu. Ja izpildāt norādītās darbības