Ligne 20 : | Ligne 20 : | ||
Nous allons exploiter cette connaissance pour faire un mini écran connecté. | Nous allons exploiter cette connaissance pour faire un mini écran connecté. | ||
− | * | + | *Cet écran va afficher les messages reçus depuis un serveur MQTT |
*Les messages peuvent contenir des caractères accentués | *Les messages peuvent contenir des caractères accentués | ||
− | *La transmission sera | + | *La transmission sera chiffrés |
*Afin d'éviter les attaques MITM (man in the middle), nous allons vérifier l'identité du serveur MQTT à l'aide de son certificat. | *Afin d'éviter les attaques MITM (man in the middle), nous allons vérifier l'identité du serveur MQTT à l'aide de son certificat. | ||
− | + | À partir de là nous pouvons même utiliser '''IFTT''' (ou '''tasker''') afin de transmettre des informations du '''web''' / de notre '''installation domotique''' ou de notre '''téléphone''' sur le serveur MQTT. | |
Afin de simplifier la partie MQTT, nous allons utiliser '''Adafruit IO''' qui permet d'avoir un '''serveur MQTT gratuitement'''. | Afin de simplifier la partie MQTT, nous allons utiliser '''Adafruit IO''' qui permet d'avoir un '''serveur MQTT gratuitement'''. | ||
Ligne 33 : | Ligne 33 : | ||
{{ {{tntn|Materials}} | {{ {{tntn|Materials}} | ||
|Step_Picture_00=Afficher_une_image_sur_un_écran_ST7789_tft.png | |Step_Picture_00=Afficher_une_image_sur_un_écran_ST7789_tft.png | ||
− | |Material=* ESP8266 | + | |Material=*ESP8266 |
− | * ST7789 | + | *ST7789 |
− | * Câble Wrapping 30 AWG | + | *Câble Wrapping 30 AWG |
− | |Tools=* Fer à souder | + | |Tools=*Fer à souder |
− | * Imprimante 3D | + | *Imprimante 3D |
|Prerequisites={{ {{tntn|Prerequisites}} | |Prerequisites={{ {{tntn|Prerequisites}} | ||
|Prerequisites=Afficher une image sur un écran ST7789 | |Prerequisites=Afficher une image sur un écran ST7789 | ||
Ligne 75 : | Ligne 75 : | ||
Cette bibliothèque va nous permettre de communiquer avec notre '''serveur MQTT'''. | Cette bibliothèque va nous permettre de communiquer avec notre '''serveur MQTT'''. | ||
− | Dans le programme il y a un fichier '''arduino_secrets.h''', c'est ici que nous allons stocker nos identifiants pour le '''Wi-Fi''' et le '''serveur MQTT''' | + | Dans le programme, il y a un fichier '''arduino_secrets.h''', c'est ici que nous allons stocker nos identifiants pour le '''Wi-Fi''' et le '''serveur MQTT''' |
− | Les identifiants sur Adafruit IO se | + | Les identifiants sur Adafruit IO se trouvent en cliquant sur '''View AIO Key''' |
*Dans '''HOME_SSID''' mettez le nom de votre réseau WI-FI | *Dans '''HOME_SSID''' mettez le nom de votre réseau WI-FI | ||
Ligne 99 : | Ligne 99 : | ||
{{ {{tntn|Tuto Step}} | {{ {{tntn|Tuto Step}} | ||
|Step_Title=Test depuis Adafruit IO | |Step_Title=Test depuis Adafruit IO | ||
− | |Step_Content=Adafruit IO nous permet de créer une donnée qui sera | + | |Step_Content=Adafruit IO nous permet de créer une donnée qui sera affichée sur l'écran. |
*Cliquer sur '''Feeds''' / '''Notifications''' | *Cliquer sur '''Feeds''' / '''Notifications''' | ||
Ligne 118 : | Ligne 118 : | ||
Nous allons voir comment afficher les notifications qu'un smartphone sur notre écran. | Nous allons voir comment afficher les notifications qu'un smartphone sur notre écran. | ||
− | {{Warning|Bien que ce soit amusant comme projet, n'oubliez pas que vous | + | {{Warning|Bien que ce soit amusant comme projet, n'oubliez pas que vous allez donner accès à vos notifications à deux services sur internet. |
− | Même si les communications sont en théorie | + | Même si les communications sont en théorie sécurisée, niveau vie privée c'est une très mauvaise idée.}} |
*Créer un compte sur IFTTT | *Créer un compte sur IFTTT | ||
*Installer l'application android | *Installer l'application android | ||
− | + | '''if''' | |
*Sur l'interface web d'IFTTT, cliquer sur '''My Applets''' | *Sur l'interface web d'IFTTT, cliquer sur '''My Applets''' | ||
*Cliquer sur '''New Applet''' | *Cliquer sur '''New Applet''' | ||
− | * | + | *Choisissez le service '''Android Device''' |
− | * | + | *Choisissez '''Notification Received''' |
− | + | '''then''' | |
− | * | + | *Choisissez '''Adafruit''' |
− | * | + | *Choisissez '''Send data to Adafruit IO''' |
− | *Dans Feed Name mettez notifications | + | *Dans '''Feed Name''' mettez '''notifications''' |
− | *Dans Data to save | + | *Dans '''Data to save''' choisisez '''AppName''' et Notification '''Title''' |
{{Dont|L'ESP8266 va se déconnecter (puis se reconnecter) du serveur MQTT, si le message est trop long.}}<br />Votre applet devrait ressembler à ceci. | {{Dont|L'ESP8266 va se déconnecter (puis se reconnecter) du serveur MQTT, si le message est trop long.}}<br />Votre applet devrait ressembler à ceci. | ||
− | Aller sur votre téléphone, lancer IFTTT et autoriser l'accès aux notifications | + | Aller sur votre téléphone, lancer IFTTT et autoriser '''l'accès aux notifications'''.<br /> |
− | <br /> | ||
|Step_Picture_00=Mini_écran_connecté_ifttt.png | |Step_Picture_00=Mini_écran_connecté_ifttt.png | ||
}} | }} | ||
{{ {{tntn|Tuto Step}} | {{ {{tntn|Tuto Step}} | ||
|Step_Title=Cacher vos identifiants dans le logiciel Arduino | |Step_Title=Cacher vos identifiants dans le logiciel Arduino | ||
− | |Step_Content=Nous avons | + | |Step_Content=Nous avons utilisé le fichier '''arduino_secrets.h''' qui est dans notre croquis pour '''sauvegarder nos identifiants'''. |
− | Il vaut mieux éviter de faire cela car vous risquez de partager | + | {{Warning|Il vaut mieux éviter de faire cela, car vous risquez de partager accidentellement vos mot de passe!}} |
Une solution pour éviter ça et de créer une '''bibliothèque''' pour nos identifiants. | Une solution pour éviter ça et de créer une '''bibliothèque''' pour nos identifiants. | ||
− | L'autre avantage c'est que nos identifiants seront ''' | + | L'autre avantage c'est que nos identifiants seront '''accessibles pour tous nos croquis''' ! |
{{Info|1=C'est Andreas Spiesss qui a eu cette idée | {{Info|1=C'est Andreas Spiesss qui a eu cette idée | ||
Ligne 168 : | Ligne 167 : | ||
{{ {{tntn|Tuto Step}} | {{ {{tntn|Tuto Step}} | ||
|Step_Title=Changer les images | |Step_Title=Changer les images | ||
− | |Step_Content=Si vous voulez changer les images | + | |Step_Content=Si vous voulez changer les images affichées, elles sont sauvegardées dans '''bitmaps.h''' |
Pour convertir vos images en code, suivez ce tutoriel | Pour convertir vos images en code, suivez ce tutoriel | ||
Ligne 174 : | Ligne 173 : | ||
[[Afficher une image sur un écran ST7789]] | [[Afficher une image sur un écran ST7789]] | ||
− | Les images en version | + | Les images en version vectorielle SVG et PNG sont disponibles dans le dossier '''images''' |
Pour afficher une image, il faut juste utiliser cette commande: | Pour afficher une image, il faut juste utiliser cette commande: | ||
Ligne 194 : | Ligne 193 : | ||
|Step_Picture_01=Mini_écran_connecté_notifications.png | |Step_Picture_01=Mini_écran_connecté_notifications.png | ||
|Step_Picture_02=Mini_écran_connecté_wifi.png | |Step_Picture_02=Mini_écran_connecté_wifi.png | ||
+ | }} | ||
+ | {{ {{tntn|Tuto Step}} | ||
+ | |Step_Title=Changer la police d'écriture | ||
+ | |Step_Content=Vous avez peut-être remarqué que la police d'écriture est incluse dans le croquis sous le nom '''arial12pt8b.h''' | ||
+ | |||
+ | Il se trouve que par défaut, il n'y a pas de police d'écriture avec les accents qui puissent être intégrés directement dans le code. | ||
+ | |||
+ | J'ai donc dû la générer à partir d'une police d'écriture ('''.ttf'''). | ||
+ | |||
+ | Vous pouvez télécharger une police d'écriture (par ex: sur https://www.dafont.com/), et la convertir en code. | ||
+ | |||
+ | Pour cela il vous faut '''fontconvert''', le code source est disponible dans Adafruit_GFX mais vous pouvez trouver une version prêt à l'usage (pour Windows) dans la description de cette vidéo | ||
+ | |||
+ | https://www.youtube.com/watch?v=L8MmTISmwZ8 | ||
+ | |||
+ | Pour générer la police d'écriture il vous suffit de taper cette commande: | ||
+ | |||
+ | <code>fontconvert arial.ttf 12 32 255 > arial12pt8b.h</code> | ||
+ | |||
+ | Pour changer la taille de la police, changer le premier chiffre (ici 12pt) | ||
+ | |||
+ | Le 8b signifie que la police utilise 8bytes et contient donc les caractères accentués (entre autres) | ||
}} | }} | ||
{{ {{tntn|Tuto Step}} | {{ {{tntn|Tuto Step}} | ||
Ligne 213 : | Ligne 234 : | ||
}} | }} | ||
{{ {{tntn|Notes}} | {{ {{tntn|Notes}} | ||
− | |Notes=Voilà ce tutoriel est fini, j'espère que cela vous | + | |Notes=Voilà ce tutoriel est fini, j'espère que cela vous donnera des idées pour faire des applications sympas avec. |
Évidemment dans l'idéal | Évidemment dans l'idéal | ||
− | * Il faudrait pouvoir paramétrer notre écran depuis une interface web | + | *Il faudrait pouvoir '''paramétrer notre écran''' depuis une '''interface web''' |
− | * Éviter d'utiliser des images de la taille de l'écran quand ce n'est pas nécessaire | + | *Éviter d'utiliser des '''images''' de la '''taille de l'écran''' quand ce n'est pas nécessaire |
Mais cela devrait vous donner un bon point de départ. | Mais cela devrait vous donner un bon point de départ. | ||
− | Suivez moi sur | + | '''Suivez-moi sur Twitter''' si vous voulez être au courant des prochains tutoriels en avance : https://twitter.com/m4dnerd |
}} | }} | ||
{{ {{tntn|Tuto Status}} | {{ {{tntn|Tuto Status}} | ||
|Complete=Draft | |Complete=Draft | ||
}} | }} |
Auteur Rémi Sarrailh (µsini) | Dernière modification 9/12/2019 par Clementflipo
iftt, mqtt, esp8266, st7789, tft, adafruit.io, iot Mini_écran_connecté_tft_iftt_wiki.png fr none Creation 0
Précédemment, nous avons vu comment afficher une image sur un ST7789, un écran TFT à 3€. ( Afficher une image sur un écran ST7789 )
Nous allons exploiter cette connaissance pour faire un mini écran connecté.
À partir de là nous pouvons même utiliser IFTT (ou tasker) afin de transmettre des informations du web / de notre installation domotique ou de notre téléphone sur le serveur MQTT.
Afin de simplifier la partie MQTT, nous allons utiliser Adafruit IO qui permet d'avoir un serveur MQTT gratuitement.
Suivez le tutoriel sur l'écran ST7789, avant toute chose,
En résumé,
Afficher une image sur un écran ST7789
Tout d'abord il nous faut récupérer le programme
Cette bibliothèque va nous permettre de communiquer avec notre serveur MQTT.
Dans le programme, il y a un fichier arduino_secrets.h, c'est ici que nous allons stocker nos identifiants pour le Wi-Fi et le serveur MQTT
Les identifiants sur Adafruit IO se trouvent en cliquant sur View AIO Key
Téléverser le croquis pour tester si tout marche bien.
Normalement vous devriez arriver jusqu'à l'écran Notifications
Adafruit IO nous permet de créer une donnée qui sera affichée sur l'écran.
IFTTT est un service qui permet d'automatiser des tâches, Adafruit IO est compatible avec celui-ci.
Nous allons voir comment afficher les notifications qu'un smartphone sur notre écran.
if
then
Aller sur votre téléphone, lancer IFTTT et autoriser l'accès aux notifications.
Nous avons utilisé le fichier arduino_secrets.h qui est dans notre croquis pour sauvegarder nos identifiants.
Une solution pour éviter ça et de créer une bibliothèque pour nos identifiants.
L'autre avantage c'est que nos identifiants seront accessibles pour tous nos croquis !
Dans le croquis, changez l'include au début du code
//#include "arduino_secrets.h"
include <arduino_secrets.h>
Si vous voulez changer les images affichées, elles sont sauvegardées dans bitmaps.h
Pour convertir vos images en code, suivez ce tutoriel
Afficher une image sur un écran ST7789
Les images en version vectorielle SVG et PNG sont disponibles dans le dossier images
Pour afficher une image, il faut juste utiliser cette commande:
tft.pushImage(0,0,240,240,adafruit_io);
Pour écrire du texte sur plusieurs lignes, positionnez le texte puis écrivez le
tft.setCursor(0,50);
tft.println(data); //Print text
Vous pouvez aussi écrire une seule ligne avec cette commande
tft.drawString(HOME_SSID, 25, 20);
Vous avez peut-être remarqué que la police d'écriture est incluse dans le croquis sous le nom arial12pt8b.h
Il se trouve que par défaut, il n'y a pas de police d'écriture avec les accents qui puissent être intégrés directement dans le code.
J'ai donc dû la générer à partir d'une police d'écriture (.ttf).
Vous pouvez télécharger une police d'écriture (par ex: sur https://www.dafont.com/), et la convertir en code.
Pour cela il vous faut fontconvert, le code source est disponible dans Adafruit_GFX mais vous pouvez trouver une version prêt à l'usage (pour Windows) dans la description de cette vidéo
https://www.youtube.com/watch?v=L8MmTISmwZ8
Pour générer la police d'écriture il vous suffit de taper cette commande:
fontconvert arial.ttf 12 32 255 > arial12pt8b.h
Pour changer la taille de la police, changer le premier chiffre (ici 12pt)
Le 8b signifie que la police utilise 8bytes et contient donc les caractères accentués (entre autres)
En plus de changer les identifiants / le serveur / le port dans arduino_secrets.h, il faut récupérer le certificat SSL de votre serveur.
Pour cela il vous faut openssl, vous pouvez le télécharger ici (Windows) : https://slproweb.com/products/Win32OpenSSL.html
Puis tapez cette commande (avec l'adresse de votre serveur mqtt)
openssl s_client -showcerts -connect io.adafruit.com:8883
Récupérer le dernier certificat affiché et copier le dans connection.h
Voilà ce tutoriel est fini, j'espère que cela vous donnera des idées pour faire des applications sympas avec.
Évidemment dans l'idéal
Mais cela devrait vous donner un bon point de départ.
Suivez-moi sur Twitter si vous voulez être au courant des prochains tutoriels en avance : https://twitter.com/m4dnerd
Draft
Vous avez entré un nom de page invalide, avec un ou plusieurs caractères suivants :
< > @ ~ : * € £ ` + = / \ | [ ] { } ; ? #