Агуулгын хүснэгт:

Arduino IDE нь хос цөмтэй: Алсын удирдлага: 8 алхам
Arduino IDE нь хос цөмтэй: Алсын удирдлага: 8 алхам

Видео: Arduino IDE нь хос цөмтэй: Алсын удирдлага: 8 алхам

Видео: Arduino IDE нь хос цөмтэй: Алсын удирдлага: 8 алхам
Видео: ADVANCED ANIMAL ROBOTS YOU NEED TO SEE 2024, Долдугаар сарын
Anonim
Image
Image
Жагсаал
Жагсаал

Энэ видео нь "олон талт" тухай юм. Бид олон үүрэг даалгавар, олон цөм, олон үйлдлийн системтэй харьцаж байна. Хэсэг хугацааны өмнө би үйлчлүүлэгч ба нэвтрэх цэг гэсэн хоёр ESP -тэй алсын удирдлага хийсэн. Үүн дээр үндэслэн өнөөдөр бид олон талт сервер тохируулах болно. Энэ нь бид нэг ESP -д холбогдсон олон үйлчлүүлэгчтэй болно гэсэн үг юм.

Тиймээс өнөөдрийн хичээл нь ESP32 дээр сервер үүсгэх, шинэ үйлчлүүлэгчдийг нэмж оруулах, хүсэлтийг өөр цөмд зохицуулах явдал юм. Үйлчлүүлэгчид тээглүүрийн төлөв байдлын талаар мэдээлэл илгээх бөгөөд сервер эдгээр төлөвийн өөрчлөлтийг хуулбарлах болно.

Алхам 1: Жагсаал

Алхам 2: Серверийг холбох

Суулгах сервер
Суулгах сервер

Алхам 3: Үйлчлүүлэгчдийн хурал

Үйлчлүүлэгчийн угсралт
Үйлчлүүлэгчийн угсралт

Алхам 4: Урсгал - Сервер

Урсгал - Сервер
Урсгал - Сервер

Алхам 5: Урсгал - Үйлчлүүлэгч

Урсгал - үйлчлүүлэгч
Урсгал - үйлчлүүлэгч

Алхам 6: Client.ino

Тунхаглал ба хувьсагчид

#include // Dados da rede // Deve ser giual no Server #SSID "ESP32Server" #deefine PASSWORD "87654321" #deverine SERVER_PORT 5000 // Тодорхойлох сервер сервер WiFiClient клиент; // Struct que os os -ийг тодорхойлох int төлөв; } Пин; // Quinidade de pinos que iremos ler e enviar o status #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}};

Тохируулах

void setup () {Serial.begin (115200); // Хэрэглэгчийн хувьд түр зуурын тооцоо хийх.setTimeout (5000); // Conectamos à rede WiFi эсвэл conectamos серверийн тохиргооWiFi (); connectClient (); for (int i = 0; i

WiFi тохируулах

void setupWiFi () {Serial.print ("Холбогдож байна" + String (SSID)); // Conectamos à rede WiFi criado pelo outro out ESP WiFi.begin (SSID, PASSWORD); // Esperamos conectar while (WiFi.status ()! = WL_CONNECTED) {Serial.print ("."); саатал (500); } // Wi -Fi Serial.println () -ийг сонгоно уу. Serial.println ("Холбогдсон!"); }

ConnectClient

void connectClient () {Serial.println ("Үйлчлүүлэгчийг холбох"); // Esperamos conectar com o server while (! Client.connect (WiFi.gatewayIP (), SERVER_PORT)) {Serial.print ("."); саатал (500); } // Serial.println () серверийг сонгоно уу. Serial.println ("Үйлчлүүлэгч холбогдсон!"); }

Гогцоо

void loop () {// Se não estiver conectado à rede WiFi, mandamos conectar if (WiFi.status ()! = WL_CONNECTED) {setupWiFi (); }}

Бариул Холболт

void handleConnection (void* pvParameters) {// ЧУХАЛ: Хязгааргүй цэгийн терминал, хөгжүүлэлт хийх хугацаа (үнэн) {// Se não estiver conectado com o server, mandamos conectar if (! client.connected ()) {connectClient (); } // Төгсгөлд нь оруулах ёстой. (Int i = 0; i

hasPinStatusChanged

// Төгсгөлд нь тохируулах нь чухал биш юм // 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 if (pins . Status! = PinStatus) {// Guardamos o novo estado e retornamos true pins .status = pinStatus; үнэн рүү буцах; } // Хязгаарлагдмал хугацаа дуусах болно // Então retornamos falso return false; }

sendPinStatus

// SendPinStatus (int i) {client.write ((uint8_t*) & pins , sizeof (Pin)) arrayvoid хийхээс өөр аргагүй серверүүдийг ажиллуулах; client.flush (); }

Алхам 7: Server.ino

Тунхаглал ба хувьсагчид

#include #include // Dados da rede // Deve ser igual no Client #SSID "ESP32Server" -ийг тодорхойлох #PASSWORD -ийг тодорхойлох "87654321" #SERVER_PORT 5000 -ийг тодорхойлох // // SERVER_PORT 'WiFiServer серверийн сервер (SERVER_); // Хэрэглэгчид векторууд нь stect:: vector үйлчлүүлэгчидтэй нийцдэг; // Struct que os os -ийг тодорхойлох int төлөв; } Пин;

Тохируулах

void setup () {Serial.begin (115200); // Criamos нь WiFi тохиргоог өөрчлөх эсвэл серверийн тохиргоо хийхWiFi (); server.begin (); xTaskCreatePinnedToCore (handleClients, // Funcão que será executada "handleClients", // Nome da tarefa 10000, // Tamanho da pilha NULL, // Parametro 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); // Гол үүрэг гүйцэтгэнэ үү (үндсэн цэс 0 пара -гийн давталт хийх ёстой))

Wi -Fi тохируулах

void setupWiFi () {// Coloca este ESP como Access Point WiFi.mode (WIFI_AP); // SSID, ESP WiFi.softAP (SSID, Нууц үг); }

Гогцоо

void loop () {// Хэрэглэгчийн баталгаажуулалт WiFiClient client = server.available (); // Se sim colocamos ele no vektor if (client) {clients.push_back (client); }}

HandleClients

void handleClients (void* pvParameters) {// ЧУХАЛ: Хязгааргүй цэгийн терминал, хөгжүүлэлт хийх хугацаа хязгааргүй байхад (үнэн) {// Пара кадаа үйлчлүүлэгчийн хувьд ямар ч вектор байхгүй (int i = 0; i

Алхам 8: Файлууд

Файлуудыг татаж авах

PDF

INO

Зөвлөмж болгож буй: