Taula de continguts:

Visualització de temperatura i humitat i recollida de dades amb Arduino i processament: 13 passos (amb imatges)
Visualització de temperatura i humitat i recollida de dades amb Arduino i processament: 13 passos (amb imatges)

Vídeo: Visualització de temperatura i humitat i recollida de dades amb Arduino i processament: 13 passos (amb imatges)

Vídeo: Visualització de temperatura i humitat i recollida de dades amb Arduino i processament: 13 passos (amb imatges)
Vídeo: Jornada “Monitorant el Pirineu: recursos hídrics i riscos naturals enfront del canvi climàtic” 2024, Desembre
Anonim
Visualització de temperatura i humitat i recopilació de dades amb Arduino i processament
Visualització de temperatura i humitat i recopilació de dades amb Arduino i processament

Introducció: es tracta d’un projecte que utilitza una placa Arduino, un sensor (DHT11), un ordinador Windows i un programa de processament (que es pot descarregar gratuïtament) per mostrar les dades de temperatura, humitat en forma de gràfics digitals i de barres, mostrar l’hora i la data i fer un recompte temporitzador durant el programa i registreu totes les dades en format.csv quan el programa estigui tancat.

Inspiració:

Primer he de dir que sóc un principiant total i que he après molt d’aquest projecte. Per tant, intento escriure aquest instructiu per ser llegit i entès per un principiant total.

Havia vist diversos projectes Arduino per mesurar la temperatura i la humitat, però volia un programa que:

1) Mesura de la temperatura i la humitat

2) Vaig mostrar les dades tant en un gràfic (vaig triar un gràfic de barres) com en forma digital

3) Té una funció de rellotge

4) Té un temporitzador de temps d'execució

5) Desa aquestes dades en un format de fitxer.csv (excel).

Em vaig inspirar en programes creats per Sowmith Mandadi, R-B i aaakash3, però cap d’ells era exactament el que volia. Així que vaig aprendre a escriure algun codi bàsic i vaig fer el que volia.

Pas 1: què necessiteu:

Què necessitareu
Què necessitareu
Què necessitareu
Què necessitareu

Parts i materials: * Ordinador: he utilitzat un sistema operatiu Windows 10 amb un equip Windows

(Estic segur que es podria utilitzar Linux o Mac, simplement no en tinc cap, de manera que no tractaré com utilitzar aquests sistemes operatius)

* Taula Arduino: he utilitzat una placa Arduino Uno, però qualsevol placa Arduino amb USB sí

* Cable USB -Cable A / B USB-igual que el "cable d'impressora" de tipus antic (normalment inclou la placa Arduino)

* Sensor de temperatura / humitat DHT 11: barat de 4 a 8 dòlars

(Nota: hi ha 2 versions que he utilitzat la versió de 3 pins, la versió de 4 pins requerirà l'ús d'una placa de resolució i una resistència de 10 K, el 3 pins té una placa de circuit imprès que inclou la resistència de 10 K) vegeu els diagrames de Fritzing en els passos següents

* Cable de connexió

Cables Dupont (dobles extrems femella) si es connecten a DHT11 de 3 pins sense taulers de suport

Cables M / F de pont estàndard (un extrem masculí un extrem femella) i cables de pont M / M (ambdós extrems mascle) per connectar DHT11 de 4 pins. Consulteu el pas 2 per obtenir més informació.

* Arduino IDE: un programa per escriure programes Arduino (anomenats croquis) gratuït @

www.arduino.cc/ca/Main/Software

* Processament: un programa per escriure esbossos de processament gratuïtament @

processing.org/download/

* Fitxer "DHTLib": un fitxer de biblioteca (es tracta d'un fitxer que entra al programa Arduino IDE a la carpeta anomenada "Biblioteca"), caldrà afegir-lo a l'esbós d'Arduino abans que l'Arduino pugui llegir les dades del DHT11. Vegeu pas 5 per descarregar el fitxer i les instruccions

Pas 2: connecteu Arduino a DHT11

Connecteu Arduino a DHT11
Connecteu Arduino a DHT11
Connecteu Arduino a DHT11
Connecteu Arduino a DHT11
Connecteu Arduino a DHT11
Connecteu Arduino a DHT11
Connecteu Arduino a DHT11
Connecteu Arduino a DHT11

Primer determineu quin DHT11 teniu

He utilitzat el pin de 3 ja que ja té la resistència necessària de 10K.

Si teniu els 4 pins, necessitareu una resistència de 10 K i una placa de control

Connecteu DHT11 a la placa Arduino. Aquest programa demana que es connecti el pin de senyal DHT 11 al pin Arduino # 7, el pin Pos (+) connectat a 5V a Arduino i Neg (-) a GND a Arduino.

Consulteu Diagrames i diagrames Fritzing

Pas 3: descarregueu Arduino IDE

Descarregueu Arduino IDE
Descarregueu Arduino IDE

Descarregueu Arduino IDE i instal·leu-lo a l'ordinador

www.arduino.cc/ca/Main/Software

Pas 4: connecteu Arduino a l'ordinador

Connecteu Arduino a l'ordinador
Connecteu Arduino a l'ordinador

Instal·leu primer l'IDE Arduino, que té controladors per a la connexió USB Arduino.

Connecteu Arduino a l'ordinador mitjançant USB.

Espereu fins que l’ordinador reconegui la placa Arduino i instal·leu els controladors.

Obriu el programa IDE i comproveu si hi ha connexió en sèrie.

Si la placa Arduino no apareix a Eines> port (cercle vermell), tanqueu l'IDE i torneu a obrir-lo.

* Important * un cop l'IDE estigui obert i la placa Arduino estigui connectada mitjançant USB. La placa Arduino ha d’estar connectada al port sèrie correcte. Als ordinadors Windows, això es coneix com a port COM. Per fer-ho a l’IDE, aneu a Eines> Port:> ports sèrie. Com es veu al diagrama, el port sèrie (cercle vermell) ha de coincidir amb el port que apareix a l'extrem inferior dret del programa IDE (cercle groc).

Pas 5: carregueu la biblioteca

Carregueu la biblioteca
Carregueu la biblioteca
Carregueu la biblioteca
Carregueu la biblioteca
Carregueu la biblioteca
Carregueu la biblioteca
Carregueu la biblioteca
Carregueu la biblioteca

Carregueu la biblioteca del DHT11. Això em va confondre al principi, però és realment senzill.

Baixeu-vos el fitxer anomenat "DHTLib" i descomprimiu-lo. Copieu el fitxer descomprimit "DHTLib".

Podeu trobar referència a aquesta biblioteca a:

playground.arduino.cc/Main/DHTLib

(Va ser escrit per Rob Tillaart basat en treballs d'altres)

Cerqueu la carpeta Arduino a l'ordinador i obriu-la. (Serà allà on hagueu descarregat l'IDE i l'heu instal·lat a l'ordinador)

Vegeu l’esquema

Cerqueu el fitxer anomenat "biblioteques" i obriu-lo i enganxeu la carpeta "DHTLib" al fitxer "biblioteques". Tanqueu-lo i reinicieu l'IDE.

Vegeu l’esquema

Un cop l'IDE s'ha tornat a obrir, podeu comprovar que la biblioteca DHT s'hagi instal·lat. Esbós> Inclou biblioteca.

Vegeu l’esquema

Nota Si feu clic a DHTLib a la pestanya "inclou biblioteca", la biblioteca es col·locarà al codi Arduino com a "#include dht.h".

No cal que ho feu perquè ja es troba al codi que baixareu al pas següent.

Pas 6: Obteniu el codi Arduino

Obteniu el codi Arduino
Obteniu el codi Arduino

Baixeu-vos el fitxer Temp_Hum_Instructable.zip i descomprimiu-lo. Obriu Temp_Hum_Instructable.ino amb l'IDE Arduino.

Alternativament, mireu el codi següent i copieu i enganxeu o escriviu exactament a l’IDE Arduino:

#incloure

dht DHT; #define DHT11PIN 7 // defineix el pin 7 per a la connexió del senyal DHT11 void setup () {Serial.begin (9600); // obre sèrie} bucle buit () {int chk = DHT.read11 (DHT11PIN); // llegeix DHT11 Serial.print (DHT.temperature, 0); // imprimeix temp en sèrie Serial.print (","); // imprimeix comes en sèrie Serial.print (DHT.humidity, 0); // imprimeix humitat en sèrie Serial.println (); // retard de retorn del carro (2000); // espera 2 segons}

Quan hàgiu acabat, hauria de semblar al diagrama anterior

Pas 7: carregueu el codi a Arduino

Carregueu el codi a Arduino
Carregueu el codi a Arduino
Carregueu el codi a Arduino
Carregueu el codi a Arduino
Carregueu el codi a Arduino
Carregueu el codi a Arduino
Carregueu el codi a Arduino
Carregueu el codi a Arduino

Primer, deseu l'esbós a la ubicació i amb un nom que recordareu, per exemple: Temp_Hum.

A continuació, heu de carregar l'esbós a la placa Arduino prement el botó de fletxa apuntant a la dreta (pujar).

Vegeu l’esquema

Això trigarà uns segons; veureu una barra de progrés a la part inferior dreta.

A continuació, veureu: S'ha carregat el missatge a la part inferior esquerra i el text blanc a la part inferior de l'IDE que us explica la memòria

Vegeu l’esquema

Si obteniu un codi d'error (text taronja a la part inferior de l'IDE), hauria de ser un dels següents

  1. La biblioteca "DHTlib" no s'ha copiat correctament
  2. El port COM no està configurat correctament
  3. El sensor no s'ha connectat correctament
  4. El codi no s'ha carregat correctament a l'IDE. Es pot desplaçar el text taronja i donarà una idea del que està malament. Torneu enrere i comproveu que probablement sigui un simple error.

