For any functionality the device play a different audio alarm. For all kind of weather conditions there's a corresponding audio file to be played when the functionality is called.

The functionalities like Google Calendar list, Weather forecast, RSS breaking news starts at preselected time when device is in "clock mode", these can be also called directly operating the switches. Another functionality during "clock mode" display current day/month/year. It can be run pressing ENTER button. Pressing CHANGE STATE button and then ENTER button within 3 seconds in "clock mode", let you enter into options menu. CHANGE STATE button is sets to scroll inside menu, ENTER button is to confirm option selected.

This project is an evolution of my previous LEGOLED and TEMPO. The RGB led matrix panel has resolution 32x64 now, so it is possible display more intellegible graphics, fixed and scrolling text at the same time. Using TEMPO functionalities the device turn on & off automatically without any button or external timer. A PIR module detect the presence of persons therefore turn on/off display.

Weather forecast and calendar data are collected every minute provided by Google Calendar and Open Weather Map .

This project is fully customizable starting from a Raspberry PI B+, 2 module 16x64 rgb led matrix and power supply. It can be expanded, like i did, adding USB sound cards, speakers, on/off power circuit.

Step 1: What You Need

Raspberry Pi B+ (with built-in wifi or dongle )

2 x 16x64 RGB led matrix or 2 x 32x32

generic frame (40x50 cm & 3 cm depth approximately)

frosted plastic sheet

window solar film

PS 5V 10A

cables

thermosetting sheath (*)

relay module (*)

extra PS for audio amplifier (*)

3W audio amplifier module (*)

speakers (*)

USB sound card (*)

2 x microswitch (*)

PIR (*)

Attiny85 (*)

DS3231 (*)

Mosfet IRF540 (*)

Resistors: 3x1K, 2x10K, 1x2K (*)

terminal block (*)

header strips female (*)

header strips male (*)

(*) optional

Step 2: Raspberry Pi Setup

This guide is basically based on Raspbian Jessie Lite, Python 2.7 and RGB LED MATRIX library by Hzeller Github user.

set city for weather forecast (check if it's covered by OWM and the correct name accepted) at lines 213, 215

obs =owm.weather_at_place('Napoli,IT')

fc = owm.three_hours_forecast('Napoli,IT')

try the script running

~ $ sudo python ORAeng_131.py # or ORAita_131.py for italian version

at first time the script will ask GCAL authorization. Click the link to google api credential. Give permission then, if everthings it's ok, you'll see clock starts.

Autostart it :

~ $ sudo nano /etc/rc.local

add before exit 0

(sleep 20;python /home/pi/ORAeng_131.py) >/dev/null 2>&1 &

or '(sleep 20;python /home/pi/ORAita_131.py) >/dev/null 2>&1 &' for italian version

give permissions to daemon user:

~ $ sudo visudo

change to:

root ALL=(ALL:ALL) ALL

daemon ALL=(ALL) NOPASSWD: ALL

due to excessive RAM usage after several hours, i wrote a script that simply restart python script when RAM usage goes over a threshold level. Then copy to home directory the script named memcheck renaming to memcheck.sh and add to crontab -e

Attachments

Step 4: The Circuit

- connection section where is cabling for RGB LED Matrix datas and power, audio amplifier and Raspberry Pi

Not mentioned a resistive voltage divider that allow RPI to read a HIGH/LOW 5V signal from Attiny85

Switches are connected to RPI pin an GND directly using internal resistors

Attiny85 timer come from my previous project named TEMPO. Basically, DS3231 sends LOW signal to Attiny85 interrupt pin that wake it from sleep mode. At wake up Attiny85 sends HIGH signal to Mosfet transistor, activating the power supply circuit for RPI, LED Matrix and audio amplifier (if not connected to extra PS thrugh a relay, as my last configuration).

To shutdown RPI my script contemplate that RPI listen digital signal on pin 14, when it's HIGH, is called a shutdown command. Then RPI perform a correct shutdown process, then after one minute, Attiny85 goes back to sleep mode and Mosfet receives a LOW signal that turn off the entire device. This process is rough but effective.

- noise due to LED Matrix power supply, solved using a small PS only for the audio amplifier. An optional relay allow to turn on amplifier only when required. This can cause a bump noise when it turns on/off.

The circuit has been etched using copper plate, 3D printer, marker and ferric chloride.

Attachments

Step 5: Assembling

i've adapted a generic 40x50cm frame to this project together 3D printed parts and some optional extras.

The glass is shielded by window solar film and frosted plastic sheet. Led matrix needs to be kept about 1cm to glass to avoid to see the white inside leds. Small screws are necessary as M3 nuts and bolts. Obligatory are cables and thermosetting sheath.