Enregistrement de base de la température sur Internet avec Raspberry Pi

Enregistrement de base de la température sur Internet avec Raspberry Pi

Il existe de nombreux exemples de systèmes d’enregistrement de température, mais je voulais créer le mien et le garder simple et agréable. L’autre chose que je voulais essayer était d’enregistrer les données sur Internet à l’aide d’un service tiers. Je l’ai fait avant d’utiliser mes propres bases de données basées sur un site Web, mais c’est un peu plus compliqué.

Voici donc ma tentative d’un appareil “Internet des objets” à température de base qui, espérons-le, aidera les autres à démarrer ou constituera la base d’un projet.

Matériel

Enregistreur de température de baseL’appareil se compose de :

  • Raspberry Pi modèle A+
  • Cas de base
  • Module capteur BMP180
  • LED avec résistance de 330 ohms
  • Petit interrupteur
  • Câble de raccordement femelle-femelle à 4 voies
  • 2 en-têtes à 2 voies

Module pression température BMP180Capteur

J’ai choisi le capteur BMP180 car j’en avais déjà un disponible que j’ai utilisé pour mon article sur le capteur de pression barométrique numérique BMP180 I2C. Ce capteur est petit, bon marché et gère la température et la pression. Il communique avec le Pi via une interface I2C et nécessite donc un minimum de câblage.

DEL (en option)

Pour donner un retour visuel, j’ai ajouté une seule LED verte. L’anode (+ve) était connectée à la broche 11 (GPIO17) et la cathode (-ve) était connectée à la broche 9 via une résistance de 330 ohms. J’ai choisi ces deux broches car elles sont côte à côte et m’ont permis d’utiliser un en-tête à 2 broches et de brancher la LED directement sur l’en-tête GPIO du Pi.

Clé WiFi Edimax 7811un

Clé Wi-Fi

Comme je voulais utiliser un modèle A+, j’avais besoin d’un dongle WiFi pour permettre au Pi de communiquer avec Internet. j’en ai quelques Edimax EW-7811UN Clés USB, j’en ai donc utilisé une. Vous devrez configurer le WiFi pour qu’il puisse se connecter avec succès à votre réseau. Vous pouvez utiliser mon guide Configuration du WiFi sur le Raspberry Pi. J’ai également désactivé les modes d’économie d’énergie à l’aide de ce guide.

Changer

Le commutateur est là pour dire au script de quitter et/ou d’arrêter le Pi. Il était connecté à la broche 15 (GPIO22) et à la broche 17 (3V3) à l’aide d’un autre en-tête à 2 broches. Par défaut, le script active une résistance de rappel interne sur la broche 15 afin que GPIO22 soit BAS. Lorsque l’interrupteur est enfoncé, il est connecté à 3,3 V et tiré HAUT. Le script surveille le commutateur et se ferme s’il est enfoncé. En définissant le drapeau AUTO_SHUTDOWN sur 1, le Pi peut également s’arrêter si nécessaire.

Configuration des composants

Voici comment j’ai connecté le capteur de température, la LED et l’interrupteur.

Circuit matériel de l'enregistreur de température
Voici les détails de connexion :

Nom du signal Broche d’en-tête
Changer GPIO22 15
Changer 3V3 17
DEL (+) GPIO17 11
LED (-) Terre 9
BMP180 VCC 3V3 1
Terre BMP180 Terre 6
BMP180 SDA I2C SDA 3
BMP180 SCL I2C SCL 5

Thingspeak et l’Internet des objets

Pour le service tiers, j’ai examiné un certain nombre d’options. J’en ai écarté un certain nombre car ils :

  • N’a pas précisé quel était le coût (le cas échéant)
  • Échec de la définition de la différence entre les essais gratuits et les options payantes
  • Impossible d’expliquer exactement comment vous avez soumis les données
  • Seules les données conservées pendant quelques jours sur l’option gratuite

je me suis installé Thingspeak.com simplement parce qu’à l’intérieur un clic de leur page d’accueil Je savais exactement ce que je devais faire pour soumettre des données. La configuration du tableau de bord était simple et ne nécessitait de lire aucune aide supplémentaire. OK, la configuration des jauges nécessitait un peu plus de lecture, mais les graphiques étaient assez simples.

Enregistreur de température de baseMon premier script fonctionnait dans les cinq minutes après un peu de copier-coller. Il existe de nombreux autres services, mais pour ce projet, Thingspeak me convenait parfaitement. Je ne suis pas opposé à payer pour un service, mais je voulais que tout le monde puisse faire quelque chose de facile sans se soucier du coût ou avoir à utiliser un essai gratuit et limité dans le temps. Pour des systèmes plus élaborés avec plus de données, vous voudrez peut-être payer pour un service plus riche en fonctionnalités.

