Programming a microcontroller without a computer

Arduino Technology
Programming a microcontroller without a computer

Say you want to build a re-programmable toy, but the person you are making it for doesn’t have access to a computer. How could you do it? Charlie Robinson looked to the past to solve this problem with his Arduino Cassette Engine. His project allows an Arduino to interpret specially coded audio files as binary data, which can then be stored to a memory card. The current version seems to be just storing the data, however there is no conceptual reason why this couldn’t be used to actually reprogram the device once it is downloaded.

So, why is this interesting? Well, if the Arduino can be programmed using audio, then suddenly anything with a speaker can be made into a programmer. I think it would be pretty funny if you could use, say, a garden variety cell phone with some Java software to write programs for your micro.

What do you think, is there some potential here, or would it be better to just give aspiring programmers a regular computer to hack on? [Thanks Matt!]

Arduino photo by Matt Biddulph.

34 thoughts on “Programming a microcontroller without a computer

  1. Mace Moneta says:

    With netbooks available under $200 capable of running a full Linux distribution for development, this seems a wasted effort.

  2. youevolve says:

    Ah the sweet sweet squeal of playing back a recorded program on my Timex Sinclair 1000…..

  3. Fair Witness says:

    Yes, nothing sold Apple disk drives faster than trying to reload a program from cassette tape and getting a load error for the ninth time…

  4. Steve P. says:

    So, what about this is new? Modulated-audio data on cassettes was THE way many gen-1 personal computers loaded programs. I have several shoeboxes full of program cassettes in the attic, along with a few burned-out Timex Sinclairs and various other relics.

  5. Ron says:

    The rCube talking clock uses this technique as an alternate way to set the time. You enter a value on the website and it creates a series of tones which the microphone in the clock picks up.

  6. alandove says:

    Allowing the Arduino to receive data in audio format doesn’t solve the programming problem. One still needs to convert a program into an audio stream somehow. Unless the users have somehow figured out how to compose their programs musically and whistle them into a microphone, my guess is that a computer will still be the best way to write code.

    If the real goal is to enable microcontroller development on a cell phone, it seems like there would be easier ways to handle the data transfer, such as Bluetooth or USB.

  7. Nightstar says:

    Timex… That was mid 80’s. Try 70’s for the better cassette engines.

    Try Kansas City Standard. Did both 1200/300bps. Uses that with a SWTP before went with dual single sided 5 1/4 floppies then 8″ disk around the early 80’s.

    Back in the late 70’s some mag’s had those limited play records.

    The best cassette interface. That was always solid. Was on the RS Color Computer. Very simple circuit. Unless the tape recorder was a mess would save and load ok. Very tolerant of line levels. Even had motor control that worked very well.

    Seem to remember a super remote that use an audio CD or something to update it. Around early 90’s I think.

    If it only to write program on it then a Text/graphics LCD or composit video with a keyboard would be easier… Look at some of the Parallax Propeller setups… It can do video with a few resistors and caps…

    Good luck…

    1. CircuitGizmos says:

      There are some reading your comment that might gloss over the SWTP reference, but I lived all that. I built/programmed my own tape interface for a Z80. I even had a test tone/code for setting playback levels. It took longer to load, but made really long loads less likely to fail.

      My next attempt was to use DTMF (phone touch-tone) on tape. Short programs were faster to load.

      Those were the days.

  8. alanc says:

    wahooo reminds me ORIC Atmos or Commodore 64

    my 1St “computer”

  9. Alessandro says:

    Am I wrong or there’s no schematic and source (“to be added” and that dates back to April 2008…1st – a kind or joke ? ) .

    Placing data on a cassette tape looks very attractive to me, we’ve done so for years and it looked a convenient way.
    Sinclair ZX Spectrum, as an example, had a very simple and well reverse-engineered hardware/software interface, reliable also : porting that to Arduino should have been very straightforward. A good idea but not finished here . I put it on a ‘to do list’ for myself.

  10. Alessandro says:

    Reading the html source I found the link to the source code…couldn’t spot it in the text ! I need better glasses .

    The schematic would help still..


  11. Ken Booher says:

    My first computer, an Atari 800XL used many different storage and programming devices, among them was a cassette. They’re slow, but if someone could come up with a ‘fast play’ on one, you would be in business, so to speak. Instead of the usual cassette recording head, use a hard drive pick-up mounted in its place. I’ll be the data will be ‘crisper’ too.

  12. Robomarkov says:

    This is a joke, right? Or shall I break out my old Atari 410?

    One of the big problems I had with the old Atari 410 was a “serial bus data frame checksum error”. If the tape was used a lot, then it would stretch and then the data framing would get lost.

    I used to work with some satellite tracking equipment that recorded data to a cassette. Both sides of the cassette were used at the same time. Side A had the data, and side B had a frequency on it that kept the tape data synchronized. The side B tone was used to keep the tape spindles moving at a constant rate.

  13. Rich says:

    Wow – I’m having flashbacks of typing CLOAD / CSAVE on my old TRS-80. I also used a synthesizer that had tape save / restore feature. It was better than nothing!

    This is great from a novelty standpoint (and hacking for the sake of novelty is a righteous endeavor), but I don’t see much use for it given the previous comments on the cost of a computer.

    Has anyone come up with an Arduino setup that can program another Arduino? Something like a keyboard hooked up to a board with a small LCD screen? Mmm? Mmm?

  14. JennaSys says:

    I think the premise given as an excuse to do this is kinda weak, but the retro geekiness potential is certainly there. I do like Matt’s idea about taking the old technology to another level by not necessarily using tape, but still using sound as a way to transfer data. For example, imagine electronic devices getting “subliminal” audio messages from radio or TV broadcasts just by “listening”. Sure there are a myriad of other ways to accomplish this, but sometimes lo-tech can be cheaper, easier to implement, and in many cases more reliable due to fewer “moving parts”. In any case, I think it would be a fun experiment.

  15. Blockbuster says:

    I’m suddenly thinking my old tape of Slayer’s Reign In Blood might come in handy…hmmmmm…

  16. creatine says:

    So, why is this interesting? Well, if the Arduino can be programmed using audio, then suddenly anything with a speaker can be made into a programmer. I think it would be pretty funny if you could use, say, a garden variety cell phone with some Java software to write programs for your micro.

Comments are closed.

Send this to a friend