J’ai un probleme, je cherche a aquerir un signal d’une sonde PT100 dans jeedom mais je bloque. Je dispose d’un arduino uno et d’une carte max31865 PT100. J’arrive a récolter la valeur de la température dans la consol via le logiciel arduino, mais je ne sais pas comment récupérer cette valeur dans jeedom. J’ai installé jeeduino mais je ne comprends pas comment faire le lien avec l’arduino et la carte max31865, est ce que quelqu’un peu m’aider ?
Non malheureusement il n’est pas compatible. Le lien que tu m’as envoyé fonctionne en wifi, est ce faisable en USB, en modbus RS485par exemple ?
Je me suis basé sur la library officiel du max31865
/***************************************************
This is a library for the Adafruit PT100/P1000 RTD Sensor w/MAX31865
Designed specifically to work with the Adafruit RTD Sensor
----> https://www.adafruit.com/products/3328
This sensor uses SPI to communicate, 4 pins are required to
interface
Adafruit invests time and resources providing this open source code,
please support Adafruit and open-source hardware by purchasing
products from Adafruit!
Written by Limor Fried/Ladyada for Adafruit Industries.
BSD license, all text above must be included in any redistribution
****************************************************/
#include <Adafruit_MAX31865.h>
// Use software SPI: CS, DI, DO, CLK
Adafruit_MAX31865 thermo = Adafruit_MAX31865(10, 11, 12, 13);
// use hardware SPI, just pass in the CS pin
//Adafruit_MAX31865 thermo = Adafruit_MAX31865(10);
// The value of the Rref resistor. Use 430.0 for PT100 and 4300.0 for PT1000
#define RREF 430.0
// The 'nominal' 0-degrees-C resistance of the sensor
// 100.0 for PT100, 1000.0 for PT1000
#define RNOMINAL 100.0
void setup() {
Serial.begin(115200);
Serial.println("Adafruit MAX31865 PT100 Sensor Test!");
thermo.begin(MAX31865_2WIRE); // set to 2WIRE or 4WIRE as necessary
}
void loop() {
uint16_t rtd = thermo.readRTD();
//Serial.print("RTD value: "); Serial.println(rtd);
float ratio = rtd;
ratio /= 32768;
//Serial.print("Ratio = "); Serial.println(ratio,8);
//Serial.print("Resistance = "); Serial.println(RREF*ratio,8);
//Serial.print("Temperature = ");
Serial.println(thermo.temperature(RNOMINAL, RREF));
// Check and print any faults
uint8_t fault = thermo.readFault();
if (fault) {
Serial.print("Fault 0x"); Serial.println(fault, HEX);
if (fault & MAX31865_FAULT_HIGHTHRESH) {
Serial.println("RTD High Threshold");
}
if (fault & MAX31865_FAULT_LOWTHRESH) {
Serial.println("RTD Low Threshold");
}
if (fault & MAX31865_FAULT_REFINLOW) {
Serial.println("REFIN- > 0.85 x Bias");
}
if (fault & MAX31865_FAULT_REFINHIGH) {
Serial.println("REFIN- < 0.85 x Bias - FORCE- open");
}
if (fault & MAX31865_FAULT_RTDINLOW) {
Serial.println("RTDIN- < 0.85 x Bias - FORCE- open");
}
if (fault & MAX31865_FAULT_OVUV) {
Serial.println("Under/Over voltage");
}
thermo.clearFault();
}
Serial.println();
delay(5000);
}
Ah oui j’ai pas fait gaffe. Du coup l’Arduino serait relié à Jeedom par le port USB c’est ça ? Dans ce cas, on doit pouvoir s’en sortir avec un script (python, php, bash…) et le plugin Script côté Jeedom. Mais sûrement un peu plus compliqué.
Je voulais justement éviter un esp* pour eviter de passer par une connection wifi, mais si c’est la seule solution, je passerai par la. Je vais tester la solution de @seb821 avec le plugin script en esperant que ça fonctionne, sinon je passerai par un esp8266
Autant je maitrise jeedom et tout ces plugins autant la programmation c’est nouveau pour moi. Le raspberry, l’arduino et le module max31865 sont dans le même coffret électrique, a final je pourrais le passer de l’arduino en me branchant directement sur les GPIO du raspberry non ?
Bon j’ai finalement réussi, en me branchant sur les GPIO du Raspberry, en activant i2c et le port série sur le gpio et en téléversant le code python. Je me passe du coup de l’Arduino et c’est très bien comme ça !