Cestpasidiot

De fablabo
Révision de 7 septembre 2015 à 20:09 par Oli44 (discussion | contributions) (Exemples de code Arduino)

Aller à : navigation, rechercher


Atelier de conception d'objets connectés pour les 8 ans et +



Atelier STARTER DO iT 2 mené par les étudiants en Master 2 du labo Readi de l'EDNA.

Insérez ici un lien vers la page de ce wiki documentant vos réalisations. N'oubliez pas de tagger pour apparaître dans les catégories EDNA & Workshops.

Objectifs & calendrier

A partir d'un boitier connecté (arduino..+flux à définir) émettant du son et/ou un signal lumineux (Kit mis à disposition), les étudiants par groupe de 2/3 devront produire un objet connecté autonome (contexte+service+forme) destiné à un public jeune+parents.

Contexte Spatial : LIVING LAB

Occupation d'un espace semi-fermé doté permettant l'accueil du public dans un contexte de living lab : un peu d'éclairage, une machine à café, un coin détente & lecture, plante verte…

Dans ce lieu, un PC relié à Internet équipé d'un Arduino et de son radio-émetteur. Il capte avant tout des événements issus de capteurs installés localement (barrière infrarouge d'entrée, capteurs de mouvement IR, stress d'une plante verte, télémètres, suivant le stock actuel de l'école). Il collecte des flots de données depuis le réseau (capteurs raspberry pi de l'école, indicateur de pollution atmosphérique de la ville de Nantes, météo, réceptions de tweets, emails, ensemble encore à définir pour qu'il soit pertinent).

Une troisième piste consiste à générer des signaux artificiels (type onde sinusoïde, fractales, bruit brownien). En cas de rupture de la connexion internet ou de non pertinence des signaux (par ex. l'école est fermée le WE durant l'expo Festival D), on peut rejouer des enregistrements des jours précédents. Le but est de créer un flot radiodiffusé d'événements du quotidien, qu'il soit issu de notre environnement physique, électronique ou totalement artificiel. A partir de ce double ensemble (living lab + flot de données), les binômes (impératif : équipes transversales) doivent proposer une réponse finie et fonctionnelle.

Contraintes créatives

  • Le microcontrôleur est connecté à cette source radio qui diffuse les données.
  • La machine sera autonome (non connectée physiquement à un PC)
  • Le boîtier sera naturellement porteur de sens (Esthétique/Forme/ Fonction). Il proposera une réponse originale à la problématique dégagée lors de la première séance.
  • Le dispositif doit réagir et alerter le visiteur, selon un protocole à définir par le binôme, en mettant en avant le potentiel ludique et pratique des kits mis à leur disposition.
  • A chacun de tirer profit des fonctionnalités minimales : ouïe, toucher, vue.


Présentations

Lors des présentations publiques (Festival D/Boot camp) , les binômes devront également proposer des livrables explicitant leur démarche/ mode d'emploi sous forme de POSTERS (format KKmono : 75*110)


Le dispositif sera présenté dans le cadre de ces deux évènements :

  • Le FESTIVAL D les 26 et 27 septembre* (encadrement Laurent Neyssensas & Arnaud LE ROI)
  • Le Boot camp design Make de l’IRT JV le jeudi 8 octobre* (encadrement Laurent Neyssensas)

Les étudiants devront prévoir la présence d’un membre de chaque équipe (rotation) sur ces 2 évènements.

Principes techniques

Vous vous voyez remettre le premier jour un kit électronique (cf liste infra) qui offre un ensemble réduit de caractéristiques:

  • il permet la réception sans fil de données environnementales
  • il permet de réagir de façon lumineuse, sonore et tactile aux données reçues
  • il permet de fonctionner de façon autonome en énergie sur piles ou accus AA. L'autonomie dépendra de la gourmandise de vos circuits et de l'efficacité de votre code.

Le travail ayant été simplifié du côté de l'envoi de données (cf liste infra) et sa réception, et les composants sélectionnés et documenter pour vous en faciliter la prise en main, vous pourrez vous focaliser sur la conception de 2 voire 3 propositions ludiques de feedback sensitif pour objets connectés, les soumettre lors d'un PechaKucha. La proposition la plus pertinente sera retenu. A vous ensuite de passer à la mise en oeuvre:

  • analyser la pertinence des données reçues
  • concevoir un algorithme permettant de les filtrer
  • concevoir un autre algorithme générant le feedback sensoriel
  • mettre en oeuvre et debugger le tout
  • concevoir un objet autonome mettant en avant ce feedback suivant la fonction et l'usage que vous atribuez à votre objet
  • documenter sur ce wiki (storytelling) et sur vos livrables le projet retenu

Quelques lectures en français pour vous rafraîchir la mémoire sur l'électronique embarquée avec Arduino:

Liste et plage de valeurs des données radio émises

Température ambiante (°C) = float 0-99,99 Degré d'humidité ambiante = float 0-99,99 Lumière ambiante (lux) = int 0-9999 Bloc de 4 interrupteurs capacitifs = boolean 0 ou 1 Capteur de pollution aérienne (fumée) = float 0-99,99 (après étalonnage) télémètre à ultrason (distance en cm) = entier 0-9999 (valeur théorique, de 20 à 120cm dans les faits)

