DeltaLab est une association ‘loi 1901’ d’intérêt général, dont l’objectif est la création d’un espace dédié à l’innovation, à la production numérique au prototypage et à l’«expression artistique».
Le principe fondateur de l’association est d’apprendre à faire soi-même, pour passer de l’idée à l’objet.
Deltalab se spécialise en Objets Connectés, et est en train de créer un vaste «écosystème numérique» entre Drôme et Vaucluse, pour répondre à des besoins non couverts, mettre à disposition ressources et équipements pour usage professionnels et instaurer des partenariats avec les autres structures et initiatives numériques existantes.
Deltalab est aussi un FabLab (Fabrication Laboratory / Laboratoire de Fabrication ), un tiers-lieu de type makerspace où se trouve un atelier qui dispose de machines de fabrication comme des Imprimantes 3D ou des découpeuses Laser.
Deltalab se veut ouvert à tous publics : étudiants, professionnels, associations, inventeurs, designers, artistes, etc.
Ce projet est une introduction à l'utilisation de relais via WEMOS.
Il se base sur un shield contenant un seul relais, qui s'emboite sous la WEMOS.
Ce projet a pour but de permettre l'utilisation d'un "relais". Il s'agit d'un switch qui change de position quand il reçoit un message. Dans une utilisation réelle, le relais pourrait être relié à une serrure ou une machine à protéger, à une LED, à un buzzer,...
Le projet se décompose en 2 parties distinctes : le relais et l'esp8266 associée , et le serveur Node-RED.
Les fonctionnalités proposées par ce projet sont les suivantes :
Activation d'un relais grâce à du code sur la wemos
Activation d'un relais depuis le serveur node-red
Arduino IDE : téléchargeable à www.arduino.cc/en/software
Librairie ESP8266WiFi : à télécharger à github.com/esp8266/Arduino/tree/master/libraries/ESP8266WiFi
Puis à ajouter à Arduino (dézipper, puis dans Arduino : Croquis > Inclure une Bibliothèque > Ajouter une Bibliothèque .zip, récupérez la librairie dans le dossier libraries)
ESP8266 : Fichier > Préférences > Gestionnaire de cartes.
Entrez l' URL http://arduino.esp8266.com/staging/package_esp8266com_index.json.
Puis Croquis > Carte > Gestionnaire de cartes, rechercher ESP8266
Le relais se trouve sur un shield qui est fait pour s'emboiter avec la wemos. Il vous suffit donc de les emboiter en faisant attention au sens (les mêmes pins s'emboitent ensemble).
PubSubClient by Nick O'Leary (librairie à installer avec le gestionnaire de bibliothèque)
ESP8266WiFi (intégré lors du téléchargement des cartes esp8266)
Copiez-collez le code ci-dessous dans un nouveau fichier Arduino.
/*Librairies*/
#include <SPI.h>
#include <MFRC522.h>
#include "PubSubClient.h"
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
/*Constantes*/
#define ClientID "rdc_lab" // id du lecteur
#define pin D2 WiFiClient cli;
PubSubClient mqttClient(cli);
const char* ssid = "le votre"; // le nom de votre point wifi
const char* password = "le votre"; // mot de passe du point wifi
const char* mqttServer = "le votre"; // serveur mqtt
const int mqttPort = 1883;
/* Reconnexion au serveur mqtt si déconnecté */
boolean reconnect() {
if (mqttClient.connect(ClientID)) {
mqttClient.subscribe(ClientID);
mqttClient.loop(); }
return mqttClient.connected();
}
/* Réponse du serveur : carte acceptée ou refusée (uniquement si relais local ) */
void callback(char* topic, byte* payload, unsigned int length) {
String cmd = String((char*)payload);
if (cmd.substring(0,2).equals("on")) {
digitalWrite(pin , HIGH);
mqttClient.publish(ClientID,"ok");
}
if (cmd.length() >= 3 && cmd.substring(0,3).equals("off")) {
digitalWrite(pin , LOW);
mqttClient.publish(ClientID,"nok");
}
}
/*
* Connexion au WiFi et initialisation du MQTT
*/
void setup() {
Serial.begin(115200); // Démarrage du moniteur série
WiFi.hostname(ClientID);
WiFi.begin(ssid,password);
delay(1500);
while(WiFi.status() != WL_CONNECTED) {
delay(500);
}
mqttClient.setCallback(callback);
mqttClient.setServer(mqttServer,mqttPort);
digitalWrite(pin,HIGH);
delay(1500);
digitalWrite(pin,LOW);
}
/*
* Attente d'un message
*/
void loop() {
delay(1500);
if (!mqttClient.connected()) {
reconnect();
}
mqttClient.loop();
}
Dans arduino, pour choisir la bonne carte, allez dans Outils > Type de carte. On utilise ici une Lolin(Wemos) D1 mini pro pour le lecteur, et une ESP8266 générique pour les relais. Vérifiez le Port et la vitesse d’écriture.
Pour téléverser le code sur la carte, allez dans croquis > Téléverser, ou cliquez sur la flèche.
La node switch permet d'envoyer un message mqtt au relais, pour l'activer ou non
La node mqtt in permet de récupérer un message de réponse qui permet de savoir l'état du relais. Les nodes set définissent la couleur de l'icone à afficher dans le dashboard selon l'état du relais. La node text affiche l'id du relais ainsi que son état
Nodes MQTT in
MQTT in
Serveur local : add new mqtt-broker, puis cliquez sur le crayon à droite
Server : localhost
QoS : 2
Topic : # (tous les topics)
MQTT out
Serveur local : le même que mqtt in
QoS : laissez blanc
Topic : l'id du relais
Switch
condition 1 : msg.payload == on
condition 2 : msg.payload == off (ou otherwise)
Change
Un premier node avec une règle sur Set. Entrez green en-dessous de msg.payload.
Un deuxième node avec une règle sur Set. Entrez red en-dessous de msg.payload.
Text
Group : add new ui_group, cliquez sur le crayon à côté.
Tab : add new ui_tab, cliquez sur le crayon à côté, puis cliquez sur Update.
label : {{msg.topic}}
value : <font color={{msg.payload}}><i class="fa fa-square fa-2x"></i></font>