Inhoudsopgave:

Tweet-A-Temp: 8 stappen
Tweet-A-Temp: 8 stappen

Video: Tweet-A-Temp: 8 stappen

Video: Tweet-A-Temp: 8 stappen
Video: В ЭТУ КУКЛУ ПОСЕЛИЛОСЬ ЧТО_ТО СТРАШНОЕ / SOMETHING TERRIBLE HAS SETTLED IN THIS DOLL 2024, November
Anonim

Door Z0tZot's Homebrew ExperimentsVolg meer van de auteur:

Magic 8 Beer 8-zijdige matrijs
Magic 8 Beer 8-zijdige matrijs
Magic 8 Beer 8-zijdige matrijs
Magic 8 Beer 8-zijdige matrijs

Mijn oudste zoon (Minion #1) en ik begonnen een Tweet-A-Watt te bouwen en slaagden er niet in om de aanwijzingen correct op te volgen, namelijk dat we beide ontvangers als standaardontvangers hebben gemaakt in plaats van slechts één en dan de tweede XBee-ontvanger voor de helft vullen. we hadden twee keuzes, ofwel de extra delen afsnijden, of iets anders. Aangezien ik lokaal nog geen Kill-A-Watt heb gevonden en ik deze externe/interne thermometer had die ik al 10 jaar wilde automatiseren, wist ik wat ik moest doen: ik moest de thermometer gebruiken om te meten de temperatuur van mijn bubbelbad, en tweet het dan! Onlangs had ik Minion #1 een opdracht gegeven om een hot tub-controller zonder grenzen te beschrijven. Hij zei dat we het draadloos zouden kunnen maken, maar nee, dat is dom … Ik vind het geweldig als een 10-jarenplan tot wasdom komt. Zie het op Twitter

Stap 1: Bouw de Xbee-ontvangers

Bouw de Xbee-ontvangers
Bouw de Xbee-ontvangers

Bouw twee XBEE-ontvangers. Ik heb de ontvangers van Lady Ada gebruikt, elke ontvanger is geschikt. Je hebt toegang nodig tot de VREF- en AD0-pin van de XBee. De truc van de Tweet-A-Watt is de configuratie. In feite stel je een van de apparaten in om de waarden van de Kill-A-Watt te herhalen met: ATMY=1, SM=4, ST=3, SP=C8, D4=2, D0=2, IT=13, IR=1 Dit stelt het adres (1) in, stelt de slaapmodus, timer en periode in en stelt vervolgens pinnen 4 en 2 in op analoge invoermodus (2), die 0x13 (19 decimaal) pakketten zal verzenden, 1 ms tussen samples. De truc hier is de analoge ingang. Kleine spanningen (0-5V) kunt u direct door de XBee uitlezen. In de Tweet-A-Watt zou je pinnen 4 en 0 instellen op het verzenden van de Amps en Volt gemeten door de Kill-A-Watt. In werkelijkheid zendt het dat niet, het stuurt de kleine spanning gemeten door de chips in de Kill-A-Watt naar de ontvanger XBee die is aangesloten op een computer. De software op de computer leest constant de ontvangen pakketten en herberekent de werkelijke spanning en stroomsterkte, en berekent vervolgens het Wattage.

Stap 2: De thermometer

De thermometer
De thermometer
De thermometer
De thermometer
De thermometer
De thermometer

Ik kocht twee van deze binnen- en buitenthermometers ongeveer 10 jaar geleden bij Home Depot. Ik was altijd gefascineerd dat de externe "thermometer" op de basiseenheid werd aangesloten met wat leek op een standaard audiostekker. Ik heb me altijd afgevraagd of ik de temperatuur kon meten door deze op een microfoonaansluiting van een computer aan te sluiten.

Blijkt dat ik het waarschijnlijk zou kunnen laten werken, maar het zou lastig zijn. De plug is eigenlijk een 3/32 jack, in plaats van een 1/8 audio plug. Dit is de standaard plug voor mobiele telefoons voor externe microfoons. Dit leverde een probleem op omdat ik geen microfoon pluggen kon vinden in mijn stapels rommel die waren niet oppervlaktemontage. Ik moest een set kopen van Radio Shack ($ 2), wat een grote vertraging aan het project toevoegde (het was niet gemakkelijk om bij een hut te komen). Ik haalde een eenheid uit elkaar voordat ik me plotseling realiseerde hoe het wie-ding werkte, het was een spanningsdeler! Het was duidelijk toen ik erover nadacht. Het maakte het leven heel gemakkelijk.

Stap 3: Wat is een spanningsdeler?

Wat is een spanningsdeler?
Wat is een spanningsdeler?

Een van de beste plaatsen om meer over Electronic te leren, is dat Wisconsin Online-verdelers op die pagina worden uitgelegd (rechtsonder), of u kunt de Voltage Wikipedia-pagina bezoeken. Kortom, als u twee weerstanden in serie hebt, is de spanningsval over elke weerstand gelijk aan in verhouding tot de grootte van de weerstand. Als je spanning V hebt over een circuit van R(1) + R(2), dan is V = V(1) + V(2). Dus als V=3V en V(2) = 2V, dan weet je dat de V(1) = 1V. De basis van de wet van Ohm is dat de stroom (I) V/R is. In een serieschakeling is de stroom overal hetzelfde, dus de stroom door A en B is hetzelfde voor het hele circuit. Daarom I = V1/R1 = V2/R2. We weten V2 = V - V1, Bij het aansluiten zien we V1/R1 = (V-V1)/R2. Als we oplossen, krijgen we R2 = R1*(V-V1)/V1. Dus als we weten of we V(1), V en R(2) kennen, kunnen we R2 oplossen. Als we R2 hebben, kennen we de waarde van de Thermistor!

Stap 4: Wat is een thermistor?

Wat is een thermistor?
Wat is een thermistor?

Een thermistor is een weerstand die van weerstand verandert met de temperatuur. Met behulp van de technieken van de spanningsdeler om de weerstand te bepalen, kunnen we zien welke temperatuur het is. Het probleem is dat ik een goedkope thermistor in een behuizing heb van een 10 jaar oud product. Hoe moest ik een functie maken om van een weerstand naar een temperatuur te gaan? Nou, ik heb een thermometer waar hij op wordt aangesloten! Dus ik heb veel gemeten. Ik heb de temperatuur naar beneden gekopieerd en vervolgens de weerstand van de thermistor gemeten. Ik plaatste het in de koelkast, dan plaats ik het in warm water. Later zou ik kamertemperatuur pakken omdat ik tijd had. Ik veronderstelde dat ik de Wikipedia-pagina had kunnen lezen, kan proberen de a- en b-factoren te raden, maar ik nam aan dat ik een niet-lineair, mogelijk falend onderdeel gebruikte dat niet langer overeenkwam met de productie specificaties. Oh en ik ben lui. Dus ik heb alle waarden in Excel gedumpt en er een grafiek van gemaakt. Ik! Het is duidelijk dat ik gaten in de grafiek mis, maar ik heb veel goede gegevens over de temperaturen van de hot tub (100-105F). Tijdens het controleren van de kamertemperatuurbereiken merkte ik iets op dat mijn werk bijna waardeloos maakt. De thermometer "Precieze temperatuur" rapporteerde een fout van 3-7 graden tussen "binnen" en "buiten" wanneer de thermistor centimeters verwijderd was! Dit kan zijn omdat ik de thermistor tussen eenheden heb gemengd en gematcht, maar ik wed dat het meer te maken heeft met de kwaliteit van een 10 jaar oud item van $ 10 & ongeacht de "nauwkeurigheid" van de temperatuur, ik had precisie en meerdere tests van hetzelfde nodig bereik toonde zeer nauwe resultaten gedurende dagen. Op de lange termijn zal ik de thermistor waarschijnlijk bevestigen aan een pijp die naar de hot tub leidt, dus ik heb sowieso een offset nodig. Dus door Excel de vergelijking te laten weergeven, plaats ik deze in de code, en tot nu toe is het " dichtbij."

Stap 5: Zendercircuit

Zender Circuit
Zender Circuit

Het zendercircuit is eenvoudig. Ik koos een weerstand van 100 kOhm voor R2 omdat het leek alsof het in het bereik van de grafiek zou passen, en ik had een reserve-weerstand om verschillende dingen met de Minions te desolderen. Deze sluit ik via een connector in serie met de Thermistor. Toen heb ik een batterijpakket toegevoegd. Ik rende 3 V naar VREF en de bovenkant van de spanningsdeler en naar de Xbee +3V-ingang. Ik plaats de GND (Battery Negative) op de GND-ingang en op de onderkant van de verdeler. Vervolgens heb ik AD0 (Volts in) aangesloten op het midden van het spanningsdelercircuit.

AD0 zal een relatieve spanning lezen van VREF naar V(1). Dus als de batterij afneemt, zou de relatieve spanning hetzelfde moeten afnemen. Uiteindelijk zal ik het apparaat van stroom voorzien met een lokale stroombron. De afgewerkte eenheid werkte prima, we verbinden alles met krokodillenklemmen, waardoor het kwetsbaar werd. Nadat ik de vrouwelijke 3/32" aansluiting had, plaatste ik de zender in een willekeurige plastic bak die we hadden (een ex-hummuscontainer). Dit zou hem tegen weersinvloeden moeten beschermen. Sinds ik "panel mount" connectoren kocht, was het zo simpel zoals het boren van een gat in het plastic om de connector naar buiten toe te voegen met een redelijk waterdichte verbinding. Toen we dat eenmaal hadden was het tijd om te testen.

Stap 6: Thuis, thuis, heeft geen bereik

Thuis, thuis, heeft geen bereik
Thuis, thuis, heeft geen bereik
Thuis, thuis, heeft geen bereik
Thuis, thuis, heeft geen bereik
Thuis, thuis, heeft geen bereik
Thuis, thuis, heeft geen bereik

Een van de eerste dingen die ons opviel, was dat de range een gruwelijke dood stierf zodra we met de zender het kantoor uitliepen. We probeerden het vanuit een andere kamer en de resultaten waren verschrikkelijk. Op 1 meter afstand was het kapot. Tijd om naar oplossingen te kijken. Het viel me op dat we tijdens het testen 4 bronnen van wifi hadden binnen een straal van 1,5 meter, allemaal in het 2,5 Ghz-bereik, zoals de Xbee. We hebben ook helemaal niet op de Xbee gericht. Na onderzoek besloot ik een krachtigere Xbee-radio (ongeveer $ 23) te kopen of antennes toe te voegen. Een van de dingen die ik nodig had, was een goede bereiktest. De X-CTU-software van Digi heeft een "Range Test" ingebouwd, maar het deed niets. Ik heb wat tijd besteed om erachter te komen hoe het te laten werken. Eigenlijk was dit makkelijker gedaan dan gezegd. Ik had de X-CTU-test niet echt nodig, alleen de "RX Signal Strength Indicator" (RSSI) waarde. Ik keek in de xbee.pyTweet-A-Watt gebruikt en daar, regel 39: [code]self.rssi = p[3][/code]Wat betekent dat het onderdeel is van de Xbee-retourwaarde!(xb.rssi in wattcher), dus ik heb een debug-regel voor mijn hack aangepast: print str(counter) +": RSSI: " + str(xb.rssi) + " | " + time.strftime("%Y %m %d, %H:%M")+ ", " + ": Spanning: " + str(CalcualtedVolts) + " avgv " + str(avgv) + " Thermistor: " + str(x) + " Temperature: " + str(Temperature) Wat een regel als deze produceert: 373: RSSI: 82 | 2009 04 26, 11:18,: Voltage: 1.80100585938 avgv 593 Thermistor: 71.2276559865 Temperatuur: 78.6813444881 Dat kan zie ook RSSI met verwerking, van Tom's Igoe's pagina. Hoewel je de pakketlengte (bovenaan) wilt wijzigen, omdat Processing klaagde over het schrijven voorbij het einde van de pakketbuffergrootte. Ik geloof dat je groter moet zijn dan 2 * verwacht pakketlengte. Tom's code kijkt achteruit voor een vorig pakket, wat betekent dat als het de Ox7E-pakketindicator mist, het een tijdje kan lopen. Aangezien ik me in de buurt van de buitenste rand van het meetbereik bevindt, kan dit een tijdje gebeuren. Ik heb de mijne ingesteld op 600 en het stopte met het geven van het bericht "error, disabling serialEvent()". Tom's code drukt alleen de laatste instelling af, wat niet zo handig voor mij is. Mijn debug-regel laat me volgen verandert terwijl Minion #1 ronddwaalt. Nu we een goede manier hadden om te meten, meer dan "hey pap, we hebben een pakket", was het tijd om wat zelfgemaakte antenne-ideeën uit te proberen! Met behulp van ideeën van https://www.usbwifi.orconhosting.net.nz/ heb ik ontdekt dat de Corner Cube een afname in dB heeft gemeten, hoewel het in de praktijk niet leek te helpen een niet-verbonden paar te verbinden. De Vegatible Steamer was eigenlijk de beste in het richten en opnieuw verbinden. De opstelling van USB Wifi is heel anders dan die van sommige andere mensen. De steamers hebben een steel in het midden wat zorgt voor een gemakkelijke plaatsing van de XBee. Een pho-kom met aluminiumfolie ziet er ook veelbelovend uit (hoewel we de aluminiumfolie later gewoon hebben verwijderd en op zijn plaats gehouden). We hebben ook geprobeerd een parabool te maken met een buigend stuk hotwheels "track", maar het leek niet te helpen. Een van de problemen is dat we aan het testen waren aan de buitenrand van het bereik. De meeste 2.5Ghz-radio's, vooral XBee, gebruiken gespreid spectrum, wat betekent dat ze een 'maar' kunnen nemen om te "synchroniseren" en dan zoekt de XBee-software naar het begin van een XBee-pakket voordat het wordt geactiveerd. Dit betekent dat als je een alles of niets effect krijgt. Of de radio's vergrendelen op elkaar, of niet. Soms lijkt het geluk, maar in feite ben je een antenne op deze afstanden en kan je de resultaten beïnvloeden. Ik ging twee steamers kopen, maar ontdekte toen dat de kosten van een steamer van de plaatselijke supermarkt $ 10 waren, en voor de prijs van 2 steamers kan ik een krachtigere XBee krijgen. Dus ik heb nog een paar plaatsen bekeken en vond een behoorlijk diepe zeef die nog beter is geworden. Het was $ 7. Ik geloof dat de diepte belangrijk is, aangezien ik aan het zendende einde van de dingen ben, weerspiegelt het meer van het signaal (volgens de opmerkingen in https://www.usbwifi.orconhosting.net.nz/number13.jpg). Eindresultaten, is dat met een groentestomer aan het ene uiteinde (te vervangen) en een zeef aan het andere, ik een signaal heb van ongeveer 20-30 m, van een binnenkantoor, door 3-4 muren, naar de hot tub!Pro tip: onthoud om de zeef naar binnen te halen als je wilt 1) Je partner blijft, en/of 2) Wil later gestoomde groenten. Persoonlijk vind ik het bloembladachtige uiterlijk van de groentestomer mooi.

Stap 7: Software

Software
Software

Beginnend met de Tweet-A-Wattsoftware ben ik begonnen met het hacken van de python-code. Meestal moest ik de Watt-conversie, de geschiedenisfuncties verwijderen, en daarna moest ik een aantal delen door 0-beveiligingen toevoegen (de Tweet-A-Watt gaat ervan uit dat pakketten gegevens bevatten). Ik voegde vervolgens de formule uit Excel toe aan het programma en getest. Ik heb het ingesteld om elk pakket af te drukken en ik heb veel foutopsporing in de code om problemen op te vangen. Ik heb geprobeerd het grafische gedeelte te laten werken, maar ik gaf het op, wat me bij: Python Rant brengt: dit is de tweede keer dat ik probeerde een groot project in Python te doen. Ik kon niet alle bibliotheken en basispakketten binnen 20 uur laten werken in Windows, Windows 64, Ubuntu en Fedora. Ik moest uiteindelijk bijna alles helemaal opnieuw bouwen en zelfs toen werkten sommige functies niet. Ik probeerde 2.4, 2.5, 2.6 en verschillende 3. X-versies, en vervolgens versies van elke bibliotheek, die op hun beurt afhankelijk waren van andere pakketten. Terwijl anderen misschien tekeer gaan tegen de taal, vond ik alleen het installeren, zelfs het gebruik van veel van de "eenvoudige installatieprogramma's" op zijn best ontmoedigend! Nadat ik de temperaturen had berekend, maakte ik een aanpassing van 1 graad, omdat ik de hot tub niet kon geloven stond op 106F. Ik geloof echt niet dat het op 105 staat. Ik heb toen de rapportage en twitterlogica getweet. Omdat ik niet zeker weet of ik pakketten of goede pakketten zal krijgen, heb ik ervoor gekozen om de temperatuur eenmaal per uur te melden. Ik neem aan dat ik dat over een tijdje zal verminderen. Momenteel wordt het script uitgevoerd als een normale gebruiker. Ik wil het uiteindelijk naar een service verplaatsen.

Stap 8: Volgende stappen

Er zijn enkele voor de hand liggende volgende stappen:

1) Vervang de groentezeef a. Minions hebben hun groenten nodig! B. Die was sowieso al oud. 2) Plaats de Hot Tub-antenne onder dek a. Het deck maakt het misschien nog "verder", maar het zorgt voor een lelijkere opstelling. B. Ik kan dan de thermistor naar de onderkant laten lopen en een betere plek vinden. 3) Voeg meer sensoren toe a. De makkelijke is een buitentemperatuursensor. B. Maar er is geen reden waarom we de staat van de bedieningspanelen niet zouden kunnen detecteren, met name de warmtesensor die op magische wijze wordt aangeraakt als er kinderen zijn. C. Andere weersensoren (wind, vochtigheid, enz.) d. Het zou leuk zijn om de hot tub te bedienen en ik zou de verwarming een groot deel van de dag en nacht kunnen uitschakelen. 4) Ik kan de software aanpassen a. Minions willen nu al betere berichten per temperatuur. B. We zouden moeten kunnen reageren op antwoorden en DM's. C. Ik zou intelligenter moeten tweeten (minder dan een keer per uur). NS. Ik heb nog wat andere leuke dingen gepland.

Aanbevolen: