Sisällysluettelo:
- Vaihe 1: Esittely
- Vaihe 2: Palvelimen asennus
- Vaihe 3: Asiakkaan kokoonpano
- Vaihe 4: Virtaus - palvelin
- Vaihe 5: Virtaus - asiakas
- Vaihe 6: Client.ino
- Vaihe 7: Server.ino
- Vaihe 8: Tiedostot
Video: Arduino IDE, jossa on kaksi ydintä: Kaukosäädin: 8 vaihetta
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:02
Tässä videossa on kyse monista. Käsittelemme moniajoa, monikohteita ja moniasiakkaita. Jonkin aikaa sitten tein kauko -ohjaimen, jossa oli kaksi ESP: tä: asiakas ja tukiasema. Tämän perusteella perustamme tänään monisovelluspalvelimen. Tämä tarkoittaa, että meillä on useita asiakkaita yhdistettynä yhteen ESP: hen.
Tämän päivän oppitunti sisältää siis palvelimen luomisen ESP32: een, uusien asiakkaiden lisäämisen silmukkaan ja pyyntöjen käsittelyn toisessa ytimessä. Asiakkaat lähettävät tietoja nastojensa tilanmuutoksista, ja palvelin toistaa nämä tilan muutokset.
Vaihe 1: Esittely
Vaihe 2: Palvelimen asennus
Vaihe 3: Asiakkaan kokoonpano
Vaihe 4: Virtaus - palvelin
Vaihe 5: Virtaus - asiakas
Vaihe 6: Client.ino
Ilmoitukset ja muuttujat
#include // Dados da rede // Deve ser giual no Server #define SSID "ESP32Server" #define SALASANA "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 structure {int numero; int -tila; } Nasta; // 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 nastat [PIN_COUNT] = { {.numero = 21}, {.numero = 19}};
Perustaa
void setup () {Serial.begin (115200); // Tempo para harkitsee a conexão como perdida client.setTimeout (5000); // Conectamos Wi -Fi -yhteyden ja palvelimen asennuksen yhteydessäWiFi (); connectClient (); varten (int i = 0; i
Määritä WiFi
void setupWiFi () {Serial.print ("Yhdistäminen" + merkkijono (SSID)); // Conectamos à rede WiFi criado pelo outro ESP WiFi.begin (SSID, SALASANA); // Esperamos conectar while (WiFi.status ()! = WL_CONNECTED) {Serial.print ("."); viive (500); } // Se chegou aqui está conectado à rede WiFi Serial.println (); Serial.println ("Yhdistetty!"); }
ConnectClient
void connectClient () {Serial.println ("Yhdistävä asiakas"); // Esperamos conectar com o server while (! Client.connect (WiFi.gatewayIP (), SERVER_PORT)) {Serial.print ("."); viive (500); } // Se chegou aqui está conectado com or server Serial.println (); Serial.println ("Asiakas kytketty!"); }
Silmukka
void loop () {// Se não estiver conectado à rede WiFi, mandamos conectar if (WiFi.status ()! = WL_CONNECTED) {setupWiFi (); }}
KahvaKytkentä
void handleConnection (void* pvParameters) {// TÄRKEÄÄ: Tarefa não pode -pääte, 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. Katso 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 .luku); // Se o estado do pino for diferente if (pins .status! = PinStatus) {// Guardamos o novo estado e retornamos true pins .status = pinStatus; palaa tosi; } // 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*) & nastat , sizeof (Pin)); client.flush (); }
Vaihe 7: Server.ino
Ilmoitukset ja muuttujat
#include #include // Dados da rede // Deve ser igual no Client #define SSID "ESP32Server" #define SALASANA "87654321" #define SERVER_PORT 5000 // Criamos -palvelin, joka on määritetty SERVER_PORT -WiFiServer -palvelimelle (SERVER_PORT); // Vektori näkyviä ostoksia asiakasohjelmat conforme eles forem conectando std:: vector customers; // Struct que define os dados que vamos enviar (deve ser igual no client) typedef structure {int numero; int -tila; } Nasta;
Perustaa
void setup () {Serial.begin (115200); // Criamos a rede WiFi e iniciamos or 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)}
Asenna Wi -Fi
void setupWiFi () {// Coloca este ESP como Access Point WiFi.mode (WIFI_AP); // SSID ja Senha para se conectarem a este ESP WiFi.softAP (SSID, SALASANA); }
Silmukka
void loop () {// Verifica se um novo client está tentando se conectar WiFiClient client = server.available (); // Se sim colocamos ele no vector, jos (asiakas) {asiakkaat.push_back (asiakas); }}
KahvaAsiakkaat
void handleClients (void* pvParameters) {// TÄRKEÄÄ: Tarefa não pode -pääte, deve ficar presa em um loop infinito while (true) {// Para cada client que temos no vector for (int i = 0; i
Vaihe 8: Tiedostot
Lataa tiedostot
INO
Suositeltava:
Esp8266 -pohjainen tehostusmuunnin, jossa on hämmästyttävä Blynk -käyttöliittymä, jossa on palautesäädin: 6 vaihetta
Esp8266 -pohjainen tehostusmuunnin hämmästyttävällä Blynk -käyttöliittymällä, jossa on palautesäädin: Tässä projektissa näytän sinulle tehokkaan ja yleisen tavan DC -jännitteiden lisäämiseen. Näytän sinulle, kuinka helppoa voi olla tehostusmuuntimen rakentaminen Nodemcun avulla. Rakennetaan se. Se sisältää myös näytön volttimittarin ja palautteen
Kaksi junaa ajava automaattinen rautatieasettelu (V2.0) - Arduino -pohjainen: 15 vaihetta (kuvilla)
Kaksi junaa ajava automaattinen rautatieasettelu (V2.0) | Arduino -pohjainen: Rautatieasetteluiden automatisointi Arduinon mikro -ohjaimilla on loistava tapa yhdistää mikro -ohjaimet, ohjelmointi ja mallin rautatie yhdeksi harrastukseksi. On olemassa joukko projekteja junan ajamiseen itsenäisesti rautamallilla
Suuri Arduino LCD -kello, jossa on kaksi hälytystä ja lämpötilamittari, jota ohjaa infrapuna -TV: n kaukosäädin: 5 vaihetta
Suuri Arduino LCD -kello, jossa on kaksi hälytystä ja lämpötilamittari, jota ohjaa infrapuna -TV: n kaukosäädin: Kuinka rakentaa Arduino -pohjainen LCD -kello, jossa on kaksi hälytystä ja lämpötilamittari, jota ohjataan infrapuna -TV: n kaukosäätimellä
ESP32 -liitäntä, jossa on SSD1306, jossa on MicroPython: 5 vaihetta
ESP32 -liitäntä SSD1306: lla, jossa on MicroPython: Mikropython on pythonin optimoima ja pieni jalanjälki. Mikropython on saatavana monille ohjainperheille, mukaan lukien ESP8266, ESP32, Ardui
IRduino: Arduino -kaukosäädin - Jäljitä kadonnut kaukosäädin: 6 vaihetta
IRduino: Arduino -kaukosäädin - Jäljitä kadonnut kaukosäädin: Jos olet koskaan kadottanut television tai DVD -soittimen kaukosäätimen, tiedät kuinka turhauttavaa on kävellä, löytää ja käyttää laitteen painikkeita. Joskus nämä painikkeet eivät edes tarjoa samaa toimintoa kuin kaukosäädin. Vastaanota