Ray tracing on an Arduino

[Greg] implemented a simple ray tracer for Arduino as a fun exercise and a way to benchmark the processor. He started out with the Moller-Trumbore algorithm, a common ray-tracing algorithm that calculates the intersection of a ray with a triangular plane without doing any pre-calculation of the planes. His code supports one static light and one static camera, which is enough to render a simple scene.

[Greg] started out with a small scene composed of a few polygons, but just finished up a scene with 505 vertices, 901 faces, and reflective surfaces (shown above). He made the above render on his PC emulator, but estimates that it would take just over 4 days to render on the Arduino. [Greg]’s project supports multiple bounces of light, which differentiates his ray tracer from some we’ve covered before (and which explains why it takes so long to render).

The ray tracer is implemented entirely with double-precision floats. This translates to a ton of software float emulation instructions, since the Arduino doesn’t have a floating-point unit. While this ray tracer can’t render anything near real-time graphics due to the slowness of the microcontroller, it’s still a great proof of concept.

The title image for this post was rendered on a modern PC, taking 263 seconds to complete. The same scene, at 64×64 resolution, was rendered on the Arduino, taking 4008 seconds to complete. That render is below.

ardu

Enhanced Coffee Brewer Knows How Much of a Caffeine Addict You Are

Who should chip in the most to restock the community coffee supply at work is a common point of contention at some offices. This RFID infused coffee brewer called Juraduino by [Oliver Krohn] solves the issue at his workplace once and for all by logging how much is being consumed by each person and how often; quite the diplomatic hack.

[Oliver] donated his old Jura Coffee maker to his office with some added hardware cleverly hidden underneath the faceplate of the machine. An Arduino mounted within runs the show, powered through mini USB from the logic unit of the coffee maker itself. Once a co-worker swipes their RFID card over the front of the machine, a real-time clock module stamps when the coffee was requested, and then logs the amount selected by that person on a mini SD card. The data stored is sent via an additional bluetooth module to a custom app [Oliver] created with MIT App Inventor for his phone which displays the information. These details can then be exported in the form of an email addressed to everyone in the office at the end of the week, announcing definitively who can be counted on to restock the bulk of the community supplies.

Though there isn’t a link available with further documentation, [Oliver] mentions in the ‘details’ portion of his video that he’d be happy to share that information with anyone who contacts him regarding the project. You can see the Jura at work below:

Continue reading “Enhanced Coffee Brewer Knows How Much of a Caffeine Addict You Are”

IcosaLEDron: A 20-Sided Light Up Ball

Tired of balls that are just balls, and not glowing geometric constructions of electronics and wonderment? Get yourself an IcosaLEDron, the latest in Platonic solids loaded up with RGB LEDs.

The folks at Afrit Labs wanted a fun, glowy device that would show off the capabilities of IMUs and MEMS accelerometers. They came up with a ball with a circuit board inside and twenty WS2812B RGB LEDs studded around its circumference

The frame of the ball is simply a set of twenty tessellated triangles that can be folded up during assembly. The outer shell of the ball is again printed in one piece, but fabricated out of transparent NinjaFlex, an extraordinarily odd, squishy, and likely indestructible material.

Inside the IcosaLEDron is a PCB loaded up with an ATMega328p, an accelerometer, a LiPo battery charger, and quite a bit of wiring. Once the ball is assembled and locked down, the squishy outer exterior is installed and turned into a throwable plaything.

If 20 sides and 20 LEDs aren’t enough, how about a an astonishing 386-LED ball that’s animated and knows its orientation? That’s a project from Null Space Labs, and looking at it in person is hypnotic.

via Makezine

Solving Arduino’s stk500_getsync() error

[psgarcha] took a year-old Arduino Uno on an international trip and upon returning found something was wrong. Every time he would try to upload, he would get the dreaded avrdude error, ‘stk500_getsync(): not in sync resp=0x00′. The Rx light would blink a few times during the attempted upload, but the tx light did not. Somehow, something was terribly wrong with the ‘duino, and [psgarcha] dug deep to figure out why.

To test the quality of the Arduino’s serial connection, [psgarcha] performed a loopback test; basically a wire plugged into the Tx and Rx pins of the Arduino. Sending a short message through the serial port showed the problem wasn’t the USB cable, the ATmega16u2 on the ‘duino, or any traces on the board. This would require more thought.

