Voila, nous sommes nombreux à faire cette manip, faire communiquer un ARDUINO avec un RASPBERRY en USB.
Pour ma part, grâce a ce site (merci !) et d'autres, ma communication se passe bien, SAUF QUE, à chaque envoie d'une trame à l'ARDUINO, l'ARDUINO se reset.
Étrangement, la réponse de l'ARDUINO a la requête du RASPBERRY est correcte.
Coté RPI
Côté ARDUINOSerialArduino = serial.Serial('/dev/ttyACM0')
while TRUE:
#Envoi de la consigne
# Format de l'envoi consigne CSG18.5_ON$
try:
StrSend = "CSG" + str(ParCONS) + StrPWCNT + "$"
SerialArduino.write(StrSend)
except Error as e:
time.sleep(2)
#Reception des datas
lines=SerialArduino.readline()
time.sleep(1)
SerialArduino.close()
.....
Il semblerait donc, et d'après nos confrères du forum Arduino, que l'ouverture de port côté RPI RESET L'ARDUINO. de fait, est il possible d'ouvrir le port au démarrage du RPI, de le laisser ouvert et de l'utiliser dans mon fichier Python qui est exécuté toutes les minutes (crontab)while (Serial.available()>0) { // tant qu'un octet en reception
OctetReception=Serial.read(); // Lit le 1er octet recu et le met dans la variable
NbOctet=NbOctet+1;
if (OctetReception=='$') { // si Octet recu est l'octet de queue
Incoming=1;
delay(100); // pause
break; // sort de la boucle while
}
else {
CaractRecept=char(OctetReception); // convertit l'octet recu en caractere
if ((CaractRecept != char(10)) && (CaractRecept != char(13))){ // Eviter les retour chariot et saut de ligne
ChaineRecept=ChaineRecept+CaractRecept; // ajoute le caratere au String
}
}
}
.....
Si quelqu'un avait ne serait-ce qu'une piste?
Merci à tous