[Development] Weather Block
Last update: 4-Mar-2020
Even since I started doing research on tangible user interfaces I'm intrigued by embedding technology in non-descriptive objects. Some time ago I saw a really cool project called the Slow Game project (Odom et al. 2014) where a small 5cm cube with a low-resolution display consisting of an 8x8 light matrix is used to play a mini game. The game (Snake) is played by physically rotating the cube, which turns the direction that the snake moves [link].
It is a really cool concept and I want to make something that also looks like a cube, except it tells you something instead of letting you to play a game: to access local weather and show it on the small display.
I began with looking for a computer board small enough to fit inside a 5cm cube along with other components. While Ardunio Nano or Mini were possible, they lacked the Wifi module getting weather updates from the internet. I was later introduced to the NodeMCU board that had a Wifi module (ESP8266). I also purchased a 1.5inch monochrome display which was small enough to fit in the cube.
Even since I started doing research on tangible user interfaces I'm intrigued by embedding technology in non-descriptive objects. Some time ago I saw a really cool project called the Slow Game project (Odom et al. 2014) where a small 5cm cube with a low-resolution display consisting of an 8x8 light matrix is used to play a mini game. The game (Snake) is played by physically rotating the cube, which turns the direction that the snake moves [link].
It is a really cool concept and I want to make something that also looks like a cube, except it tells you something instead of letting you to play a game: to access local weather and show it on the small display.
I began with looking for a computer board small enough to fit inside a 5cm cube along with other components. While Ardunio Nano or Mini were possible, they lacked the Wifi module getting weather updates from the internet. I was later introduced to the NodeMCU board that had a Wifi module (ESP8266). I also purchased a 1.5inch monochrome display which was small enough to fit in the cube.
The most difficult part was to properly connect the pins on the board to the display unit, as the connection instructions were for Arduino Mini with some source code not available. I ended up finding another display library and followed their instructions of pin setting and coding [link].
Currently the code is not very polished with some hard-code (e.g., it only connects to my home router, and only gets weather updates of the Burnaby area from OperWeatherMap). Once I have those customizable, I will make the code freely available.
I have also designed a 3D model of the cube that housed all the electronics, plus a top plate that shows only the small display -- that's the easy part. Just took time to print.
Currently the code is not very polished with some hard-code (e.g., it only connects to my home router, and only gets weather updates of the Burnaby area from OperWeatherMap). Once I have those customizable, I will make the code freely available.
I have also designed a 3D model of the cube that housed all the electronics, plus a top plate that shows only the small display -- that's the easy part. Just took time to print.
I quite enjoy this project as I get to code and craft. The next step is to replace the 3D printed box with a wooden box made with a milling machine, and play with the display format of the weather information in ways other than just plain text.
Another thing I'd like to try is to add some input mechanisms to it, like a button, switch, or a IMU motion sensor. But they have to be hidden or flush with the cube.
Another thing I'd like to try is to add some input mechanisms to it, like a button, switch, or a IMU motion sensor. But they have to be hidden or flush with the cube.
References:
Displaying things on the OLED module: https://github.com/olikraus/u8g2
Retrieving weather information from OpenWeatherMap: https://randomnerdtutorials.com/esp8266-weather-forecaster/
Decoding and coding weather information from OpenWeatherMap: https://randomnerdtutorials.com/decoding-and-encoding-json-with-arduino-or-esp8266/
Displaying things on the OLED module: https://github.com/olikraus/u8g2
Retrieving weather information from OpenWeatherMap: https://randomnerdtutorials.com/esp8266-weather-forecaster/
Decoding and coding weather information from OpenWeatherMap: https://randomnerdtutorials.com/decoding-and-encoding-json-with-arduino-or-esp8266/