This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
en:iot-open:practical:hardware:sut:esp32:iot_2 [2024/04/10 12:22] – [Task to be implemented] pczekalski | en:iot-open:practical:hardware:sut:esp32:iot_2 [2024/04/21 11:39] (current) – pczekalski | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | <todo @pczekalski> | ||
====== IOT2: Reading IP address of the WiFi ===== | ====== IOT2: Reading IP address of the WiFi ===== | ||
On the networking level, IP devices are identified by MAC. In the case of our laboratory and network, you will obtain the IP address from the DHCP server integrated with the WiFi access point. To connect to the WiFi network, one needs to use credentials that are present in the general laboratory description, | On the networking level, IP devices are identified by MAC. In the case of our laboratory and network, you will obtain the IP address from the DHCP server integrated with the WiFi access point. To connect to the WiFi network, one needs to use credentials that are present in the general laboratory description, | ||
Line 22: | Line 21: | ||
==== Task to be implemented ==== | ==== Task to be implemented ==== | ||
- | Connect to the " | + | Connect to the " |
==== Start ==== | ==== Start ==== | ||
- | Check if you can see a full LCD in your video stream. Book a device and create a dummy Arduino file with '' | + | Check if you can clearly |
Line 35: | Line 34: | ||
#include < | #include < | ||
</ | </ | ||
- | The WiFi library automatically initialises a singleton class '' | + | The WiFi library automatically initialises a singleton class, '' |
=== Step 2 === | === Step 2 === | ||
- | Reading the MAC as a '' | + | Declare some constants, including AP SSID and passphrase and a variable to store IP: |
<code c> | <code c> | ||
- | WiFi.macAddress(); | + | const char* ssid = " |
+ | const char* pass = " | ||
+ | IPAddress localIP; | ||
</ | </ | ||
- | ==== Result validation ==== | + | Both '' |
- | Using another node should change the MAC read. Book another device | + | |
- | ===== FAQ ===== | ||
- | **Can I change MAC?**: Actually, yes, you can. It is not advised, however, because you may accidentally generate an overlapping address that will collide with another device in the same network. You must first explicitly configure the ESP32 chip to work as an AP (Access Point, Server) or STA (WiFi Client) to do it. Sample stub code (for STA) may look as follows: | ||
- | <code c> | ||
- | #include < | ||
- | #include < | ||
- | uint8_t newMAC[] | + | === Step 3 === |
- | void setup() | + | Set your device in the STA mode and connect to the WiFi AP: |
- | { | + | <code c> |
WiFi.mode(WIFI_STA); | WiFi.mode(WIFI_STA); | ||
- | | + | |
- | } | + | while (WiFi.status() != WL_CONNECTED) { |
+ | //Drop some info on display about connecting | ||
+ | delay(1000); | ||
+ | | ||
</ | </ | ||
+ | |||
+ | The '' | ||
+ | * 0, '' | ||
+ | * 1, '' | ||
+ | * 2, '' | ||
+ | * 3, '' | ||
+ | * 4, '' | ||
+ | * 5, '' | ||
+ | * 6, '' | ||
+ | |||
+ | === Step 4 === | ||
+ | Reading the IP as a '' | ||
+ | <code c> | ||
+ | | ||
+ | </ | ||
+ | The '' | ||
+ | |||
+ | === Step 5 === | ||
+ | Explicitly disconnect from the WiFi AP to free resources: | ||
+ | <code c> | ||
+ | WiFi.disconnect(); | ||
+ | </ | ||
+ | |||
+ | Some useful WiFi functions are listed below: | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | ==== Result validation ==== | ||
+ | You should be able to connect to the WiFi and present the dynamically assigned IP address by the DHCP server. < | ||
+ | |||
+ | ===== FAQ ===== | ||
+ | **I set a hostname, but it does appear on the router level.**: There are many possible reasons; one is an active registration in the router (AP) that keeps an old IP address, so you need to wait until it expires; another reason is you have changed the hostname when you were connected to the AP.\\ | ||
+ | **Can I use a manually configured IP?**: Actually, you can, but we strongly discourage it. You may accidentally overlap this IP address with some other device, router, or infrastructure, | ||
<WRAP noprint> | <WRAP noprint> |