uploading firmware with mega-isp and a seeeduino

so my needs are simple, apply a new firmware to a rainbowduino only, i dont have an isp programmer…or do i?

i have a seeeduino laying around, and came across mega-isp on google code

heres how i did it.

i edit my sketch in arduino ide to how i want it. make sure there is no .hex file in the applet folder and build it. this should create the hex for me to upload to the device.

I couldnt get arduino ide to upload to the rainbowduino with this isp method so i just used avrdude but i hit some snags.

I used the winavr toolchain to do the actual uploading rather than using the one that came with arduino ide. The issue i was having with the rainbowduino was that the m168 cannot have an f8 written to the efuse so i had to do the commands manually.

here are the commands:
avrdude -c avrisp -p m168 -P com7 -b 19200 -B 5 -V -e -U lock:w:0x3F:m -U hfuse:w:0xDF:m -U lfuse:w:0xFF:m -U efuse:w:0x00:m
avrdude -c avrisp -p m168 -P com7 -b 19200 -B 1 -V -D -U flash:w:rainbowduino.hex:i
avrdude -c avrisp -p m168 -P com7 -b 19200 -B 5 -V -U lock:w:0x0F:m


so went to the brewery today to hook up the monitoring stuff.

got it out, hooked it up to a tank. went to the computer. plugged in the xbee explorer. had to download the FTDI drivers, but that was expected. copied the software over. CRASH!

so I am sitting there like WTF then started to wonder about updates on their machine. and sure enough they didnt have .NET 3.5 or the SP1 so my app couldn’t find System.Linq and I couldn’t compile it into a .Net 2.0 project because I am using Linq.

today was the first time I have actually used my Publish feature on a project. it allowed me to select dependencies and .Net 3.5 SP1 was already selected so I published it and copied it over and ran the “Installer” and it of course needed to add .Net 3.5 SP1.

once it got everything installed we started it up and started monitoring the tank we plugged in and the temperature on the tank was 192. WHAT?!?! so either in the time it took us to walk from the back of the brewery to the front, the tank went up to near boiling, or the readings were wrong.

so as it turns out, the voltage readings between modules were different… I am not sure how that happens and it makes me wonder how accurate those things really are but between the one I got to test on, and the one strapped to a tank, it was reporting different temps.

So now what? I guess I am going to either switch to the LM35 or the DS1822 One Wire sensors. I have both of those laying around.

what does that mean, well it means i have to make a new enclosure for the sensor and inject it into the same port their temp sensor is in.

I guess another good thing that came out of it was I now have a better idea of what all they want to monitor. They want ambient room temps, outside temps, cold room temps AND tank temps. So I am going to be working on this stuff for a while.

Im thinking the arduino is a little overboard for what I need since i can just get an ATMega and some sort of wireless chip and communicate but for now, this works fine. well, once we get our own sensors in there.

temperature formula found

so last night i was working on the whole brewery monitoring device and getting the degrees F of the probe.

I found out that it was incredibly easy. so the arduino card on the analog read gets a value in increments of (5/1024) or 0.0048828125V. the reported value returns how many steps of that voltage it is reporting. so the actual value is like 315 for about 34F and 348 for 66F.

after staring at that for a while, i was trying to hard to figure out a formula. then out of more of a desperation move, i thought, i wonder what the difference is. After some subtracting I found that it seems to be reporting the degrees F + 282.

so in short, its the reported value – 282 = degrees F. so now my code looks like this

int pin = 0; // analog pin
int tempf=0; // temperature variable
int samples[10]; // variables to make a better precision
int serialByte = 0;//incoming serial byte
int i;

void setup()
  Serial.begin(57600); // start serial communication
void loop()
  if (Serial.available() > 0) {
    serialByte = Serial.read();
    //do not allow other pins to be read.
    if(serialByte >=48 && serialByte <= 53) {
      //get multiples and take average for more stable reading
      for(i = 0;i<=9;i++){
        tempf = tempf + samples[i];
        //has a 10 second read period for the average
      int temp = (tempf/10)-282;
      //return the degrees F.
      //will automatically be sent through xbee

now just have to do the web portal code and the windows app to upload to the database the web portal reads from.
and my code tags dont seem to work…

xbee wireless with arduino and an lm35

check out the flickr stream. i got 2 xbee series 2.5 radios connected and through a sparkfun usb explorer and an xbee arduino shield on an xbee.

at first the setup sucked because i couldnt write the firmware without a reset but when i jumped the reset pin and the ground pin it accepted it and worked fine. One thing i had issues with was I was using vista so if i unplugged the xbee or the usb xbee explorer then i would have to restart X-CTU program or else it would brick the xbee.

one trick i found that somehow worked with a bricked radio was just have the usb explorer plugged in and just hot swap the radio with it self (pull it out and put it back in without unplugging the usb cable) this usually got the radio back in a talking state. but i would have to of course restart x-ctu.

once i found the reset trick was really working, i updated the firmware on one to znet 2.5 router/end device at and set the node identifier to 1 and panid to 9933 and the baud rate to 57600. then i put the other one on, did the restart program trick and set the other one to znet coordinator at and set all the same stuff except the node identifier was set to 2.

plugged arduino shield in and pulled the jumpers off completely and put the router device end radion on then plugged in the usb. the arduino was then programmed to write to the serial at baud 57600 and uploaded the sketch.

then unplugged the usb, put the jumpers on xbee and plugged usb back in. now we have communication!! if you connect a terminal to the arduino then you should see the output. switch the com port to the usb explorer and you should still see the communication being sent. in my case it was testing first and the temperature second time.

now that they are talking, there really isnt much more setup.

to do all this stuff i used references from all over the net. i found a pdf that described the whole process with a xbee programming board but not the usb explorer.

seeedstudio catalyst pack

so i just got through ordering an illuminato but those guys over at seeed studio’s have done something else cool. They have posted what they are calling the catalyst pack. Whats in it? jump on over and check it out.

Seeed Studio Catalyst Pack

as you can see, its got tons of stuff. It looks like its 80 bucks but you get everything you would spend that much on anyway. looks like some other options on the pack is for an extra 10 bucks, you get the arduino getting started book. and you opt out of getting the seeeduino and save 25 bucks.

That sounds like a deal to me but i guess it all depends on your budget for your hobbies. this would be a great kit for a class to use to do many different things from basic programming of micro controllers, to basic robotics core platforms.

get the kit less the seeeduino and then get an illuminato and you got yourself a handy little beginning. A side not on the illuminato is that they are still being hand made so they are on backorder (hopefully mine went out normal order, but i am waiting to hear about that) but you can still order them to get delivered as soon as february for $35 or march for $30 or april for $25.

The Illuminato

No, thats not a typo. its a sweet new open source hardware board based roughly on the arduino boards only it has twice the … well everything except USB.

I grabbed one, will throw up some pics on flickr when i get it but I cannot wait. It might be the board I use on the brewery stuff but i need to play with it first.

the blog about it can be found here

The Illuminato