Les Carnets de Byfeel domotique , Objets connectés , DIY , Programmation, Nouvelles Technologies ….

Notifheure XL : Tutoriel les premiers pas de la version beta

Comme promis , un tuto pour expliquer , comment fonctionne cette nouvelle version . Cette version sera capable de tourner sur les anciens Notifheure ( sous réserve d’une ou deux petites modif) , pour ceux qui désirent la tester . Mais les fonctions principales devraient fonctionner.

Cette version , est pour l’instant en cours de developpement , elle sera mise a jour au fur et a mesure de mes dispos ( allez sur mon tweeter ou mon github , pour être informé des mises a jours ) . Il se peut que la version que vous telecharger aujourd’hui soit differentes de celle décrites dans cet article , mais les premiers pas restent les mêmes. Pour les grands changements , je ferai un nouvel article.

Fonctionalités inactives ou à venir

  • Les menus module , dht et admin ne sont pas actifs pour l’instant
  • Page config administrateur ( la configuration par défaut se réalise pour l’instant directement dans le code )
  • Gestion des relais
  • historique
  • Gestion partiel des boutons
  • … et surement plein d’autres choses que j’oublies.

La liste des courses

Le minimum pour installer le logiciel , dans sa version la plus basique.

Options principales : Pour ajouter du confort à l’utilisation du notifheure

  • Une photo résistance et sa résistance de 10kΩ ( utilise la seule entrée analogique du module ESP )
  • 1 ou 2 boutons poussoirs

