Innehållsförteckning:
- Steg 1: Bygg Xbee -mottagarna
- Steg 2: Termometern
- Steg 3: Vad är en spänningsdelare?
- Steg 4: Vad är en termistor?
- Steg 5: Sändarkrets
- Steg 6: Hem, hem, har inget intervall
- Steg 7: Programvara
- Steg 8: Nästa steg
Video: Tweet-A-Temp: 8 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:47
Av Z0tZot's Homebrew ExperimentsFölj mer av författaren:
Min äldsta son (Minion #1) och jag började bygga en Tweet-A-Watt och misslyckades med att följa anvisningarna korrekt, nämligen att vi gjorde båda mottagarna som standardmottagare istället för att bara en och sedan hälften fyllde den andra XBee-mottagaren. vi hade två val, antingen klippa av de extra delarna eller något annat. Med tanke på att jag ännu inte har hittat en Kill-A-Watt lokalt, och jag hade denna externa/interna termometer som jag hade velat datorisera i 10 år, visste jag vad jag hade att göra: jag var tvungen att använda termometern för att mäta temperaturen på mitt badtunna och sedan twittra det! Jag hade nyligen gett Minion #1 ett uppdrag att beskriva en badtunna -kontroller utan gränser. Han nämnde, ja vi skulle kunna göra det trådlöst, men nej, det är dumt … Jag älskar det när en tioårsplan kommer till stånd. Se den på Twitter
Steg 1: Bygg Xbee -mottagarna
Bygg två XBEE -mottagare. Jag använde mottagarna från Lady Ada, vilken mottagare som helst gör. Du behöver åtkomst till XBees VREF- och AD0-stift. Tricket till Tweet-A-Watt är konfigurationen. I själva verket ställer du in en av enheterna för att upprepa värdena från Kill-A-Watt med: ATMY = 1, SM = 4, ST = 3, SP = C8, D4 = 2, D0 = 2, IT = 13, IR = 1 Detta ställer in adressen (1), ställer in viloläge, timer och period och ställer sedan in stift 4 och 2 på analogt ingångsläge (2), vilket skickar 0x13 (19 decimaler) paket, 1 ms mellan samplingarna. Tricket här är den analoga ingången. Du kan läsa små spänningar (0-5V) direkt av XBee. I Tweet-A-Watt ställer du in stiften 4 och 0 för att skicka förstärkarna och volt som mäts med Kill-A-Watt. I verkligheten skickar den inte det, den skickar den lilla spänningen som mäts av chipsen i Kill-A-Watt till mottagaren XBee som är ansluten till en dator. Programvaran vid datorn läser ständigt de mottagna paketen och den beräknar om den faktiska spänningen och strömstyrkan, och sedan beräknar den effekt.
Steg 2: Termometern
Jag köpte två av dessa inomhus-/utomhustermometrar för ungefär 10 år sedan från hemmadepå. Jag var alltid fascinerad av att den yttre "termometern" anslöt till basenheten med det som såg ut som en vanlig ljudplugg. Jag undrade alltid om jag kunde mäta temperaturen genom att ansluta detta till ett mikrofonuttag på en dator.
Det visade sig att jag förmodligen kunde få det att fungera, men det skulle vara svårt. Kontakten är faktiskt en 3/32 jack, istället för en 1/8 ljudkontakt. Detta är standardkontakten för mobiltelefoner för externa mikrofoner. Detta gav ett problem eftersom jag inte kunde hitta några mikrofonkontakter i mina högar med skräp som Jag var tvungen att köpa en uppsättning från Radio Shack ($ 2), vilket bidrog till en stor fördröjning i projektet (det var inte lätt att komma till en hytta). Jag tog isär en enhet innan jag plötsligt insåg hur det fungerade., det var en spänningsdelare! Det var uppenbart när jag tänkte på det. Det gjorde livet väldigt enkelt.
Steg 3: Vad är en spänningsdelare?
En av de bästa platserna att lära sig om Electronic är Wisconsin Online -avdelare förklaras på den sidan (nere till höger), eller så kan du besöka Voltage Wikipedia -sidan. Kort sagt, om du har två motstånd i serie är spänningsfallet över varje motstånd i proportion till resistorns storlek. Om du har spänning V över en krets av R (1) + R (2), då V = V (1) + V (2). Så om V = 3V och V (2) = 2V, vet du att V (1) = 1V. Nu är grunden för Ohms lag att strömmen (I) är V/R. I en seriekrets är strömmen densamma hela, så strömmen genom A och B är densamma för hela kretsen. Därför I = V1/R1 = V2/R2. Vi vet V2 = V - V1, Anslutning, vi ser V1/R1 = (V -V1)/R2. När vi löser får vi R2 = R1*(V-V1)/V1 Så om vi vet om vi känner till V (1), V och R (2) kan vi lösa för R2. Om vi har R2 vet vi värdet på Termistor!
Steg 4: Vad är en termistor?
En termistor är ett motstånd som ändrar motstånd med temperaturen. Med hjälp av teknikerna från spänningsdelaren för att bestämma motståndet kan vi berätta vilken temperatur det är. Problemet är att jag har en billig termistor i ett hölje från en 10 år gammal produkt. Hur skulle jag kunna skapa en funktion för att gå från ett motstånd till en temperatur? Jag har en termometer som den kan anslutas till! Så jag mätte mycket. Jag kopierade ner temperaturen och mätte sedan motståndet hos termistorn. Jag ställde den i kylen, sedan placerade jag den i varmt vatten. Senare skulle jag ta tag i rumstemperaturer sedan jag hade tid. Jag antog att jag kunde ha läst Wikipedia plage kan försöka gissa a- och b-faktorerna, men jag antog att jag använde en icke-linjär, möjligen felaktig komponent som inte längre matchade tillverkningen specifikationer. Åh och jag är lat. Så jag dumpade alla värden i Excel, och sedan ritade det. Jag var ursprungligen orolig för att jag var tvungen att komma ihåg den djupa mörka matematiken om något som "minst kvadratisk passform" när jag upptäckte att Excell kommer att göra detta för Jag saknar uppenbarligen luckor i grafen, men jag har massor av bra data kring badtemperaturer (100-105F). Medan jag kontrollerade rumstemperaturområdena märkte jag något som nästan gör mitt arbete värdelöst. Termometern "Precise Temp" rapporterade ett 3-7 graders fel mellan "inomhus" och "utomhus" när termistorn var centimeter bort! Nu kan det bero på att jag blandade och matchade termistorn mellan enheterna, men jag satsar på att det har mer att göra med kvaliteten på en 10 -årig, $ 10 -artikel & Oavsett temperaturens "noggrannhet" behövde jag precision och flera tester av samma intervall visade mycket nära resultat under dagar. På sikt kommer jag sannolikt att fästa termistorn till ett rör som leder in i badtunnan, så jag kommer behöva en förskjutning ändå. Så genom att få Excel att visa ekvationen sätter jag in den i koden, och så långt är det " stänga."
Steg 5: Sändarkrets
Sändarkretsen är enkel. Jag valde ett 100 kOhm motstånd för R2 eftersom det såg ut som om det skulle passa intervallet från grafen, och jag hade ett extra från att avlödda olika saker med Minions. Jag ansluter detta i serie med termistorn via en kontakt. Sedan lade jag till ett batteri. Jag körde 3 V till VREF och toppen av spänningsdelaren och till Xbee +3V -ingången. Jag satte GND (Battery Negative) till GND -ingången och till botten av avdelaren. Jag kopplade sedan AD0 (volt in) till mitten av spänningsdelaren.
AD0 läser en relativ spänning från VREF till V (1). Så när batteriet sjunker bör den relativa spänningen minska samma. Så småningom kommer jag att driva enheten med en lokal strömkälla. Den färdiga enheten fungerade bra, vi ansluter allt med krokodilklämmor, vilket gjorde det skört. Efter att jag fick den kvinnliga 3/32 "-anslutningen placerade jag sändaren i ett slumpmässigt plastkar som vi hade (en ex-hummusbehållare). Detta bör skydda det från väder. Eftersom jag köpte" panelmonterade "kontakter var det lika enkelt som att borra ett hål i plasten för att lägga till kontakten på utsidan med en ganska vattentät anslutning. När vi hade det var det dags att testa.
Steg 6: Hem, hem, har inget intervall
En av de första sakerna vi märkte var att intervallet dog en fruktansvärd död så snart vi gick ut från kontoret med sändaren. Vi försökte från ett annat rum, och resultaten var fruktansvärda. 1 fot därifrån skakade det. Dags att titta på lösningar. Det gick upp för mig att där vi testade hade vi 4 källor till Wi Fi inom 5 fot, alla i 2,5 GHz -intervallet som Xbee. Vi siktade inte alls på Xbee. Efter undersökning bestämmer jag att jag skulle kunna köpa en mer kraftfull Xbee-radio (cirka $ 23) eller lägga till antenner. En av de saker jag behövde var ett bra intervalltest. X-CTU-programvaran från Digi har ett "Range Test" inbyggt, men det gjorde inget. Jag ägnade lite tid åt att försöka ta reda på hur det skulle få det att fungera. Egentligen var detta lika lättare gjort än sagt. Jag behövde egentligen inte X-CTU-testet, bara "RX Signal Strength Indicator" (RSSI) värde. Jag tittade i xbee.pyTweet-A-Watt använder och precis där, rad 39: [kod] self.rssi = p [3] [/kod] Vilket betyder att det är en del av Xbee -returvärdet! (xb.rssi i wattcher), så jag ändrade en felsökningsrad för mitt hack: print str (counter) + ": RSSI:" + str (xb.rssi) + "| " + time.strftime (" %Y %m %d, %H: %M ") +", " +": Spänning: " + str (CalcualtedVolts) +" avgv " + str (avgv) +" Thermistor: " + str (x) + "Temperatur:" + str (Temperatur) Som producerar en linje så här: 373: RSSI: 82 | 2009 04 26, 11:18,: Spänning: 1.80100585938 avgv 593 Termistor: 71.2276559865 Temperatur: 78.6813444881 Du kan se även RSSI med bearbetning, från Tom's Igoes sida. Även om du vill ändra paketlängden (högst upp), eftersom Processing klagade över att skriva förbi slutet av paketbuffertstorleken. Jag tror att du måste vara större än 2 * förväntat paketlängd. Toms kod ser bakåt för ett tidigare paket vilket innebär att om det saknar Ox7E -paketindikatorn kan det köra en stund. Eftersom jag är nära ytterkanten av mätområdet kan det hända ett tag. Jag ställde in min till 600 och det slutade ge mig meddelandet "fel, inaktivera serialEvent ()". Tom's kod skriver bara ut den senaste inställningen, vilket inte är så användbart för mig. Min felsökningsrad låter mig spåra ändras när Minion #1 undrar runt. Nu hade vi ett bra sätt att mäta, mer än "hej pappa vi har ett paket" var det dags att prova några hembryggningsantennidéer! Genom att använda idéer från https://www.usbwifi.orconhosting.net.nz/ har jag funnit att hörnkuben mätte en minskning av dB, men i praktiken tycktes det inte hjälpa att ansluta ett frånkopplat par. Vegatible Steamer var faktiskt bäst på att sikta och återansluta. USB Wifi: s inställningar skiljer sig mycket från andra. Ångarna har en stjälk i mitten vilket gör det enkelt att placera XBee. En pho -skål med tennfolie ser också lovande ut (även om vi bara tog bort tennfolien senare och höll den på plats). Vi försökte också göra en parabel med en böjande bit heta hjul "spår", men det verkade inte hjälpa. Ett av problemen är att vi testade vid ytterkanten av intervallet. De flesta 2,5 GHz -radio, speciellt XBee, använder spread Spectrum vilket innebär att de kan ta ett tag för att "synkronisera" och sedan letar XBee -programvaran efter början av ett XBee -paket före trigger. Det betyder att om du får en allt eller ingenting effekt. Antingen låser radioapparaterna på varandra eller inte. Ibland verkar det som tur, men i själva verket är du en antenn i dessa intervall och kan påverka resultaten. Jag gick för att köpa två ångbåtar men fann sedan att kostnaden för en ångbåt från den lokala stormarknaden var $ 10, och för priset av två ångbåtar kan jag få en kraftfullare XBee. Så jag tittade på några fler ställen och hittade en ganska djup sil som har blivit ännu bättre. Det var $ 7. Jag tror att djupet är viktigt, eftersom jag är på överföringsänden av saker, det speglar mer av signalen (enligt anteckningarna i https://www.usbwifi.orconhosting.net.nz/number13.jpg). Slutresultat, är att med en grönsaksångare i ena änden (som ska bytas ut) och en sil i den andra har jag en signal om 20-30 m, från ett inre kontor, genom 3-4 väggar, ut till badtunnan! Pro-tips: Kom ihåg att ta in silen om du vill 1) Din make ska stanna, och/eller 2) Vill ha ångade grönsaker senare. Personligen gillar jag grönsaksångarens kronbladliknande utseende.
Steg 7: Programvara
Från och med Tweet-A-Wattsoftware började jag hacka bort pythonkoden. För det mesta behövde jag ta bort Watts-konverteringen, historikfunktionerna och sedan behövde jag lägga till ett antal dividera med 0-skydd (Tweet-A-Watt antar att paket kommer att ha data). Jag lade sedan till formeln från Excel i programmet Jag testade att skriva ut varje paket och jag har massor av felsökning i koden för att få problem. Jag försökte få grafdelen att fungera, men jag gav upp vilket leder mig till: Python Rant: Det här är andra gången jag har försökte göra ett större projekt i Python. Jag kunde inte få alla bibliotekens beroenden och baspaket att fungera på mindre än 20 timmar i Windows, Windows 64, Ubuntu och Fedora. Jag fick äntligen bygga nästan allt från grunden och även då fungerade vissa funktioner inte. Jag försökte 2.4, 2.5, 2.6 och olika 3. X -versioner och sedan versioner av varje bibliotek, som i sin tur hade beroenden på andra paket. Medan andra kan ha rantar mot språket tyckte jag bara att installationen, även om jag använde många av de "enkla installatörerna" var i bästa fall skrämmande! Efter att jag beräknat temperaturen gjorde jag en 1 graders justering, eftersom jag inte kunde tro att badtunna var vid 106F. Jag tror verkligen inte att det är på 105 heller. Jag twittrade sedan på rapporterings- och twitterlogiken. Eftersom jag inte är säker på om jag kommer att få paket, eller bra paket, valde jag att rapportera tempen en gång i timmen. Jag antar att jag kommer att minska det om ett tag. För närvarande körs skriptet som en vanlig användare. Jag kommer att vilja flytta den till en tjänst så småningom.
Steg 8: Nästa steg
Det finns några uppenbara nästa steg:
1) Byt ut grönsaksilen a. Minions behöver sina grönsaker! b. Den var i alla fall gammal. 2) Placera Hot Tub -antennen under däck a. Däcket kan göra det ännu "längre" men det kommer att möjliggöra en fulare installation. b. Jag kan sedan köra termistorn till undersidan och hitta en bättre plats. 3) Lägg till fler sensorer a. Den enkla är en yttre temperaturgivare. b. Men det finns ingen anledning till att vi inte kunde upptäcka kontrollpanelernas tillstånd, i synnerhet värmesensorn som magiskt blir rörd när barnen är över. c. Andra vädersensorer (vind, luftfuktighet, etc.) d. Det skulle vara trevligt att styra badtunnan och jag kunde stänga av uppvärmning under stora delar av natten och dagen. 4) Jag kan justera programvaran a. Minions vill redan ha bättre meddelanden per temperatur. b. Vi borde kunna svara på svar och DM. c. Jag borde twittra mer intelligent (mindre än en gång i timmen). d. Jag har några andra roliga saker planerade.
Rekommenderad:
Arduino Car Reverse Parking Alert System - Steg för steg: 4 steg
Arduino Car Reverse Parking Alert System | Steg för steg: I det här projektet kommer jag att utforma en enkel Arduino Car Reverse Parking Sensor Circuit med Arduino UNO och HC-SR04 Ultrasonic Sensor. Detta Arduino -baserade bilomvändningsvarningssystem kan användas för autonom navigering, robotavstånd och andra
Steg för steg PC -byggnad: 9 steg
Steg för steg PC -byggnad: Tillbehör: Hårdvara: ModerkortCPU & CPU -kylarePSU (strömförsörjningsenhet) Lagring (HDD/SSD) RAMGPU (krävs inte) CaseTools: Skruvmejsel ESD -armband/mathermisk pasta med applikator
Tre högtalarkretsar -- Steg-för-steg handledning: 3 steg
Tre högtalarkretsar || Steg-för-steg-handledning: Högtalarkretsen förstärker ljudsignalerna som tas emot från miljön till MIC och skickar den till högtalaren varifrån förstärkt ljud produceras. Här visar jag dig tre olika sätt att göra denna högtalarkrets med:
Steg-för-steg-utbildning i robotik med ett kit: 6 steg
Steg-för-steg-utbildning i robotik med ett kit: Efter ganska många månader av att bygga min egen robot (se alla dessa), och efter att två gånger ha misslyckats med delar, bestämde jag mig för att ta ett steg tillbaka och tänka om min strategi och riktning. De flera månaders erfarenhet var ibland mycket givande och
Akustisk levitation med Arduino Uno Steg-för-steg (8-steg): 8 steg
Akustisk levitation med Arduino Uno Steg-för-steg (8-steg): ultraljudsgivare L298N Dc kvinnlig adapter strömförsörjning med en manlig DC-pin Arduino UNOBreadboardHur det fungerar: Först laddar du upp kod till Arduino Uno (det är en mikrokontroller utrustad med digital och analoga portar för att konvertera kod (C ++)