Un cop fet això, mireu de prop la vostra placa Arduino. Cada parell de segons el petit LED al costat de les lletres "TX" parpellejarà. Es tracta de l’Arduino que envia informació de nou a l’ordinador. Per comprovar-ho, feu clic al símbol de la lupa que hi ha a l'extrem superior dret de l'IDE.

Vegeu l’esquema

Això obrirà el monitor sèrie i mostrarà les dades de temperatura i humitat separades per una coma. Notareu que les dades de temperatura apareixen en centígrads. Això sí, ho convertirem a Fahrenheit més tard (o no, si ho decidiu).

Vegeu l’esquema

A continuació, tanqueu el monitor sèrie i tanqueu l'IDE. (Us heu recordat de desar-lo, no?). Ara mireu de nou la placa Arduino (no la desconnecteu de l’USB que és on s’està alimentant i enviant dades al port sèrie de l’ordinador). Encara parpelleja? Sí, genial. Un cop carregat el programa a l'Arduino, s'executarà sempre que tingui energia.

Nota sobre el codi: si mireu el codi Arduino que comença per "void loop ();". Les següents 5 línies de codi indiquen a Arduino que llegeixi les dades del DHT i que les imprimeixi al bus sèrie separades per una coma. La següent línia "delay (2000);" diu a Arduino que espereu 2 segons (2.000 mil·lisegons) per rebre les dades cada 2 segons. Després es torna a "void loop ();": una ordre que indica a Arduino que ho torni a fer. Canviar el valor a la línia de retard canviarà la freqüència amb què es reben les dades. Exemple: canviarà a (600000) a 10 minuts (600.000 mil·lisegons = 10 minuts). La recepció de dades cada 2 segons acaba sent una gran quantitat de dades, de manera que ja sabeu com canviar la freqüència amb què es llegeixen les dades. Recordeu si canvieu el valor més endavant. cal carregar el nou programa.

D’acord, asseu-te i respira, ja estàs a la meitat del camí. Sí !!

Pas 8: baixeu i instal·leu el processament

Baixeu i instal·leu el processament
Baixeu i instal·leu el processament
Baixeu i instal·leu el processament
Baixeu i instal·leu el processament

processing.org/download/

Bastant senzill, seleccioneu el programa que correspongui al vostre ordinador per a Windows de 64 bits contra 32 bits. Si no ho sabeu, obriu el tauler de control de l'ordinador (la visualització d'icones no la vista de categories) i aneu al sistema que s'hi mostrarà.

Vegeu l’esquema

Baixeu-lo i instal·leu el programa.

La primera vegada que obriu i executeu el processament, probablement rebreu un missatge de seguretat Java. Feu clic a "permetre" per a xarxes privades. Java és el llenguatge informàtic utilitzat per Processing (i Arduino IDE). Curiosament, mai no he tingut el missatge de seguretat amb Arduino IDE, només Processant.

