Diferència entre revisions de la pàgina «IoT-Vertebrae»

De binefa.com
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:...».)
 
 
(Hi ha 25 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]]
 +
 +
= 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 37:
 
  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","ain","aout")
+
  >>> 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 70:
 
  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 82:
 
  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 98:
 
  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 104:
 
  >>> 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 111:
 
  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 120:
 
  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 128:
 
  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 139:
 
  >>>  
 
  >>>  
 
  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]
 +
 +
[[ModBUS RTU a l'IoT-Vertebrae]]

Revisió de 10:52, 26 ago 2024

Atenció![modifica]

  • 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ó[modifica]

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

Conjunt IoT-Vertebrae amb el cap v1.1

Material[modifica]

Recull d'informació sobre l'IoT-Vertebrae (usuari: EdT, contrasenya: EdT2324)

Snap! amb exemple IoT-Vertebrae (MAC ESP32: 70B8F662BC7C )

IoT-Vertebrae a GitHub

Concepte IoT-Vertebrae

Maquinari de l'IoT-Vertebrae

Detecció d'adreces I2C a la Raspberry Pi[modifica]

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[modifica]

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[modifica]

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

Exemple emprant objectes

ModBUS RTU a l'IoT-Vertebrae