Table des matières:

Tweet-A-Temp : 8 étapes
Tweet-A-Temp : 8 étapes

Vidéo: Tweet-A-Temp : 8 étapes

Vidéo: Tweet-A-Temp : 8 étapes
Vidéo: My job is to observe the forest and something strange is happening here. 2024, Juillet
Anonim

Par les expériences Homebrew de Z0tZotSuivez plus par l'auteur:

Moule à 8 faces Magic 8 Beer
Moule à 8 faces Magic 8 Beer
Moule à 8 faces Magic 8 Beer
Moule à 8 faces Magic 8 Beer

Mon fils aîné (Minion #1) et moi avons commencé à construire un Tweet-A-Watt et n'avons pas suivi les instructions correctement, à savoir que nous avons fait des deux récepteurs comme récepteurs standard au lieu d'un seul, puis remplissons à moitié le deuxième récepteur XBee. Eh bien nous avions deux choix, soit couper les parties supplémentaires, soit autre chose. Étant donné que je n'ai pas encore trouvé de Kill-A-Watt localement et que j'avais ce thermomètre externe/interne que je voulais informatiser depuis 10 ans, je savais ce que je devais faire: je devais utiliser le thermomètre pour mesurer la température de mon spa, puis tweetez-le ! J'avais récemment confié à Minion #1 une mission pour décrire un contrôleur de spa sans limites. Il a mentionné, eh bien, nous pourrions le faire sans fil, mais non, c'est idiot… J'adore quand un plan sur 10 ans se concrétise. Voir sur Twitter

Étape 1: Construisez les récepteurs Xbee

Construisez les récepteurs Xbee
Construisez les récepteurs Xbee

Construisez deux récepteurs XBEE. J'ai utilisé les récepteurs de Lady Ada, n'importe quel récepteur fera l'affaire. Vous aurez besoin d'accéder aux broches VREF et AD0 du XBee. L'astuce du Tweet-A-Watt est la configuration. En effet, vous configurez l'un des appareils pour répéter les valeurs du Kill-A-Watt avec: ATMY=1, SM=4, ST=3, SP=C8, D4=2, D0=2, IT=13, IR=1 Ceci définit l'adresse (1), définit le mode veille, la minuterie et la période, puis définit les broches 4 et 2 sur le mode d'entrée analogique (2), qui enverra 0x13 (19 décimal) paquets, 1 ms entre les échantillons. L'astuce ici est l'entrée analogique. Vous pouvez lire les petites tensions (0-5V) directement par le XBee. Dans le Tweet-A-Watt, vous définiriez les broches 4 et 0 pour envoyer les ampères et les volts mesurés par le Kill-A-Watt. En réalité il n'envoie pas ça, il envoie la petite tension mesurée par les puces du Kill-A-Watt au récepteur XBee qui est relié à un ordinateur. Le logiciel de l'ordinateur lit en permanence les paquets reçus et recalcule la tension et l'ampérage réels, puis il calcule la puissance.

Étape 2: Le thermomètre

Le thermomètre
Le thermomètre
Le thermomètre
Le thermomètre
Le thermomètre
Le thermomètre

J'ai acheté deux de ces thermomètres intérieurs/extérieurs il y a environ 10 ans chez Home Depot. J'ai toujours été fasciné par le fait que le "thermomètre" extérieur soit connecté à l'unité de base avec ce qui ressemblait à une prise audio standard. Je me suis toujours demandé si je pouvais mesurer la température en le branchant sur une prise micro d'un ordinateur.

Il s'avère que je pourrais probablement le faire fonctionner, mais ce serait délicat. La prise est en fait une prise 3/32 , au lieu d'une prise audio 1/8. C'est la prise standard pour les téléphones portables pour les micros externes. Cela a posé un problème car je n'ai pas pu trouver de prise de micro dans mes piles de déchets qui n'étaient pas montés en surface. J'ai dû acheter un ensemble de Radio Shack (2 $), ce qui a ajouté un retard important au projet (l'accès à une cabane n'était pas facile). J'ai démonté une unité avant de réaliser soudainement comment fonctionnait la chose qui fonctionnait, c'était un diviseur de tension ! C'était une évidence une fois que j'y ai pensé. Cela m'a rendu la vie très facile.

Étape 3: Qu'est-ce qu'un diviseur de tension ?

Qu'est-ce qu'un diviseur de tension ?
Qu'est-ce qu'un diviseur de tension ?

L'un des meilleurs endroits pour en savoir plus sur l'électronique est le Wisconsin Online. Les diviseurs en ligne sont expliqués sur cette page (en bas à droite), ou vous pouvez visiter la page Wikipedia sur la tension. En bref, si vous avez deux résistances en série, la chute de tension à travers chaque résistance est proportionnellement à la taille de la résistance. Si vous avez une tension V sur un circuit de R (1) + R (2), alors V = V (1) + V (2). Donc si V=3V et V(2) = 2V, vous savez que le V(1) = 1V. Maintenant, la base de la loi d'Ohm est que le courant (I) est V/R. Dans un circuit en série, le courant est le même partout, donc le courant à travers A et B est le même pour tout le circuit. Donc I = V1/R1 = V2/R2. On sait V2 = V - V1, En branchant, on voit V1/R1 = (V-V1)/R2. En résolvant, nous obtenons R2 = R1*(V-V1)/V1 Donc, si nous savons si nous connaissons V(1), V et R(2), nous pouvons résoudre R2. Si nous avons R2, nous connaissons la valeur du Thermistance !

Étape 4: Qu'est-ce qu'une thermistance ?

Qu'est-ce qu'une thermistance ?
Qu'est-ce qu'une thermistance ?

Une thermistance est une résistance qui change de résistance avec la température. En utilisant les techniques du diviseur de tension pour déterminer la résistance, nous pouvons dire à quelle température il s'agit. Le problème est que j'ai une thermistance bon marché dans un boîtier d'un produit de 10 ans. Comment étais-je supposé créer une fonction pour passer d'une résistance à une température ? Eh bien, j'ai un thermomètre auquel il se branche ! J'ai donc beaucoup mesuré. J'ai copié la température vers le bas, puis j'ai mesuré la résistance de la thermistance. Je l'ai placé au réfrigérateur, puis je le place dans de l'eau tiède. Plus tard, je saisirais les températures ambiantes depuis que j'en avais le temps. J'ai supposé que j'aurais pu lire la plage de Wikipedia et essayer de deviner les facteurs a et b, mais j'ai supposé que j'utilisais un composant non linéaire et défectueux qui ne correspondait plus à sa fabrication. Caractéristiques. Oh et je suis paresseux. J'ai donc vidé toutes les valeurs dans Excel, puis je les ai représentées graphiquement. À l'origine, je craignais de devoir me souvenir des mathématiques sombres et profondes de quelque chose comme "l'ajustement au moindre carré" lorsque j'ai découvert qu'Excell le ferait pour moi! Clairement, il me manque des lacunes sur le graphique, mais j'ai obtenu beaucoup de bonnes données sur les températures du spa (100-105F). En vérifiant les plages de température ambiante, j'ai remarqué quelque chose qui rend presque mon travail sans valeur. Le thermomètre "Precise Temp" a signalé une erreur de 3 à 7 degrés entre "intérieur" et "extérieur" lorsque la thermistance était à quelques centimètres ! Maintenant, c'est peut-être parce que j'ai mélangé et assorti la thermistance entre les unités, mais je parie que cela a plus à voir avec la qualité d'un article de 10 ans, 10 $ & Quelle que soit la "précision" de la température, j'avais besoin de précision et de plusieurs tests de la même gamme a montré des résultats très proches au fil des jours. À long terme, je vais probablement attacher la thermistance à un tuyau menant au bain à remous, j'aurai donc besoin d'un décalage de toute façon. Donc, en faisant en sorte qu'Excel affiche l'équation, je l'ai ensuite mis dans le code, et jusqu'à présent, c'est " proche."

Étape 5: Circuit de l'émetteur

Circuit émetteur
Circuit émetteur

Le circuit de l'émetteur est simple. J'ai choisi une résistance de 100 kOhm pour R2 car il semblait qu'elle correspondrait à la plage du graphique, et j'en avais une de rechange pour dessouder diverses choses avec les Minions. Je le connecte en série avec la thermistance via un connecteur. Ensuite, j'ai ajouté une batterie. J'ai couru 3 V vers VREF et le haut du diviseur de tension et vers l'entrée Xbee +3V. J'ai mis le GND (Battery Negative) à l'entrée GND et au bas du diviseur. J'ai ensuite connecté AD0 (Volts in) au milieu du circuit diviseur de tension.

AD0 lira une tension relative de VREF à V(1). Ainsi, à mesure que la batterie diminue, la tension relative devrait baisser de la même manière. Finalement, j'alimenterai l'unité avec une source d'alimentation locale. L'unité finie a bien fonctionné, nous connectons le tout avec des pinces crocodiles, ce qui la rendait fragile. Après avoir obtenu la connexion femelle 3/32", je place l'émetteur dans un bac en plastique au hasard que nous avions (un ancien conteneur de houmous). Cela devrait le protéger des intempéries. Depuis que j'ai acheté des connecteurs "à montage sur panneau", c'était aussi simple comme percer un trou dans le plastique pour ajouter le connecteur à l'extérieur avec une connexion assez étanche. Une fois que nous avions cela, il était temps de tester.

Étape 6: Maison, Maison, n'a pas de portée

Maison, Maison, N'a Pas De Gamme
Maison, Maison, N'a Pas De Gamme
Maison, Maison, N'a Pas De Gamme
Maison, Maison, N'a Pas De Gamme
Maison, Maison, N'a Pas De Gamme
Maison, Maison, N'a Pas De Gamme

L'une des premières choses que nous avons remarquées, c'est que la gamme est morte d'une mort horrible dès que nous sommes sortis du bureau avec l'émetteur. Nous avons essayé dans une autre pièce et les résultats ont été terribles. 1 mètre plus loin, il a chié. Il est temps de chercher des solutions. Il m'est venu à l'esprit que lorsque nous avons testé, nous avions 4 sources de Wi-Fi à moins de 5 pieds, toutes dans la plage de 2,5 Ghz comme le Xbee. De plus, nous n'avons pas du tout visé le Xbee. Après avoir fait des recherches, j'ai déterminé que je pouvais acheter une radio Xbee plus puissante (environ 23 $) ou ajouter des antennes. L'une des choses dont j'avais besoin était un bon test de portée. Le logiciel X-CTU de Digi a un "test de portée" intégré, mais cela n'a rien fait. J'ai passé un certain temps à essayer de comprendre comment le faire fonctionner. En fait, c'était aussi facile à faire qu'à dire. Je n'avais pas vraiment besoin du test X-CTU, juste le Valeur "RX Signal Strength Indicator" (RSSI). J'ai regardé dans les utilisations de xbee.pyTweet-A-Watt et là, ligne 39: [code]self.rssi = p[3][/code]Ce qui signifie qu'il fait partie de la valeur de retour Xbee !(xb.rssi dans wattcher), j'ai donc modifié une ligne de debug pour mon hack: print str(counter) +": RSSI: " + str(xb.rssi) + " | " + time.strftime("%Y %m %d, %H:%M")+ ", " + ": Tension: " + str(CalcualtedVolts) + " avgv " + str(avgv) + " Thermistance: " + str(x) + " Température: " + str(Température) Qui produit une ligne comme celle-ci: 373: RSSI: 82 | 2009 04 26, 11:18,: Tension: 1.80100585938 avgv 593 Thermistance: 71.2276559865 Température: 78.6813444881 Vous pouvez voir également RSSI avec traitement, à partir de la page de Tom's Igoe. Bien que vous souhaitiez modifier la longueur du paquet (en haut), car Processing s'est plaint d'écrire au-delà de la fin de la taille du tampon de paquet. Je pense que vous devez être supérieur à 2 * attendu longueur du paquet. Le code de Tom recherche un paquet précédent en arrière, ce qui signifie que s'il manque l'indicateur de paquet Ox7E, il pourrait fonctionner pendant un certain temps. Étant donné que je suis près du bord extérieur de la plage de mesure, cela peut arriver pendant un certain temps. J'ai réglé le mien sur 600 et il a cessé de me donner le message "erreur, désactivation de serialEvent()". Le code de Tom imprime simplement le dernier paramètre, ce qui n'est pas très utile pour moi. Ma ligne de débogage me permet de suivre change au fur et à mesure que Minion # 1 se demande. Maintenant, nous avions un bon moyen de mesurer, plus que "hé papa, nous avons un paquet", il était temps d'essayer quelques idées d'antennes maison! En utilisant des idées de https://www.usbwifi.orconhosting.net.nz/, j'ai découvert que le Corner Cube mesurait une diminution de dB, bien qu'en pratique ne semble pas aider à connecter une paire déconnectée. Le Vegatible Steamer était en fait le meilleur pour viser et se reconnecter. La configuration de l'USB Wifi est très différente de celle d'autres personnes. Les cuiseurs à vapeur ont une tige au milieu qui facilite le placement XBee. Un bol pho avec du papier d'aluminium est également prometteur (bien que nous ayons simplement retiré le papier d'aluminium plus tard et l'avons maintenu en place). Nous avons également essayé de faire une parabole avec un morceau de cintrage de roues chaudes "track", mais cela n'a pas semblé aider. L'un des problèmes est que nous faisions des tests à la limite extérieure de la plage. La plupart des radios 2.5Ghz, XBee en particulier, utilisent un spectre étendu, ce qui signifie qu'elles peuvent prendre un mais pour "synchroniser", puis le logiciel XBee recherche le début d'un paquet XBee avant de se déclencher. Cela signifie que si vous obtenez un effet tout ou rien. Soit les radios se verrouillent l'une sur l'autre, soit non. Parfois, cela semble être de la chance, mais en fait, vous êtes une antenne à ces portées et pouvez avoir un impact sur les résultats. Je suis allé acheter deux bateaux à vapeur, mais j'ai ensuite découvert que le coût d'un bateau à vapeur au supermarché local était de 10 $, et pour le prix de 2 bateaux à vapeur, je peux obtenir un XBee plus puissant. J'ai donc regardé à quelques endroits supplémentaires et j'ai trouvé une passoire assez profonde qui s'est avérée encore meilleure. C'était 7 $. Je crois que la profondeur est importante, puisque je suis du côté de la transmission, elle reflète davantage le signal (selon les notes dans https://www.usbwifi.orconhosting.net.nz/number13.jpg). Résultats finaux, c'est qu'avec un cuiseur vapeur à une extrémité (à remplacer) et une passoire à l'autre, j'ai un signal à environ 20-30 m, d'un bureau intérieur, à travers 3-4 murs, jusqu'au bain à remous ! Astuce de pro: n'oubliez pas pour apporter la passoire si vous voulez 1) Votre conjoint reste et/ou 2) Vous voulez des légumes cuits à la vapeur plus tard. Personnellement, j'aime l'apparence en forme de pétale du cuiseur vapeur pour légumes.

Étape 7: Logiciel

Logiciel
Logiciel

En commençant par le logiciel Tweet-A-Watt, j'ai commencé à pirater le code python. La plupart du temps, j'avais besoin de supprimer la conversion Watts, les fonctions d'historique, puis j'avais besoin d'ajouter un certain nombre de protections divisées par 0 (le Tweet-A-Watt suppose que les paquets auront des données). J'ai ensuite ajouté la formule d'Excel dans le programme et testé. Je l'ai configuré pour imprimer chaque paquet et j'ai beaucoup de débogage dans le code pour détecter les problèmes. J'ai essayé de faire fonctionner la partie graphique, mais j'ai abandonné, ce qui m'amène à: Python Rant: c'est la deuxième fois que j'ai essayé de faire un grand projet en Python. Je n'ai pas pu faire fonctionner toutes les dépendances des bibliothèques et les packages de base en moins de 20 heures sous Windows, Windows 64, Ubuntu et Fedora. J'ai finalement dû construire presque tout à partir de zéro et même alors, certaines fonctions ne fonctionnaient pas. J'ai essayé les versions 2.4, 2.5, 2.6 et diverses versions 3. X, puis les versions de chaque bibliothèque, qui à leur tour avaient des dépendances sur d'autres packages. Alors que d'autres peuvent avoir des diatribes contre la langue, j'ai trouvé que le simple fait d'installer, même en utilisant de nombreux " installateurs faciles ", était au mieux intimidant ! Après avoir calculé les températures, j'ai fait un ajustement de 1 degré, car je ne pouvais pas croire le bain à remous était à 106F. Je ne crois vraiment pas qu'il soit à 105 non plus. J'ai ensuite tweeké la logique des rapports et de Twitter. Comme je ne sais pas si j'obtiendrai des paquets, ou de bons paquets, j'ai choisi de signaler la température une fois par heure. Je suppose que je vais réduire cela dans un moment. Actuellement, le script s'exécute en tant qu'utilisateur normal. Je voudrai éventuellement le déplacer vers un service.

Étape 8: Étapes suivantes

Il y a quelques étapes suivantes évidentes:

1) Remplacez la passoire à légumes a. Les minions ont besoin de leurs légumes ! b. Celui-là était vieux de toute façon. 2) Placez l'antenne du spa sous le pont a. Le deck peut le rendre encore "plus loin", mais il permettra une configuration plus laide. b. Je peux ensuite faire passer la thermistance vers le bas et trouver un meilleur endroit. 3) Ajouter plus de capteurs a. Le plus simple est un capteur de température extérieure. b. Mais il n'y a aucune raison pour que nous ne puissions pas détecter l'état des panneaux de commande, en particulier le capteur de chaleur qui est touché par magie lorsque les enfants sont terminés. c. Autres capteurs météorologiques (vent, humidité, etc.) d. Ce serait bien de contrôler le bain à remous et je pourrais éteindre le chauffage une grande partie de la nuit et du jour. 4) Je peux ajuster le logiciel a. Les Minions veulent déjà de meilleurs messages par température. b. Nous devrions être en mesure de répondre aux réponses et aux DM. c. Je devrais tweeter plus intelligemment (moins d'une fois par heure). ré. J'ai d'autres choses amusantes prévues.

Conseillé: