Diferència entre revisions de la pàgina «API de Python per a l'IoT-Vertebrae»
m |
|||
Línia 114: | Línia 114: | ||
A rib is ADC, B rib is DAC. | A rib is ADC, B rib is DAC. | ||
'00010010' | '00010010' | ||
+ | = dsetup(''addr'',''modeA'',''modeB'') = | ||
+ | L'argument ''addr'' és l'adreça de la vèrtebra digital expressada com un text de quatre zeros i uns. Aquí hi ha un enllaç a l'[[Vertebra_digital_(dvert2_v2.1)_-_IoT-Vertebrae#Configuracions |explicació de les adreces de la vèrtebra digital]]. | ||
+ | |||
+ | L'argument ''modeA'' pot ser: '''ain''', '''aout''' o '''aoutpwm''' | ||
+ | |||
+ | L'argument ''modeB'' pot ser: '''bin''', '''bout''', '''boutpwm''' o '''bintouch''' | ||
+ | |||
+ | * can_iotv: | ||
+ | >>> '''iotv.getdsetup("0000")''' | ||
+ | 'A:dout, B:din' | ||
+ | * i2c_iotv: | ||
+ | >>> iotv.dsetup('0000','ain','bout') | ||
+ | ain, bout | ||
+ | True | ||
+ | |||
+ | Configuracions possibles als dos costats ('''A''' i '''B'''): | ||
+ | |||
+ | '''ain''': Entrades digitals al costat '''A''' | ||
+ | |||
+ | '''aout''': Sortides digitals al costat '''A''' | ||
+ | |||
+ | '''aoutpwm''': Sortides digitals per modulació de pols (''PWM'') al costat '''A'''. Si hi ha ''aoutpwm'' no pot haver ''boutpwm'' (limitació pròpia de l'ESP32-S3). | ||
+ | |||
+ | '''bin''': Entrades digitals al costat '''B''' | ||
+ | |||
+ | '''bout''': Sortides digitals al costat '''B''' | ||
+ | |||
+ | '''boutpwm''': Sortides digitals per modulació de pols (''PWM'') al costat '''B'''. Si hi ha ''boutpwm'' no pot haver ''aoutpwm'' (limitació pròpia de l'ESP32-S3). | ||
+ | |||
+ | '''bintouch''': Entrades tàctils al costat '''B'''. No existeix ''aintouch'' perquè el maquinari no ho permet. |
Revisió del 15:59, 20 ago 2024
Hi ha dues biblioteques per a interactuar en Python des de la Raspberry Pi amb l'IoT-Vertebrae: i2c_iotv.py (abans iotv.py) i can_iotv.py.
can_iotv.py: funciona a partir de la versó 2.0 del cap. Es comunica mitjançant el bus CAN, això permet controlar vèrtebres connectades remotament a una cua.
i2c_iotv.py: funciona amb qualsevol versió de cap. Es comunica mitjançant el bus I2C.
Contingut
Ús de les biblioteques des del terminal
Ús de can_iotv.py des del terminal
Cal obrir el bus CAN cal al principi del codi i podem tancar-ho al final. L'obertura i tancament del bus CAN es fa mitjançant ordres de terminal (molt més lentes d'executar que les instruccions Python).
pi@raspberrypi:~ $ 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 can_iotv as iotv >>> iotv.canOn() >>> iotv.dversion("0000") '1.2' >>> iotv.aversion("0000") '1.3' >>> iotv.canOff() >>> pi@raspberrypi:~ $
Ús de i2c_iotv.py des del terminal
No cal obrir el bus I2C al principi i tancar-ho al final perquè cada funció l'obre i el tanca mitjançant instruccions de Python.
pi@raspberrypi:~ $ 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 i2c_iotv as iotv >>> iotv.dversion("0000") Digital rib version: 1.2 '0000000100000010' >>> iotv.aversion("0000") Analog rib version: 1.3 '0000000100000011' >>> pi@raspberrypi:~ $
canOn()
Obertura del bus CAN (tan sols té sentit amb el paquet can_iotv. No pas amb el paquet i2c_iotv):
>>> iotv.canOn()
Es posa a l'inici de qualsevol programa que vulgui fer servir el paquet can_iotv. Aquesta funció tramet al sistema aquesta ordre de terminal:
sudo ip link set up can0 type can bitrate 100000
canOff()
Tancament del bus CAN (tan sols té sentit amb el paquet can_iotv. No pas amb el paquet i2c_iotv):
>>> iotv.canOff()
Es pot posar al final de qualsevol programa que vulgui fer servir el paquet can_iotv. Aquesta funció tramet al sistema aquesta ordre de terminal:
sudo ifconfig can0 down
dversion(addr)
L'argument addr és l'adreça de la vèrtebra digital expressada com un text de quatre zeros i uns. Aquí hi ha un enllaç a l'explicació de les adreces de la vèrtebra digital.
Retorna la versió de microprogramari (firmware) de la vèrtebra amb l'adreça passada com a argument.
- can_iotv:
>>> iotv.dversion("0000") '1.2'
- i2c_iotv:
>>> iotv.dversion("0000") Digital rib version: 1.2 '0000000100000010'
aversion(addr)
L'argument addr és l'adreça de la vèrtebra analògica expressada com un text de quatre zeros i uns. Aquí hi ha un enllaç a l'explicació de les adreces de la vèrtebra analògica.
Retorna la versió de microprogramari (firmware) de la vèrtebra amb l'adreça passada com a argument.
- can_iotv:
>>> iotv.aversion("0000") '1.3'
- i2c_iotv:
>>> iotv.aversion("0000") Analog rib version: 1.3 '0000000100000011'
getdsetup(addr)
L'argument addr és l'adreça de la vèrtebra digital expressada com un text de quatre zeros i uns. Aquí hi ha un enllaç a l'explicació de les adreces de la vèrtebra digital.
Retorna la configuració de la vèrtebra digital amb l'adreça passada com a argument. Les vèrtebres digitals s'han de configurar amb la funció dsetup(addr, modeA, modeB) per a indicar que es connecta a cada costat.
- can_iotv:
>>> iotv.getdsetup("0000") 'A:dout, B:din'
- i2c_iotv:
>>> iotv.getdsetup("0000") A digital output, B digital input '00010010'
Configuracions possibles als dos costats (A i B):
ain: Entrades digitals al costat A
aout: Sortides digitals al costat A
aoutpwm: Sortides digitals per modulació de pols (PWM) al costat A. Si hi ha aoutpwm no pot haver boutpwm (limitació pròpia de l'ESP32-S3).
bin: Entrades digitals al costat B
bout: Sortides digitals al costat B
boutpwm: Sortides digitals per modulació de pols (PWM) al costat B. Si hi ha boutpwm no pot haver aoutpwm (limitació pròpia de l'ESP32-S3).
bintouch: Entrades tàctils al costat B. No existeix aintouch perquè el maquinari no ho permet.
getasetup(addr)
L'argument addr és l'adreça de la vèrtebra analògica expressada com un text de quatre zeros i uns. Aquí hi ha un enllaç a l'explicació de les adreces de la vèrtebra analògica.
Retorna la configuració de la vèrtebra analògica amb l'adreça passada com a argument. Les vèrtebres analògiques no cal configurar-les, després del reset fan la lectura del que hi ha connectat a cada costat (ADC i/o DAC).
- can_iotv:
>>> iotv.getasetup("0000") 'A:ain, B:aout'
- i2c_iotv:
>>> iotv.getasetup("0000") respA: 0x1, respB: 0x2 A rib is ADC, B rib is DAC. '00010010'
dsetup(addr,modeA,modeB)
L'argument addr és l'adreça de la vèrtebra digital expressada com un text de quatre zeros i uns. Aquí hi ha un enllaç a l'explicació de les adreces de la vèrtebra digital.
L'argument modeA pot ser: ain, aout o aoutpwm
L'argument modeB pot ser: bin, bout, boutpwm o bintouch
- can_iotv:
>>> iotv.getdsetup("0000") 'A:dout, B:din'
- i2c_iotv:
>>> iotv.dsetup('0000','ain','bout') ain, bout True
Configuracions possibles als dos costats (A i B):
ain: Entrades digitals al costat A
aout: Sortides digitals al costat A
aoutpwm: Sortides digitals per modulació de pols (PWM) al costat A. Si hi ha aoutpwm no pot haver boutpwm (limitació pròpia de l'ESP32-S3).
bin: Entrades digitals al costat B
bout: Sortides digitals al costat B
boutpwm: Sortides digitals per modulació de pols (PWM) al costat B. Si hi ha boutpwm no pot haver aoutpwm (limitació pròpia de l'ESP32-S3).
bintouch: Entrades tàctils al costat B. No existeix aintouch perquè el maquinari no ho permet.