Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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 ?

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 ? big_smile

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.

Hors ligne

#5 Le 23/04/2014, à 11:23

Prav26

Re : Problème lecture données port usb

Merci tiramiseb je comprends mieux big_smile 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 ? smile

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

Hors ligne

#7 Le 23/04/2014, à 12:04

Prav26

Re : Problème lecture données port usb

tiramiseb a écrit :

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 ? smile

<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> 
tiramiseb a écrit :

Que donne la commande suivante ?

ls -l /dev/ttyACM0

Cette commande me donne :

ec4j.png

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 wink

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 tongue 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...

Hors ligne

#10 Le 24/04/2014, à 08:51

Prav26

Re : Problème lecture données port usb

Ok tiramiseb et merci pour tout big_smile Je vais me mettre au Javascript et Ajax dès aujourd'hui.

Hors ligne