I know it’s been quiet on the blog front. It’s because I’ve been working through some tricky issues with OpenBeacon Mini firmware. A long story, but the gist of it is that a timer subtlety was causing some hard-to-troubleshoot problems causing inconsistent transmit timing for WSPR. I’ve finally overcome that particular family of bugs, and now have the transmit working reliably. As you can see, I’ve put OpenBeacon Mini on the air for the first time and it’s receiving spots. Now that I’ve confirmed that the basic functionality is working, I need to fill out a few more firmware features and then actual beta testing can start, which shouldn’t be very long now.
On another note, I’ve also been doing more PC and PC parts hustling on OfferUp in order to fund an upgrade to my main workstation. I managed to snag a Ryzen 5 1600 for a good price at $159 at Fry’s, since the new Ryzen refresh CPUs were just released. I’ve been using it for a few weeks now and it’s a fantastic processor. It also handles OBS much better than my old i3, so when I do get back into streaming on a more regular basis, my stream quality should be even better yet. From my testing, I should now be able to push out 1080p 60 FPS video to Twitch with no problem now.
Stay tuned, as the news around here should pick up again.
A brief update to let you know how things are going. I’ve got a long checklist of things to implement in the OpenBeacon Mini firmware, and much of it I can leverage from my old OpenBeacon 2 firmware (although quite a bit of that needs to be refactored and updated). However, one bit that I never implemented properly in OpenBeacon 2 was a menu system, so I decided to tackle that one first, since it will need to be written from scratch.
That’s what I’m working on at the moment. No Twitch stream for today, as I don’t think this would be very interesting to watch as I stumble around trying to figure out a good way to do this in C++. I’ve created a menu class, and I’m working out all of the details and debugging on the desktop PC, so that I can then transfer it to the Arduino environment once it seems to be working correctly. I think it should have that up and running by the end of the day, and that I’ll have another Twitch stream within a few days once I can get back to code that I’m a little more adept at writing.
Since I’m waiting for circuit boards for OpenBeacon Mini to arrive, I want to keep the waiting time as productive as possible, so I’ve been working on the firmware. Specifically, one of my recent goals was to factor all of the modulation code out of the spaghetti mess that is the current state of the OpenBeacon 2 firmware (which is my starting point for OpenBeacon Mini).
In that vein, today I managed to finish up work on release v1.0.0 of the Etherkit Morse Arduino library. The majority of the coding work was done during my last few Twitch livestreams, so other than tweaking and cleaning up the code, most of the work today consisted of creating documentation and getting the repository in shape to be a proper Arduino library.
The way that this library functions is quite simple. Since timing in Morse code sending is critical, the end user of the library is required to provide a function that calls the library’s update method every one millisecond. This type of interface was chosen so that the library can be platform agnostic (since Arduinos come with different microcontrollers which have totally different timer functions). An transmit output pin and speed in words per minute is specified when the class in instantiated, and then all you have to do is call the class’s send method to send Morse code on the digital output pin. Alternately, you can have your sketch poll the class’s tx variable and act on it accordingly. Pretty easy stuff.
I’ve put in a request for the library to be included in the official Arduino Library Manager, so if you want to give it a try, wait a day or so for it to be listed there. If you really can’t wait, there are instructions in the README about how to manually install it. Hopefully you find it useful, and as always, please file your bug reports and suggestions for improvements as an issue on GitHub. Thanks!
If you watched my previous Twitch stream, you may have seen that I completed the layout of the first PCB spin of OpenBeacon Mini. Today I ordered the PCBs from DirtyPCBs, along with boards for my low-pass filter module, and more Empyrean boards in anticipation of wider beta testing soon.
I wanted to get these boards to the fab before we started to run into the wall of Chinese New Year (which I seem to do nearly every year). I think I’ve ordered them plenty early, and even paid a bit extra for express shipping, so hopefully they’ll be in-hand around the beginning of February.
In the mean time, I’ll be working on some more coding for the OpenBeacon Mini on my Twitch stream and some other ancillary stuff while I’m waiting for the boards to arrive. Stay tuned for further news on this blog.
Thanks to the efforts of Etienne Scott, K7ATN, we who live in the Pacific Northwest have a couple of nice SOTA summit-to-summit activity days each year. One that happens in early spring and if I remember correctly the other which occurs later in the summer. I participated in the spring S2S Party two years ago, but haven’t had a SOTA activation since.
As mentioned in a previous post, things have been kind of crazy here lately, and Jennifer has been encouraging me to get out to do something I enjoy, so I decided to take this Saturday to participate in the S2S Party. I was considering Bald Peak, which is just on the outskirts of the Beaverton-Hillsboro area, and makes for a quick and easy trip, but by the time that I went to Sotawatch to claim it, I noticed that K7ATN had already done so. Thanks to SOTA Maps, I was able to easily browse some other peaks relatively close, and settled on Sheridan Peak, especially since a previous trip report tagged it as a fairly easy drive and hike.
I needed a travelling companion, so I asked my 5-year-old son Noah if he wanted to go, and he eagerly agreed. I wasn’t sure if that enthusiasm would hold up during the trip, but at least because of the short hike to the summit, it would be easy to bail out if necessary. So we departed the house at around 9 AM, stopped by McDonalds for a light breakfast and a large coffee for me, then took the backroads of Washington and Yamhill Counties out to Sheridan Peak.
The drive was uneventful, other than my phone’s GPS getting a bit lost at the very end of the trip. However, the driving directions from the two previous write-ups of this peak on pnwsota.org were great and got me right to the parking lot. Actually, the gate to the parking lot was closed, but that was OK because there is a nice big turnout on the road immediately below it, so we just parked there and walked around the closed gate.
The hike up to the summit was quite easy, and Noah did well for one of his first actual hikes. Unsurprisingly for a peak in the Oregon Coast Range, the weather was damp and showery. Although we didn’t have much of a view from the top due to the forest, one big advantage of that was the canopy over our heads providing a bit of a break from the rain.
Fortunately, I was prepared for the rain, and I quickly erected a tarp shelter for us to use to take cover from the elements. It was actually fairly cozy under the shelter, as another advantage of the tree cover was that it was acting as a nice wind break from the usual chilly blast you get on a peak.
I don’t currently own any HF portable gear, but thanks to the generosity of W8NF, I was able to borrow a Yaesu FT-817 and Elecraft T1 tuner. A few days prior to the activation, I cut a random wire and counterpoise that would at least work on 40 and 20 meters, and tested it in my backyard. That turned out to be a good thing, as I was able to get my wire in the tree and get the 817 QRV with no problems at all. I also brought along my Baofeng UV-5R with rubber duck/tiger tail combo for 2 meter FM ops, with the 817 as the designated backup if that didn’t work.
At the designated time of noon local, I heard K7ATN full quieting on 2 meters (which wasn’t a huge shock, as his peak was only about 20 miles away from mine). There wasn’t a huge turnout for this activity day like there was a few years ago when I did it on Cooper Mountain, but I did manage to make four S2S QSOs on 2 meter FM with the UV-5R in order to officially activate the peak. Woo! After that, I switched to 40 meters LSB on the 817 and made a couple of S2S QSOs with stations that I had already talked to on 2 meters and one with a local chaser. Finally, I had K7ATN spot me on 20 meters and managed to squeak out a couple more SSB QRP QSOs, both with stations in Arizona. By then, Noah was getting a bit cold and wanted to get going, but I was pretty happy with the results. From the sounds of things on 2 meters, a few of the other activators had some pretty crummy weather conditions to deal with, especially NS7P on Mary’s Peak.
So after about an hour on the peak, Noah and I packed everything up and headed back down the half mile or so to the pickup. I was very proud of Noah, as he did great for a 5-year-old; never really complaining and obviously really enjoying being out in nature, plus I think he liked the radio activity as well.
I’m really happy to have made this activation, especially since I was able to get Noah involved in both an activity out in nature plus radio fun! Thanks again to K7ATN for all of the hard work that you put into the PNW SOTA community and the rest of the activators for getting out there in this wet spring Oregon day. Stay tuned for hopefully one or two more SOTA activations this year, hopefully with more family members coming along on future trips.
2014 was a bit of a mixed bag here. It’s been a transition year for Etherkit, as I reorganize and reorient the business for a renewed push to get the CC1 and other new products to market. I believe that good things are beginning to happen there.
On a personal level, my two boys have been doing fantastic. Noah started preschool and is really enjoying it. Eli is at a bit of a difficult age (the Terrible Twos) and is between baby and little kid, but he’s got an amazing personality and is growing up so quickly. Jennifer and I celebrated five years of marriage and 11 years since our first date! Things haven’t been perfect in the extended parts of our families, but at least in our household we’ve all been pretty healthy and have been able to enjoy many blessings.
Si5351A Breakout Board Campaign
There have been a fair number of neat projects I’ve seen using the Si5351A Breakout Board that I posted on OSHPark, along with my Si5351 Arduino library, which is absolutely wonderful. However, I realize that it’s a pain to order PCBs and all of the parts separately, and that a kit or a finished board would be ideal.
I’ve decided to try something new in order to bring the Si5351A Breakout Board kit to market: we’re going to try crowdfunding the first batch of kits. I’m going to set a modest goal to trigger the funding, but all orders will be welcome over the goal amount. In fact, I intend to set a stretch goal at some higher funding level to devote a certain number of hours to improving the Si5351 Arduino library, including:
Add tuning from 8 kHz to 1 MHz
Add tuning from 150 MHz to 160 MHz
Fix the bug that does not allow output over 125 MHz
Implement access to the phase register
Implement sub-Hz tuning for modes like WSPR
Other bug fixes
I also intend on lowering the BOM cost by removing the broadband output transformers, and offering multiple variants of the kit, including the option to add SMA connectors and a TCXO. I’m composing the campaign on Indiegogo right now, and I’m shooting for a launch in about 10 days. I’m hoping to gain experience with this campaign with the goal of using it to fund CC1 kitting later in the year.
Why am I telling you this now? Because I would like to let those of you are are interested in purchasing one (or otherwise interested in supporing Etherkit) get advance notice so that you can order on the first day that the campaign goes live. This will help to give the campaign more momentum and perhaps help to spread the word further. I will be sure to make a blog post here when the campaign goes live and tweet about it as well, so keep an eye on those channels if this is something that intrigues you.
Simple WSPR Transceiver using Si5351A
I came across this simple WSPR transceiver from KC3XM driven by one of my Si5351A Breakout Boards via @wm6h and Dangerous Prototypes. The WSPR transmitter is simply a BS170 driven by one of the Si5351 outputs, which is buffered by a logic gate and keyed by a standard PNP keying switch. Control of the Si5351 and keying of the transmitter is performed by a plain vanilla Arduino Uno (the code has been posted to GitHub).
This looked so simple to build that I had to give it a try. I quickly built up the transmitter portion, tacked on a 10 meter LPF (the original version is for 30 meters), modified the code for my callsign and grid, and changed the Si5351 output frequency to the 10 meter band. The transmitter put out nearly exactly 1 watt of RF (with only about 1.2 watts of DC input total) into 50 ohms and ran quite cool. Hooked up to my Moxon, it had no problem generating spots when pointed east and started on an even minute so as to properly synchronize. Fun stuff!
If you haven’t been following the blog of KO7M, you should be. Jeff has been doing a lot of experimentation with with NB6M and other home experimenters in Washington state, especially with stuff like the Minima and using microcontrollers in ham radio projects.
Lately, Jeff has been working on getting an Arduino to output PSK audio. He has a series of recent posts about it, but thesetwo are probably the most important. The character timing is not quite right yet, but the basics of how to generate PSK via PWM audio signals are here. Good stuff!
Si5351 and Raspberry Pi
Another really great homebrewer blog is M0XPD’s Shack Nasties (oh you Brits and your silly names) blog. Paul has been doing a lot of work with the Si5351 as well, and his latest post about the Si5351 is details of how he interfaced it with the Raspberry Pi. Excellent information to have, as the RPi is of course much more powerful than your garden variety Arduino.
You may have seen in my previous post that I have been working on the latest (and hopefully final) major revision of the CC1. Many of the previous decisions on the radio architecture have been thrown out, perhaps most importantly the decision to use a dual-gate MOSFET as the mixer. In the quest for a replacement, I considered using the old standby, a diode ring mixer, but I wanted to be open to other possibilities as well. As shown in that last post, the KISS mixer from Chris Trask seems to have excellent intermod performance with relative simplicity. So the current plan is to try to build an IF chain using the KISS mixer and see if it will work well in the CC1.
Having quantified the performance of the KISS mixer, the current quest is to find an IF amplifier that will provide decent performance at a reasonable current “price”. With an IIP3 of approximately +30 dBm (I believe it should be able to get the mixer there with some improvements in components), the limiting factor for IP3 performance in the IF chain will be the IF amplifiers. Consider that my current goals for the CC1 receiver are:
Dynamic range of around 100 dB
Decent sensitivity (less than -130 dB MDS in 400 Hz bandwidth)
Reasonable current consumption for portable use (< 60 mA)
In order to achieve this, I’ve determined (using the excellent Cascade08 program from W7ZOI’s LADPAC software suite) that the IF amp that I choose will need the following characteristics:
OIP3 of at least +20 dBm (although higher is better since the amp is the limiting factor)
The current candidate for the IF topology is similar to the design seen in Figure 6.89 in Experimental Methods in RF Design, with no gain until after the first IF filter. To that end, I’ve been looking a various amplifier designs to see if I could find something that would fit (or at least come close to) the requirements above. Bipolar amps are nice, but use a lot of current. MMICs were another possibility; the ones I have found do have about +20 dBm OIP3, but with around 20 mA of current draw and approximately 20 dB of gain, which means the IIP3 is not that great. I figured it wouldn’t hurt to take a look at the dual-gate MOSFET again, as I know that at least they can use modest current and many have excellent noise figure.
Without getting into the weeds of every detail of the experiment that I tried, I’ll just recap the important parts. Initially I used a BF998 with an L-network on gate 1 to transform the 2.2 kΩ input impedance of the amplifier to 50 Ω. A pot was provided to provide variable voltage bias to gate 2. Different permutations of source resistor and gate 2 bias were tried, and the best IIP3 I could get from that amplifier was about -3 dBm (with perhaps 14 dB of gain). OK, but not great. So I decided to give the BF991 a try and see what I could get out of it. Again, I tried many variations of source resistor and gate 2 bias, and was able to find a configuration that is somewhat promising.
You can see in the schematic above that I settled on a source resistor of 100 Ω and “dipped” the gate 2 pot for best IP3, which came out at 5.6 V of bias. I also found in previous trials that leaving the source bypass capacitor out improved the IP3 a few dB and decreased the gain a few dB, which was a worthy improvement. Input and output was matched for 50 Ω. The current consumption was only 4 mA, which is pretty great for an IF amp in a portable radio.
Here is the capture of the OIP3 measurement from my DSA815-TG. Only 10 dB of gain, but that is OK as we wanted modest gain. The IIP3 measured +8 dBm, and when you add in the 10 dB of gain, the OIP3 is +18 dBm, which is pretty close to my original spec, and all for only 4 mA.
This all looks very reasonable. But there’s one problem. The good IP3 is highly dependent on VDD and VG2, especially the gate 2 voltage. As this is going to be a production radio, there needs to be a reliable way to set VG2 during calibration, every time. Also it appears that I probably need some way to keep VDD stable over a variety of voltage inputs, such as a LDO voltage regulator (maybe 9 or 10 V would work). But I need as much headway as possible in VDD in order to get the most out of my dual-gate MOSFET amp. In my experience, they don’t like being voltage-starved. There also appears to be a bit of dependency on the tuning of the input L-network, although that is not as pronounced as the other effects.
As it stands now, this is a promising candidate for the IF amp, but I’ll have to find a way to reduce these dependencies quite a bit in order for it to be viable for a commercial product. That’s my next line of inquiry, and I’ll be sure to have a follow-up post if I am able to get around the remaining limitations
As you can see from the above photo, I have finished a significant portion of the digital side of the newest CC1 prototype and now I’m on to the receiver section. This weekend I finished my first pass of the audio chain and characterized the gain and frequency response of the chain. Next up is the design of the IF and front end of the receiver. This time I plan to do a much better job of characterizing the performance of entire radio, designing for specific critical receiver specifications, and iterating the design as necessary instead of holding on to dodgy performance from circuits.
Mixer Investigations and the Search for Better Dynamic Range
Since I decided to ditch the dual-gate MOSFET mixer front end, I’ve been considering what to replace it with. At first, I was thinking about using the ADE-1 for the mixer and product detector, but I’ve been intrigued with reading about H-Mode mixers over the last few weeks, which led me to the similar, but simpler KISS mixer by Chris Trask. That seemed like a good candidate for the CC1, with relative simplicity and better-than-average performance. Since good IP3 performance is the main characteristic of this mixer, I wanted to try measuring IIP3 at my own bench to see how it looked in a home made circuit with less than optimal parts and layout.
To get warmed up, I first attempted to measure the IIP3 of a few parts that I had on hand where I already knew IIP3 values to expect: the SBL-1 and the ADE-1. Using a DG1022 as the signal generators, my HFRLB as a hybrid combiner, and the DSA815TG, I was able to measure an IIP3 of +13 dBm for the SBL-1 and +17 dBm for the ADE-1, which is pretty much right on what other people have published.
Here is my test setup for measuring the KISS mixer performance. I deviated from the circuit described in the KISS mixer white paper in a few ways. First, I used a TI TS5A3157 analog switch, as I didn’t have any Fairchild FST3157 on hand. I also used a hand-wound trifilar transformer on a BN2402-43 core instead of a nice transfomer from a company like Mini-Circuits. I drove the KISS mixer with +3 dBm from a Si5351. My measurement of IIP3 for this variant of the KISS mixer came out to +27 dBm, which seems reasonable given the poorer components I was using. Conversion loss was 7 dB. I’m going to try to measure it again with an actual FST3157 and a Mini-Circuits transformer in the near future, so it will be interesting to how much that will improve the IMD performance.
But honestly, I probably won’t need better than +27 dBm performance if this mixer is used in the CC1. Since the CC1 is meant to be a trail-friendly radio with modest current consumption, I don’t think I want to include the high current amplifier needed after the KISS mixer to get maximum performance out of it. Which is kind of a shame, but I figure that I should be able to keep RX current to around 50 to 60 mA and still have a receiver with better IMD performance than your typical level 7 diode ring mixer receiver. Stay tuned for more details on the CC1 front end as they are worked out in the NT7S shack.
10 Meter Contest!
Yes, it’s almost time for my favorite contest of the year: the ARRL 10 Meter Contest. Ever since I moved into the current QTH, it has been a bit of a tradition for me to operate the contest as SSB QRP only. By virtue of entering that least-liked category, it has been no problem to collect some modest wallpaper from this contest. That’s fun, but my real goal is to beat my previous score. Last year, I think I did fairly well with 7490 using a stock IC-718 and my ZS6BKW doublet. So this year, I’m going to have to step up my equipment game in order to have a good chance of besting last years score. I’m thinking some kind of gain antenna is going to be a must. If I can get a Moxon or small Yagi up around 20 feet and use an Armstrong rotor, that should help give me a little more oomph than last time. We’ll see if I can get something built in the less than 3 weeks before the contest.