Dec 28

Sunrise Alarm Clock, Part 3

With the hardware built, now it's time to put hardware and software together. Using the tutorials mentioned in the previous post, I put together some code to read the time from the real time clock, tell the alarms library what time it is and use the alarms library to create an alarm to turn on the LED strip. I also added a button to turn off the lights (you could just reset the board, but now I have a button that I could use for other things).

Some notes on putting this together.

1. I think I accidentally destroyed digital pins 8 and 7 on the chip I'm using. They don't read anything in when I tried attaching a button to them. Oh well. I am now using pin 2 for a button.
2. I had the 12V power supply powering the arduino while having the arduino board (with the Atmega328p removed) connected to the board. The 5V from the arduino board was not connected to the breadboard, so I shouldn't be running power from my external power supply back into my usb hub. however, the grounds are electrically connected. This is probably sending some weird electrical noise back into my computer. This made my laptop turn off mysteriously and say that it had an error. I may be frying my usb hub. In the future, I should get some optocouplers to isolate my two circuits (my computer and the arduino) since I am using two power supplies (my computer's usb hub and the 12V power supply for the LED strip).

Dec 27

Sunrise Alarm Clock, Part 2

Welcome back. After designing the circuit using adafruit's lovely tutorials, the next step is to build it. I have attached a photo of what the circuit looks like in real life. A few points about why I chose to do certain things.

1. Wire Colors: Using different colors for different wires makes building your circuit and looking for problems much easier. I would suggest using differently colored wires for specific purposes. That way, when you look at your board, you know what wires are supposed to go where and can more easily identify problems. Here is the color scheme that I am using:
Red: I always use red wire for 5 Volt power. If it's red, I know that it's a 5V signal.
Brown: Brown wire is my 12 Volt power coming from my 12 Volt power supply.
Black: I normally use black wire for ground. In this case, I am not using negative voltage, so all black wires are ground.
White: I usually use white wire to transmit signals from the arduino and for my resonator.
Yellow/Green/Blue: This is a generic color for transmitting signals. Normally, as long as two adjacent signal wires are different colors, then it's ok. Normally, I use wires in (sort of) the following order: White/Yellow/Green/Blue. For this project, I chose green, yellow and blue to transmit the signals to my TIP120's so that I know what wires are going out to control each part of the RGB LED's. I can't use red as a signal wire, because I only use red for 5 Volt power.
Note: I didn't show the input power and the wires going to the RGB LED's in the picture below. There are, however, wires sticking up where I will put the RGB wires. The input power is unmarked, but has a brown wire on it already to remind me where it goes.

2. Resistors: I used 10 kOhm (10,000 Ohm) resistors for my button, and 1 kOhm (1,000 Ohm) resistors for my TIP120's. I do not need very much current for buttons, and the TIP120's do not need very much current to turn them on.

3. Capacitors: I used two capacitors for my voltage regulator. This helps to smooth out voltage spikes, which will occur as I turn the LED's off and on quickly. I used the capacitors that I had sitting around. Normally, I use the circuit described in Make: Electronics by O'Reilly. That has a 0.33 microFarad electrolytic capacitor on the input voltage and a 0.1 microFarad ceramic capacitor. If you are interested in learning about the basics of hardware, that is a great book to pick up. The capacitors I had were a little bigger, but it should work fine.

Sunrise Alarm Clock Breadboarded

Dec 17

Building a Sunrise Alarm Clock, 1

Sunrise Alarm Clock: 1

Have you ever woken up at 5:30 am to the most annoying sound on the planet? Yes, the sound that strikes fear in the most peaceful sleeper. The alarm clock sound. That dream crushing sound that jerks you back into reality. If only there was a smoother transition, one where I didn't wake up feeling angry that I was from my dreamscape so ungraciously taken. Enter the sunrise alarm clock.

Bill of Materials:

1. Arduino compatible (bare bones support for Atmega328p)

2. 12V 5A power supply (adafruit part number 352)

3. RGB LED strip (60 LED, adafruit 346)

4. TIP120 x3 (adafruit 976)

5. DS1307 Real Time Clock breakout board (adafruit 264)

Yes, I got a way beefier power supply than I needed. I could power a laptop off that thing. But then again, if I ever want more LED's, a motor, or a solenoid (hey, maybe I want my alarm clock to shoot socks at me in the morning out of my sock cannon? That'll wake me up.).

So, what is all this stuff and what does it do? Together, they make a sunrise alarm clock.

Adafruit has a lovely tutorial on hooking up the RGB LED strip here.

