P4 IOT 2017
Sommaire
- 1 Présentation du sujet
- 2 Réalisation
- 2.1 Matériel utilisé
- 2.2 Suivi de réalisation
- 2.3 Détail du travail de la première séance
- 2.4 Détail du travail de la deuxième séance
- 2.5 Détail du travail de la troisième séance
- 2.6 Détail du travail de la quatrième séance
- 2.7 Détail du travail de la cinquième séance
- 2.8 Détail du travail de la sixième séance
- 3 Rendu
Présentation du sujet
Nous avons choisi de réaliser une veilleuse mobile, une veilleuse qui cherchera le meilleur emplacement dans une pièce ( dans une ligne droite entre deux murs ou deux obstacles par exemple) pour recharger sa batterie grâce à un panneau solaire.
Contexte
Ce projet est réalisé dans le cadre du module transversale IOT (Internet of Things).
Description du projet
Nous allons utiliser un Mindstorm pour la plateforme mobile sur laquelle sera monté un ou plusieurs panneaux photovoltaïques. Aussi, ce dernier sera équipé d'un capteur de lumière car le but étant d'abord de déterminer l'endroit le plus lumineux disponible. Après avoir déterminé cet endroit, l'appareil sera capable à l'aide des panneaux photovoltaïque et une batterie rechargeable d'alimenter une veilleuse (une LED dans un premier temps).
Réalisation
Matériel utilisé
- Mindstorm
- Panneau photovoltaïque
- Capteur de lumière
- Arduino Uno
- Raspberry Pi
Suivi de réalisation
Séance 1 (08/01/2018) | Formation des groupes, chercher un sujet et faire valider ce-dernier. |
---|---|
Séance 2 (09/01/2018) | Code d'utilisation du capteur lumière et initiation au Mindstorm. |
Séance 3 (16/01/2018) | Utilisation de Fritzing pour réaliser le circuit reliant le panneau photovoltaïque à la batterie |
Séance 4 (17/01/2018) | Finition du circuit sur Fritzing |
Séance 5 (22/01/2018) | Impression de la carte et code Mindstorm |
Séance 6 (24/01/2018) | Soutenance et présentation de notre projet au reste du groupe de module |
Détail du travail de la première séance
Durant cette première séance nous avons pu tester et étudier les valeurs de retour du capteur de luminosité et réfléchir à comment modifier le code pour réaliser notre projet. Vous trouverez ci-dessous le code utilisé pour tester le capteur:
int sensorPin = A0; // select the input pin for the potentiometer float rawRange = 1024; // 3.3v float logRange = 5.0; // 3.3v = 10^5 lux void setup() { analogReference(EXTERNAL); // Serial.begin(9600); Serial.println("Adafruit Analog Light Sensor Test"); } void loop() { // read the raw value from the sensor: int rawValue = analogRead(sensorPin); Serial.print("Raw = "); Serial.print(rawValue); Serial.print(" - Lux = "); Serial.println(RawToLux(rawValue)); delay(1000); } float RawToLux(int raw) { float logLux = raw * logRange / rawRange; return pow(10, logLux); }
Voici un tableau avec nombreuses exemples de valeurs de retour et leurs équivalence:
Illuminance | Example |
---|---|
0.002 lux | Moonless clear night sky |
0.27 - 1 lux | Full moon on a clear night |
3.4 lux | Dark limit of civil twilight under a clear sky |
50 lux | Family living room |
80 lux | Hallway/toilet |
100 lux | Very dark overcast day |
300 - 500 lux | Sunrise or sunset on a clear day. Well-lit office area |
1,000 lux | Overcast day; typical TV studio lighting |
10,000 - 25,000 lux | Full daylight (not direct sun) |
32,000 - 130,000 lux | Direct sunlight |
https://learn.adafruit.com/adafruit-ga1a12s202-log-scale-analog-light-sensor/use-it
http://www.instructables.com/id/Solar-Battery-Charging/
Détail du travail de la deuxième séance
Durant cette séance nous avons dans un premier temps adapté le code pour nos besoins. En attendant un module Bluetooth pour pouvoir communiquer entre l'Arduino et le Mindstorm, nous avons écrit un code qui enregistrera la valeur maximale de luminosité lors de son lancement, ensuite d'attendre 3 secondes (cette période symbolise la recherche initiale de valeur maximale de luminosité) ensuite nous avons la variable keepMoving qui restera vrai, pour dire que la plateforme continue à changer de position, tant que la valeur maximale n'est pas trouvé (avec une marge bien-sur pour tenir compte de toute incertitude de mesure).
int sensorPin = A0, rawValue, maxValue=0, marge = 50; boolean firstSearch = false, searchAgain = false, keepMoving; void setup() { analogReference(EXTERNAL); Serial.begin(9600); } void loop() { while (firstSearch == false || searchAgain == true) { rawValue = analogRead(sensorPin); if (rawValue > maxValue) { maxValue = rawValue; } searchAgain = false, firstSearch = true; } Serial.println("PAUSE"); //3seconds delay(3000); Serial.println("WERE BACK"); do { rawValue = analogRead(sensorPin); if (rawValue < maxValue - marge) { keepMoving = true; } else { keepMoving = false; } Serial.println(keepMoving); } while (keepMoving == true); //delay(6000); searchAgain = true; }
Dans un second temps nous avons commencé à prendre en main le Mindstorm ainsi que son logiciel de programmation pour comprendre son fonctionnement et comment s'en servir par la suite.
Détail du travail de la troisième séance
Pour la liaison entre la communication nous allons utilisé une Raspberry Pi3 qui est équipé d'un module bluetooth. L'Arduino s'occupera de mesurer l'intensité de lumière et envoi des données à la Raspberry Pi par le port série, ensuite la Raspberry enverra des commandes au Mindstorm par Bluetooth. Durant cette séance nous avons pris en main une Raspberry pour installer Raspian dessus, configurer son fichier "interfaces" pour avoir une connexion internet pour télécharger des éléments pour faire marcher la communication Bluetooth. Nous avons essayé durant cette séance d'utiliser la commande "bluetoothctl".
En parallèle de la programmation, il a fallu concevoir le circuit permettant de faire la liaison entre le panneau solaire et une led (dans un premier temps avant de connecter une batterie), à la fin de la séance, il a donc été décidé de reprendre nous même le circuit qui allait jouer ce rôle. Ce circuit est très important car c'est ce qu'il va justement permettre de transformer l’énergie reçu par le panneau photovoltaïque et le transformer en énergie utilisable par la led.
Détail du travail de la quatrième séance
Réalisation carte.
Le but était donc de réaliser le même circuit que l'on peut voir sur la deuxième photo et c'est ce qui a été réalisé comme on peut le voir sur la première photo.
N'ayant pas réussi à réaliser une communication entre nos deux composants avec bluetoothctl, durant cette séance nous avons essayé avec le module "pybluez". Malheureusement cela n'as pas marché.
Détail du travail de la cinquième séance
Nous avons eu accès durant cette séance à un code utilisé pour faire communiquer une Foxboard et le Mindstorm, ayant quelques soucis à le prendre en main et le tester, nous avons mis cette tâche en attente pour utiliser un capteur lumière du Mindstorm pour réaliser un prototype(ou presque) à montrer durant la présentation.
Détail du travail de la sixième séance
Rendu
Poster
Version électronique du poster :
Fichiers rendus
Notre application : Media:2017_IOT_P0_application.zip