palmPi – (encore un autre) appareil portable Raspberry Pi

blank

J’ai récemment publié un tutoriel sur l’utilisation d’un écran LCD HD44780 (avec sac à dos I2C) avec le Raspberry Pi. J’ai mentionné à l’époque que j’avais également examiné de petits boîtiers pour le Pi dans l’espoir de faire quelque chose. Eh bien, en quelques heures de temps libre, j’avais entre deux épisodes de Pi Wars admin, j’ai déterré mon fer à souder, mon outil rotatif et divers autres accessoires et j’ai fait quelque chose que j’appelle palmPi.

Nomenclature

Les outils utilisés

Construction -Matériel requis

Préparation

Tout d’abord, j’ai soudé un en-tête mâle à 40 broches sur le Raspberry Pi Zero W et un en-tête femelle sur la carte perma proto. Cela signifie que je pourrais connecter la carte proto au Pi Zero. je pourrait J’ai tout soudé ensemble en permanence, mais je voulais utiliser un Raspberry Pi 3 pour faire les installations et la programmation, car c’est beaucoup plus rapide que le Pi Zero. J’ai également (très lâchement) placé tous les composants à l’intérieur du boîtier pour m’assurer qu’ils rentreraient dans l’espace.

LCD

La première chose que j’ai faite a été de m’assurer que je pouvais obtenir une sortie à l’écran. J’ai utilisé mon propre tutoriel pour le HD44780 et j’ai câblé des câbles de pontage aux broches, en les pliant légèrement pour obtenir le bon angle.

blank

J’ai réussi à perdre le petit cavalier qui permettait le rétroéclairage de l’écran LCD (doh!) Alors j’ai juste branché un câble de cavalier F-F supplémentaire pour connecter les deux broches. J’ai coupé les extrémités et dénudé les quatre fils de connexion principaux, puis étamé les extrémités échouées pour les rendre plus faciles à travailler. Cela nécessite une bonne quantité de compétences, car vous ne voulez pas les faire aussi épais sinon ils ne passeront pas par le plateau de proto. Ayant établi (en le branchant directement sur le Pi) que l’écran fonctionnait, j’ai soudé les fils LCD à la carte proto pour qu’elle soit plus permanente. J’ai collé l’écran à chaud dans le trou prédécoupé du boîtier. Ce n’est pas parfait, mais ça fera l’affaire pour moi. L’alternative était d’obtenir que Tim me découpe au laser quelque chose qui conviendrait parfaitement, mais avec Pi Wars, je ne voulais pas ajouter à sa charge de travail!

Bouton

blankJe savais qu’au moins, je voulais un bouton pour arrêter le Pi en toute sécurité. J’ai regardé à travers ma (grande) collection de boutons et j’ai décidé d’utiliser un bouton éclairé (évidemment parce que je voulais une pratique de soudure supplémentaire ..!)

J’ai soudé quatre fils au bas du bouton, puis thermorétréci les bornes. J’ai ensuite soudé les fils sur la carte proto perma – j’ai utilisé deux broches GPIO, une pour la LED afin de pouvoir la faire clignoter et une pour lire la pression réelle du bouton. Ne faites pas ce que j’ai fait et oubliez de remettre la laveuse au préalable sinon vous devrez faire ce que j’ai fait et coller le bouton à chaud!) À ce stade, j’ai réalisé que j’aurais dû souder une résistance en ligne pour la LED, mais je savais par expérience que ce n’était pas la fin du monde (dit-il, en espérant que ce soit vrai). Si vous le faites vous-même, utilisez 220 ohms ou similaire sur le fil de terre.

Bouton ON / OFF

blankL’ensemble du projet est exécuté à partir d’une batterie LiPo connectée via un PowerBoost 1000C qui est capable de fournir 5V à 1A, juste assez pour un Pi Zero W.Une des bonnes choses à propos du 1000C est qu’il a des broches qui déconnectent entièrement la batterie de votre Pi et autre matériel. Vous pouvez lire toutes ces épingles sur le site d’Adafruit. J’ai donc soudé les fils au commutateur, les ai rétrécis à la chaleur, puis j’ai soudé les autres extrémités au PowerBoost. L’autre chose intéressante est que la carte a un indicateur d’état LED qui s’allume si la puissance de sortie est allumée. J’ai donc pu tester le commutateur indépendamment du démarrage du Pi. J’ai ensuite sorti l’outil rotatif et percé des trous pour le bouton et l’interrupteur. J’ai décidé que mes compétences en outils rotatifs devaient… s’améliorer… Il y a un peu d’air autour du bouton lumineux. Oops!

BMP280

blankLe BMP280 est une jolie petite carte de dérivation qui vous permet d’avoir la sortie du capteur sur I2C. Encore une fois, j’ai soudé des fils à la carte de dérivation, percé un trou avec l’outil rotatif, les ai passés à travers et les ai soudés sur le perma proto. En adoptant l’approche do-a-little, test-a-little, je me suis assuré que le capteur était capté:

i2cdetect -y 1

… Et que les relevés des capteurs étaient transmis au Pi en utilisant du code (dont plus plus tard).

Analogique

blankPour lire à partir du capteur TMP36, j’avais besoin d’ajouter un convertisseur analogique-numérique. Il me restait des cartes ADS1115 / 1015 d’un autre projet et celles-ci vous donnent quatre canaux analogiques. J’ai soudé l’ADS directement sur la carte perma proto à l’aide d’en-têtes pass-through pour économiser de l’espace vertical à l’intérieur du boîtier.

