جدول المحتويات:
- الخطوة 1: العرض التوضيحي
- الخطوة 2: تركيب الخادم
- الخطوة 3: تجميع العميل
- الخطوة 4: التدفق - الخادم
- الخطوة 5: التدفق - العميل
- الخطوة 6: Client.ino
- الخطوة 7: Server.ino
- الخطوة 8: الملفات
فيديو: اردوينو IDE مع ثنائي النواة: التحكم عن بعد: 8 خطوات
2024 مؤلف: John Day | [email protected]. آخر تعديل: 2024-01-30 07:40
يدور هذا الفيديو حول "متعدد". نحن نتعامل مع تعدد المهام ، وتعدد المهام ، والعملاء المتعددين. منذ فترة ، قمت بعمل جهاز تحكم عن بعد مع اثنين من ESP: عميل ونقطة وصول. بناءً على ذلك ، سنقوم اليوم بإعداد خادم متعدد العملاء. هذا يعني أنه سيكون لدينا العديد من العملاء المتصلين في برنامج ESP واحد.
وبالتالي ، فإن الدرس اليوم يتضمن إنشاء خادم في ESP32 ، وإضافة عملاء جدد في الحلقة ، ومعالجة الطلبات في نواة أخرى. سيرسل العملاء معلومات حول تغيير حالة دبابيسهم ، وسيقوم الخادم بإعادة إنتاج هذه التغييرات في الحالة.
الخطوة 1: العرض التوضيحي
الخطوة 2: تركيب الخادم
الخطوة 3: تجميع العميل
الخطوة 4: التدفق - الخادم
الخطوة 5: التدفق - العميل
الخطوة 6: Client.ino
التصريحات والمتغيرات
# تضمين // 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 حدد os dados que vamos enviar (deve ser igual no server) typedef architecture {int number؛ حالة int }دبوس؛ // Quantidade de pinos que iremos ler e enviar o status #define PIN_COUNT 2 // Array com os pinos Definidos // لا يوجد 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}} ؛
اقامة
إعداد باطل () {Serial.begin (115200) ؛ // Tempo para allowar a conexão como perdida client.setTimeout (5000) ؛ // Conectamos à rede WiFi e conectamos ao server setupWiFi () ؛ connectClient () ، لـ (int i = 0 ؛ i
إعداد WiFi
void setupWiFi () {Serial.print ("Connecting to" + String (SSID)) ؛ // Conectamos à rede WiFi criado pelo outro ESP WiFi.begin (SSID ، كلمة المرور) ؛ // Esperamos conectar while (WiFi.status ()! = WL_CONNECTED) {Serial.print (".")؛ تأخير (500) ؛ } // Se chegou aqui está conectado à rede WiFi Serial.println () ؛ Serial.println ("متصل!") ؛ }
ConnectClient
void connectClient () {Serial.println ("Connecting client") ؛ // Esperamos conectar com o server while (! client.connect (WiFi.gatewayIP ()، SERVER_PORT)) {Serial.print (".")؛ تأخير (500) ؛ } // Se chegou aqui está conectado com o server Serial.println () ؛ Serial.println ("العميل متصل!") ؛ }
حلقة
حلقة باطلة () {// Se não estiver conectado à rede WiFi، mandamos conectar if (WiFi.status ()! = WL_CONNECTED) {setupWiFi ()؛ }}
مقبض
void handleConnection (void * pvParameters) {// IMPORTANTE: A 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 لـ (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 contário boolean hasPinStatusChanged (int i) {// Faz a leitura do pino int pinStatus = digitalRead (pinStatus = digitalRead) .number) ؛ // Se o estado do pino for diferente if (pin .status! = pinStatus) {// Guardamos o novo estado e retornamos true pin .status = pinStatus؛ العودة صحيح } // Só chegará aqui se o estado não foi alterado // Então retornamos falso return false؛ }
إرسال
// Envia para o server os dados do pino na posição 'i' do arrayvoid sendPinStatus (int i) {client.write ((uint8_t *) & pin ، sizeof (Pin))؛ client.flush () ، }
الخطوة 7: Server.ino
التصريحات والمتغيرات
# تضمين # تضمين // 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' WiFiServer server (SERVER_PORT) ؛ // Vector onde vamos adicionar os clients المطابقة eles forem conectando std:: vector clients؛ // Struct que حدد os dados que vamos enviar (deve ser igual no client) typedef Struct {int number؛ حالة int }دبوس؛
اقامة
إعداد باطل () {Serial.begin (115200) ؛ // Criamos a rede WiFi e iniciamos o server setupWiFi () ؛ server.begin () ، xTaskCreatePinnedToCore (handleClients، // Função que será Executiveada "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á Executive a tarefa (usamos o core 0 para o loop ficar livre com o core 1)}
SetupWiFi
إعداد باطلWiFi () {// Coloca este ESP como Access Point WiFi.mode (WIFI_AP) ؛ // SSID e Senha para se conectarem a este ESP WiFi.softAP (SSID ، كلمة المرور) ؛ }
حلقة
حلقة باطلة () {// Verifica se um novo client está tentando se conectar WiFiClient client = server.available () ؛ // Se sim colocamos ele no vector if (client) {clients.push_back (client) ؛ }}
التعامل مع العملاء
void handleClients (void * pvParameters) {// IMPORTANTE: 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
الخطوة 8: الملفات
قم بتنزيل الملفات
بي دي إف
انا لا
موصى به:
أصبح جهاز التحكم عن بعد في التلفزيون جهاز تحكم عن بعد بالتردد اللاسلكي -- NRF24L01 + البرنامج التعليمي: 5 خطوات (بالصور)
أصبح جهاز التحكم عن بعد في التلفزيون جهاز تحكم عن بعد بالتردد اللاسلكي || NRF24L01 + Tutorial: في هذا المشروع سأوضح لك كيف استخدمت nRF24L01 + RF IC لضبط سطوع شريط LED لاسلكيًا من خلال ثلاثة أزرار غير مجدية لجهاز التحكم عن بعد في التلفزيون. هيا بنا نبدأ
قم بتحويل جهاز التحكم عن بعد IR الخاص بك إلى جهاز التحكم عن بعد RF: 9 خطوات (بالصور)
قم بتحويل جهاز التحكم عن بعد IR الخاص بك إلى جهاز التحكم عن بعد RF: في Instructable اليوم ، سأوضح لك كيف يمكنك استخدام وحدة RF العامة بدون وحدة تحكم دقيقة والتي ستقودنا في النهاية إلى بناء مشروع حيث يمكنك تحويل IR Remote لأي جهاز إلى RF بعيد. الميزة الرئيسية لتحويل
أرخص اردوينو -- أصغر اردوينو -- اردوينو برو ميني -- البرمجة -- اردوينو نينو: 6 خطوات (مع صور)
أرخص اردوينو || أصغر اردوينو || اردوينو برو ميني || البرمجة || اردوينو نينو: …………………………. الرجاء الاشتراك في قناتي على يوتيوب لمزيد من مقاطع الفيديو ……. يدور هذا المشروع حول كيفية التعامل مع أصغر وأرخص اردوينو على الإطلاق. أصغر وأرخص اردوينو هو اردوينو برو ميني. إنه مشابه لاردوينو
تحكم في أجهزتك الكهربائية باستخدام جهاز التحكم عن بعد الخاص بالتلفزيون (جهاز التحكم عن بعد بالأشعة تحت الحمراء) مع عرض درجة الحرارة والرطوبة: 9 خطوات
تحكم في أجهزتك الكهربائية باستخدام جهاز التحكم عن بعد في التلفزيون (جهاز التحكم عن بعد بالأشعة تحت الحمراء) مع شاشة عرض درجة الحرارة والرطوبة: مرحبًا ، أنا أبهاي وهي أول مدونة لي على Instructables واليوم سأوضح لك كيفية التحكم في أجهزتك الكهربائية باستخدام جهاز التحكم عن بعد الخاص بالتلفزيون عن طريق بناء هذا مشروع بسيط. بفضل مختبر atl لدعمه وتوفير المواد
إصدار كابل التحكم عن بُعد من Olympus Evolt E510 (الإصدار 2 مع التركيز التلقائي على جهاز التحكم عن بُعد): 6 خطوات (بالصور)
إصدار الكبل عن بُعد من Olympus Evolt E510 (الإصدار 2 مع التركيز التلقائي على جهاز التحكم عن بُعد): قمت بالأمس ببناء جهاز تحكم عن بعد بزر واحد بسيط لجهاز Olympus E510 الخاص بي. تحتوي معظم الكاميرات على زر تحرير الغالق (الزر الذي تضغط عليه لالتقاط صورة) الذي يحتوي على وضعين. إذا تم الضغط على الزر برفق ، فستقوم الكاميرا بالتركيز التلقائي وقياس الضوء