Daftar Isi:
- Langkah 1: Demonstrasi
- Langkah 2: Memasang Server
- Langkah 3: Majelis Klien
- Langkah 4: Aliran - Server
- Langkah 5: Aliran - Klien
- Langkah 6: Klien.ino
- Langkah 7: Server.ino
- Langkah 8: File
Video: Arduino IDE Dengan Dual Core: Remote Control: 8 Langkah
2024 Pengarang: John Day | [email protected]. Terakhir diubah: 2024-01-30 09:56
Video ini adalah tentang "multi." Kita berurusan dengan multitasking, multicore, dan multiclient. Beberapa waktu yang lalu, saya membuat remote control dengan dua ESP: klien dan titik akses. Berdasarkan ini, hari ini kami akan menyiapkan server multiklien. Ini berarti kami akan memiliki banyak klien yang terhubung dalam satu ESP.
Jadi, pelajaran hari ini melibatkan pembuatan server di ESP32, penambahan klien baru dalam loop, dan penanganan permintaan di inti lain. Klien akan mengirimkan informasi tentang perubahan status pin mereka, dan server akan mereproduksi perubahan status ini.
Langkah 1: Demonstrasi
Langkah 2: Memasang Server
Langkah 3: Majelis Klien
Langkah 4: Aliran - Server
Langkah 5: Aliran - Klien
Langkah 6: Klien.ino
Deklarasi dan variabel
#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 server WiFiClient client; //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 enviar o status #define PIN_COUNT 2 //Array com os pinos definidos //Tidak ada 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} };
Mempersiapkan
void setup(){ Serial.begin(115200); //Tempo untuk mempertimbangkan conexão como perdida client.setTimeout(5000); //Conectamos rede WiFi dan conectamos dan setup serverWiFi(); menghubungkanKlien(); untuk(int i=0; i
Siapkan WiFi
void setupWiFi(){ Serial.print("Menghubungkan ke " + String(SSID)); //Conectamos rede WiFi criado pelo outro ESP WiFi.begin(SSID, PASSWORD); //Konektar Esperamos while (WiFi.status() != WL_CONNECTED) { Serial.print("."); penundaan (500); } //Se chegou aqui está conectado rede WiFi Serial.println(); Serial.println("Terhubung!"); }
HubungkanKlien
void connectClient(){ Serial.println("Menghubungkan klien"); //Esperamos conectar com o server while (!client.connect(WiFi.gatewayIP(), SERVER_PORT)) { Serial.print("."); penundaan (500); } //Se chegou aqui está conectado com o server Serial.println(); Serial.println("Klien terhubung!"); }
Lingkaran
void loop(){ //Se não estiver conectado rede WiFi, mandamos conectar if(WiFi.status() != WL_CONNECTED) { setupWiFi(); } }
MenanganiKoneksi
void handleConnection(void* pvParameters){ //PENTING: A tarefa não pode terminar, kembangkan ficar presa em um loop infinito while(true) { //Se no 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 atau novo estado for(int i=0; i
memilikiPinStatusBerubah
//Verifikasi se o estado do pino na posição 'i' lakukan array mudou//Retorna 'true' se mudou ou 'false' caso contrário boolean hasPinStatusChanged(int i) { //Faz a leiura do pino int pinStatus = digitalRead(pin .nomor); //Se o estado lakukan pino untuk perbedaan if(pins.status != pinStatus) { //Guardamos o novo estado dan retornamos true pins.status = pinStatus; kembali benar; } //Só chegará aqui se o estado não foi alterado //Então retornamos falso return false; }
kirimPinStatus
//Envia para o server os dados lakukan pino dan posio 'saya' lakukan arrayvoid sendPinStatus(int i) { client.write((uint8_t*)&pin, sizeof(Pin)); klien.flush(); }
Langkah 7: Server.ino
Deklarasi dan variabel
#include #include //Dados da rede //Deve ser igual no Client #define SSID "ESP32Server" #define PASSWORD "87654321" #define SERVER_PORT 5000 //Criamos um server dan port yang ditentukan untuk server WiFiServer 'SERVER_PORT' (SERVER_PORT); //Vector pada klien vamos adicionar os sesuai dengan elemen sebelumnya conectando std::vektor klien; //Struct que define os dados que vamos enviar (deve ser igual no client) typedef struct{ int number; status int; }Pin;
Mempersiapkan
void setup(){ Serial.begin(115200); //Criamos a rede WiFi dan iniciamos o server setupWiFi(); server.mulai(); 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, //Prioridade da tarefa NULL, //Prioridade da tarefa NULL Caso queria manter uma referência para a tarefa que vai ser criada (tidak ada caso não precisamos) 0); //Nmero do core que será executada a tarefa (usamos o core 0 para o loop ficar livre com o core 1) }
SiapkanWiFi
void setupWiFi(){ //Coloca este ESP como Access Point WiFi.mode(WIFI_AP); //SSID dan Senha untuk terhubung dengan ESP WiFi.softAP(SSID, PASSWORD); }
Lingkaran
void loop(){ //Memverifikasi klien baru dan terhubung dengan klien WiFiClient = server.available(); //Se sim colocamos ele no vector if(client) { clients.push_back(client); } }
MenanganiKlien
void handleClients(void* pvParameters){ //PENTING: A tarefa não pode terminar, deve ficar presa em um loop infinito while(true) { //Para cada client que temos no vector for(int i=0; i
Langkah 8: File
Unduh file
SAYA TIDAK
Direkomendasikan:
IRduino: Remote Control Arduino - Meniru Remote yang Hilang: 6 Langkah
IRduino: Remote Control Arduino - Tiru Remote yang Hilang: Jika Anda pernah kehilangan remote control untuk TV atau pemutar DVD Anda, Anda tahu betapa frustasinya harus berjalan ke, menemukan, dan menggunakan tombol-tombol pada perangkat itu sendiri. Terkadang, tombol ini bahkan tidak menawarkan fungsi yang sama dengan remote. Resi
Kit Remote Control Biasa Diubah Menjadi Remote Control Mainan RC Empat Saluran: 4 Langkah
Kit Remote Control Biasa Diubah Menjadi Remote Control Mainan RC Empat Saluran: 2262和2272芯片和433个模块构建。 kan
Kontrol Peralatan Listrik Anda Dengan Remote TV (Remote ir) Dengan Tampilan Suhu dan Kelembaban: 9 Langkah
Kontrol Peralatan Listrik Anda Dengan Remote TV (Remote ir) Dengan Tampilan Suhu dan Kelembaban: hai saya Abhay dan ini adalah blog pertama saya di Instructables dan hari ini saya akan menunjukkan cara mengontrol peralatan listrik Anda dengan remote tv dengan membuat ini proyek sederhana. terima kasih kepada lab atl atas dukungan dan pemberian materinya
Robot Remote Control Menggunakan Arduino dan T.V. Remote: 11 Langkah
Robot Remote Control Menggunakan Arduino dan Remote TV: Mobil remote control ini dapat dipindahkan menggunakan hampir semua jenis remote seperti TV, AC, dll. Ini memanfaatkan fakta bahwa remote memancarkan IR (inframerah). Properti ini digunakan dengan menggunakan penerima IR, yang merupakan sensor yang sangat murah. Di
I2C InfraRed Remote Control Dengan Arduino: 8 Langkah (dengan Gambar)
I2C InfraRed Remote Control Dengan Arduino: Pembukaan Instruksi ini merinci cara membuat remote kontrol universal menggunakan I2C untuk antarmuka. Betapa anehnya katamu, menggunakan perangkat budak I2C? Ya, perangkat budak I2C. Ini karena waktu yang akurat dari paket IR cukup menuntut dan