Station météo connectée avec une Wipy

Station météo connectée avec une Wipy

Station météo connectée avec une Wipy

Mise en place d'une station météo connecté autonome avec une carte Wipy écrite en Micro-python.

Il faut

100% Complete

Objectifs

A la fin de ce projet vous saurez :

  • Mettre en place votre environnement de développement micro-python avec le logiciel Atom.
  • Mettre en route une station météo simple.
  • Envoyer les données de la station vers le site pybytes, ou votre propre base de données.
  • Accéder à votre Wipy à partir de votre ordinateur.
  • Mettre la Wipy à l'heure.
  • Mettre en place un watchdog.
  • Sauver de l'énergie en endormant votre Wipy

La mise en place et le développement de la carte Wipy est simple, voici comment procéder.

Installation de l'environnement de développement Atom

Installation de l'environnement de développement Atom

100% Complete
Le logiciel libre Atom permet d'installer l'environnement de développement pour la carte Wipy. Pour cela il suffi d'installer l'extension développée par Pycom : Pymakr

Download

Télécharger et installer l'éditeur de texte Atom à partir de leur site officiel https://atom.io/

Attention, la version 1.4 de Atom fait planter Pymakr (voir https://github.com/pycom/pymakr-atom/issues/131 ) !!! Il faut installer la version 1.38 que l'on peut trouver ici : https://github.com/atom/atom/releases/tag/v1.38.2

Installation du package Pymakr

En fait il s'agit d'un package dont le dépot GIT officiel se trouve sur https://atom.io/packages/pymakr

Il existe une façon très simple de l'installer :

Dans le logiciel Atom : faire File > Settings > Install. Rechercher "Pymakr" et cliquer sur "Install"

Au bout  d'un moment le package se télécharge et s'installe automatiquement.

Installation du package Git-plus

Ce package permet d'avoir une interface graphiquepour toutes les instructions commune de git ( commit, pull, push, stage, tec...)

Dans le logiciel Atom : faire File > Settings > Install. Rechercher "Git-plus" et cliquer sur "Install"

Au bout  d'un moment le package se télécharge et s'installe automatiquement.

Connexion de la Wipy dans Atom

Une fois Atom lancé, il est nécessaire de se connecter au Wipy en cliquant (dans le bas de la fenêtre Atom) sur le bouton "More > Get serial port"-> Le port série sur lequel est connecté la Wipy doit s'afficher. Dans mon cas j'ai :

COM45 (Pycom Ltd) (copied to clipboard)

Ouvrir ensuite les settings du package Pymakr. Dans le bas de la fenêtre Atom : Settings > Global settings et dans la section Devis adress, mettre le numéro de port COM trouvé précédemment (à place de "Default : 192.168.0.4.1")

Dans mon cas : COM45

Dans le bas de la fenêtre Atom, cliquez alors sur Connect. Vous devriez voir un prompt (3 chevrons comme ceci : >>>) qui s'affiche dans la console REPL (Read Evaluate Print Line) du logiciel Atom.

Vous êtes connecté à la Wipy ? Alors vous pouvez passer à la suite.

Problème rencontré sous windows 10

Le module WiPy n'est pas détecté par Atom parmi les ports série

Si en lançant Atom, le Wipy branché n'est pas détecté, il faut sans doute installer le driver Pysense pour windows.

Ce drivers (**pycom.inf**)  se trouve sur le dépôt GIT de pycom, ici :
 https://github.com/pycom/pycom-documentation/blob/master/content/pytrackpysense/installation/pycom.inf

Tuto disponible en ligne ici : https://docs.pycom.io/gettingstarted/installation/drivers.html

Récupération des librairies officielles pour le Pysense

Récupération des librairies officielles pour le Pysense

100% Complete
Voici comment récupérer dans Atom les librairies pour le Pysense à partir du dépôt Git officiel.

Le Pysense est un module additionnel à la carte Wipy. Il permet d'ajouter des capteurs. Il existe une API pour les fonctions spécifiques de lecture des capteurs de température, humidité et autre accelérometre.

Pour en savoir plus sur le Pysense : https://docs.pycom.io/datasheets/boards/pysense.html

Installer git-clone dans Atom

Si ce n'est pas déjà fait, installez le package git-clone dans Atom en faisant :

  1. Packages > Install et chercher git-clone
  2. Cliquez sur install

Récupération des librairies pour le Pysense

Les librairies officielles sont disponibles sur le dépôt : https://github.com/pycom/pycom-libraries. Nous allons donc l'intégrer dans Atom.

Dans Atom, pressez Ctrl + Shft + P pour afficher le panneau de commande, puis taper : git clone et coller ensuite l'URL : https://github.com/pycom/pycom-libraries

Au bout d'un moment, les répertoires et fichiers du dépôt vont apparaître dans Atom.

Les librairies pycom s'affichent dans la fenêtre projet de Atom ? Alors vous pouvez passer à la suite.

Construction d'une boite

Construction d'une boite

100% Complete
Pour rendre notre module totalement autonome il est nécessaire de l'installer en extérieur avec sa batterie. Voici comment faire une boite sur mesure.

Il faut

  • PMMA 3mm transparent
  • 8 vis M2 de 1 mm (longuere max)
  • 8 écrous M2
  • 2 cerflexes (pour tenir la batterie dans le fond de la boite)

La station à besoin d'être transparente, car elle mesure la quantité de lumière.

Elle a également besoin, d'être aérée pour pouvoir mesurer le taux d'humidité ambiant.

Pour répondre à ces critères, nous allons privilégier le PMMA transparent découpé à la découpeuse laser.

Astuce

Pour viser facilement la carte Pysense sur son support, j'ai utilisé du scotch. Il suffi de faire passer les vis par derrière, de les skotcher, de mettre les entretoises puis la pysense puis les écrous. Une fois le tout serré, le scotch n'est plus nécessaire.

Astuce pour fixer la pysense

Montage de la boite

Le montage en lui même n'est pas très compliqué, il faut juste veiller à mettre les vis avec leur écrous dans les trous prévu sur chacune des faces verticales. En positionnant alors les faces horizontale, les écrous vont rentrer dans les fentes prévus.

20190508_212023

Votre Wipy est bien maintenu dans sa boite ? Alors vous pouvez passer à la suite.

Download

Téléchargements

[svg+xml icon file]

Ces plans sont au format SVG ouvrable avec inkscape

(Version 20190510)

StationMeteo.svg
(38.57 kB)
Création d'un projet dans Atom

Création d'un projet dans Atom

100% Complete
Voici quelques informations générale à savoir au sujet de MicroPython et la manière de faire un projet dans Atom

Au sujet du MicroPython

Le MicroPython utilise la syntaxe du Python 3.5. Généralement le code écrit en Python 3.5 fonctionne sans trop de problèmes pour les modules utilisant du MicroPython. Ceci dit le MicroPython utilise des librairies spécifiques pour l'accès à des capteurs spécifiques. Pour la Wipy, il existe elles sont disponible ici : https://docs.micropython.org/en/latest/library/index.html#libraries-specific-to-the-wipy

Lors du boot d'un hardware Wipy, 2 fichiers sont exécutés automatiquement il s'agit de boot.py et main.py.

Ces fichiers sont placés dans le répertoire /flash . Ces 2 fichiers peuvent être édités librement en utilisant une connexion FTP ou en utilisant ATOM et le package pymakr.

Création d'un projet dans Atom

  1. Créer un répertoire vide sur votre ordinateur. Dans notre cas, C:\StationMeteo
  2. Ouvrir Atom et faire :
    1. File > Open Folder et choisir le répertoire créer précédemment (C:\StationMeteo)
  3. Maintenant que le projet est créé, on peut lui ajouter des fichiers :

flash

|-lib

| |- some_library.py

|-boot.py

|-main.py

Nous allons faire clignoter la LED de différentes couleurs. Dans le fichier main.py copier le code suivant :

import pycom

import time
pycom.heartbeat(False) # we disabled the standard "herat-beat" 
while True:   

    pycom.rgbled(0xFF0000)  # Red   

    time.sleep(1)   

    pycom.rgbled(0x00FF00)  # Green   

    time.sleep(1)   

    pycom.rgbled(0x0000FF)  # Blue   

    time.sleep(1)

Pour executer le code, cliquer sur "Run" en bas de la fenêtre de Atom ou presser Ctrl + Alt + R

La led du module Wipy doit maintenant être en train de passer alternativement en rouge, vert et bleu et le prompt du REPL n'est plus accessible.

Pöur arréter l'execution du script cliquez dans la fenêtre REPL et presser Ctrl + C

Par contre si on reboot le Wipy (en appuyant sur son bouton de reset), le programme ne s'execute plus ! C'est normal car il n'est pas dans le répertoire /flash.

Upload du projet dans le Wipy

Au lieux d'appuyer sur le bouton "Run" comme précédemment, il faut appuyer sur "Upload" (ou Ctrl + Alt + S). Le fichier est maintenant écrit dans la Wipy. Si vous la rebootez elle devrait se mettre à clignoter.

Exercice pratique

Faites clignoter la LED de votre Wipy alternativement de mauve à blanc.

Indice : regardez l'encodage des couleurs RVB.

Votre Wipy clignote mauve puis blanc ? Vous pouvez passer à la suite.

A savoir

Pour supprimer tout les fichiers dans le Wipy

Dans le REPL (Read Evaluate Print Loop, c'est à dire le prompt du module Pymakr), taper :

import os

os.mkfs('/flash')

Soft Reset

Dans le cas d'un mauvais programme (Upload avant d'avoir testé en Run) il se peut que le REPL ne soit plus accessible. Dans ce cas il faut faire un soft Reset.

Voir la procédure décrite sur la page https://docs.pycom.io/gettingstarted/programming/safeboot.html

Envoyer des données vers le site pybytes avec une Wipy

Envoyer des données vers le site pybytes avec une Wipy

100% Complete
Voici comment faire pour envoyer les données de la carte Pysense d'une Wipy vers le site pybytes.

Objectifs

Nous allons voir comment faire pour :

  • ajouter une Wipy sur votre compte pybytes
  • envoyer des données vers votre compte pybytes

Pybytes

Le site pybytes permet de faire un compte gratuitement pour avoir très rapidement la possibilité d'afficher des données envoyées par la carte Wipy. C'est parfait pour vérifier le bon fonctionnement des capteurs et de la communication entre la Wipy et un site internet.

Le site permet également de mettre à jour les fichiers transférés dans la Wipy.

Guide de démarrage pour ajouter son objet connecté dans pybytes : https://docs.pycom.io/pybytes/introduction.html

Vous avez un compte Pybytes ? Alors vous pouvez passer à la suite.

Ajout de la Wipy dans pybytes

Pour ajouter une nouvelle Wipy dans pybytes, il faut aller dans le menu Devices > add a device to Pybytes. Choisir ensuite la Wipy

pybytes - add device

Ensuite viens la configuration du réseau wifi que va utiliser la carte Wipy.

pybytes - Wifi config

Il faut maintenant mettre à jour la configuration dans la carte Wipy en upgradant le firmware. Il faut bien évidement que la carte Wipy soit branchée sur votre ordinateur. Un logiciel spéciale est fourni pour le faire de façon automatique.

Téléchargez la version pour votre ordinateur et suivez le wizard.

pybytes - firmware upgrade

Et voila, votre Wipy est maintenant capable d'envoyer des données sur votre compte pybytes.

Documentation officielle : https://docs.pycom.io/pybytes/connect/index.html

Spécification du programme

Nous allons envoyer les mesures météo (température, humidité, pression atmosphérique, etc...) toute les 10 minutes vers notre base de données.

Pour cela il faut :

  1. Initialiser les capteurs,
  2. Lire les données des capteurs.
  3. Créer un tread dans lequel on fait :
    1. Allumage de la led en rouge
    2. Envoie des données vers le site de pypytes
    3. Allumage de la led en vert
    4. On fait une pause de 10 minutes.

Envoyer les données

L'envoie de données sur le site de pybytes est très simple, il suffi de faire :

pybytes.send_signal(1, 123456)

Cela signifie qu'on va envoyer la valeur 123456 dans le signal 1 de pybytes. Si c'est la première fois que pybytes reçois ce signal, il apparaît dans Devices > My devices > Data > "undefined signals". Il suffi alors de cliquer dessus pour lui donner un nom.

Screenshot - 09_05_2019 , 01_09_48

On voit ici qu'il y a 7 signaux qui sont attendu par pybytes en provenance de la Wipy.

Chacun de ces signaux a été nommé.

Code

Le code est disponible sur le dépôt GIT : https://github.com/AlexDesign-Fr/Station-meteo-with-Wipy

Attention, le code contient peut-être des erreurs, analysez le avant de l'exécuter.

Vous arrivez à recevoir des données sur voter compte Pybytes ? Alors vous pouvez passer à la suite.

Mise à l'heure automatique de la Wipy

Mise à l'heure automatique de la Wipy

100% Complete
Voici comment mettre à jour l'heure et la date de la Wipy en utilisant le serveur de temps pool.ntp.org

L'astuce consiste à mettre à jour l'horloge au boot de la Wipy.

Comme je ne souhaites pas que la Wipy reste bloquée pendant sont boot en attendant une réponse du serveur, j'utilise un tread

Pour cela modifier le fichier boot.py en lui apportant les lignes suivantes :

from machine import RTC

import _thread

# Update date in a tread

rtc = RTC()

_thread.start_new_thread(rtc.ntp_sync("pool.ntp.org"), ())

Pour vérifier que votre Wipy s'est mise à l'heure, dans la console REPL tappez :

from datetime import datetime

now = datetime.utcnow()

print( now)

Votre Wipy est à l'heure ? Alors vous pouvez passer à la suite.

Envoyer des données sur son propre server

Envoyer des données sur son propre server

100% Complete
Comme tout objet connecté il est possible d'envoyer ses données vers sont propre serveur sans passer par un site tierce.

Objectifs

En suivant ce projet vous saurez :

  • Flasher votre Wipy,
  • Connecter votre Wipy sur votre réseau Wifi.
  • Envoyer les données collectées par une Pysense vers votre serveur Domoticz

Attention, ce projet ne vous apprendra pas à installer un serveur Domoticz.

Flasher votre Wipy

Si jamais votre Wipy a été flashée pour utiliser les services pybytes, il est nécessaire de les enlever (car il ne vont plus servir) et de mettre un firmware stable.Si vous n'avez pas flashé votre Wipy vous pouvez sans doute passer ce chapitre.Pour flasher un firmware stable, il faut tout d'abord récupérer le logciel prévu par Pycom.

Download du logiciel Pycom upgrade

Aller sur le site pybytes pour récupérer l'utilitaire de flashage.
Une fois identifié sur votre compte allez dans Devices > Add device to Pybytes et choisir la Wipy

Screenshot - 12_05_2019 , 22_39_48

Cocher le réseau Wifi et faire Next

Screenshot - 12_05_2019 , 22_42_25

Saisissez ce que vous voulez, de tout façon on n'en a pas besoin, on veut juste récupérer le logiciel de mise à jour de firmware.

Screenshot - 12_05_2019 , 22_44_12

Nous y voila, prenez la version pour votre système (Windows dans mon cas) :

Screenshot - 12_05_2019 , 22_46_30

Flashage du firmware stable avec "Pycom upgrade"

Screenshot - 12_05_2019 , 22_49_07
Screenshot - 12_05_2019 , 23_01_36
Screenshot - 12_05_2019 , 23_02_45

Et voila !

Connecter la Wipy sur son réseau Wifi

Modifier le fichier boot.py pour qu'il se connecte à votre réseau Wifi en changeant le SSID, le passwd et les identifiants de conection FTP

import pycom

import os

import machine

import network

import time

pycom.heartbeat(True)

# initiate network -------------------------------------------------------------

# Duplicate output on UART

uart = machine.UART(0, 115200)

os.dupterm(uart)

# Disable telnet and FTP server before connecting to the network

server = network.Server()

server.deinit()

# Connect to WLAN

wlan = network.WLAN()

wlan = network.WLAN(mode=network.WLAN.STA)

nets = wlan.scan()

for net in nets:

  if net.ssid == '<SSID>':

    wlan.connect(net.ssid, auth=(net.sec, '<passwd>'),      timeout=5000)

    while not wlan.isconnected():

      machine.idle() # save power while waiting

# Enable telnet and FTP server with new settings

# You will have to update your Atom config with this login an passwd

server.init(login=('micro', 'python'), timeout=600)

# Wait some seconds before continuing

time.sleep(5)

Envoyer ses données vers un serveur Domoticz

L'envoie de donénes vers un serveur Domoticz implique l'envoie d'une requète en passant des paramètres en JSON.

On peut envoyer ses données au format JSON vers un serveur en utilisant urequests de la façon suivante :

from pysense import Pysense

from LTR329ALS01 import LTR329ALS01

urlDomoticz = "http://<IPServer>:<PortServer>/json.htm"

py = Pysense()

lt = LTR329ALS01(py)

def sendLight():

    light = lt.light() # read light data. wil give a tuple with (redLight,blueLight)

    lightResult = (int(light[0]) + int(light[1])) / 2

    requestJSON = { "type":"command",

                "param":"udevice",

                "idx":276,

                "svalue":lightResult}

    Requete = urequests.get(urlDomoticz, requestJSON)

    print( Requete.text ) # print the request result returned by the Domoticz server

# ============================================

# Send data in a thread. That's supposed to give user a chance to enter command in the command line (and not to stuck CPU)

_thread.start_new_thread(sendLight,())

Vos données sont correctement reçus dans votre serveur Domoticz ? Alors vous avez terminé ce projet.

Watchdog timer

Watchdog timer

100% Complete
Un watchdog permet de mettre en place une surveillance du système pour vérifier qu'il n'est pas planté ou bloqué.

Un Watchdog est un processus qui permet de rebooter une pycom lorsqu'elle ne répond plus au bout d'un certain timer.

On initialise un watchdog en lui donnant un temps à décompter. Si le temps est écoulé il reboot la Wipy. Il est possible de remettre à 0 le décompte, on dit alors qu'on "nourri" le watchdog.

Attention, une fois le watchdog démarré, il n'est pas possible de le reconfigurer ou d'en changer la valeur.

Exemple de mise en place :

from machine import WDT

watchdog = WDT(timeout=2 * 1000)  # enable it with a timeout of 2 seconds

# fait une tâche courte (1)

watchdog.feed() # Réinitialisation du watchdog

# fait une tâche courte mais qui peut bloquer le programme (2)

watchdog.feed()

# fait une tâche très longue > 2 secondes (3)

watchdog.feed()

print("Au revoir")

Dans cet exemple on met en place un watchdog qui doit être nourri toutes les 2 secondes. Si ce n'est pas le cas, il reboot la Wipy.

  • Dans le cas (1) : le watchdog est "nourri" avant les 2 secondes fatidiques (son timer est remis à 0) -> le programme continue
  • Dans le cas (2) :imaginons le cas d'une mesure pouvant parfois se planter ou prendre plus de temps que prévue. si le temps d’exécution que prend cette tâche est supérieur à 2 secondes, le watchdog fait rebooter automatiquement la Wipy.
  • Dans le cas (3), le temps d’exécution de cette partie est toujours supérieur à 2 secondes le watchdog  ne serra donc jamais nourri et rebootera toujours la Wipy -> on ne verra donc jamais "Au revoir" à l'écran.

Attention : la mise en place d'un watchdog peut entraîner des reboots de Wipy de façon intempestif, il peut alors être très dur de se connecter sur la Wipy.

Gestion d'énergie (Le mode deep sleep)

Gestion d'énergie (Le mode deep sleep)

100% Complete
Le mode deep sleep (ou mode sauvegarde d'énergie) permet de faire des économie conséquente de batterie. Dans ce mode le système ne consomme qu'environ ~350uA.

Objectifs

Nous allons voir comment endormir la Wipy pour sauvegarder son énergie.

Lorsque le deep sleep est mis en place dans la Wipy, cette dernière va s'endormir pendant un certain temps. Le deep sleep peut être interrompu soit par un timing, soit par un événements extérieur (appuie sur un bouton, mouvement détecté par le capteur de mouvement, ...) à condition de le programmer !

Lorsque le Deep sleep est interrompu, la Wipy reboot. Elle est alors capable d'indiquer quel événement l'a réveillée.

Pour mettre la WIpy en mode Deep sleep pendant 60 secondes il faut faire :

# La Wipy va s'endormir pendant 60 secondes, il sera impossible de la réveiller avant.

from pysense import Pysense

py = Pysense()

py.setup_sleep(60) # Sleep for 60 seconds

py.go_to_sleep()

Copyright © 2015 Alex-design.fr All rights reserved.