Isi kandungan:
- Langkah 1: Demonstrasi
- Langkah 2: Pemasangan Pelayan
- Langkah 3: Perhimpunan Pelanggan
- Langkah 4: Aliran - Pelayan
- Langkah 5: Aliran - Pelanggan
- Langkah 6: Pelanggan.ino
- Langkah 7: Server.ino
- Langkah 8: Fail
Video: Arduino IDE Dengan Dual Core: Alat Kawalan Jauh: 8 Langkah
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:10
Video ini adalah mengenai "multi". Kami berurusan dengan multitasking, multicores, dan multiclients. Beberapa ketika yang lalu, saya membuat alat kawalan jauh dengan dua ESP: pelanggan dan pusat akses. Berdasarkan ini, hari ini kami akan menyediakan pelayan berbilang pelanggan. Ini bermakna kita akan mempunyai beberapa pelanggan yang terhubung dalam satu ESP.
Oleh itu, pelajaran hari ini melibatkan penciptaan pelayan di ESP32, penambahan pelanggan baru dalam lingkaran, dan pengendalian permintaan dalam inti lain. Pelanggan akan menghantar maklumat mengenai perubahan keadaan pin mereka, dan pelayan akan menghasilkan semula perubahan keadaan ini.
Langkah 1: Demonstrasi
Langkah 2: Pemasangan Pelayan
Langkah 3: Perhimpunan Pelanggan
Langkah 4: Aliran - Pelayan
Langkah 5: Aliran - Pelanggan
Langkah 6: Pelanggan.ino
Pernyataan dan pemboleh ubah
#include // 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 o pelayan pelanggan WiFiClient; // Struct que define os dados que vamos enviar (deve ser igual no server) typedef struct {int number; status int; } Pin; // 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] = { {.number = 21}, {.number = 19}};
Persediaan
persediaan tidak sah () {Serial.begin (115200); // Tempo untuk menganggap klien conexão como perdida.setTimeout (5000); // Conectamos à rede WiFi e conectamos ao server setupWiFi (); connectClient (); untuk (int i = 0; i
Sediakan WiFi
batal setupWiFi () {Serial.print ("Connecting to" + String (SSID)); // Conectamos à rede WiFi criado pelo outro ESP WiFi.begin (SSID, PASSWORD); // Esperamos conectar sambil (WiFi.status ()! = WL_CONNECTED) {Serial.print ("."); kelewatan (500); } // Se chegou aqui está conectado à rede WiFi Serial.println (); Serial.println ("Bersambung!"); }
Sambung Pelanggan
batal connectClient () {Serial.println ("Menghubungkan pelanggan"); // Esperamos conectar com o server sementara (! Client.connect (WiFi.gatewayIP (), SERVER_PORT)) {Serial.print ("."); kelewatan (500); } // Se chegou aqui está conectado com o server Serial.println (); Serial.println ("Pelanggan disambungkan!"); }
Gelung
gelung void () {// Seão estiver conectado à rede WiFi, mandamos conectar if (WiFi.status ()! = WL_CONNECTED) {setupWiFi (); }}
PeganganSambungan
void handleConnection (void * pvParameters) {// PENTING: Tarefa não pode terminar, deve ficar presa em um loop infinito sementara (benar) {// 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 untuk (int i = 0; i
telahPinStatusTukar
// 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 .nombor); // Se o estado do pino for diferente if (pin .status! = PinStatus) {// Guardamos o novo estado e retornamos true pin .status = pinStatus; kembali benar; } // Só chegará aqui se o estado não foi alterado // Então retornamos falso return false; }
hantarPinStatus
// Envia para o server os dados do pino na posição 'i' do arrayvoid sendPinStatus (int i) {client.write ((uint8_t *) & pin , sizeof (Pin)); pelanggan.flush (); }
Langkah 7: Server.ino
Pernyataan dan pemboleh ubah
#include #include // Dados da rede // Deve ser igual no Client #define SSID "ESP32Server" #define PASSWORD "87654321" #define SERVER_PORT 5000 // Criamos um server na porta definida por 'SERVER_PORT' Pelayan WiFiServer (SERVER_PORT); // Vektor onde vamos adicionar os klien sesuai dengan eles forem conectando std:: pelanggan vektor; // Struct que define os dados que vamos enviar (deve ser igual no client) typedef struct {int nombor; status int; } Pin;
Persediaan
persediaan tidak sah () {Serial.begin (115200); // Criamos a rede WiFi e iniciamos o server setupWiFi (); pelayan.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á executada a tarefa (usamos o core 0 para o loop ficar livre com o core 1)}
PersediaanWiFi
batal setupWiFi () {// Coloca este ESP como Access Point WiFi.mode (WIFI_AP); // SSID e Senha para seectectem a este ESP WiFi.softAP (SSID, PASSWORD); }
Gelung
gelung kosong () {// Verifica se um novo client está tentando se conectar WiFiClient client = server.available (); // Se sim colocamos ele no vektor jika (klien) {clients.push_back (klien); }}
Kendalikan Pelanggan
void handleClients (void * pvParameters) {// PENTING: Tarefa não pode terminar, deve ficar presa em um loop infinito sementara (benar) {// Para cada client que temos no vektor untuk (int i = 0; i
Langkah 8: Fail
Muat turun fail
INO
Disyorkan:
ESP8266 - Pengairan Taman Dengan Pemasa dan Alat Kawalan Jauh Melalui Internet / ESP8266: 7 Langkah (dengan Gambar)
ESP8266 - Pengairan Taman Dengan Pemasa dan Alat Kawalan Jauh Melalui Internet / ESP8266: ESP8266 - Pengairan jarak jauh dikendalikan dan dengan masa untuk kebun sayur, kebun bunga dan rumput. Ia menggunakan litar ESP-8266 dan injap hidraulik / elektrik untuk suapan penyiram. Kelebihan: Akses cepat kos rendah (~ US $ 30,00) Perintah
DIY RGB-LED Glow Poi Dengan Alat Kawalan Jauh: 14 Langkah (dengan Gambar)
DIY RGB-LED Glow Poi Dengan Alat Kawalan Jauh: PengenalanHalo Semua! Ini adalah panduan pertama saya dan (semoga) yang pertama dalam satu siri panduan dalam usaha saya membuat visual RGB-LED sumber terbuka. Untuk menjadikannya sederhana pertama, ini akan menghasilkan led-poi sederhana yang menampilkan sambungan jauh
IRduino: Alat kawalan jauh Arduino - Meniru Jauh yang Hilang: 6 Langkah
IRduino: Alat Kawalan Jauh Arduino - Meniru Alat Jauh yang Hilang: Sekiranya anda pernah kehilangan alat kawalan jauh untuk pemain TV atau DVD anda, anda tahu betapa mengecewakannya untuk berjalan kaki, mencari, dan menggunakan butang pada peranti itu sendiri. Kadang-kadang, butang ini bahkan tidak menawarkan fungsi yang sama seperti alat kawalan jauh. Terima
Kit Alat Kawalan Jauh Biasa Diubah menjadi Alat Kawalan Jauh Mainan RC Empat saluran: 4 Langkah
Kit Alat Kawalan Jauh Biasa Diubah menjadi Alat Kawalan Jauh Mainan RC Empat saluran: 如何 将 通用 遥控 器 套件 转换 为 玩具 模型 中 使用 的 四 通道 遥控 器。 遥控 器 套件 非常 便宜。 采用 62 2262 和 2272 芯片 和 433 个 模块 构建 构建。改造 方法 非常 简单。 只需 准备 一些 瓦楞纸 板 , 然后 按照 视频 教程 完成 这个 电子 项目 并 为 您 服务。 玩具 车船 提供 远程 无线 控制。
Alat kawalan jauh InfraRed I2C Dengan Arduino: 8 Langkah (dengan Gambar)
Alat Kawalan Jauh InfraRed I2C Dengan Arduino: MukadimahAntara terperinci ini cara membuat alat kawalan jauh universal menggunakan I2C untuk antara muka. Betapa ganjilnya anda menggunakan peranti hamba I2C? Ya, peranti hamba I2C. Ini kerana masa tepat paket IR cukup menuntut dan