ARM Programming With Bare C

We confess. When starting a microcontroller project, we often start with the last one we did for that environment, copy it, and just make changes. And the first one? It — ahem — might have been found on the Internet. There’s a lot more than just your code that goes into this. If you want  to do (and understand) absolutely everything yourself on an ARM development project, you could use an all-in-one walkthrough. It just so happens [Jacob Mossberg] has a from scratch guide of what you need to do to get your C code running on ARM.

Starting with an ARM Cortex M3, he writes a simple C program and gets the assembly language equivalent. What follows is a detailed analysis of the machine code, exploring what the compiler assumed would be set up. This leads to understanding of what the start up code and linker script needs to look like.

It is a great approach and reminded us of the old saying about “teach someone how to fish.” He even devotes a little time to talking about getting debugging working with OCD. Of course, the exact details are specific to the chip he’s using, but most of it would apply to any ARM chip. Even if you don’t use ARM, though, the thought process and methodology is itself quite interesting.

This post would be just the thing if you are using Blue Pills and ready to move away from the Arduino ecosystem. Of course, if you want to veer away from the Arduino system, but don’t want to go all the way to bare metal, there’s always mBed.

An LED You Can Blow Out, With No Added Sensor

We’d seen it done with buttons, switches, gestures, capacitive touch, and IR remote, but never like this. [electron_plumber] made an LED that can be blown out like a candle, and amazingly it requires no added sensors. The project uses an Arduino to demonstrate turning a tiny LED on and off in response to being blown on, and the only components are the LED and a resistor.

[electron_plumber] used an 0402 LED and thin wires to maximize the temperature responses.
How is this done? [electron_plumber] uses an interesting property of diodes (which are the “D” in LED) to use the LED itself as a temperature sensor. A diode’s voltage drop depends on two things: the current that is being driven through the diode, and the temperature. If the current is held constant, then the forward voltage drop changes reliably in response to temperature. Turning the LED on warms it up and blowing on it cools it off, causing measurable changes in the voltage drop across the device. The change isn’t much — only a handful of millivolts — but the effect is consistent and can be measured. This is a principle [Elliot Williams] recently covered in depth: using diodes as temperature sensors.

It’s a clever demo with a two important details to make it work. The first is the LED itself; [electron_plumber] uses a tiny 0402 LED that is mounted on two wires in order to maximize the temperature change caused by blowing on it. The second is the method for detecting changes of only a few millivolts more reliably. By oversampling the Arduino’s ADC, an effectively higher resolution is obtained without adding any hardware or altering the voltage reference. Instead of reading the ADC once, the code reads the ADC 256 times and sums the readings. By working with the larger number, cumulative changes that would not register reliably on a single read can be captured and acted upon. More details are available from [electron_plumber]’s GitHub repository for LEDs as Sensors.

Embedded below is a video that is as wonderful as it is brief. It demonstrates the project in action, takes a “show, don’t tell” approach, and is no longer than it needs to be.

Continue reading “An LED You Can Blow Out, With No Added Sensor”

Cheap FPGA Board Roundup

There’s never been a better time to get into using FPGAs. Nearly all vendors have some level of free software and while boards haven’t gotten as cheap as ones with microcontrollers, the prices are way down. [Joel Williams] was frustrated when his board of choice became unavailable, so he decided to compile data on as many cheap boards as he could.

[Joel] covers the major vendors like Intel and Altera. But he also includes information on Actel, Cypress, and Lattice. While the list probably isn’t comprehensive, it is a lot of information about many popular boards. The notes are helpful and point out oddities about the boards in many cases.

Continue reading “Cheap FPGA Board Roundup”

What Will You Do If WWVB Goes Silent?

Buried on page 25 of the 2019 budget proposal for the National Institute of Standards and Technology (NIST), under the heading “Fundamental Measurement, Quantum Science, and Measurement Dissemination”, there’s a short entry that has caused plenty of debate and even a fair deal of anger among those in the amateur radio scene:

NIST will discontinue the dissemination of the U.S. time and frequency via the NIST radio stations in Hawaii and Ft. Collins, CO. These radio stations transmit signals that are used to synchronize consumer electronic products like wall clocks, clock radios, and wristwatches, and may be used in other applications like appliances, cameras, and irrigation controllers.

The NIST stations in Hawaii and Colorado are the home of WWV, WWVH, and WWVB. The oldest of these stations, WWV, has been broadcasting in some form or another since 1920; making it the longest continually operating radio station in the United States. Yet in order to save approximately $6.3 million, these time and frequency standard stations are potentially on the chopping block.

What does that mean for those who don’t live and breathe radio? The loss of WWV and WWVH is probably a non-event for anyone outside of the amateur radio world. In fact, most people probably don’t know they even exist. Today they’re primarily used as frequency standards for calibration purposes, but in recent years have been largely supplanted by low-cost oscillators.

