Som ingenjörer / utvecklare litar vi alltid på de insamlade uppgifterna för att utforma eller förbättra ett system. Inspelning av data och analys av dem är en vanlig praxis i de flesta branscher, här bygger vi Arduino Data Logger Project där vi lär oss hur vi kan logga data vid ett visst tidsintervall. Vi kommer att använda ett Arduino-kort för att läsa några data (här temperatur, fuktighet, datum och tid) och spara dem på ett SD-kort och datorn samtidigt.
De sparade uppgifterna kan enkelt öppnas i ett Excel-ark för vidare analyser. För att upprätthålla datum och tid kommer vi att använda den berömda RTC-modulen DS3231 och för att få temperatur och luftfuktighet använder vi DHT11-sensorn. I slutet av projektet lär du dig
- Hur man loggar in data på SD-kort med datum-, tid- och sensorvärden.
- Hur man skriver data direkt till Excel-ark på PC via seriekommunikation.
Material som krävs:
- Bakbord
- Arduino UNO (alla Arduino-styrelser)
- DHT11 temperatursensor
- DS3231 RTC-modul
- SD-kortmodul
- SD-kort
- Anslutande ledningar
- Dator / bärbar dator
Kretsschema:
Kretsschemat för detta Arduino Temperature Logger Project visas nedan.
Som visas i kretsschemat är anslutningarna väldigt enkla eftersom vi har använt dem som moduler som vi direkt kan bygga dem på en bräda. Anslutningarna klassificeras ytterligare i tabellen nedan
Arduino Pin |
Modulstift |
Temperatursensor - DHT11 |
|
Vcc |
5V |
Gnd |
Gnd |
Nc |
Nc |
Ut |
Stift 7 |
RTC-modul DS3231 |
|
Vcc |
5V |
Gnd |
Gnd |
SCL |
Stift A5 |
SDA |
Stift A4 |
SD-kortmodul |
|
Vcc |
5V |
Gnd |
Gnd |
MISO |
Stift 12 |
MOSI |
Stift 11 |
SCK |
Stift 13 |
CS |
Stift 4 |
Du kan ersätta DHT11-temperatursensorn med vilken sensor du behöver för att logga värdena. Du kan kontrollera LM35 med Arduino för att läsa temperaturen.
RTC-modulen DS3231 är gränssnitt med Arduino med I2C-kommunikation (SCL, SDA) och SD-kortmodulen är gränssnitt med SPI-kommunikation (MISO, MOSI, SCK, CS). Stiften 4 och 7 definieras som CS-stift och utgångsstift av Arduino-programmet, du kan ändra dem till valfri annan stift om det behövs. Vi kopplade tidigare SD-kort till Arduino i Music player-projektet.
Arduino-programförklaring:
Vi måste skriva Arduino-programmet som kan göra följande.
- Läs data från DTH11-sensorn (eller andra data som du vill logga in).
- Initiera I2C-bussen för att läsa data från RTC-modulen.
- Initiera SPI-bussen för att ansluta SD-kortmodulen med Arduino.
- Förvara datum, tid, temperatur och luftfuktighet på SD-kortet.
- Lagra datum, tid, temperatur och luftfuktighet på ett Excel-ark som körs på en dator / bärbar dator.
Ovanstående steg kan låta komplicerade men de är väldigt enkla eftersom vi har biblioteken för att göra det hårda jobbet för oss. Du måste ladda ner följande två bibliotek
- DHT11-sensorbibliotek från GitHub
- DS3231 RTC-modulbibliotek från Rinky-Dink Electronics
När du har laddat ner biblioteket lägg till dem i din Arduino IDE genom att följa
Skiss-> Inkludera bibliotek -> Lägg till.ZIP-bibliotek
För att mata data från Arduino livligt till ett Excel-ark på datorn måste vi också installera programvara som heter PLX-DAQ från Parallax Inc. Följ länken för att ladda ner filen och installera dem baserat på ditt operativsystem. Detta borde ha skapat en mapp med namnet PLS-DAQ på skrivbordet. Vi tar hand om det senare i vårt arbetsavsnitt.
Efter att du har lagt till båda biblioteken och efter installation av programvaran kan du använda den fullständiga koden (ges längst ner i handledningen) och ladda upp dem till din Arduino. Jag har försökt mitt bästa för att hålla koden så enkel som möjligt och förklaringarna ges också genom kommentarsektionerna. Vidare kommer jag att förklara de viktiga segmenten nedan.
1. Läsning av data från DS3231:
DS3231 är en RTC-modul (Real Time Clock). Den används för att bibehålla datum och tid för de flesta av elektronikprojekten. Denna modul har sin egen myntcellströmförsörjning med vilken den behåller datum och tid även när huvudströmmen tas bort eller MCU har gått genom en hård återställning. Så när vi har ställt in datum och tid i den här modulen kommer det alltid att hålla koll på det.
Att använda den här modulen är väldigt enkelt på grund av biblioteket som tillhandahålls av Arduino.
// Initiera DS3231 med hjälp av hårdvarugränssnittet DS3231 rtc (SDA, SCL); ogiltig Initialisera_RTC () {// Initiera rtc-objektet rtc.begin (); // #### följande rader kan inte kommenteras för att ställa in datum och tid för första gången ### / * rtc.setDOW (FRIDAY); // Ställ in veckodag till SUNDAY rtc.setTime (18, 46, 45); // Ställ in tiden till 12:00:00 (24-timmarsformat) rtc.setDate (6, 30, 2017); // Ställ in datumet till 1 januari 2014 * /}
Obs! När du använder den här modulen för första gången måste du ställa in datum och tid. Det kan göras genom att helt enkelt ta bort kommentarerna som nämnts ovan och skriva datum och tid. Se till att du kommenterar dem och laddar upp den, annars ställs datum och tid in igen varje gång du kör styrelsen. Du kan också använda RTC IC DS1307 för att läsa tiden med Arduino.
2. Läsning av data från DHT11:
DHT11 är en temperaturfuktighetssensor. Det skickar värdena för temperatur och fuktighet som en 8-bitars data seriellt genom utgången på modulen. Biblioteket läser dessa data med hjälp av Arduinos programvarufunktion.
#define DHT11_PIN 7 // Sensorutgångsstift är anslutet till stift 7 dht DHT; // Sensorobjekt som heter DHT ogiltigt Read_DHT11 () {int chk = DHT.read11 (DHT11_PIN); }
Här har jag anslutit utgångsstiftet till stift 7 som exempel, du kan välja vilken stift som har stöd för Software Serial. Ringer DHT.read (PIN-nummer); läser värdet av temperatur och fuktighet och lagrar det i parametern DHT.temperature respektive DHT.Humidity . Kontrollera även den här DHT11-baserade Arduino-temperaturmätningen.
3. Initiera SC-kortmodulen:
ogiltigt Initialize_SDcard () {// se om kortet finns och kan initieras: if (! SD.begin (chipSelect)) {Serial.println ("Card failed, or not present"); // gör inte mer: återvänd; } // öppna filen. Observera att endast en fil kan vara öppen åt gången, // så du måste stänga den här innan du öppnar en annan. File dataFile = SD.open ("LoggerCD.txt", FILE_WRITE); // om filen är tillgänglig, skriv till den: if (dataFile) {dataFile.println ("Datum, tid, temperatur, luftfuktighet"); // Skriv den första raden i Excel-filen dataFile.close (); }}
Att använda ett SD-kort med Arduino är enkelt på grund av SD-kortbiblioteket som läggs till i Arduino IDE som standard. I SD-kortets initialiseringsfunktion skapar vi en textfil med namnet “LoggerCD.txt” och skriver den första raden i vårt innehåll. Här separerar vi värdena genom att använda ett ”,” som avgränsare. Det betyder att när ett komma placeras betyder det att vi måste flytta till nästa cell i Excel-arket.
4. Skriva data till SD-kort
ogiltigt Skriv_SD-kort () {// öppna filen. Observera att endast en fil kan vara öppen åt gången, // så du måste stänga den här innan du öppnar en annan. File dataFile = SD.open ("LoggerCD.txt", FILE_WRITE); // om filen är tillgänglig, skriv till den: if (dataFile) {dataFile.print (rtc.getDateStr ()); // Lagra datum på SD-kort dataFile.print (","); // Flytta till nästa kolumn med "," dataFile.print (rtc.getTimeStr ()); // Lagra datum på SD-kort dataFile.print (","); // Flytta till nästa kolumn med "," dataFile.print (DHT.temperature); // Lagra datum på SD-kort dataFile.print (","); // Flytta till nästa kolumn med ett "," dataFile.print (DHT.humidity); // Lagra datum på SD-kort dataFile.print (","); // Flytta till nästa kolumn med "," dataFile.println (); // Slut på rad flytta till nästa rad dataFile.close ();// Stäng filen} annat Serial.println ("OOPS !! SD-kort kunde inte skrivas"); }
Som sagt tidigare är vår avsikt att spara datum, tid, temperatur och luftfuktighet på vårt SD-kort. Med hjälp av DS3231-biblioteket och DHT11-biblioteket kommer vår Arduino att kunna läsa alla dessa fyra parametrar och lagra dem i följande parametrar som visas i tabellen nedan
Datum |
rtc.getDateStr ()); |
Tid |
rtc.getTimeStr ()); |
Temperatur |
DHT. Temperatur |
Fuktighet |
DHT. Luftfuktighet |
Nu kan vi direkt använda dessa parametrar för att lagra dem på SD-kortet med utskriftsraden
dataFile.print (parameter);
Du kan märka att varje parameter är åtskild med ett kommatecken så att det ser läsbart ut och en dataFile.println (); används för att ange slutet på raden.
5. Skriva data till PLX-DAQ
PLX-DAQ är Microsoft Excel Plug-in-programvara som hjälper oss att skriva värden från Arduino till direkt i en Excel-fil på vår bärbara dator eller PC. Det här är min personliga favorit på grund av två skäl:
1.Du kan skriva och övervaka data samtidigt och ger oss sätt att plotta dem som diagram.
2. Du behöver inte en RTC-modul som DS3231 för att hålla reda på datum och tid. Du kan helt enkelt använda datum och tid som körs på din bärbara dator / dator och spara dem direkt i Excel.
För att använda denna programvara med Arduino måste vi skicka data seriellt i ett specifikt mönster precis som att visa värde på seriell bildskärm. Nyckelinjerna förklaras nedan:
ogiltigt Initialize_PlxDaq () {Serial.println ("CLEARDATA"); // rensar bort alla data som finns kvar från tidigare projekt Serial.println ("LABEL, Date, Time, Temperature, Humidity"); // skriv alltid LABEL, för att ange det som första raden} ogiltig Write_PlxDaq () {Serial.print ("DATA"); // skriv alltid "DATA" för att förtydliga följande som Data Serial.print (","); // Gå till nästa kolumn med "," Serial.print ("DATE"); // Lagra datum på Excel Serial.print (","); // Flytta till nästa kolumn med "," Serial.print ("TIME"); // Lagra datum på Excel Serial.print (","); // Flytta till nästa kolumn med "," Serial.print (DHT.temperature); // Lagra datum på Excel Serial.print (","); // Flytta till nästa kolumn med "," Serial.print (DHT.humidity);// Lagra datum på Excel Serial.print (","); // Gå till nästa kolumn med "," Serial.println (); // Slut på rad flytta till nästa rad}
Programvaran kan känna igen nyckelord som LABEL, DATA, TIME, DATE osv. Som visas i Initialize-funktionen används nyckelordet "LABEL" för att skriva den första raden i Excel-arket. Senare i skrivfunktionen använder vi nyckelordet "DATA" för att ange att följande information ska betraktas som DATA. För att indikera att vi måste gå till nästa rad måste vi använda kommatecken (“,”). För att ange slutet på raden måste vi skicka en Serial.println ();.
Som sagt tidigare kan vi skriva systemets datum och tid genom att skicka nyckelorden "DATUM" respektive "TID" som visas ovan.
Obs! Använd inte seriell bildskärm när du använder denna PLX_DAQ-programvara.
Arbetsförklaring:
Att arbeta i Arduino Data Logger är enkel. När hårdvaran och programvaran är redo är det dags att bränna programmet i ditt Arduino-kort. Så snart ditt program laddas upp börjar dina temperatur- och luftfuktighetsvärden lagras på ditt SD-kort. Du måste följa stegen nedan för att möjliggöra för PLX-DAQ att logga in i Excel-ark i datorn.
Steg 1: Öppna "Plx-Daq Spreadsheet" -filen som skapades på skrivbordet under installationen.
Steg 2: Om det finns ett säkerhetsblock, klicka på Alternativ-> Aktivera innehållet -> Slutför -> OK för att få följande skärm.
Steg 3: Välj nu baudhastigheten som “9600” och porten som din Arduino är ansluten till och klicka på Anslut. Dina värden bör börja loggas som visas på bilden nedan.
Du kan lämna detta excelark öppet och övervaka värdena när de loggas. När detta händer skulle vårt SD-kort också ha sparat samma värden. Att kontrollera är att det fungerar helt enkelt ta bort SD-kortet och öppna det på din dator. Du bör hitta en textfil med namnet “LoggerCD.txt” i den. När den öppnades skulle den se ut så här.
Den här filen har data, men det skulle vara svårt att analysera dem på ett anteckningsblock. Därför kan vi öppna den i Excel som en CSV-fil (kommaseparerade värden), vilket gör den mer effektiv. Att öppna i Excel
1. Öppna Excel. Klicka på Arkiv-> Öppna och välj “Alla filer” längst ned till höger och välj “LoggerCD” -filen från SD-kortet. Detta öppnar en textimportguide.
2.Klicka på "Nästa" och välj kommatecken som avgränsare. Klicka på “Nästa” igen. Avsluta sedan.
3.Nu öppnas dina värden i en Excel-fil enligt nedan
Jag har loggat värdena var femte sekund; du kan logga dem när som helst genom att ändra fördröjningsfunktionen i programmet. För detaljerad förståelse av arbetet, se videon nedan.
Hoppas att du gillade projektet, om du är osäker, skriv dem i kommentarfältet nedan så hjälper jag dig.
Bonusförbättring - Trådlös dataloggning med Arduino:
När du har lyckats fram till den här tiden kan du logga data trådlöst med få framsteg och bara lägga till några rader kod.
Anslut bara en Bluetooth-enhet som HC-05 och skriv data till PLX-DAQ via Bluetooth istället för Serial. Det ersätter Serial.print (parameter); med BluetoothName.print (parameter); och anslut din bärbara dator till din Bluetooth-modul och välj den COM-port som dina bärbara datorer är anslutna till Bluetooth och Taadaaa… Du har ett fungerande trådlöst dataloggingssystem på nolltid.