Pour utiliser mon exemple de script vous devrez créer un compte Thingspeak, créez un nouveau canal et obtenez la « Write API Key » à partir des paramètres de l’API. Voir la documentation officielle pour aider.

Script Python

Le script principal lit la température et la pression et les envoie à Thingspeak en utilisant « Field 1 » et « Field 2 ». Il s’appuie sur un fichier supplémentaire pour utiliser le capteur BMP180. Les deux scripts sont obligatoires et doivent être enregistrés au même endroit :

Vous pouvez télécharger ces deux fichiers directement sur un Pi compatible Internet, soit en cliquant avec le bouton droit sur les liens ci-dessus dans un navigateur Web, soit en les exécutant à l’invite de commande :

wget https://bitbucket.org/MattHawkinsUK/rpispy-misc/raw/master/python/bmp180.py
wget https://bitbucket.org/MattHawkinsUK/rpispy-misc/raw/master/python/templogger.py

Le script peut ensuite être exécuté en ligne de commande en utilisant :

sudo python templogger.py

Le script imprime des mises à jour de texte à l’écran. Lors du lancement via SSH sur WiFi, je voulais que le script continue de s’exécuter après ma déconnexion, j’ai donc utilisé cette commande à la place :

sudo python templogger.py > /dev/null &

Dans cette commande, les sorties d’état sont dirigées vers « null » (c’est-à-dire ignorées) et le & assure que le script s’exécute en arrière-plan.

Exécuter automatiquement au démarrage

Afin d’éviter d’avoir à démarrer le script manuellement, vous pouvez le configurer pour qu’il se lance au démarrage du Pi. Vous pouvez le faire en éditant le fichier rc.local :

sudo nano /etc/init.d/rc.local

puis en ajoutant la ligne suivante en bas du fichier :

sudo python /home/pi/templogger.py > /home/pi/templogger.log 2>&1

Vous pouvez enregistrer et quitter l’éditeur nano en utilisant [CTRL-X], [Y] ensuite [ENTER].

Au démarrage, la ligne exécute le script Python et dirige la sortie de texte vers un fichier journal. Il s’agit d’un fichier utile à lire en cas de recherche de pannes. Les valeurs du journal sont séparées par des virgules afin qu’elles puissent être chargées dans un tableur si vous souhaitez analyser les données.

Appuyer sur le commutateur à tout moment entraînera l’arrêt du script. Si AUTO_SHUTDOWN est défini sur 1, le Pi s’éteindra. Après 20 secondes, l’alimentation peut être coupée.

Configuration

Le script a des valeurs qui Tu auras besoin de ajuster. Le plus important est la clé API Thingspeak. Vous devez entrer votre propre clé pour mettre à jour votre chaîne. Vous pouvez soit éditer le script Python directement en utilisant :

nano templogger.py

ou en fournissant un ensemble de nouvelles valeurs dans un fichier de configuration sur la partition de démarrage. Si un fichier appelé “/boot/templogger.cfg” existe et que la première ligne est “Temp Logger”, les valeurs qui suivent sont utilisées à la place. Voici un exemple de fichier de configuration :

Temp Logger
0x77
1
17
22
10
1
ABCDEFG123456789
https://api.thingspeak.com/update

Vous pouvez créer un fichier de configuration en utilisant :

sudo nano /boot/templogger.cfg

Créez ensuite le contenu comme dans l’exemple ci-dessus.

Comme le fichier existe dans la partition /boot, vous pouvez modifier le fichier de configuration sur un PC avant de mettre l’appareil sous tension. Ceci est parfois utile si vous souhaitez modifier l’INTERVALLE entre les lectures.

Le script ne vérifie pas les erreurs dans votre fichier. Assurez-vous que toutes les valeurs sont spécifiées dans le bon ordre. Ils sont attendus dans le même ordre qu’ils sont répertoriés dans le script Python d’origine.

Résultats finaux

Une fois que l’appareil est opérationnel et que vous avez configuré votre Thingspeak Channel, vous pouvez produire des sorties comme celle-ci :

Graphiques de température et de pression

Les graphiques les mettent à jour en temps réel à mesure que de nouvelles données arrivent. La chaîne vous permet également de télécharger vos données aux formats CSV, XML et Json.

Avec un intervalle de 10 minutes qui vous donne 144 points de données toutes les 24 heures. Vous pouvez définir les graphiques pour afficher un nombre défini de points de données afin que vous puissiez ajuster cela pour vous donner une répartition appropriée des données.

Je n’ai utilisé que deux flux de données dans mon exemple (température et pression) mais Thingspeak en acceptera huit au total.

voici mon public Canal de l’enregistreur de température RPiSpy.