Diferència entre revisions de la pàgina «IoT-Vertebrae»
Salta a la navegació
Salta a la cerca
(Es crea la pàgina amb « = Detecció d'adreces I2C a la Raspberry Pi = pi@raspberrypi:~ $ '''i2cdetect -y 1''' 0 1 2 3 4 5 6 7 8 9 a b c d e f 00:...».) |
m (→Exemple d'ús) |
||
| (Hi ha 33 revisions intermèdies del mateix usuari que no es mostren) | |||
| Línia 1: | Línia 1: | ||
| + | = Atenció! = | ||
| + | * Els potenciòmetres de 10K han de dur un resistor de 14K en sèrie a l'alimentació. Així, quan s'alimenten a 24 volts poden donar una tensió entre 0 i 10 volts (per a connectar a la placa d'entrades analògiques. Tot i que les entrades poden ser de -10 a + 10 volts). | ||
| + | |||
| + | * A la serigrafia NPN/PNP de la placa de sortides digitals està invertida. Per tant, el pont (''jumper'') és a NPN fa que les sortides siguin PNP. I si el pont (''jumper'') és a PNP fa que les sortides siguin NPN. | ||
| + | |||
| + | = Introducció = | ||
| + | [https://www.binefa.cat/training/snapcon2023/20230719_IoT-Vertebrae_SnapCon2023.pdf IoT-Vertebrae - Bridging OT & IT. Snap!Con 2023] and [https://youtu.be/hoDaJh98o3k video] (July / 17 / 2023) | ||
| + | |||
| + | [https://www.binefa.cat/training/dlm/20230429/iotvertebrae_dlm2023.pdf IoT-Vertebrae Bridging OT & IT. DLM 2023] (29 / abril / 2023) - Diada de la Llibertat del Maquinari 2023 | ||
| + | |||
| + | [[Image:IoTVertebraeV1.1a.jpg|center|thumb|Conjunt IoT-Vertebrae amb el cap v1.1]] | ||
| + | |||
| + | * Proves fetes a diferents versions de Raspberry Pi: | ||
| + | RPi 2: I2C Sí CAN Sí | ||
| + | RPi 3: I2C No CAN Sí | ||
| + | RPi 4: I2C Sí CAN Sí | ||
| + | RPi 5: pendent de provar | ||
| + | |||
| + | = Material = | ||
| + | [https://recull.binefa.cat Recull d'informació sobre l'IoT-Vertebrae] (usuari: ''EdT'', contrasenya: ''EdT2324'') | ||
| + | |||
| + | [https://snap.binefa.cat/ Snap! amb exemple IoT-Vertebrae] (MAC ESP32: 70B8F662BC7C ) | ||
| + | |||
| + | [https://www.iotvertebrae.com/ IoT-Vertebrae a GitHub] | ||
| + | |||
| + | [[Image:iotvertebrae00.jpg|center|thumb|Concepte IoT-Vertebrae]] | ||
| + | |||
| + | [[Maquinari de l'IoT-Vertebrae]] | ||
= Detecció d'adreces I2C a la Raspberry Pi = | = Detecció d'adreces I2C a la Raspberry Pi = | ||
| Línia 15: | Línia 43: | ||
Python 3.11.2 (main, Mar 13 2023, 12:18:29) [GCC 12.2.0] on linux | Python 3.11.2 (main, Mar 13 2023, 12:18:29) [GCC 12.2.0] on linux | ||
Type "help", "copyright", "credits" or "license" for more information. | Type "help", "copyright", "credits" or "license" for more information. | ||
| − | >>> import iotv | + | >>> '''import iotv''' |
| − | >>> iotv.aversion("0000") | + | >>> iotv.'''aversion'''("0000") |
Analog rib version: 1.0 | Analog rib version: 1.0 | ||
'0000000100000000' | '0000000100000000' | ||
| − | >>> iotv.dversion("0000") | + | >>> iotv.'''dversion'''("0000") |
Digital rib version: 1.2 | Digital rib version: 1.2 | ||
'0000000100000010' | '0000000100000010' | ||
| − | >>> iotv.getdsetup("0000") | + | >>> iotv.'''getdsetup'''("0000") |
A digital output, B digital input | A digital output, B digital input | ||
'00010010' | '00010010' | ||
| − | >>> iotv.getasetup("0000") | + | >>> iotv.'''getasetup'''("0000") |
respA: 0x1, respB: 0x2 | respA: 0x1, respB: 0x2 | ||
A rib is ADC, B rib is DAC. | A rib is ADC, B rib is DAC. | ||
'00010010' | '00010010' | ||
| − | >>> iotv.dsetup("0000"," | + | >>> iotv.'''dsetup'''("0000","aout","bin") |
ain, aout | ain, aout | ||
Setup has not been changed | Setup has not been changed | ||
False | False | ||
| − | >>> iotv.getdsetup("0000") | + | >>> iotv.'''getdsetup'''("0000") |
A digital output, B digital input | A digital output, B digital input | ||
'00010010' | '00010010' | ||
| Línia 48: | Línia 76: | ||
A digital output, B digital input | A digital output, B digital input | ||
'00010010' | '00010010' | ||
| − | >>> iotv.ain("0000",'a',1) | + | >>> iotv.'''ain'''("0000",'a',1) |
19881 | 19881 | ||
| − | >>> iotv.ainv("0000",'a',1) | + | >>> iotv.'''ainv'''("0000",'a',1) |
i2cAddr: 0x10, addrChannel: 0x1 | i2cAddr: 0x10, addrChannel: 0x1 | ||
res: 0x4DAA: 19882 | res: 0x4DAA: 19882 | ||
| Línia 60: | Línia 88: | ||
0x4DBE --> 19902 --> 4.95V | 0x4DBE --> 19902 --> 4.95V | ||
19902 | 19902 | ||
| − | >>> iotv.aout("0000",'b',2,4095) | + | >>> iotv.'''aout'''("0000",'b',2,4095) |
dacCommand: 0x32 | dacCommand: 0x32 | ||
It has been sent 0xFFF (10.00 volts) to DAC 2 | It has been sent 0xFFF (10.00 volts) to DAC 2 | ||
| Línia 76: | Línia 104: | ||
0x4DBB --> 19899 --> 4.95V | 0x4DBB --> 19899 --> 4.95V | ||
19899 | 19899 | ||
| − | >>> iotv.din("0000",'b') | + | >>> iotv.'''din'''("0000",'b') |
'00000000' | '00000000' | ||
>>> iotv.din("0000",'b') | >>> iotv.din("0000",'b') | ||
| Línia 82: | Línia 110: | ||
>>> iotv.din("0000",'b') | >>> iotv.din("0000",'b') | ||
'00000000' | '00000000' | ||
| − | >>> iotv.dout("0000",'a',0x5A) | + | >>> iotv.'''dout'''("0000",'a',0x5A) |
| − | >>> iotv.dsetup("0000","aoutpwm","bin") | + | >>> iotv.'''dsetup'''("0000","aoutpwm","bin") |
aoutpwm, bin | aoutpwm, bin | ||
True | True | ||
| Línia 89: | Línia 117: | ||
A PWM output, B digital input | A PWM output, B digital input | ||
'00010100' | '00010100' | ||
| − | >>> iotv.doutpwm('0000','a',255) | + | >>> iotv.'''doutpwm'''('0000','a',255) |
>>> iotv.doutpwm('0000','a',55) | >>> iotv.doutpwm('0000','a',55) | ||
>>> iotv.doutpwm('0000','a',0) | >>> iotv.doutpwm('0000','a',0) | ||
| Línia 98: | Línia 126: | ||
A digital output, B digital input | A digital output, B digital input | ||
'00010010' | '00010010' | ||
| − | >>> iotv.doutbit('0000','a',0,1) | + | >>> iotv.'''doutbit'''('0000','a',0,1) |
>>> iotv.doutbit('0000','a',0,0) | >>> iotv.doutbit('0000','a',0,0) | ||
>>> iotv.dsetup("0000","aoutpwm","bin") | >>> iotv.dsetup("0000","aoutpwm","bin") | ||
| Línia 106: | Línia 134: | ||
A PWM output, B digital input | A PWM output, B digital input | ||
'00010100' | '00010100' | ||
| − | >>> iotv.doutbitpwm('0000','a',0,55) | + | >>> iotv.'''doutbitpwm'''('0000','a',0,55) |
>>> iotv.doutbitpwm('0000','a',0,255) | >>> iotv.doutbitpwm('0000','a',0,255) | ||
>>> iotv.doutbitpwm('0000','a',0,0) | >>> iotv.doutbitpwm('0000','a',0,0) | ||
| Línia 117: | Línia 145: | ||
>>> | >>> | ||
pi@raspberrypi:~/iot-vertebrae $ | pi@raspberrypi:~/iot-vertebrae $ | ||
| + | [[API de Python per a l'IoT-Vertebrae]] | ||
| + | |||
| + | = Exemple d'ús = | ||
| + | [https://snap.binefa.cat/snap.html Control via Snap!] (MQTT al cap + CanBus) (MAC ESP32: 70B8F662BC7C ) | ||
| + | |||
| + | [[Smart Toys]] (MQTT a la Raspberry Pi + I2C) | ||
| + | |||
| + | [[CanBus a l'IoT-Vertebrae]] | ||
| + | |||
| + | [[Pantalla OLED al cap de l'IoT-Vertebrae]] | ||
| + | |||
| + | [https://snap.binefa.cat/snap.html#open:https://raw.githubusercontent.com/jordibinefa/ms-drivers-and-tools/master/arinyo_20240724_00.xml Exemple emprant objectes] | ||
| + | |||
| + | [https://snap.berkeley.edu/snap/snap.html#present:Username=jordibinefa&ProjectName=iotv_Carbonell00 iotv_Carbonell00] [https://snap.berkeley.edu/snap/snap.html#present:Username=jordibinefa&ProjectName=iotv_Carbonell00b iotv_Carbonell00b] | ||
| + | |||
| + | [[ModBUS RTU a l'IoT-Vertebrae]] | ||
| + | |||
| + | [https://virtualcommissioning.com/what-is-virtual-commissioning/ Què és la posada en servei virtual (Virtual Comissioning)?] | ||
| + | |||
| + | [[IoT-Vertebrae PLC Edu]] | ||
Revisió de 16:36, 4 oct 2025
Contingut
Atenció!
- Els potenciòmetres de 10K han de dur un resistor de 14K en sèrie a l'alimentació. Així, quan s'alimenten a 24 volts poden donar una tensió entre 0 i 10 volts (per a connectar a la placa d'entrades analògiques. Tot i que les entrades poden ser de -10 a + 10 volts).
- A la serigrafia NPN/PNP de la placa de sortides digitals està invertida. Per tant, el pont (jumper) és a NPN fa que les sortides siguin PNP. I si el pont (jumper) és a PNP fa que les sortides siguin NPN.
Introducció
IoT-Vertebrae - Bridging OT & IT. Snap!Con 2023 and video (July / 17 / 2023)
IoT-Vertebrae Bridging OT & IT. DLM 2023 (29 / abril / 2023) - Diada de la Llibertat del Maquinari 2023
- Proves fetes a diferents versions de Raspberry Pi:
RPi 2: I2C Sí CAN Sí RPi 3: I2C No CAN Sí RPi 4: I2C Sí CAN Sí RPi 5: pendent de provar
Material
Recull d'informació sobre l'IoT-Vertebrae (usuari: EdT, contrasenya: EdT2324)
Snap! amb exemple IoT-Vertebrae (MAC ESP32: 70B8F662BC7C )
Detecció d'adreces I2C a la Raspberry Pi
pi@raspberrypi:~ $ i2cdetect -y 1
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- --
10: 10 -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: 20 -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
Python
pi@raspberrypi:~/iot-vertebrae $ python
Python 3.11.2 (main, Mar 13 2023, 12:18:29) [GCC 12.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import iotv
>>> iotv.aversion("0000")
Analog rib version: 1.0
'0000000100000000'
>>> iotv.dversion("0000")
Digital rib version: 1.2
'0000000100000010'
>>> iotv.getdsetup("0000")
A digital output, B digital input
'00010010'
>>> iotv.getasetup("0000")
respA: 0x1, respB: 0x2
A rib is ADC, B rib is DAC.
'00010010'
>>> iotv.dsetup("0000","aout","bin")
ain, aout
Setup has not been changed
False
>>> iotv.getdsetup("0000")
A digital output, B digital input
'00010010'
>>> iotv.dsetup("0000","ain","bout")
ain, bout
True
>>> iotv.getdsetup("0000")
A digital input, B digital output
'00100001'
>>> iotv.dsetup("0000","aout","bin")
aout, bin
True
>>> iotv.getdsetup("0000")
A digital output, B digital input
'00010010'
>>> iotv.ain("0000",'a',1)
19881
>>> iotv.ainv("0000",'a',1)
i2cAddr: 0x10, addrChannel: 0x1
res: 0x4DAA: 19882
0x4DAA --> 19882 --> 4.94V
19882
>>> iotv.ainv("0000",'a',2)
i2cAddr: 0x10, addrChannel: 0x21
res: 0x4DBE: 19902
0x4DBE --> 19902 --> 4.95V
19902
>>> iotv.aout("0000",'b',2,4095)
dacCommand: 0x32
It has been sent 0xFFF (10.00 volts) to DAC 2
>>> iotv.ainv("0000",'a',2)
i2cAddr: 0x10, addrChannel: 0x21
res: 0x6781: 26497
0x6781 --> 26497 --> 9.90V
26497
>>> iotv.aout("0000",'b',2,2047)
dacCommand: 0x32
It has been sent 0x7FF (5.00 volts) to DAC 2
>>> iotv.ainv("0000",'a',2)
i2cAddr: 0x10, addrChannel: 0x21
res: 0x4DBB: 19899
0x4DBB --> 19899 --> 4.95V
19899
>>> iotv.din("0000",'b')
'00000000'
>>> iotv.din("0000",'b')
'00100100'
>>> iotv.din("0000",'b')
'00000000'
>>> iotv.dout("0000",'a',0x5A)
>>> iotv.dsetup("0000","aoutpwm","bin")
aoutpwm, bin
True
>>> iotv.getdsetup("0000")
A PWM output, B digital input
'00010100'
>>> iotv.doutpwm('0000','a',255)
>>> iotv.doutpwm('0000','a',55)
>>> iotv.doutpwm('0000','a',0)
>>> iotv.dsetup("0000","aout","bin")
aout, bin
True
>>> iotv.getdsetup("0000")
A digital output, B digital input
'00010010'
>>> iotv.doutbit('0000','a',0,1)
>>> iotv.doutbit('0000','a',0,0)
>>> iotv.dsetup("0000","aoutpwm","bin")
aoutpwm, bin
True
>>> iotv.getdsetup("0000")
A PWM output, B digital input
'00010100'
>>> iotv.doutbitpwm('0000','a',0,55)
>>> iotv.doutbitpwm('0000','a',0,255)
>>> iotv.doutbitpwm('0000','a',0,0)
>>> iotv.dsetup("0000","aout","bin")
aout, bin
True
>>> iotv.getdsetup("0000")
A digital output, B digital input
'00010010'
>>>
pi@raspberrypi:~/iot-vertebrae $
API de Python per a l'IoT-Vertebrae
Exemple d'ús
Control via Snap! (MQTT al cap + CanBus) (MAC ESP32: 70B8F662BC7C )
Smart Toys (MQTT a la Raspberry Pi + I2C)
Pantalla OLED al cap de l'IoT-Vertebrae
iotv_Carbonell00 iotv_Carbonell00b