These days, most of us take the instant availability of a high-speed link to the Internet for granted. But despite all of the latest technology, things still occasionally go pear-shaped — meaning that blistering fiber optic connection you’ve got to the world’s collected knowledge (not to mention, memes) can still go down when you need it the most.
After suffering some connectivity issues, [Arnov Sharma] decided to put together a little box that could alert everyone in visual range to the status of the local router. It won’t fix the problem, of course, but there’s a certain value to getting timely status updates. Using a 3D printed enclosure and a couple of custom PCBs, the build is fairly comprehensive, and could certainly be pressed into more advanced usage if given the appropriate firmware. If you’ve been thinking of a Internet-connected status indicator, this is certainly a project worth copying studying closely.
The aptly named “Wi-Fi Status Box” uses two PCBs: one to hold the Seeed Studio XIAO ESP32C3 microcontroller and four WS2812B addressable LEDs, and another that plays host to the IP5306 power management IC.
That latter board in particular is something you may want to file away for a future project, as it not only handles charging lithium-ion batteries such as common 18650 cells, but it also features an LED “fuel gauge” and the ability to boost the output power to 5 VDC with relatively few external components.
As for the firmware on this one, it’s simplicity itself. The goal is to see if the router has gone down, so all the code does is check every ten seconds to see if the ESP32 is still able to connect to the given wireless network. If the connection is good the LEDs are green, but if the link fails, they flip over to red. Combined with a printed front panel that uses transparent filament to soften the glow of the LEDs, and you’ve got an attractive way of knowing when it’s time to panic.
Too obvious for you? Perhaps you’d prefer this version that uses an analog multimeter to display when the net drops out.
The firmware seems TOO simple for the hardware its given. Some rudimentary speed test etc would make it more functional I think.
I was dealing with a particularly unreliable ISP a few years ago at my parent’s house, so I wrote something similar.
It was a simple firmware for ESP8266 nodemcu board which pinged google, youtube and a bunch of other popular websites, and checked the time it took for the ping to return (pong) and adjusted the blinking frequency of the onboard LED accordingly.
I could easily look at this board hanging in a corner of the room and know how my internet was doing at a glance. Of course it wasn’t proper performance metrics or anything but it worked out well for my family.
I don’t really like the code either although it’s tough to find and read on hackaday.io
WiFi.status()
actually returns some useful flags and why not match a colour to each flag as a starter?https://docs.arduino.cc/language-reference/en/functions/wifi/wificlass/#wifistatus
It’d be very naughty but you can just assume the WL_* flags are continuous values 0 to whatever and make an array of status_colours to index.
… or be boring and make map function using a switch case.
You need to check if you can connect to a website as the providers infrastructure can go down, like DNS etc.