תוכן עניינים:
- שלב 1: הפגנה
- שלב 2: התקנת שרת
- שלב 3: הרכבת לקוחות
- שלב 4: זרימה - שרת
- שלב 5: זרימה - לקוח
- שלב 6: Client.ino
- שלב 7: Server.ino
- שלב 8: קבצים
וִידֵאוֹ: Arduino IDE עם ליבה כפולה: שלט רחוק: 8 שלבים
2024 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2024-01-30 09:15
הסרטון הזה עוסק ב"רב ". אנו מתמודדים עם ריבוי משימות, ריבוי ליבות ורבים. לפני זמן מה עשיתי שלט רחוק עם שני מערכות ESP: לקוח ונקודת גישה. על סמך זה, היום נקים שרת מרובה לקוחות. המשמעות היא שיהיו לנו מספר לקוחות מחוברים ב- ESP אחד.
לפיכך, השיעור כיום כרוך ביצירת שרת ב- ESP32, הוספת לקוחות חדשים בלולאה וטיפול בבקשות בגרעין אחר. לקוחות ישלחו מידע על שינוי המצב של הסיכות שלהם, והשרת ישחזר את שינויי המצב האלה.
שלב 1: הפגנה
שלב 2: התקנת שרת
שלב 3: הרכבת לקוחות
שלב 4: זרימה - שרת
שלב 5: זרימה - לקוח
שלב 6: Client.ino
הצהרות ומשתנים
#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 with server WiFiClient client; // Struct que להגדיר os dados que vamos enviar (deve ser igual אין שרת) typedef struct {int number; סטטוס int; }פִּין; // 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] = { {. מספר = 21}, {. מספר = 19}};
להכין
הגדרת חלל () {Serial.begin (115200); // זמני לשיקול לקוח perdida client.setTimeout (5000); // חיבור אינטרנט אלחוטי והרכבה של שרת הגדרות WIFi (); connectClient (); עבור (int i = 0; i
הגדר WiFi
void setupWiFi () {Serial.print ("מתחבר ל-" + מחרוזת (SSID)); // Conectamos à rede WiFi criado pelo outro ESP WiFi.begin (SSID, PASSWORD); // חוברת אספרמוס בעוד (WiFi.status ()! = WL_CONNECTED) {Serial.print ("."); עיכוב (500); } // Se chegou aqui está conectado à rede WiFi Serial.println (); Serial.println ("מחובר!"); }
ConnectClient
void connectClient () {Serial.println ("חיבור לקוח"); // Esperamos conectar com or server while (! Client.connect (WiFi.gatewayIP (), SERVER_PORT)) {Serial.print ("."); עיכוב (500); } // Se chegou aqui está conectado com בשרת Serial.println (); Serial.println ("לקוח מחובר!"); }
לוּלָאָה
לולאת void () {// Se não estiver conectado à rede WiFi, mandamos conectar if (WiFi.status ()! = WL_CONNECTED) {setupWiFi (); }}
חיבור ידית
void handleConnection (void* pvParameters) {// חשוב: טרמינאר של tarefa não pode, 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. אתה יכול לראות את השרת עבור (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 . מספר); // Se o estado do pino for diferente if (pins .status! = PinStatus) {// Guardamos o novo estado e retornamos סיכות אמיתיות .status = pinStatus; להחזיר נכון; } // Só chegará aqui se o estado não foi alterado // Então retornamos falso return false; }
sendPinStatus
// Envia para o server us dados do pino na posição 'i' do arrayvoid sendPinStatus (int i) {client.write ((uint8_t*) & pins , sizeof (Pin)); client.flush (); }
שלב 7: Server.ino
הצהרות ומשתנים
#include #include // Dados da rede // הגשת שירות ללא לקוח #הגדרת SSID "ESP32Server" #הגדרת סיסמה "87654321" #הגדרת SERVER_PORT 5000 // הגדרות שרת בפורמט הגדרות של 'SERVER_PORT' שרת WiFiServer (SERVER_PORT); // וקטור אונדה vamos adicionar לקוחות לקוחות conforme eles forem conectando std:: לקוחות לקוחות; // Struct que להגדיר os dados que vamos enviar (deve ser igual אין לקוח) typedef struct {int number; סטטוס int; }פִּין;
להכין
הגדרת חלל () {Serial.begin (115200); // Criamos משתמשת ב- WiFi ואינפורמציה או התקנת שרת WiFi (); 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 (אין caso não precisamos) 0); // מספרים על הליבה שתוכל לבצע את הפעולה (מידע על הליבה 0 עבור לולאה).
SetupWiFi
void setupWiFi () {// Coloca este ESP como Access Point WiFi.mode (WIFI_AP); // SSID e Senha para se conectarem a este ESP WiFi.softAP (SSID, PASSWORD); }
לוּלָאָה
void loop () {// 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: טרמינאר של tarefa não pode, deve ficar presa em um loop infinito while (true) {// Para cada client que temos no vector for (int i = 0; i
שלב 8: קבצים
הורד את הקבצים
INO
מוּמלָץ:
שיבוט כל שלט רחוק עם Arduino Nano: 5 שלבים
שיבוט כל שלט רחוק עם Arduino Nano: שיבוט כל שלט רחוק עם Arduino Nano
שלט רחוק מבוסס דפדפן Arduino (לינוקס): 9 שלבים (עם תמונות)
שלט רחוק מבוסס דפדפן Arduino (לינוקס): יש לנו ילדים. אני אוהב אותם לרסיסים אבל הם ממשיכים להסתיר את השלט הרחוק ללווין ולטלוויזיה כשהם מעלים את ערוצי הילדים. אחרי שזה קרה על בסיס יומי במשך כמה שנים, ואחרי שאשתי היקרה מאפשרת לי לקבל
בנה 15 $ $ שלט -רובוט באטלר / מכונית / טנק בשלט רחוק בשלט רחוק ל- iOS ו- Android: 4 שלבים
בנו 15 $ נשלט מרחוק ESP8266 רובוט באטלר / מכונית / טנק עבור iOS ו- Android: האם אתם שונאים ללכת למטבח לחטוף חטיף? או לקבל משקה חדש? ניתן לתקן את כל זה באמצעות משרת פשוט בשליטה מרחוק של $ 15. לפני שאנו הולכים רחוק יותר אני מפעיל פרויקט Kickstarter כרגע עבור רצועת LED RGB נשלטת
IRduino: שלט רחוק Arduino - חיקוי שלט אבוד: 6 שלבים
IRduino: שלט רחוק Arduino - חיקוי שלט רחוק: אם איבדת את השלט הרחוק לטלוויזיה או לנגן ה- DVD שלך, אתה יודע כמה זה מתסכל להיות צריך ללכת, למצוא ולהשתמש בכפתורים במכשיר עצמו. לפעמים הכפתורים האלה אפילו לא מציעים את אותה פונקציונליות כמו השלט. קבל
ערכת שלט רחוק רגילה השתנתה לשלט רחוק צעצוע RC בעל 4 ערוצים: 4 שלבים
ערכת שלט רחוק רגילה שהפכה לשלט רחוק צעצוע RC בעל 4 ערוצים: 如何 将 通用 遥控 套件 转换 为 为 模型 中 的 四 62 62 62 62改造 方法 非常 简单 只需 只需 准备 瓦楞纸 板 , 然后 按照 教程 完成 完成 这个 项目 并 您 服务 服务 车船 提供 提供