CM Home technical documentation Buy

Dry contact inputs

The CM3-Home board has two inputs designed for mechanical contact like switches or push-buttons. This article illustrates how to use them.

The contacts are available on screw terminals. Each contact can be closed on a single common line.

The input lines are opto-isolated from the CPU side and are in the same "electrical domain" of the RS485 ports.

The GPIOs used are:

  • GPIO 28: Left side contact #1. When closed the GPIO level is low
  • GPIO 29: Right side contact #2. When closed the GPIO level is low

Python example

This example reads the input #1 and #2 state and turn-on the left or right relays when closed.

import RPi.GPIO as GPIO
import time

INP_LEFT=28
INP_RIGHT=29
RELAY_LEFT=21
RELAY_RIGHT=22


GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
GPIO.setup(INP_LEFT,GPIO.IN)
GPIO.setup(INP_RIGHT,GPIO.IN)
GPIO.setup(RELAY_LEFT,GPIO.OUT)
GPIO.setup(RELAY_RIGHT,GPIO.OUT)

while True:
    if GPIO.input(INP_LEFT):
        GPIO.output(RELAY_LEFT,GPIO.LOW)
    else:
        GPIO.output(RELAY_LEFT,GPIO.HIGH)

    if GPIO.input(INP_RIGHT):
        GPIO.output(RELAY_RIGHT,GPIO.LOW)
    else:
        GPIO.output(RELAY_RIGHT,GPIO.HIGH)

Home page CM Home technical documentation Buy