Current Weather displays current weather conditions without the hassle of opening the door and stepping outside.
Current Weather connects to openweathermap.org‘s weather API via Wi-Fi and requests an update every 10 seconds.
Temperature, pressure, and humidity is display via three dynamic gauges. The “Cloud Cover & Precipitation” indicator displays various effects depending on sunny skies, cloudy skies, rain, show, fog, lightening storms, etc.
The above video demonstrates the system powering on, connecting to the Wi-Fi, and updating gauges with the current weather conditions.
The gauges are illuminated based on the value of the weather data. The image above does not show the gauge illuminated.
The controls consist of a power switch, inside/outside selector, and a Wi-Fi connection indicator.
The frame is constructed from 2020 aluminum extrusions allowing for flexible mounting points for various brackets.
The rear top panel holds down the engraved acrylic panels and WS2812b LED strips. The acrylic panel edges are painted black to prevent color bleed into adjacent panels.
The electronics area is tight on space and tidy wiring is a difficulty.
Each gauge has it’s own Nema 11 stepper (11HS12-0674S).
The gauges are belt driven using GT2 belts. The image above shows the rear of the gauge about to make contact with the homing switch.
The top of the belt drives are a series of brackets containing 3D printed idlers with M3 bearings inside.
The series of brackets were 3D printed as three separate units due to 3D printer size limitations. The screw shown in the above picture connects two brackets together.
A custom PCB board was designed to allow the electronics to fit in the allocated narrow space. The PCB contains an Arduino Nano, ESP8266 ESP-01, and three A4988 compatible stepper drivers. SMD solder pads allow for a quick connection for steppers, switches, WS2812b strips, and the BME280 sensor.
The schematic and PCBs were designed using DipTrace which offers a generous free version for small projects.
The bottom side of the PCB.
The top side of the PCB.
Underneath the black 3D printed bracket in the above image contains a BME280 sensor providing temperature, pressure, and humidity data. There is a hole cut in the side skirt providing air flow to the sensor.
Each of the three gauges is illuminated by a single WS2812b LED. Providing the three wire connection proved problematic due to the long travel of the gauge. The eventual solution was a stroke of luck when realizing a length of spare GT2 was steel core; meaning there are strands of steal running through the entire length.
The belt contained 5 isolated steel strands through the length of the belt. The above image shows three wires connected to the three center steel wires of the belt with a liquid electrical tape covering to prevent shorts.
All three gauges function marvelously and the belts allow for full travel with no risk jamming.
The wall mounting bracket is simple and allows adjustment to prevent tilting due to uneven weight distribution.
Source code and design files: https://github.com/reubenstr/CurrentWeather
Current Weather has adorned the walls for nearly a year without issues but there are some potential improvements:
- A brightness adjustment knob could be added as the LED brightness is rather bright and distracting at night, especially next to the TV.
- The frame could be updated to remove the screws on the faceplate for a cleaner aesthetic. Example.
- The illuminated text panes could be made with bezels. Example.
- The stepper motor brackets could be printed using ABS instead of PLA which will greatly reduce warping (which currently is not an issue for the mechanical system).
- The Arduino Nano / ESP8266 combination could be replaced with a ESP32 for project and firmware simplicity. Extra space in the electronics area will be required as the ESP32 is wider than the current space allows.
- Instead of using a captive portal to setup Wi-Fi and API credentials, an SD card could be used which will support multiple potential Wi-Fi network logins. The SD card could also store multiple new and easy to access parameters such as min/max brightness, a dimming schedule, color scheme, API call frequency, sensor calibration, et cetera.