An ESP32 Based WiFi Repeater that has a configurable UI for setup
This code is based on the [example code] (https://github.com/espressif/arduino-esp32) that is available in the ESP32 Examples for the Ardunio IDE. Unlike the original example the WiFi and Access Point settings can be updated via a web UI that runs on the ESP32. This should allow for easy modification as needed by the end user.
The webserver code was derived from learnings based on the tutorial at Random Nerd Tutorials.
This writeup assumes you already have the ability to push code to the ESP32 board using the Ardunio IDE. Once you have that working -
- Clone the repository
- Ensure all the dependencies libraries are installed. (WiFi, LittleFS, ArduinoJson)
- Push the LittleFS files to your ESP32. This is the raw web page for configuration.
- Compile and push the code to your ESP32.
- Connect to the Access Point that should now be available. The default name is
ESP32-WIFI-EXTENDER - Navigate in the browser of whatever you connected to the access point to
http://192.168.8.1 - Configure the settings for the WiFi and the AP name/password you want.
- You should be done.
I'm not going to explain this. Please look it up if you don't understand.
In your Arduino IDE open the "Tools" menu and select "Library Manager". The libraries I
explicitly installed are ESP32WiFiManager by Kevin Harrington and Arduinojson.
LittleFS I installed following the [tutorial on ArduinoYard] (https://arduinoyard.com/esp32-littlefs-filesystem-uploader-arduino-ide-2-0/)
After connecting your ESP32 to the computer, open up the code for this solution (the
WiFiExtender.ino in the folder WiFiExtender). Hit Shift-Ctrl-P (or Shift-cmd-P1
on Mac) and type in Upload and select the Upload LittleFS to Pico/ESP8266/ESP32 option.
Important Note: This will not run correctly if you have the serial monitor open when
you attempt to run it.
This should be straight forward. I do have some serial.println statements that should
make what is going on fairly clear.
I don't feel the rest of the steps need to be explained. When you have successfully connected to a WiFi, the settings are saved and will be used as the default rather than the hardcoded ones in the file. If that access point is not available on startup, the code falls back to Access Point only mode.
At this time I've not experimented with the solution's behavior if the WiFi it is attached to is no longer available. After a reboot it should come up as an AP only mode, but if it hasn't been rebooted I don't know if the failure is elegant. I have this as an outstanding item to work when I have a less complicated topology I can test within.
#Performance This is not a high bandwidth solution. I've seen performance connected to the repeater where the throughput is significantly lower than a direct connection to the WiFi. I've only used this to extend IoT solutions to places that cannot connect to my WiFi directly and have relatively low bandwidth requirements.