The Zorkduino

zork

Zork, the famous Infocom text-based adventure game, is actually quite the technical achievement in software engineering. It’s an amazingly large world to explore, albeit in text form only, running on an interpreter that allows paging, loading, and saving the complete state. All this, built to run on computers with meager amounts of RAM in the late 70s. You might think it would be easy to play Zork on an Arduino, but as [rossum] found out, that’s easier said than done (alternate blog link)

While most computers that were capable of running Zork had at least 8k of RAM, if not more, the ATMega328 in the Arduino only has 2k of RAM. Those fancy home computers of yore also had built-in video, a keyboard, and most of the time, a disk drive. The Arduino has none of that.

[Rossum] faced this challenge head on, capitalizing on the onboard hardware of the Arduino. Video is generated by using SPI mode on a UART at top speed – 8 MHz. This just shifts out pixels from the video buffer on an SD card. The keyboard is handled like any other PS/2 keyboard project on the Arduino, and audio is generated by toggling a pin at 1000Hz for a keypress, and 3600Hz for SD card access.

The finished product includes a bunch of other Infocom games on the SD card, including Leather Goddesses of Phobos, and the ability to run Hitchhiker’s Guide to the Galaxy, the game regarded by many as being better than the book. Video below.

Continue reading “The Zorkduino”

UMotio: An Arduino Compatible 3D Gesture Controller

uMotio

The Mooltipass project USB code contributor [Tom] and his friend [Ignatius] recently launched their Indiegogo campaign: meet the 3D gesture controller uMotio (Indiegogo link). As [Tom] has been spending much of his personal time helping the Mooltipass community, we figured that a nice way to thank him would be to try making their great open project one step closer to a disseminated product.

As you can see in the video embedded after the break, the uMotio is a plug and play system (detected as a USB HID joystick & keyboard with a CDC port) that can be used in many different scenarios: gaming, computer control, domotics, music, etc… The platform is based around an ATMega32u4 and the much discussed MGC3130 3D tracking and gesture controller. This allows a 0 to 15cm detection range with a resolution of up to 150dpi. uMotio is Arduino compatible so adapting it to your particular project can be done in no time especially using its dedicated expansion header and libraries. The uMotio blue even integrates an internal Li-ion battery and a Bluetooth Low Energy module.

Continue reading “UMotio: An Arduino Compatible 3D Gesture Controller”

Arduino Electronic Load

A Simple Programmable Electronic Load Using The Arduino

Some projects are both educational and useful. We believe that [Jasper’s] Arduino based electronic load is one of those project.

[Jasper’s] electronic load can not only act as a constant current load, but also as a constant power and constant resistive load as well. The versatile device has been designed for up to 30V, 5A, and 15W. It was based on a constant current source that is controlled by a DAC hooked up to the Arduino. By measuring both the resulting voltage and current of the load, the system can dynamically adapt to achieve constancy. While we have seen other Arduino based constant loads before, [Jasper’s] is very simple and straight forward compartively. [Jasper] also includes both the schematic and Arduino code, making it very easy to reproduce.

There are tons of uses for a voltage controlled current source, and this project is a great way to get started with building one. It is an especially great project for putting together your knowledge of MOSFET theory and opamp theory!

Profiling An Arduino

profiling

In proper, high-dollar embedded development environments – and quite a few free and open source ones, as well – you get really cool features like debugging, emulation, and profiling. The Arduino IDE doesn’t feature any of these bells a whistles, so figuring out how much time is spent in one section of code is nigh impossible. [William] came up with a clever solution to this problem, and while it doesn’t tell you exactly how much time is spent on a specific line of code, it’s still a good enough tool to be a great help in optimization.

[William]’s solution is to create a ‘bin’ for arbitrary chunks of code – one for each subroutine or deeply nested loop. When the profiler run, you end up with a histogram of how much time is spent per block of code. This is done with an interrupt that runs at about 1 kHz, with macros sprinkled around the code. Each time the interrupt ticks, the macro runs and increases a counter by one. Let the sketch run for a minute or so, and you get an idea of how much time is spent in a specific area of code.

It’s a bit of a kludge, but when you’re dealing with extremely minimal tools, any sort of help in debugging is sorely needed and greatly appreciated.

 

 

Opensource RhinoBOT Is Well Suited For Hacking And Sumo-Robotics!

RhinoBOT

The RhinoBOT is an open source and 3D printed robot that is fun to build and easy to expand. It can be used for educational purposes or even as a sumobot!

[Miguel Carro] runs a DIY robotics blog at bq.com (Spanish — Translated) to help teach kids about robotics using a fun cartoon character named Andy. He’s released all the design files for his latest printbot, the RhinoBOT on thingiverse.com. Using an Arduino UNO, an IR sensor, two rotational servos, an LED, batteries and a few pieces of hardware, you can build your very own RhinoBOT! That is — if you have a 3D printer.

The fun doesn’t stop there though, as [Miguel’s] also created a phone app to let you control your RhinoBOT wirelessly!  And since not all the outputs on the UNO are used, y0u can add extra functionality with a bit of creativity — how about being able to move that dozer! To see what it can do, and to start thinking about what you could do with it, stick around after the break to see it in action!

Continue reading “Opensource RhinoBOT Is Well Suited For Hacking And Sumo-Robotics!”

The Arduino Operating System

WGPIOhile Arduino and its libraries are the quickest way to interface with a sensor and blink an LED, sometimes you shouldn’t have to write and compile code to do something exceptionally simple. [Oliver] realized most of the overly simple functions of a microcontroller could be done from a command line running on that microcontroller and came up with the MiniPirate, the Arduino command line tool.

The MiniPirate is just a sketch compiled on the Arduino that allows pins to be set high or low, set a PWM value, or reading and writing I2C bytes. It’s basically an extremely slimmed down version of the Bus Pirate meant for extremely simple modifications of circuits and peripherals.

[Oliver] demos his MiniPirate by taking a DS1307 real-time clock, wiring up the I2C bus, and writing values to set the time. It’s a very simple implementation meaning he needs to write everything in hex, but it’s still easy enough to find a use in many other projects.

HexDrake — A Low Cost 2-DOF Hexapod

hexdrake low cost hexapod

[David’s] been making robots since he was 16. After conquering the basics, he wanted to build something a bit more interesting than a simple wheeled-robot — he wanted to buy a hexapod but they were too expensive — so he decided to design his own low-cost version!

It’s made out of hand-cut wood, SG90 servos, an Arduino and a 16-channel servo controller. A 2.4GHz remote control sends commands to the Arduino which then communicates to the USC servo controller, allowing for intricate control of the 14 servos that make up the HexDrake.

He’s also added a few LED arrays for the eyes of his robot, which in the future will be animated to give expression to his little hexapod.

It’s an extremely well built little bot, and [David’s] made a very in-depth Instructable for anyone who would like to follow in his footsteps. Stick around after the break to see it scurry around!

Continue reading “HexDrake — A Low Cost 2-DOF Hexapod”