- Materials necessaris:
- Esquema de connexions:
- Explicació del programa Arduino:
- Explicació de treball:
Com a enginyers / desenvolupadors, sempre confiem en les dades recopilades per dissenyar o millorar un sistema. Enregistrar dades i analitzar-les és una pràctica habitual a la majoria de les indústries, aquí estem construint el Projecte Arduino Data Logger on aprendrem com podem registrar dades en un interval de temps específic. Utilitzarem una placa Arduino per llegir algunes dades (aquí temperatura, humitat, data i hora) i desar-les simultàniament en una targeta SD i l’ordinador.
Les dades guardades es poden obrir fàcilment en un full d'Excel per a més anàlisis. Per mantenir la data i hora utilitzarem el famós mòdul RTC DS3231 i per obtenir la temperatura i la humitat utilitzarem el sensor DHT11. Al final del projecte, aprendràs
- Com es registren les dades a la targeta SD amb data, hora i valors del sensor.
- Com escriure dades directament al full d'Excel a l'ordinador mitjançant comunicació en sèrie.
Materials necessaris:
- Taula de pa
- Arduino UNO (qualsevol placa Arduino)
- Sensor de temperatura DHT11
- Mòdul RTC DS3231
- Mòdul de targeta SD
- targeta SD
- Connexió de cables
- Ordinador / ordinador portàtil

Esquema de connexions:
A continuació es mostra el diagrama del circuit d’aquest projecte Arduino de registre de temperatura.

