Notificateur De Colis
Le projet:
Du au covid, les services de commandes en ligne et de livraison ont doublé voir triplé. De ce fait le nombre de colis présents dans nos boîtes aux lettres a augmenté. Afin d'en être averti et de limiter leur vol, un système infrarouge déposé et fixé par des aimants dans la boîte aux lettres, permet de nous notifier par sms lorsqu'un mouvement a été détecté. Le notificateur de colis est né.
Supplies
Le projet fonctionne avec plusieurs éléments:
- 1 carte Arduino MKR 1010 - 1 batterie lithium 3,7 V - 1 capteur de mouvement infrarouge HC R501 (documentation : https://www.makerguides.com/hc-sr501-arduino-tutorial/)
- 3 cables pour connecter les éléments entre eux.
Le Circuit :
Pour que le système fonctionne de manière optimale, nous branchons le capteur en VCC sur l'Arduino et non en 5V car la batterie n'est pas en sortie USB. Le deuxième cable est quand à lui branché sur la sortie digital 2 et le troisième sur la terre (GRD).
Le choix s'est porté sur une batterie afin que le système fonctionne de façon autonome.
Arduino :
Avant tout de chose, il faut installer le pilote de la carte Arduino qui va être utilisée, dans ce cas de figure il s'agit d'une MKR1010. Pour cela il faut aller dans : Outils > Type de carte > Gestionnaire de carte, puis rechercher le pilote de la MKR1010.
Une fois installé, il faut selectionner le port COM sur lequel on l'a branchée.
Le Code :
Un test du code sans connection au wifi est également effectué avant d'éviter toute complication dans les étapes futures, le voici détaillé.
int etatcapteur ;
void setup() {
Serial.begin(115200);
delay(500); }
void loop() {
etatcapteur = digitalRead(2);//lecture du capteur if (etatcapteur == 1) { //si quelquechose est detecte
Serial.println("mouvement détécté");
}
else { //sinon
Serial.println("pas de mouvement détecté");
}
delay(5000); }
Une fois le code compilé, on vérifie qu'il n'y a pas d'erreur et on effectue le téléversement.
Le fonctionement du capteur se vérifie grâce au moniteur.
Adafruit.io :
Adafruit est une plateforme permettant de collecter les données des objets connectés. On peut ainsi les visualiser via son ordinateur, smartphone, tablette...
Pour y avoir accès, la première étape est de créer un compte sur www.adafruit.io
Une fois le compte créée, se diriger dans l'onglet IO, ensuite créer un “New group” dans l'onglet “Feeds” qu'il faut nommer “ir” et également un new feed dans ce groupe qu'il faut nommer “ir”.
Une fois ces étapes réaliser, il faut adapter le code pour que le capteur transmette des données via le wifi sur la plateforme adafruit.io .
#include "arduino_secrets.h" //on inclut l'onglet nommé arduino_secret.h #include "adafruit_io.h" //on inclut l'onglet nommé adafruit_io.h int etatcapteur ;
void setup() {
Serial.begin(115200);
delay(500); while (!Serial); connectToWifi(); }
void loop() { etatcapteur = digitalRead(2); //lecture du capteur if (etatcapteur == 1) { //si quelquechose est detecte
Serial.println("mouvement détécté");
}
else { //sinon
Serial.println("pas de mouvement détecté");
}
sendToCloud(); //on fait appel à cette fonction définie après delay(5000);
}
void sendToCloud() {
StaticJsonDocument doc = initFeeds();
JsonArray feeds = doc.createNestedArray("feeds");
JsonObject feed1 = feeds.createNestedObject();
feed1["key"] = "ir";//cette clé à été récupérée dans feed info dans Adafruit
feed1["value"] = etatcapteur;
sendFeeds(doc); }
L'onglet « arduino_secret.h » devra être rempli avec le ssid du Wifi utilisé, pareil pour le mot de passe du wifi utlisé et l'identifiant de adafruit.io et la key de adafruit.io que l'on peut trouver en allant dans l'onglet My key. Le nom du groupe sera celui du feed pour le capteur IR. (Suivre ce tutoriel pour apprendre à créer un feed : https://learn.adafruit.com/adafruit-io-basics-feeds)
#define SECRET_IO_USERNAME "nom_d'utilisateur"
#define SECRET_IO_KEY "clé_de_adafruit"
#define SECRET_IO_GROUP "ir"
#define SECRET_WIFI_SSID "Nom_du_réseau"
#define SECRET_WIFI_PASS "mot_de_passe_du_réseau"
L'onglet « adafruit.io.h » renseigne les protocoles et les fonctions necessaire à la communication entre la plateforme adafruit.io et la carte Arduino MKR1010.
Telegram :
Pour le projet, nous avons choisi d'utiliser l'application de messagerie instantanée Telegram, qui nous avertira par une notification sur notre téléphone lorsqu'un colis sera déposé dans la boîte aux lettres.
Pour cela, il faut créer un canal sur télégram, je l'ai nommé “motion_sensor_channel”, celui-ci doit être public.
Après avoir ajouté IFTTT bot a ses contacts, on lui envoi /connect_channel puis on transfère un message ecrit sur le cannal qu 'on veut connecter à IFTTTbot pour pouvoir utiliser les Applets Telegram sur IFTTT.
IFTTT :
IFTTT est un service web permettant à ses utilisateurs de créer des chaînes d'instruction simples appelées applets. Pour simplifier IFTTT permet de connecter 2 API entre elle, dans ce cas de figure Adafruit et Telegram.
Il faut alors se créer un compte sur IFTTT.
Ensuite se diriger dans l'onglet “Create”, cliquer sur “IF THIS” et on selectionne Adafruit. Il faut indiquer la condition, dans ce cas “If Data on ir feed is greater than 0, then Send message to Channel @motion_sensor_channel motion_sensor_channel.”
On remplit alors le message à envoyer sur Telegram sur le canal determiné.
Une application possible par exemple, si le dispositif est placé dans une boite au lettre pour être prévenu de l'arrivée de colis.
On peut envoyer le message « Vous avez du courrier » sur le canal Telegram.
Le Boîtier :
On peut modéliser un boitier en laissant un trou pour le capteur IR, auquel on pourra ajouter un aimant pour pouvoir le fixer à la place adéquate dans la boîte aux lettres.