Application screenshot taken from Nexus 7 Recently I started working on a new version of my DIY digital readout project to that uses an Arduino DRO controller and an Android tablet. The DRO I'm building for my milling machine uses three inexpensive iGaging scales. (The whole set for my Hardbor Freight Mini Mill set me back less than $100 on amazon, in fact.) Since the bulk of the functionality is handled in the digital readout application, the controller design becomes much simpler, requiring only a few extra components. The parts list In reality I've been toying with the software-based design for some time, and even wrote a basic desktop application on my computer. I scraped the idea of Windows application because without a touch screen the unit would be too cumbersome. When my Nexus 7 arrived in late July, it only made sense to use it for the DRO display unit. I've done some Android programming before, so it didn't take too long to get a basic app up and running. The app in the screenshot is a crude proof of concept, but I should be able to post a working version in a week or two. As I mentioned before, my unit uses three iGaging scales and a controller based on Arduino UNO board to read them, as shown in the schematic below. As you can see from the schematic, the design is very simple and doesn't require too much assembly. If you are using the original cables that came with the iGaging scales, the connections are: Arduino's 3V3 pin connected to the red wire (X-Z1 on the schematic) Arduino's GND pin connceted to the black wire (X-Z4 on the schematic) Arduino's digital pin 2 connected to the white wire through the voltage divider (X-Z2 on the schematic) Arduino digital pins 3,4,5 connected to green wire on scales respectively (Z-X3 on the schematic) The four wires on the left of the schematic need to be connected to the BlueTooth module. The actual modules vary, so you will need to refer to your board's documentation to identify the right pints. Please note: if you are using BlueSMiRF board, please make sure that RTS and CTS pins are connected to each other. Bill of Materials Arduino Uno 1 Bluetooth module 1 R1-R3 Resistor, 10K 3 R4 Resistor, 330 Ohm 1 R5 Resistor, 220 Ohm 1 C1-C3 Capacitor, ceramic, 0.1uF 3 Arduino Arduino, obviously, provides the “brains” for the controller. I used Uno, but in practice any Arduino board will work here. To keep the cost low, you can even build one from scratch for less than $10 as described in my “Arduino on a Breadboard” post. (I recommend that you actually solder the board together, though, as opposed to using it on a breadboard). The only thing you need to keep in mind that the scales require 3V supply. If the board you choose doesn't come with 3.3V regulator, you will need to find a way to provide 3V to the scales. Bluetooth Module HC-06 (left) and BlueSMiRF (right) Bluetooth Modules Creating wired connections to Android tablets is fairly complicated. Fortunately, many tablets come with built-in Bluetooth controller, so all we need to do is connect the serial output from Arduino's UART controller to a serial Bluetooth modem. There are two readily available choices: Sparkfun's BlueSMiRF board or a so-called “Linvor” modem sold on eBay under various names. BlueSMiRF is an excellent board with a lot of advanced features and ridiculously long range. The downside is the $65 price tag. “Linvor” boards can be had on eBay for around $10 shipped. While they aren't comparable to BlueSMiRF when it comes to range or features, they are plenty good for our application. Simply search eBay for “Arduino Bluetooth Module”. Please note: The HC-05 "Linvor" modules come in several flavors, but for the purposes of our project they are interchangeable, as long as the module is mounted on a breakout PCB. Other Parts The exact resistor values are not critical, and can be substituted as follows: R1-R3 can be any resistor between roughly 10K and 47K. R4 and R5 can be replaced with other 100 Ohm to 1K resitors, as long as the ratio is close to 2/3. C1-C3 are bypass capacitors. They are optional but I found that they reduce the line noise Firmware (Sketch) The firmware (Arduino sketch) is almost identical to the one described in the earlier post "Reading Gtizzly iGaging Digital Scales with Arduino". The only two notable changes are a much slower clocl rate and a different message structure. In short, the microcontroller decodes the output from the iGaging scales and stores the positions for each of the tree scales into a signed 32 bit integer. When the last bit is read, the positions are converted to strings in the following format: Single letter axis name Optional minus sign One to eight digits Terminator (semicolon) Once the strings are constructed, they are simply written to the UART port (using printf() function) and the process is repeated again. The readout could look like this (without the quotes): "x-232;y4435;z124434;x-234;" and so on. Each block can be expressed using regular expression [xyz]-?\d{1,8};. The latest Arduino sketch is posted on the DRO Project Downloads page and can be uploaded to the board using the Arduino software. Conclusion As you can see, this is a simple and inexpensive design that can be built in less than an hour. Most parts are available from Radio Shack (with the exception of the Bluetooth module). With some careful shopping the total cost can be as low as $25. Alternatively, by using an Arduino Bluetooth shield the amount of assembly can be reduced to soldering five resistors, three capacitors and a handful of wires. In the next part we will take a look the communication protocol and message format.