Jan 27

Arduino is so easy that MisDotGeek gets a new header

I sat down at my desk tonight not sure what I was going to do. Right now I’m between QRP projects, as my uBITX hasn’t arrived yet and I’m not quite ready to put up my new antenna (I’ve got some building to do). So I grabbed an Arduino from my parts bin and a 16×2 LCD and ran through the “Hello World” tutorial on Arduino.cc.

I managed to have everything I needed on hand. I must say that for hardly more than the price of the Arduino itself, the Elegoo Arduino Basic Starter Kit is an amazing value. It comes with everything you need to get started! The only thing I used that wasn’t in the kit was a potentiometer and the 16×2 LCD itself, both borrowed or left over from QRP Labs kits.

Commanding the Electrons

It isn't pretty, but it works!

Following the tutorial was easy. If only the wiring were as pretty, though! Have no fear, it works! At this point the thing says “Hello World” on the top line and counts up from 0 on the second line. I hate the line “Hello World” so I instead made it say howdy to my friend Lyndle, and send him a picture of it.

All I did was move the second line to the void setup() (aka “run once”) section and insert my own words, in 16 characters or less. It’s a good thing I didn’t pick a longer domain name when I built this site! You can see the results in the header above. Below you will find the modified code.

Overall this only took a few minutes and was tons of fun. The neat thing about Arduino is that if you can learn the basics of it, you can easily modify the firmware on your Raduino that comes with your BITX40 or uBITX. Notice now Arduino and Raduino are the same words, with the first two letters flipped? Clever!

Arduino, Raduino – They’re related?

Wait a sec- Arduino and Raduino are related? Indeed they are! Just as in the tutorial, where the Arduino is used to control a 16×2 LCD display, it can be used to control other things. One of those things is a chip that takes commands from a microcontroller (what the Arduino is) and its magic power is that it puts out a signal on a specified frequency. It has up to three outputs, so at any given time it can be outputting three different signals at three different frequencies. Nifty, right?

So, how does this make a Raduino? Consider that the VFO in a radio is just a frequency generator. In fact before the Raduino was around, the BITX40 had a circuit on the board that did just that. It was unstable and the frequency was very hard to set, and it moved around a lot. Plus there was no way of knowing the exact frequency the radio was tuned to.

What if you could leverage this¬†digital frequency generator instead? How would that work? The Arduino would need to accept input from something to vary the frequency like a potentiometer or a rotary encoder. That would be enough to tune the radio, but you still wouldn’t know what frequency you’re on. But an Arduino can do many things at once, including displaying the frequency on an LCD so you can see where you’re tuned. Neat, right?

But how does this relate to Arduino? The Raduino is just an Arduino with a custom circuit board for the magic frequency chip (the SI5351A), the LCD, and the stuff to control it. That’s it. It uses standard Arduino programming. You can actually build your own Raduino clone with an Arduino, a SI5351A breakout board, a 16×2 LCD, and some parts. Wire it up, program it, and voila. Raduino.

Finale

My eventual goal is to build my own VFO for my BITX40 with output for the VFO and the BFO too.¬†That way I can easily switch sidebands without having to change the VFO offset, but rather by changing the BFO frequency. This is how the uBITX does it, and also how most commercial rigs do it. It’ll be a slow project, but I have most of the parts on hand and I just need to learn how to make them all work together.

Here’s the code I used just you you can compare it with that in the tutorial to see how easy it was. And for the record it took me about a thousand times as longer to write this blog post than it did to actually build the circuit above. 73!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void setup() {
// set up the LCD's number of columns and rows:
lcd.begin(16, 2);
// Print a message to the LCD.
lcd.setCursor(0, 0);
lcd.print("MiscDotGeek.com");
lcd.setCursor(0, 1);
lcd.print("QRP,Geekery&More");
}

void loop() {
// set the cursor to column 0, line 1
// (note: line 1 is the second row, since counting begins with 0):
////lcd.setCursor(0, 1);
// print the number of seconds since reset:
//lcd.print(millis() / 1000);
}