Com es mostra al diagrama de circuits, les connexions són molt senzilles, ja que les hem utilitzat com a mòduls, les podem construir directament sobre una taula de treball. Les connexions es classifiquen a la taula següent
|
Pin Arduino |
Pin del mòdul |
|
Sensor de temperatura - DHT11 |
|
|
Vcc |
5V |
|
Gnd |
Gnd |
|
Nc |
Nc |
|
Fora |
Pin 7 |
|
Mòdul RTC DS3231 |
|
|
Vcc |
5V |
|
Gnd |
Gnd |
|
SCL |
Pin A5 |
|
SDA |
Pin A4 |
|
Mòdul de targeta SD |
|
|
Vcc |
5V |
|
Gnd |
Gnd |
|
MISO |
Pin 12 |
|
MOSI |
Pin 11 |
|
SCK |
Pin 13 |
|
CS |
Pin 4 |
Podeu substituir el sensor de temperatura DHT11 per qualsevol del sensor des del qual necessiteu registrar els valors. Podeu consultar LM35 amb Arduino per llegir la temperatura.
El mòdul RTC DS3231 s’interfaça amb Arduino mitjançant la comunicació I2C (SCL, SDA) i el mòdul de la targeta SD s’interface mitjançant la comunicació SPI (MISO, MOSI, SCK, CS). Els pins 4 i 7 es defineixen com a pin CS i pin de sortida pel programa Arduino, els podeu canviar a qualsevol altre pin si és necessari. Prèviament hem interfacat la targeta SD amb el projecte de reproductor de música Arduino.
Explicació del programa Arduino:
Hem d’escriure el programa Arduino que pot fer el següent.
- Llegiu les dades del sensor DTH11 (o qualsevol altra dada que vulgueu registrar).
- Inicialitzeu el bus I2C per llegir les dades del mòdul RTC.
- Inicialitzeu el bus SPI per connectar el mòdul de la targeta SD amb Arduino.
- Emmagatzemeu la data, l'hora, la temperatura i la humitat a la targeta SD.
- Emmagatzemeu la data, l'hora, la temperatura i la humitat en un full d'Excel que s'executa en un ordinador / portàtil.
Els passos anteriors poden semblar complicats, però són molt fàcils, ja que tenim les biblioteques per fer-nos la feina difícil. Heu de descarregar les dues biblioteques següents
- Biblioteca de sensors DHT11 de GitHub
- Biblioteca de mòduls DS3231 RTC de Rinky-Dink Electronics
Un cop hagueu descarregat la biblioteca, afegiu-los al vostre IDE Arduino seguint
Sketch-> Include Library -> Add.ZIP Library
Per alimentar les dades d'Arduino en un full d'Excel a l'ordinador, també haurem d'instal·lar un programari anomenat PLX-DAQ subministrat per Parallax Inc. Seguiu l'enllaç per descarregar el fitxer i instal·lar-los segons el vostre sistema operatiu. Això hauria d'haver creat una carpeta anomenada PLS-DAQ al vostre escriptori. En tindrem cura més endavant a la nostra secció de treball.
Ara, després d'afegir les dues biblioteques i després d'instal·lar el programari, podeu utilitzar el codi complet (que es mostra a la part inferior del tutorial) i penjar-los al vostre Arduino. He fet tot el possible per mantenir el codi el més senzill possible i les explicacions també es donen a través de seccions de comentaris. A més, a continuació explicaré els segments importants.
1. Lectura de dades de DS3231:
DS3231 és un mòdul RTC (Real Time Clock). S'utilitza per mantenir la data i l'hora de la majoria de projectes electrònics. Aquest mòdul té la seva pròpia font d’alimentació amb cèl·lula de moneda mitjançant la qual es manté la data i l’hora, fins i tot quan s’elimina l’alimentació principal o s’ha perdut la MCU tot i que s’ha restablert. Per tant, un cop definida la data i l’hora en aquest mòdul, en farà un seguiment sempre.
L’ús d’aquest mòdul és molt fàcil a causa de la biblioteca que proporciona Arduino.
// Inicieu el DS3231 mitjançant la interfície de maquinari DS3231 rtc (SDA, SCL); void Initialize_RTC () {// Inicialitza l'objecte rtc rtc.begin (); // #### es poden descomentar les línies següents per definir la data i l'hora per primera vegada ### / * rtc.setDOW (DIVENDRES); // Estableix el dia de la setmana a DIUMENGE rtc.setTime (18, 46, 45); // Estableix l’hora a les 12:00:00 (format 24 h) rtc.setDate (30, 6, 2017); // Estableix la data a l'1 de gener de 2014 * /}
Nota: Quan utilitzeu aquest mòdul per primera vegada, heu d’establir la data i l’hora. Es pot fer simplement eliminant els comentaris tal com s'ha esmentat anteriorment i escrivint la data i l'hora. Assegureu-vos de tornar-los a comentar i penjar-los, en cas contrari cada vegada que executeu el tauler es tornarà a configurar la data i l’hora. També podeu utilitzar RTC IC DS1307 per llegir l’hora amb Arduino.
2. Lectura de dades de DHT11:
DHT11 és un sensor d’humitat de temperatura. Envia els valors de temperatura i humitat com a dades de 8 bits en sèrie a través del pin de sortida del mòdul. La biblioteca llegeix aquestes dades mitjançant la funció serial del programari d’Arduino.
#define DHT11_PIN 7 // El pin de sortida del sensor està connectat al pin 7 dht DHT; // Objecte del sensor anomenat com a DHT buit Read_DHT11 () {int chk = DHT.read11 (DHT11_PIN); }
Aquí he connectat el pin de sortida al pin 7, per exemple, podeu triar qualsevol pin que admeti el programari sèrie. Trucar a DHT.read (número de pin); llegirà el valor de la temperatura i la humitat i l’emmagatzemarà al paràmetre DHT.temperature i DHT.Humidity respectivament. Comproveu també aquesta mesura de temperatura Arduino basada en DHT11.
3. Inicialització del mòdul de targeta SC:
void Initialize_SDcard () {// veure si la targeta és present i es pot inicialitzar: if (! SD.begin (chipSelect)) {Serial.println ("La targeta ha fallat o no està present"); // no facis res més: torna; } // obriu el fitxer. tingueu en compte que només es pot obrir un fitxer alhora, // per tant, heu de tancar-lo abans d'obrir-ne un altre. Fitxer dataFile = SD.open ("LoggerCD.txt", FILE_WRITE); // si el fitxer està disponible, escriviu-hi: if (dataFile) {dataFile.println ("Data, hora, temperatura, humitat"); // Escriviu la primera fila del fitxer excel dataFile.close (); }}
Utilitzar una targeta SD amb Arduino és fàcil gràcies a la biblioteca de targetes SD que s’afegirà a l’IDE Arduino per defecte. A la funció d'inicialització de la targeta SD, crearem un fitxer de text anomenat "LoggerCD.txt" i escriurem la primera fila del nostre contingut. Aquí separem els valors utilitzant un "," com a delimitador. És a dir, quan es posa una coma, vol dir que hem de passar a la cel·la següent del full Excel.
4. Escriptura de dades a la targeta SD
void Write_SDcard () {// obre el fitxer. tingueu en compte que només es pot obrir un fitxer alhora, // per tant, heu de tancar-lo abans d'obrir-ne un altre. Fitxer dataFile = SD.open ("LoggerCD.txt", FILE_WRITE); // si el fitxer està disponible, escriviu-hi: if (dataFile) {dataFile.print (rtc.getDateStr ()); // Desa la data a la targeta SD dataFile.print (","); // Passar a la següent columna amb un fitxer "," dataFile.print (rtc.getTimeStr ()); // Desa la data a la targeta SD dataFile.print (","); // Passar a la següent columna amb un fitxer "," dataFile.print (temperatura DHT); // Desa la data a la targeta SD dataFile.print (","); // Passar a la columna següent mitjançant un fitxer "," dataFile.print (DHT.humidity); // Desa la data a la targeta SD dataFile.print (","); // Passar a la següent columna amb un fitxer "," dataFile.println (); // Final de fila passa a la fila següent dataFile.close ();// Tanca el fitxer} else Serial.println ("OOPS !! No s'ha pogut escriure la targeta SD"); }
Com s'ha dit anteriorment, la nostra intenció és guardar la data, l'hora, la temperatura i la humitat a la nostra targeta SD. Amb l'ajut de la biblioteca DS3231 i la biblioteca DHT11, el nostre Arduino serà capaç de llegir tots aquests quatre paràmetres i emmagatzemar-los als paràmetres següents, tal com es mostra a la taula següent.
|
Data |
rtc.getDateStr ()); |
|
Temps |
rtc.getTimeStr ()); |
|
Temperatura |
Temperatura DHT |
|
Humitat |
DHT.humitat |
Ara podem utilitzar aquests paràmetres directament per emmagatzemar-los a la targeta SD mitjançant la línia d'impressió
dataFile.print (paràmetre);
Podeu notar que cada paràmetre està separat per una coma per fer que sembli llegible i un fitxer dataFile.println (); s'utilitza per indicar el final de la línia.
5. Escriptura de dades a PLX-DAQ
PLX-DAQ és un programari complementari de Microsoft Excel que ens ajuda a escriure valors des d’Arduino fins a directament en un fitxer Excel al nostre ordinador portàtil o PC. Aquest és el meu favorit personal per dos motius:
1. Podeu escriure i supervisar les dades al mateix temps i ens proporciona una manera de representar-les com a gràfics.
2. No necessiteu cap mòdul RTC com DS3231 per fer un seguiment de la data i l'hora. Simplement podeu utilitzar la data i l'hora que s'executen al vostre ordinador portàtil / ordinador i desar-les directament a Excel.
Per utilitzar aquest programari amb Arduino hem d’enviar les dades en sèrie en un patró específic tal com es mostra el valor al monitor sèrie. Les línies clau s’expliquen a continuació:
void Initialize_PlxDaq () {Serial.println ("CLEARDATA"); // esborra qualsevol dada que quedi de projectes anteriors Serial.println ("ETIQUETA, Data, Hora, Temperatura, Humitat"); // escriviu sempre LABEL, per indicar-la com a primera línia} void Write_PlxDaq () {Serial.print ("DATA"); // escriviu sempre "DADES" per indicar el següent com a Data Serial.print (","); // Passar a la següent columna amb un "," Serial.print ("DATE"); // Emmagatzemar la data a Excel Serial.print (","); // Passar a la següent columna amb un "," Serial.print ("TIME"); // Emmagatzemar la data a Excel Serial.print (","); // Passar a la següent columna amb un "," Serial.print (temperatura DHT); // Emmagatzemar la data a Excel Serial.print (","); // Passar a la següent columna amb un "," Serial.print (DHT.humidity);// Emmagatzemar la data a Excel Serial.print (","); // Passar a la següent columna amb un "," Serial.println (); // Final de fila passa a la fila següent}
El programari pot reconèixer paraules clau com ETIQUETA, DADES, HORA, DATA, etc. Com es mostra a la funció Inicialitzar, la paraula clau "ETIQUETA" s'utilitza per escriure la primera FILA del full d'Excel. Més endavant, a la funció d'escriptura, utilitzem la paraula clau "DADES" per indicar que la informació següent s'ha de considerar DADES. Per indicar que hem de passar a la fila següent hem d'utilitzar la coma (","). Per indicar el final de la fila hem d’enviar un Serial.println ();.
Com s'ha dit anteriorment, podem escriure la data i l'hora del sistema enviant les paraules clau "DATE" i "TIME" respectivament, tal com es mostra més amunt.
Nota: No utilitzeu el monitor sèrie quan utilitzeu aquest programari PLX_DAQ.
Explicació de treball:
El treball de l' Arduino Data Logger és senzill. Un cop el maquinari i el programari estiguin preparats, és hora de gravar el programa a la vostra placa Arduino. Tan bon punt es carregui el programa, els valors de temperatura i humitat començaran a emmagatzemar-se a la targeta SD. Heu de seguir els passos següents per permetre a PLX-DAQ iniciar la sessió al full d'Excel a l'ordinador.
Pas 1: obriu el fitxer "Full de càlcul Plx-Daq" que es va crear a l'escriptori durant la instal·lació.
Pas 2: si hi ha un bloc de seguretat, feu clic a Opcions-> Activa el contingut -> Finalitza -> D'acord per obtenir la pantalla següent.

Pas 3: ara seleccioneu la velocitat de transmissió com a "9600" i el port al qual està connectat el vostre Arduino i feu clic a Connecta. Els vostres valors haurien de començar a registrar-se com es mostra a la imatge següent.

Podeu deixar obert aquest full Excel i controlar els valors a mesura que es registren. A mesura que això passa, la nostra targeta SD també hauria guardat els mateixos valors. Per comprovar que funciona, traieu la targeta SD i obriu-la a l'ordinador. Hi hauríeu de trobar un fitxer de text anomenat "LoggerCD.txt" . En obrir-se, semblaria una cosa així.

Aquest fitxer conté dades, però seria difícil analitzar-les en un bloc de notes. Per tant, podem obrir-lo a Excel com a fitxer CSV (valors separats per comes), fent-lo més eficaç. Per obrir en excel
1. Obriu Excel. Feu clic a Fitxer-> Obre i seleccioneu "Tots els fitxers" a l'extrem inferior dret i seleccioneu el fitxer "LoggerCD" de la targeta SD. S’obrirà un assistent d’importació de text.
2. Feu clic a "Següent" i seleccioneu la coma com a delimitador. Torneu a fer clic a "Següent". Després Acaba.
3. Ara els vostres valors s’obriran en un fitxer Excel tal com es mostra a continuació

He registrat els valors cada 5 segons; Podeu registrar-los en qualsevol moment desitjat canviant la funció de retard al programa. Per obtenir una comprensió detallada del funcionament, vegeu el vídeo següent.
Espero que us hagi agradat el projecte, si teniu cap dubte, escriviu-los a la secció de comentaris següent i us ajudaré.

Millora de la bonificació: registre de dades sense fils mitjançant Arduino:
Un cop hàgiu aconseguit fins a aquest punt, podreu registrar dades sense fils amb pocs avenços i només afegint unes quantes línies de codi.
Simplement connecteu un dispositiu Bluetooth com HC-05 i escriviu les dades a PLX-DAQ mitjançant Bluetooth en lloc de sèrie. Això és substituir Serial.print (paràmetre); amb BluetoothName.print (paràmetre); i connecteu el portàtil al mòdul Bluetooth i seleccioneu el port COM al qual està connectat el portàtil Bluetooth i Taadaaa…… Teniu un sistema de registre de dades sense fils en un tres i no res.
