COME: Creare un "Net data meter" - 💡 Fix My Ideas

COME: Creare un "Net data meter"

COME: Creare un "Net data meter"


Autore: Ethan Holmes, 2019

Il voltmetro antico mostra la qualità dell'aria corrente dal web - Di Tom Igoe ...

Una cosa che mi delude del computer è quanto poco personaggio posseggono. Strumenti antichi di visualizzazione delle informazioni, come orologi a pendolo vittoriani, barometri e compassi, e i motori di calcolo di Babbage, hanno una presenza che i computer moderni non hanno.

Scavo l'aspetto dell'iPod quanto il prossimo, ma anche il miglior design di produzione oggi non corrisponde a quel vecchio amore artigianale in ottone e legno duro. I widget del desktop sostituiscono la necessità di orologi, barometri e tondi di riserva, e l'hardware di visualizzazione multiuso come l'Ambient Orb svolge anche queste funzioni. Ma poiché queste cose hanno poca presenza e sono così facilmente riconfigurate, è facile dimenticare quali informazioni stanno visualizzando. L'improvviso tuffo del misuratore significa che il mio titolo Google sarà sprecato o che domani pioverà?

Molti fanatici, me compreso, resistono a questa tendenza collezionando fanaticamente vecchi strumenti per motivi estetici. Ho giocato con l'uso di strumenti antichi per visualizzare dati da nuove fonti. Ho degli splendidi voltmetri e amperometri rivestiti di legno degli inizi del XX secolo, che ho salvato dalla spazzatura del dipartimento di fisica della mia università. Funzionano abbastanza bene, ma non sono portatili come il mio attuale multimetro, quindi non li stavo usando, il che è una tragedia per strumenti così orgogliosi e funzionali. Così ho deciso di prendere spunto da Ambient Devices (ambientdevices.com) e trasformarne uno in un monitor di qualità dell'aria.

Per prima cosa, ho inventato il sistema di base. Il contatore che ho usato è un voltmetro analogico che va da 0-3V DC. Questa è una buona gamma da controllare da un microcontrollore, quindi ho deciso di utilizzare il mio attuale modulo microcontrollore preferito, Arduino (arduino.cc). La creazione di una stazione di monitoraggio della qualità dell'aria mi sembrava più di quanto volessi fare, ma fortunatamente i dati per le aree locali di tutti gli Stati Uniti sono disponibili online.

AirNow (airnow.gov) è un sito Web interagenzia che riporta l'indice di qualità dell'aria (AQI) dalle stazioni di monitoraggio locali a livello nazionale. Connetterei il microcontrollore a Internet utilizzando un modulo seriale-Ethernet Lantronix (lantronix.com), quindi estraggo i dati dalla pagina di AirNow per la mia città, New York City.

Modulazione della larghezza di impulso

La disposizione del sistema aveva senso (Figura A), ma il microcontrollore doveva inviare una tensione variabile al misuratore ei microcontrollori non potevano emettere tensioni analogiche. Possono, tuttavia, generare una serie di impulsi on-and-off molto rapidi che possono essere filtrati per fornire una tensione media. Maggiore è il rapporto tra tempo di attivazione e tempo morto in ciascun impulso, maggiore è la tensione media (figura B). Questa tecnica è chiamata modulazione della larghezza d'impulso (PWM).

Affinché un segnale PWM appaia come un segnale analogico, il dispositivo che riceve gli impulsi deve reagire più lentamente rispetto alla frequenza del polso. Ad esempio, è possibile modulare la larghezza di impulso di un effetto di attenuazione per un LED poiché l'occhio umano non è in grado di rilevare transizioni on-off più veloci di circa 30Hz.

I voltmetri analogici sono lenti a reagire a variazioni di voltaggio, quindi il PWM funzionerà bene anche per il nostro display antico. Per guidare il misuratore, collegherei il suo terminale positivo a un pin di uscita del microcontrollore e il suo pin negativo a terra. Quindi ho potuto controllare la sua lettura mediante la larghezza dell'impulso modulando il pin di uscita del micro.

Scala 1: 1