The main reason for the error would then be no communication between the computer and the ‘duino, the wrong COM port selected, the wrong board selected in the Arduino text editor, or timing errors or a corrupt bootloader. The first three errors were now out of the question, leaving timing errors and a corrupt bootloader. Troubleshooting then moved on to ordering a new programmer, and still this didn’t work with the broken Uno.

Frustrated with one of the greatest failures to become an Arduino tinkerer, [psgarcha] took a good, long look at the Uno board. He glanced over to an Arduino Mega board. Something looked different. On the Uno, the resonator had blown off. Problem found, at least.

Replacing the blown part with a hilariously large can crystal oscillator, [psgarcha] was back in business. This isn’t how you would fix 99% of getsync() errors, and it’s difficult imagining a situation where a this part would randomly blow, but if you’re ever looking at a nearly intractable problem, you need to start looking at what really shouldn’t fail.

Resonator my fix (1)

Awesome rework, though.

 

A Modern Woodworking Workbench

This is a post about workbenches, but not the benches you’re probably thinking about. Workbenches meant for electronics development are simple matters – just about any flat surface, a few shelves for equipment, and an anti-static mat will be fine for every conceivable use.  Workbenches for woodworking are a separate matter entirely. There’s actually quite a bit of history behind the development of the woodworking workbench, but the basic idea is a thick laminated wood top, integrated vices, holes in the work surface for bench dogs, and ergonomics that allow for comfortable use of hand tools. The basic design of these benches hasn’t changed much in several hundred years, and [Dirk] thought the design was ready for a modern update.

Continue reading “A Modern Woodworking Workbench”

Hello Kitty Night Light Gets Flashy Upgrades

See something in the world that sucks? As a person with hacker prowess, you view this sucky thing as a challenge to come up with an improvement and in some cases, an improvement that extends beyond what’s truly necessary but is just plain cool. This is what maker and father [Dan McDougall] did with his daughter’s light projecting Hello Kitty pillow.

kittypillow2As a thing whose one purpose was to shine bright starry patterns on a child’s wall at night, the pillow failed miserably. [Dan] Wondered why his daughter’s toy couldn’t live up to reasonable expectations all while sucking batteries dry, so he opened the large pink plastic casing in the center of the pillow to find a rather minimal board driving three very dim LEDs. The LEDs that faded on and off to create mixtures of different colors weren’t even red, green and blue either. The makers of the toy used yellow instead of the slightly more expensive blue color. Having none of this, [Dan] replaced these sad innards with an Arduino Pro Mini which he programmed to drive an old salvaged speaker and three bright RGB LEDs borrowed from the end of a light strip. For the unnecessary but cool part, he used the additional pins of the Arduino micro-controller to add four touch sensitive buttons on the outside of the pink casing. These small capacitive tiles made from copper tape activate sound and change the color of the LEDs when touched, making the pillow a lot more reactive than it was before.

The Arduino Mini board and the added components fit nicely inside the original pink casing of the pillow when all was soldered up and finished. With threefold ultra bright LEDs and a super strobe mode, his daughter’s Hello Kitty pillow is more of a disco ball than a night light now… but we doubt she will complain about the cool additions. To see the pillow in action and hear more about the upgrades you can check out [Dan’s] video below:

Continue reading “Hello Kitty Night Light Gets Flashy Upgrades”

Programmable Lithium Charger Shield for Arduino

Surely you need yet another way to charge your lithium batteries—perhaps you can sate your desperation with this programmable multi (or single) cell lithium charger shield for the Arduino?! Okay, so you’re not hurting for another method of juicing up your batteries. If you’re a regular around these parts of the interwebs, you’ll recall the lithium charging guide and that rather incredible, near-encyclopedic rundown of both batteries and chargers, which likely kept your charging needs under control.

That said, this shield by Electro-Labs might be the perfect transition for the die-hard-‘duino fanatic looking to migrate to tougher projects. The build features an LCD and four-button interface to fiddle with settings, and is based around an LT1510 constant current/constant voltage charger IC. You can find the schematic, bill of materials, code, and PCB design on the Electro-Labs webpage, as well as a brief rundown explaining how the circuit works. Still want to add on the design? Throw in one of these Li-ion holders for quick battery swapping action.

[via Embedded Lab]