send a 150k file over Serial Xbee from the SD card ON ARDUINO UNO
recieve the 150k file over Serial Xbee from the SD card VIA Python (explorer board)
validate it sent correctly
have access to multiple nodes, the base node can request the file
pass some additional parameters like time stamp temp etc..
A lot of people suggest using XModem, but this seems very hard to implement over serial - as it looks like the same device (no serperate sender and receiver).
I looked at the API mode on the XBEE but the frames are too small I think it would take an age.
Has anyone actually done this - a serial file transfer with checksum of some sort? I've spent not hours but days and days on google... na da
A lot of people suggest using XModem, but this seems very hard to implement over serial...
I am sorry, but that is a funny statement. I take it that ZModem is out too...
Look, if you think you can get all 150kb without any issues, then, sure, good luck with that. Real world experience indicates otherwise. Some of us have worked with 300 baud over phonelines and a 150kb chunk of data was very unlikely to make it through the hours it could take for the transfer. Now with ZModem, you got auto-resume with the checksum capability of XModem.
Anyhow, take a little history excursion with XMODEM:
send a 150k file over Serial Xbee from the SD card ON ARDUINO UNO
I think it would be helpful if you explained why. Is the file being written to on the Arduino?
If so, why is all the data being put in one monstrous file? Using several smaller files, like a new file per day, would make more sense.
If not, simply removing the SD card and copying the contents on a faster computer would make more sense.
Does the speed at which the transfer takes place matter? If not, sending and acknowledging each packet would enable you to send the whole file with certainty that the data was received correctly.
The file is a photo (hence the size) and its in a remote location (hence the xbee).
If it's a static file, why is it necessary for the file to be sent at all?
If it's dynamic, then sending it in packets, even though they are small, using API mode, is possible.
Sending it in larger packets, with packet number, size, payload, and checksum, with handshaking, in AT mode, is also possible (this is what API mode does, but with small packets).
What, exactly, is the problem you are trying to solve?
i have not found a single example of using xbees for file transfers with checksum.
Widen your focus then. The issue is not HOW the data gets from point A to point B. It is how to be assured that A) the data got there, B) the data was what it was supposed to be, and C) the receiver is ready for more or needs the last packet resent.
All of those apply to any serial transmission. The XBees are just one way to accomplish serial transmission.
Look at Andrew Rapp's XBee library. It accomplishes all of those tasks.