RCK Ruđera Boškovića - mobilna / uslužna robotika

Biblioteke - WiFi

Zadatak

Umrežiti robote.

Priprema

Za vježbu je potrebno:

Omogućavanje WiFi biblioteke

#pragma once
#define RADIO 1 // 0 - no radio, 1 Bluetooth, 2 WiFi
#include <Arduino.h>
extern char errorMessage[60];
Otvorite "mrm-common.h" datoteku.

U njoj promijenite "1" u "2" (ako želimo koristiti robota kao predefinirani web server) ili u "0" (ako želimo sami definirati WiFi).

SSID i lozinka

Robot(char name[15] = (char*)"MRMS robot", char ssid[15] = (char*)"MRMS", char wiFiPassword[15] = (char*)"mrms");
Ako smo izabrali "2", upišimo SSID i lozinku u ovu programsku liniju, koja se nalazi u "mrm-robot.h".

Umjesto "MRMS", upišimo SSID, umjesto "mrms", lozinku željene WiFi mreže.

Web server

#if RADIO == 2
	delay(100);
	webServer = new WiFiServer(80);

	  // Connect to Wi-Fi network with SSID and password
	print("Connecting to %s", ssid);
	WiFi.begin(ssid, wiFiPassword);
	uint32_t startMs = millis();
	bool ok = true;
	while (WiFi.status() != WL_CONNECTED) {
		delay(200);
		print(".");
		if (millis() - startMs > 2000){
			ok = false;
			break;
		}
	}
	if (ok){
		// Print local IP address and start web server
		print("\n\r");
		print("WiFi connected.\n\r");
		print("IP address: %i.%i.%i.%i\n\r", WiFi.localIP()[0], WiFi.localIP()[1], WiFi.localIP()[2], WiFi.localIP()[3]);
		webServer->begin();
	}
	else
		print("\n\rWeb server not started.\n\r");
#endif
Ako smo izabrali "2", izvršit će se ovaj kod u "mrm-robot.cpp".

webServer će biti objekt koji je naš web server.

WiFi.begin pokreće WiFi.

Nakon toga proučavamo WiFi.status, dok ne ustanovimo da je ESP32 spojen na access point ili je istekao timoeut.

Ako smo uspješno spojeni, ispišemo parametre veze.

Nakon toga programiramo web server prema željenoj aplikaciji.

Proizvoljan WiFi

void RobotMaze::loop() {

#define SSID "INSERT_SSID"
#define PASSWORD "INSERT_PASSWORD"
	if (setup()){
            WiFi.mode(WIFI_STA);
            WiFi.begin(SSID, PASSWORD);
            print("Connecting to WiFi ..");
            while (WiFi.status() != WL_CONNECTED) {
                print(".");
                delay(1000);
            }
            print("%s\n\r", WiFi.localIP());
	}
}
S druge strane, ako smo na početku izabrali "0", definiramo proizvoljno WiFi.

Ovaj je kod primjer spajanja u "station mode" ("WIFI_STA"), koristeći WiFi.mode().

Mogli smo ostvariti spajanje u "access point mode" ("WIFI_AP") ili u oba moda ("WIFI_STA_AP").

Ostatak koda je sličan prethodnom, ali ga sad možemo mijenjati sami, umjesto da diramo baznu klasu "Robot".

Više se o biblioteci može naći na stranici proizvođača.

Primjedbe