Introduction: Raspberry Pi: Wall Mounted Calendar and Notification Center
Before the “digital age” many families used wall calendars to show a monthly view of upcoming events. This modern version of the wall mounted calendar includes the same basic functions:
- A monthly agenda
- Sync of family members activities
- Easy browse between months
Beyond those basic functions this gadget will also handle:
- A whether forecast
- Upcoming events in the surrounding area
- Live information about the public transport
- And even more...
What you need:
- Raspberry Pi 2
- USB Wifi Dongle. (Like Edimax 150Mbps Wireless nano )
- LCD laptop screen (take one from a broken laptop https://www.instructables.com/id/Old-laptop-screen...
- Controller card for the laptop screen (search Ebay for LCD Controller Driver Board and the serial number of your laptop screen)
- Some Push Button Switches (Like http://www.ebay.com/itm/16mm-Start-Horn-Button-Mom... )
- Webserver running a custom made homepage
- Piece of wood. Height should be more than 30mm, so the electronics can fit inside. The width and height depends on the size of your laptop screen.
- Sheet of cork. (Like this http://www.pandurohobby.se/Katalog/50-Skapa-Dekor...
- Short HDMI cable
- Powersuply for controller board and Raspberry Pi.
- Mounting screws .
(Inspired by the instructable by Piney https://www.instructables.com/id/Raspberry-Pi-Wall-...)
Step 1: The Hardware
This is the hardware setup.
- Find a LCD laptop screen . Order a controller board on Ebay. Search for LCD Controller Driver Board and the serial number of your laptop screen.
Read more: https://www.instructables.com/id/Old-laptop-screen-..
- Craft a piece of wood. Height should be more than 30mm, so the electronics can fit inside. The width and height depends on the size of your laptop screen, have a margin for an extra 10 mm on all sides. Carve out and make room for the electronics on the back. Drill holes for the buttons and wires.
- Fasten the laptop screen. I used the orginal mounting frame from the laptop.
- Cut out foamcore with equal thickness as the screen. and glue it on the wooden slab.
- Cover all sides with cork. Cut with a “snap-off blade knife” and glue with “glue spray”.
- Mount the Push Buttons. Use a large drill, and drill carefully by hand.
- Connect the electronics. Connect three of the Push Buttons to GPIO-pins 19/20/21 and to ground. https://ms-iot.github.io/content/images/PinMappin... Find out the pin for On/Off button for the controller board, and connect it with the fourth Push Button. (You will find it by trying to connect ground to each pin, suddenly the LCD will light up). Finaly, connect the HDMI cable between Raspberry and controller board, and connect the screen to the controller board.
Step 2: The Software
The setup is somehow turning the Raspberry Pi into a kiosk. The OS will auto start a website in full screen mode,
and the Push Buttons is used to control the information at the website. The setup is:
- Install Raspbain on Raspberry Pi
- Sign up for a Google Calender. (https://calendar.google.com). Add your upcomming event. Ask for access to your family members calendar, or create a speceific "family calender" and give the rest of the familiy acess to it. Make your calendar more dynamic by adding external calenders. Facebook events, public holidays, and week number has been practical for me. More inspiration here: http://lifehacker.com/the-coolest-things-you-can-a...
- Set up a webpage and a webserver
- Install a web browser and customize the calendar design
- Set up the push buttons
Continue reading for details about 3-5 .
Step 3: Create a Webpage and Webserver
The webpage is the canvas the Raspberry Pi will display. The canvas can be filled with any information. I will show you how i to embed a google callender. The embeed code is generate by googles own aplication. This youtube shows how to get it to work: https://www.youtube.com/watch?v=2tnYwbs-yDk
An example file of html code is attached (change name from index.html.txt to index.html). For privacy, I have replace some of the code with “*___REPLACED___*”. Instead, use the embeed code generated by google.
Either put the index.html file on your own webhost, or turn your Raspberry Pi into a webserver and host it local. If you already have a webhost continue to the next step. Install a webserver by following this guide: https://www.raspberrypi.org/documentation/remote-a... Now save your modifed index.html to /var/www/html/index.html, like this:
sudo cp index.html /var/www/html/index.html
Step 4: Install a Web Browser and Customize the Calendar Design
There a many web browser out there. But I have only find one that can handle these three requirements; 1) can handle the modern version of google calendar, 2) has a full screen mode, 3) can run a local CSS. The local CSS is used to change the appearances of the google calendar. The redesign can’t be done at the webpage, because the CSS are embedded from another server (the google-server).
Install Iceweasel (Firefox for Linux)
Install this extension for Iceweasel:
Open the “Stylish” extension tab in Iceweasel and customize the CSS to make the google callander look better. Se attached file i for an example.
Now, lets make Iceweasel to autostart and open your webpage at login. Type this in the Linux terminal:
cd /home/pi//.config/autostart nano cal.desktop
Write the following to the file. Change "localhost" to adress where your canvas-webpage are stored. Save and exit.
[Desktop Entry] Type=Application Name=hemsida Exec=iceweasel localhost StartupNotify=false
Step 5: Set Up the Push Buttons
The Push Buttons is used to browse forward and backwards in the calendar month view. By default this is done by pressing “p” and “n” at a keyboard. Therefore the buttons will emulate those two keyboards commands.
First, create a python script to make the push buttons work: http://razzpisampler.oreilly.com/ch07.html
Download and install python-uinput, a python API to create virtual keyboards: http://tjjr.fi/sw/python-uinput/ Raspbian comes with both Python 2 and Python 3. Make sure you install uinput with the version you are using.
Put the uinput-API and the button script together. The final python scipt is attached.
Auto-start the python script on startup: https://www.instructables.com/id/Raspberry-Pi-Laun... Our launcher.sh will look like bellow. Replace “/home/pi/py_switch” to the path where you have stored the python script.
cd / cd /home/pi/py_switch sudo modprobe uinput sudo python switch.py cd /
The number of possible commands can be extended with some if-else-statements in the python code. I have attached an upgraded switch.py-file in this step. The new is script has the following commands.
- Press button 1 -> Key press “P” -> Browse previously month
- Press button 2 -> Key press “N” -> Browse next month
- Press button 3 -> Key press either "M" or "A" -> alternate between month-view or agenda-view
- Long-press button 3. -> Key press "F5" -> Reload the webpage
- Simultaneous press button 1, 2, 3 -> executes the shell command “sudo reboot” -> Restart of raspberry pi.