Web Browser Pushes Arduino’s Limits

arduino browser

Some projects that we build fulfill a genuine need for a new piece of hardware or software that will make life easier or fix a common problem. Other projects, on the other hand, we do just because it’s possible to do. [Gilchrist] has finished work on a project that fits squarely in the second category: a web browser that runs exclusively on an Arduino Uno with an ethernet shield.

The Arduino can serve plain-text web pages to an attached LCD and can follow hyperlinks. User input is handled by a small joystick, but the impressive part of the build is on the software side. The Arduino only has 2KB of RAM to handle web pages, and the required libraries take up 20KB of memory, leaving only about 12 KB for the HTML parser/renderer and the LCD renderer.

The Arduino browser is a work in progress, and [Gilchrist] mentions that goals for the project include more robustness to handle poor HTML (the Hackaday retro edition loads flawlessly though), a terminal, and WiFi capabilities. To that end, maybe a good solution would be using the new ESP8266 chip to keep things small and inexpensive?

The ESP8266 Becomes a Terrible Browser

esp

The ESP8266 are making their way over from China and onto the benches of tinkerers around the world for astonishing web-enabled blinking LED projects and the like. [TM] thought he could do something cooler with his WiFi to UART module and decided to turn one into a web browser.

There’s no new code running on the ESP8266 – all the HTML is being pushed through an Arduino Mega, requesting data from a server (in this case our fabulous retro edition), and sending the data to the Arduino serial console. The connection is first initiated with a few AT commands to the ESP module, then connecting to the retro server and finally dumping everything received to the console.

It’s not much – HTML tags are still displayed, and images are of course out of the question. The result, however, isn’t that much different from what you would get from Lynx, meaning now the challenge is open for an Arduino port of this ancient browser.

Simple Photo Flash Trigger for Water Balloon Photography

Water Balloon Photography

