Category: Arduino
Posted by
Ril3y on April 9, 2010 |
One comment

I have been playing around with creating enclosures for prototyping electronics as of late. Today I took a few hours while my son was napping to create a case for my Arduino Mega that I got recently. The typical wear and tear of breadboarding / protoyping with these cool uC’s can be pretty harsh, also knowing the common state of my workbench (screws, tools etc all in disarray) I find these cases completely necessary.
With the recent number of orders for the Bus Pirate V3 enclosure it seems obvious that I post up these other designs as products also. However, these still have quite a bit more testing and tweaking to go through before they are ready for the synthetos web store.
More pics here:



Tags: arduino, arduino mega, enclosure, laser, laser cut, laser cutting, mega, product, prototype
Posted by
Ril3y on February 17, 2010 |
No comments
I know everyone has done this before. RFID and arduino that is. But looking at the example code it looks like the antenna is always in receive mode. I am not sure how this affects the life of the chip / reader but I thought of adding a way to detect human presence before activating the receiver.
I found some little IR heat detector (HERE: http://www.allelectronics.com/make-a-store/item/IRD-10/INFRARED-DETECTOR-MODULE/-/1.html and tossed together some analog read code and viola. Now when the IR detector detects over a certain variable heat temp it activates the RFID reader.

Tags: arduino, heat detector, pyro sensor, rfid
Posted by
rmadams on January 31, 2010 |
2 comments

First joint of the Open Source Robot Arm
Thanks to the Hong Kong Parcel Post, I got my metal-gear servomotors last week, and then thanks to work commitments, they had to sit taunting me on my workbench the whole week. Luckily, I had a chance to do some assembly work this weekend, and got a couple of the major subassemblies put together. As you could see from the earlier post, I had the base assembled, and it was short work to put the base rotation servomotor in place.
You have to make sure that when you assemble the deck, you put the servo in so that it is at the center of its rotation when the arm is facing forward. Once that was done it was short work to get the deck put on. I went ahead and clipped the little screws that hold the servo horn on short, so they won’t rub on the acrylic frame and scratch it. I also added a trio of modified furniture casters to provide a bearing surface for the rotating platform. The oomlaut guys used M8 screws with acorn nuts, but that would also scratch up my beautiful red acrylic, so I chose to go another way. If you look at the flickr set, you can see how I did it. I had to trim them a bit to allow for the small M3 nuts on the bottom of the platform to have sufficient clearance.
You can see that the first joint of the arm is supported by two servos- note that in order to make the parts fit without undue stress on the lasercut plastic, I put one servo inside and one outside the mounts. I also had to make sure that the motors were both turned to the same degree of rotation before mounting them. The way I mounted them, the first joint can swing from fully to the back of the platform all the way to fully front. This should be perfect, and maximize the reach of the arm.
Assembling the second joint turned out to be much more problematic, and necessitated several tear-downs and re-assemblies. As far as I can tell from the (albeit sparse) pictures on the oomlaut website, it appears that the motors are mounted on the outside of the arm assembly, but as far as I can tell, this will not fit without really bending the lasercut frame. I don’t want to do this as I do not want to break the plastic, but I am at a loss about what to do. I am planning on sleeping on it, and ordering a couple of the motors that the oomlaut guys suggest and see if they fit better. According to the specs posted on the motor source website, they are exactly the same size as the ones that I have now, so I am kind of puzzled.
Next up- second arms joint, gripper (which is its own puzzle, to be sure) and the control mechanism. (Yes, I am still hacking around with my old Playstation2 controller!)
Tags: arduino, lasercut, robotarm, Robotics
Posted by
Ril3y on January 20, 2010 |
One comment
So I ordered a 1-Wire RTC (real time clock) from the maxim corporation. To be exact its a ds1904. What is really cool about the 1-Wire protocol is it only needs 1 wire to send data on. It is a bit misleading however since it does need a ground as well. You really need to read the data sheet on these guys to understand fully how they work. But in the mean time basically one button gets to talk at a time. Every button has a unique serial number which is kind of a cool feature in it self. Since its in a steel “can” its really rugged so you could place it on say a card, keychain etc? It would be cool to use as a key FOB to get into my workshop. However no time for a new project at the moment. The reason I am messing with this stuff is I had to take a break from the project I have been working on for work. Call it a mind break.
I created a DIY (with a laser cutter that is) OneWire button mount as you can see it just holds 2 wires against the top and bottom of the steel can. Pretty simple. Not really useful as an end solution but good for testing.

Anyhow there is a nice Arduino lib for the 1-wire stuff here. Just extract this to your arduinoxxx/hardware/lib/OneWire folder.
This is the source code that I used and edited to get the RTC DS1904 working. Note that you need to uncomment the //write Section upload it to the board let it run then re-comment it and upload it again. Otherwise the oscillators will not turn on and it does not “count seconds” or more to the point at as a normal clock.
This is the source code that I used and edited to get the RTC DS1904 working. Note that you need to uncomment the //write Section upload it to the board let it run then re-comment it and upload it again. Otherwise the oscillators will not turn on and it does not “count seconds” or more to the point at as a normal clock.
#include
// DS1904 Real Time Clock iButton I/O
OneWire ds(10); // on pin 10
void setup(void) {
Serial.begin(9600);
}
void loop(void) {
byte i;
byte present = 0;
byte data[8];
byte addr[8];
if ( !ds.search(addr)) {
Serial.print("No more addresses found.\n");
ds.reset_search();
delay(500); // for readability
return;
}
Serial.print("ROM: ");
for( i = 0; i < 8; i++) {
Serial.print(addr[i], HEX);
Serial.print(" ");
}
if ( OneWire::crc8( addr, 7) != addr[7]) {
Serial.print("CRC is not valid!\n");
return;
}
if ( addr[0] != 0x24) {
Serial.print("\t\tDevice is not a DS1904 family device.\n");
return;
}
/*
// write!
Serial.println("writing to RTC...");
present = ds.reset();
ds.select(addr);
ds.write(0x99,1); // write RTC - this is the write code
ds.write(0xAC); //This is the control byte. AC in hex = 10101100
//read the datasheet and you will see that this is important
//to start the internal osc's... Or to make the clock start
//counting seconds. --ril3y
ds.write(0x02); //0x02 is a random time set it with your own
ds.write(0x03); //same with this
ds.write(0x05); //this
ds.write(0x08); //and this
present = ds.reset();
delay(1500); // unknown if wait needed
*/
// read!
present = ds.reset();
ds.select(addr);
ds.write(0x66,1); // read RTC
Serial.print("PR: ");
Serial.print(present, HEX);
for ( i = 0; i < 5; i++) {
data[i] = ds.read();
}
Serial.print(" CTRL BYTE: ");
Serial.print(data[0], BIN);
Serial.print("\n\ttime: ");
for ( i = 1; i < 5; i++) {
Serial.print(data[i], HEX);
Serial.print(" ");
}
Serial.println();
}
Note that I did not write most of this code. You can see the original thread here: This should be enough to get you starting using a 1Wire RTC. Enjoy!
Tags: 1wire, arduino, ds1904, one wire, onewire, rtc
Posted by
rmadams on January 10, 2010 |
One comment

The oomlaut open source robot arm base assembled easily and looks slick and professional.
Thanks to Riley, I am the proud owner of a pile of lasercut parts for the uber-cool oomlaut open source robot arm. The details can be had from both the original blog post and a thingiverse.com post that has the necessary design files (nicely laid out for the lasercutter, although Riley was able to get the layout down to a single 12x24in sheet, which was great. He said he will upload it as a derivative on thingiverse ASAP, so others can benefit, too.) My daughter and I both thought watching it cut was the coolest thing ever. She has taken all the scrap and has it proudly displayed in her room, too. It helps that the color we chose was bright red- gives it a gem-like (and somewhat sinister!) appearance. Can’t beat that!
I have most of the electronics already- I will be using a barebones Arduino as the controller, and a Pololu servo interface board to maximize the precision. I did have to order some good metal-gear servos, which I got for a steal at dealextreme.com The total cost of the project will be about 70$US, and if I had to buy everything fresh, closer to 100$US. Pretty good for a flexible robot arm and experimental hacking platform. My intent is to incorporate it into some work that colleagues and I have been doing around automated lab testing. I intend to borrow an existing reverse kinetics framework and use that for path planning. I am also going to rework the gripper, as I think it is the weakest part of the design.
Next up will be an illustrated build diary, here on the Synthetos blog, and a compete set of instructions, ordering guide, etc., over at Instructables. The goal is to get the arm built and tested, and to validate the design, as well as get others interested in building their own. Who knows- if it works out well, I may even take a crack at a derivative design that can be built using only RepRap-ed parts!
Tags: robotics arduino lasercut
Posted by
Ril3y on January 8, 2010 |
No comments
Well I was the only one there…. BUT! I did have a few different ATMEGA’s guests. I had purchased about 10x ATMEGA168V’s and 5x ATMEGA168P’s both in the SMD packages for some upcoming projects. My goal was to get a TQFP (which is just the name of the chip foot print or size if you will) socket hook it up to the SPI programming ports that ATMEL uses to flash their chips and then burn the Arduino Boot loader on to them. Well this turned out to be harder than I though.
First, the wayyyy too cheap TQFP Socket Breakout Board $25 actually when most are around $150 – $200 was too good to be true. I assumed and did not RTFM (google if it you dont know that one) that it had a standard male breadboard socket headers on the bottom to “breakout” the pins. It actually had this:
So after realizing that my whole “good idea” of removing the 6 pin headers needed to flash and arduino bootloader off of any future design and just use the “breakout board” to quickly flash these guys was starting to seem like it was not going to work. After about 4 hours of searching for the counterpart of this connector I gave up and got crazy. I went ahead and desoldered the whole enclosure popped it off solder 6 wires to the right corresponding pins needed to flash the AVR’s. I needed this to be done quickly as I had a project that’s deadline is approaching so I had to breadboard

this design rather than make a nice custom eagle footprint for this part and do a DIY PCB via the Laser.
This is where the real trouble started. I thought I had bought all ATMEGAxx8P’s when in reality I had bought ATMEGA168V’s. So my trouble was through the arduino IDE I had selected to flash these chips with the Arduino mini pro as the board selected. All this means is through the IDE the mini pro has the smd atmega168p chip which is what you would have wanted if you had the right chip.
Issuing the avrdude -c tinyisp -p m168 told me that everything was good. So then I proceeded to select Burn Boot Loader through the Arduino IDE. This failed and now I was no longer able to talk to these chips. After reading more I realized they were ATMEGA168V’s which is the same chip the lillypad uses. I selected that board on a new chip burned the bootloader and now its all working. However I did “screw up” about 6 other chips.
I posted a question on chiphackers to see if anyone could help me out. It turns out that the Arduino IDE seems to have changed the fuses on the chip to need an external oscillator. This is ok if the hex file that the arduino was trying to burn was the right one. Which it was not as I described above. So I am in the process now of trying to fix these “screwed up chips” by adding an oscillator to the xtal pins and then trying to burn them again with the right bootloader. I will update with more info when I know its fixed. Here is some more pics of the process.

Tags: arduino, atmega168p, atmega168v, tqfp
Posted by
Ril3y on December 9, 2009 |
6 comments
For awhile now I have been meaning to try to find a way to close the stepper motor “loop” on CNC devices. What started as an need / idea turned into reality last night. A few weeks back cruising thingiverse.com I found a post where Zach had created a magnetic linear encoder. However his design was off and needed fixing. Instead of re-inventing the wheel with a different linear magnetic chip I decided to use the same setup as Zach. I contacted him about fixing the problem with the board (the footprint was off) and in about 3 hours after emailing him he had it fixed.
I have blogged about laser etching PCB’s in the past (you can read about it here). The inherit problem with laser etching PCB’s is that is it very hard to get aligned if its a double sided board. So I modified Zach’s design to be a single sided board. Its tight in some spots but if you use the solder mask I created and have a somewhat steady hand its doable. Here are some pictures of the process and a video of it working!
The AS5306 can be found here:
http://www.austriamicrosystems.com/eng/Products/Magnetic-Encoders/Linear-Encoders/AS5306
Thingiverse entry and files here:
http://www.thingiverse.com/thing:1409











Tags: arduino, AS5306, austria micro systems, linear encoder, linear motion, makerbot, pcb