Vertebra analògica (avert2 v2.1) - IoT-Vertebrae

De binefa.com
Salta a la navegació Salta a la cerca

Descripció general

avert2 v2.1
  • Comunicació I2C opto-aïllada amb les costelles analògiques. Dos canals I2C per costella.
  • 16 adreces (0x10 a 0x1F)
  • Comunicació I2C
  • Comunicació CAN. Pont de terminació del bus CAN
  • Connecta costelles analògiques d'entrada i sortida als costats A i B
  • Detecció automàtica de les costelles analògiques connectades
  • Led blanc que indica la comunicació entre la vèrtebra i el cap
  • Led vermell indicador d'alimentació procedent del cap (D2)
  • Led groc indicador d'alimentació externa de 24 volts (D3)
  • Alimentació externa de 24 volts procedent d'una de les costelles analògiques. L'altra costella analògica també rep aquests 24 volts externs.
  • La vertebra genera +12V, -12V i 5V per a les dues costelles a partir dels 24 volts externs. La tensió dual +12V/-12V és per a alimentar els amplificadors operacionals. Els 5V són per alimentar els xips ADC i/o DAC de les costelles.
  • És una placa de 4 capes. Una és de massa, una altra de terra i la capa superior i inferior és per a les connexions elèctriques. Amb això es pretén tenir una alta immunitat al soroll extern.
  • Connector a antena de 2.4GHz

Esquema electrònic

Esquema electrònic dvert2 v2.1

Esquema electrònic en format pdf

Microprogramari

El microcontrolador de la vèrtebra analògica és un ESP32-S3.

Microprogramari de la vèrtebra analògica

Configuracions

Adreces (0x10 a 0x1F):

Adreces dvert2 v2.1
Adreces
A3 A2 A1 A0 text Hex
- - - - 0000 0x10
- - - x 0001 0x11
- - x - 0010 0x12
- - x x 0011 0x13
- x - - 0100 0x14
- x - x 0101 0x15
- x x - 0110 0x16
- x x x 0111 0x17
x - - - 1000 0x18
x - - x 1001 0x19
x - x - 1010 0x1A
x - x x 1011 0x1B
x x - - 1100 0x1C
x x - x 1101 0x1D
x x x - 1110 0x1E
x x x x 1111 0x1F

- : sense pont (jumper)

x : amb pont (jumper)

Sense cap pont és l'adreça 0x10. Amb els quatre ponts connectats és l'adreça 0x1F.

Sortides i entrades per nivell

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

Tan sols pot haver una costella amb les 8 sortides PWM. Al costat A o al B.

Sensors tàctils

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

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 $