easytransfer_serial_arduino_communications_library

Library Makes Arduino To Arduino Serial Communications Dead Simple

When [Bill Porter] works on a project, he says that he typically writes his own NMEA standard communications protocols to fit the job at hand. While it makes things easy to troubleshoot, he admits that his custom protocols are wasteful of both processor time and bandwidth. Binary communications on the other hand are more efficient, but a bit trickier to manage.

To make things easy for the common user, he wrote a library called EasyTransfer which abstracts packetized serial communications between two Arduino boards. The process is pretty simple – all one has to do is define a data structure on both Arduino boards so that they know what sort of data is coming over the wire, and EasyTransfer handles the rest. This allows users to worry less about communications protocols or transmission errors, and focus on their projects instead.

If you’re working on a project and searching for an easy way to get a pair of Arduinos talking, swing by his site and grab the library. It doesn’t get much easier.

ChipKIT Uno32: First Impressions And Benchmarks

Following Maker Faire, we’ve had a few days to poke around with Digilent’s 32-bit Arduino-compatible chipKIT boards and compiler. We have some initial performance figures to report, along with impressions of the hardware and software.

Continue reading “ChipKIT Uno32: First Impressions And Benchmarks”

I2C Arduino GPS Shield

i2c_gps_shield

[Wayne] wrote in to share an item he just finished working on, an I2C GPS shield for the Arduino. While other GPS solutions have existed for quite some time, his caught our eye due to its feature list.

The shield removes a good bit of the hassle associated with parsing raw NMEA data from traditional GPS addons. While you have the option to communicate with the GPS module over serial in order to obtain the raw data, the use of the I2C interface makes getting the most commonly used GPS data a breeze. The GPS module itself can be set to update at anywhere from 1 to 10 Hz, and [Wayne] says that the I2C bus blows away the oft-used 9600 baud serial interface. While I2C is primarily used for receiving data, it can also be utilized to configure the GPS via its control registers, allowing for on the fly settings tweaks.

While he does sell the units pre-assembled at a competitive price, [Wayne] also provides a full schematic, making this an easy afternoon project once you have sourced the proper components.

Fixing Arduino’s Serial Latency Issues

arduino_latency

[Paul] wrote in to tell us about some interesting Arduino latency issues he helped nail down and fix on the Arduino.

It seems that [Michu] was having some problems with controlling his Rainbowduino project we featured earlier this year, and he couldn’t quite figure out why he was experiencing such huge delays when sending and receiving data.

Searching online for answers turned up very little, and since [Michu] was using Processing, the pair designed a set of tests to see what kind of latency was being introduced by Java. Pitting an Arduino Uno and an Arduino from 2009 against a Teensy 2.0, the tests gauged the latency of native data transfers versus transfers facilitated by Java via the rxtx library it uses for serial communications.

The results were pretty stunning. While both of the Arduinos lagged behind the Teensy by a long shot, their latency values under Java were always 20ms at a minimum – something didn’t add up. [Michu] poked around in the rxtx code and found a mystery 20ms delay programmed into the serial library. It made no sense to him, so he changed the delay to 2ms and saw a drastic increase in performance when transferring less than 128 bytes of data.

The pair’s fix doesn’t seem to affect latency when larger amounts of data (>1kB) are being transferred, but it makes a world of difference when manipulating smaller chunks of data.

For the sake of disclosure, it should be noted that [Paul’s] company produces the Teensy mcu.

Data Scraping And Visualization With Python

arduino_dial

[Greg] built himself a small indicator dial with his laser cutter, and wanted to use it for visualizing server performance and load information. Before he started using it for server monitoring however, he thought he should test out his data parsing skills on a simpler data set.

Pachube has a wealth of information that can be freely used for whatever project you might have in mind, so [Greg] started looking around for something interesting to track. Eventually he located the data feed for a tanker ship and wired his dial to display the ship’s speed. He uses a Python script to interface with the Pachube API, which is fed to his Netduino board. A servo motor then changes the position of the dial based on the feed’s data. Since large tankers don’t change speed often, the experiment was a bit of a letdown. He searched for a bit and tuned into another feed that tracked wind speed in New Zealand, getting much better results.

His future plans include hooking it directly to his network and eventually using it to monitor his servers…at least once the novelty of tracking random data feeds wears off.

All of his code is available on GitHub, and he is happy to make a gauge for anyone who is interested, though he doesn’t currently list a price.

Prototyping With A GPS Module

[Oneironaut] is trying out a new GPS module with the prototype seen above. It’s a San Jose Navigation device identified as FV-M8 and sold by Sparkfun for just under a hundred bucks. That’s it hanging off the bottom-right of the breadboard seen above. They’ve packed a lot of power into the small footprint, and made it very easy to control at the same time. Although the device is fully configurable, you can start grabbing serial data from it just by connecting a single data line, 3.3V, and ground.

[Oneironaut] tests it out by streaming the serial data to a character LCD screen, then comparing the output to his handheld Garmin GPS device. You can see him describe his ATmega32-based test platform in the video after the break. We’re used to seeing spy-tech for most of his projects and this will eventually join those ranks. He’s thinking of putting together a magnetic tracking module that plays nicely with Google Earth.

Continue reading “Prototyping With A GPS Module”

Shift Register Is All It Takes To Make A 3-wire Serial LCD

This hack is a bit older, but one aspect of the setup makes it worth sharing. Shift registers are a common component to include in a project when you need to increase the number of I/O pins available. We’ve used them to drive LCD screens before, but we never realize you could use a 595 chip to make a 3-wire serial LCD interface. That’s because we’ve always thought of shift registers as having three control pins which must be addressed: data, clock, and latch. But it seems that’s not the case. This hack gangs the pins for clock and latch (called the storage register clock input on this chip) together. This causes the shifted data to be latched to output register one clock cycle after it is shifted into the chip.

This means you can operate the 595 chip with just two pins, but alas, you do need one more connection to drive the LCD properly. This is an HD44780 compliant display. It is being used in 4-bit mode; four of the shift register pins provide that data, while a fifth controls the Register Select pin. Since the shifted data from the 595 appears on the pins after each clock strobe, you must control the Enable pin on the LCD separately or it will behave sporadically.

So there you have it, control an HD44780 display with just 3-pins by using a $0.42 part. Are we going a little too fast for you? Check out this 595 tutorial and give the shift register simulator a try. That should bring you up to speed.

[Thanks Rajendra]