Bluetooth Thermometer Minds Your Meats

The summer may have come to a close here in the USA, but any time of the year is a good time for grilling. In the colder weather, it’s a drag to have to stay near the hot grill to keep an eye on your burgers and franks. [Eric Ely] thought it would be smarter to have a meat thermometer that sent his phone the current reading via Bluetooth.

Instead of starting from scratch, [Eric] took an off the shelf electronic thermometer and removed its temperature probe (which was a thermistor). The hardware used an off the shelf Bluetooth board with a companion battery board and prototype board. If you can’t bear to cut up a good thermometer, you can get replacement probes that ought to work just as well.

In addition to the boards and the scavenged thermistor, [Eric] used a couple of resistors. One resistor is in parallel with the thermistor to improve the linearity of the device’s response curve. The second resistor forms a voltage divider that the Bluetooth board reads.

The software (using Node.js and C) is available on Github. The C program reads the temperature and pushes it out using JSON. Node.js provides a server that [Eric] can hit with his phone’s Web browser.

Sure, you can buy wireless thermometers, but what self-respecting hacker wants to carry around a store-bought box just to display meat temperature? Viewing it on your phone has much more street cred.  Of course, a real hacker isn’t going to cook on a conventional grill, either.

Continue reading “Bluetooth Thermometer Minds Your Meats”

Fail of the Week: Marginally Documented Pad Shorts to Maskless PCB

[Erich Styger] was bit by a nasty gotcha when soldering a QFN surface mount chip. The problem rears its ugly head when combining a chip possessing a padless conductor and a PCB without a solder mask. As you can see in the image above, there is a conductor exiting the side of the plastic QFN, but there is no pad associated with it. For this reason, you won’t see the conductor documented in the datasheet as a pin. It is documented in the mechanical drawing of the package, without any explicit reference to its existence. This is the Jason Bourne of package quirks.

The PCB layout just happens to have a trace exiting right under this conductor. The two aren’t touching, but without solder mask, a bit of melted metal was able to mind the gap and connect the two conductors. [Eric] notes that although the non-pad isn’t documented, it’s easy to prove that it is connected to ground and was effectively pulling down the signal on that trace.

In a recent article on Hackaday I talked about “dangling pointers” and the challenge when interrupts expose the bug. [Erich’s] covered a ton of posts about embedded software. I was doing some poking around and was delighted to find that he covered the same concept and a solution for it using a program called cppcheck.

Code Craft: Subtle Interrupt Problems Stack Up

[Elliot Williams’] column, Embed with Elliot, just did a great series on interrupts. It came in three parts, illustrating the Good, the Bad, and the Ugly of using interrupts on embedded systems. More than a few memories floated by while reading it. Some pretty painful because debugging interrupt problems can be a nightmare.

One of the things I’ve learned to watch out for over the years is the subtlety of stack based languages, like C/C++, which can ensnare the unwary. This problem has to do with the corruption of arrays of values on a stack during interrupt handling. The fix for this problem points up another one often used by black hats to gain access to systems.

Continue reading “Code Craft: Subtle Interrupt Problems Stack Up”

New Part Day: The BeagleBoard Gets Bigger

Officially, the latest hardware revision we’ve seen from BeagleBoard is the BeagleBone Black, a small board that’s perfect for when you want to interface hardware to a Linux software environment. This last summer, the BeagleBone Green was introduced, and while it’s a newer hardware release, it’s really just a cost-reduced version of the BB Black. Over the entire BeagleBoard family, it’s time for an upgrade.

It’s been talked about for more than a year now, but the latest and greatest from the BeagleBoard crew is out. It’s called the BeagleBoard X15, and not only is it an extremely powerful Linux board, it also has more ports than you would ever need.

The new BeagleBoard features a dual-core ARM Cortex A15 running at 1.5GHz. There is 2GB of DDR3L RAM on board, and 4GB of EMMC Flash. Outputs include three USB 3.0 hosts, two Gigabit Ethernet controllers, one eSATA connector, LCD output, two PCIe connectors, and an HDMI connector capable of outputting 1920×1080 at 60 FPS. The entire board is open hardware, with documentation for nearly every device on the board available now. The one exception is the PowerVR SGX544 GPU which has a closed driver, but the FSF has proposed a project to create an open driver for this graphics engine so that could change in the future.

