
This should take about 30mins to 1 hour to complete
When designing the laser taggers, I wanted to avoid exposing the USB port for firmware uploads, as this would expose the port and could easily be damaged. Additionally, I didn’t want to disassemble the tagger each time I needed to test or modify the code. A practical solution to this issue is to implement Over The Air (OTA) updates. The libraries for OTA also include a web server, which we will utilise in the future.
OTA enables the program to be updated wirelessly. Initially, we need to integrate the OTA code into the project, which will be uploaded via USB. After this initial upload, subsequent updates can be performed either through USB or OTA, provided that the OTA code remains in the project.
I chose to use the AsyncElegantOTA library for software uploads; however, I am considering whether there might be a more efficient option, as this library seems to significantly increase compile times.
Install Libraries
We will be installing the libraries required to run ElegantOTA with the Async WebServer. This non-blocking web server ensures that the tagger remains responsive at all times.
The Benefits of Async Mode:
- Non-blocking Operation: In async mode web requests won’t block your device’s main loop. It allows your device to continue executing other tasks while handling web requests in the background.
- Improved Responsiveness: Your device can remain responsive to user interactions or other processes during web requests, ensuring a smoother user experience.
The following libraries need to be installed:
- ElegantOTA by Ayush Sharma
- ESP Async WebServer by ESP32Async
- Async TCP by ESP32Async



Example Software
So that it is not a mystery to you where I found the code for ElegantOTA, it can be found in the example section. Most libraries contain example code, which is super helpful when adding features or components for the first time.
Go to File –> Examples –> Elegant OTA.

Read the Instructions

There is a problem with the link provided.

The link should be https://docs.elegantota.pro/getting-started/async-mode or you can select the link from the menu highlighted above.
Enable Async Mode
In Windows 11 you can find the necessary file to modify at:
Documents –> Arduino –> Libraries –> ElegantOTA –> src –> ElegantOTA.h

Free Text Editors:
- For Windows computers, Notepad++ is a great text editor found at: https://notepad-plus-plus.org/
- For mac, TextMate is a good text editor found at: https://macromates.com/
Make the change on the following line

Troubleshooting
Make sure you have installed the correct libraries. If incorrect libraries are installed, it is likely that you will receive errors when you seek to upload or verify your program in the Arduino Software.

Putting in Network Credentials
Review the code in the Arduino software for the specified section and make the required adjustments. Ensure that the hostname is set to either your name or the name of the tagger for easy identification on the network. Additionally, verify that the SSID and password match your WiFi network.

To enable the hostname to appear properly on the LAN (Local Area Network), the following modifications need to be made to the code:

To identify the device on the network, a further change can be made to the default web page served when entering the IP address into a web browser:

After making these changes, upload your program to the ESP32 by clicking the upload button

Using the Serial Monitor
The serial monitor will display messages left by the commands Serial.print() and this is especially important for debugging. In this case, it will let us know if the ESP32 is connected to a network.
The serial monitor can be accessed by going to Tools –> Serial Monitor

You need to make sure the serial speed is the same as defined in the program. For this program, I have changed the speed to:
Serial.begin(115200)
Check the host name
If you know the IP address you can use windows command prompt to discover the hostname.

Check the web page
If you go to the IP address in a web browser, you should also be able to access the ESP32 webserver.

Accessing the upload page
If you enter the IP address in the web browser and add and additional /update you will get to the upload screen

Making an up-loadable file
Go to Sketch –> Export Compiled Binary

Then go to where your program is saved, you should now see an additional folder. Click on build –> esp32.esp32.esp32doit-devkit-v1 –> LaserTag0.1

The file you will upload is the file ending in “ino.bin”
Go to your web browser and access the update page, select the correct file, open

Immediately, the file will upload

And the update will complete

Congrats, you have just used OTA…
Christian Content
Using OTA means that our ESP32 development boards can be updated “Over The Air” to receive new instructions, patches and improvements. OTA is also used to update our smartphones and computers to keep them running smoothly and securely. OTA offers us a beautiful parallel to our spiritual walk with God.
Just as our devices need to maintain a connection to receive updates, we too need to stay connected to our Source. Jesus reminds us in John 15:4-5: Remain in me, as I also remain in you. No branch can bear fruit by itself; it must remain in the vine. Neither can you bear fruit unless you remain in me. 5 “I am the vine; you are the branches. If you remain in me and I in you, you will bear much fruit; apart from me you can do nothing.
Think about what happens when a device misses important updates: it becomes vulnerable, operates less efficiently, and might even stop working properly. Similarly, when we disconnect from regular communion with God, we can become spiritually vulnerable and less effective in our mission. But when we stay connected, God continuously “updates” us with His wisdom, grace, and strength.
The Apostle Paul understood this need for constant renewal. He writes in Romans 12:2 Do not conform to the pattern of this world, but be transformed by the renewing of your mind. Then you will be able to test and approve what God’s will is—his good, pleasing and perfect will. Like regular software updates, this transformation isn’t a one-time event but a continuous process of receiving God’s truth and allowing it to reshape our thoughts and actions.
Just as OTA updates often work in the background while we’re sleeping or not actively using our devices, God often works in unseen ways in our lives. Philippians 2:13 reassures us: for it is God who works in you to will and to act in order to fulfil his good purpose.
Maybe it would be worth considering when we last intentionally “connected” with God and if there are any firewalls in our lives blocking God’s transforming work.