RaspFR :: Forum

Forum de la communauté francophone de Raspberry PI.

Vous n'êtes pas identifié(e).

Annonce

Canal irc: #raspfr sur zeolia.net

#1 11-12-2016 14:24:35

sohio
Membre
Inscription : 11-12-2016
Messages : 6

Dialoguer entre Arduino et Raspberry pi

Bonjour,

Je suis sur un passionné de mer, du bateau et d'informatique. Vu la complexité de l'électronique d'un bateau et les faibles ressources énergétiques disponibles à bord, je me suis tout naturellement orienté vers un Raspberry Pi2 pour contrôler un maximum de paramètres, du contrôle du tableau électrique, jusqu'à la visualisation de plusieurs températures (eau, intérieur,moteur) et je cherche en ce moment le moyen de visualiser sur le raspberry les données issues d'un Arduino programmé pour en faire un pilote électrique.
L'arduino muni d'un capteur DOF10 me donnera essentiellement le cap magnétique corrigé en fonction des mouvements du bateau ainsi que la pression atmosphérique que je dirigerai vers une base MySql.(j'attends encore ce capteur pour finaliser le pilote.)
Je peux d'ores et déjà relier les 2 appareils (Arduino et Raspberry en série par le port UART et j'obtiens dans la console du raspi les informations issues de l'arduino.
Mon gros problème est de transférer ces données de mon script python (de lecture du port série) vers une page php qui serait rafraichie toutes les secondes.J'ai l'impression qu'il y a un problème de timing (vu que les variables changent très vite sur le flux série).
Pour les températures, le script python qui se charge de les recueillir va ouvrir un fichier, le lit et va l'imprimer .Je recueille facilement ces données dans ma page php avec la commande:   $output = shell_exec('python /home/pi/tempera.py');
Ceci ne marche pas avec les valeurs issues du script série. en fait, ce script marche très bien en console mais n'envoie rien à ma page php.
Si quelqu'un a une suggestion ou voudrait plus de détails, je suis preneur avec toute ma reconnaissance.
Je suis débutant en programmation, mais passionné, curieux et têtu.


sohio

Hors ligne

#2 11-12-2016 21:18:33

chevelu
Membre
Inscription : 28-01-2014
Messages : 161

Re : Dialoguer entre Arduino et Raspberry pi

A vue de nez, je dirais que lorsque tu exécutes

$output = shell_exec('python /home/pi/tempera.py');

c'est avec l'utilisateur www-data (l'utilisateur du serveur web), qui ne doit pas avoir le droit de lire sur le port série, alors que lorsque tu exécutes en console, c'est avec un utilisateur qui y est autorisé (root ? pi ?).
Ca pourrait expliquer le dysfonctionnement, mais sans plus d'information, c'est un peu difficile à diagnostiquer.
Peut-être qu'on pourrait t'en dire plus avec le contenu du fichier /home/pi/tempera.py.

Hors ligne

#3 12-12-2016 12:19:03

CrazyCat
Chat
Inscription : 14-01-2016
Messages : 399

Re : Dialoguer entre Arduino et Raspberry pi

Et j'ajouterai qu'il vaut mieux mettre le chemin complet vers python

Hors ligne

#4 12-12-2016 14:58:24

sohio
Membre
Inscription : 11-12-2016
Messages : 6

Re : Dialoguer entre Arduino et Raspberry pi

merci de ta réponse CrazyCat, mais je ne pense pas que le problème vienne de là, car la communication script vers php marche très bien lorsque mon script python donne une valeur fixe et s'arrête (tempera.py) mais ne marche plus dès lors que le script continue de tourner pour envoyer les valeurs du port série :serie.py.(les données qu'il envoie sont éphémères et remises à jour plusieurs fois par seconde) ce qui semble être la clef du problème. Je cherche toujours et peut être la lumière viendra!!!

Hors ligne

#5 12-12-2016 15:09:43

CrazyCat
Chat
Inscription : 14-01-2016
Messages : 399

Re : Dialoguer entre Arduino et Raspberry pi

Ok, je comprends mieux le souci. PHP ne voit pas de fin d'exécution et donc attends indéfiniment.
Le moyen le plus simple serait peut-être que tempera.py mette à jour un fichier (écrasement, pas append) chaque fois qu'il reçoit une nouvelle valeur et que le php lise ce fichier.

Maintenant, la question que je me pose, c'est l'utilité du PHP. On peut parfaitement attaquer MySQL en python et donc s'asbtraire d'une surcouche qui peut provoquer des désagréments comme celui que tu rencontres.

Hors ligne

#6 12-12-2016 16:10:03

sohio
Membre
Inscription : 11-12-2016
Messages : 6

Re : Dialoguer entre Arduino et Raspberry pi

OK
D'abord un grand merci à chevelu qui a détecté un pb de droits de www-data sur le port série.j'ai corrigé cela par un 'sudo usermod -a -G dialout www-data' ce qui fait que je peux faire marcher mon script sous www-data. Le problème php reste toujours présent à ce stade, mais c'est un grand pas en avant!!

CrazyCat, je vois que tu as bien cerné le problème malgré mes explications un peu foireuses!!
J'essaye ce soir ton idée qui me parait bonne et je retournerai poster des nouvelles!!
Merci

Hors ligne

#7 12-12-2016 16:13:26

sohio
Membre
Inscription : 11-12-2016
Messages : 6

Re : Dialoguer entre Arduino et Raspberry pi

Encore un petit détail, je tiens à me servir de php car j'aimerais pouvoir consulter les valeurs reçues sur un smartphone depuis le cockpit du bateau!!

Hors ligne

#8 12-12-2016 16:41:40

CrazyCat
Chat
Inscription : 14-01-2016
Messages : 399

Re : Dialoguer entre Arduino et Raspberry pi

Rien n'empêche de conserver le PHP pour la consultation:
- le python lit le port serie et alimente la base,
- le php affiche les dernières valeurs entrées.

Hors ligne

#9 12-12-2016 23:22:05

sohio
Membre
Inscription : 11-12-2016
Messages : 6

Re : Dialoguer entre Arduino et Raspberry pi

Super CrazyCat, mon projet a bien avancé grâce à tes bons conseils;je n'ai pas pris l'option de Mysql (mais j'y reviendrai sans doutes plus tard pour garder un historique de la navigation!!), et j'ai créé un fichier txt qui se met à jour par mon script python en ne gardant que la dernière ligne envoyée par ce script. ce fichier est lu et traité par la page php rafraichie toutes les secondes et je peux suivre quasi en direct les variations de mes capteurs.merci à toi!!!Je posterai encore sous cette rubrique, quitte à en changer le titre(controle d'un bateau avec raspberry et arduino par ex:)....l'aventure est encore longue!!!!!!!!!!!!

Hors ligne

Pied de page des forums