Kā inženieri / izstrādātāji mēs vienmēr paļaujamies uz savāktajiem datiem, lai izstrādātu vai uzlabotu sistēmu. Datu reģistrēšana un analīze ir izplatīta prakse lielākajā daļā nozaru, šeit mēs veidojam Arduino Data Logger Project, kurā mēs uzzināsim, kā mēs varam reģistrēt datus noteiktā laika intervālā. Mēs izmantosim Arduino dēli, lai nolasītu dažus datus (šeit temperatūra, mitrums, datums un laiks) un vienlaikus tos saglabātu SD kartē un datorā.
Saglabātos datus var viegli atvērt Excel lapā, lai veiktu turpmāku analīzi. Lai saglabātu datumu un laiku, mēs izmantosim slaveno RTC moduli DS3231 un, lai iegūtu temperatūru un mitrumu, izmantosim sensoru DHT11. Projekta beigās jūs uzzināsiet
- Kā reģistrēt datus SD kartē ar datuma, laika un sensora vērtībām.
- Kā rakstīt datus tieši uz Excel lapu datorā, izmantojot seriālo saziņu.
Nepieciešamie materiāli:
- Maizes dēlis
- Arduino UNO (jebkura Arduino dēlis)
- DHT11 Temperatūras sensors
- DS3231 RTC modulis
- SD kartes modulis
- SD karte
- Savienojošie vadi
- Dators / klēpjdators
Ķēdes shēma:
Šī Arduino temperatūras reģistrētāja projekta shēmas diagramma ir parādīta zemāk.
Kā parādīts ķēdes shēmā, savienojumi ir ļoti vienkārši, jo mēs tos esam izmantojuši kā moduļus, kurus mēs varam tieši veidot uz paneļa. Savienojumi ir sīkāk klasificēti zemāk esošajā tabulā
Arduino tapa |
Moduļa tapa |
Temperatūras sensors - DHT11 |
|
Vcc |
5V |
Gnd |
Gnd |
Nc |
Nc |
Ārā |
7. tapa |
RTC modulis DS3231 |
|
Vcc |
5V |
Gnd |
Gnd |
SCL |
Tapa A5 |
SDA |
Piespraust A4 |
SD kartes modulis |
|
Vcc |
5V |
Gnd |
Gnd |
MISO |
12. tapa |
MOSI |
11. tapa |
SCK |
13. tapa |
CS |
4. tapa |
DHT11 temperatūras sensoru var aizstāt ar jebkuru sensoru, no kura vērtības jāpieraksta. Jūs varat pārbaudīt LM35 ar Arduino, lai nolasītu temperatūru.
RTC modulis DS3231 ir saskarnē ar Arduino, izmantojot I2C sakarus (SCL, SDA), un SD kartes modulis ir savienots, izmantojot SPI komunikāciju (MISO, MOSI, SCK, CS). Arduino programma ir noteikusi, ka tapas 4 un 7 ir CS un izejas tapas, ja nepieciešams, varat mainīt tās uz jebkuru citu tapu. Iepriekš mūzikas atskaņotāju projektā mēs saskarnei pievienojām SD karti ar Arduino.
Arduino programmas skaidrojums:
Mums ir jāuzraksta Arduino programma, kas var rīkoties šādi.
- Lasiet datus no DTH11 sensora (vai citus datus, kurus vēlaties reģistrēt).
- Inicializējiet I2C kopni, lai nolasītu datus no RTC moduļa.
- Inicializējiet SPI kopni, lai SD kartes moduli savienotu ar Arduino.
- Glabājiet datumu, laiku, temperatūru un mitrumu SD kartē.
- Glabājiet datumu, laiku, temperatūru un mitrumu Excel lapā, kas darbojas datorā / klēpjdatorā.
Iepriekš minētie soļi var šķist sarežģīti, taču tie ir ļoti viegli, jo mums ir bibliotēkas, kas mūsu vietā strādā smagu darbu. Jums ir jālejupielādē šādas divas bibliotēkas
- DHT11 sensoru bibliotēka no GitHub
- DS3231 RTC moduļu bibliotēka no Rinky-Dink Electronics
Kad esat lejupielādējis bibliotēku, pievienojiet tos savam Arduino IDE, sekojot
Skice-> Iekļaut bibliotēku -> Pievienot.ZIP bibliotēku
Lai datus no Arduino dzīvā veidā ievadītu datora Excel lapā, mums būs jāinstalē arī programmatūra ar nosaukumu PLX-DAQ, ko nodrošina Parallax Inc. Izpildiet saiti, lai lejupielādētu failu un instalētu tos, pamatojoties uz jūsu operētājsistēmu. Tam uz jūsu darbvirsmas vajadzēja izveidot mapi ar nosaukumu PLS-DAQ. Par to mēs parūpēsimies vēlāk mūsu darba sadaļā.
Tagad pēc abu bibliotēku pievienošanas un pēc programmatūras instalēšanas jūs varat izmantot pilnu kodu (norādīts apmācības apakšā) un augšupielādēt tos savā Arduino. Esmu darījis visu iespējamo, lai kods būtu pēc iespējas vienkāršāks, un paskaidrojumi tiek sniegti arī komentāru sadaļās. Tālāk es paskaidrošu svarīgos segmentus zemāk.
1. Datu lasīšana no DS3231:
DS3231 ir RTC (Real Time Clock) modulis. To izmanto, lai saglabātu datumu un laiku lielākajai daļai elektronikas projektu. Šim modulim ir savs monētu šūnu barošanas avots, ar kura palīdzību tas saglabā datumu un laiku pat tad, ja galvenā strāva ir noņemta vai MCU ir pagājis, kaut arī atiestatīts. Tāpēc, kad šajā modulī būsim iestatījuši datumu un laiku, tas vienmēr to sekos.
Šī moduļa izmantošana ir ļoti vienkārša Arduino nodrošinātās bibliotēkas dēļ.
// Inicializējiet DS3231, izmantojot aparatūras saskarni DS3231 rtc (SDA, SCL); void Initialize_RTC () {// Inicializējiet rtc objektu rtc.begin (); // #### šīs rindas var nekomentēt, lai pirmo reizi iestatītu datumu un laiku ### / * rtc.setDOW (FRIDAY); // Iestatīt nedēļas dienu uz svētdienu rtc.setTime (18, 46, 45); // Iestatiet laiku uz 12:00:00 (24 stundu formāts) rtc.setDate (6, 30, 2017); // Iestatiet datumu uz 2014. gada 1. janvāri * /}
Piezīme: Lietojot šo moduli pirmo reizi, ir jāiestata datums un laiks. To var izdarīt, vienkārši noņemot komentārus, kā minēts iepriekš, un ierakstot datumu un laiku. Pārliecinieties, ka esat tos komentējis un augšupielādējis, citādi katru reizi, kad palaižat dēli, datums un laiks tiks atkal iestatīti. Varat arī izmantot RTC IC DS1307, lai lasītu laiku ar Arduino.
2. DHT11 datu lasīšana:
DHT11 ir temperatūras mērīšanas mitruma sensors. Temperatūras un mitruma vērtības kā 8 bitu datus sērijveidā nosūta caur moduļa izejas tapu. Bibliotēka nolasa šos datus, izmantojot Arduino programmatūras sērijveida funkciju.
#define DHT11_PIN 7 // Sensora izejas tapa ir savienota ar tapu 7 dht DHT; // Sensora objekts ar nosaukumu DHT void Read_DHT11 () {int chk = DHT.read11 (DHT11_PIN); }
Šeit es esmu savienojis izejas tapu ar 7. kontaktu, kā piemēru varat izvēlēties jebkuru tapu, kas atbalsta programmatūras sēriju. Zvanīšana uz DHT.read (PIN numurs); nolasīs temperatūras un mitruma vērtību un saglabās to attiecīgi parametros DHT. temperatūra un DHT . Mitrums . Pārbaudiet arī šo DHT11 bāzes Arduino temperatūras mērījumu.
3. Inicializējot SC kartes moduli:
void Initialize_SDcard () {// pārbaudiet, vai karte ir un vai to var inicializēt: if (! SD.begin (chipSelect)) {Serial.println ("Karte neizdevās vai tās nebija"); // nedari neko vairāk: atgriezies; } // atveriet failu. ņemiet vērā, ka vienlaikus var būt atvērts tikai viens fails, // tāpēc pirms cita atvēršanas jums tas ir jāaizver. Fails dataFile = SD.open ("LoggerCD.txt", FILE_WRITE); // ja fails ir pieejams, rakstiet uz to: if (dataFile) {dataFile.println ("Datums, laiks, temperatūra, mitrums"); // Uzrakstiet Excel faila dataFile.close () pirmo rindu; }}
SD kartes lietošana ar Arduino ir vienkārša, jo ir SD karšu bibliotēka, kas pēc noklusējuma tiks pievienota Arduino IDE. SD kartes inicializācijas funkcijā mēs izveidosim teksta failu ar nosaukumu “LoggerCD.txt” un uzrakstīsim mūsu satura pirmo rindu. Šeit mēs nošķiram vērtības, kā atdalītāju lietojot “,”. Nozīme, kad tiek ievietots komats, nozīmē, ka mums jāpārvietojas uz nākamo šūnu Excel lapā.
4. Datu ierakstīšana SD kartē
void Write_SDcard () {// atveriet failu. ņemiet vērā, ka vienlaikus var būt atvērts tikai viens fails, // tāpēc pirms cita atvēršanas jums tas ir jāaizver. Fails dataFile = SD.open ("LoggerCD.txt", FILE_WRITE); // ja fails ir pieejams, rakstiet uz to: if (dataFile) {dataFile.print (rtc.getDateStr ()); // Saglabāt datumu SD kartes dataFile.print (","); // Pārejiet uz nākamo kolonnu, izmantojot “,” dataFile.print (rtc.getTimeStr ()); // Saglabāt datumu SD kartes dataFile.print (","); // Pārejiet uz nākamo kolonnu, izmantojot “,” dataFile.print (DHT.temperature); // Saglabāt datumu SD kartes dataFile.print (","); // Pārejiet uz nākamo kolonnu, izmantojot “,” dataFile.print (DHT.humidity); // Saglabāt datumu SD kartes dataFile.print (","); // Pārejiet uz nākamo kolonnu, izmantojot "," dataFile.println (); // Rindas beigas pāriet uz nākamo rindu dataFile.close ();// aizveriet failu} else Serial.println ("OOPS !! SD kartes rakstīšana neizdevās"); }
Kā jau iepriekš minēts, mūsu nolūks ir saglabāt SD kartē datumu, laiku, temperatūru un mitrumu. Ar DS3231 bibliotēkas un DHT11 bibliotēkas palīdzību mūsu Arduino varēs nolasīt visus šos četrus parametrus un saglabāt tos šādos parametros, kā parādīts zemāk esošajā tabulā
Datums |
rtc.getDateStr ()); |
Laiks |
rtc.getTimeStr ()); |
Temperatūra |
DHT. Temperatūra |
Mitrums |
DHT. Mitrums |
Tagad mēs varam tieši izmantot šos parametrus, lai tos saglabātu SD kartē, izmantojot drukas līniju
dataFile.print (parametrs);
Jūs varat pamanīt, ka katrs parametrs ir atdalīts ar komatu, lai tas izskatās salasāms, un dataFile.println (); tiek izmantots, lai norādītu rindas beigas.
5. Datu rakstīšana uz PLX-DAQ
PLX-DAQ ir Microsoft Excel spraudņu programmatūra, kas palīdz mums ierakstīt vērtības no Arduino tieši Excel failā mūsu klēpjdatorā vai personālajā datorā. Šis ir mans personīgais favorīts divu iemeslu dēļ:
1. Jūs varat vienlaikus rakstīt un pārraudzīt datus un sniegt mums iespēju tos uzzīmēt kā grafikus.
2. Lai sekotu datumam un laikam, jums nav nepieciešams tāds RTC modulis kā DS3231. Jūs varat vienkārši izmantot datumu un laiku, kas darbojas jūsu klēpjdatorā / datorā, un saglabāt tos tieši programmā Excel.
Lai izmantotu šo programmatūru ar Arduino, mums dati jānosūta sērijveidā pēc noteikta parauga, tāpat kā vērtības parādīšana seriālajā monitorā. Galvenās līnijas ir paskaidrotas zemāk:
void Initialize_PlxDaq () {Serial.println ("CLEARDATA"); // notīra visus datus, kas palikuši no iepriekšējiem projektiem Serial.println ("LABEL, Date, Time, Temperature, Humidity"); // vienmēr rakstiet LABEL, norādot to kā pirmo rindu} void Write_PlxDaq () {Serial.print ("DATA"); // vienmēr rakstiet "DATA", lai norādītu sekojošo kā Data Serial.print (","); // Pārejiet uz nākamo kolonnu, izmantojot “,” Serial.print (“DATE”); // Saglabāt datumu programmā Excel Serial.print (","); // Pārejiet uz nākamo kolonnu, izmantojot “,” Serial.print (“TIME”); // Saglabāt datumu programmā Excel Serial.print (","); // Pārejiet uz nākamo kolonnu, izmantojot "," Serial.print (DHT.temperature); // Saglabāt datumu programmā Excel Serial.print (","); // Pārejiet uz nākamo kolonnu, izmantojot "," Serial.print (DHT.humidity);// Saglabāt datumu programmā Excel Serial.print (","); // Pārejiet uz nākamo kolonnu, izmantojot "," Serial.println (); // Rindas beigas pāriet uz nākamo rindu}
Programmatūra var atpazīt tādus atslēgvārdus kā LABEL, DATA, TIME, DATE utt. Kā parādīts funkcijā Initialize, Excel lapas pirmās rindas uzrakstīšanai tiek izmantots atslēgvārds “LABEL”. Vēlāk funkcijā Rakstīšana mēs izmantojam atslēgvārdu “DATI”, lai norādītu, ka šāda informācija jāuzskata par DATI. Lai norādītu, ka mums jāpārvietojas uz nākamo rindu, mums jāizmanto komats (“,”). Lai norādītu rindas beigas, mums jānosūta Serial.println ();.
Kā minēts iepriekš, mēs varam uzrakstīt sistēmas datumu un laiku, nosūtot atslēgvārdus “DATUMS” un “LAIKS”, kā parādīts iepriekš.
Piezīme. Nelietojiet sērijveida monitoru, lietojot šo PLX_DAQ programmatūru.
Darba skaidrojums:
Darbs no Arduino Data Logger ir vienkārša. Kad aparatūra un programmatūra ir gatava, ir pienācis laiks ierakstīt programmu savā Arduino dēlī. Tiklīdz jūsu programma tiks augšupielādēta, temperatūras un mitruma vērtības sāks uzglabāt SD kartē. Lai PLX-DAQ ļautu datorā pieteikties Excel lapā, jums jāveic šādas darbības.
1. darbība: atveriet failu “Plx-Daq Spreadsheet”, kas tika izveidots darbvirsmā instalēšanas laikā.
2. solis: Ja ir drošības bloks, noklikšķiniet uz Opcijas-> Iespējot saturu -> Pabeigt -> Labi, lai iegūtu šādu ekrānu.
3. solis: Tagad atlasiet datu pārraides ātrumu kā “9600” un portu, ar kuru savienots jūsu Arduino, un noklikšķiniet uz Savienot. Jūsu vērtības jāsāk reģistrēt, kā parādīts zemāk esošajā attēlā.
Jūs varat atstāt šo Excel lapu atvērtu un uzraudzīt vērtības, kad tās tiek reģistrētas. Tā kā tas notiek, arī mūsu SD karte būtu saglabājusi tās pašas vērtības. Lai pārbaudītu, vai tas darbojas, vienkārši noņemiet SD karti un atveriet to savā datorā. Tajā vajadzētu atrast teksta failu ar nosaukumu “LoggerCD.txt” . Atvērts tas izskatīsies apmēram šādi.
Šajā failā ir dati, taču tos būtu grūti analizēt piezīmju blokā. Tādējādi mēs to varam atvērt programmā Excel kā CSV (ar komatu atdalītas vērtības) failu, tādējādi padarot to efektīvāku. Lai atvērtu Excel
1. Atveriet programmu Excel. Noklikšķiniet uz File-> Open un apakšējā labajā stūrī atlasiet “All file” un SD kartē atlasiet failu “LoggerCD”. Tas atvērs teksta importēšanas vedni.
2. Noklikšķiniet uz Tālāk un atlasiet komatu kā atdalītāju. Vēlreiz noklikšķiniet uz “Next”. Pēc tam pabeidziet.
3. Tagad jūsu vērtības tiks atvērtas Excel failā, kā parādīts zemāk
Esmu reģistrējis vērtības ik pēc 5 sekundēm; Jūs varat tos reģistrēt uz vēlamo laiku, programmā mainot aizkaves funkciju. Lai iegūtu detalizētu izpratni par darbu, lūdzu, noskatieties video zemāk.
Ceru, ka jums patika projekts, ja jums ir kādas šaubas, ierakstiet tos komentāru sadaļā, un es jums palīdzēsim.
Bonusa uzlabošana - bezvadu datu reģistrēšana, izmantojot Arduino:
Kad esat guvis panākumus līdz šim brīdim, tad, veicot dažus uzlabojumus un vienkārši pievienojot dažas koda rindas, datus varat reģistrēt bezvadu režīmā.
Vienkārši pievienojiet Bluetooth ierīci, piemēram, HC-05, un ierakstiet datus PLX-DAQ, izmantojot Bluetooth, nevis sērijas. Tas aizstāj Serial.print (parametrs); ar BluetoothName.print (parametrs); un pievienojiet klēpjdatoru savam Bluetooth modulim, izvēlieties COM portu, pie kura ir savienots jūsu Bluetooth klēpjdators, un Taadaaa…… Jums nav laika, kad darbojas bezvadu datu reģistrēšanas sistēma.