D'autres capteurs peuvent être ajoutés à la demande, on peut ainsi capter des données environnementales en ligne et les insérer dans notre flux. Ex: http://www.airpl.org/Air-exterieur/mesures-en-direct vs https://air.plumelabs.com/Nantes

Liste des composants fournis

Chaque binôme se voit remettre le kit suivant:

  • un Arduino Uno et câble USB A/B
  • un chargeur avec interrupteur pour 4 piles AA (non fournies!)
  • un adaptateur Mâle DC 5.5/2.1 bornier à vis
  • une plaque d'essai 270 trous (Osez le golf!)
  • 4 LEDs NeoPixels RGB ( + condensateur 100uF + résistance 470 Ohm + diode 1n4001)
  • un moteur vibreur ( + condensateur 0,1uF + résistances 33 Ohm & 1kOhm + diode 1n4001 + transistor 2n222 + mini-circuit pré assemblé )
  • un piezo (+ condensateur 1uF & résistance 22kOhm + potentiomètre 220 kOhm logarithmique)
  • un récepteur RF 434Mhz (ajouter une antenne de 17,3cm de long)

Les câbles pour connecter l'ensemble, fers à souder et brasure seront également disponibles sur place.

conseils pour l'alimentation électrique avec des piles et accus

Vous pourrez avoir besoin de réaliser un circuit de puissance. Voir la doc de flossmanuals : la cigarette ne tue pas les machines. Ce type de circuit est requis lorsque vous utilisez une tension différente de celle délivrée par l'Arduino (5V ou 3,3V), et lorsque vous avez besoin d'une puissance totale supérieure à 250mA, qui est le maximum que peut fournir un Arduino sans griller.

Exemples de code Arduino

Réception RF

Librairie VirtualWire. Attention à prendre la bonne version depuis le site suivant: Airspayce .


Exemple de code émetteur:


#include <VirtualWire.h> // Vous devez télécharger et installer la librairie VirtualWire.h dans votre dossier "/libraries" !

int IntervalleEmission = 2000; // on définit une variable globale

void setup()
{
    vw_setup(2000);  // Bits par seconde 
                     // (vous pouvez le modifier mais cela modifiera la portée)
    vw_set_tx_pin(3);             // La broche 3 sera utilisée pour transmettre la DATA
                                   //vous pouvez changez de broche si vous le désirez.
}

void loop()
{
   const char *msg = "EDNA is ReaDi";                   // C'est le message à envoyer.
   vw_send((uint8_t *)msg, strlen(msg));
   vw_wait_tx();                                          // On attend que le message complet soit envoyé.
   delay(intervalleEmission);
}

Exemple de code récepteur:

    #include <VirtualWire.h>
     // Vous devez télécharger et installer la librairie VirtualWire.h dans votre dossier "/libraries" !
    
    int IntervalleEmission = 2000; // on définit une variable globale
    // attention à ne pas descendre en dessous de 200ms, sinon on sature l'espace radio

    void setup()
    {
        Serial.begin(9600);    // On initialise "le serial monitor",
        // 9600 bauds ici car c'est la valeur par défaut 
        //Attention à bien mettre la même valeur dans votre Serial Monitor et dans votre programme.
        vw_setup(2000);                 // Bits par seconde 
        //(vous pouvez le modifier mais cela modifiera la portée. 
        // Plus rapide, cela diminue la portée
        vw_set_rx_pin(11);             // numéro de broche du récepteur
        vw_rx_start();                    // On démarre le récepteur.
    }

    void loop()
    {
        uint8_t buf[VW_MAX_MESSAGE_LEN];
        uint8_t buflen = VW_MAX_MESSAGE_LEN;

        if (vw_get_message(buf, &buflen)) // On teste si un message a été reçu.
        {
        int i;
         // Un message est reçu.

        for (i = 0; i < buflen; i++)
        {
            delay(50);
            Serial.write(buf[i]);  // On affiche le message lettre par lettre. 
            //Par exemple buf[3] sera égale à la 5ème lettre de la chaîne  envoyée 
            // (EDNA is Readi donc "a") car on compte depuis zéro.
            }
        Serial.println(""); // On saute une ligne afin d'avoir plus de clarté.
         }
    }

Vibreur

Commande en PWM, sans librairie donc.

const int motorPin = 3;

void setup()
{
pinMode(motorPin, OUTPUT);
}

void loop()
{
digitalWrite(motorPin, HIGH);
delay(1000);
digitalWrite(motorPin, LOW);
delay(59000);
}

NB: il s'agit d'un exemple à ne pas suivre concernant l'utilisation de la fonction delay(). En effet, celle-ci est bloquante. Cela signifie que la dernière ligne de la boucle loop() bloquera toute nouvelle entrée de données provenant de capteurs ou d'actuation de LEDs pendant 59 secondes!

Piezo

Utilisation de la fonction Tone, en important un tableau de hauteurs de notes. Attention, il s'agit de la notation anglo-saxonne ABC et non pas française dorémi.

Vous pouvez mélanger les deux en passant le code de James Bond en fonction. Vous pouvez consulter à ce sujet la partie 106 du blog d'eskimon.

LEDs NeoPixel

Utilisation de la librairie NeoPixel. Exemple en français sur le site de McHobby.be