Sommario:

Tweet-A-Temp: 8 passaggi
Tweet-A-Temp: 8 passaggi

Video: Tweet-A-Temp: 8 passaggi

Video: Tweet-A-Temp: 8 passaggi
Video: The Gates of Zadash | Critical Role: THE MIGHTY NEIN | Episode 8 2024, Luglio
Anonim

Di Z0tZot's Homebrew ExperimentsSegui di più dell'autore:

Magic 8 Beer dado a 8 facce
Magic 8 Beer dado a 8 facce
Magic 8 Beer dado a 8 facce
Magic 8 Beer dado a 8 facce

Io e mio figlio maggiore (Minion #1) abbiamo iniziato a costruire un Tweet-A-Watt e non siamo riusciti a seguire correttamente le istruzioni, ovvero abbiamo realizzato entrambi i ricevitori come ricevitori standard invece di uno solo e poi abbiamo popolato per metà il secondo ricevitore XBee. avevamo due scelte, tagliare le parti extra o qualcos'altro. Dato che devo ancora trovare un Kill-A-Watt localmente, e avevo questo termometro esterno/interno che volevo computerizzare da 10 anni, sapevo cosa dovevo fare: dovevo usare il termometro per misurare la temperatura della mia vasca idromassaggio, e poi twittatela! Di recente avevo assegnato a Minion #1 l'incarico di descrivere un controller per vasca idromassaggio senza confini. Ha detto, beh, potremmo renderlo wireless, ma no, è sciocco… mi piace quando un piano decennale si concretizza. Guardalo su Twitter

Passaggio 1: costruisci i ricevitori Xbee

Costruisci i ricevitori Xbee
Costruisci i ricevitori Xbee

Costruisci due ricevitori XBEE. Ho usato i ricevitori di Lady Ada, qualsiasi ricevitore andrà bene. Avrai bisogno di accedere al pin VREF e AD0 dell'XBee. Il trucco per il Tweet-A-Watt è la configurazione. In effetti si imposta uno dei dispositivi fino a ripetere i valori dal Kill-A-Watt con: ATMY=1, SM=4, ST=3, SP=C8, D4=2, D0=2, IT=13, IR=1 Imposta l'indirizzo (1), imposta la modalità di sospensione, il timer e il periodo, quindi imposta i pin 4 e 2 sulla modalità di ingresso analogico (2), che invierà pacchetti 0x13 (19 decimali), 1 ms tra i campioni. Il trucco qui è l'ingresso analogico. È possibile leggere le piccole tensioni (0-5V) direttamente dall'XBee. Nel Tweet-A-Watt imposteresti i pin 4 e 0 per inviare gli Ampere ei Volt misurati dal Kill-A-Watt. In realtà non lo invia, invia la piccola tensione misurata dai chip del Kill-A-Watt al ricevitore XBee che è collegato a un computer. Il software al computer legge costantemente i pacchetti ricevuti e ricalcola la tensione e l'amperaggio effettivi, quindi calcola il Wattaggio.

Passaggio 2: il termometro

Il Termometro
Il Termometro
Il Termometro
Il Termometro
Il Termometro
Il Termometro

Ho comprato due di questi termometri per interni/esterni circa 10 anni fa da home depot. Sono sempre stato affascinato dal fatto che il "termometro" esterno fosse collegato all'unità base con quella che sembrava una presa audio standard. Mi sono sempre chiesto se potevo misurare la temperatura collegandolo a un jack per microfono su un computer.

Si scopre che probabilmente potrei farlo funzionare, ma sarebbe complicato. La spina è in realtà un jack da 3/32 , invece di una spina audio da 1/8. Questa è la spina standard per telefoni cellulari per microfoni esterni. Questo ha presentato un problema in quanto non sono riuscito a trovare alcun connettore per microfono nei miei mucchi di spazzatura che non erano a montaggio superficiale. Ho dovuto acquistare un set da Radio Shack ($ 2), che ha aggiunto un notevole ritardo al progetto (arrivare a una baracca non è stato facile). Ho smontato un'unità prima di rendermi conto improvvisamente di come funzionasse la cosa, era un divisore di tensione! Era ovvio una volta che ci ho pensato. Mi ha reso la vita molto facile.

Passaggio 3: cos'è un divisore di tensione?

Che cos'è un divisore di tensione?
Che cos'è un divisore di tensione?

Uno dei posti migliori per conoscere l'elettronica è Wisconsin Online I divisori sono spiegati in quella pagina (in basso a destra), oppure puoi visitare la pagina Wikipedia sulla tensione. In breve, se hai due resistori in serie, la caduta di tensione su ciascun resistore è proporzionalmente alla grandezza del resistore. Se hai la tensione V attraverso un circuito di R(1) + R(2), allora V = V(1) + V(2). Quindi se V=3V e V(2) = 2V, sai che V(1) = 1V. Ora la base della legge di Ohm è che la corrente (I) è V/R. In un circuito in serie, la corrente è la stessa in tutto, quindi la corrente attraverso A e B è la stessa per l'intero circuito. Quindi I = V1/R1 = V2/R2. Conosciamo V2 = V - V1, Inserendo, vediamo V1/R1 = (V-V1)/R2. Risolvendo otteniamo R2 = R1*(V-V1)/V1 Quindi se sappiamo se conosciamo V(1), V e R(2), possiamo risolvere per R2. Se abbiamo R2, conosciamo il valore di Termistore!

Passaggio 4: cos'è un termistore?

Che cos'è un termistore?
Che cos'è un termistore?

Un termistore è un resistore che cambia resistenza con la temperatura. Usando le tecniche del divisore di tensione per determinare la resistenza, possiamo dire di che temperatura si tratta. Il problema è che ho un termistore economico in un involucro di un prodotto di 10 anni. Come avrei dovuto creare una funzione per passare da una resistenza a una temperatura? Bene, ho un termometro a cui si collega! Quindi ho misurato molto. Ho copiato la temperatura verso il basso e poi ho misurato la resistenza del termistore. L'ho messo in frigo, poi l'ho messo in acqua tiepida. Più tardi avrei preso le temperature della stanza poiché avevo tempo. Suppongo che avrei potuto leggere la plage di Wikipedia può provare a indovinare i fattori a e b, ma ho pensato che stavo usando un componente non lineare, possibile guasto che non corrispondeva più alla produzione specifiche. Oh, e io sono pigro. Quindi ho scaricato tutti i valori in Excel e poi l'ho disegnato graficamente. Inizialmente ero preoccupato di dover ricordare la profonda matematica oscura di qualcosa come "misura minima al quadrato" quando ho scoperto che Excell lo farà per me! Chiaramente mi mancano le lacune nel grafico, ma ho ottenuto molti buoni dati sulle temperature della vasca idromassaggio (100-105F). Durante il controllo degli intervalli di temperatura della stanza ho notato qualcosa, che rende quasi inutile il mio lavoro. Il termometro "Precise Temp" ha riportato un errore di 3-7 gradi tra "interno" ed "esterno" quando il termistore era a pochi centimetri di distanza! Ora questo potrebbe essere dovuto al fatto che ho mescolato e abbinato il termistore tra le unità, ma scommetto che ha più a che fare con la qualità di un oggetto di 10 anni, $ 10 e Indipendentemente dalla "precisione" della temperatura, avevo bisogno di precisione e più test dello stesso ha mostrato risultati molto vicini nel corso dei giorni. A lungo termine probabilmente collegherò il termistore a un tubo che porta nella vasca idromassaggio, quindi avrò comunque bisogno di un offset. Quindi, facendo in modo che Excel visualizzi l'equazione, la inserisco nel codice e finora è " chiudere."

Passaggio 5: circuito del trasmettitore

Circuito del trasmettitore
Circuito del trasmettitore

Il circuito del trasmettitore è semplice. Ho scelto un resistore da 100 kOhm per R2 poiché sembrava che si adattasse alla gamma dal grafico e ne avevo uno di riserva per dissaldare varie cose con i Minion. Lo collego in serie con il termistore tramite un connettore. Poi ho aggiunto un pacco batteria. Ho eseguito 3 V su VREF e la parte superiore del partitore di tensione e sull'ingresso Xbee +3V. Ho messo il GND (Battery Negative) all'ingresso GND e nella parte inferiore del divisore. Ho quindi collegato AD0 (Volt in) al centro del circuito divisore di tensione.

AD0 leggerà una tensione relativa da VREF a V(1). Quindi, man mano che la batteria diminuisce, la tensione relativa dovrebbe diminuire allo stesso modo. Alla fine alimenterò l'unità con una fonte di alimentazione locale. L'unità finita ha funzionato bene, colleghiamo tutto con clip a coccodrillo, che lo hanno reso fragile. Dopo aver ottenuto la connessione femmina da 3/32", ho posizionato il trasmettitore in una vasca di plastica a caso che avevamo (un contenitore ex-hummus). Questo dovrebbe proteggerlo dalle intemperie. Dato che ho acquistato connettori "montaggio a pannello", è stato semplicissimo come praticare un foro nella plastica per aggiungere il connettore all'esterno con una connessione abbastanza a tenuta d'acqua. Una volta che l'abbiamo avuto, è stato il momento di testare.

Passaggio 6: casa, casa, non ha portata

Casa, casa, non ha portata
Casa, casa, non ha portata
Casa, casa, non ha portata
Casa, casa, non ha portata
Casa, casa, non ha portata
Casa, casa, non ha portata

Una delle prime cose che abbiamo notato è che la gamma è morta in modo orribile non appena siamo usciti dall'ufficio con il trasmettitore. Abbiamo provato da un'altra stanza e i risultati sono stati terribili. A 1 metro di distanza è crollato. È ora di esaminare le soluzioni. Mi è venuto in mente che durante i test avevamo 4 fonti di Wi-Fi entro 5 piedi, tutte nella gamma di 2,5 Ghz come l'Xbee. Inoltre non abbiamo "mirato affatto all'Xbee. Dopo aver fatto ricerche ho determinato che potevo acquistare una radio Xbee più potente (circa $ 23) o aggiungere antenne. Una delle cose di cui avevo bisogno era un buon test di portata. Il software X-CTU di Digi ha un "Range Test" integrato, ma non ha fatto nulla. Ho passato un po' di tempo a cercare di capire come farlo funzionare. In realtà questo è stato più facile di quanto detto. Non avevo davvero bisogno del test X-CTU, solo il Valore "RX Signal Strength Indicator" (RSSI). Ho guardato negli usi xbee.pyTweet-A-Watt e proprio lì, la riga 39: [code]self.rssi = p[3][/code]Il che significa che è parte del valore di ritorno di Xbee! (xb.rssi in wattcher), quindi ho modificato una riga di debug per il mio hack: print str(counter) +": RSSI: " + str(xb.rssi) + " | " + time.strftime("%Y %m %d, %H:%M")+ ", " + ": Tensione: " + str(Volts calcolati) + " avgv " + str(avgv) + " Termistore: " + str(x) + " Temperature: " + str(Temperature) Che produce una riga come questa: 373: RSSI: 82 | 2009 04 26, 11:18,: Voltaggio: 1.80100585938 avgv 593 Termistore: 71.2276559865 Temperatura: 78.6813444881 È possibile vedi anche RSSI con l'elaborazione, dalla pagina di Tom's Igoe. Anche se vorrai modificare la lunghezza del pacchetto (in alto), poiché Processing si è lamentato di aver scritto oltre la fine della dimensione del buffer del pacchetto. Credo che tu debba essere maggiore di 2 * previsto lunghezza del pacchetto. Il codice di Tom guarda indietro per un pacchetto precedente, il che significa che se manca l'indicatore del pacchetto Ox7E, potrebbe funzionare per un po'. Dato che sono vicino al bordo esterno del campo di misurazione, può succedere per un po'. Ho impostato il mio su 600 e ha smesso di darmi il messaggio "errore, disabilitazione serialEvent()". cambia mentre Minion #1 si stupisce in giro. Ora avevamo un buon modo per misurare, più che "hey papà abbiamo un pacchetto" era ora di provare alcune idee per le antenne fatte in casa! Usando le idee di https://www.usbwifi.orconhosting.net.nz/ ho scoperto che il Corner Cube ha misurato una diminuzione in dB, anche se in pratica non sembrava aiutare a collegare una coppia disconnessa. Il Vegatible Steamer in realtà era il migliore per mirare e riconnettersi. La configurazione di USB Wifi è molto diversa da quella di altre persone. I piroscafi hanno uno stelo nel mezzo che facilita il posizionamento di XBee. Anche una ciotola di pho con carta stagnola sembra promettente (anche se in seguito abbiamo semplicemente rimosso la carta stagnola e l'abbiamo tenuta in posizione). Abbiamo anche provato a fare una parabola con un pezzo piegato di "pista" di ruote calde, ma non sembrava essere d'aiuto. Uno dei problemi è che stavamo provando al limite esterno della gamma. La maggior parte delle radio a 2,5 Ghz, in particolare XBee, utilizza lo spettro diffuso, il che significa che possono richiedere un ma per "sincronizzarsi" e quindi il software XBee cerca l'inizio di un pacchetto XBee prima del trigger. Questo significa se ottieni un effetto tutto o niente. O le radio si agganciano l'una all'altra oppure no. A volte sembra fortuna, ma in realtà sei un'antenna a queste distanze e puoi influire sui risultati. Sono andato a comprare due piroscafi ma poi ho scoperto che il costo di un piroscafo dal supermercato locale era di $ 10, e al prezzo di 2 piroscafi, posso ottenere un XBee più potente. Quindi ho guardato qualche altro posto e ho trovato un colino piuttosto profondo che si è rivelato ancora migliore. Erano $7. Credo che la profondità sia importante, poiché sono alla fine della trasmissione delle cose, riflette più del segnale (secondo le note in https://www.usbwifi.orconhosting.net.nz/number13.jpg). Risultati finali, è che con un piroscafo di verdure da un lato (da sostituire) e un colino dall'altro, ho un segnale a circa 20-30 m, da un ufficio interno, attraverso 3-4 pareti, fino alla vasca idromassaggio! Consiglio professionale: ricorda per portare il colino se vuoi 1) che il tuo coniuge rimanga, e/o 2) vuoi le verdure al vapore più tardi. Personalmente mi piace l'aspetto simile a un petalo del vapore per verdure.

Passaggio 7: software

Software
Software

A partire dal software Tweet-A-Watt ho iniziato a hackerare il codice Python. Per lo più avevo bisogno di rimuovere la conversione Watts, le funzioni di cronologia, e poi avevo bisogno di aggiungere un numero di protezioni di divisione per 0 (i Tweet-A-Watt presumono che i pacchetti contengano dati). Ho quindi aggiunto la formula da Excel nel programma e testato. L'ho impostato per stampare ogni pacchetto e ho un sacco di debug nel codice per rilevare i problemi. Ho provato a far funzionare la parte grafica, ma ho rinunciato, il che mi porta a: Python Rant: questa è la seconda volta che ho provato a fare un grande progetto in Python. Non sono riuscito a far funzionare tutte le dipendenze delle librerie e i pacchetti di base in meno di 20 ore in Windows, Windows 64, Ubuntu e Fedora. Alla fine ho dovuto costruire quasi tutto da zero e anche allora alcune funzioni non funzionavano. Ho provato la 2.4, 2.5, 2.6 e varie versioni 3. X, e poi le versioni di ogni libreria, che a loro volta avevano dipendenze da altri pacchetti. Mentre altri potrebbero avere declamazioni contro la lingua, ho trovato che la semplice installazione, anche utilizzando molti degli "installatori facili" sia scoraggiante nel migliore dei casi! Dopo aver calcolato le temperature, ho fatto una regolazione di 1 grado, perché non potevo credere alla vasca idromassaggio era a 106F. Non credo proprio che sia nemmeno a 105. Ho quindi modificato la logica di segnalazione e twitter. Dal momento che non sono sicuro di ricevere pacchetti o pacchetti buoni, ho scelto di segnalare la temperatura una volta all'ora. Presumo che lo ridurrò tra un po'. Attualmente lo script è in esecuzione come utente normale. Alla fine vorrò spostarlo in un servizio.

Passaggio 8: passaggi successivi

Ci sono alcuni ovvi passaggi successivi:

1) Sostituire il colino per verdure a. I minion hanno bisogno delle loro verdure! B. Quello era comunque vecchio. 2) Posizionare l'antenna della vasca idromassaggio sotto il ponte a. Il mazzo potrebbe renderlo ancora "più lontano" ma consentirà una configurazione più brutta. B. Posso quindi eseguire il termistore sul lato inferiore e trovare un punto migliore. 3) Aggiungere più sensori a. Quello facile è un sensore di temperatura esterna. B. Ma non c'è motivo per cui non abbiamo potuto rilevare lo stato dei pannelli di controllo, in particolare il sensore di calore che viene magicamente toccato quando i bambini sono finiti. C. Altri sensori meteorologici (vento, umidità, ecc.) d. Sarebbe bello controllare la vasca idromassaggio e potrei spegnere il riscaldamento per gran parte della notte e del giorno. 4) Posso regolare il software a. I minion vogliono già messaggi migliori per temperatura. B. Dovremmo essere in grado di rispondere alle risposte e ai messaggi diretti. C. Dovrei twittare in modo più intelligente (meno di una volta all'ora). D. Ho in programma altre cose divertenti.

Consigliato: