The Arduboy, Ported To Desktop And Back Again

A neat little hacker project that’s flying off the workbenches recently is the Arduboy. This tiny game console looks like a miniaturized version of the O.G. Game Boy, but it is explicitly designed to be hacked. It’s basically an Arduino board with a display and a few buttons, anyway.

[rv6502] got their hands on an Arduboy and realized that while there were some 3D games, there was nothing that had filled polygons, or really anything resembling a modern 3D engine. This had to be rectified, and the result is pretty close to Star Fox on a microcontroller.

This project began with a simple test on the Arduboy to see if it would be even possible to render 3D objects at any reasonable speed. This test was just a rotating cube, and everything looked good. Then began a long process of figuring out how fast the engine could go, what kind of display would suit the OLED best, and how to interact in a 3D world with limited controls.

Considering this is a fairly significant engineering project, the fastest way to produce code isn’t to debug code on a microcontroller. This project demanded a native PC port, so all the testing could happen on the PC without having to program the Flash every time. That allowed [rv] to throw out the Arduino IDE and USB library; if you’re writing everything on a PC and only uploading a hex file to a microcontroller at the end, you simply don’t need it.

One of the significant advances of the graphics capability of the Arduboy comes from exploring the addressing modes of the OLED. By default, the display is in a ‘horizontal mode’ which works for 2D blitting, but not for rasterizing polygons. The ‘vertical addressing mode’, on the other hand, allows for a block of memory, 8 x 128 bytes, that maps directly to the display. Shove those bytes over, and there’s no math necessary to display an image.

This is, simply, one of the best software development builds we’ve seen. It’s full of clever tricks (like simply not doing math if you’ll never need the result) and stuffing animations into far fewer bytes than you would expect. You can check out the demo video below.

Continue reading “The Arduboy, Ported To Desktop And Back Again”

Lessons Learned From An Art Installation Build

Art installations are an interesting business, which more and more often tend to include electronic or mechanical aspects to their creation. Compared to more mainstream engineering, things in this space are often done quite a bit differently. [Jan Enning-Kleinejan] worked on an installation called Prendre la parole, and shared the lessons learned from the experience.

The installation consisted of a series of individual statues, each with an LED light fitted. Additionally, each statue was fitted with a module that was to play a sound when it detected visitors in proximity. Initial designs used mains power, however for this particular install battery power would be required.

Arduinos, USB power banks and ultrasonic rangefinders were all thrown into the mix to get the job done. DFplayer modules were used to run sound, and Grove System parts were used to enable everything to be hooked up quickly and easily. While this would be a strange choice for a production design, it is common for art projects to lean heavily on rapid prototyping tools. They enable inexperienced users to quickly and effectively whip up a project that works well and at low cost.

[Jan] does a great job of explaining some of the pitfalls faced in the project, as well as reporting that the installation functioned near-flawlessly for 6 months, running 8 hours a day. We love to see a good art piece around these parts, and we’ve likely got something to your tastes – whether you’re into harmonicas, fungus, or Markov chains.

Unique Clock Keeps Time The Fibonacci Way

You say your binary clock no longer has the obfuscation level needed to earn the proper nerd street cred? Feel like you need something a little more mathematically challenging to make sure only the cool kids can tell the time? Then this Fibonacci clock might be just the thing to build.

Granted, [TecnoProfesor]’s clock is a somewhat simplified version of an earlier version that was nigh impossible to decode. But with its color coding and [Piet Mondrian]-esque grids, it’s still satisfyingly difficult to get the time from a quick glance. The area of the blocks represents the Fibonacci sequence 1, 1, 2, 3, 5, and adding up which blocks are illuminated by the RGB LEDs behind the frosted front panel. That lets you tally up to 12 intervals; for the minutes and seconds, there are indicators for the powers multiples of 12 up to 48. Put it all together and you’ve got a unique and attractive graphical time display that’s sure to start interesting conversations when the mathematically disinclined try to use it. Check out the video below as the clock goes from 12:28:01 to 12:28:46. We think.

If this doesn’t scratch your itch for obfuscated clocks, we’ve got plenty of them. From random four-letter words to an analog digital clock to an epic epoch clock, we’ve got them all.

Continue reading “Unique Clock Keeps Time The Fibonacci Way”

Safely Measuring Single And Three-Phase Power

There are many reasons why one would want to measure voltage and current in a project, some applications requiring one to measure mains and even three-phase voltage to analyze the characteristics of a device under test, or in a production environment. This led [Michael Klopfer] at the University of California, Irvine along with a group of students to develop a fully isolated board to analyze both single and three-phase mains systems.

Each of these boards consists out of two sections: one is the high-voltage side, with the single phase board using the Analog Devices ADE7953 and the three-phase board the ADE9708. The other side is the low-voltage, isolated side to which the microcontroller or equivalent connects to using either SPI or I2C. Each board type comes in either SPI or I2C flavor.

Each board can be used to measure line voltage and current, and the Analog Devices IC calculates active, reactive, and apparent energy, as well as instantaneous RMS voltage and current. All of this data can then be read out using the provided software for the Arduino platform.

The goal of this project is to make it easy for anyone to reproduce their efforts, with board schematics (in Eagle format) and the aforementioned software libraries provided. Here it is somewhat unfortunate that the documentation can be somewhat incomplete, with basic information such as input and measurement ranges missing. Hopefully this will improve over the coming months as it does seem like a genuinely useful project for the community.

We’ve covered the work coming out of [Michael]’s lab before, including this great rundown on Lattice FPGAs. They’re doing machine vision, work on RISC-Vchips, and more. A stroll through the lab’s GitHub is worth your time.

 

 

 

 

Blisteringly Fast Machine Learning On An Arduino Uno

Even though machine learning AKA ‘deep learning’ / ‘artificial intelligence’ has been around for several decades now, it’s only recently that computing power has become fast enough to do anything useful with the science.

However, to fully understand how a neural network (NN) works, [Dimitris Tassopoulos] has stripped the concept down to pretty much the simplest example possible – a 3 input, 1 output network – and run inference on a number of MCUs, including the humble Arduino Uno. Miraculously, the Uno processed the network in an impressively fast prediction time of 114.4 μsec!

Whilst we did not test the code on an MCU, we just happened to have Jupyter Notebook installed so ran the same code on a Raspberry Pi directly from [Dimitris’s] bitbucket repo.

He explains in the project pages that now that the hype about AI has died down a bit that it’s the right time for engineers to get into the nitty-gritty of the theory and start using some of the ‘tools’ such as Keras, which have now matured into something fairly useful.

In part 2 of the project, we get to see the guts of a more complicated NN with 3-inputs, a hidden layer with 32 nodes and 1-output, which runs on an Uno at a much slower speed of 5600 μsec.

This exploration of ML in the embedded world is NOT ‘high level’ research stuff that tends to be inaccessible and hard to understand. We have covered Machine Learning On Tiny Platforms Like Raspberry Pi And Arduino before, but not with such an easy and thoroughly practical example.

A Doom-esque Port To The ATmega328

Doom holds a special place as one of the biggest games of the 1990s, as well as being one of the foundational blocks of the FPS genre. Long before 3D accelerators hit the market, iD Software’s hit was being played on computers worldwide, and later spread to all manner of other platforms. [David Ruiz] decided to build a cutdown version for everyone’s favourite, the ATmega328.

Due to the limited resources available, it’s not a direct port of Doom. [David] instead took some sprites and map data from the original game, and built a raycasting engine similar to that of Wolfenstein 3D. Despite the limited memory and CPU cycles, the basic game can run at between 8-11 FPS. There are fancy dithering tricks to help improve the sense of depth, a simplified enemy AI, and even a custom text library for generating the UI.

It’s a great example of what can be done with a seemingly underpowered part. We’ve seen similar work before, with Star Fox replicated on the Arduboy. A hacker’s ingenuity truly knows no bounds.

 

Magnetic Attraction Of Microduino MCookie Modules

We’ve seen countless different robot kits promoted for STEM education, every one of which can perform the robotic “Hello World” task of line following. Many were in attendance at Maker Faire Bay Area 2019 toiling in their endless loops. Walking past one such display by Microduino, Inc. our attention was caught by a demonstration of their mCookie modules in action: installing a peripheral module took less than a second with a “click” of magnets finding each other.

Many Arduino projects draw from an ecosystem of Arduino shields. Following that established path, Microduino had offered tiny Arduino-compatible boards and peripherals which connected with pins and headers just like their full-sized counterparts. Unfortunately their tiny size also meant their risk of pin misalignment and corresponding damage would be higher as well. mCookie addresses this challenge by using pogo pins for electrical contacts, and magnets to ensure proper alignment. Now even children with not-quite-there-yet dexterity can assemble these modules, opening up a market to a younger audience.

Spring loaded electric connections are a popular choice for programming jigs, and we’ve seen them combined with magnets for ideas like modular keyboards, and there are also LittleBits for building simple circuits. When packaged with bright colorful LEGO-compatible plastic mounts, we have the foundation of an interesting option for introductory electronics and programming. Microduino’s focus at Maker Faire was promoting their Itty Bitty Buggy, which at $60 USD is a significantly more affordable entry point to intelligent LEGO creations than LEGO’s own $300 USD Mindstorm EV3. It’ll be interesting to see if these nifty mCookie modules will help Microduino differentiate themselves from other LEGO compatible electronic kits following a similar playbook.