J’ai ensuite pris le capteur TMP36, levé les broches encore (soupir) et l’a soudé au canal A0 sur la carte perma proto, 3v3 et GND.

Encore une fois, j’ai vérifié que je pouvais lire la sortie, puis j’ai réalisé que je devais calculer la conversion de la lecture ADS à la température réelle. (Eurgh! Maths!) Cette astucieuse manipulation était contenue dans une fonction:

adc = Adafruit_ADS1x15.ADS1015()

def read_internal_temperature():
  ADC_GAIN = 2
  adc_reading = adc.read_adc(0, gain=ADC_GAIN)
  adc_mv = ((adc_reading * 2.048)/2048) * 1000

  temp_c = (adc_mv - 500) / 10
  temp_f = (temp_c * 1.8) + 32

  return "{:+.2f}".format(temp_c), "{:+.2f}".format(temp_f)

Puissance

En plus des broches d’activation de l’interrupteur marche / arrêt, j’ai également soudé les broches 5V et GND du PowerBoost aux rails 5V et GND du perma proto, alimentant ainsi le Pi à partir de la batterie. Jusque-là, j’avais alimenté le Pi (et tout le reste) à partir d’une alimentation normale. La bonne chose à propos de l’interrupteur marche / arrêt à ce stade est que vous pouvez brancher la batterie, mais laissez-la basculée à l’aide de l’interrupteur marche / arrêt et alimentez toujours le Pi et les capteurs, etc. à partir du secteur. Considérez toujours si la décharge de la batterie est une bonne idée à tout moment – vous ne voulez pas que la batterie se décharge et que le Pi se bloque au milieu de la modification de votre code! Si vous utilisez un Pi 3 avec l’une de ces batteries, vous obtiendrez non seulement des avertissements de sous-alimentation, mais la batterie ne durera pas très longtemps.

Je viens de réaliser que j’ai oublié de câbler la broche d’avertissement de batterie faible à un GPIO – je vais le démonter plus tard et le faire!

Après avoir tout soudé et terminé, j’ai ensuite découpé en rotation un autre trou dans le boîtier pour un câble d’alimentation, puis collé à chaud le PowerBoost au boîtier. J’étais assez chuffed – tout est attaché à la moitié supérieure du boîtier, ce qui signifie que je peux retirer et retirer le fond sans retirer les fils! Voici une photo du PowerBoost (c’est ce bit bleu ombré au centre, en bas) à sa place finale sous le proto perma principal et le Pi Zero W.

blank

Et voici une dernière photo des entrailles. L’écran LCD est à gauche et vous pouvez voir l’interrupteur à bascule marche / arrêt en bas, le bouton lumineux en haut, puis le perma proto (avec Pi Zero caché en dessous) à droite. Le morceau de ruban électrique sur le proto est l’endroit où j’ai temporairement attaché la batterie à la carte proto pour le stockage.

blank

Logiciel

La structure principale du programme est similaire à ce que j’ai écrit pour le Picorder mais c’est beaucoup plus simple car j’utilise moins de capteurs. Il configure tout puis passe en boucle, obtenant les lectures des capteurs et les transmettant à l’écran LCD.

Pour lire le BMP280, J’ai récupéré du code de Matt Hawkins (Raspberry Pi Spy). C’est une superbe mini-bibliothèque qui lit toutes les sorties du capteur et les renvoie d’une fonction. Vous pouvez découvrez comment cela fonctionne sur le blog de Matt. J’ai effectué un peu de mise à jour pour le mettre aux normes Python 3.

Pour lire les valeurs analogiques de l’ADS1115, j’ai installé et utilisé une bibliothèque Adafruit qui est facilement documenté sur leur plateforme d’apprentissage.

J’ai décidé à ce stade que je voulais enregistrer les lectures du capteur sur une plate-forme en ligne. j’ai choisi Etat initial. Je les suis depuis quelques années et c’est une plateforme très mature. Il est également gratuit à utiliser jusqu’à un certain point et conviendrait à mes fins. Mon code met en place un nouveau «thread» (un processus séparé, en quelque sorte) pour prendre et enregistrer les lectures à l’état initial. Il s’agit d’une implémentation très simple qui ne fait pas beaucoup plus que consigner les lectures, puis attendre 15 minutes avant de se reconnecter. Vous pouvez voir l’un des graphiques qu’il produit ci-dessous:

blank

Et vous pouvez voir le tableau de bord configurable avec toutes les lectures ci-dessous:

blank

Tout mon code est disponible ici sur GitHub.

Oui, j’ai laissé mes informations d’identification de compartiment d’état initial là-dedans! Je ne paie pas pour mon plan et vous ne pouvez pas voir la sortie de toute façon. Normalement, vous ne feriez pas cela, vous les mettriez dans un fichier de configuration et configureriez un fichier .gitignore pour ne pas les valider.

Mise à jour: j’ai maintenant ajouté du code qui tweets le démarrage, les lectures du capteur et l’arrêt. Pour cela, j’ai suivi les instructions sur cette page pour la bibliothèque Twython.

Voyez-le en action

Je suis sûr que vous aimeriez voir le palmPi dans toute sa splendeur! Ou peut-être pas, mais de toute façon, c’est parti!

Articles similaires

Bouton retour en haut de la page
Fermer