The Arduino Operating System

WGPIOhile Arduino and its libraries are the quickest way to interface with a sensor and blink an LED, sometimes you shouldn’t have to write and compile code to do something exceptionally simple. [Oliver] realized most of the overly simple functions of a microcontroller could be done from a command line running on that microcontroller and came up with the MiniPirate, the Arduino command line tool.

The MiniPirate is just a sketch compiled on the Arduino that allows pins to be set high or low, set a PWM value, or reading and writing I2C bytes. It’s basically an extremely slimmed down version of the Bus Pirate meant for extremely simple modifications of circuits and peripherals.

[Oliver] demos his MiniPirate by taking a DS1307 real-time clock, wiring up the I2C bus, and writing values to set the time. It’s a very simple implementation meaning he needs to write everything in hex, but it’s still easy enough to find a use in many other projects.


  1. EccentricElectron says:

    Cool… nice project. It’s not really an operating system though is it? It’s a “monitor” in true 70’s hacker parlance.

    • cantido says:

      A monitor usually allows for uploading to memory, assembling into memory, single step execution etc. This is just a command line interface and the instrucables page says exactly that.

      • EccentricElectron says:
        • cantido says:

          Yes, so its not a monitor by wikipedias definition either. Not sure what you were aiming for there.

          • EccentricElectron says:

            “is software that allows a user to enter commands to view and change memory locations on a computer”
            i.e. change the value of peripheral registers.
            Anyway, enough feeding the trolls.

          • CaptainClank says:

            Misunderstands what a monitor is, ducks out while making a comment about trolls.

            Stay Classy, EccentricElectron.

          • EccentricElectron says:

            Err, no. I’ve written several, and have first hand experience. Do you? What you seem to be missing is that the most basic form of monitor only needs to support memory/register manipulation – exactly what this code does – in the same way a switch based front panel boot loader might. The other stuff – breakpoints, assembly, disassembly and single stepping is all icing on the cake.

          • Trui says:

            This tool doesn’t support access to arbitrary memory, so to call it a monitor is a huge stretch.

  2. spacecoyote says:

    You could call it Control Program for Microcontrollers :P

  3. Olivier says:

    Decimal and Binary input is supported too :-)

  4. There is also Bitlash, a true command shell for Arduino. You can even write shell functions in it.

  5. Migsantiago says:

    Ohhh… I was actually expecting a threaded, message-based, priority scheduled, hardware managed, kernel protected… operating system =(

  6. Biomed says:

    Would be useful to take this idea and add a select few functions to the bootloader, turning it into a monitor. Manual entry of EEPROM values would be #1 on my list for cal constants and lookup tables. Perhaps also baud rate control and passing a startup value to a sketch.

  7. Ralph says:

    There’s also avrsh and arsh. Hackaday wrote about avrsh a few years ago.

  8. Vic20 says:

    Somewhat related I presented the Gizmo more or less at the same time this post was presented on hackaday.

    It provides full control of a STM32F3 Discovery board using a console.
    And it also enables Forth like programming.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s


Get every new post delivered to your Inbox.

Join 96,312 other followers