Building a smart frame

Boots to show the node.js app I made on an AWS
Boots to show the node.js app I made on an AWS

My idea is to make a digital version of the traditional cork table on the kitchen, reading events from Google Calendar, and todo’s from a MongoDB in a node.js app.

To have a cheap display that is able to show a web page on boot, I made a frame of plywood, with a matching plate 1cm from the front to attach the screen of an old laptop. The back-panel plate was cut to size and glued to the frame (leftover glue seen in the pictures).

Nuts on the back of the back-panel secure the screen to the back-panel
Nuts on the back of the back-panel secure the screen to the back-panel
Extruded PVC is easy to use, durable and strong like wood
Extruded PVC is easy to use, durable and strong like wood

To secure the screen to the panel, I used some extruded PVC and cut rectangles that fit between the display and the frame for attaching screws to the display and to the back-panel. Later I will probably paint the box to make it look better. And if I’m going to repeat this project, I will cut 45 deg angles in the corners to make them look smother. With a router I can make nicer edges of the box too.

Found power and groud on the GPIO of the RPi. Boots every time i plug in power in the display adapter
Found power and groud on the GPIO of the RPi. Boots every time I plug in power in the display adapter

The LCD from an old laptop is powered by a graphics card with many inputs, bought of ebay. A 24 pin flat pack runs through a hole in the back-panel to connect the graphics card to the screen. The data is input with HDMI to the graphics controller, fed from my Raspberry Pi connected to the web wirelessly.

Found a power hub on the graphics controller card where I soldered wires for 5V and ground
Found a power hub on the graphics controller card where I soldered wires for 5V and ground

I ended up using a Raspberry PI as the brain in the project, as I couldn’t get the Beaglebone to connect to the wireless network (probably need to reinstall the OS on the BBB to make it work, but I gave up in anger). The RPi gets its power from a 5V power hub on the graphics card, I soldered two wires from the graphics card to the input/output pins on the RPi. Luckily, the RPi pulls less amps than the card can supply without rebooting or turning hot. I was planning on installing a voltage regulator (7805) in the setup, but with the available power on the graphics card, this was an easier solution.

The RPi boots to xterm, and loads the webpage I have created in node.js with express, run on an Amazon Web Server with Linux (free and beautiful).

The node server connects to google with oauth2 using passport (NPM), where it reads the google calender I have set up for the family.

Now what’s left is to add a cover on the back, think i will use some thin plastic to cover it all up, to prevent any fingers touching any electricity, and to make a way to hang the frame on the wall.

5cm high, slightly larger than the screen
5cm high, slightly larger than the screen
12V power and HDMI used for the project
12V power and HDMI used for the project
Several inputs that are unused for this project
Several inputs that are unused for this project
Glued together for a quick prototype. Improvements: 45 deg cuts, better saw, and some paint to finish
Glued together for a quick prototype. Improvements: 45 deg cuts, better saw, and some paint to finish

Learning node.js and Expressjs

My doors to programming opened up for real as I took a engineering startup course online. It introduced me to Github, Amazon Web Servers, JavaScript, Node.js, Express, Bootstrap, and a world of development for mobile and desktop applications.

I followed a fantastic course on coursera.org named Engineering Startup hosted by Balaji S. Srinivasan, an enthusiastic entrepeneur-turned-teacher out of Stanford University.

By being introduced to basics and quickly setting up a server, a web page and implement some graphics, the bug of coding bit me, and now I spend a lot of time figuring out new features.

I love to learn new technologies, and the feeling of opening up a new toolbox often overshadows the actual need I have, so like many times before, I end up reading and learning how stuff work, diving in to details I probably never will use.

This time I have landed a project where I run a web server on AWS, which reads a google calendar and a MongoDB with to-do actions for the family. Updating of the calendar is done through google’s interface on the web, and I have made a web page for entry and maintenance of to-do actions.

The result is a webpage shown on a screen in our kitchen run by a beaglebone connected to the wireless network. If I only could figure out the wifi-setup on the beaglebone. Might turn to a Raspberry Pi instead if the setup is easier.

The screen is taken from an old laptop, and I’ve made a wooden frame where the computer fits on the backside. eBay provided me with a HDMI screen controller that fits on the back of the screen box.

For power supply I’m using a 12V adapter for the screen, and step down to 5V for the computer with a linear regulator (7605)

Will post pictures when it’s working.

Logic base: Arduino, Raspberry pi or Beaglebone Black?

I will make a robot of plastics, electric motors, and a logic unit. It’s obvious that there must be some sort of propulsion and a body, but the choice of controller is tricky.

Arduino has been my new best friend for a couple of years now, I’m familiar with C and the Arduino libraries, all the support online, and I have built my own breadboard Arduino with the Atmega AVR chip. So the chance of actually making anything with the Arduino is rather high, but I also own a Raspberry Pi and a Beaglebone Black.

I have fiddled a bit with the RPi and Python code. My daughter got a game made with Pygame and a hand controller of a Arduino Micro and some felt (even did some stitching), and the game plays on the RPi. Using the input / output’s of the RPi I’m less experienced with, but I have done some basic switches and lights and a connector cable to learn. I like the fact that there is a HDMI port and several USB’s on the RPi, it calls for fairly easy install of computer components (camera, mouse, keyboard). Yup, the RPi has it all, the challenge will probably be improving  my Linux skills, and some limitations in speed and performance of the RPi.

Now the Beaglebone Black is my jewel of my chips. It’s fast, runs graphics properly, looks cool and have all the options for communication. But it’s a tricky device. It currently has Angstrom Linux installed, which i am not very familiar with, but can also run Android or Ubuntu, which I am more familiar with. It can compile and run C and Python, but the support online is not as massive as the RPi and the Arduino. Trying to set up the wireless network on the BBB brings out the worst in me.

So who am I, do I choose the one I can learn the most from, the one I know from before, or the one in the middle?