Sunday, May 5, 2013

Sunday Update

Spark Core

Last week, Spark Devices launched the Spark Core on Kickstarter. This Arduino-powered, wifi-cloud-connected development device is designed exactly to make easier projects like mine. The Spark Core obviates my need to use Xbees, as the Core is exactly what I was trying to make, but better. I believe they beat me to it because their team has 4 members, while mine has just me.

The Kickstarter page shows a Twitter refrigerator magnet. My visualized refrigerator monitor would be pretty much that, but displaying temperature instead, with another wire running to the sensor placed within the refrigerator. It would also have an SD card inside, recording temperatures for long-term compliance or analysis.

LCD Screen

I assembled my LCD shield. Unfortunately it doesn't work. Soldering on breadbords is tricky and I'm not quite as skilled in EE as I like to believe. I didn't perform incoming QA on the LCD screen, so I don't know if the screen worked before I assembled it onto my LCD shield. Or it could have been a wiring mistake I made. Either way, I wanted to share some of the considerations I had when wiring it:

Atmel's ATMEGA168 only has 28 pins, of which only 13 are set up for digital output. Yes, you can modify the 5 analog input pins for digital output in software, but combining these 3 devices won't require that many.

Digital Pins

0
1
2
3
4
5
6
7
8
9
10
11
12
13


Wireless SD Shield: Working with this shield and the Xbee, I've come to understand that the shield uses SPI to allow the shield to work with both the wireless radio and the SD card without taking up 6 to 8 Arduino pins. Both the wireless radio and SD card use Arduino pins 11, 12, and 13 for communication. Pin 4 is used by the Arduino (the master device) to select the SD card as the subordinate device on the SPI bus, while pin 10 is used to signal that the wireless radio port is the subordinate with which the master device is communicating over the SPI bus (on pins 11, 12 and 13).


Digital Pins - Wireless SD Shield

0
1
2
3
4 SD select
5
6
7
8
9
10 Xbee Select
11 SPI MOSI
12 SPI MISO
13 SPI Clock



DHT11: Using this blog as my lab workbook means I don't have to relearn how a component works. This device won't even take up a digital pin -- its library automatically runs the single analog pin needed by the sensor.

LCD Shield: Controlling an HD44870 requires 6 pins - 1 for RS (Register Select), 1 for Enable, and 4 for data. The Arduino LiquidCrystal tutorial uses pins 2, 3, 4 & 5 for data, 11 for Enable, and 12 for RS.


Digital Pins - LCD Shield

0
1
2 D7 - LCD pin 14
3 D6 - LCD pin 13
4 D5 - LCD pin 12
5 D4 - LCD pin 11
6
7
8
9
10
11 Enable - LCD pin 6
12 RS - LCD pin 4
13



This presents a problem, as we're already using pins 4, 11 & 12 for the Wireless SD Shield.


Digital Pins - LCD Shield & Wireless SD Shield
0
1
2 D7 - LCD pin 14
3 D6 - LCD pin 13
4 D5 - LCD pin 12 & SD select
5 D4 - LCD pin 11
6
7
8
9
10 Xbee Select
11 SPI MOSI & Enable - LCD pin 6
12 SPI MISO & RS - LCD pin 4
13 SPI Clock



So I relocated the LCD pins to 2 & 3 for Enable & RS and 5, 6, 8 & 9 for data.

Digital Pins - revised LCD Shield & Wireless SD Shield
0
1
2 LCD Shield - RS - LCD4
3 LCD Shield - Enable - LCD6
4 SD Shield - SD select
5 LCD Shield - D4 - LCD11
6 LCD Shield - D5 - LCD12
7
8 LCD Shield - D6 - LCD13
9 LCD Shield - D7 - LCD14
10 SD Shield - Xbee Select
11 SD Shield - MOSI
12 SD Shield - MISO
13 SD Shield - Clock



Wednesday, May 1, 2013

Hardware Startups

Chris Dixon makes some great points in this post about the changing landscape of starting a company that sells electronics devices.


Slight Pivot

Wifi Website Controls for Arduino


One of my goals for this project was to have a website interface displaying temperature stats, available over wifi. I know this can be done, but I'm starting to think my Minimum Viable Product isn't Minimal enough. And, like others have said, a lot of people would like a simple LCD display showing their refrigerator's current temperature. So, I'm going to move the Wifi-website part of this project aside, and put in an LCD screen.

That said, the entire device is now made of pieces with which I've worked previously: Arduino Uno, SD card on Wireless SD shield, clone of HD44870 lcd display & DHT11 temperature sensor. Since I previously burned out my HD44870, I'll be assembling another one. This time, I've decided to attach the HD44870 onto a blank Arduino shield. I will have the shield soldered together today, and might get code onto it!

---

Thanks, seancneal, for suggesting another address to try with my Sainsmart LCD screen. Honestly, I'd kinda forgotten about that screen. I'll try this address and post an update.