Uno
Arduino Programer (UAP)
This is the description of a programmer suitable for
programing Arduino Pro-Mini
and similar modules. It consists of an Arduino Uno with the
328P processor removed
and some connections brought out to the front of the box to
allow a connection between
the Uno and the device to be programed.
The programmer in its plastic box.
Errata
Note the Tx, Rx pins on the box are incorrectly labeled they
should read.
GND, VCC, RX, TX and RST/DTR.

The
programmer with a Pro-Mini and 433mHz wireless modem
connected.

Internal view of the box.

Arduino Pro-Mini "C" test code.
The code uses a software serial port on pins 2
(Rx) & 3 (Tx) allowing programming via the usual
TX0 and RX1 pins on the Pro-Mini and allows serial
communication without disconnecting
the Uno programmer.
#include <SoftwareSerial.h>
SoftwareSerial Ser1(2, 3); //Rx, Tx
int Ti = 0;
int blk = 13;
String Rx = "";
String Tx = "";
void setup() {
pinMode(blk, OUTPUT);
Ser1.begin(9600);
Ser1.setTimeout(40);
Ser1.println("Software Serial example");
}
void loop() {
if (Ser1.available() > 0) {
{
Rx = Ser1.readString();
if(Rx.substring(0) == "?\r\n"){
Ser1.println("Software Serial example
HELP");
delay(50);
Ser1.println("?
- Help");
delay(50);
Ser1.println("p13,0 - Pin 13 LOW");
delay(50);
Ser1.println("p13,1 - Pin 13 HIGH");
}
// Get the value (Ti) in the CSV string //
if(Rx.indexOf("p13") > -1) {
for (unsigned int i = 0; i <
Rx.length(); i++) {
if (Rx.substring(i, i+1) ==
",") {
Ti =
Rx.substring(i+1).toInt();
}
}
}
if(Ti == 1){
digitalWrite(blk, HIGH);
}
if(Ti == 0){
digitalWrite(blk, LOW);
}
Tx = "p13 = " + String(Ti);
Ser1.println(Tx);
}
}
}