Pas 9: processament del codi

Codi de processament
Codi de processament

D'acord ara per al codi de processament.

Aquesta va ser la part més desafiant per a mi, però també la que més oportunitats per aprendre. Tot i que el codi Arduino tenia aproximadament 20 línies, aquest codi té +/- 270 línies al codi principal i altres 70 + a les classes.

Ara el primer que us hauríeu de preguntar és "Què són les classes?". Bona pregunta. Això fa referència a la programació orientada a objectes. En resum, hi ha un munt de coses que passen al codi principal: definició de la mida i el color de la pantalla, un rellotge, un temporitzador, codi per mostrar la ubicació del cursor, codi per desar les dades en un fitxer.csv i algunes línies que tracta del codi que mostra els gràfics de barres. Tot i que l'IDE Arduino tenia tot el codi en una pàgina, aquest codi de processament té tres pestanyes. El primer és el codi principal i els dos següents són el codi que mostra els gràfics de barres. (Aquest codi s'emmagatzema en tres fitxers diferents a la carpeta de codi de processament.) Les pestanyes separades s'anomenen "classes" i es defineixen a les línies 48 i 56 i es mostren a continuació a les línies 179-182 del codi principal. Les persones que van escriure el programa de processament anomenen aquesta programació orientada a objectes. (vegeu: https://processing.org/tutorials/objects/ per obtenir una breu descripció).

Bàsicament, el que fan les classes (Recta1, Recta2) d’aquest codi és crear rectangles que es mouen cap amunt i cap avall en funció de les dades rebudes del DHT11 via sèrie. Penseu que el termòmetre a l’antiga com més alt és el mercuri, més calent és, però això es fa amb dades i no amb mercuri. En realitat, les classes creen quatre rectangles, dos rectangles estàtics que representen el fons del termòmetre i dos rectangles dinàmics que responen a les dades i es mouen cap amunt i cap avall. A més de moure els rectangles, el codi canvia el color del rectangle dinàmic i el color de la pantalla digital de Temp i Humitat en funció de les dades que es rebin per sèrie.

Pas 10: processament de fitxers de codi

Només alguns conceptes bàsics sobre el processament del codi:

Us recomano llegir Make: Getting Started withProcessing per Casey Reas i Ben Fry, els fundadors de Processing.

processing.org/books/#reasfry2

No intentaré explicar tots els aspectes del processament o escriure codi per al processament. Com he dit anteriorment, sóc principiant i crec que hi ha molta gent millor per aprendre. Tanmateix, entenc el codi que he escrit (la prova i l’error són bons professors).

1. Primer cal incloure biblioteques (igual que a Arduino) i declarar variables (línies 1-25)

2. A continuació, configureu el tauler de visualització (línies 27-63)

3. Executeu una part repetida del codi; el que vull dir és que aquesta part del codi es repetirà sempre que el programa estigui en execució. Recordareu In Arduino “void loop ();” (Pas 6). A Processament, això és ara "void draw ();" (Línies 65-184)

4. El següent és obtenir dades del port sèrie i assignar-les a variables (int, float, String)

int-

surar-

Cadena-

(Línies 185-245)

4. Per últim, una manera de tancar el programa i desar les dades (línies 246-271)

D'acord: descarregueu el fitxer Temp_Hum_F_3_2 (per Fahrenheit)

O Temp_Hum_C_3_1 (per centígrads)

i descomprimiu el fitxer. Obre amb Processament.

Pas 11: tipus de lletra en procés

Tipus de lletra en procés
Tipus de lletra en procés

Important: crido la vostra atenció sobre les línies 36-37

36 font = loadFont ("SourceCodePro-Bold-48.vlw"); // carrega la font emmagatzemada a les dades

carpeta 37 textFont (tipus de lletra);

Aquesta biblioteca de tipus de lletra "SourceCodePro-Bold-48.vlw" s'inclou a la baixada de fitxers en procés i no cal canviar-la per funcionar.

No obstant això, per canviar el tipus de lletra a una altra, haureu de carregar el nou tipus de lletra a l'esbós de processament I substituir "SourceCodePro-Bold-48.vlw" pel nou tipus de lletra.

