UART et Wit-motion WT61CTTL
Posté : jeu. 7 sept. 2023 13:14
bonjour,
Je tente de communiquer avec un WT61CTTL ( accelerometre inclinometre)
en utilisant un raspi pico en micropython le but est de faire positionner horizontalement une plateforme
je n arrive pas à paramétrer ce module ni d’ailleurs visiblement il ne comprend pas ce que je lui raconte....
il est vrai que ce module utilise un language assez peu courant puisqu'il ne comprend que l hexadécimal
Par contre ce module est très bavard et transmet toujours une quantité de data à 100hz ce qui est trop rapide pour mon application
a une vitesse de 115200 baud
apres moult recherche j ai réussi a décoder ce qui m intéresse c'est a dire l'angle des trois axes il suffit de rechercher la sequence en hexa 55 53 et la suite est le resultat
avec cette sequence (il y a surement plus simple)
toto=uart.read()
# print (type(toto))
tata= binascii.hexlify(toto)
tete = str(tata)
pos1 =tete.find("5553")
resu=tete[pos1:(pos1+48)]
XL=resu[4:6]
XH=resu[6:8]
YL=resu[8:10]
YH=resu[10:12]
ZL=resu[12:14]
ZH=resu[14:16]
XA=(XH+XL)
YA=(YH+YL)
ZA=(ZH+ZL)
XN=((int(XH,16))*256)+(int(XL,16))
XA=(int(XN))/32768*180
print ("angle X:"+str(XA))
YN=((int(YH,16))*256)+(int(YL,16))
YA=(int(YN))/32768*180
print ("angle Y:"+str(YA))
ZN=(int(ZH,16))+(int(ZL,16))
ZA=(int(ZN))/32768*180
print ("angle Z:"+str(ZA))
print ()
Le probleme que je rencontre est l 'impossibilité de changer les parametres de ce module
pour tant la sequence est on ne peut plus simple
en hexa FF AA 04 02 00 pour changer la vitesse de transmission par exemple en 9600 baud
j ai essayer des tas de possibilité en ascii en hexa en byte array mais rien ne change
il existe un programme pour cela qui est fourni par le fabricant mais il fonctionne en windows sur PC
ce sera la solution ultime mais peu élégante ... la doc donne cet exemple
BAUD(Serial baud rate)
Register Name: BAUD
Register Address: 4 (0x04)
Read and write direction: R/W
Default: 0x0002
Bit
NAME
FUNCTION
15:4
Set the serial port baud rate:
0001(0x01): 4800bps
0010(0x02): 9600bps
0011(0x03): 19200bps
0100(0x04): 38400bps
3:0
BAUD[3:0]
0101(0x05): 57600bps
0110(0x06): 115200bps
0111(0x07): 230400bps
1000(0x08): 460800bps(Only
supportsWT931/JY931/HWT606/HWT906)
1001(0x09): 921600bps(Only
supportsWT931/JY931/HWT606/HWT906)
Example:FF AA 04 06 00(Set serial port baud rate115200)
étrange trame Rs232 puisque il n'y a pas de CR mais 00
quelqu'un a t il une idée ou déjà utilisé ce module ??
merci de vos lumieres
bien amicalement
jacques Baillargeat
Je tente de communiquer avec un WT61CTTL ( accelerometre inclinometre)
en utilisant un raspi pico en micropython le but est de faire positionner horizontalement une plateforme
je n arrive pas à paramétrer ce module ni d’ailleurs visiblement il ne comprend pas ce que je lui raconte....
il est vrai que ce module utilise un language assez peu courant puisqu'il ne comprend que l hexadécimal
Par contre ce module est très bavard et transmet toujours une quantité de data à 100hz ce qui est trop rapide pour mon application
a une vitesse de 115200 baud
apres moult recherche j ai réussi a décoder ce qui m intéresse c'est a dire l'angle des trois axes il suffit de rechercher la sequence en hexa 55 53 et la suite est le resultat
avec cette sequence (il y a surement plus simple)
toto=uart.read()
# print (type(toto))
tata= binascii.hexlify(toto)
tete = str(tata)
pos1 =tete.find("5553")
resu=tete[pos1:(pos1+48)]
XL=resu[4:6]
XH=resu[6:8]
YL=resu[8:10]
YH=resu[10:12]
ZL=resu[12:14]
ZH=resu[14:16]
XA=(XH+XL)
YA=(YH+YL)
ZA=(ZH+ZL)
XN=((int(XH,16))*256)+(int(XL,16))
XA=(int(XN))/32768*180
print ("angle X:"+str(XA))
YN=((int(YH,16))*256)+(int(YL,16))
YA=(int(YN))/32768*180
print ("angle Y:"+str(YA))
ZN=(int(ZH,16))+(int(ZL,16))
ZA=(int(ZN))/32768*180
print ("angle Z:"+str(ZA))
print ()
Le probleme que je rencontre est l 'impossibilité de changer les parametres de ce module
pour tant la sequence est on ne peut plus simple
en hexa FF AA 04 02 00 pour changer la vitesse de transmission par exemple en 9600 baud
j ai essayer des tas de possibilité en ascii en hexa en byte array mais rien ne change
il existe un programme pour cela qui est fourni par le fabricant mais il fonctionne en windows sur PC
ce sera la solution ultime mais peu élégante ... la doc donne cet exemple
BAUD(Serial baud rate)
Register Name: BAUD
Register Address: 4 (0x04)
Read and write direction: R/W
Default: 0x0002
Bit
NAME
FUNCTION
15:4
Set the serial port baud rate:
0001(0x01): 4800bps
0010(0x02): 9600bps
0011(0x03): 19200bps
0100(0x04): 38400bps
3:0
BAUD[3:0]
0101(0x05): 57600bps
0110(0x06): 115200bps
0111(0x07): 230400bps
1000(0x08): 460800bps(Only
supportsWT931/JY931/HWT606/HWT906)
1001(0x09): 921600bps(Only
supportsWT931/JY931/HWT606/HWT906)
Example:FF AA 04 06 00(Set serial port baud rate115200)
étrange trame Rs232 puisque il n'y a pas de CR mais 00
quelqu'un a t il une idée ou déjà utilisé ce module ??
merci de vos lumieres
bien amicalement
jacques Baillargeat