#1 Le 20/04/2014, à 22:17
- Prav26
Problème lecture données port usb
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/u … duino.html
Pourquoi ça ne fonctionne pas ? Pourriez-vous m'aider svp ?
Hors ligne
#2 Le 21/04/2014, à 15:20
- tiramiseb
Re : Problème lecture données port usb
Salut,
Avant d'utiliser tail, il faut configurer le tty avec stty : tu l'as fait ?
Sébastien Maccagnoni - https://www.maccagnoni.eu - https://www.domotego.com
Hors ligne
#3 Le 21/04/2014, à 16:01
- Prav26
Re : Problème lecture données port usb
Non pas du tout. Comment fais-tu ça tiramiseb ? A quoi cela sert stp ?
Hors ligne
#4 Le 22/04/2014, à 10:44
- tiramiseb
Re : Problème lecture données port usb
Hum.
Tu a dit que tu t'es inspiré d'un tuto en particulier ; ce tuto évoque stty.
Tu n'as pas utilisé stty, cela veut dire que tu n'as pas vraiment suivi le tuto...
Un périphérique tty (port série, etc) doit être configuré avant de pouvoir être utilisé : baudrate, parité, etc etc. Tant qu'il n'est pas configuré, ton tail ne fonctionnera pas. C'est le rôle de stty.
Sébastien Maccagnoni - https://www.maccagnoni.eu - https://www.domotego.com
Hors ligne
#5 Le 23/04/2014, à 11:23
- Prav26
Re : Problème lecture données port usb
Merci tiramiseb je comprends mieux Mais ça ne fonctionne toujours pas.
J'ai trouvé une autre solution à mon problème mais je rencontre un soucis.
J'ai trouvé un script Python (je suis novice) et j'aimerais exécuter ce sur une page web en PHP. Ce script me permet de lire les données envoyées par ma Arduino Uno sur le port USB de mon PC. Lorsque je l'exécuter sur le terminal Ubuntu ça fonctionne parfaitement.
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 droits chmod 777.
Script PHP :
<body>
<?php
$output = shell_exec('python humidite.py');
echo "<pre>$output</pre>";
?>
</body>
</html>
Script Python :
#!/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 ?
Hors ligne
#6 Le 23/04/2014, à 11:38
- tiramiseb
Re : Problème lecture données port usb
Tu ne veux pas plutôt utiliser ça ?
https://github.com/Xowap/PHP-Serial
(trouvé avec "php serial" sur google)
Echec de connexion sur /dev/ttyACM0
Probablement un problème de droit : ton serveur web (et donc PHP) tourne en tant que www-data, qui n'a peut-être pas les drotis là-dessus.
Que donne la commande suivante ?
ls -l /dev/ttyACM0
Sébastien Maccagnoni - https://www.maccagnoni.eu - https://www.domotego.com
Hors ligne
#7 Le 23/04/2014, à 12:04
- Prav26
Re : Problème lecture données port usb
Tu ne veux pas plutôt utiliser ça ?
https://github.com/Xowap/PHP-Serial
(trouvé avec "php serial" sur google)
J'ai modifié le script car je n'ai pas envie d'écrire sur l'Arduino mais seulement le lire. Ça ne fonctionne pas. La page est blanche. Mais je pense que le problème viens de moi. Pourrais-tu stp me dire où est le problème ?
<html>
<body>
<?php
include 'PhpSerial.php';
// Let's start the class
$serial = new PhpSerial;
// First we must specify the device. This works on both linux and windows (if
// your linux serial device is /dev/ttyS0 for COM1, etc)
$serial->deviceSet("/dev/ttyACM0");
// We can change the baud rate, parity, length, stop bits, flow control
$serial->confBaudRate(9600);
$serial->confParity("none");
$serial->confCharacterLength(8);
$serial->confStopBits(1);
$serial->confFlowControl("none");
// Then we need to open it
$serial->deviceOpen();
?>
</body>
</html>
Que donne la commande suivante ?
ls -l /dev/ttyACM0
Cette commande me donne :
Sinon à par ça, mon code en php qui fonctionne avec python est bon ?
Dernière modification par Prav26 (Le 23/04/2014, à 12:17)
Hors ligne
#8 Le 23/04/2014, à 22:44
- Prav26
Re : Problème lecture données port usb
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 A votre avis c'est faisable en modifiant le script Python ou PHP ?
Voici mon nouveau script Python :
#!/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
Dernière modification par Prav26 (Le 23/04/2014, à 22:45)
Hors ligne
#9 Le 23/04/2014, à 22:50
- tiramiseb
Re : Problème lecture données port usb
Oublie le Python. Tu es en PHP, reste en PHP.
Par contre, modifier quelque chose qui est déjà affiché, il va falloir passer par du Javascript et de l'AJAX...
Sébastien Maccagnoni - https://www.maccagnoni.eu - https://www.domotego.com
Hors ligne
#10 Le 24/04/2014, à 08:51
- Prav26
Re : Problème lecture données port usb
Ok tiramiseb et merci pour tout Je vais me mettre au Javascript et Ajax dès aujourd'hui.
Hors ligne