Instructables
Picture of Arduino command-line tool
This command-line enables "Quick" Arduino prototyping without compilation. Reading analog values, dis-/enabling ports and even I2C register manipulations are done in seconds instead of minutes. I will shows you how to set the time of a "DS1207" I2C realtime clock as well as executing some basic operations.

The impatients of you just download the sketch here: [GitHub] and enter the test sequence "\a2/a3ir10" into the Arduino serial monitor.

The MiniPirate is heavily inspired by the much small and powerful "Bus Pirate" of Ian Lesnet and even uses a small part of it's code.

Please vote for the Arduino contest (top right of this page). The oscilloscope will improve the further developments.
 
Remove these adsRemove these ads by Signing Up

Step 1: (optional) Wiring and power-up (only for DS1307 breakout)

Picture of (optional) Wiring and power-up (only for DS1307 breakout)
Pinout.PNG
power_up.PNG
print.PNG
SaveLoad.PNG
The wiring is very trivial, just pluging the DS1307 real-time clock breakout to the pins A2-A5, leaving the "DS" pin in the air (From Homebrew Computers), please wait with the connection, until the pin power-up is verified. If you don't have a DS1307, just use any other I2C device you have.

The power will be supplied over the pins A2/A3:
- Download [GitHub] and Unzip
- Rename the directory to "MiniPirate"
- Compile and download the sketch on you Arduino
- Open the Serial Monitor in your Arduino IDE ("Tools -> Serial Monitor")

After opening the monitor the help and the first prompt should be displayed. Now we execute the first command. Just type 'p' and hit <enter> in the top line of the Serial Monitor. This will show the current configuration of all ports (INPUT and Floating values).

To set A2 to Ground and A3 to Vcc wie execute: \a2/a3 <enter> and control the result with 'p'. As we don't want to repeat this again and again, we save it with 'x'.

Now we can plug in the module as described above.

Step 2: I2C Scan, Read and Write

Picture of I2C Scan, Read and Write
I2C_Write_Read.PNG
EEPROM_Write_Read.PNG
Assuming any I2C connected to the Arduino and powered up we will continue to detect it's address and the read/write some values.

D1. Type 'i' Tt check the devices currently connected. This will list the addresses of all devices on the bus (thanks to Krodal). In my case 0x50 is the EEPROM, 0x68 is the DS1307 real-time clock. The last address will be autoselected for the next operations.
D2. Type 'w0' to set DS1307 register access pointer to zero according to the specification
D3. Type 'r10 to read the first 10 registers

To be faster you can copy-paste this 'iw0r10' and all commands will be executed.

E1. type 'i' to scan the bus again (optinal)
E2. Type '0' to switch to the EEPROM on the breakout
E3. Type 'w 0 0' to select position zero of the EEPROM
E4. Type 'r20' to read 20 bytes
E5. Type 'w 0 0 0xff 0xee 0xab 0x12' to write some values.
E6. Type 'w 0 0 r 20' to verify this values.

To be faster you can copy-paste this 'i0w00r20w0 0 0xff 0xee 0xee 0xab 0x12w0 0r20' and all commands will be executed.

Step 3: I2C Write the time in DS1307

Picture of I2C Write the time in DS1307
I2C_DS1307_write.PNG
I2C_DS1307_verify.PNG
Now let's try to programm the clock:

According to the specification we will write 13:45:56 on 30.12.2014 to the system.

1: 0x56
2: 0x45
3: 0x13
4:     30
5: 0x12
6: 0x14

'w 0 0x56 0x45 0x13 30 0x12 0x14'

Enjoy it and please vote for it on the Arduino contest if you like it.
bommerbob5 months ago

I have wanted a command-line too for ages, you have saved me from doing all the boring tedious work that is required when one is testing/debugging componentry/circuitry, much appreciated.

ochâtelain (author)  bommerbob5 months ago
You're welcome. More features will come soon.
jamesthequack5 months ago

If you have trouble compiling the code, go to the middle tab (baseIO.cpp and delete the line "#include<WProgram.h>"; me thinks it is an obsolete library)

ochâtelain (author)  jamesthequack5 months ago
Thanks for the remark, I'll fix it soon.
diy_bloke5 months ago

Sadly, the code does not compile.
Ofcourse it first stops at the WProgram.h, fixed that by changing into Arduino.h

But then subsequently there is an entire page with errors that mostly have to do with 'double declaration' doesnt work on 1.0 nor 1.05.
Too bad

Hmm I think I got the problem. For some reason the IDE, upon loading the program, also laods the baseIO.cpp and .h file.
If I copy the code to a blank IDE and close the loaded code, it will compile .
Odd, very odd

ochâtelain (author)  diy_bloke5 months ago
No Problem - Good luck with the code!

OK, the problem is caused because the MiniPirate.ino is situated in the MiniPirate library folder.
The solution is to create an 'examples\MiniPirate' folder in the libraries\MiniPirate folder and put the ino file there