ዝርዝር ሁኔታ:
- ደረጃ 1 - ሰልፍ
- ደረጃ 2 - የመጫኛ አገልጋይ
- ደረጃ 3 - የደንበኛ ስብሰባ
- ደረጃ 4 - ፍሰት - አገልጋይ
- ደረጃ 5 - ፍሰት - ደንበኛ
- ደረጃ 6: Client.ino
- ደረጃ 7: Server.ino
- ደረጃ 8 - ፋይሎች
ቪዲዮ: አርዱዲኖ አይዲኢ ባለሁለት ኮር: የርቀት መቆጣጠሪያ 8 ደረጃዎች
2024 ደራሲ ደራሲ: John Day | [email protected]. ለመጨረሻ ጊዜ የተሻሻለው: 2024-01-30 07:32
ይህ ቪዲዮ ስለ “ብዙ” ነው። እኛ ብዙ ተግባራትን ፣ ባለብዙ መልቀቂያዎችን እና ባለብዙ ደንበኞችን እያስተናገድን ነው። ከጥቂት ጊዜ በፊት በሁለት ኢኤስፒዎች የርቀት መቆጣጠሪያ ሠራሁ - ደንበኛ እና የመዳረሻ ነጥብ። በዚህ መሠረት ዛሬ ሁለገብ አገልጋይ እናዘጋጃለን። ይህ ማለት በአንድ ነጠላ ESP ውስጥ የተገናኙ ብዙ ደንበኞች ይኖረናል ማለት ነው።
ስለዚህ ፣ ዛሬ ትምህርቱ በ ESP32 ውስጥ የአገልጋይ መፈጠርን ፣ በሉፕ ውስጥ አዳዲስ ደንበኞችን ማከል እና የጥያቄዎቹን አያያዝ በሌላ ኮር ውስጥ ያካትታል። ደንበኞች ስለ ፒኖቻቸው ሁኔታ ለውጥ መረጃ ይልካሉ ፣ እና አገልጋዩ እነዚህን የስቴት ለውጦችን ያባዛቸዋል።
ደረጃ 1 - ሰልፍ
ደረጃ 2 - የመጫኛ አገልጋይ
ደረጃ 3 - የደንበኛ ስብሰባ
ደረጃ 4 - ፍሰት - አገልጋይ
ደረጃ 5 - ፍሰት - ደንበኛ
ደረጃ 6: Client.ino
መግለጫዎች እና ተለዋዋጮች
#ያካትቱ /// ዳዶስ ዳ ሬስ // 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 os dados que vamos enviar (deve ser igual no server) 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_COUNT] = { {. ቁጥር = 21} ፣ {. ቁጥር = 19}};
አዘገጃጀት
ባዶነት ማዋቀር () {Serial.begin (115200); // ቴምፖ para para conrar a conexão como perdida client.setTimeout (5000); // Conectamos à rede WiFi እና conectamos ao server setupWiFi (); connectClient (); ለ (int i = 0; i
WiFi ን ያዋቅሩ
ባዶነት ማዋቀር Wi -Fi () {Serial.print (“ከ” + String (SSID) ጋር መገናኘት); // Conectamos à rede WiFi criado pelo outro ESP WiFi.begin (SSID ፣ PASSWORD); // Esperamos ሲገናኝ (WiFi.status ()! = WL_CONNECTED) {Serial.print (".")); መዘግየት (500); } // Se chegou aqui está conectado à rede WiFi Serial.println (); Serial.println ("ተገናኝቷል!"); }
የግንኙነት ደንበኛ
ባዶ ግንኙነት ConnectClient () {Serial.println («ደንበኛ ማገናኘት»); // Esperamos conectar com o server ((client.connect (WiFi.gatewayIP () ፣ SERVER_PORT))) {Serial.print (".")) መዘግየት (500); } // የአገልጋይ Serial.println () ን ይመልከቱ። Serial.println ("ደንበኛ ተገናኝቷል!"); }
ሉፕ
void loop () {// Se não estiver conectado à rede WiFi, ifamos conectar if (WiFi.status ()! = WL_CONNECTED) {setupWiFi (); }}
HandleConnection
ባዶ እጀታ ግንኙነት (ባዶነት* pvParameters) {// አስፈላጊ: አንድ tarefa não pode terminar ፣ deve ficar presa em um loop infinito ሳለ (እውነት) {// Se não estiver conectado com o server, mandamos conectar ከሆነ (! ደንበኛ። የተገናኘ ()) {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 .status! = PinStatus) {// Guardamos o novo estado e retornamos እውነተኛ ካስማዎች .status = pinStatus; እውነት ተመለስ; } // Só chegará aqui se o estado não foi alterado // Então retornamos falso መመለስ ሐሰት; }
sendPinStatus
// Envia para o server os dados do pino na posição 'i' do arrayvoid sendPinStatus (int i) {client.write ((uint8_t*) & pins , sizeof (ፒን)); client.flush (); }
ደረጃ 7: Server.ino
መግለጫዎች እና ተለዋዋጮች
#ያካትቱ #ያካትቱ /// ዳዶስ ዳ ሬቤር // 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 ደንበኞች conforme eles forem conectando STD:: የቬክተር ደንበኞች; // Struct que os os dados que vamos enviar (deve ser igual no ደንበኛ) typedef struct {int number; int ሁኔታ; } ፒን;
አዘገጃጀት
ባዶነት ማዋቀር () {Serial.begin (115200); // Criamos a WiFi WiFi እና iniciamos o 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); // Nuemero do core que será executada a tarefa (usamos o core 0 para o loop ficar livre com o core 1)}
SetupWiFi
ባዶነት ማዋቀር Wi -Fi () {// የኮሎካ ግምት ESP como የመድረሻ ነጥብ WiFi.mode (WIFI_AP); // SSID እና Senha para se conectarem a este ESP WiFi.softAP (SSID ፣ PASSWORD) ፤ }
ሉፕ
ባዶነት loop () {// Verifica se um novo client está tentando se conectar WiFiClient client = server.available (); // ሲም ኮላኮሞሞስ ምንም ቪክቶር ከሆነ (ደንበኛ) {customers.push_back (ደንበኛ) ፤ }}
ተቆጣጣሪ ደንበኞች
ባዶ እጀታ ደንበኞች (ባዶ* pvParameters) {// አስፈላጊ: አንድ tarefa não pode terminar ፣ deve ficar presa em um loop infinito ሳለ (እውነት) {// Para cada client que temos no vector for (int i = 0; i
ደረጃ 8 - ፋይሎች
ፋይሎቹን ያውርዱ
ፒዲኤፍ
INO
የሚመከር:
የቲቪ የርቀት የርቀት መቆጣጠሪያ አርኤፍ ሆኗል -- NRF24L01+ አጋዥ ስልጠና 5 ደረጃዎች (ከስዕሎች ጋር)
የቲቪ የርቀት የርቀት አርኤፍ ይሆናል || NRF24L01+ መማሪያ -በዚህ ፕሮጀክት ውስጥ በቴሌቪዥን የርቀት መቆጣጠሪያ በሶስት የማይጠቅሙ አዝራሮች አማካኝነት የ LED ን ብሩህነት በገመድ አልባ ለማስተካከል ታዋቂውን nRF24L01+ RF IC ን እንዴት እንደጠቀምኩ አሳያችኋለሁ። እንጀምር
ቢግ አርዱዲኖ ኤልሲዲ ሰዓት በሁለት ማንቂያዎች እና የሙቀት መቆጣጠሪያ በ IR ቲቪ ቁጥጥር የሚደረግበት የርቀት መቆጣጠሪያ - 5 ደረጃዎች
በኤር ቲቪ ቁጥጥር የሚደረግለት ትልቁ አርዱዲኖ ኤልሲዲ ሰዓት በሁለት ማንቂያዎች እና የሙቀት መቆጣጠሪያ በ IR ቲቪ ቁጥጥር የሚደረግበት - በአርዲኖ ላይ የተመሠረተ ኤልሲዲ ሰዓት በሁለት ማንቂያዎች እና በ IR ቲቪ ርቀት መቆጣጠሪያ በሚቆጣጠረው የሙቀት መቆጣጠሪያ እንዴት እንደሚሠራ።
ኢርዱዲኖ - አርዱinoኖ የርቀት መቆጣጠሪያ - የጠፋውን የርቀት ምሳሌ - 6 ደረጃዎች
ኢርዱዲኖ - አርዱinoኖ የርቀት መቆጣጠሪያ - የጠፋውን የርቀት አርዓያ ምሰሉ - ለቴሌቪዥንዎ ወይም ለዲቪዲ ማጫወቻዎ የርቀት መቆጣጠሪያውን ከጠፉ ፣ በመሣሪያው ላይ ያሉትን አዝራሮች መሄድ ፣ መፈለግ እና መጠቀም ምን ያህል እንደሚያበሳጭ ያውቃሉ። አንዳንድ ጊዜ እነዚህ አዝራሮች እንደ የርቀት መቆጣጠሪያ ተመሳሳይ ተግባር እንኳን አይሰጡም። ተቀበል
ተራ የርቀት መቆጣጠሪያ ኪት ወደ አራት-ሰርጥ RC መጫወቻ የርቀት መቆጣጠሪያ ተለወጠ -4 ደረጃዎች
የተለመደው የርቀት መቆጣጠሪያ ኪት ወደ አራት-ሰርጥ RC መጫወቻ የርቀት መቆጣጠሪያ ተለወጠ-将 将 通用 遥控 套件 转换 转换 为 玩具 模型 6改造 方法 非常 简单。 只需 准备 准备 瓦楞纸 板 板 ,
አርዱዲኖ የትራፊክ መብራት መቆጣጠሪያ ወ/የርቀት መቆጣጠሪያ 10 ደረጃዎች
አርዱinoኖ የትራፊክ መብራት ተቆጣጣሪ ወ/የርቀት መቆጣጠሪያ - እኔ የማሻሻለው የትራፊክ መብራት ነበረኝ። የቀረው ብቸኛው ነገር ለብርሃን የምልክት ዘይቤዎች መቆጣጠሪያውን መገንባት ነው። እሱን ለማጣመም የርቀት መቆጣጠሪያን አካትቻለሁ። ይህ ለእኔ ለእኔ ፍጹም ዕድል ነበር