Taula de continguts:

Arduino Datalogger: 8 passos (amb imatges)
Arduino Datalogger: 8 passos (amb imatges)

Vídeo: Arduino Datalogger: 8 passos (amb imatges)

Vídeo: Arduino Datalogger: 8 passos (amb imatges)
Vídeo: Using Micro SD Card and Data logging with Arduino | Arduino Step by Step Course Lesson 106 2024, De novembre
Anonim
Arduino Datalogger
Arduino Datalogger
Arduino Datalogger
Arduino Datalogger

En aquest tutorial, farem un simple registrador de dades mitjançant Arduino. La qüestió és aprendre els conceptes bàsics de l’ús d’Arduino per capturar informació i imprimir al terminal. Podem utilitzar aquesta configuració bàsica per completar una sèrie de tasques.

Per començar:

Necessitareu un compte de Tinkercad (www.tinkercad.com). Dirigiu-vos i registreu-vos amb el vostre compte de correu electrònic o xarxes socials.

L’inici de sessió us portarà al tauler de control de Tinkercad. Feu clic a "Circuits" a l'esquerra i seleccioneu "Crea un circuit nou". Comencem!

Podeu trobar el fitxer complet a TInkercad Circuits. Gràcies per comprovar-ho.

Pas 1: afegiu alguns components

Afegiu alguns components
Afegiu alguns components
Afegiu alguns components
Afegiu alguns components
Afegiu alguns components
Afegiu alguns components

Necessitareu alguns components bàsics. Això inclou:

  • Taula Arduino
  • Taula de pa

Afegiu-los cercant-los i arrossegant-los a la zona central.

Col·loqueu la pissarra sobre l'Arduino. Facilita la visualització de les connexions més endavant.

Pas 2: una nota sobre les taules de pa

Una nota sobre les taules de pa
Una nota sobre les taules de pa

Una taula de treball és un dispositiu molt útil per fer prototips ràpids. L’utilitzem per connectar components. Algunes coses a tenir en compte.

  1. Els punts es connecten verticalment, però la línia del mig separa aquesta connexió de les columnes superior i inferior.
  2. Les columnes no estan connectades d’esquerra a dreta, com passa a la fila. Això significa que tots els components haurien d'estar connectats a les columnes en lloc de baixar-les verticalment.
  3. Si heu d’utilitzar botons o commutadors, connecteu-los al mig del salt. Ho visitarem en un tutorial posterior.

Pas 3: afegiu dos sensors

Afegiu dos sensors
Afegiu dos sensors

Els dos sensors que fem servir són un sensor fotosensible i un sensor de temperatura.

Aquests sensors avaluen la llum i la temperatura. Utilitzem Arduino per llegir el valor i mostrar-lo al monitor sèrie de l’Arduino.

Cerqueu i afegiu els dos sensors. Assegureu-vos que estiguin col·locades a les columnes de la taula de treball. Col·loqueu prou espai entre elles perquè sigui més fàcil veure-les.

Pas 4: sensor fotosensible

Sensor fotosensible
Sensor fotosensible
Sensor fotosensible
Sensor fotosensible
Sensor fotosensible
Sensor fotosensible
Sensor fotosensible
Sensor fotosensible
  1. Per al sensor fotosensible, afegiu un cable del pin de 5 V a l'Arduino a la mateixa columna que la cama dreta de la part de la taula de treball. Canvieu el color del fil a vermell.
  2. Connecteu la cama esquerra mitjançant el pin de la mateixa columna al pin A0 (A-zero) de l'Arduino. Aquest és el pin analògic, que utilitzarem per llegir el valor del sensor. Pinteu aquest fil groc o alguna cosa que no sigui el vermell o el negre.
  3. Col·loqueu una resistència (cerqueu i feu clic i arrossegueu) al tauler. Això completa el circuit i protegeix el sensor i el pin.

    • Gireu-lo perquè travessi les columnes.
    • Connecteu una cama a la columna de la cama dreta de la taula de treball
    • Col·loqueu un cable de l’altre extrem de la resistència a terra

      Canvieu el color del cable a negre

  4. Comproveu de nou totes les connexions. Si alguna cosa no està al lloc adequat, això no funcionarà correctament.

Pas 5: inicieu el codi

Inicieu el codi
Inicieu el codi
Inicieu el codi
Inicieu el codi
Inicieu el codi
Inicieu el codi

Vegem el codi d’aquest component.

En primer lloc, mireu la tercera imatge d’aquest pas. Conté algun codi amb dues funcions:

configuració nul·la ()

bucle buit ()

A C ++, totes les funcions proporcionen el seu tipus de retorn, després el nom, i després les dues claus rodones que es poden utilitzar per passar en arguments, normalment com a variables. En aquest cas, el tipus de retorn és nul, o res. El nom està configurat i la funció no accepta arguments.

