Serial port IO module with 9 in and outputs

From StdOut
This page is kept for historical interest. It may document projects or methods that are obsolete and/or no longer relevant. The information here is not kept up-to-date.

This module was part of the rack box project — which was terminated when I moved out of my first apartment.
Serial port IO module installed in Rack box

OSID provides 9 digital inputs and outputs for the computer serial port. The outputs give GND when activated, max load pr. channel: 100mA. The inputs are triggered when they are connected to GND. By sending commands to the module one can change the status of the outputs, the module will confirm when the action is carried out.

It's also possible to ask for the current status of any in- or output, this is done by not sending a set value:

002:o:01:1 will set output 1 active.
002:o:01   will return the output 1 value.

The same can be done with the inputs:

002:i:01   will return the input 1 value.

All commands from the module is sent with a checksum.

After the Rack box project was terminated, this project was rebuilt into Temperature and light sensor with signalling LEDs (RS232).

I/O

Input

  • PC0 Input 1
  • PC1 Input 2
  • PC2 Input 3
  • PC3 Input 4
  • PC4 Input 5
  • PC5 Input 6
  • PD5 Input 7
  • PD6 Input 8
  • PD7 Input 9

Outputs

  • PB0 Output 1
  • PB1 Output 2
  • PB2 Output 3
  • PB3 Output 4
  • PB4 Output 5
  • PB5 Output 6
  • PB6 Output 7
  • PB7 Output 8
  • PD2 Output 9
  • PD3 Lifesignal (to Module stability monitoring unit 2)
  • PD4 Link activity

D-Sub 25-pin

  1. 5V +
  2. 5V -
  3. Input 1
  4. Input 2
  5. Input 3
  6. Input 4
  7. Input 5
  8. Input 6
  9. Input 7
  10. Input 8
  11. Input 9
  12. Output 1
  13. Output 2
  14. Output 3
  15. Output 4
  16. Output 5
  17. Output 6
  18. Output 7
  19. Output 8
  20. Output 9
  21. Lifesignal

Communication

Interfacing is done with RS-232, using MAX232 or MAX202.

13:53:08 => 002:i:06:1:122
13:53:08 <= 002:i:06:0
13:53:05 => 002:o:01:0:122
13:53:05 <= 002:o:01:0
13:53:03 => 002:o:01:1:123
13:53:03 <= 002:o:01:1
13:52:58 => 002:s:01:1:127
13:52:35 => 002:s:00:1:126

Serial settings

Baud
9600
Data bits
8
Parity
None
Stop bits
1
Start command
0
Module ID
002

Source code

I wrote a v2.0 of the firmware, changing six inputs from digital to analog. But I never made the required changes to the electronics. The repository below links to v.1.0
Git-alt-brands.svg
Bascom-AVR source is available in a git repository:
https://github.com/thomasjsn/AVR-Online-serial-interface/tree/v1.0

Gallery

Schematic drawing

Osid circuit.png

Parts list

Qty. Part
1 × AVR ATmega8-16PU, DIL-28, 16 MHz, 23 I/Os
5 × Capacitor, aluminium electrolytic, 1 µF, 50V
1 × Capacitor, aluminium electrolytic, 10 µF, 25V
1 × Capacitor, ceramic, 1 nF, 100V
2 × Capacitor, metallized polyester foil, 10 nF, (0.01 µF)
1 × D-sub soldering cups, 25 pin male
1 × D-sub soldering cups, 9 pin female
1 × DIL socket, 16-pin, 7.62mm
1 × DIL socket, 28-pin, 7.62mm
1 × Enclosure, plastic (1591 FL), 150x80x50mm, flange
1 × Fuse 5x20 mm, 800 mA, fast-acting
1 × Fuse holder, panel, 5x20mm, PTF30
1 × LED 5mm clear, Green, 2.1V, 20mA, 385mcd, 6°
1 × LED 5mm clear, Yellow, 2.0V, 20mA, 250mcd, 6°
1 × LED lens 5mm, CLB 300 low, Green
1 × LED lens 5mm, CLB 300 low, Yellow
64 cm2 PCB, stripboard, 100x160mm, 160cm2
11 × Resistor, carbon film, 0.25W, 330 Ω, 5%
11 × Resistor, carbon film, 0.25W, 4.7 kΩ, 5%
9 × Resistor, carbon film, 0.25W, 10 kΩ, 5%
1 × RS232 interface, MAX232CPE, dual
58 × Straight pin header, female, Single row, 2.54mm
48 × Straight pin header, male, Single row, 2.54mm
11 × Straight pin header, male, Y, Single row, 2.54mm
10 × Transistor, NPN, 100 mA, 45V, 0.5W, BC547B