Atmega_screen – LCD status screen with a few bells and whistles

IMG_20140803_094907

I love glanceable information that’s the reason I still wear a watch so if I need to know the time/date I can flick my wrist and its there. This is where I came up with the idea to make Atmega_screen a screen of some sort to display information such as weather or stock value which is feed data from a raspberry pi.

After getting a arduino lcd shield for Xmas off my lovely wife I started playing around with it and quickly realized that it was great but quite limiting with not letting me add any led’s or piezo buzzers to it.

IMG_20141013_201547

I wanted to start from scratch and make this a learning experience so I starting off with a Atmega328 and added a 16mhz crystal and 2x 22pf capacitor which gave me a bare bones arduino.

IMG_20140428_212501

next up I add a FTDI board to program and upload sketches to the atmega328 plus it can send serial data. I had to add a 0.1uf capactitor between the DTI pin on the FTDI board and the reset pin on the atmega328 so it can upload the sketches without a hitch. I also didn’t want the ardiuno resetting when I sent it serial data so I found out that if you added a 120omh resistor between the reset pin and VCC. with the resistor connected to VCC it wouldnt let you upload sketches because it wouldn’t reset the atmega328 so I had to add a switch to switch between serial mode and uploading sketch mode.

After I got all that sorted I could go about adding 3x switches,1x RGB LED, piezo buzzer, I2C LCD Screen (to save pins), I2C RTC (real-time clock) and start laying out the design for the board and finding an enclosure. I use fritzing to make a copy of my bread board for reference.

atmega_screen_bb

I used kicad to layout my PCB, kicad is great because is open source and runs on windows/mac/linux but its a fickle beast. If you want to learn how to use kicad I would suggest checking out Contextual Electronics getting to blinky tutorials to get the basics of how it works. My board files can be found at my Github pages.

IMG_20140706_132501

Whiles designing the board I started looking for enclosures to house it. My pet peeve about looking for enclosures on eBay is no one normally has sizes let alone any detailed dimensions. That changed when i found this enclosure (ebay search uk link) (full size image). I could make my board fit the enclosure because it was going to be tight fit.

CASE-003-L-SIZE

Once the enclosure arrived and got the PCB back from OSHpark (great for cheap boards) I started to put it all together.IMG_20140701_110856

IMG_20140701_114457

IMG_20140701_122516

IMG_20140706_150115

Now that it was all put together I could start nailing down the software both on the raspberry pi and the atmega_screen its self. What I found quite difficult was when I moved from using the arduino screen shield to using a I2C LCD screen I couldn’t do the custom characters I wanted. I had to reverse engineer the example file and wrote a blog post with all the info I could find all in one place.

Weather

I feed the data to the Atmega_screen from a python script. I started writing a weather script to display current temp, feels like temp, weather, wind speed, lowest temp of the day, highest temp of the day. Also i made the RGB led indicate the temp here is a video of the hardware overview and weather sketch. You can sign up for the free use of the wunderground weather API Here and add your keys to the script.

Stock ticker

I also wrote a stock ticker sketch which is feed data from a python script which displayed Google/Yahoo/Facebook/Twitter stock info but you could easily enter any other stocks if you wish. I took advantage of the RGB LED so that if the stock was up it would be green and red if its down here the code and here a quick video of it in action. For the stock info I just scraped it off yahoo stock API found in my python script.

Currency rates

If you are looking to go on holiday and want a good deal with exchange rate when you could keep a close eye on them with the currency rates sketch. The code is also up on github for you to use, this is also a python script that feed data to the atmega_screen. To get currency rates I signed up for another free API Here that uses json so really easy to use

Clock

Thought I better add jut a simple clock function but unfortunately you need to set the time and data from the computer since I havent got round to writing a menu system here is the code on github

Magic 8 ball

For a bit of fun I wrote a magic 8 ball sketch using the classic answers to all your lives questions. Code here

I entered this into the hackaday prize for a change to win a trip into space. Unfortunately I didn’t make it past the first round of judging but that’s not the point in entering, I was a great experiences in putting your work out there for the world to see and for people to draw inspiration from and use in their own projects. Here is the post if you want to take a look, I think everyone should put there work out there and get as much feed back as possible.

All my code is up on Github so feel free to have a look. Also check out my other projects on my blog and on Github

Advertisements

One response to “Atmega_screen – LCD status screen with a few bells and whistles

  1. Pingback: Rpi_status (The raspberry pi has got his hat on, Sort of) | Facelesstech·

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s