Option secondaires : température / notification lumineuse et sonore

  • Un module DHT ( pour la température / humidité ) – Option activé
  • Notification lumineuse
    Le but des notifications lumineuse et d’emettre des signaux visuels ( sous la forme de flash , ou d’autres effets visuels , les sorties relais ou digital permettrons de relayer ses signaux sur des appareils extérieurs .
    • Led Interne + résistance ( dans mes exepmles une led blanche avec résistance de 100Ω )
    • Neopixel ( Ring ou strip )
    • Relais / sortie digitale

Pour l’instant , je n’ai pu faire des test qu’avec une simple LED ( possibilité de varier l’intensité lumineuse automatiquement ) et un strip ou ring neopixel ( effet couleur / flash / etc … )
Ces deux équipements permettent d’activer la fonction veilleuse.

  • Notification sonore
    Le but des notifications sonore et d’émettre un signal audio , via un buzzer ou un DFPlayer si solution interne ou via un relais ou sortie digital pour activer un élément extérieur , comme une squeezebox ou une sirene par exemple.
    • Buzzer
    • DFPlayer
    • Relais / sortie Digitale

Pour l’instant , cette partie est encore en test . Le buzzer , a tendance à interferer avec l’affichage matrice ( il faut que je corrige ça ) , le DFPlayer est fonctionnel , mais toutes les options ne sont pas encore utilisé. Les fichiers MP3 , sont à mettre dans le dossier 001 pour les notifs et le dossier MP3 pour les réveils ou Alarme.

Je réaliserai , un article sur chacune des notifications , car il y a beaucoup de possibilités. Les sorties GPIO 4, 5 , 12 et 16 sont réservés à la gestion de ces notifications.

Le cablage

Montage des matrices. J’ai pris le montage en Z ( voir détail dans mon article sur l’affichage XL )

Schéma principale de base avec les options principale ( photorésistante + Boutons )

Schéma base + options principale

Pour cette nouvelle version , j’utilise les sorties GPIO ( 13,14 et 15 ) , attention sur l’ancien notifheure j’utilisais les sortie ( 12,13 et 14 ) . C’est l’entrée CS_PIN qui est impacté par ce changement.

Si vous envoyez ce firmware dans une ancienne version du notifheure pensez à modifier cette Sortie ( comme indiqué ci dessous ).

#define CLK_PIN   14  // SCK (D5 wemos D1R1 ou mini )
#define DATA_PIN  13  // MOSI ( D7 wemos D1R1 ou mini )
//#define CS_PIN    15  // SS ( D10 sur D1R1  ou D8 sur Mini )
#define CS_PIN    12  // SS ( D10 sur D1R1  ou D8 sur Mini )  ---- Pour NOtifheure 1

Le code

Pour des raisons de commodités , je suis passé depuis plusieurs mois , à la programmation sous la plateform : PlateformIO , qui peut tourner soit sous ATOM , soit sous VSCODE ( les deux sont gratuits ) .

Comme je l’explique dans mon article sur Atom . J’y ai trouvé plusieurs avantages :

  • Syntaxe couleur / outil de recherche avançés
  • Fenêtrage , multi écran
  • Syntaxe automatique / rappel des fonctions existantes …
  • Gestion des mise à jours plus simple
  • Possibilité d’avoir des bibliothèques différentes pour chaque projet ( cela permet de gérer plusieurs versions de la même bibliothèque )
  • Gestion git depuis l interface.
  • et biens d’autres avantages.

Le code est disponible sur mon github . Il peut être facilement adapté à l’interface Arduino IDE . J’ai gardé volontairement l’extension ino . Il faudra sortir les fichier du dossier include , pour les mettre au même niveau que le fichier source.

Le code à été construit sur un Wemos Mini , pensez à ajuster le fichier platform.ini ( sous platformIO) , afin de l’adapter à votre configuration . Exemple , ci dessous de ma configuration. Pour le premier flashage , pensez à decommenter la partie usb ( vérifier le nom de votre port USB , dans l’onglet device de platformIO ) .
Par la suite , vous pourrez passer par OTA.

Récupérer les sources sur mon github ( branche develop ).


[env:d1_mini]
platform = espressif8266
board = d1_mini
framework = arduino
debug_tool = custom
;OTA
;salon
;upload_port = 192.168.x.x
;bureau
upload_port = 192.168.1.126
;usb
;upload_port = /dev/cu.wchusbserialfa1230

Liste des bibliothèques utilisés

  1. Les Bibliothèques systèmes ( ces bibliothèques sont incluses dans le framework de la carte )
    • esp8266mDNS.h
    • EEPROM.h
    • FS.h
    • SPI.h
    • ESP8266WIFI.h
    • WIFIUdp.h
    • ArduinoOTA.h
    • esp8266Webserver.h
    • SoftwareSerial.h
  2. Les Bibliothèques extérieurs ( ces bibliothèques sont a ajoutés dans platformIO)
    • MD_PAROLA ( v3.3 )
    • MD_MAX72XX ( V3.3.1 )
    • NTPClient (V3.1.0 )
    • Adafruit NeoPixel ( V1.3.3 )
    • ArduinoJson ( v6.13.0 )
    • DFRobotPlayerMini ( V1.0.5 )
    • DHT Sensor Library ESPx ( V1.17 )
    • NonBlockingRTTTL ( V1.2.2)
    • Time ( V1.5)
    • WebSockets ( V2.2.0 )
    • WifiManager ( V0.15 )
    • ClickButton (2012.08.29)

Je vais maintenir cette liste a jour , au fur et a mesure des nouvelles versions et des validations du code.

Les parametres à ajuster

Le mot de passe et login admin ( pour des reglages admin futur )

//***************************
// admin page config
//***************************
const char* www_username = "admin";
const char* www_password = "notif";

La configuration des matrices utilisés :

//****************************************************
// En fonction de vos matrices , si probléme         *
// d'affichage ( inversé , effet miroir , etc .....) *
// ***************************************************
// matrix   - decocher selon config matrix    ********
//#define HARDWARE_TYPE MD_MAX72XX::FC16_HW        //***
//#define HARDWARE_TYPE MD_MAX72XX::PAROLA_HW    //***
#define HARDWARE_TYPE MD_MAX72XX::ICSTATION_HW //***
//#define HARDWARE_TYPE MD_MAX72XX::GENERIC_HW   //***
// ***************************************************
// Branchement des matrices  ( attention sortie différentes pour CS_PIN )
#define CLK_PIN   14  // SCK (D5 wemos D1R1 ou mini )
#define DATA_PIN  13  // MOSI ( D7 wemos D1R1 ou mini )
#define CS_PIN    15  // SS ( D10 sur D1R1  ou D8 sur Mini )
//#define CS_PIN    12  // SS ( D10 sur D1R1  ou D8 sur Mini )  ---- Pour NOtifheure 1
// Pour info ancienne version NotifHeure
//#define CLK_PIN   14
//#define DATA_PIN  13
//#define CS_PIN    12

Les options :
type de Sortie Lumineuse si existe , type de sortie audio si existe.
Type DHT si existe
Numéro des PIN Associés à chaque options.

// Options matériels
#define LED_OUT 3 // 0 aucune , 1 Led interne , 2 relais ,3 Ring neopixel ,4 Digital output
#define AUDIO_OUT 0 // 0 aucun , 1 buzzer , 2 MP3player , 3 autres ( sortie relais ou digital)
#define BOUTON1 true
#define BOUTON2 true
//option NeoPixel
// Nombre de led si Ring ou strip neopixel en place
#define LED_COUNT  12
// **************
// *** PIN ******
// ***************
// ********** DHT
#define DHTTYPE DHTesp::DHT11  // si DHT11
#define dhtpin 16 // GPIO16  egale a D2 sur WEMOS D1R1  ou D0 pour mini ( a verifier selon esp )
// Entree analogique pour auto luminosité
// PIN Analogique
#define PINAUTO_LUM A0  // ne pas modifier entrée pour photo résistance
// PIN AUDIO ( AUDIOPINTX = MP3PLAYER TX ou Sortie Buzzer ou sortie RElais ou sortie Digital)
// PINAUDIORX : uniquement pour MP3player
// PIN qui serviront pour la communication série sur le WEMOS
#define AUDIOPINRX 12   // Entree pour DFP audio uniquement
#define AUDIOPINTX 4    // Sortie principale pour AUdio
// LED PIN ou Relais Lum
#define LEDPIN 5    // Sortie dédié au notification lumineuse ( audio_out )
//Boutons
#define PIN_BTN1 2
#define PIN_BTN2 0
// *********** FIN pIN

Lors du premier démarrage , après flashage du firmware , si le WIFI n’a jamais été programmé, le module ESP va lancer WIFI Manager . Se connecter au WIFI du module , afin de configurer votre WIFI.

Une fois le WIfi configuré ,vous pouvez passer à l’étape suivante.

Upload du firmware et du dossier data ( pour l’interface WEB )

Ne pas oublier d’uploader aussi le dossier data dans la mémoire SPIFFS.

Le premier démarrage

La configuration par défaut est programmé pour initialiser 4 bloc de matrices ( quelque soit le nombre que vous avez installé ). Ce qui permet de répondre à toutes les configurations possibles de 4 à 80 matrices .

Par défaut / première installation

Seul les 4 premiéres matrices sont prises en compte.

Pour configurez le nouvel affichage , il suffit de lancer la page WEB du module , par défaut au premier lancement , la page de SETUP s’affichera.

Nom pour le nouveau notifheure

Puis configuration des zones :

Pour exploiter au mieux ce type de configuration , si on désire un double affichage XL. On renseigne le nombre total de matrices : 16 , la largeur de la zone horloge ( 8 ) et on active le mode XL ( qui va crée automatiquement une deuxième Zone de la même taille que l’horloge ) afin de doubler l’affichage. On obtient ainsi l’affichage suivant.

Affichage XL sur l’ensemble des Matrices

Comment sont calculé les créations de Zones ?

Le nombre de matrices définit l’espace total qui sera utilisé pour la création ( ici 16 matrices ) . La taille de l’horloge , définit la zone 0 qui sera dédié à l’affichage de l’horloge.

A ce stade , il reste 8 matrices de disponible ( 16-8 ) , qui peuvent servir soit a l’affichage de la zone XL soit a des zones supplémentaires. Dans la configuration par défaut , si j’active le mode XL , il ne me reste plus la possibilité de créer des zones supplémentaires . La zone XL prendra la même valeur que la taille de l’horloge.

Si je ne coche pas le mode XL , j’ai donc la possibilité de créer plusieurs zones supplémentaires. ( Volontairement limité à 2 matrices au minimum ) . Par exemple si je sélectionne deux Zones , le logiciel va crée une Zone 1 de 4 matrices et une Zone 2 de 4 matrices. Dans le cas de 3 zones , il tentera d’équilibrer les zones au mieux ( Zone 1 = 3 , Zone 2 = 3 et Zone 3 =2 ) , personnalisation de la largeur dans une prochaine version.

Ma première ligne sera donc dédié à la zone 0 ( 8 premières matrices ) , et la deuxième ligne sera dédié aux deux zones de 4 matrices ( Zone 1 et Zone 2 ).

Si je souhaites que la zone 2 soit de 8 matrices et la zone 0 et 1 de 4 , il faudra passer par la configuration perso des zones et affecter la zone 0 a la zone 2 , et les zones 1 et 2 aux deux numéros disponible …. Je sais moi même , je me perds dans ces explications , quand je me relis …

Le mieux c’est de tester , pour bien comprendre …. pas de soucis , si vous avez fait n’importe quoi , il est toujours possible de réinitialiser la config des matrices par la commande :

http://Ip_notifheure/Config?matrixreset=true

Quelques exemples :

Interface utilisateur

On retrouve une interface utilisateur , similaire à la version précédente , avec quelques options supplémentaires.
Notification / reveil / minuteur

Bon test ….

40 commentaires sur “Notifheure XL : Tutoriel les premiers pas de la version beta”

Les commentaires sont fermés.