Pourquoi est-ce que je veux faire ça?
Parce que c'est drôle. Contrairement à beaucoup de nos tutoriels où nous incluons un petit texte de présentation décrivant exactement les avantages que vous tirerez du projet, le texte de présentation est assez court dans ce cas car il est simplement amusant.
Le Raspberry Pi est un appareil idéal pour jouer, expérimenter avec l'électronique et apprendre la programmation. Personne Besoins un indicateur de pluie ambiante dans leur cuisine, par exemple, mais en construire un est un exercice amusant et un bon rappel pour emmener votre parapluie avec vous les jours de forte tempête.
De quoi ai-je besoin?
Pour suivre le tutoriel, vous aurez besoin de quelques choses. Tout d’abord, nous supposons que vous avez déjà suivi notre précédent tutoriel: Le Guide d’initiation HTG à Raspberry Pi (et que vous avez ainsi les bases nécessaires à l’installation de Rasbian sur notre Raspberry Pi).
Si vous envisagez de réaliser ce projet avec un budget limité, nous pouvons vous dire que le nouveau modèle Raspberry Pi est un excès de productivité et nous vous encourageons à faire fondre le vieux Raspberry Pi. dans le placard ou ramasser un bon marché utilisé sur eBay ou similaire. En termes de budget, un Raspberry Pi 1 modèle A ou un modèle B accroché à eBay pour 10-15 $ est la solution idéale pour ce projet par rapport à l’achat d’une toute nouvelle génération Pi à 35 $.
En plus de disposer d’une unité Pi fonctionnelle sur laquelle Raspbian est installé, vous aurez besoin des éléments suivants:
- 1 module LedBorg (~ 5,00 $ avec 4 $ d'expédition du Royaume-Uni aux États-Unis, fonctionne avec tous les modèles Raspberry Pi).
- 1 étui Raspberry Pi transparent compatible avec votre modèle Pi, comme cet étui Raspberry Pi 1 modèle B.
Remarque: Le boîtier Pi transparent / dépoli est entièrement facultatif, mais si vous utilisez actuellement un boîtier opaque, votre indicateur DEL sera caché à l’intérieur. Vous devrez soit faire un trou dans votre boîtier pour laisser passer la lumière, soit utiliser un câble d'extension GPIO avec un kit de protection, comme celui d'Adafruit Industries, pour relier le LedBorg à votre Raspberry Pi. Bien que l’utilisation du câble épanoui ajoute environ 8 USD aux dépenses du projet, il offre davantage de potentiel pour la personnalisation du produit final, en ce sens que vous pouvez plus facilement placer le voyant à l’intérieur ou sous quelque chose que vous souhaitez éclairer.
Installer le LedBorg
L’installation du module est très simple car elle est conçue pour s’insérer directement sur les broches GPIO du Pi. Tout d’abord, éteignez votre Pi et ouvrez le boîtier.
La partie la plus importante du processus d’installation consiste à orienter le module de manière à ce que l’icône LedBorg soit le plus proche du module RCA sur la carte Raspberry Pi (et que le bord de la LedBorg affleure avec les bords de la carte Pi avec le partie de LedBorg suspendue au-dessus du tableau Pi et non en dehors du bord). Voir la photo ci-dessus.
Alors que la carte Pi est ouverte, le moment est maintenant bien choisi pour couvrir les voyants DEL intégrés (à côté des ports USB), en particulier si vous utilisez un boîtier transparent. Vous ne voulez pas que la lecture de votre indicateur LedBorg soit source de confusion, car les voyants d’alimentation et du réseau sont très lumineux.
Nous avons recouvert les nôtres d'une couche de ruban électrique blanc. Cela les a suffisamment atténués pour que nous puissions toujours les référencer, mais ils étaient tellement plus faibles que le LedBorg que cela ne le distrayait plus.
Une fois que vous avez installé LedBorg et couvert, en option, les indicateurs LED du Pi avec du ruban isolant, il est temps de refermer le boîtier. Démarrez votre Pi avant de passer à la phase suivante du didacticiel.
Installation du logiciel LedBorg
Avant de commencer, vous devez vous assurer de choisir le bon package pour votre version de Rasbian et le numéro de révision de votre carte Raspberry Pi.
Si votre carte Raspberry Pi ne comporte pas de trous de montage, il s’agit de la révision 1. Si votre carte Raspberry Pi possède des trous de montage (situés près des ports USB et entre les ports d’alimentation et HDMI), il s’agit de la révision 2. Vous devez également connaître la version du noyau. de votre installation Rasbian. Ouvrez le terminal et entrez la commande suivante à vérifier:
uname -r
Une fois que vous avez le numéro de révision et le numéro de noyau, vous pouvez visiter la section Packages ici pour récupérer le lien de votre paquet. Dans notre cas, nous utilisons une carte de révision 1 avec le noyau 3.6.11, nous avons donc saisi le fichier raspbian-2013-02-09-rev1.zip.
Pour installer tous les goodies, nous devons ouvrir le terminal sur le Pi. puis entrez les commandes suivantes pour installer le package LedBorg.
Remarque: Vous devez remplacer l'URL dans la troisième commande par l'URL du package pour votre combinaison conseil / noyau.
mkdir ~/ledborg-setup cd ~/ledborg-setup wget -O setup.zip https://www.piborg.org/downloads/ledborg/raspbian-2013-02-09-rev1.zip unzip setup.zip chmod +x install.sh./install.sh
À ce stade, vous avez maintenant le wrapper d'interface graphique pour les pilotes LedBorg et les pilotes eux-mêmes installés. Sur votre bureau Raspbian, vous verrez une icône pour le wrapper de l'interface graphique:
En mode démo, vous pouvez faire défiler toutes les couleurs à différentes vitesses, vérifier les sorties haut / bas et sinon, faire passer le module DEL à l’essai.
C’est dans la section Mode démo que vous pouvez également faire de votre LedBorg le premier de nombreux indicateurs. En sélectionnant CPU dans la section Couleurs, le voyant passe du vert au jaune et passe au rouge pour indiquer que le processeur ARM du Raspberry Pi est chargé. Nous vous suggérons de régler la vitesse sur Lente pendant que vous y êtes. Fast met à jour la DEL trop rapidement et rend l’indicateur du processeur distrayant au lieu d’être utile.
En plus d'utiliser l'interface graphique pour sélectionner les couleurs, vous pouvez sélectionner les couleurs du terminal à l'aide de valeurs RVB. Ouvrez le terminal et entrez la commande suivante pour éteindre le voyant:
echo '000' > /dev/ledborg
La façon dont LedBorg traite les valeurs RVB est que 0 signifie que le canal est désactivé, 1 que le canal est à moitié de la puissance et 2 que le canal est à pleine puissance. Ainsi, par exemple, 001 définit le canal rouge à 0%, le canal vert à 0% et le canal bleu à 50% de sa puissance.
Définissez la valeur sur 002 et la sortie de la DEL reste bleue mais devient plus lumineuse car le canal bleu est maintenant à 100% de la sortie. Changez la valeur en 202 et le rouge et le bleu à pleine puissance se combinent pour créer une couleur magenta.
Maintenant que nous savons manipuler la LED manuellement, voyons comment utiliser des scripts pour transformer notre LED d’une simple lumière en un indicateur réel.
Configuration de votre LedBorg comme indicateur de pluie
Premièrement, nous devons obtenir une clé d'accès à l'API pour Weather Underground. Pour une utilisation personnelle et de petits projets de développement, l'API est gratuite. Visitez la page d'inscription de l'API météo ici et inscrivez-vous pour obtenir une clé d'API.
Une fois que vous avez votre clé API, visitez Weather Underground et recherchez la ville que vous souhaitez surveiller. Dans notre cas, nous allons surveiller San Francisco, Californie. L’URL de la page de prévision de San Fransisco est:
https://www.wunderground.com/US/CA/San_Francisco.html
La partie importante pour nos besoins est la dernière partie de l’URL: /CA/San_Francisco.html. Nous allons l'utiliser pour modifier l'URL de prévision de l'outil API. L'URL de base est:
https://api.wunderground.com/api/YOUR API KEY/forecast/q/STATE/CITY.json
Vous pouvez générer les prévisions pour n'importe quelle ville des États-Unis en entrant votre clé API, le code d'état à deux lettres et le nom de la ville à partir de l'URL extraite de vos résultats de recherche Weather Underground.
Une fois que vous avez inséré l'URL de l'API avec votre clé et votre état / ville, vous pouvez modifier le script Python suivant en créant un nouveau document texte sur votre Pi à l'aide de Leafpad et en y collant le code suivant:
from urllib2 import urlopen import json
req = urlopen('https://api.wunderground.com/api/YOUR API KEY/forecast/q/STATE/CITY.json') parsed_json = json.load(req) pop = int(parsed_json['forecast']['txt_forecast']['forecastday'][0]['pop'])
# Ce qui suit est une valeur de débogage. # Éditer le hachage et changer # l'entier à un 0-100 à tester # la réponse de la LED.
# pop = 0
print 'Current chance of precipitation is {}.'.format(pop)
# The default setting is to turn on the LED # for any chance of rain above 20%. You can adjust # the value in 'if pop > 20:' as you wish.
if pop > 20: LedBorg = open('/dev/ledborg', 'w') LedBorg.write('002') del LedBorg print ('Rain!') else: LedBorg = open('/dev/ledborg', 'w') LedBorg.write('000') del LedBorg print ('No rain!')
Enregistrez le fichier sous wunderground.py dans le répertoire / home / pi /. Ouvrez le terminal et tapez la commande suivante:
python wunderground.py
Si vous avez entré correctement votre clé API et vos codes d’état / de ville, une réponse ressemblant à ceci devrait être renvoyée:
La dernière étape consiste à configurer un travail cron pour qu'il exécute automatiquement le script que nous venons d'enregistrer à un intervalle régulier afin de maintenir le voyant à jour. Cette tâche étant nécessaire à la fois pour ce script et pour l'indicateur de courrier électronique qui suit, nous allons couvrir la configuration d'un travail cron après vous avoir montré comment configurer l'autre script.
Configuration de votre LedBorg en tant qu'indicateur Gmail
Nous devons étendre un peu les fonctionnalités de notre installation Python en installant FeedParser, un outil de lecture de flux Python RSS / Atom. Ouvrez le terminal et entrez la commande suivante:
sudo easy_install feedparser
Une fois l'installation terminée, nous pouvons commencer à créer notre script de vérification Gmail. Encore une fois, en utilisant Leafpad, collez le texte suivant dans l’éditeur. Modifiez le nom d'utilisateur et le mot de passe afin qu'ils correspondent au nom d'utilisateur et au mot de passe du compte Gmail que vous souhaitez vérifier.
import feedparser
# Enter your Gmail username # and password. Don't include # the @gmail.com portion of # your username.
username = 'username' password = 'password'
mail = int(feedparser.parse('https://' + username + ':' + password +'@mail.google.com/gmail/feed/atom')['feed']['fullcount'])
# Ce qui suit est une valeur de débogage. # Éditer le hachage et changer # le nombre entier à 0 ou 1 à tester # la réponse de la LED.
# mail = 0
if mail > 0: LedBorg = open('/dev/ledborg', 'w') LedBorg.write('020') del LedBorg print ('Mail!') else: LedBorg = open('/dev/ledborg', 'w') LedBorg.write('000') del LedBorg print ('No mail!')
Enregistrez le script sous le nom gmailcheck.py. Ouvrez le terminal et tapez la commande suivante:
python gmailcheck.py
Si vous avez un courrier électronique dans votre boîte de réception Gmail, le voyant devient vert et vous obtiendrez une réponse du type:
Passez à la section suivante du didacticiel pour définir l’exécution de votre script Gmail selon un calendrier.
Configuration d'un travail Cron pour exécuter votre script
La première chose que nous souhaitons faire est d’éteindre la LED si elle est déjà allumée à partir de nos expériences précédentes. Au type de terminal:
echo “000” > /dev/ledborg
Tant que vous êtes toujours en ligne de commande, vous pouvez ouvrir l’éditeur cron. Si vous n'avez jamais configuré de tâche cron auparavant, nous vous recommandons fortement de consulter notre guide d'utilisation ici. Cela dit, nous vous expliquerons comment établir un horaire de base ici.
Au type de terminal:
sudo crontab –e
Cela ouvrira la table cron Raspbian dans l'éditeur de texte Nano. Utilisez les touches fléchées pour faire défiler l'écran jusqu'en bas. C’est là que nous allons configurer le travail récurrent cron pour nos scripts Python.
Si vous voulez configurer le script Rain, entrez la ligne suivante dans la table cron:
*/5 * * * * python /home/pi/wunderground.py
Appuyez sur CTRL + X pour quitter. sélectionnez oui pour enregistrer et écraser la table cron existante. La valeur que nous avons entrée dans la table cron “* / 5 * * * *” définit le script pour qu'il s'exécute toutes les 5 minutes.
Toutes les 5 minutes sont un temps limité pour un script qui vérifie la pluie prévue - vous pouvez même dire qu'il est un peu trop agressif - mais si vous essayez de gérer votre courrier électronique, la durée de notification est trop longue.. Si vous configurez la planification du script de notification Gmail, entrez la ligne suivante dans la table des tâches:
*/1 * * * * python /home/pi/wunderground.py
Cette entrée exécute le script gmailcheck.py toutes les minutes pour une notification de mise à jour beaucoup plus rapide.
C'est tout ce qu'on peut en dire! Vous pouvez expérimenter avec vos propres scripts Python en supprimant les instructions if / else dans les nôtres et en les essayant avec de nouvelles variables. Si vous pouvez trouver une source d’entrée pour les données, vous pouvez la transformer en variable dans votre script Python: moyennes boursières, compteurs de pollen, Twitter, si une API lui est associée, vous pouvez la transformer en un indicateur de température ambiante.
Enfin, je tiens à remercier toutes les excellentes ressources avec lesquelles j'ai travaillé pour ce projet. Cela fait un peu plus de 10 ans que je rédige activement des programmes et il a fallu quelques coups pour enlever la poussière et la rouille. Les contributeurs de / r / LearnPython m'ont aidée dans la sortie de l'API pour Weather Underground, en étudiant comment Michael Tech de Mitch Tech traitait le flux Atom de Gmail, ce qui facilitait son analyse pour LedBorg, et en étudiant les modules d'apprentissage Python à Code Academy: un excellent moyen de comprendre la syntaxe et la structure de base d'un langage que je n'avais jamais utilisé auparavant.