Enseignement de spécialité: Difference between revisions
Line 150: | Line 150: | ||
</html> | </html> | ||
Pour vérifier tapez | Pour vérifier tapez <code>http://localhost/forme.html</code> dans la barre URL du navigateur. | ||
= Application mobile = | = Application mobile = |
Revision as of 07:36, 10 November 2023
Description
Ces pages concernent l'enseignement de spécialité dédié à la spécialité système embarqué de Polytech'Lille. Plus particulièrement la filière Internet et sécurité.
Vous allez concevoir et réaliser un dispositif couvrant tous les domaines couverts par la spécialité système embarquée filière internet des objets.
Votre objectif est de commander un système embarqué minimal à l'aide d'une application tournant sur un téléphone :
- l'application mobile se connecte au réseau par WiFi ;
- le site Web contacté par l'application mobile communique avec le système embarqué en série asynchrone au dessus d'un bus USB.
D'un point de vue protocoles :
- la communication entre l'application mobile et le serveur Web utilise le protocole HTTP ;
- la page Web utilisée par l'application mobile communique avec le microcontrôleur de votre circuit imprimé par simple envoi d'octets sur une liaison série.
Carte électronique
La carte électronique qu'il vous est demandé de réaliser est une carte très simple comportant un microcontrôleur minimal permettant d'implanter un périphérique USB de type port série et de gérer quelques LED.
Pour vous faciliter la tâche le schéma électronique est déjà en partie réalisé, voir ci-contre.
Il vous reste à ajouter les composants suivants :
- une LED témoin d'alimentation avec sa résistance associée, pour ces deux composants vous utiliserez des empreintes 1206 impérial ;
- deux condensateurs de filtrage pour l'alimentation USB (100nF et 4,7uF par exemple), toujours avec des empreintes en 1206 impérial ;
- une ou deux LED commandées par le microcontrôleur sur des ports libres en utilisation normale de la carte, même remarque pour les empreintes.
Une fois le schéma électronique complété et validé par un intervenant, vous pouvez passer au routage de votre carte. Le routage consiste à placer les composants le mieux possible pour pouvoir transformer les connexions entre broches de circuits en pistes cuivres. Tout l'art consiste à minimiser la longueur des pistes, le nombre de façes et surtout à ne jamais faire en sorte que des pistes se touchent (sinon court-circuit). Vous allez partir sur une seule face, ce qui facilitera la création du circuit imprimé par la graveuse du service électronique. Nous vous promettons qu'il est possible de réaliser ce routage sur une seule face et sans faire passer de piste sous les composants à l'exception du microcontrôleur. Pour le microcontrôleur vous avez le droit de passer entre les deux rangées de broches, mais pas entre deux broches adjacentes.
Une difficulté de votre routage est de positionner les deux connecteurs 4 broches alignés et écartés de 12,3mm. Cette disposition est nécessaire pour que votre carte puisse s'enficher sur les connecteurs J1 et J2 du programmateur dont le cicruit imprimé est donné à droite.
Pour vous aider les composants présents sur le schéma électronique partiel sont déjà placés de façon optimale. Par optimale, nous voulons dire que ce placement permet le routage tel que décrit plus haut à condition que vous placiez correctement les autres composants.
Projets KiCAD :
- le projet KiCAD PeiP à compléter : File:2023-carte-partielle.zip ;
- le projet KiCAD du programmateur : File:2023-programmateur.zip.
Une fois votre routage validé par un encadrant, demandez sa fabrication sur le site plateforme électronique. La carte fabriquée, il ne vous reste plus qu'à souder les composants et à la programmer avec un Arduino servant de programmateur.
Programmation de la carte
La dernière étape est celle de la programmation de la carte. Vous allez commencer par vérifier que votre carte fonctionne avec l'IDE Arduino. Par défaut, l'IDE Arduino ne connait pas le microcontrôleur ATtiny85. Utilisez l'extension [1] pour pouvoir programmer votre carte. Ensuite regardez les numéros des entrées/sorties utilisés par l'IDE pour écrire un petit programme avec l'IDE pour faire clignoter une de vos LED commandées. Vous pouvez partir de l'exemple Blink
de la section 01.
La programmation de votre carte se fait avec le programmateur dont la carte a été donné plus haut. La carte est en fait une interface entre un Arduino Nano et votre carte. Demandez-en un exemplaire à vos encadrants. Pour utiliser cet outil vous devez sélectionner, dans le menu "Outils", le programmateur appelé "Arduino as ISP".
Le programme final doit gérer le bus USB, pour cela nous utiliserons une bibliothèque utilisable sur un ATtiny85 : V-USB. Le principe est d'arriver à lire un octet sur une liaison USB/série et à implanter cet octet comme valeur d'attente pour le clignotement d'une LED commandée (en considérant l'unité de cette valeur en centième de seconde par exemple).
Vous partirez du code File:2023-ensspe-usb.zip. Nous vous laissons enrichir la fonction usbFunctionWriteOut
du fichier source tiny85/main.c
avec les commandes de votre choix. Vous pouvez aussi ajouter des variables globales et une fonction pour implanter le minuteur, cette fonction est à appeler dans la boucle principale de la fonction main
. La compilation se fait via la commande make
dans le répertoire tiny85/default
.
Le programme ne se télécharge pas avec l'IDE Arduino mais directement avec les commandes :
avrdude -c stk500v1 -p attiny85 -P /dev/ttyUSB0 -b 19200 -U flash:w:cdctiny85.hex avrdude -c stk500v1 -p attiny85 -P /dev/ttyUSB0 -b 19200 -U lfuse:w:0xe1:m -U hfuse:w:0xdd:m
Testez ensuite la carte en utilisant la commande Unix minicom -D /dev/ttyUSB0 -b 9600
.
Application Web
Vous allez connecter votre carte à l'un des PC des salles de projet. Votre but à cette étape est de permettre de configurer la carte par une page Web dynamique.
Vérifiez que le paquetage du serveur Web apache2
est bien installé sur votre machine. Si nécessaire installez le paquetage avec la commande apt install apache2
. Les pages Web se trouvent dans le répertoire {\tt /var/www/html/}.
Vérifiez aussi que l'utilisateur correspondant à apache2
, c'est à dire, www-data
est bien membre du groupe dialout
. Pour cela regardez la ligne dialout
du fichier /etc/group
. Au besoin rajoutez www-data
en dernière colonne de cette ligne.
Ecrivez votre page Web en PHP dans le fichier http2serial.php
par exemple. Avant cela vérifiez que le paquetage PHP est bien installé. Vous pouvez toujours taper apt install php
, au pire le système vous dira que le paquetage est déjà installé.
La page est très simple à écrire. Il suffit d'écrire sur le port série correspondant à la carte un octet passé en paramètre. Un port série est un fichier un peu particulier sous Unix mais vous pouvez vous en tirer en utilisant un code semblable à celui ci-dessous :
<?php define('SERIAL_DEVICE','/dev/ttyACM0'); define('SERIAL_SPEED',9600); $number=250; system('stty -F '.SERIAL_DEVICE.' clocal -crtscts -ixon -ixoff'); system('stty -F '.SERIAL_DEVICE.' '.SERIAL_SPEED); file_put_contents(SERIAL_DEVICE,chr($number)); ?>
Pour récupérer l'octet à écrire sur le port série vous pouvez utiliser la méthode PHP pour récupérer une variable envoyée par HTTP. Cela se fait en utilisant l'expression $_REQUEST['duree']
par exemple.
Pour tester cette page Web dynamique, référencez-la au travers d'une forme HTML stockée dans le fichier forme.html
par exemple. Un exemple de forme peut être :
<html> <body> <form action="http2serial.php" method="post"> Fréquence : <input type="text" name="duree">
<input type="submit"> </form> </body> </html>
Pour vérifier tapez http://localhost/forme.html
dans la barre URL du navigateur.
Application mobile
Cette étape consiste à écrire un programme Android avec l'application MIT App Inventor. L'application doit permettre de régler le clignotement de la LED sur votre carte.
Il est supposé que votre smartphone peut se connecter sur le WiFi de la salle de projet.
Prise en main de MIT AppInventor
Effectuez les actions ci-dessous :
- Dans un navigateur, allez à l'adresse appinventor.
- Soit vous possédez un compte google et vous l'utilisez pour vous connecter à App Inventor. Sinon utilisez une de vos adresses e-mail pour créer un compte.
- Vous êtes maintenant sur la page de gestion des projets d'AppInventor2. La première chose est de créer un nouveau projet. Une fois créé, vous êtes automatiquement redirigés vers la page de votre projet. Cette page contient les différents éléments que vous pouvez ajouter dans l'application: boutons, images, horloges, capteurs, ...
- Dans le menu à droite vous avez deux vues : Designer et Blocks. Designer sert à définir les élèments visuels (ou non) de votre applications et Blocks permet de définir les traitements à réaliser quand vous interagissez avec les élèments de l'interface.
Première version de votre application
Pour prendre en main l'environnement de développement, nous allons réaliser une application simple qui se connectera sur la page forme.php
que vous avez écrit pour l'application Web.
Pour cela dans la vue Designer ajoutez une zone de texte, un bouton, et un navigateur web (WebViewer
). Dans la zone Blocks faites en sorte que la page web dont vous avez spécifié l'adresse dans la zone de texte soit affichée. Tester avec plusieurs pages Web et aussi avec une page de la forme http://zabethXX.plil.info/forme.html
.
Application complète
Cette première version simplifie la réalisation de l'application mobile et présente un certain nombre d'inconvénients (le premier étant de nécessiter un composant WebViewe
qui demande énormément de puissance / mémoire).
Vous allez donc réécrire une autre application qui utilise cette fois le composant Web
(il s'agit d'un composant non-visible sur l'interface). Ce composant vous permet de recevoir / envoyer des données à une page Web. Vous pouvez notamment regarder l'aide disponible à l'adresse [2].
Faites ensuite l'application qui effectue une requête HTTP de type POST sur l'URL de votre serveur Web (page http2serial.php
) et qui permet de configurer la fréquence de clignotement de la LED de votre carte.