# I2 - Conception d'un système embarqué temps réel

# Projets



# ESP8266 - MQTT - NodeRed

### Installation des ESP8266 sur Arduino

![](https://doc.creatronic.fr/uploads/images/gallery/2019-08/scaled-840-/image-1566303944287.png)

Suivre ce tuto [https://www.fais-le-toi-meme.fr/fr/electronique/tutoriel/programmes-arduino-executes-sur-esp8266-arduino-ide\*](https://www.fais-le-toi-meme.fr/fr/electronique/tutoriel/programmes-arduino-executes-sur-esp8266-arduino-ide*) chapitre "Configuration de l'IDE Arduino". **Attention,** utilisez plutôt le repo "stable" :

`http://arduino.esp8266.com/stable/package_esp8266com_index.json`

Via le gestionnaire de librairie, installer "PubSubClient" et "DHT sensor library".

### Installation de NodeRed sur Windows

#### Installer nodeJS

Télécharger et installer NodeJs : [https://nodejs.org/en/download/](https://nodejs.org/en/download/)

#### Installer NodeRed

![](https://doc.creatronic.fr/uploads/images/gallery/2019-08/scaled-840-/image-1566303933722.png)

Lancer une interface de commande cmd en mode administrateur puis taper :

<div id="bkmrk-npm-install--g---uns"><div><div>`<span role="presentation">npm install -g --unsafe-perm node-red</span>`</div><div><div></div></div></div></div>Si la commande npm n'est pas il faut ajouter manuellement la variable d'environnement ou bien pointer l'interface de commande dans le bon dossier (cd C:\\Program Files\\nodejs)

#### Lancer Nodered

Il suffit de taper "node-red" dans l'interface de commande et les logs doivent suivre

Accessible sous [http://127.0.0.1:1880](http://127.0.0.1:1880)

### Autres plateformes

[https://nodered.org/docs/getting-started/](https://nodered.org/docs/getting-started/)

#### Ajouter le node dashboard

![](https://doc.creatronic.fr/uploads/images/gallery/2019-08/scaled-840-/image-1566303964746.png)

<span class="palette-module-name">Clic en haut à droite &gt; Manage Palette &gt; Install &gt; node-red-dashboard</span>

![](https://doc.creatronic.fr/uploads/images/gallery/2019-09/scaled-840-/image-1567409773070.png)

### Installation du broker MQTT Mosquitto

![](https://doc.creatronic.fr/uploads/images/gallery/2019-08/scaled-840-/image-1566303976549.png)

Télécharger : [https://mosquitto.org/download/](https://mosquitto.org/download/)

Installer également openSSL : [http://slproweb.com/products/Win32OpenSSL.html](http://slproweb.com/products/Win32OpenSSL.html)

Ouvrir une nouvelle interface de commande et taper : *"C:\\Program Files\\mosquitto\\mosquitto"*

**Normalement le broker est lancé !**

Si vous voulez en voir un peu plus dans la console, tapez *"C:\\Program Files\\mosquitto\\mosquitto -v"*

## Projet à réaliser

Programmez l'esp8266 pour gérer le capteurs fourni, envoyer la mesure vers le serveur MQTT.

Programmer nodeRed pour récupérer cette donnée et l'afficher sur un dashboard (gauge + graph).

<div drawio-diagram="28" id="bkmrk--4">![](https://doc.creatronic.fr/uploads/images/drawio/2019-09/Drawing-Admin-1567417990.png)</div>

# Grafana - influxDB - Rpi

#### Préparation du Raspberry Pi (installation Raspian)

![](https://doc.creatronic.fr/uploads/images/gallery/2019-08/scaled-840-/image-1566303883258.png)

**Si Raspbian est déjà installé vous pouvez sauté cette étape.**

Télécharger la dernière version de Raspbian : [https://www.raspberrypi.org/downloads/raspbian/](https://www.raspberrypi.org/downloads/raspbian/)

Flasher l'image sur la carte SD avec Balena Etcher : [https://www.balena.io/etcher/](https://www.balena.io/etcher/)

Avant de débrancher la carte SD, sur la partition boot ajouter un fichier ssh (pas un .ssh, un fichier ssh tout court sans extension) afin que le système autorise le ssh bloqué par défaut.

Si vous souhaitez travailler en Wifi, il faut le configurer avant de mettre la carte SD dans le Raspberry : [https://www.raspberrypi-spy.co.uk/2017/04/manually-setting-up-pi-wifi-using-wpa\_supplicant-conf/](https://www.raspberrypi-spy.co.uk/2017/04/manually-setting-up-pi-wifi-using-wpa_supplicant-conf/)

Mise à jour du système :

` sudo apt update && sudo apt dist-upgrade && sudo apt upgrade`

#### Installation de NodeRed

![](https://doc.creatronic.fr/uploads/images/gallery/2019-08/scaled-840-/image-1566303867152.png)

```shell
cd ~ 
bash <(curl -sL https://raw.githubusercontent.com/node-red/raspbian-deb-package/master/resources/update-nodejs-and-nodered) 
sudo systemctl enable nodered.service
sudo node-red-start
```

#### Installation de InfluxDB

![](https://doc.creatronic.fr/uploads/images/gallery/2019-08/scaled-840-/image-1566303899619.png)

```shell
curl -sL https://repos.influxdata.com/influxdb.key | sudo apt-key add -
echo "deb https://repos.influxdata.com/debian buster stable" | sudo tee /etc/apt/sources.list.d/influxdb.list
sudo apt-get update && sudo apt-get install influxdb
sudo service influxdb start
```

Si tout va bien, taper "influx" pour accéder à la console influxdb.

Créer une base de donnée : `create database lenomquevousvoulez;`

#### Installation de Grafana

![](https://doc.creatronic.fr/uploads/images/gallery/2019-08/scaled-840-/image-1566303726710.png)

![](https://doc.creatronic.fr/uploads/images/gallery/2019-08/scaled-840-/image-1566303821844.png)

```shell
sudo apt update && sudo apt-get install -y software-properties-common apt-transport-https
sudo nano /etc/apt/sources.list.d/grafana.list
```

Ajouter le dépôt suivant puis enregistrer.

`deb https://packages.grafana.com/oss/deb stable main`

Puis :

```shell
wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
sudo apt-get update && sudo apt-get install grafana
sudo service grafana-server start
```

Doc officielle en cas de problème : [https://grafana.com/docs/installation/debian/](https://grafana.com/docs/installation/debian/)

Accessible sous [http://ip:3000](http://ip:3000/)

Login/mdp par défaut : admin/admin

#### Ajout des nodes nécessaires dans node-red

Ajouter les nodes suivants :

**node-red-contrib-cpu** =&gt; va nous permettre de suivre la charge du CPU

**node-red-contrib-influxdb** =&gt; va nous permettre de dialoguer avec les bases influxDB

#### Travail à réaliser 

Sur **nodeRED**, créer un flow permettant de récupérer à intervalle régulier la charge du CPU et de l'insérer dans un measurement influxDB.

Sur Grafana : créer un nouveau dashboard qui permettra d'afficher des graphiques et des gauges de pression et de température (penser à activer l'auto refresh).

# LoRaWAN - The Things Network

## Objectif(s)

Créer un objet qui enverra via LoRa l'humidité et la température ambiante.

## The Things Network (TTN)

![](https://doc.creatronic.fr/uploads/images/gallery/2019-08/scaled-840-/image-1566303626375.png)

The Things Network est une association qui a permis de créer un réseau communautaire LoRaWAN. Tout ceux qui le veulent peuvent apporter leur pierre à l'édifice en installant chez eux ou dans leur entreprise une passerelle LoRa. L'EPSI en possède une installée dans le myDIL.

Créer un compte et une application sur [https://console.thethingsnetwork.org](https://console.thethingsnetwork.org/)

## Mise en place

Voici en résumé ce que nous devons faire :

1. Installation de la carte sous Arduino.
2. Récupérer le devEUI de la carte.
3. Créer l'objet dans TTN à partir de ce devEUI.
4. Utiliser un code typique pour tester la connexion en utilisant les clés fournies lors de l'étape précédente.
5. Connecter le capteur (sans LoRa).
6. Fusionner les deux codes précédents pour envoyer la température et l'humidité.
7. Récupérer les données et les afficher dans un dashboard NodeRed.

### Installation de la carte Things Uno sous Arduino

![](https://doc.creatronic.fr/uploads/images/gallery/2019-08/scaled-840-/image-1566303657163.png)

Au niveau matériel, rien à installer, sélectionner "Arduino Leonardo" dans le gestionnaire de carte.

La conception de la carte est assez simple : un modem LoRa est associé avec un microcontroleur (µC) Atmega32u4 qui équipe habituellement les Arduino Léonardo. Le µC et le modem communiquent en liaison série en s'envoyant des commandes formatées appelées commande AT. La librairie installée permet de faire abstraction de cette communication, mais on pourrait très bien communiquer avec ce modem directement depuis le moniteur série du PC par exemple.

Si jamais la carte vous pose des problèmes (port série non reconnu etc ..) =&gt; [https://www.thethingsnetwork.org/docs/devices/node/troubleshooting.html](https://www.thethingsnetwork.org/docs/devices/node/troubleshooting.html)

Dans le gestionnaire de librairies, installer **TheThingsNetwork**.

### Récupération du devEUI

Récupérer le **devEUI** de votre carte =&gt; [https://www.thethingsnetwork.org/docs/devices/uno/quick-start.html](https://www.thethingsnetwork.org/docs/devices/uno/quick-start.html)

### Créer le device sur TTN

Sur la console TTN, dans votre application créer un device. Saisissez le **devEUI** précédemment récupéré et laissez les autres champs en génération automatique.

### Tester la liaison

Sur Arduino, allez chercher *Fichier&gt;Exemples&gt;TheThingsNetwork&gt;SendOTAA*. Modifier les différents champs importants pour correspondre à votre configuration (AppKey, FrequencyPlan ...) et vérifier dans le moniteur série que tout se passe bien (JOIN et envoi).

Vérifier sur la console TTN que les données arrivent bien.

<p class="callout danger">Si vous rencontrer des problèmes de type "invalid\_param" en console, il vous faut downgrader votre version de la librairie TheThingsNetwork en 2.5.16</p>

### Connecteur de capteur d'humidité/température (DHT11)

Ajouter ensuite un DHT11, récupérer ses données de température et d'humidité, et les envoyer via LoRa.

### Connecter NodeRED

Lancer ensuite un serveur NodeRed afin de récupérer les données sur le MQTT TTN : [https://www.thethingsnetwork.org/docs/applications/mqtt/api.html](https://www.thethingsnetwork.org/docs/applications/mqtt/api.html)

Et les afficher sur un dashboard NodeRed (node-red-dashboard).

![](https://doc.creatronic.fr/uploads/images/gallery/2019-08/scaled-840-/image-1566303685709.png)

# ESP32 - LED RGB pilotée via Wifi

## Objectif

Contrôler une **LED RGB**, elle même piloté par un **ESP32**, au travers d'un dashboard NodeRed et de son outil "Color picker". Le protocole utilisé sera le **MQTT** et le transit des information se fera au format **json**.

[![image-1602082647076.png](https://doc.creatronic.fr/uploads/images/gallery/2020-10/scaled-1680-/image-1602082647076.png)](https://doc.creatronic.fr/uploads/images/gallery/2020-10/image-1602082647076.png)

## Matériel

[![image-1602082252691.png](https://doc.creatronic.fr/uploads/images/gallery/2020-10/scaled-1680-/image-1602082252691.png) ](https://doc.creatronic.fr/uploads/images/gallery/2020-10/image-1602082252691.png)[![image-1602082270336.png](https://doc.creatronic.fr/uploads/images/gallery/2020-10/scaled-1680-/image-1602082270336.png)](https://doc.creatronic.fr/uploads/images/gallery/2020-10/image-1602082270336.png)

- Un **ESP32**
    - Carte de développement avec Wifi et bluetooth BLE.
- Un **shield LED WS1812**
    - Se pilote grâce à un fil
    - **<span style="text-decoration: underline;">La LED est reliée au pin 21 de l'ESP</span>**

## Logiciel

Ajout de l'ESP 32 à Arduino si ce n'est pas déjà fait : [https://doc.creatronic.fr/books/i2---conception-dun-syst%C3%A8me-embarqu%C3%A9-temps-r%C3%A9el/page/installation-arduino](https://doc.creatronic.fr/books/i2---conception-dun-syst%C3%A8me-embarqu%C3%A9-temps-r%C3%A9el/page/installation-arduino)

<p class="callout info">Utiliser la board **Wemos LOLIN32**.</p>

Pour contrôler la LED il existe beaucoup de librairies. Une des plus simple pour débuter est **Adafruit Neopixel**. Pour l'installer il faudra ajouter l'URL suivante dans le menu *préférences* :

`https://adafruit.github.io/arduino-board-index/package_adafruit_index.json`

<p class="callout warning">Il y a un **bug** dans le mariage Adafruit Neopixel &lt;-&gt; ESP32. Les couleurs peuvent ne pas correspondre à vos attentes, notamment quand ça touche à la couleur rouge ... Pour le résoudre, il vous suffit de **doubler l'appel à la fonction show()**.</p>

Pour le MQTT, utilisez **PubSubClient** et **ArduinoJson** pour la gestion des json.

## Livrable attendu

Pour obtenir la moyenne vous devrait produire un démonstrateur fonctionnel. Pour obtenir des points supplémentaires, ajoutez des fonctionnalités et fiabilisez votre code.

# ESP32 - BMP180

## Objectif(s)

Créer un objet connecté en wifi qui enverra via **MQTT** la température et la pression atmosphérique vers un serveur qui stockera ces informations en base de données **InfluxDB** avant de les restituer au travers de la solution **Grafana**.

<p class="callout warning">Répartissez vous bien les tâches : le travail est divisible et il y a pas mal de choses à faire ...</p>

## Arduino

Ajout de l'ESP 32 à Arduino si ce n'est pas déjà fait : [https://doc.creatronic.fr/books/i2---conception-dun-syst%C3%A8me-embarqu%C3%A9-temps-r%C3%A9el/page/installation-arduino](https://doc.creatronic.fr/books/i2---conception-dun-syst%C3%A8me-embarqu%C3%A9-temps-r%C3%A9el/page/installation-arduino)

<p class="callout info">Utiliser la board **Wemos LOLIN32**.</p>

Librairie conseillé(e) : Adafruit\_BMP085

Pour l'installer il faudra ajouter l'URL suivante dans le menu préférences :

`https://adafruit.github.io/arduino-board-index/package_adafruit_index.json`

## Rpi

#### Préparation du Raspberry Pi (installation Raspian)

![](https://doc.creatronic.fr/uploads/images/gallery/2019-08/scaled-840-/image-1566303883258.png)

**Si Raspbian est déjà installé vous pouvez sauté cette étape.**

Télécharger la dernière version de Raspbian : [https://www.raspberrypi.org/downloads/raspbian/](https://www.raspberrypi.org/downloads/raspbian/)

Flasher l'image sur la carte SD avec Balena Etcher : [https://www.balena.io/etcher/](https://www.balena.io/etcher/)

<p class="callout warning">Avant de débrancher la carte SD, sur la partition boot ajouter un fichier **ssh** (<span style="text-decoration: underline;">pas un .ssh, un fichier ssh tout court **sans extension**</span>) afin que le système autorise le ssh bloqué par défaut.</p>

Si vous souhaitez travailler en Wifi, il faut le configurer avant de mettre la carte SD dans le Raspberry : [https://www.raspberrypi-spy.co.uk/2017/04/manually-setting-up-pi-wifi-using-wpa\_supplicant-conf/](https://www.raspberrypi-spy.co.uk/2017/04/manually-setting-up-pi-wifi-using-wpa_supplicant-conf/)

Mise à jour du système :

` sudo apt update && sudo apt dist-upgrade && sudo apt upgrade`

#### Installation de NodeRed

![](https://doc.creatronic.fr/uploads/images/gallery/2019-08/scaled-840-/image-1566303867152.png)

```shell
cd ~ 
bash <(curl -sL https://raw.githubusercontent.com/node-red/raspbian-deb-package/master/resources/update-nodejs-and-nodered) 
sudo systemctl enable nodered.service
sudo node-red-start
```

#### Installation de InfluxDB

![](https://doc.creatronic.fr/uploads/images/gallery/2019-08/scaled-840-/image-1566303899619.png)

```shell
curl -sL https://repos.influxdata.com/influxdb.key | sudo apt-key add -
echo "deb https://repos.influxdata.com/debian buster stable" | sudo tee /etc/apt/sources.list.d/influxdb.list
sudo apt-get update && sudo apt-get install influxdb
sudo service influxdb start
```

Si tout va bien, taper "influx" pour accéder à la console influxdb.

Créer une base de donnée : `create database lenomquevousvoulez;`

#### Installation de Grafana

![](https://doc.creatronic.fr/uploads/images/gallery/2019-08/scaled-840-/image-1566303726710.png)

![](https://doc.creatronic.fr/uploads/images/gallery/2019-08/scaled-840-/image-1566303821844.png)

```shell
sudo apt update && sudo apt-get install -y software-properties-common apt-transport-https
sudo nano /etc/apt/sources.list.d/grafana.list
```

Ajouter le dépôt suivant puis enregistrer.

`deb https://packages.grafana.com/oss/deb stable main`

Puis :

```shell
wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
sudo apt-get update && sudo apt-get install grafana
sudo service grafana-server start
```

Doc officielle en cas de problème : [https://grafana.com/docs/installation/debian/](https://grafana.com/docs/installation/debian/)

Accessible sous [http://ip:3000](http://ip:3000/)

Login/mdp par défaut : admin/admin

#### Ajout des nodes nécessaires dans node-red

Ajouter les nodes suivants :

**node-red-contrib-influxdb** =&gt; va nous permettre de dialoguer avec les bases influxDB

## Travail à réaliser 

Sur **nodeRED**, créer un flow permettant de récupérer et stocker les données de l'objet connecté et de l'insérer dans un *measurement* influxDB.

Sur Grafana : créer un nouveau dashboard qui permettra d'afficher un graph et une gauge de la charge CPU (penser à activer l'auto refresh).

# Schéma LoRa + Grafana-Influx + NodeRED

<div drawio-diagram="539" id="bkmrk-">![](https://doc.creatronic.fr/uploads/images/drawio/2021-01/drawing-1-1609754736.png)</div>

# Installation outils MQTT

## Mosquitto (broker)

#### Windows

Téléchargez et installez le fichier fourni :

[https://mosquitto.org/download/](https://mosquitto.org/download/)

Lancez le G*estionnaire des tâches* (CTRL+ALT+SUPPR) puis onglet *Services* chercher Mosquitto et lancez-le.

#### Linux

Suivant les distributions :

```shell
apt install mosquitto
```

Si vous utilisez snap :

```shell
snap mosquitto install
```

Dans les deux cas Mosquitto est déjà sensé tourné 😉

#### MacOS

(Pas de mac sous la main, merci de me valider la procédure 😅 )

[https://subscription.packtpub.com/book/application\_development/9781787287815/1/ch01lvl1sec12/installing-a-mosquitto-broker-on-macos](https://subscription.packtpub.com/book/application_development/9781787287815/1/ch01lvl1sec12/installing-a-mosquitto-broker-on-macos)

[http://macappstore.org/mosquitto/](http://macappstore.org/mosquitto/)

## MQTT.fx (client)

[https://mqttfx.jensd.de/](https://mqttfx.jensd.de/)# Installation NodeRED

RDV sur : [https://nodered.org/docs/getting-started/local](https://nodered.org/docs/getting-started/local)

En résumé cela se passe généralement de la même manière quelle que soit la plateforme :

- **Installation de NodeJS** (version 12 idéalement)
- **Installation de NodeRed** via npm (passer la console)
- **Lancement de NodeRed**

Attention : là aussi quelle que soit la plateforme, si vous fermez le shell depuis lequel vous avez lancé Node-Red, vous tuez le process, donc pus de NodeRed ... 😥# Installation Arduino

## IDE en lui-même

[https://www.arduino.cc/en/Main/Software](https://www.arduino.cc/en/Main/Software)

[![image-1599481482215.png](https://doc.creatronic.fr/uploads/images/gallery/2020-09/scaled-1680-/image-1599481482215.png)](https://doc.creatronic.fr/uploads/images/gallery/2020-09/image-1599481482215.png)

<p class="callout danger">Si vous êtes sous Windows, évitez de passer par le Store</p>

## Ajouter les ESP8266

- Lancez Arduino
- Fichier-&gt;Préférences dans URL de gestionnaire de cartes supplémentaires ajoutez `https://arduino.esp8266.com/stable/package_esp8266com_index.json`

<p class="callout info">S'il y a déjà une ou plusieurs URL, vous pouvez en mettre plusieurs à la fois en les séparant soit par une virgule, soit par un retour à la ligne</p>

- Outils -&gt; Type de carte -&gt; Gestionnaire de cartes cherchez esp8266 dans la liste et installez 😉

## Ajouter les ESP32

Même procédure que pour les ESP8266 mais avec l'URL suivante :

`https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json`

Dans le gestionnaire de carte, sélectionnez et installez ESP32.# TP Nodered

## OpenData Montpellier 3M

[![image-1599485631570.png](https://doc.creatronic.fr/uploads/images/gallery/2020-09/scaled-1680-/image-1599485631570.png)](https://doc.creatronic.fr/uploads/images/gallery/2020-09/image-1599485631570.png)

La métropole met à disposition des données publiques très diverses. Ici on souhaite construire une API qui va répondre à une simple requête :

GET /velomag : renvoie le nombre de place(s) de vélo disponible(s) à la vélo-station Euromédecine (id = 41)

#### Lien(s)

Open Data Montpellier : [https://data.montpellier3m.fr/dataset/disponibilite-des-places-velomagg-en-temps-reel/resource/adb98f8d-c4d2-4012-8abe](https://data.montpellier3m.fr/dataset/disponibilite-des-places-velomagg-en-temps-reel/resource/adb98f8d-c4d2-4012-8abe)

## Dashboard

### Installation

Cliquez en haut à droite sur

[![image-1599485003422.png](https://doc.creatronic.fr/uploads/images/gallery/2020-09/scaled-1680-/image-1599485003422.png)](https://doc.creatronic.fr/uploads/images/gallery/2020-09/image-1599485003422.png)

Puis sur ***Manage palette*** et installez ***node-red-dashboard***

Maintenant en allant sur localhost:1880/ui vous pouvez visualiser un front qui va être piloter par NodeRed.

Pour gérer l'organisation globale de ce front, vous devez avoir maintenant en haut à droite un bouton supplémentaire qui représente un histogramme en bar miniature :

[![image-1599485154738.png](https://doc.creatronic.fr/uploads/images/gallery/2020-09/scaled-1680-/image-1599485154738.png)](https://doc.creatronic.fr/uploads/images/gallery/2020-09/image-1599485154738.png)

En cliquant dessus vous pouvez structurer le front en page et groupe. Chaque node que vous rajouterez ensuite dans l'espace de programmation pourra ensuite être placé via son menu de configuration.

### A faire 

Exploitez l'API OpenWeatherMap pour afficher la météo actuelle sur le dashboard.

<p class="callout danger">Il existe un node pour exploiter directement l'API, vous ne devez pas l'utiliser pour cet exercice 🙄</p>

##### Lien(s) 

[https://openweathermap.org/api](https://openweathermap.org/api)# TP Arduino simulator

## Création du compte

[https://www.tinkercad.com/](https://www.tinkercad.com/)

## A réaliser

Sujet au choix, mais quantité variable suivant le nombre de membres dans le groupe : 1 par membre dans le groupe. Donc si vous êtes 3 vous devrait rendre 3 sujets, à vous de vous organiser ensuite.

**Rendu = 1 pdf avec tous les codes + capture d'écran du montage**

<span style="text-decoration: underline;">N'oubliez pas de mettre le nom des membres du groupe !</span>

Quelque soit le sujet, seront évalués entre autres :

- Le bon fonctionnement
- La qualité, la propreté et la fiabilité du code
- La qualité et la propreté du montage

### Sujet 1 : K2000

Vous devez, avec un bandeau de led, reproduire la célèbre face avant de la voiture de K2000. Il est attendu que ça ne soit pas une led unique rouge qui se balade sur le bandeau mais qu'on ait bien l'effet "trainée" comme on le peut voir ici :

[![0953e7e6c3a2350866d4a6f8383a78ec.gif](https://doc.creatronic.fr/uploads/images/gallery/2021-01/0953e7e6c3a2350866d4a6f8383a78ec.gif)](https://doc.creatronic.fr/uploads/images/gallery/2021-01/0953e7e6c3a2350866d4a6f8383a78ec.gif)

Librairie recommandée(s) :

- Adafruit\_NeoPixel.h

### Sujet 2 : Attiny

L'Attiny est la le petit frère de l'Atmega328P qu'on trouve sur les Arduino UNO, et reste bien utile pour des petites applications.

Dans ce sujet, vous devrait y connecter une LED RGB qui changera de couleur continuellement dans le temps comme ceci :

[![led-rgb.gif](https://doc.creatronic.fr/uploads/images/gallery/2021-01/led-rgb.gif)](https://doc.creatronic.fr/uploads/images/gallery/2021-01/led-rgb.gif)

 Pensez bien à l'alimentation de l'Attiny !

Le pin mapping est le suivant :

[![image-1609691277596.png](https://doc.creatronic.fr/uploads/images/gallery/2021-01/scaled-1680-/image-1609691277596.png)](https://doc.creatronic.fr/uploads/images/gallery/2021-01/image-1609691277596.png)

### Sujet 3 : serrure codée

En utilisant le clavier numérique 4x4 et un servo en guise de serrure, vous devrait concevoir un coffre qui s'ouvrira avec un code à 4 chiffres.

### Sujet 4 : capteur gaz

Vous devrez construire un dispositif de protection en cas de présence excessive de gaz dans l'air. A partir d'un certain seuil, un buzzer devra émettre des bips et devra simuler l'activation de la ventilation grâce à un moteur.

Comme le capteur gaz est un peu particulier, un schéma vous est fourni (la résistance fait 4kOhm) :

[![image-1609692591669.png](https://doc.creatronic.fr/uploads/images/gallery/2021-01/scaled-1680-/image-1609692591669.png)](https://doc.creatronic.fr/uploads/images/gallery/2021-01/image-1609692591669.png)

Par ailleurs, un moteur ne se commande pas directement avec une Arduino, il faut utiliser un transistor pour le commander vous trouverez plein d'exemple de montage sur Google ;) )