USB One Relay

In 2015 zocht ik een USB-relaiscontroller voor op de USB-poort van mijn pc. Zo ontdekte ik dat het KMTronic One Relay ook geschikt was voor de Raspberry Pi. Met deze USB-relaiscontroller kan de Raspberry Pi een enkel extern apparaat inschakelen met behulp van eenvoudige RS232-opdrachten. Bijkomstig voordeel was dat het relais gevoed wordt via de USB-bus. 

Inwendige van de KMTronic One Relay

De leverancier van de module geeft de volgende commando’s waardoor het relais schakelt, te weten:

Communication Parameters:
• 8 Data, 1 Stop, No Parity
• Baud rate : 9600 bps

USB One Relay commands:
• OFF command : “FF 01 00” (HEX) of “255 1 0” (DEC)
• ON command : “FF 01 01” (HEX) of “255 1 1” (DEC)
• Status aanvraag: “FF 01 03” (HEX) of “255 1 3” (DEC)

USB One Relay aansturen in Raspbian
Om het relais in Raspbian (LXTerminal) aan te sturen kun je op basis van bovenstaande (HEX) waarden de volgende commando’s achter de prompt $ invoeren:

stty -F /dev/ttyUSB0 9600 cs8 # Zet baudrate op 9600 bps

echo -ne “\xFF\x01\x01” > /dev/ttyUSB0 # Relais is aan
echo -ne “\xFF\x01\x00” > /dev/ttyUSB0 # Relais is uit
echo -e “\xFF\x01\x01” > /dev/ttyUSB0 # Relais is aan
echo -e “\xFF\x01\x00” > /dev/ttyUSB0 # Relais is uit

USB One Relay in Python 2
Tom, een collega van me heeft het Python 2 script geschreven. Hij geeft het volgende commentaar mee:

De eerste paar regels van het script zijn wat housekeeping dingen met ook een default voor de USB port. Dan een aantal functies, de namen wijzen eigenlijk voor zich. Ik heb er niet heel veel fancy foutafhandeling in gestopt. Het programma klapt er gewoon uit als de USB kabel er niet inzit bijvoorbeeld.

Het gebruik van de pack / unpack functies zorgt voor de vertaling van de decimale getallen naar iets wat dan verstuurd cq. gelezen kan worden. Het programma zelf (na main) controleert of er parameters op de commandline meegegeven zijn, zo ja, dan wordt aangenomen dat dit de USB serial port is (i.e./KMTronic /dev/ttyUSB0 ).

Bij het opstarten zonder parameters wordt de default waarde gebruikt. In de volgende stap wordt de seriële poort initialiseerd en geopend, daarna wordt de status van het relais opgevraagd en UIT gezet als deze AAN stond. De stappen daarna zijn eenvoudig, relais AAN, status printen, wachten, relais UIT en status printen. In de laatste stap wordt de seriële poort gesloten als deze nog open is.

Python 2 script
De benodigde serial bibliotheek die je voor het script nodig hebt is niet inbegrepen bij Python. Deze zal je apart moeten installeren voordat je het script start. De opdrachtregel voor Python 2 hiervoor is: pip install pyserial

Mocht je pip nog niet op je Raspberry Pi geinstalleerd hebben, kun je deze installeren met het commando: sudo apt install python-pip

Na het installeren van de serial bibliotheek kun je het script starten.