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.

STM32 JavaScript Peeks And Pokes

A lot of people find scripting languages very productive and we’ve seen quite a few chips now supporting what you normally think of as a scripting language. These high-level abstraction languages are great, until they aren’t. When you need to go under the abstraction and do something complex or you need every cycle of performance, you might have to break your normal tools.

The Espruino is an ARM processor (an STM32) that has JavaScript on board. However, [Gordon Williams] shows how you can use peeks and pokes to access the hardware directly when the need arises. The names derive from another popular abstraction’s escape hatch. The old BASIC languages allowed direct memory access using keywords peek and poke. [Gordon] shows some examples of accessing the timer for PWM, and even looks at the STM32 reference manual to show how he knew where to peek and poke to begin with.

Continue reading “STM32 JavaScript Peeks And Pokes”

Embed With Elliot: Interrupts, The Bad

We love interrupts in our microcontroller projects. If you aren’t already convinced, go read the first installment in this series where we covered the best aspects of interrupts.

But everything is not sunshine and daffodils. Interrupts take place outside of the normal program flow, and indeed preempt it. The microcontroller will put down whatever code it’s running and go off to run your ISR every time the triggering event happens. That power is great when you need it, but recall with Spider-Man’s mantra: With great power comes great responsibility. It’s your responsibility to design for the implicit high priority of ISRs, and to make sure that your main code can still get its work done in between interrupt calls.

Put another way, adding interrupts in your microcontroller code introduces issues of scheduling and prioritization that you didn’t have to deal with before. Let’s have a look at that aspect now, and we’ll put off the truly gruesome side-effects of using interrupts until next time.

Continue reading “Embed With Elliot: Interrupts, The Bad”

PIC24 video game

A Single-Chip Video Game Console

Ready to feel inadequate with your programming skills? You’ve been warned. Take a look at [Voja’s] single chip video game console using the PIC24. It produces the VGA signal, 5-channel sound, and is presented in a gamepad form-factor with directional pad and two buttons.

He’s been working with PIC24 for a while now generating VGA signals, and he decided it might be fun to create a 2D video game… so he decided to see if he could program a replica of the old Spectrum game Jumping Jack (play it online here).

It uses a PIC24EP512GP202 microcontroller, complete with 512K flash memory, 48k data, and a whopping 28-pins. The game, which is extremely well documented, is laid out over on his projects page. It makes our heads spin just looking at it! This is a great project to compare with the ArduinoCade from last week. Both do an amazing job of pumping out audio and video while leaving enough room for the game to actually run.

Anyway, enough talking about it — just take a look at the following demo!

Continue reading “A Single-Chip Video Game Console”

Embed With Elliot: Interrupts, The Good…

What’s the biggest difference between writing code for your big computer and a microcontroller? OK, the memory and limited resources, sure. But we were thinking more about the need to directly interface with hardware. And for that purpose, one of the most useful, and naturally also dangerous, tools in your embedded toolchest is the interrupt.

Interrupts do exactly what it sounds like they do — they interrupt the normal flow of your program’s operation when something happens — and run another chunk of code (an interrupt service routine, or ISR) instead. When the ISR is done, the microcontroller picks up exactly where it left off in your main flow.

Say you’ve tied your microcontroller to an accelerometer, and that accelerometer has a “data ready” pin that is set high when it has a new sample ready to read. You can wire that pin to an input on the microcontroller that’s interrupt-capable, write an ISR to handle the accelerometer data, and configure the microcontroller’s interrupt system to run that code when the accelerometer has new data ready. And from then on everything accelerometer-related happens automagically! (In theory.)

This is the first part of a three-part series: Interrupts, the Good, the Bad, and the Ugly. In this column, we’ll focus on how interrupts work and how to get the most out of them: The Good. The second column will deal with the hazards of heavyweight interrupt routines, priority mismatches, and main loop starvation: the Bad side of interrupts. Finally, we’ll cover some of the downright tricky bugs that can crop up when using interrupts, mainly due to a failure of atomicity, that can result in logical failures and corrupted data; that’s certainly Ugly.

Continue reading “Embed With Elliot: Interrupts, The Good…”

There’s A Bug In My Robot

What has six legs, 25 LEDs, a Microchip CPU, can be sewn into clothing, and even plugged into a Raspberry Pi? The answer, it turns out, is the CodeBug–a low cost computer board aimed at the educational market. These board were crowdfunded and are now available for general purchase. [Mike Redrobe] took one of the boards, connected a few servos and used the CodeBug’s Scratch-like language to create a small robot.

You can see the robot in the video below. Programs download via USB (the board looks like a USB drive). You can also send commands over USB to operate in tether mode, or you can directly plug the board into a Raspberry Pi.

Continue reading “There’s A Bug In My Robot”