Il display del misuratore legge da 0 a 150 e l'AQI va da 0 a 500. Ma l'EPA considera l'aria che misura 150 come "malsano per tutti gli individui", quindi ho deciso di impostare il mio misuratore per mostrare l'AQI grezzo, senza qualsiasi ridimensionamento. Se vedo l'ago ancorato all'estremità superiore, saprò che non dovrei respirare.

Analisi della pagina AirNow

Il passo successivo era ottenere i dati dal sito Web di AirNow in una forma che il microcontrollore potesse leggere. Il microcontrollore può facilmente leggere in stringhe brevi e convertire l'ASCII in binario, ma sarebbe difficile analizzare tutto il testo su una pagina Web e trovare la stringa giusta. Così ho deciso di scrivere un programma sul mio server che analizzasse la pagina di AirNow, estraeva solo l'attuale lettura di AQI per New York e la salvavo da qualche parte dove il microcontrollore poteva leggerla. Il microcontrollore potrebbe quindi richiedere una connessione TCP tramite il convertitore seriale-Ethernet e leggere i dati.

La pagina di AirNow è formattata bene per estrarre i dati (Figura C). Il numero AQI è mostrato chiaramente nel testo, e se rimuovi tutti i tag HTML dall'origine della pagina, appare sempre su una riga da solo seguendo la riga "AQI osservata in hh: mm AM / PM:". Ho scritto un breve script PHP per leggere la pagina, rimuovere l'HTML e trovare quelle due righe. Quando è stato eseguito, ha restituito il valore AQI da solo in questo modo:

< AQI: 43>

Sul mio server, un processo cron esegue periodicamente lo script PHP e scrive il valore restituito in un file accessibile tramite HTTP (Hypertext Transport Protocol).

Interfaccia seriale-Ethernet

Il passo successivo è stato quello di collegare il microcontrollore al convertitore seriale-Ethernet e quindi alla rete. Ho usato il dispositivo Xport di Lantronix, il che lo rende facile. Come altri dispositivi Lantronix, Xport ha uno stack TCP / IP e interfacce web e telnet semplici integrate sul lato Ethernet. Sul lato seriale, utilizza lo stesso protocollo seriale TTL della maggior parte dei microcontrollori, incluso Arduino, quindi collegarli significa semplicemente collegare la linea di trasmissione del micro alla linea di ricezione del convertitore e viceversa (Figura E). Ho usato un Xport per questo progetto perché avevo un circuito stampato personalizzato progettato per questo, ma se sei nuovo a questi dispositivi, potresti voler iniziare con Lantronix Micro. Il Micro ha un connettore più semplice e può essere collegato a una breadboard senza saldatura con un connettore IDE e un cavo a nastro.

Prima di poter connettere il dispositivo Lantronix alla rete, è necessario configurarlo. Lantronix ha un'utilità di configurazione scaricabile per Windows, DeviceInstaller. Per gli utenti non Windows ho un paio di programmi che faranno il lavoro (uno per Java, uno per l'elaborazione) disponibili online su makezine.com/11/diycircuits_meter.

Su una rete con DHCP abilitato, i dispositivi Lantronix otterranno automaticamente un indirizzo. Una volta che conosci l'indirizzo del dispositivo, puoi collegarti a Telnet per configurare la porta seriale e le impostazioni di rete. Ecco le impostazioni che ho usato per questo progetto:

*** Parametri di base IP addr 192.168.0.23, gateway 192.168.0.1, maschera di rete 255.255.255.000 (8 bit) *** Canale 1 Baudrate 9600, I / F Mode 4C, Flow 00 Port 10001 IP remoto: --- none ---, Porta 00000 Modalità di connessione: D4 Modalità disconnessione: 00 Modalità lavaggio: 00

Comunicazioni e codice

Il microcontrollore si collega quindi a un server Web inviando al dispositivo Lantronix una stringa di connessione che specifica l'indirizzo numerico del server e il numero di porta:

C204.15.193.131 / 80

