Communication série, groupe A : Différence entre versions
Ligne 162 : | Ligne 162 : | ||
~$ ./demon test | ~$ ./demon test | ||
+ | |||
+ | [[Fichier:unnamed.jpg]] | ||
après avoir établie la connection série avec la carte Arduino on a lancé notre interface web. | après avoir établie la connection série avec la carte Arduino on a lancé notre interface web. | ||
Version du 30 mai 2011 à 16:33
Première séance:
Partie électronique:
- résolution du cablage électronique à exécuter pour passer d'une liaison série à une liaison parallèle sur papier.
- Tout les composants nécessaire au cablage pour la réalisation ont été trouvés.
Partie informatique:
OBJECTIFS:
-Création de la page d'accueil du site internet (HTML) qui permet de saisir et d'afficher une chaîne de caractères.
-Début de la réalisation des deux fichiers PHP permettant de transmettre et de recevoir une chaîne de caractères.
-Test de la fonction démon permettant de communiquer avec le port série.
I)- Création de la page d'accueil
Le rôle de ce fichier HTML est d'acquérir et d'afficher un message. Pour cela on utilise quartes fonctions scripts :
-Envoyer: fait appel au fichier PHP (fileaccess.php) => transmission du message saisi sur la page html au fichier php. -Charger: fait appel au fichier PHP (fileread.php) => réception du message transmit sur le port série. -Afficher: fait appel à la fonction charger qui retourne le message reçu pour ensuite l'afficher.
II)- Début de la création des fichiers PHP
Les deux fonctions PHP ont pour rôle de récupérer caractère par caractère le message saisi sur la page HTML ,le transmettre sur la liaison série pour ensuite le recevoir et l'afficher sur la page HTML.
Durant cette première séance on a réalisé la fonction fileaccess.php
fileaccess.php :
fonction fileaccess.php Constantes: DIR : contient la location du fichier teste Variables: message:tableau contenant la chaîne de caractères Pour i = 0 à taille_de (message) faire : byte <- convertir message[i] en ASCII ecrire la variable byte dans le fichier de nom : DIR/send(i) fin du pour fin fonction
*les fonctions php utilisées :
strlen() retourne la taille d'un string file_put_contents() écrit dans un fichier ord() retourne la valeur ASCII d'un caractère
III)- Teste du démon:
Après avoir récupéré et compilé le fichier demon.c on l'exécute dans un dossier test. Le dossier test va recevoir les fichiers contenant les caractères reçus et à transmettre via la liaison série.
Deuxième séance:
Partie électronique:
Objectifs de la seconde séance:
- terminer la partie électronique du sujet et des fonctions de lecture et d'écriture.
Pour cette 2ème séance, nous avons réussi à concevoir la partie émission du message binaire (conversion parallèle / série).
Nous avons testé notre montage d'émission sur la carte et visualisé le signal reçu sur un osciloscope numérique ( les tests sont Ok , signal bien reçu à la bonne frèquence )
nous avons également terminé la parie réception à quelques détails près, un problème de gestion du démarage de la lecture de la donnée série est à revoir, en effet notre système de "comptage" ( voir schéma pour plus de détails ) ne doit démarrer que lors de la prèsence du bit de start.
objectif de la 3ème séance: nous allons donc terminer la partie réception et relié la partie informatique et électronique.
schéma de la partie réception:
Partie informatique :
OBJECTIFS:
-Réaliser la fonction fileread.php qui a pour rôle de lire les caractères reçu via la liaison série et de les transmettre à la page HTML qui se chargera de les afficher.
-Teste de l'ensemble de l'interface en établissant une liaison série avec la carte électronique Arduino.
I)- Réalisation de la fonction fileread.php
fonction fileread.php Constantes: DIR : contient la location du fichier teste Variables: files:contient tt les noms des fichiers existants dans le dossier teste Pour i = 0 à nombres de (files) faire : si ( les 5 première lettres du nom de files[i] == 'recv-') alors tab[]= le contenu du fichier en décimal retourne tab fin fin du pour fin fonction
*les fonctions php utilisées :
count() compte tous les éléments d'un tableau. substr() retourne une partie d'un string. trim() rajoute des espaces entre les caractères d'un string. file_get_contents() récupère le contenu d'un fichier.
Ce fichier PHP retourne la valeur du caractère lu (reçu) en décimale. La conversion décimal -> caractère se fera au niveau de l'HTML dans la fonction afficher .
Pour i=0 à taille du message reçu alors Affichage de ( conversion_décimal_caractère de ( message_reçu[i] ) ) fin
* fonction java script :
String.fromCharCode() convertion décimal caractére
II)-Teste de l'interface à l'aide de la carte Arduino :
Après avoir télécharger le code du demon, on compile le fichier demon.c pour ensuite l'exécuter dans le dossier teste.
~$ gcc -o demon demon.c ~$ ./demon test
après avoir établie la connection série avec la carte Arduino on a lancé notre interface web.
Troisième séance
Partie électronique:
Pour cette dernière séance, nous avons terminé la partie réception en réglant le problème rencontré précèdement ( départ du système de comptage de bit sur 9600Hz a partir du bit de start )
Ensuite nous avons testé notre système à l'aide de l'hyperterminal d'un ordinateur relié à la nanoboard )
test de la partie émission: on envoie le code binaire corespondant à une lettre et l'on reçoit la lettre corespondante sur le terminal. test de la partie réception: on envoie une lettre à l'aide de l'hyperterminal et on l'a visualise sur la nanoboard grâce aux leds, le code corespondant.
Une fois les tests réalisés avec succès, nous avons rélié la partie informatique et électronique en reliant la foxboard avec la nanoboard.
Voici les schémas électronique finale de la partie réception émission et de l'ensemble.
partie émission: partie réception: schéma global:
Partie informatique :
Objectifs :
-Paramétrage de la Foxboard.
-tester la communication avec la nanoboard.
I)-Paramétrage de la Foxboard :
Après avoir copié les fichiers php et html sur le répertoire var/www de la carte mémoire de la foxboard.
On a modifié l'adresse IP pour cela il suffisait se modifier le fichier /etc/network/interfaces en rajoutant l'adresse IP souhaitée.
On a modifié l'adresse du serveur existant pour le remplacer par celui de Polytech'Lille. Dans le fichier /etc/apt/sources.list on a remplacé la ligne deb http://ftp.it.debian.org/debian lenny main par deb http://ftp.polytech-lille.fr/debian lenny main contrib non-free.
II)- Teste de la communication avec la nanoboard
On relie la foxboard à l'eeePC et à la nanoboard.
-On se connecte à la foxboard :
~$ root@172.26.79.102
-Pour ensuite compiler et lancer le demon :
foxboard~$ gcc -o demon demon.c foxboard~$ ./demon test
Après avoir établie la connection, on lance l'interface web sous un navigateur sur l'eeePC et là on est prêt à saisir notre chaîne de caractère à transmettre.