. Per sort, el processament ha facilitat la primera part.

Primer obriu l'esbós a i feu clic a:

Eines> Crea tipus de lletra

això obre una finestra

Veure diagrama

Desplaceu-vos cap avall fins al nou tipus de lletra que vulgueu, feu-hi clic i feu clic a D'acord. La font s'ha carregat a la carpeta d'esbossos.

A continuació, substituïu el text "SourceCodePro-Bold-48.vlw" pel nom exacte de la nova font (inclòs el format de fitxer.vlw)

Si no es fa això, el nou tipus de lletra no es carregarà al codi i el codi donarà errors (igual que els errors d'Arduino, al quadre negre de la part inferior del programa).

Pas 12: Acabar

Acabant
Acabant
Acabant
Acabant
Acabant
Acabant
Acabant
Acabant

Per iniciar el programa de processament, feu clic a la fletxa, podeu rebre un avís de Java. Feu clic a: Permet l'accés.

Vegeu l’esquema

D'acord, va funcionar el programa? Si és així, obtindreu una pantalla com la que es veu al diagrama.

(No? Vegeu la solució de problemes al següent pas)

Sí? Ara intenteu mantenir el DHT11 al palmell tancat o col·loqueu-lo sota el corrent d’aire càlid d’un assecador. Els números haurien de canviar. Sí? Genial. això vol dir que tot funciona bé.

Per tancar el programa i desar dades, feu clic al quadre que diu "Feu clic aquí per tancar i desar dades".

Ara, per trobar les dades desades, aneu a la carpeta Temp_Hum_F_3_1 o Temp_Hum_C_3_1 Processant (ja hauríeu de poder trobar-la pel vostre compte) obriu-la i cerqueu la carpeta Data. Obriu-lo i hauríeu de veure un fitxer.csv que porta el nom de la data i hora en què vau tancar el programa (exemple 1-10-18--22-30-16.csv vol dir 10 de gener de 2018 22:30:16 PM). Obriu-lo amb Excel (o l'equivalent del full de càlcul Open Office). Hauríeu de veure alguna cosa com el diagrama. Columnes de data, hora, temps d'execució, temperatura i humitat amb dades. Ara podeu representar gràficament les dades amb Excel o amb el que vulgueu fer. (Nota: si mireu la primera entrada de dades, les dades de temperatura i humitat no són correctes, això és normal i només és un error quan s'inicia el programa per primera vegada)

D'acord sí !!!!!

Ho vas fer

Si teniu cap pregunta, envieu-ho i faré tot el possible per respondre i ajudar.

Gràcies per estar amb això i molta sort. Espero que això sigui només un començament …..

El següent per a mi Bluetooth i possiblement Android …

Pas 13: resolució de problemes

Resolució de problemes
Resolució de problemes
Resolució de problemes
Resolució de problemes

Problemes d'Arduino

Si obteniu un codi d'error (text taronja a la part inferior de l'IDE), hauria de ser un dels següents: La biblioteca "DHTlib" no s'ha copiat correctament

El port COM no està configurat correctament

El sensor no s'ha connectat correctament

El codi no s'ha carregat correctament a l'IDE

Si sembla que tot Arduino funciona, recordeu d'obrir el monitor sèrie i veure si es mostren dades

Si veieu les dades correctes, això significa que el costat Arduino està funcionant. Recordeu que heu de tancar el monitor sèrie abans d’iniciar el processament, si el monitor sèrie està obert El processament no pot llegir les dades.

Problemes de processament:

Aquests es mostraran a la part inferior del programa de processament.

Si apareix un error en descriure "tipus de lletra", torneu al pas 11 i carregueu el tipus de lletra tal com es descriu.

Si teniu un error que té el següent aspecte: Error, desactivant serialEvent () per a COM4 nul, només cal que reinicieu l'esbós de processament fent clic a la fletxa com al pas 12

Si apareix un error que indica: Error en obrir el port sèrie: proveu de canviar les línies 32-34 a alguna cosa semblant a on "COM4" coincideixi amb el port COM del vostre esbós Arduino

myPort = newSerial (this, "COM4", 9600); // Port myPort.bufferUntil ('\ n') // espereu fins que el serial tingui dades

Recomanat: