Programming the Open-V Open Source CPU on the Web

openriscv_webYou can now program the Open-V on the web, and see the results in real time. The code is compiled in the web IDE and then flashed to a microcontroller which is connected to a live YouTube live stream. It’s pretty neat to flash firmware on a microcontroller thousands of miles away and see the development board blink in response.

We’ve covered the Open-V before, and the crowd funding campaign they have going. The Open-V is an open hardware implementation of the RISC-V standard. And is designed to offer Cortex M0-class capabilities.

This feels like a create way to play around with some real hardware and get a taste of what a future where we can expect Arduino-like boards, open source down to the transistor level.

For a closer look at why open silicon matters, check out [Brian Benchoff’s] hands-on review of the HiFive, an Arduino form-factor board built around an open hardware RISC-V microcontroller.

Encoders Spin Us Right Round

Rotary encoders are great devices. Monitoring just a few pins you can easily and quickly read in rotation and direction of a user input (as well as many other applications). But as with anything, there are caveats. I recently had the chance to dive into some of the benefits and drawbacks of rotary encoders and how to work with them.

I often work with students on different levels of electronic projects. One student project needed a rotary encoder. These come in mechanical and optical variants. In a way, they are very simple devices. In another way, they have some complex nuances. The target board was an ST Nucleo. This particular board has a small ARM processor and can use mbed environment for development and programming. The board itself can take Arduino daughter boards and have additional pins for ST morpho boards (whatever those are).

The mbed system is the ARM’s answer to Arduino. A web-based IDE lets you write C++ code with tons of support libraries. The board looks like a USB drive, so you download the program to this ersatz drive, and the board is programmed. I posted an intro to mbed awhile back with a similar board, so if you want a refresher on that, you might like to read that first.

Reading the Encoder

The encoder we had was on a little PCB that you get when you buy one of those Chinese Arduino 37 sensor kits. (By the way, if you are looking for documentation on those kinds of boards, look here.; in particular, this was a KY-040 module.) The board has power and ground pins, along with three pins. One of the pins is a switch closure to ground when you depress the shaft of the encoder. The other two encode the direction and speed of the shaft rotation. There are three pull-up resistors, one for each output.

I expected to explain how the device worked, and then assist in writing some code with a good example of having to debounce, use pin change interrupts, and obviously throw in some other arcane lore. Turns out that was wholly unnecessary. Well… sort of.

Continue reading “Encoders Spin Us Right Round”

Custom Zynq/CMOS Camera Unlocks Astrophotography

Around here we love technology for its own sake. But we have to admit, most people are interested in applications–what can the technology do? Those people often have the best projects. After all, there’s only so many blinking LED projects you can look at before you want something more.

[Landingfield] is interested in astrophotography. He was dismayed at the cost of commercial camera sensors suitable for work like this, so he decided he would create his own. Although he started thinking about it a few years ago, he started earnestly in early 2016.

The project uses a Nikon sensor and a Xilinx Zynq CPU/FPGA. The idea is the set up and control the CMOS sensor with the CPU side of the Zynq chip, then receive and process the data from the sensor using the FPGA side before dumping it into memory and letting the CPU take over again. The project stalled for a bit due to a bug in the vendor’s tools. The posts describe the problem which might be handy if you are doing something similar. There’s still work to go, but the device has taken images that should appear on the same blog soon.

Continue reading “Custom Zynq/CMOS Camera Unlocks Astrophotography”

Mini Retro PET Computer

There was a time that the Commodore PET was the standard computer at North American schools. It’s all-in-one, rugged construction made it ideal for the education market and for some of us, the PET started a life-long love affair with computers. [Ruiz Brothers] at Adafruit has come up with a miniature PET model run on a microcontroller and loaded up with a green LED matrix for a true vintage look.

While not a working model of a PET, the model runs on an Adafruit Feather M0 Basic Proto which is an Atmel ATSAMD21 Cortex M0 microcontroller and can display graphics on Adafruit’s 16×9 charlieplexed led matrix.The ATSAMD21 is the chip used in the Arduino Zero, so I’m sure we’ll see more of this chip in the future. Like all of the tutorials at Adafruit, this one is very detailed with step-by-step animated pictures to help you along. Obviously, you don’t need the exact hardware that they’re using, but if you’re putting in an order from Adafruit anyway, why not?

The plans for the 3D printed PET are available for free, so even if you don’t want to put their LED matrix and microcontroller in it, you can still print yourself out a great looking prop and 3D printing the PET will only use about a dollar’s worth of filament. Of course, while this is a cool retro model, if you have a Commodore PET lying around, you could probably do something else with it. We don’t, so that sound you hear is the sound of our 3D printer printing up the past.