The expected price of the BeagleBoard X15 varies from source to source, but all the numbers fall somewhere in the range of $200 to $240 USD, with more recent estimates falling toward the high end. This board is not meant to be a replacement for the much more popular BeagleBone. While the development and relationship between the ~Board and ~Bone are very much related, the BeagleBone has always and will always be a barebone Linux board, albeit with a few interesting features. The BeagleBoard, on the other hand, includes the kitchen sink. While the BeagleBoard X15 hardware is complete, so far there are less than one hundred boards on the planet. These are going directly to the people responsible for making everything work, afterwards orders from Digikey and Mouser will be filled. General availability should be around November, and certainly by Christmas.

While it’s pricier than the BeagleBone, the Raspberry Pi, or dozens of other ARM Linux boards out there, The BeagleBone has a lot of horsepower and plenty of I/Os. It’s an impressive piece of hardware that out-competes just about everything else available. We can’t wait to see it in the wild, but more importantly we can’t wait to see what people can do with it.

Title image credit: Vladimir Pantelic

Vintage BBC Computer gets FPGA Buddies

The BBC Microcomputer System (or BBC Micro) was an innovative machine back in the early 1980’s. One feature that impressed reviewers was a “tube” interface that allowed the machine to become an I/O processor for an additional CPU. When the onboard 6502 became too slow, it could become a slave to a Z-80 or even an ARM processor. The bus was actually useful for any high-speed device, but its purpose was to add new processors, a feature Byte magazine called “innovative.”

[Hoglet67] has released a very interesting set of FPGA designs that allows a small board sporting a Xilinx Spartan 3 to add a 6502, a Z80, a 6809, or a PDP/11 to a BBC Micro via the tube interface. There’s something satisfying about a classic computer acting as an I/O slave to a fairly modern FPGA that implements an even older PDP/11.

Continue reading “Vintage BBC Computer gets FPGA Buddies”

New Part Day: Tiny, Tiny Bluetooth Chips

The future of tiny electronics is wearables, it seems, with companies coming out with tiny devices that are able to check your pulse, blood pressure, and temperature while relaying this data back to your phone over a Bluetooth connection. Intel has the Curie module, a small System on Chip (SoC) meant for wearables, and the STM32 inside the Fitbit is one of the smallest ARM microcontrollers you’ll ever find. Now there’s a new part available that’s smaller than anything else and has an integrated Bluetooth radio; just what you need when you need an Internet of Motes of Dust.

The Atmel BTLC1000 is a tiny SoC designed for wearables. The internals aren’t exceptional in and of themselves – it’s an ARM Cortex M0 running at 26 MHz. There’s a Bluetooth 4.1 radio inside this chip, and enough I/O, RAM, and ROM to connect to a few sensors and do a few interesting things. What makes this chip so exceptional is its size – a mere 2.262mm by 2.142mm. It’s a chip that can fit along the thickness of some PCBs.

To provide some perspective: the smallest ATtiny, the ‘tiny4/5/9/10 in an SOT23-6 package, is 2.90mm long. The smallest PICs are similarly sized, and both have a tiny amount of RAM and Flash space. The BTLC1000 is surprisingly capable, with 128kB each of RAM and ROM.

The future of wearable devices is smaller, faster and more capable devices, and with a tiny chip that can fit on the head of a pin, this is certainly an interesting chip for applications where performance can be traded for package size. If you’re ready to dive in with this chip the preliminary datasheets are now available.

JavaScript for the ESP8266

The ESP8266 is a popular WiFi chip that provides a relatively transparent connection between the TX and RX pins of a microcontroller and a WiFi network. It was released a little more than a year ago, and since then developers and hardware hackers have turned the ESP into much more than a serial to WiFi bridge. It’s a microcontroller platform unto itself, with a real development environment and support for the scripting language Lua.

Lua is okay, but a real win would be a JavaScript interpreter for this tiny WiFi platform. It’s taken months of work, but finally there’s an open source version of JavaScript available for the ESP8266.

This build is based on the Espruino firmware, a JavaScript interpreter for microcontrollers. This interpreter runs on dozens of different microcontrollers, but being the latest, greatest, and most popular new microcontroller platform means a new solution for the ESP is very, very exciting.

Right now the JS interpreter for the ESP is in testing, with expectations high that everything will be brought over into the main branch of the Espruino firmware. There are samples of JavaScript running on the ESP available, and binaries that can be flashed onto an ESP are available here.

Thanks [Richard] for sending this one in. He’s set up an Espruino board on the ESP8266 community forum, that should eventually be filled with new examples of JavaScript running on an ESP.