Enseignement de spécialité: Difference between revisions

From Wiki PeiP systèmes embarqués
Jump to navigation Jump to search
Line 109: Line 109:
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).
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 {\tt usbFunctionWriteOut} du fichier source {\tt 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 {\tt main}. La compilation se fait via la commande {\tt make} dans le répertoire {\tt tiny85/default}.
Vous partirez du code [[file:2023-ensspe-usb.zip]]. Nous vous laissons enrichir la fonction <code>usbFunctionWriteOut</code> du fichier source <code>tiny85/main.c</code> 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 <code>main</code>. La compilation se fait via la commande <code>make</code> dans le répertoire <code>tiny85/default</code>.


Le programme ne se télécharge pas avec l'IDE Arduino mais directement avec les commandes :
Le programme ne se télécharge pas avec l'IDE Arduino mais directement avec les commandes :

Revision as of 17:35, 9 July 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.
Téléphone
Délai des
éclats LED
Serveur Web
Demo apache2.jpg
HTTP2serial.php
Demo routeur.png
Carte électronique
Demo pcb.jpg


Demo fleche.jpg
POST
 
Demo fleche.jpg
0

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.

2023-schema-initial.png

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.

2023-routage-initial.png
2023-routage-programmateur.png

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 :

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

Attiny85-pins.png

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 {\tt minicom -D /dev/ttyUSB0 -b 9600}.