Adafruit has a wonderful tutorial on using the DS1307 real time clock here.

I'm using three PWM pins, 9, 10 and 11. 9 is connected to the green part of the RGB LED, 10 is red, and 11 is blue (see schematic). A diagram of what pins are what for the Atmega chip is shown on the arduino website: Atmega328 pin mapping.

If you follow the above Adafruit links, you will find everything you'd want to know on the parts. Now I need to wire it, code it, and test it.

Oct 19

Updates in the world of Open Source Laser Tag

To quote GLaDOS, "It's been a long time."

While I've been away, there have been plenty of things going on in the world of open source, laser tag, etc. A quick google search showed me some recent developments that look exciting.

Skirmos is an open source laser tag game made by college students. It is based on the arduino, uses IR LED's to send tags (with a range of 500 feet according to their kickstarter page), X-bee radios to sync data, tricolor LED's for coloring the tag unit, has a screen (which seems to be their differentiator), and has a cool shell. Since it uses an arduino, it is hack-tastic for other arduino enthusiasts. I missed the initial kickstater, and will have to follow up with this in the future. Based on their website and kickstarter goals, the final product may not have all of the functionality that they state in their kickstarter video. But hey, they are building something cool, and I am supportive of building cool things.

The guys at Skirmos mention that they are working with Kevin Darrah. He's another person who has a tutorial for using those silly NRF24L01+ radios (and I say that they are silly because, while I have read their data sheet and understand how one could control them, I haven't spent the time to write a library for controlling them and don't want to. I want a free one that I can use for whatever I want. Including teaching children how to build laser tag). Kevin has a website here with some cool projects relating to LED cubes (shift registers, multiplexing, etc.) and some home automation stuff with the aforementioned radios (which turns out are really cheap on ebay). He also made a breakout board for those things. Because who wants to solder 8 pins every time they use one?

IBM developerWorks has a three part tutorial on building laser tag. Who knew? I had some trouble navigating from part 1 to part 2 (there wasn't a link from part 1 to part 2 that I found faster than googling for part 2, so I'm posting the links to all 3 parts). I may have to look at developerWorks from IBM for more cool projects.
Part 1
Part 2
Part 3

Aug 18

In system Programmer, Sparkfun Curriculum, Marketing for makerspaces, etc.

I came across an in system programmer for microcontrollers. I'm not sure I'd need one, since I usually just take the ATmega328p out of my arduino to program raw chips, but hey, if I want dedicated hardware to do so, this is one way to do it.

Sparkfun has a curriculum. I checked out a few of the beginner pages, and it looks good. I haven't gone in depth, but it may be something that I can use or send people to if they want a bunch of things to learn. But who knows.

There is an article in Make about a makerspace selling advertising space on their kits to finance them. I may be able to do something similar to finance kits for wherever I end up helping out. Ideas for later.

May 23

Arduino Serial References

One of the things that I'll need to explain is asynchronous serial communication, which is how the arduino communicates to the FTDI chip (or other serial devices) to communicate to a computer via USB. I found some resources for arduino Serial stuff (including an article about using PWM for servo motors so that the software serial library doesn't get screwed up by the current servo library's use of interrupts).

There's a good wikipedia article about asynchronous serial.

There is also the arduino description of the software serial library, which is useful for describing how serial works (and how to make it work without hardware serial).

May 02

Quadcopters, mini and otherwise

I saw an article about a mini quadcopter that uses an ATMega128RFA1 (8 bit processor with built in 2.4 GHz transceiver). It's pretty cool, though the website didn't have a lot of build information in the post (there's some more stuff in his earlier posts, but it's not a clear cut thing to look at and know how to build your own without previous knowledge. Maybe I didn't look long enough.) Good instructions or not, it's a sweet project.

Speaking of Quadrotor helicopters, there's a nice youtube series done by The Crash Cast about building a tricopter (three rotor helicopter). If I ever have time to build one, after all of my other projects, then this is where I'd start. Maybe after I'm done teaching about registers and bits I can start teaching about PID controllers with this. How cool would of an advanced project would a quadcopter helicopter be (or tricopter. I don't judge)?

May 01

Charlieplexing LEDs to control a lot of LEDs with a few pins

Ever wanted to control a bunch of LEDs and minimize the number of pins used without using something like an LED strip or LEDs that have processors so that you can address them using I^{2}C or some other protocol? Well then, meet Charlieplexing and a handy tutorial all about how a clever use of pins can turn on lots of LEDs with clever use of the diode part of the LED.