La funció de configuració s'executa una vegada quan arrenca Arduino (quan el connecteu o connecteu bateries).

La funció de bucle s'executa en un bucle constant a partir del mil·lisegon que completa la funció de configuració.

Tot el que poseu a la funció de bucle s'executarà quan s'executi Arduino. Tot el que hi ha a l'exterior només funcionarà quan es cridi. Com si definíssim i cridéssim una altra funció fora del bucle.

Tasca

Obriu el tauler Codi amb el botó de Tinkercad. Canvieu el menú desplegable Blocs a Text. Accepteu el quadre d’advertència que apareix. Ara, suprimiu tot el que veieu, excepte el text de la tercera imatge d’aquest pas.

Les variables

Per començar, hem d’assignar algunes variables perquè el nostre codi sigui realment eficient.

Les variables són com dipòsits que només poden contenir un objecte (C ++ és el que anomenem orientat a objectes). Sí, tenim matrius, però són variables especials i en parlarem més endavant. Quan assignem una variable, li hem de dir quin tipus és, i després donar-li un valor. Es veu així:

int someVar = A0;

Per tant, vam assignar una variable i li vam donar tipus int. Un int és un nombre enter o un nombre enter.

"Però no heu utilitzat un número enter!", Us sento dir. Això és cert.

Arduino fa alguna cosa especial per a nosaltres, de manera que podem utilitzar A0 com a enter, perquè en un altre fitxer defineix A0 com a enter, de manera que podem utilitzar la constant A0 per referir-nos a aquest enter sense haver de saber de què es tracta. Si només escrivíssim 0, ens referiríem al pin digital de la posició 0, que no funcionaria.

Per tant, per al nostre codi escriurem una variable per al sensor que hem adjuntat. Tot i que us recomano posar-li un nom senzill, depèn de vosaltres.

El vostre codi hauria de ser així:

int lightSensor = A0;

void setup () {} void loop () {}

Ara, expliquem a Arduino com manejar el sensor d’aquest pin. Executarem una funció dins de la configuració per configurar el mode pin i indicar a Arduino on el buscarà.

int lightSensor = A0;

void setup () {pinMode (lightSensor, INPUT); } bucle buit () {}

la funció pinMode indica a Arduino que el pin (A0) s'utilitzarà com a pin INPUT. Tingueu en compte el camelCaseUsed (vegeu cada primera lletra amb majúscula, ja que hi ha gepes, per tant … camel …!) Per a les variables i els noms de les funcions. És una convenció i és bo per acostumar-se.

Finalment, fem servir la funció analogRead per obtenir algunes dades.

int lightSensor = A0;

void setup () {pinMode (lightSensor, INPUT); } void loop () {int reading = analogRead (lightSensor); }

Veureu que hem guardat la lectura en una variable. Això és important ja que l’hem d’imprimir. Utilitzem la biblioteca serial (una biblioteca és un codi que podem afegir al nostre codi per fer-ho més ràpid, només cridant-lo segons la seva definició) per imprimir-ho al monitor sèrie.

int lightSensor = A0;