Continue reading “Mini Retro PET Computer”

Reverse Engineering An ST-Link Programmer

We’re not sure why [lujji] would want to hack ST’s ST-Link programmer firmware, but it’s definitely cool that he did, and his writeup is a great primer in hacking embedded devices in two parts: first he unpacks and decrypts the factory firmware and verifies that he can then upload his own encrypted firmware through the bootloader, and then he dumps the bootloader, figures out where it’s locking the firmware image, and sidesteps the protection.

[lujji]’s project was greatly helped out by having the firmware’s encryption keys from previous work by [Taylor Killian]. Once able to run his own code on an intact device, [lujji] wrote a quick routine that dumped the entire flash ROM contents out over the serial port. This gave him the bootloader binary, the missing piece in the two-part puzzle.

If you’ve ever broken copy protection of the mid-1990’s, you won’t be surprised what happened next. [lujji] located the routine where the bootloader adds in the read protection, and NOPped it out. After uploading firmware with this altered bootloader, [lujji] found that it wasn’t read-protected anymore. Game over!

We glossed over a couple useful tips and tricks along the way, so if you’re into reversing firmware, give [lujji]’s blog a look. If you just want a nice ARM programmer with UART capabilities, however, there’s no reason to go to these extremes. The Black Magic Probe project gives you equal functionality and it’s open source. Or given that the official ST-Link programmers are given away nearly free with every Nucleo board, just buying one is clearly the path of least resistance. But a nice hack like this is its own reward for those who want to take that path. Thanks, [lujji] for writing it up.

Body Cardio Weighing Scale Teardown

If you weigh yourself by standing on a bathroom scale, not liking the result, then balancing towards one corner to knock a few pounds off the dial, you are stuck in a previous century. Modern bathroom scales have not only moved from the mechanical to the electronic, they also gather body composition measurements and pack significant computing power.

Yet they’re a piece of domestic electronics that sits in our bathroom and rarely comes under scrutiny. How do they work, and what do they contain? The team at November Five tore down a top-of-the-range Withings Body Cardio scale to find out.

After a struggle with double-sided sticky pads, the scale revealed its secrets: a simple yet accomplished device. There are four load cells and the electrodes for the body measurement, and the PCB. On the board is a 120 MHz ARM Cortex M4 microcontroller, a wireless chipset, battery management, and the analogue measurement chipset. This last is particularly interesting, a Texas Instruments AFE4300, a specialised analogue front-end for this application. It’s a chip most of us will never use, but as always an obscure datasheet is worth a read.

The rather pretty fractal antenna.
The rather pretty fractal antenna.

Finally, the wireless antenna is not the normal simple angular trace you’ll be used to from the likes of ESP8266 boards, but an organic squiggle. It’s a fractal antenna, presumably designed to present a carefully calculated bandwidth to the chipset. A nice touch, though one the consumer will never be aware of.

We’ve shown you quite a few bathroom scales over the years. There was this wisecracking Raspberry Pi scale, this scale reverse engineered to gather weight data, and this one laid bare for use as a controller.

Black Magic Probe: The Best ARM JTAG Debugger?

We don’t always JTAG, but when we do, we use a Black Magic Probe. It’s a completely open ARM-chip debugging powerhouse. If you program the small ARM chips and you don’t have a BMP, you need a BMP. Right now, one of the main producers of these little gems is running a Kickstarter where you can get your hands on a nicely made one and/or a 1Bitsy STM32F415-based development board.

Why is the BMP so great? First off, it’s got a JTAG and a UART serial port in one device. You can flash the target, run your code, use the serial port for printf debugging like you know you want to, and then fall back on full-fledged JTAG-plus-GDB when you need to, all in one dongle. It’s just very convenient.

But the BMP’s killer feature is that it runs a GDB server on the probe. It opens up a virtual serial port that you can connect to directly through GDB on your host computer. No need to hassle around with OpenOCD configurations, or to open up a second window to run [texane]’s marvelous st-util. Just run GDB, target extended-remote /dev/ttyACM0 and you’re debugging. As the links above demonstrate, there are many hardware/software pairs that’ll get you up and debugging. But by combining the debug server with the JTAG hardware, the BMP is by far the slickest.

Full disclosure: we use a BMP that we built ourselves, which is to say that we compiled and flashed the firmware into a $4 STLink clone programmer that we had on hand. Breaking the required signals out required a bit of ugly, fiddly soldering, but we enjoy that sort of thing. If you don’t, the early-bird Kickstarter (with cables) looks like a good deal to us.