A Real Time Data Compression Technique

With more and more embedded systems being connected, sending state information from one machine to another has become more common. However, sending large packets of data around on the network can be bad both for bandwidth consumption and for power usage. Sure, if you are talking between two PCs connected with a gigabit LAN and powered from the wall, just shoot that 100 Kbyte packet across the network 10 times a second. But if you want to be more efficient, you may find this trick useful.

As a thought experiment, I’m going to posit a system that has a database of state information that has 1,000 items in it. It looks like an array of RECORDs:

typedef struct
{
  short topic;
  int data;
} RECORD;

It doesn’t really matter what the topics and the data are. It doesn’t really matter if your state information looks like this at all, really. This is just an example. Given that it is state information, we are going to make an important assumption, though. Most of the data doesn’t change frequently. What most and frequently mean could be debated, of course. But the idea is that if I’m sending data every half second or whatever, that a large amount isn’t going to change between one send and the next.

Continue reading “A Real Time Data Compression Technique”

LoRa With The ESP32

If you are interested in deploying LoRa — the low power long-range wireless technology — you might enjoy [Rui Santos’] project and video about using the ESP32 with the Arduino IDE to implement LoRa. You can see the video below. He uses the RFM95 transceivers with a breakout board, so even if you want to use a different processor, you’ll still find a lot of good information.

In fact, the video is just background on LoRa that doesn’t change regardless of the host computer you are using. Once you have all the parts, getting it to work is fairly simple. There’s a LoRa library by [Sandeep Mistry] that knows how to do most of the work.

Although the project uses an RFM95, it can also work with similar modules such as the RFM96W or RFM98W. There are also ESP32 modules that have compatible transceivers onboard.

This is one of those projects that probably isn’t useful all by itself, but it can really help you get over that hump you always experience when you start using something new. Once you have the demo set up, it should be easy to mutate it into what you really need.

We’ve been talking about LoRa a lot lately. We’ve even seen it commanding drones.

Continue reading “LoRa With The ESP32”

Arduino And Pidgin C++

What do you program the Arduino in? C? Actually, the Arduino’s byzantine build processes uses C++. All the features you get from the normal libraries are actually C++ classes. The problem is many people write C and ignore the C++ features other than using object already made for them. Just like traders often used pidgin English as a simplified language to talk to non-English speakers, many Arduino coders use pidgin C++ to effectively code C in a C++ environment. [Bert Hubert] has a two-part post that isn’t about the Arduino in particular, but is about moving from C to a more modern C++.

Continue reading “Arduino And Pidgin C++”

Your Own Sinclair Scientific Calculator

We’ve talked about the Sinclair scientific calculator before many times, and for some of us it was our first scientific calculator. If you can’t find yours or you never had one, now you can build your own using — what else — an Arduino thanks to [Arduino Enigma]. There’s a video, below and the project’s homepage on Hackaday.io describes it all perfectly:

The original chip inside the Sinclair Scientific Calculator was reverse engineered by Ken Shirriff, its 320 instruction program extracted and an online emulator written. This project ports that emulator, written in Javascript, to the Arduino Nano and interfaces it to a custom PCB. The result is an object that behaves like the original calculator, with its idiosyncrasies and problems. Calculating PI as arctan(1)*4 yields a value of 3.1440.

Special care was taken in the design of the emulator to match the execution speed of the
original calculator, which varies from acceptable to atrocious for trigonometric functions involving small angles.

Continue reading “Your Own Sinclair Scientific Calculator”

Linux Fu: The Great Power Of Make

Over the years, Linux (well, the operating system that is commonly known as Linux which is the Linux kernel and the GNU tools) has become much more complicated than its Unix roots. That’s inevitable, of course. However, it means old-timers get to slowly grow into new features while new people have to learn all in one gulp. A good example of this is how software is typically built on a Linux system. Fundamentally, most projects use make — a program that tries to be smart about running compiles. This was especially important when your 100 MHz CPU connected to a very slow disk drive would take a day to build a significant piece of software. On the face of it, make is pretty simple. But today, looking at a typical makefile will give you a headache, and many projects use an abstraction over make that further obscures things.

In this article, I want to show you how simple a makefile can be. If you can build a simple makefile, you’ll find they have more uses than you might think. I’m going to focus on C, but only because that’s sort of the least common denominator. A make file can build just about anything from a shell prompt.

Continue reading “Linux Fu: The Great Power Of Make”

Computers Go Hollywood

Have you ever been watching a TV show or a movie and spotted a familiar computer? [James Carter] did and he created a website to help you identify which old computers appear in TV shows and movies. We came across this when researching another post about an old computer and wondered if it was any old movies. It wasn’t.

You can search by computer or by title. There are also ratings about how visible, realistic, and important the computer is for each item. The database only contains fictional works, not commercials or documentaries. The oldest entry we could find was 1950’s Destination Moon which starred a GE Differential Analyzer. Well, also John Archer, we suppose. We assume GE had a good agent as the same computer showed up in Earth vs. the Flying Saucers (1956) and When Worlds Collide (1951). You can see a clip of the computer’s appearance in Earth vs. the Flying Saucers, below.

Continue reading “Computers Go Hollywood”

Learn Something About Phase Locked Loops

The phase locked loop, or PLL, is a real workhorse of circuit design. It is a classic feedback loop where the phase of an oscillator is locked to the phase of a reference signal using an error signal in the same basic way that perhaps a controller would hold a temperature or flow rate in a physical system. That is, a big error will induce a big change and little errors induce little changes until the output is just right. [The Offset Volt] has a few videos on PLLs that will help you understand their basic operation, how they can multiply frequencies (paradoxically, by dividing), and even demodulate FM radio signals. You can see the videos below.

The clever part of a PLL can be found in how it looks at the phase of two signals. For signals to be totally in phase, they must be at the same frequency and also must ebb and peak at the same point. It should be clear that if the frequency isn’t the same the ebbs and peaks can’t line up for any length of time. By detecting how much the signals don’t line up, an error voltage can be generated. That error voltage is used to adjust the output oscillator so that it matches the reference oscillator.

Of course, it wouldn’t be very interesting if the output frequency had to be the same as the reference frequency. The clever trick comes by dividing the output frequency. For example, a 100 MHz crystal oscillator is difficult to design. But taking a voltage-controlled oscillator at 100 MHz (nominal) and dividing its output by 100 will give you a signal you can lock to a 1 MHz crystal oscillator which is, of course, trivial to build.

Continue reading “Learn Something About Phase Locked Loops”