RaspFR :: Forum

Forum de la communauté francophone de Raspberry PI.

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

Annonce

Attention !!! Le serveur sera migré d'ici la fin de l'année, une coupure du forum est donc à prévoir dans les semaines à venir.

#1 20-04-2014 22:14:00

Prav26
Membre
Inscription : 27-03-2014
Messages : 21

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

Hors ligne

#2 20-04-2014 22:22:35

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

Re : Problème lecture données port usb

Il y a une note dans l'article indiquant que l'auteur n'arrive pas à faire fonctionner la méthode avec tail sous Ubuntu. wink

Hors ligne

#3 21-04-2014 09:27:59

Prav26
Membre
Inscription : 27-03-2014
Messages : 21

Re : Problème lecture données port usb

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.

Hors ligne

#4 21-04-2014 10:54:49

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

Re : Problème lecture données port usb

Et tu ne peux pas utiliser shell_exec en combinaison avec screen ?

Hors ligne

#5 21-04-2014 10:58:52

Prav26
Membre
Inscription : 27-03-2014
Messages : 21

Re : Problème lecture données port usb

Non malheureusement ça ne fonctionne pas. C'est inscrit qu'il me manque un fichier pour exécuter la commande.

Hors ligne

#6 21-04-2014 11:23:38

Uggy
Administrateur
Inscription : 21-06-2013
Messages : 1 049

Re : Problème lecture données port usb

essaye une alternative:

less +F /dev/ttyACM0

Hors ligne

#7 21-04-2014 13:42:42

Prav26
Membre
Inscription : 27-03-2014
Messages : 21

Re : Problème lecture données port usb

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.

Dernière modification par Prav26 (21-04-2014 13:43:41)

Hors ligne

#8 21-04-2014 17:10:24

Uggy
Administrateur
Inscription : 21-06-2013
Messages : 1 049

Re : Problème lecture données port usb

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

Hors ligne

#9 21-04-2014 21:05:49

Prav26
Membre
Inscription : 27-03-2014
Messages : 21

Re : Problème lecture données port usb

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.

64u2.png

Hors ligne

#10 22-04-2014 09:00:13

Jeoffrey
Administrateur
Lieu : Nancy
Inscription : 17-06-2013
Messages : 1 027
Site Web

Re : Problème lecture données port usb

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.

Hors ligne

#11 22-04-2014 10:34:56

Prav26
Membre
Inscription : 27-03-2014
Messages : 21

Re : Problème lecture données port usb

Merci Jeoffrey. Mais alors comment puis-je faire pour lire les données de l'Arduino du port USB ?

Hors ligne

#12 22-04-2014 10:52:14

Nekrofage
Membre
Lieu : In Hell with God
Inscription : 24-06-2013
Messages : 412
Site Web

Re : Problème lecture données port usb

Bonjour,

Pour lire des info de l'Arduino par interface série, j'utilise ce mini code en Python : https://bitbucket.org/Nekrofage/station … ?at=master

Hors ligne

#13 22-04-2014 14:34:06

Prav26
Membre
Inscription : 27-03-2014
Messages : 21

Re : Problème lecture données port usb

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

Excuse-moi pour toutes ces questions car je ne suis qu'un débutant  tongue

Dernière modification par Prav26 (22-04-2014 15:06:10)

Hors ligne

#14 22-04-2014 15:59:33

Nekrofage
Membre
Lieu : In Hell with God
Inscription : 24-06-2013
Messages : 412
Site Web

Re : Problème lecture données port usb

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

Il y a des "posts" à ce sujet, fait une petite recherche sur le forum.

Hors ligne

#15 22-04-2014 18:44:40

Prav26
Membre
Inscription : 27-03-2014
Messages : 21

Re : Problème lecture données port usb

Merci infiniment Nekrofage ça fonctionne sur le terminal Ubuntu !  smile

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 big_smile

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 :

[== PHP ==]
<html> 
<body> 

<?php
$output = shell_exec('python humidite.py');
echo "<pre>$output</pre>";
?>

</body> 
</html> 

Script python :

[== 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 ?  wink

Dernière modification par Prav26 (23-04-2014 10:01:03)

Hors ligne

#16 23-04-2014 13:19:45

Nekrofage
Membre
Lieu : In Hell with God
Inscription : 24-06-2013
Messages : 412
Site Web

Re : Problème lecture données port usb

Prav26 a écrit :

Par exemple 42,30% s'affichait 2,30%. Mais maintenant ça fonctionne big_smile

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

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

Dernière modification par Nekrofage (23-04-2014 13:20:06)

Hors ligne

#17 23-04-2014 13:53:15

gambit
Membre
Lieu : Lyon
Inscription : 20-02-2014
Messages : 228

Re : Problème lecture données port usb

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

Dernière modification par gambit (23-04-2014 13:59:08)


cool

Hors ligne

#18 23-04-2014 22:39:11

Prav26
Membre
Inscription : 27-03-2014
Messages : 21

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 tongue A votre avis c'est faisable en modifiant le script Python ou PHP ?

Voici mon nouveau script Python :

[== 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

Hors ligne

#19 24-04-2014 08:27:05

chris57100
Chris
Lieu : Thionville
Inscription : 23-06-2013
Messages : 1 407
Site Web

Re : Problème lecture données port usb

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

Hors ligne

Pied de page des forums