Diferència entre revisions de la pàgina «Vertebra digital (dvert2 v2.1) - IoT-Vertebrae»
m (→Configuracions) |
m |
||
(Hi ha 16 revisions intermèdies del mateix usuari que no es mostren) | |||
Línia 1: | Línia 1: | ||
= Descripció general = | = Descripció general = | ||
− | [[Image:Dvert_v2. | + | [[Image:Dvert_v2.1_01.png|center|thumb|dvert2 v2.1]] |
+ | |||
+ | * Nivells lògics de 3,3 volts | ||
* 16 adreces (0x20 a 0x2F) | * 16 adreces (0x20 a 0x2F) | ||
Línia 16: | Línia 18: | ||
* Led indicador d'alimentació procedent del cap (D2) | * Led indicador d'alimentació procedent del cap (D2) | ||
− | * Botó (WEB) i led (D1) per a usos personalitzables | + | * Botó (WEB) i led blanc (D1) per a usos personalitzables. Amb el microprogramari per defecte el led blanc indica la comunicació entre la vèrtebra i el cap |
* Connector a antena de 2.4GHz | * Connector a antena de 2.4GHz | ||
= Esquema electrònic = | = Esquema electrònic = | ||
− | [[Image:dvertv21_sch.png|center|thumb|Esquema electrònic | + | [[Image:dvertv21_sch.png|center|thumb|Esquema electrònic dvert2 v2.1]] |
[https://www.binefa.cat/IoT/IoT-Vertebrae/pdf/sch/dvert21.pdf Esquema electrònic en format pdf] | [https://www.binefa.cat/IoT/IoT-Vertebrae/pdf/sch/dvert21.pdf Esquema electrònic en format pdf] | ||
+ | = Microprogramari = | ||
+ | El microcontrolador de la vèrtebra digital és un ESP32-S3. | ||
+ | |||
+ | [https://www.binefa.cat/IoT/IoT-Vertebrae/firmware/dvert_v2_20240724_01.zip Microprogramari de la vèrtebra digital] | ||
+ | |||
= Configuracions = | = Configuracions = | ||
Adreces (0x20 a 0x2F): | Adreces (0x20 a 0x2F): | ||
+ | |||
+ | [[Image:DvertAddr00.png|center|thumb|Adreces dvert2 v2.1]] | ||
+ | |||
+ | {| class="wikitable" style="margin:auto" | ||
+ | |+ Adreces | ||
+ | |- | ||
+ | ! A3 !! A2 !! A1 !! A0 !! text !! Hex | ||
+ | |- | ||
+ | | - || - || - || - || 0000 || 0x20 | ||
+ | |- | ||
+ | | - || - || - || x || 0001 || 0x21 | ||
+ | |- | ||
+ | | - || - || x || - || 0010 || 0x22 | ||
+ | |- | ||
+ | | - || - || x || x || 0011 || 0x23 | ||
+ | |- | ||
+ | | - || x || - || - || 0100 || 0x24 | ||
+ | |- | ||
+ | | - || x || - || x || 0101 || 0x25 | ||
+ | |- | ||
+ | | - || x || x || - || 0110 || 0x26 | ||
+ | |- | ||
+ | | - || x || x || x || 0111 || 0x27 | ||
+ | |- | ||
+ | | x || - || - || - || 1000 || 0x28 | ||
+ | |- | ||
+ | | x || - || - || x || 1001 || 0x29 | ||
+ | |- | ||
+ | | x || - || x || - || 1010 || 0x2A | ||
+ | |- | ||
+ | | x || - || x || x || 1011 || 0x2B | ||
+ | |- | ||
+ | | x || x || - || - || 1100 || 0x2C | ||
+ | |- | ||
+ | | x || x || - || x || 1101 || 0x2D | ||
+ | |- | ||
+ | | x || x || x || - || 1110 || 0x2E | ||
+ | |- | ||
+ | | x || x || x || x || 1111 || 0x2F | ||
+ | |} | ||
+ | - : sense pont (''jumper'') | ||
+ | |||
+ | x : amb pont (''jumper'') | ||
Sense cap pont és l'adreça 0x20. Amb els quatre ponts connectats és l'adreça 0x2F. | Sense cap pont és l'adreça 0x20. Amb els quatre ponts connectats és l'adreça 0x2F. | ||
Línia 33: | Línia 83: | ||
Tan sols pot haver una costella amb les 8 sortides PWM. Al costat A o al B. | Tan sols pot haver una costella amb les 8 sortides PWM. Al costat A o al B. | ||
== Sensors tàctils == | == Sensors tàctils == | ||
− | Es pot fer servir una costella protorib. Tan sols pot ser connectada al costat B. | + | Es pot fer servir una costella protorib. '''Tan sols pot ser connectada al costat B'''. |
+ | |||
+ | Un cop està configurat per maquinari de la protorib per a que es connectin els sensors tàctils, heu de configurar la vèrtebra per a poder llegir els sensors tàctils. | ||
+ | |||
+ | >>> iotv.'''dsetup'''("0000","aout","'''bintouch'''") | ||
+ | aout, bintouch | ||
+ | True | ||
+ | >>> iotv.'''dsetup'''("0000","ain","'''bintouch'''") | ||
+ | ain, bintouch | ||
+ | True | ||
+ | >>> iotv.'''dsetup'''("0000","aoutpwm","'''bintouch'''") | ||
+ | aoutpwm, bintouch | ||
+ | True | ||
+ | |||
+ | Un cop s'ha fet la configuració d'entrades tàctils, la lectura dels seus valors es fa exactament igual que la lectura del registre d'entrades. | ||
+ | |||
= Ús de Python = | = Ús de Python = | ||
− | + | Des de la Raspberry Pi connectada al cap. I el cap a una vèrtebra digital. | |
− | + | ||
+ | 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.'''dversion'''("0000") | ||
+ | Digital rib version: 1.2 | ||
+ | '0000000100000010' | ||
+ | >>> iotv.'''getdsetup'''("0000") | ||
+ | A digital output, B digital input | ||
+ | '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.'''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 $ |
Revisió de 18:42, 17 ago 2024
Contingut
Descripció general[modifica]
- Nivells lògics de 3,3 volts
- 16 adreces (0x20 a 0x2F)
- Comunicació I2C
- Comunicació CAN. Pont de terminació del bus CAN
- Connecta costelles digitals d'entrada i sortida als costats A i B
- Configuració d'entrades per nivell o tàctils
- Configuració de sortides per nivell o per modulació d'amplada de pols (PWM)
- Led indicador d'alimentació procedent del cap (D2)
- Botó (WEB) i led blanc (D1) per a usos personalitzables. Amb el microprogramari per defecte el led blanc indica la comunicació entre la vèrtebra i el cap
- Connector a antena de 2.4GHz
Esquema electrònic[modifica]
Esquema electrònic en format pdf
Microprogramari[modifica]
El microcontrolador de la vèrtebra digital és un ESP32-S3.
Microprogramari de la vèrtebra digital
Configuracions[modifica]
Adreces (0x20 a 0x2F):
A3 | A2 | A1 | A0 | text | Hex |
---|---|---|---|---|---|
- | - | - | - | 0000 | 0x20 |
- | - | - | x | 0001 | 0x21 |
- | - | x | - | 0010 | 0x22 |
- | - | x | x | 0011 | 0x23 |
- | x | - | - | 0100 | 0x24 |
- | x | - | x | 0101 | 0x25 |
- | x | x | - | 0110 | 0x26 |
- | x | x | x | 0111 | 0x27 |
x | - | - | - | 1000 | 0x28 |
x | - | - | x | 1001 | 0x29 |
x | - | x | - | 1010 | 0x2A |
x | - | x | x | 1011 | 0x2B |
x | x | - | - | 1100 | 0x2C |
x | x | - | x | 1101 | 0x2D |
x | x | x | - | 1110 | 0x2E |
x | x | x | x | 1111 | 0x2F |
- : sense pont (jumper)
x : amb pont (jumper)
Sense cap pont és l'adreça 0x20. Amb els quatre ponts connectats és l'adreça 0x2F.
Sortides i entrades per nivell[modifica]
Es poden fer servir els dos costats (A i/o B) per a connectar costelles digitals d'entrada i/o sortida.
Modulació per amplada de pols[modifica]
Tan sols pot haver una costella amb les 8 sortides PWM. Al costat A o al B.
Sensors tàctils[modifica]
Es pot fer servir una costella protorib. Tan sols pot ser connectada al costat B.
Un cop està configurat per maquinari de la protorib per a que es connectin els sensors tàctils, heu de configurar la vèrtebra per a poder llegir els sensors tàctils.
>>> iotv.dsetup("0000","aout","bintouch") aout, bintouch True >>> iotv.dsetup("0000","ain","bintouch") ain, bintouch True >>> iotv.dsetup("0000","aoutpwm","bintouch") aoutpwm, bintouch True
Un cop s'ha fet la configuració d'entrades tàctils, la lectura dels seus valors es fa exactament igual que la lectura del registre d'entrades.
Ús de Python[modifica]
Des de la Raspberry Pi connectada al cap. I el cap a una vèrtebra digital.
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.dversion("0000") Digital rib version: 1.2 '0000000100000010' >>> iotv.getdsetup("0000") A digital output, B digital input '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.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 $