There have been countless projects to make custom photo flash trigger circuits. Usually the circuits react to sound, triggering the camera flash at the moment a certain sound is triggered. That type of trigger can be used to detect the popping of a balloon or shattering of glass. Other triggers detect motion, like a projectile crossing a laser beam for example. [Udo's] friend had a fun idea to take photos of water balloons popping. Unfortunately neither of those trigger methods would be well suited for this situation. That’s when [Udo] had to get creative.

[Udo] built a unique trigger circuit that uses the water inside the balloon as the trigger. The core component of the circuit is an Arduino. One of the Arduino’s analog pins is configured to enable the internal pull-up resistor. If nothing else is connected to the pin, the Arduino will read 5 volts there. The pin is connected to a needle on the end of a stick. There is a second needle on the same stick, just a short distance away from the first. When these needles pierce the balloon’s skin, the water inside allows for a brief moment of conductivity between the two pins. The voltage on the analog pin then drops slightly, and the Arduino can detect that the balloon has popped.

[Udo] already had a flash controller circuit. He was able to trigger it with the Arduino by simply trying the flash controller’s trigger pin to one of the Arduino’s pins. If the Arduino pulls the pin to ground, it closes the switch on the flash controller and the flash is triggered. Both circuits must share a common ground in order for this to work.

All of the code for [Udo's] project is freely available. With such spectacular photographs, it’s only a matter of time before we see more of these floating around.

Reverse Engineering a Wireless Studio Lighting Remote

Strobe Remote

If you want to take a photograph with a professional look, proper lighting is going to be critical. [Richard] has been using a commercial lighting solution in his studio. His Lencarta UltraPro 300 studio strobes provide adequate lighting and also have the ability to have various settings adjusted remotely. A single remote can control different lights setting each to its own parameters. [Richard] likes to automate as much as possible in his studio, so he thought that maybe he would be able to reverse engineer the remote control so he can more easily control his lighting.

[Richard] started by opening up the remote and taking a look at the radio circuitry. He discovered the circuit uses a nRF24L01+ chip. He had previously picked up a couple of these on eBay, so his first thought was to just promiscuously snoop on the communications over the air. Unfortunately the chips can only listen in on up to six addresses at a time, and with a 40-bit address, this approach may have taken a while.

Not one to give up easily, [Richard] chose a new method of attack. First, he knew that the radio chip communicates to a master microcontroller via SPI. Second, he knew that the radio chip had no built-in memory. Therefore, the microcontroller must save the address in its own memory and then send it to the radio chip via the SPI bus. [Richard] figured if he could snoop on the SPI bus, he could find the address of the remote. With that information, he would be able to build another radio circuit to listen in over the air.

Using an Open Logic Sniffer, [Richard] was able to capture some of the SPI communications. Then, using the datasheet as a reference, he was able to isolate the communications that stored information int the radio chip’s address register. This same technique was used to decipher the radio channel. There was a bit more trial and error involved, as [Richard] later discovered that there were a few other important registers. He also discovered that the remote changed the address when actually transmitting data, so he had to update his receiver code to reflect this.

The receiver was built using another nRF24L01+ chip and an Arduino. Once the address and other registers were configured properly, [Richard's] custom radio was able to pick up the radio commands being sent from the lighting remote. All [Richard] had to do at this point was press each button and record the communications data which resulted. The Arduino code for the receiver is available on the project page.

[Richard] took it an extra step and wrote his own library to talk to the flashes. He has made his library available on github for anyone who is interested.

Atmel and Arduino Announce Wi-Fi Shield 101 at World Maker Faire

Atmel and Arduino teamed up at World Maker Faire to introduce the Wi-Fi shield 101. [Gary] from Atmel gave us the lowdown on this new shield and its components. The shield is a rather spartan affair, carrying only devices of note: an Atmel WINC1500 WiFi module, and an ATECC108 crypto chip.

The WINC1500 is a nifty little WiFi module in its own right. WINC handles IEEE 802.11 b/g/n at up to 72 Mbps. 72Mbps may not sound like much by today’s standards, but it’s plenty fast for most embedded applications. WINC handles all the heavy lifting of the wireless connection. Connectivity is through SPI, UART or I2C, though on the Arduino shield it will be running in SPI mode.

The ATECC108 is a member of Atmel’s “CryptoAuthentication” family. It comes packaged in an 8-pin SOIC, and is compatible with serial I2C EEPROM specifications. Internally the similarities to serial EEPROMs end. The ‘108 has a 256-bit SHA engine in hardware, as well as a Federal Information Processing Standards (FIPS) level random number generator. Atmel sees this chip as being at the core of secure embedded systems. We think it’s pretty darn good, so long as we don’t hear about it at the next DEFCON.

The Wi-Fi shield 101 and associated libraries should be out in January 2015. We can’t wait to see all the new projects (and new ways to blink an LED) the shield will enable.

Adding a Digital Back to a Sweet Old Camera

15123895837_6ef28dcbe4_z

[Eugene] wanted to use his vintage Leica M4 as a digital camera, and he had a Canon EOS 350D digital camera sitting around unused. So he Frankensteined them together and added a digital back to the Leica’s optical frontend.

It sounds simple, right? All you’d need to do is chop off the back from the EOS 350D, grind the digital sensor unit down to fit into exactly the right spot on the film plane, glue it onto an extra Leica M4 back door, and you’re set. Just a little bit of extremely precise hackery. But it’s not even that simple.

Along the way [Eugene] reverse-engineered the EOS 350D’s shutter and mirror box signals (using a Salae Logic probe), and then replicated these signals when the Leica shutter was tripped by wedging an Arduino MiniPro into an old Leica motor-winder case. The Arduino listens for the Leica’s bulb-flash signal to tell when the camera fires, and then sends along the right codes to the EOS back. Sweet.

There are still a few outstanding details. The shutter speed is limited by the latency in getting the signal from the Leica to the 350D back, so he’s stuck at shutter speeds longer than 1/8th of a second. Additionally, the Canon’s anti-IR filter didn’t fit, but he has a new one ordered. These quibbles aside, it’s a beautiful hack so far.

What makes a beautiful piece of work even more beautiful? Sharing the source code and schematics. They’re both available at his Github.

Of course, if you don’t mind completely gutting the camera, you could always convert your old Leica into a point and shoot.

Arduino Translates Signals Between Steering Wheel Buttons and Aftermarket Head Unit

DIY Steering Wheel Control Adapter

There is no question that steering wheel mounted controls are super convenient. Reaching all the way over to the dashboard to change a radio station is so 1990’s. An ever-increasing percentage of new cars are coming equipped with steering wheel controls for the stereo, however, you’ll lose the button control if you change out the stock head unit to something a little higher in quality. Sure, there may be an adapter readily available for your car/stereo combination, but there also may not be. [Ronnied] took the DIY road and made his own adapter.

The first obstacle for [Ronnied] was to figure out the wiring on the steering wheel controls. After some poking around he found that there were only two wires used for all of the control buttons, each button only changing the resistance between the two wires. The button states could easily be read by using an Arduino’s analog input. A Pro Mini model was chosen for its small size as it could be housed in the radio compartment of the dash.

The next step was getting the Arduino to control the aftermarket head unit. [Ronnied] did some research regarding JVC’s Stalk digital control interface but came to the conclusion that it would be easier to direct wiring the Arduino outputs to the appropriate spot on the head unit’s circuit board. To do this the button for each function that would also be represented on the steering wheel was traced out to find a common point on the circuit board. Jumper wires soldered to the circuit board simply allow the Arduino to emulate button pushes. To ensure that the head unit buttons still work in conjunction with the steering wheel buttons, the Arduino would have to keep the pins as inputs until a steering wheel button was pushed, the pin changed to an output, the signal sent and the pin changed back to an input. This feature was easily created in the Arduino sketch.

Video below.

[Read more...]

Follow

Get every new post delivered to your Inbox.

Join 97,808 other followers