Diferència entre revisions de la pàgina «Accés ModBus al sensor de temperatura i humitat CWT-TH03S»
m (→Python) |
m (→Placa IoT-02) |
||
Línia 74: | Línia 74: | ||
− | Codi (provisional. Cal fer neteja) per a l'IDE d'Arduino que permet llegir temperatura i humitat del sensor CWT-TH03S fent servir un dispositiu amb ESP32 (exemple per a la [https://github.com/jordibinefa/IoT-02 placa IoT-02]): | + | Codi (provisional. Cal fer molta neteja) per a l'IDE d'Arduino que permet llegir temperatura i humitat del sensor CWT-TH03S fent servir un dispositiu amb ESP32 (exemple per a la [https://github.com/jordibinefa/IoT-02 placa IoT-02]): |
[https://www.binefa.cat/training/iot02/modbus/CWT-TH03S_mqtt_01.zip CWT-TH03S_mqtt_01.zip] | [https://www.binefa.cat/training/iot02/modbus/CWT-TH03S_mqtt_01.zip CWT-TH03S_mqtt_01.zip] |
Revisió de 11:04, 7 set 2021
Contingut
Protocol específic
Cables de connexió
Marró: Alimentació (entre 5V i 30V) Groc: A (D+) Blau: B (D-) Negre: Massa
Programari de canvi de paràmetres
Programa per Windows RS485ControlV22.exe per a canviar paràmetres dels dispositius ModBus
Vídeo del funcionament del programa RS485ControlV22.exe
Visió general
Lectura
Exemple de trama de petició de lectura de temperatura i humitat a un dispositiu a l'adreça 0x01:
Canvi d'adreça
Exemple de trama per a canviar l'adreça del dispositiu a 0x02 (per defecte és 0x01):
Canvi de velocitat de comunicació
Exemple de trama per a canviar la velocitat de comunicació a 9600 bauds (per defecte és 4800 bauds) a un dispositiu a l'adreça 0x01:
Implementacions
Python
Codi (provisional. Cal fer neteja) que permet llegir temperatura i humitat del sensor CWT-TH03S fent servir un dispositiu amb sistema operatiu (ordinador o Raspberry Pi):
Sol·licitud de lectura de temperatura i humitat:
if q == 'sensor1': print("{\nSending: Reading sensor 1") stMB = "%c%c%c%c%c%c"%(0x01,0x03,0x00,0x00,0x00,0x02) self.writeCommand(stMB)
Processament de la resposta a la petició de lectura de temperatura i humitat:
szByH = ("{0:02X}".format(sz[3])) szByL = ("{0:02X}".format(sz[4])) szWordHR = szByH + szByL szByH = ("{0:02X}".format(sz[5])) szByL = ("{0:02X}".format(sz[6])) szWordT = szByH + szByL print("HR: %.1f %% <--> T: %.1f ºC" % (int(szWordHR,16) / 10,int(szWordT,16) / 10))
NodeRed
Codi que permet llegir temperatura i humitat del sensor CWT-TH03S fent servir un dispositiu amb sistema operatiu (ordinador o Raspberry Pi):
Configuració del node ModBus de lectura
Configuració del servidor ModBus al NodeRed
Funció ModBus -> T, RH
Per a obtenir dues sortides amb números reals, el byte del vector es transforma en un enter. Després es converteix a real i es divideix per 10:
var fT = parseFloat(parseInt(msg.payload[1]))/10; var fRH = parseFloat(parseInt(msg.payload[0]))/10; return [{"payload": fT},{"payload": fRH}];
Placa IoT-02
Codi (provisional. Cal fer molta neteja) per a l'IDE d'Arduino que permet llegir temperatura i humitat del sensor CWT-TH03S fent servir un dispositiu amb ESP32 (exemple per a la placa IoT-02):