Una volta stabilita una connessione, il dispositivo Lantronix restituisce una "C" per confermare. Dopodiché, tutti i dati inviati in entrambe le direzioni passano direttamente tra microcontrollore e server, come attraverso una connessione seriale.

Il codice completo Arduino per il mio microcontrollore è online su makezine.com/11/diycircuits_meter. Si connette alla rete con un metodo come questo:

void xportConnect () {// invia l'indirizzo del server e // aspetta che venga restituito un byte "C". // inserisci l'indirizzo numerico del tuo server di seguito: Serial.print ("C204.193.131 / 80"); stato = connessione; }

Quindi attende che il dispositivo Lantronix ritorni con una "C":

if (stato == connessione) {// legge la porta seriale: if (Serial.available ()) {inByte = Serial.read (); if (inByte == 67) {// 'C' in stato ascii = connesso; }}}

Una volta connesso, invia una richiesta HTTP come questa:

void httpRequest () {// Effettua richiesta HTTP GET. Compila il percorso della tua versione // dello script CGI: Serial.print ("GET / ~ myaccount / scraper.php HTTP / 1.1n"); // Inserisci il nome del tuo server: Serial.print ("HOST: www.myserver.comnn"); stato = richiedente; }

E il server risponde:

HTTP / 1.1 200 OK Data: Ven, 14 Apr 2006 21:31:37 GMT Server: Apache / 2.0.52 (Red Hat) Content-Length: 10 Connection: close Content-Type: text / html; charset = UTF-8 <AQI: 65>

Quando chiami questo script PHP da un browser, non vedi l'intestazione nella parte superiore perché il browser lo toglie. Nel programma Arduino, ho eliminato l'intestazione ignorando tutti i byte prima del <segno. Quindi ho preso solo i caratteri numerici dalla stringa rimanente, li ho convertiti in un valore binario e avevo il mio valore di indice di qualità dell'aria.

Il passo finale è stato quello di modulare l'ampiezza dell'impulso. Questo è semplice in Arduino, usando il comando Write analogico:

void setMeter (int desiredValue) {int airQualityValue = 0; // se il valore non pegging il misuratore, convertirlo // nella scala dello strumento e inviarlo: if (valore desiderato <= meterScale) {airQualityValue = desiredValue * meterMax / meterScale; scrittura analogica (meterPin, airQualityValue); }}

Das Blinkenlights

Come tocco finale, ho aggiunto i LED a 4 delle uscite digitali di Arduino in modo da poter monitorare lo stato della connessione. I LED che pendono dai pin I / O digitali di Arduino 6-9 indicano rispettivamente lo stato Disconnected, Connected, Connecting e Requesting.

Questo è tutto ciò che c'è da fare! L'unico passo rimanente è costruire una base falsa per il contatore che ospita l'elettronica. Una volta fatto, hai un modo interessante per tenere traccia della qualità dell'aria locale, e hai rimesso in funzione uno strumento ben fatto.


Tom Igoe insegna informatica fisica e sviluppo di tecnologie sostenibili al Interactive Telecommunications Program (ITP) presso la NYU. Spera un giorno di lavorare con le scimmie.


Riferimenti:

Crea: Arduino Arduino Starter Kit Guida introduttiva ad Arduino

http://airnow.gov

http://ambientdevices.com

http://arduino.cc

http://lantronix.com

https://makezine.com/11/diycircuits_meter

http://itp.nyu.edu/itp/


Da MAKE 11 - Pagina 133. Per ottenere MAKE, iscriversi o acquistare singoli volumi.



Si Può Essere Interessati

Questa settimana in lavorazione: pizze piccoline e robot a quattro zampe

Questa settimana in lavorazione: pizze piccoline e robot a quattro zampe


Come tagliare angoli precisi con una scatola di mitra

Come tagliare angoli precisi con una scatola di mitra


5 Hacks e Mods per aggiornamenti personalizzati della stampante 3D (da facile a folle)

5 Hacks e Mods per aggiornamenti personalizzati della stampante 3D (da facile a folle)


Questo Custom Synth Pack nel Sound con 200 moduli

Questo Custom Synth Pack nel Sound con 200 moduli






Messaggi Recenti