Messages : 19
Sujets : 3
Inscription : Mar 2014
Bonsoir à tous,
J'arrive à lire les données de ma carte Arduino Uno reliée à mon PC par câble USB en utilisant la commande
screen /dev/ttyACM0 9600 sur le terminal Ubuntu. Mais pour cela j'ai du installer
screen.
J'ai essayé la commande
tail -f /dev/ttyACM0 mais ça ne fonctionne pas.
J'ai vraiment besoin de la commande
tail car j'aimerais l'utiliser dans une page php.
Je me suis aidé de ce tuto pour les commandes :
http://arduino103.blogspot.fr/2011/05/ut...duino.html
Pourquoi ça ne fonctionne pas ? Pourriez-vous m'aider svp ?
Messages : 168
Sujets : 3
Inscription : Jan 2014
Il y a une note dans l'article indiquant que l'auteur n'arrive pas à faire fonctionner la méthode avec tail sous Ubuntu.
Messages : 19
Sujets : 3
Inscription : Mar 2014
Oui mais est-ce que vous avez une autre méthode svp ? Car sur ma page en php j'ai besoin d'utiliser une commande shell_exec afin de lire les mesures de l'arduino connecté en usb sur mon pc sur une page web.
Messages : 168
Sujets : 3
Inscription : Jan 2014
Et tu ne peux pas utiliser shell_exec en combinaison avec screen ?
Messages : 19
Sujets : 3
Inscription : Mar 2014
Non malheureusement ça ne fonctionne pas. C'est inscrit qu'il me manque un fichier pour exécuter la commande.
Messages : 1,031
Sujets : 17
Inscription : Jun 2013
essaye une alternative:
less +F /dev/ttyACM0
Messages : 19
Sujets : 3
Inscription : Mar 2014
J'ai tapé less +F /dev/ttyACM0 tel quel sur le terminal Ubuntu et ça m'inscrit :
/dev/ttyACM0 is not a regular file (use -f to see it)
Je ne comprends pas.
(Modification du message : 21-04-2014, 12:43:41 par
Prav26.)
Messages : 1,031
Sujets : 17
Inscription : Jun 2013
Prav26 a écrit :J'ai essayé la commande tail -f /dev/ttyACM0 mais ça ne fonctionne pas.
Peux tu être plus précis? (une erreur, rien, il attend, il se ferme, etc..)
Messages : 19
Sujets : 3
Inscription : Mar 2014
Voila ce qui se passe quand je tape la commande tail -f /dev/ttyACM0. Il y a un curseur qui clignote et je peux écrire du texte.
Messages : 1,023
Sujets : 22
Inscription : Jun 2013
Tail -f lis le fichier et t'affiche sur la sortie standard le contenu du fichier.
Donc normal que tu puisses y écrire des choses, ça ne sert cependant à rien, car ça n'envoie rien réellement.
Messages : 19
Sujets : 3
Inscription : Mar 2014
Merci Jeoffrey. Mais alors comment puis-je faire pour lire les données de l'Arduino du port USB ?
Messages : 414
Sujets : 71
Inscription : Jun 2013
Bonjour,
Pour lire des info de l'Arduino par interface série, j'utilise ce mini code en Python :
https://bitbucket.org/Nekrofage/stationm...?at=master
Messages : 19
Sujets : 3
Inscription : Mar 2014
Merci Nekrofage mais je ne sais pas comment exécuter un code en Python.
J'ai compilé mon programme .ino sur l'Arduino et ensuite j'ai enregistré ton script tel quel dans un fichier .py. Ai-je besoin de tout ton code pour lire les données du port usb ? A quoi sert la ligne
filename = open("meteo.csv", 'w') ? Mais comment faire pour utiliser ton script Python sur une page web .php ?
Excuse-moi pour toutes ces questions car je ne suis qu'un débutant
(Modification du message : 22-04-2014, 14:06:10 par
Prav26.)
Messages : 414
Sujets : 71
Inscription : Jun 2013
Je te lance idée de base, à toi de la modifié et donc l'adapté à tes besoins.
Prav26 a écrit :Ai-je besoin de tout ton code pour lire les données du port usb ?
Il y a sûrement des morceaux qui ne te seront pas utiles.
Prav26 a écrit :A quoi sert la ligne filename = open("meteo.csv", 'w') ?
C'est spécifique à mon appli. Cela écrit dans le fichier "meteo.csv" mais donné reçu par mes capteurs.
Prav26 a écrit :Mais comment faire pour utiliser ton script Python sur une page web .php ? 
Il y a des "posts" à ce sujet, fait une petite recherche sur le forum.
Messages : 19
Sujets : 3
Inscription : Mar 2014
Merci infiniment Nekrofage ça fonctionne sur le terminal Ubuntu !
J'ai un peu modifié ton programme afin de ne lire que les mesures. Je n'arrivais pas à lire la 1ère unité de mes mesures. Par exemple 42,30% s'affichait 2,30%. Mais maintenant ça fonctionne
Mais j'ai encore un soucis. J'ai crée un répertoire dans var/www en localhost pour tester le script python sur une interface web. J'ai mis à l'intérieur le script php + python. Je leur est donné les droit chmod 777 :
Script php :
Code :
[== PHP ==]
<html>
<body>
<?php
$output = shell_exec('python humidite.py');
echo "<pre>$output</pre>";
?>
</body>
</html>
Script python :
Code :
[== Indéfini ==]
#!/usr/bin/python
import serial
import time
locations=['/dev/ttyACM0']
for device in locations:
try:
ser = serial.Serial(device, baudrate=9600, timeout=1, writeTimeout=1)
while True:
ligne = ser.readline()
print ligne
except:
print "Echec de connexion sur", device
Mais ça m'affiche sur ma page web :
Echec de connexion sur /dev/ttyACM0
D'où vient le problème stp ?
(Modification du message : 23-04-2014, 09:01:03 par
Prav26.)
Messages : 414
Sujets : 71
Inscription : Jun 2013
Prav26 a écrit :Par exemple 42,30% s'affichait 2,30%. Mais maintenant ça fonctionne 
Tu fais aussi un projet "météo" ?
C'était quoi l'erreur ?
Prav26 a écrit :J'ai mis à l'intérieur le script php + python. Je leur est donné les droit chmod 777 :
Je crois que c'est pas suffisant de mettre ces droit, il faut aussi changer le owner du fichier (cf. chown)
Prav26 a écrit :Mais ça m'affiche sur ma page web : Echec de connexion sur /dev/ttyACM0
D'où vient le problème stp ? 
C'est aussi un problème de permission sur le device /dev/ttyACM0
Je fais appel au membre du forum qui sont un peu plus calé que moi pour résoudre ce problème !! O_o
(Modification du message : 23-04-2014, 12:20:06 par
Nekrofage.)
Messages : 228
Sujets : 12
Inscription : Feb 2014
À mon avis, la solution est indiquée dans l'excellent article, déjà cité :
http://playground.arduino.cc/Interfacing/LinuxTTY
En particulier,
When all else fails, cf la fin de l'article.
(Modification du message : 23-04-2014, 12:59:08 par
gambit.)
Messages : 19
Sujets : 3
Inscription : Mar 2014
C'est bon j'ai réussi à afficher les 15 premières mesures de mon capteurs d'humidité sur ma page web en PHP. J'ai résolu le problème de permission
Mais j'aimerais que ça m'affiche que sur une seule ligne les mesures et que ça défile continuellement. Par exemple je ferais un script PHP où il y aura écris
Humidité=....... et sur ces pointillés les mesures changeront. J'espère que je me suis fait comprendre :p A votre avis c'est faisable en modifiant le script Python ou PHP ?
Voici mon nouveau script Python :
Code :
[== Indéfini ==]
#!/usr/bin/python
import serial
import time
locations=['/dev/ttyACM0']
for device in locations:
try:
ser = serial.Serial(device, baudrate=9600, timeout=1, writeTimeout=1)
for _ in range(15):
ligne = ser.readline()
print ligne
except Exception as why:
print "Echec de connexion : %s" % why
Messages : 1,410
Sujets : 49
Inscription : Jun 2013
Tu peux passer par le module curses disponible pour Python qui permet de gérer les positions d'affichage dans un écran de terminal.
Raspberry Pi Home Server :
http://www.pihomeserver.fr
Hotspot Wifi avec portail captif pour Raspberry Pi:
Kupiki Hotspot