void setup () {// Estableix els modes pin PinMode (lightSensor, INPUT); // Afegiu la biblioteca sèrie Serial.begin (9600); } void loop () {// Llegiu el sensor int reading = analogRead (lightSensor); // Imprimiu el valor al monitor Serial.print ("Llum:"); Serial.println (lectura); // retardar el següent bucle en 3 segons de retard (3000); }

Algunes coses noves! En primer lloc, veureu aquests:

// Aquest és un comentari

Utilitzem comentaris per dir a altres persones què fa el nostre codi. Hauríeu d’utilitzar-los sovint. El compilador no els llegirà i els convertirà en codi.

Ara també hem afegit la biblioteca Serial amb la línia

Serial.begin (9600)

Aquest és un exemple d'una funció que adopta un argument. Heu cridat la biblioteca Serial i després heu executat una funció (sabem que és una funció a causa dels claus rodons) i heu passat un enter com a argument, configurant la funció Serial perquè funcioni a 9600baud. No us preocupeu, només heu de saber que ara funciona.

El següent que vam fer va ser imprimir al monitor sèrie. Hem utilitzat dues funcions:

// Aquest imprimeix al serial sense cap salt de línia (una entrada al final)

Serial.print ("Llum:"); // Aquest posa el salt de línia de manera que cada vegada que llegim i escrivim, surt en una nova línia Serial.println (lectura);

El que cal veure és que cadascun té un propòsit diferent. Assegureu-vos que les vostres cadenes utilitzen cometes dobles i que deixeu l’espai després dels dos punts. Això facilita la llegibilitat de l'usuari.

Finalment, hem utilitzat la funció de retard per alentir el bucle i fer-lo llegir només un cop cada tres segons. Això està escrit en milers de segons. Canvieu-lo per llegir-lo només un cop cada 5 segons.

Genial! Anem!

Pas 6: simulació

Simulació
Simulació
Simulació
Simulació
Simulació
Simulació

Sempre comproveu que les coses funcionen executant la simulació. Per a aquest circuit, també haureu d'obrir el simulador per comprovar que funciona i comprovar els vostres valors.

Inicieu la simulació i comproveu el monitor sèrie. Canvieu el valor del sensor de llum fent-hi clic i canviant el valor mitjançant el control lliscant. També heu de veure el canvi de valor al monitor sèrie. Si no, o si premeu el botó Inicia la simulació, apareixen errors, torneu enrere i comproveu tot el vostre codi.

  • Centreu-vos en les línies indicades a la finestra de depuració vermella que us apareixerà.
  • Si el vostre codi és correcte i la simulació encara no funciona, comproveu el cablejat.
  • Torneu a carregar la pàgina: és possible que tingueu un error de sistema / servidor no relacionat.
  • Agiteu el puny a l'ordinador i torneu a comprovar-ho. Tots els programadors ho fan. Tots. El. Temps.

Pas 7: connecteu el sensor de temperatura

Connecteu el sensor de temperatura
Connecteu el sensor de temperatura

Vaig a suposar que ara esteu en el bon camí. Seguiu endavant i connecteu el sensor de temperatura com indica la imatge. Tingueu en compte la col·locació dels cables de 5V i GND al mateix espai que els de la llum. Està bé. És com un circuit paral·lel i no causarà problemes al simulador. En un circuit real, hauríeu d’utilitzar una placa de protecció o un blindatge per proporcionar una millor gestió d’energia i connexions.

Ara, actualitzem el codi.

El codi del sensor de temperatura

Això és una mica més complicat, però només perquè hem de fer algunes matemàtiques per convertir la lectura. No està gens malament.

int lightSensor = A0;

int tempSensor = A1; void setup () {// Estableix els modes pin PinMode (lightSensor, INPUT); // Afegiu la biblioteca sèrie Serial.begin (9600); } void loop () {// El sensor de temperatura // Creació de dues variables en una línia - oh eficiència! // Float var per emmagatzemar una tensió flotant decimal, graus C; // Llegiu el valor del pin i convertiu-lo en una lectura de 0 a 5 // Essencialment tensió = (5/1023 = 0,004882814); voltatge = (analogRead (tempSensor) * 0,004882814); // Converteix en graus C graus C = (voltatge - 0,5) * 100; // Imprimiu al monitor sèrie Serial.print ("Temp:"); Serial.print (graus C); Serial.println ("oC"); // Llegiu el sensor int reading = analogRead (lightSensor); // Imprimiu el valor al monitor Serial.print ("Llum:"); Serial.println (lectura); // retardar el següent bucle en 3 segons de retard (3000); }

He fet algunes actualitzacions del codi. Caminem per elles individualment.

En primer lloc, he afegit la línia

int tempSensor = A1;

Igual que lightSensor, he d’emmagatzemar el valor en una variable per facilitar-lo més tard. Si hagués de canviar la ubicació d’aquest sensor (com tornar a connectar la placa), només hauria de canviar una línia de codi, no buscar a tota la base de codis per canviar A0 o A1, etc.

A continuació, hem afegit una línia per emmagatzemar la lectura i la temperatura en un float. Tingueu en compte dues variables en una línia.

tensió flotant, graus C;

Això és molt útil perquè redueix el nombre de línies que he d’escriure i agilitza el codi. Però pot ser més difícil trobar errors.

Ara, farem la lectura i l’emmagatzemarem, i després la convertirem al nostre valor de sortida.

voltatge = (analogRead (tempSensor) * 0,004882814);

graus C = (tensió - 0,5) * 100;

Aquestes dues línies semblen difícils, però a la primera prenem la lectura i la multipliquem per 0,004 … perquè converteix 1023 (la lectura analògica retorna aquest valor) en una lectura de 5.

La segona línia multiplica aquesta lectura per 100 per moure el punt decimal. Això ens dóna la temperatura. Neat!

Pas 8: proves i comprovació

Proves i comprovació
Proves i comprovació

Tot el que es planeja, hauríeu de tenir un circuit de treball. Proveu executant la simulació i utilitzant el monitor sèrie. Si teniu errors, comproveu-ho, torneu a comprovar-lo i agiteu el puny.

Ho vas aconseguir? Comparteix i explica’ns la teva història!

Aquest és el circuit final incrustat perquè pugueu reproduir / provar la creació final. Gràcies per completar el tutorial.

Recomanat: