« CoursObjets » : différence entre les versions
Ligne 43 : | Ligne 43 : | ||
=== Généralités (liées à la vidéo) === | === Généralités (liées à la vidéo) === | ||
TODO ? | |||
=== HTTP, URL, adresse IP === | === HTTP, URL, adresse IP === |
Version du 23 avril 2014 à 20:29
Présentation de la semaine
vidéo d'intro
(généralités objets connectés, protocoles, différents shields..)
Les objets connectés sont de plus en plus présents dans notre quotidien, dans de très nombreux domaines (Surveillance, Santé, Domotique...). Vous en avez probablement tous un dans la poche, et oui votre téléphone est un objet connecté qui vous permet à la fois de téléphoner, d'être appelé et de surfer sur internet. Vous connaissez probablement les googles glasses - ces lunettes connectées qui vous permettent d'obtenir des informations sur ce que vous voyez via une connection internet intégrée - ou les google cars ces voitures sans pilotes connectées à des systèmes de cartographie et au réseau satellitaire. Vous avez aussi sûrement entendu parler des montres connectées qui permettent au jogger d'enregistrer ses performances et autre frigidaires connectés. Les exemples sont multiples. Les années à venir annoncent l'augmentation exponentielle des objets connectés dans notre quotidien, on parle de l'internet des objets.
En fabrication numérique, l'intérêt de pouvoir connecter des objets apparaît rapidement. Dans les fablabs on utilise fréquemment 3 appareils pour fabriquer rapidement des objets connectés: la raspberry pi, un mini ordinateur, le beagle bone à la fois ordinateur et micro controleur et bien entendu le célèbre arduino qui vous est de plus en plus familier à mesure de l'avancée de ce MooC
Vous avez jusqu'à présent réussi à fabriquer un objet capable, de manière autonome, de collecter des informations à partir de capteur, d'allumer des leds ou de faire tourner un petit moteur. Nous allons voir à présent comment transformer cet objet en un objet connecté.
L'objet de ce module est donc de vous présenter les possibilités pour faire communiquer un objet.
Imaginez vous transporté au coeur de Tokyo,incapable de comprendre ou de lire le japonais, vous aurez probablement recours à l'anglais voir à un language corporel plus ou moins improvisé pour vous faire comprendre. Sans le savoir vous tenterez alors de construire un protocole de communication.
En effet pour échanger des informations, il faut utiliser un langage commun, c'est ce qu'on appelle un protocole.
Dans la vraie vie, nous disposons de langues parlées, de languages des signes. Dans le monde numérique il existe de nombreux protocoles normalisés, ouverts ou propriétaires.
Lorsque l'on maîtrise les deux extrémités, on peut envisager d’utiliser son propre protocole. Mais c'est assez rarement le cas, c'est pourquoi des organismes internationaux ont pour mission de formaliser les échanges de communication.
Sans rentrer trop dans les détails, un MooC réseau est disponible à ce sujet, comme le rappelle wikipédia, les organismes internationaux de normalisaiton (ISO) ont défini un modèle appelé modèle OSI (de l'anglais Open Systems Interconnection). Il s'agit d'un standard de communication, en réseau, de tous les systèmes informatiques. C'est un modèle de communications entre ordinateurs qui décrit les fonctionnalités nécessaires à la communication et l'organisation de ces fonctions. Le modèle OSI (Open System Interconnection) propose un découpage en 7 niveaux de la communications entre 2 entités, de la couche physique (le circuit imprimé, par analogie l'air pour le language parlé car dans l'espace on n’entendrait rien) à la couche applicative (toujours par analogie la grammaire et le vocabulaire d'une langue).
Les nombreux protocoles de la couche 1 (physique), peuvent être séparés en 2 grandes familles : filaires et sans-fil. Les protocoles sans fil sont nombreux, ça va du GSM (votre bon vieux téléphone d'il y a 10 ans, au wifi (votre boxe) en passant par le NFC (paiement sans contact sur certaines cartes bancaires) mais on peut aussi citer le zigbee, le bluetooth, la 4G et bien d'autres. Vous connaissez aussi probablement le protocole HTTP (Hypertext Protocol) qui sert sur Internet. On reviendra plus en détail sur ce protocole car il est au coeur des objets connectés.
Outre des aspects de portée, débit et consommation, le choix de cette couche sera souvent contraint par la nature de l'objet. Reprenons notre analogie, si vous êtes dans une petite pièce, une conversation normale entre 2 personnes parlant la même langue sera parfaite. Plaçons un mur entre les personnes il faudra soit crier plus fort, soit percer un trou, soit passer par des messages écrits. Les objets connectés ne sont pas différents, selon le type d'informations qu'on souhaite faire passer et l'environnement on utilisera tel ou tel protocole. Vous n'imaginez pas devoir connecter tous vos ordinateurs, tablettes et smartphones à votre boxe, le protocole Wifi est fait pour ça. Ce protocole est parfait mais ceux qui ont des grandes maisons avec des murs épais savent que le Wifi a ses limites et qu'il est parfois nécessaire de passer par des courants porteurs de ligne CPL (on revient alors en filaire). Le Wifi est aussi très consommateurs (ne devez vous pas recharger très régulièrement votre téléphone?) aussi il est inadapté pour des petits objets devant fonctionner sur pile pendant des dizaines d'années. Comme souvent tout est histoire de compromis.
Dans nos exemples, nous utiliserons bien sûr l'Arduino. Dans sa version de base ses possibilités de communication sont assez réduites. Heureusement l'ajout de cartes supplémentaires appelées shields permet d'avoir de nombreuses possibilités de connexion.
Nos vidéos de présentation vous montrerons 2 types de connections possibles, et vous mettrez en oeuvre des exemples en TP.
support de cours
Généralités (liées à la vidéo)
TODO ?
HTTP, URL, adresse IP
TODO Vincent
Vidéo illustration:WhereIsBeach un object connecté via un shield Ethernet
¿WhereIsTheBeach? est un projet qui vise à rendre tangible un ensemble de données (météo, géo, web,..) pour rendre le choix d’une plage le plus pertinent possible. Supposons que l’été arrive (c’est audacieux comme postulat de départ – on vous l’accorde -), vous avez fait le choix insensé et/ou courageux de découvrir le Trégor, vous souhaitez soit aller faire bronzette iodée, soit défier les locaux sur votre planche à voile flambant neuve, soit tenter une action de sociabilisation avec d’irréductibles gaulois. Or vous ne connaissez pas trop la région, ¿WhereIsTheBeach? est fait pour vous.
L’objet consiste en une carte munie d’un potentiomètre (sélecteur du critère) de leds pour la représentation des plages (on a prévu une led rouge au cas où la seule option soit de rester à la maison..) et un petit servomoteur pour gérer la girouette.
Comme la cote de Granit Rose propose un grand nombre de plage sur environ 180° à partir de Lannion, la girouette est au centre de cette ville. Après le choix de l'activité planche à voile via le sélecteur, le petit drapeau nous désigne la plage la plus adaptée à ce moment. Si on recherche plutôt une plage populaire sur le web, il suffit de tourner le sélecteur. Le drapeau nous désigne une autre plage et la diode correspondante s'allume. En revanche si l'on veut bronzer, la diode rouge s'allume. Les conditions météo rendent cette activité impossible.
Comment ça marche ?
A la position du potentiomètre de sélection correspond une tension qui est présente sur une entrée de l'Arduino qui connaît donc l'activité demandée. Un requête HTTP est construite afin d'interroger le service Web dédié. Cette requête est émise via un shield Ethernet connecté au WEB. La réponse est traité par l'Arduino, le drapeau est tourné et la diode est allumé.
vidéo illustration Bzzz
(GSM + création d'un protocole ad-hoc au dessus de GSM, autonomie)
vidéo TP
TP 1:
L'objet de ce TP est à partir d'un montage précédent, être capable d'allumer ou d'éteindre les leds. Pour simplifier on imagine que ce TP puisse être fait chez vous. Vous devrez connecter votre arduino en filaire sur votre boxe via le shield Ethernet.
Depuis un browser sur votre PC vous enverrez une requête http de la forme http://192.168.1.x?led=on ou http://192.168.1.x?led=off
pré-requis: repartir du TP de base avec les 3 leds, ajouter le shield Ethenet, intégrer la librairie http://arduino.cc/en/reference/ethernet
Ce TP sea l'occasion d'évoquer les concepts - adresse IP - protocole DHCP - protocole HTTP
TP 2:
Le but de ce TP est de provoquer une action (visualisaiton de la température via l'allumage de 0,1,2 ou trois led) suite à l'envoi d'une requête web à un site internet.
prérequis: on repart du TP de base, on rajoute le shield ethernet. On connecte l'arduino en filaire à sa boxe. on se basera sur web service http://api.openweathermap.org/data/2.5/weather?q=Lannion,fr depuis votre PC, vous indiquez à l'aduino le nom de la ville l'arduino va chercher l'information sur internet et visualise le résultat via les leds
température -20 et 0 => aucune led 0 et 10 => led verte 10 et 20 => led verte + orange > 20 => led verte + orange + rouge
notions à aborder - architecture internet - web services