But WWVB on the other hand is used by millions of Americans every day. By NIST’s own estimates, over 50 million timepieces of some form or another automatically synchronize their time using the digital signal that’s been broadcast since 1963. Therein lies the debate: many simply don’t believe that NIST is going to shut down a service that’s still actively being used by so many average Americans.

The problem lies with the ambiguity of the statement. That the older and largely obsolete stations will be shuttered is really no surprise, but because the NIST budget doesn’t specifically state whether or not the more modern WWVB is also included, there’s room for interpretation. Especially since WWVB and WWV are both broadcast from Ft. Collins, Colorado.

What say the good readers of Hackaday? Do you think NIST is going to take down the relatively popular WWVB? Are you still using devices that sync to WWVB, or have they all moved over to pulling their time down over the Internet? If WWVB does go off the air, are you prepared to setup your own pirate time station?

[Thanks to AG6QR for the tip.]

8085-based single board computer

OMEN Alpha: A DIY 8085-Based Computer

[Martin Malý] has put together a sweet little 8085-based single board computer called OMEN. He needed a simple one for educational purposes, and judging by the schematic we think he’s succeeded.

Now in its fourth iteration, it has a 32K EEPROM, 32K of memory, one serial and three parallel ports. In the ROM he’s put Tiny BASIC and Dave Dunfield’s MON85 Serial Monitor with Roman Borik’s improvements. His early demos include the obligatory blinking LED, playing 8-bit music to a speaker, and also a 7-segment LED display with a hexadecimal keyboard. There is also a system connector which allows you to connect a keyboard, a display, and other peripherals. Of course, you can connect serially at up to 115200 baud, making it very easy to compile some assembly on a PC and use the monitor to paste the hex into the board’s memory and run it. Or you can just jump into the Tiny BASIC interpreter and have some nostalgic fun. He demos all this in the video below.

He’s given enough detail for you to make your own and he also has the boards available in kit form on Tindie for a very reasonable price. With some minimal soldering skills, you can be back in the ’80s in no time.

Continue reading “OMEN Alpha: A DIY 8085-Based Computer”

Simple ESP8266 Weather Station Using Blynk

Today’s hacker finds themself in a very interesting moment in time. The availability of powerful microcontrollers and standardized sensor modules is such that assembling the hardware for something like an Internet-connected environmental monitor is about as complex as building with LEGO. Hardware has become elementary in many cases, leaving software as the weak link. It’s easy to build the sensor node to collect the data, but how do you display it in a useful and appealing way?

This simple indoor temperature and humidity sensor put together by [Shyam Ravi] shows one possible solution to the problem using Blynk. In the video after the break, he first walks you through wiring the demonstration hardware, and then moves on to creating the Blynk interface. While it might not be the ideal solution for all applications, it does show you how quickly you can go from a handful of components on the bench to displaying useful data.

In addition to the NodeMCU board, [Shyam] adds a DHT11 sensor and SSD1306 OLED display. He’s provided a wiring diagram in the repository along with the Arduino code for the ESP8266, but the hardware side of this demonstration really isn’t that important. You could omit the OLED or switch over to something like a BME280 sensor if you wanted to. The real trick is in the software.

For readers who haven’t played with it before, Blynk is a service that allows you to create GUIs to interact with microcontrollers from anywhere in the world. The code provided by [Shyam] reads the humidity and temperature data from the DHT11 sensor, and “writes” it to the Blynk service. From within the application, you can then visualize that data in a number of ways using the simple drag-and-drop interface.

We’ve seen Blynk and ESP8266 used to control everything from mood lighting to clearance-rack robotic toys. It’s a powerful combination, and something to keep in mind next time you need to knock something together in short order.

Continue reading “Simple ESP8266 Weather Station Using Blynk”

Rewinding Live Radio

Even though it’s now a forgotten afterthought in the history of broadcasting technology, we often forget how innovative the TiVo was. All this set-top box did was connect a hard drive to a cable box, but the power was incredible: you could pause live TV. You could record shows. You could rewind TV. It was an incredible capability, that no one had ever seen before. Of course, between Amazon and Netflix and YouTube, no one watches TV anymore, and all those platforms have a pause button, but the TiVO was awesome.

There is one bit of broadcasting that still exists. Radio. For his Hackaday Prize entry, [MagicWolfi] is bringing the set-top box to radio. He’s invented the Radio Rewind Button, and it does exactly what you would expect: it rewinds live radio a few minutes.

To have a pause or rewind button on a TV or radio, the only real requirement is a bunch of memory. The TiVO did this with a hard drive, and [MagicWolfi] is doing this with 256 MB of SDRAM. That means he needs to access a ton of RAM, and for that he’s turning to the Digilent ARTY S7 board. Yes, it’s an FPGA, but actually a fairly simple solution to the problem.

The rest of the circuit is an FM receiver chip and an I2S audio codec on an Arduino-shaped daughterboard. The main controller for this project is a big red button that will simply rewind the audio stream a few minutes. There’s no telling exactly how long [MagicWolfi] will be able to rewind the audio stream, but 256 MB is a ton in the audio world.