Improving accuracy

Thanks to the readonly old Arduino forum I noticed only today that the author of the DCF77 code I am currently using published an update, nearly a year ago.

He wrapped it in a nice library, which makes it a lot easier to use. Sadly it doesn’t work on version 1.0 of the Arduino UI, so I reverted to version 0022 for now. There are newer “old” versions of the UI, but I had this version still installed.

This is the example from the library:

#include "Dcf77.h"
 
Dcf77 dcf77(0); 
 
void setup() {
Serial.begin(9600);
}
 
void loop() {
const char *v = dcf77.getDateTime();
if (strcmp (v,"DCF77POLL") != 0) {
Serial.println(v);  
}
}

The library takes care of parity and plausability checks, so I don’t have to worry about that anymore. The downside is that it produces the current time far less frequent than the code I’m using now, but when it returns one it is correct.

I’m still leaning toward adding a realtime clock to the clock. This way I can rely on the RTC for the current time and correct it now and then when I get a signal from the DCF receiver.

Circuit board for the wordclock

Yesterday I was playing with Fritzing to create a circuit board for the wordclock. Building it on the breadboard was easy, but the auto routing on the PCB-layout drove me nuts. Today I tried it again, loaded the file, repositioned the components on the circuit board a little and guess what … it worked on the first try. This is how the circuit board in the next version of the wordclock may look like:

It is designed for an Arduino Mini Pro, which is by far the cheapest Arduino variant I could find and which is sufficient for this purpose. U1, U2 and U3 will hold the 74HC595 ICs, J3, J4 and J5 will connect the LEDs. J2 is the connection for the DCF77 receiver.

I guess next I’ll have to learn how to etch my own circuit boards.

Wordclock finished

Yay, my Arduino based wordclock is finally finished.

Since it currently seems to be impossible to embed a YouTube video without it loading tracking scripts the video can only be viewed directly on YouTube.

It uses a DCF77 radio receiver to get the current time and an Arduino to interpret it and control LEDs to show the time.

You can find the full writeup of the clock on this page.

Breakthrough

This evening I managed to get a breakthrough while I was working on the wordclock. The clock kept showing a completely wrong time now and then, followed by the correct time a minute later.

So I loaded the test program for the DCF receiver again and monitored the output on the serial console over a longer time (one or two hours or so). I noticed that the receiver actually gave incomplete information once in a while. To rectify this I did two things: Continue reading Breakthrough

Controlling the LEDs with a 74HC595 chip

I finally got the 74HC595 chips and decided to do a dry run on a breadboard. I used the schematic I made earlier with Fritzing and just rebuilt it, with a couple of LEDs on every chip. I used the code from this blog as a base and it worked on the first try. Now I have to adapt this code for my purposes.

Don’t panic, the test setup looks worse than it is 🙂

Thoughts on connecting the LEDs

This is a summary of some thoughts I had on connecting the LEDs to the Arduino. When I read about charlieplexing I was amazed how many LEDs I could control with so few pins on the Arduino. Then I realized the downside of this technique: Essentially I can only light a single LED at a given time. Sure, there are a couple that can be lit simultaneously when they don’t share any pins, but setting those up would be a nightmare. So I started to group the words. Which words have to be lit when? Continue reading Thoughts on connecting the LEDs

Arduino and the DS18B20 temperature sensor

So, this is the reason I started with an Arduino in the first place. In summer 2010 I ordered an Arduino and a DS18B20 temperature sensor because I wanted to monitor the water temperature in my aquarium in the summer and have the Arduino start fans if needed. My flat is directly below the roof and gets quite hot.

But I never figured out how to read the temperature from the sensor, every tutorial I followed, every code snippet I found showed either nothing at all or ridiculously wrong temperatures. Nevertheless, I just decided to try it again, wired it up and the third code snippet I tried worked. Of course, it’s the sample code right on the Arduino Playground

A DS18B20 temperature sensor wired up to an Arduino Duemilanove

Continue reading Arduino and the DS18B20 temperature sensor