Coding

Si5351 Programming Flowchart

I recently received this nice flowchart in email from Joe Marin, CO7RR which documents a method for programming the Si5351. It looks slightly different from the way I do it in the Si5351 Arduino library and I haven’t personally tried it, so I can’t vouch for its accuracy, but I wanted to pass it along in the spirit in which it was offered. I have seen different algorithms used by different projects, so I know that there is definitely more than one way to do it successfully.

This reminds me that I get inundated with requests for help and bug reports/feature requests for the various open source code that I maintain, and it’s kind of difficult for me to stay on top of all of that, plus work on developing new products, as I’m mostly a one-man operation. I do try my best and thank you for your patience, as I know I don’t answer a lot of you as quickly as would be ideal.

Anyway, hopefully this will be helpful to others. Thanks Joe!

Meta

Many Thanks

Today I received a pleasant surprise in my inbox:

That’s a bit more than $8 at the current exchange rate.

I didn’t know that someone (or multiple someones) was already using the Brave browser and allocating Basic Attention Tokens to me, so that was a really awesome surprise for me today. Thank you very kindly to the person or people who have taken the effort and funds to contribute to me in this way. Since abandoning Patreon, I still haven’t found a good strategy for on-going funding, but it would be great if this method picks up steam. It was a little bit painful to give up the monthly Patreon funds, but I still feel quite good about the decision from a moral standpoint. I’m looking forward to seeing if this model can actually become a thing. From the sound of this, the idea is picking up some steam. The token giveaway mentioned in that article is over, but they say there will be another soon, so watch for it.

Meta, Twitch

A New and Improved Experience

As you have probably seen, I’ve launched occasional Twitch streaming of my work activities, including schematic capture, PCB layout, library coding, firmware coding, and even some solder melting. It’s been a bit of a learning curve, but I’ve been traversing it fairly successfully, I think. However, one big problem that I was having was with the quality of my stream output.

Allow me to describe my home office and network infrastructure situation. We have Frontier FIOS internet, which is fiber optic to a junction box on your house, when then downconverts to RF over coax, like cable internet. Our modem and router live in our living room. The router is a cheap TP-Link flashed with DD-WRT. My shack/office is in a bedroom adjacent to the living room. Our house is early 70s vintage, so no network cabling was wired into the house. The old office network setup was another Linksys router flashed with DD-WRT configured as a wifi bridge, with all of the office devices connected to the bridge via Ethernet cable. In effect, nearly every device in the house was connected via wifi. Given the combination of the cheap router and wifi congestion, my internet speeds were slow. The internet package I had from Frontier was labeled at 25 Mbps download and 10 Mbps upload, but I’d be lucky if I could get 5 Mbps each way from the office. This meant that the Twitch stream was being bandwidth-choked, since it needs about 2.8 Mbps upload on a consistent basis, which this setup couldn’t provide.

So in order to provide a better stream experience, I did a couple of things. First I called Frontier and got our internet service upgraded to 30 Mbps up/down for a slightly cheaper monthly rate than we currently pay (it pays to check on that every year or two). Then I ran an Ethernet cable installation from the living room near the router to the office so that I could toss out the wifi bridge.

Happily I can now report that from all of the office/shack PCs, I can easily get more than 30 Mbps upload and download speed. I also ran a Twitch streaming test last night from the office PC and got two hours of continuous streaming without a single frame being dropped, which is quite an improvement from the previous streams.

It’s been a few weeks since the last stream, but I’m ready to pick up the pace a bit more again. Watch for more streams soon.

OpenBeacon Mini

OpenBeacon Mini Firmware Coding Proceeds

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.

Arduino, Etherkit, OpenBeacon Mini

A New Arduino Library Appears!

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!

Etherkit, OpenBeacon Mini

OpenBeacon Mini Proto PCBs On The Way

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.