IoT : un capteur de température connecté

Frederic Dubuisson
BeTomorrow
Published in
5 min readOct 31, 2017

--

L’IoT (Internet of Things) envahit petit à petit notre quotidien. Des capteurs nous renseignent sur notre environnement, de nouvelles possibilités d’interactions avec les objets apparaissent, les routines du quotidien s’automatisent…

Je vous propose ici une entrée dans cet univers par la création complète d’un capteur de température remontant ses informations vers une interface de consultation distante.

Ce capteur peut être utilisé pour mesurer la température d’une pièce, d’une piscine (avec quelques précautions) ou pour connaître la température extérieure.

Le matériel

Commençons par une introduction sur le type de matériel que l’on va utiliser. Notre capteur va se baser sur la plateforme open-source Arduino, offrant de base des outils matériels et logiciels pour le développement IoT.

Plus spécifiquement, nous allons utiliser une carte NodeMCU, de la famille des ESP8266, cette carte intégrant la puce Wifi qui sera utilisée pour la remontée d’informations.

La température sera mesurée grâce à un capteur DS18B20, ayant l’avantage d’être protégé et étanche.

Le montage

Avant de commencer, il va falloir s’équiper. Heureusement, le matériel est très bon marché, la somme des composants ne dépassant pas 15€ :

  • 1x esp8266 (NodeMCU) — Amazon
  • 1x capteur de température DS18B20 — Ebay
  • 1x résistance de 4,7kΩ — Ebay
  • 1 chargeur de téléphone, prise micro-USB
  • 1x câble USB/micro-USB (souvent fourni avec le chargeur de téléphone)

Pour prototyper facilement, il est utile d’avoir ces composants additionnels :

Pour le montage final, un fer à souder sera également nécessaire.

Le capteur de température est un composant de type ‘1-wire’ avec 3 fils : une alimentation (rouge), une masse (noir) et un fil de données (jaune).

Il reste à brancher le cable USB sur le module NodeMCU d’un côté et sur un ordinateur de l’autre.

Le prototype sur sa breadboard

L’environnement de développement

Notre carte NodeMCU ne sait, pour l’instant, rien faire. On va donc la flasher avec un programme permettant de gérer ce montage. Pour cela, plusieurs environnements de développement sont disponibles (je pense en particulier à platform.io) mais on va rester sur l’outil officiel ‘Arduino IDE’, plus facile à appréhender.

Il peut être téléchargé à cette adresse (éviter l’Arduino Web Editor pour l’instant) : https://www.arduino.cc/en/main/software. On va également avoir besoin des drivers pour notre carte (à télécharger sur https://wiki.wemos.cc/downloads et à installer).

De base, l’éditeur Arduino ne connait pas les cartes de type ESP8266; on va donc lui renseigner les spécifications dans les ‘Préférences’ de l’éditeur : mettre ‘http://arduino.esp8266.com/stable/package_esp8266com_index.json’ en tant qu’URL de gestionnaire de cartes supplémentaires.

Ensuite, aller dans le gestionnaire de cartes (menu ‘Outils’ > ‘Type de carte’ > ‘Gestionnaire de cartes’); rechercher et installer le package ‘esp8266’.

On peut alors sélectionner le bon type de carte “NodeMCU 1.0” dans le menu ‘Outils’. Il faut également sélectionner le port adéquat, si nécessaire (dépend du port USB utilisé).

Il reste à renseigner Arduino sur les bibliothèques qu’on va utiliser pour simplifier le développement. Pour cela, aller dans le menu ‘Croquis’ > ‘Inclure une bibliothèque’ > ‘Gérer les bibliothèques’ et sélectionner les bibliothèques suivantes :

  • Adafruit esp8266 (gestion de la carte esp8266)
  • OneWire (gestion du bus ‘1-wire’)
  • DallasTemperature (‘Dallas’ est le fabricant du ds12b80)
  • ESP8266WiFi (gestion du wifi)
  • esp8266HTTPClient (requête HTTP)
  • PrintEx (syntaxe simplifiée pour les logs)

Le code

On commence avec un code simple permettant de lire notre capteur et d’afficher la valeur dans le moniteur série (accessible dans le menu ‘Outils’).

Pour flasher notre carte, il suffit de cliquer sur le bouton ‘Téléverser’, en haut de l’éditeur. Une fois terminé, les valeurs doivent commencer à s’afficher dans le moniteur série.

Vous avez dit ‘connecté ?

On va maintenant lui rajouter la communication réseau vers un site web, permettant ainsi de conserver et analyser les données. Pour cela, on va passer par http://ubidots.com, qui offre un accès gratuit pour un usage raisonnable.

Il faut se créer un compte, puis récupérer le ‘Default token’ en allant dans ‘Api credentials’ dans le menu sous notre avatar. Ce token est à renseigner dans le code suivant pour que notre montage puisse s’identifier.

Une fois ce code flashé, on va voir apparaître un ‘device’ sur le site UbiDots, dans l’onglet ‘Devices’.

Un clic sur notre ‘device’ va nous donner le détail de ses propriétés ainsi que l’historique des valeurs. On peut cliquer sur chaque propriété pour encore plus de détails.

Détail de notre capteur
Détail de l’historique

Notre capteur est maintenant fonctionnel. On peut souder les composants et intégrer cela dans un joli boitier en Légo, en impression 3D, …

Dans la 2e partie, on cherchera à supprimer le fil restant : l’alimentation.

--

--

Frederic Dubuisson
BeTomorrow

Développeur, coach Agile, passionné de technologie en général et de domotique en particulier