The Internet Speed-o-meter

Made by alistair

About the project

A physical display to show how much of your Internet connection is being used.

Project info

Difficulty:

Categories:

Displays

Platforms:

Espruino

Estimated time:

2 hours

Published:

16th April 2018

Items used in this project


Hardware components

Double sided sticky pads x 1
Network firewall/router

Most routers that support SNMP (Simple Network Management Protocol) will work. We have a RV042G.

x 1
1mm Acrylic sheet

I used a 10mm x 40mm sheet

x 1
Clamp or plate stand

Something to hold up your creation

x 1
Regulated 5v power supply x 1
3mm hardboard or acrylic sheet

I used a 20mm x 15mm sheet but you can be creative

x 1
Micro 9g Servo x 1
ESP-01 Adaptor Module

Adaptor for the module with voltage regulation

x 1
ESP-01

Mini ESP8266 based module

x 1

Software app and online services

ESP8266 Arduino Core

Available from https://github.com/esp8266/Arduino

Arduino IDE

Version 1.6 or above

Hand tools and fabrication machines

ESP-01 Programmer x 1
Laser Cutter

This is optional. You can use hand tools, or just a knife and cardboard if you prefer.

x 1
Soldering Iron x 1

Story


Introduction

This is a little project to monitor the usage of a building's internet connection. There was not easy way for someone who was technically minded to monitor this never mind making the the end users. This is an answer to that problem. The hardware communicates with the central router/firewall, asks how much data has passed thought it, subtract that from the last figure it was told, and then moves a physical arrow to show that figure to everyone. Although it is called the "Speed-o-meter" in the great style of Wallace and Gromit it should more accurately be thought of as a percentage of bandwidth usage meter.

Step 1 - Programming the microcontroller

At the heart of the system is an ESP-01 module. Any ESP6266 based development board or Arduino with networking should run the code with little or no modification.

I am going to assume that you are able to load the code from this listing to the microcontroller. If you don't know how to do that you can find plenty of tutorials online.

You will need to change three settings in the supplied code. First you will need to replace {wifi_ssid} and {wifi_password} with your wifi details. Next you need to change {top_connection_speed} to the maximum speed of your connection. Note that this needs changing in two locations.

The current code will monitor both upload and download rates and pick the highest to show. If your connection is asymmetric (has a different upload rate to your download rate) then you can tweak the updateServo() function to reflect this. This is completely optional and only for programmers how are obsessive compulsive about accuracy. Basically if you are like me.

Once these settings have been changed and the code uploaded you are ready to go on to the next step.

Step 2 - Assembling the hardware

Rather than create a new circuit board or have many cables all crammed together at the back I decided to "hack" the fairly common ESP-01 adapter. This has the main advantage of regulating the power down from the 5V supply we are going to use down to the 3.3v required by the ESP-01 module. If we use the TX pin as a data pin for controlling the servo then by pure luck the GND/SVV/DATA pins on the adapter are in the correct order for a standard servo.

I removed the RX pin to reduce the risk of the servo being plugged in incorrectly but this is optional.

It is worth noting that the ESP8266 sends some serial data is sent out of the TX pin on boot and that can crash some servos. If this is the case you will need to modify the design to use the RX pin instead, or try another servo.


As we have used the VCC and GND pins to connect the servo we need to inject power another way. This is a simple hack with the power cable being soldered on the underside of the board.

The power supply is a 5v "wall wart" with a power cord on. I extended it with some speaker cable but the original was long enough for most projects.

Step 3 - Assembling the display

The last significant step is to add the electronics and mechanics to a board and create the physical display.

This listing has some CAD drawings that can be used to laser cut and board and arrow although this is where your creativity can flow. Why not create your own design?


Finally the project needs mounting somehow. You could mount it on the wall or place it on the mantelpiece. I have used picture frames and plate stands to do this with other projects, but for this on I decided to simply add a workshop clip to the back to hold it upright on the workshop shelf.

Step 4 - Sit back and enjoy


That is it all done. When you power it up it will take a free seconds to settle down and then you will see how much data is going through your network. If not a lot is happening then run a speed test and see how much of your bandwidth you can use.

Schematics


Overall Schematic

CAD


Scale

The design for laser cutting the scale.

Pointer

The design for laser cutting the pointer.

Code


Main Arduino (ESP8266) code

The main code for the project. You will need to change the wifi details ({wifi_ssid} and {wifi_password}) and update the speed for your Internet connection ( {top_connection_speed} in Mbps).

Credits


Leave your feedback...