ONLY in English ...
Hello,
I have a Unipi 1.1 card and an 8 relay extension EMO-R8.
I can drive the Unipi card (I2C address 0x20).
The EMO-R8 module is configured to I2C address 0x22.
But unlike the relays on the Unipi board, I can't do anything with the EMO-R8 module.
Nothing happens :(
Here is my program which works perfectly with the Unipi 1.1 board:
#!/usr/bin/python
#
# Testing relays
#
import smtplib
import math
import smbus
import time
# Open the bus
bus = smbus.SMBus(1)
# Force output ports
bus.write_byte_data( 0x20, 0x00, 0x00 )
wait5s=5
wait=0.125
# Activates relays and switches them off
for value in [0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80]:
bus.write_byte_data( 0x20, 0x09, value )
time.sleep( wait5s )
# Activates relays and switches them off
for value in range(0,80):
bus.write_byte_data( 0x20, 0x09, value )
time.sleep( wait )
# Activates relays and switches them off
for value in range(80,0, -1):
bus.write_byte_data( 0x20, 0x09, value )
time.sleep( wait )
# Activates relays and switches them off
for value in [0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01]:
bus.write_byte_data( 0x20, 0x09, value )
time.sleep( wait )
# Force ports to zero
bus.write_byte_data( 0x20, 0x09, 0x00 )
See the list of I2C addresses used :
root@raspberrypi-002:/home/pi# i2cdetect -y 1
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- 18 -- -- -- -- -- -- --
20: 20 -- 22 -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: 50 -- -- -- -- -- -- 57 -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- 68 -- -- -- -- -- -- 6f
70: -- -- -- -- -- -- -- --
This gives in readable form :
Chip Adress Usage Board
-----------------------------------------------------
DS2482-100 0x18 1Wire master Unipi 1.1
MCP23008 0x20 Relays Unipi 1.1
MCP23008 0x22 Relays EMO-R8
24AA00/24C02 0x50-0x57 EEPROM Unipi 1.1
MCP79410 0x57,0x6F Real time clock Unipi 1.1
MCP3422 0x68 ADC Unipi 1.1
root@raspberrypi-002:/home/pi/unipi# i2cdetect -l
i2c-1 i2c bcm2835 (i2c@7e804000) I2C adapter
When I operate the Unipi relay ports :
I have activated the MCP23008 (on the Unipi 1.1):
It works perfectly :)
Initialisation of port 0x20 (Unipi 1.1) :
root@raspberrypi-002:/home/pi/unipi# i2cset -y 1 0x20 0x00 0x00
root@raspberrypi-002:/home/pi/unipi# i2cset -y 1 0x20 0x09 0x01
root@raspberrypi-002:/home/pi/unipi# i2cset -y 1 0x20 0x09 0x00
How to use port 0x22 (EMO-R8) ?
Because the following does not work :(
Initialization of port 0x22 :
root@raspberrypi-002:/home/pi/unipi# i2cset -y 1 0x22 0x00 0x00
root@raspberrypi-002:/home/pi/unipi# i2cset -y 1 0x22 0x09 0x01
root@raspberrypi-002:/home/pi/unipi# i2cset -y 1 0x22 0x09 0x00
Do I need to do anything special to make the EMO-R8 modules work ?
I know, that there are Unipi solutions via their programs. But, I want to be free and not use a program that will have difficulty interfacing with other programs specific to my needs.
That's why I prefer to access the controllers directly and do exactly what I want.
Thank you for your help :)
JB