An Open Source Smart Watch You’d Actually Wear

We’ve seen a number of open source smart watches over the years, and while they’ve certainly been impressive from a technical standpoint, they often leave something to be desired in terms of fit and finish. Exposed PCBs and monochromatic OLED displays might be fine for a trip to the hackerspace, but it wouldn’t be our first choice for date night attire.

Enter the Open-SmartWatch from [pauls_3d_things]. This ESP32 powered watch packs a gorgeous circular 240×240 TFT display, DS323M RTC, BMA400 three-axis accelerometer, and a 450 mAh battery inside of a 3D printed enclosure that can be produced on your average desktop machine. WiFi and Bluetooth connectivity are a given with the ESP32, but there’s also an enhanced edition of the PCB that adds another 4 MB of RAM, a micro SD slot, and a Quectel L96 GPS receiver.

The GPS edition of the PCB

As it’s an open source project you’re free to download the PCB design files and get the board produced on your own, but [pauls_3d_things] has actually partnered with LILYGO to do a run of the Open-SmartWatch electronics which you can pick up on AliExpress right now for just $24 USD. You’ll still need to order the battery separately and 3D print your own case, but it still seems like a pretty sweet deal to us.

On the software front, things are pretty basic right now. The watch can update the time from NTP using a pre-configured WiFi network, and there’s a Bluetooth media controller and stopwatch included. Of course, as more people get the hardware in their hands (or on their wrists, as the case may be), we’ll likely start seeing more capabilities added to the core OS.

While getting our own code running on commercially produced smartwatches holds a lot of promise, the Open-SmartWatch is arguably the best of both worlds. The partnership with LILYGO brings professional fabrication to the open hardware project, and the GPLv3 licensed firmware is ripe for hacking. We’re very excited to see where the community takes this project, and fully expect to start seeing these watches out in the wild once we can have proper cons again.

Continue reading “An Open Source Smart Watch You’d Actually Wear”

18650 Brings ESP8266 WiFi Repeater Along For The Ride

We’re truly fortunate to have so many incredible open source projects floating around on the Internet, since there’s almost always some prior art you can lean on. By combining bits and pieces from different projects, you can often save yourself a huge amount of time and effort. It’s just a matter of figuring out how all the pieces fit together, like in this clever mash-up by [bethiboothi] that takes advantage of the fact that the popular TP4056 lithium-ion battery charger module happens to be almost the exact same size of the ESP-01.

By taking a 3D printed design intended to attach a TP4056 module to the end of an 18650 cell and combining it with an ESP8266 firmware that turns the powerful microcontroller into a WiFi repeater, [bethiboothi] ended up with a portable network node that reportedly lasts up to three days on a charge. The observed range was good even with the built-in PCB antenna, but hacking on an external can get you out a little farther if you need it.

While it doesn’t appear that [bethiboothi] is using it currently, the esp_wifi_repeater firmware does have an automatic mesh mode which seems like it would be a fantastic fit for this design. Putting together an impromptu mesh WiFi network with a bunch of cheap battery powered nodes would be an excellent way to get network connectivity at an outdoor hacker camp, assuming the ESP’s CPU can keep up with the demand.

Totally Useless Coffee Dispenser Is Anything But

Good coffee is nice to have, sure, but frankly, caffeine is caffeine and we’ll take it any way we can get it. That includes freeze-dried, if that’s all you’ve got. We won’t judge anyone for their taste in caffeinated beverages, and to call this coffee dispenser ‘totally useless’ is just patently untrue. It clearly has a use, and even if you don’t like freeze-dried coffee, you could sacrifice one jar worth of Nescafe and fill it with Skittles or anything else that will fit in the little collector basket.

In this machine, the cup is the trigger — the 3D-printed plate underneath activates a micro switch embedded in the scrap wood base, and this triggers a micro:bit around back to actuate the stepper motor that twirls the collector basket around. Although [smogdog] has provided all the files, you’d have to come up with your own connector to suspend the thing over the cup and carve your own base.

We love it when we can see what a machine is doing, so not only is it useful, it’s beautiful. And it worked, at least for a little while. For some reason, it keeps burning out stepper motors. Check it out in proof-of-concept action after the break.

We’ve seen the Micro:bit do a lot, and this pinball machine is among the most fun.

Continue reading “Totally Useless Coffee Dispenser Is Anything But”

Honey, I Shrunk The Arduino Core

High-level programming languages do a great job of making a programmer’s job easier, but these languages often leave a lot of efficiency on the table as a compromise. While a common thought is to move into a lower-level language like assembly to improve on a program’s speed or memory use, there’s often a lot that can be done at the high level before resorting to such extremes. This, of course, is true of the Arduino platform as well, as [NerdRalph] demonstrates by shrinking the size of the Arduino core itself.

[NerdRalph] had noticed that the “blink” example program actually includes over 1 kB of extraneous code, and that more complicated programs include even more cruft. To combat this issue, he created ArduinoShrink, which seeks to make included libraries more modular and self-contained. It modifies some of the default registers and counters to use less memory and improve speed, and is also designed to improve interrupt latency as well by changing when the Arduino would otherwise disable interrupts.

While there are some limits to ArduinoShrink, such as needing to know specifics about the pins at compile time, for anyone writing programs for Arduinos that are memory-intensive or need improvements in timing, this could be a powerful new tool. If you’d prefer to go in the opposite direction to avoid ever having to learn C or assembly, though, you can always stick with running Python on your embedded devices.

One Bit CPU Runs At A Blistering 60Hz

If you really think hard about it, a CPU is just a very general-purpose state machine. Well, most CPUs are, anyway. The MC14500 is a one-bit computer that has only 16 instructions and was meant to serve in simple tasks where a big CPU wouldn’t work for space, power, or budget reasons. However, [Laughton] took the idea one step further and created a single-bit computer with no real instructions to control a printing press. The finished machine uses a clever format in an EEPROM to drive an endless program.

Honestly, we’d say this is more of a state machine, but we like the idea of it being a minimal CPU which is also true. The design uses the EEPROM in an odd way. Each CPU address really addresses a block of four bytes. The byte that gets processed depends on the current phase and the status of the one-bit flag register.

Continue reading “One Bit CPU Runs At A Blistering 60Hz”

Direct Memory Access: Data Transfer Without Micro-Management

In the most simple computer system architecture, all control lies with the CPU (Central Processing Unit). This means not only the execution of commands that affect the CPU’s internal register or cache state, but also the transferring of any bytes from memory to to devices, such as storage and interfaces like serial, USB or Ethernet ports. This approach is called ‘Programmed Input/Output’, or PIO, and was used extensively into the early 1990s for for example PATA storage devices, including ATA-1, ATA-2 and CompactFlash.

Obviously, if the CPU has to handle each memory transfer, this begins to impact system performance significantly. For each memory transfer request, the CPU has to interrupt other work it was doing, set up the transfer and execute it, and restore its previous state before it can continue. As storage and external interfaces began to get faster and faster, this became less acceptable. Instead of PIO taking up a few percent of the CPU’s cycles, a big transfer could take up most cycles, making the system grind to a halt until the transfer completed.

DMA (Direct Memory Access) frees the CPU from these menial tasks. With DMA, peripheral devices do not have to ask the CPU to fetch some data for them, but can do it themselves. Unfortunately, this means multiple systems vying for the same memory pool’s content, which can cause problems. So let’s look at how DMA works, with an eye to figuring out how it can work for us.
Continue reading “Direct Memory Access: Data Transfer Without Micro-Management”

Real Time Object Detection For $59

There was a time when making a machine to identify objects in a camera was difficult, even without trying to do it in real time. But now, you can do it with a Jetson Nano board for under $60. How well does it work? Watch [Murtaza’s] video below and see what you think.

The first few minutes of the video piqued our interest, and good thing, too, because the 50 lines of code get a 50-plus minute video! It is worth watching, though, because there’s a lot of good information about how to apply this technique in your own projects.

Continue reading “Real Time Object Detection For $59”