Като инженери / разработчици, ние винаги разчитаме на събраните данни за проектиране или подобряване на система. Записването на данни и анализът им е често срещана практика в повечето индустрии, тук изграждаме Arduino Data Logger Project, където ще научим как можем да регистрираме данни в определен интервал от време. Ще използваме платка Arduino, за да четем някои данни (тук температура, влажност, дата и час) и да ги записваме едновременно на SD карта и на компютъра.
Запазените данни могат лесно да бъдат отворени в Excel Sheet за по-нататъшни анализи. За да поддържаме датата и часа, ще използваме известния RTC модул DS3231, а за да получим температурата и влажността ще използваме сензора DHT11. В края на проекта ще научите
- Как да регистрирате данни в SD карта със стойности за дата, час и сензор.
- Как да записвате данни директно в Excel Sheet на компютър чрез серийна комуникация.
Необходими материали:
- Макет
- Arduino UNO (всяка дъска на Arduino)
- DHT11 Температурен сензор
- DS3231 RTC модул
- Модул за SD карта
- SD карта
- Свързващи проводници
- Компютър / лаптоп
Електрическа схема:
Схемата на веригата за този проект на Arduino Temperature Logger е показана по-долу.
Както е показано на електрическата схема, връзките са много прости, тъй като сме ги използвали като модули, можем директно да ги изградим на макет. Връзките са допълнително класифицирани в таблицата по-долу
Arduino Pin |
ПИН на модула |
Сензор за температура - DHT11 |
|
Vcc |
5V |
Gnd |
Gnd |
Nc |
Nc |
Вън |
Пин 7 |
RTC модул DS3231 |
|
Vcc |
5V |
Gnd |
Gnd |
SCL |
ПИН A5 |
SDA |
Пин A4 |
Модул за SD карта |
|
Vcc |
5V |
Gnd |
Gnd |
MISO |
ПИН 12 |
МОСИ |
ПИН 11 |
SCK |
ПИН 13 |
CS |
ПИН 4 |
Можете да замените температурния сензор DHT11 с всеки ваш сензор, от който трябва да регистрирате стойностите. Можете да проверите LM35 с Arduino, за да отчетете температурата.
Модулът RTC DS3231 е свързан с Arduino чрез I2C комуникация (SCL, SDA), а модулът SD карта е свързан чрез SPI комуникация (MISO, MOSI, SCK, CS). Пиновете 4 и 7 са дефинирани като CS щифт и изходен щифт от програмата Arduino, можете да ги промените на всеки друг пин, ако е необходимо. Преди това сме свързали SD картата с Arduino в проекта за музикален плейър.
Обяснение на програмата Arduino:
Трябва да напишем програмата Arduino, която може да направи следното.
- Прочетете данни от сензора DTH11 (или всякакви други данни, които искате да регистрирате).
- Инициализирайте I2C шината, за да прочетете данни от RTC модула.
- Инициализирайте SPI шината, за да свържете модула на SD картата с Arduino.
- Съхранявайте датата, часа, температурата и влажността в SD картата.
- Съхранявайте датата, часа, температурата и влажността в Excel лист, работещ на компютър / лаптоп.
Горните стъпки може да звучат сложно, но са много лесни, тъй като разполагаме с библиотеки, които да свършат трудната работа вместо нас. Трябва да изтеглите следните две библиотеки
- DHT11 Сензорна библиотека от GitHub
- DS3231 RTC библиотека на модули от Rinky-Dink Electronics
След като изтеглите библиотеката, добавете ги към вашия Arduino IDE, като следвате
Скица-> Включване на библиотека -> Добавяне на.ZIP библиотека
За да подадем данните от Arduino оживено в лист на Excel на компютър, ще трябва също да инсталираме софтуер, наречен PLX-DAQ, предоставен от Parallax Inc. Следвайте връзката, за да изтеглите файла и да ги инсталирате въз основа на вашата операционна система. Това трябва да е създало папка с име PLS-DAQ на вашия работен плот. Ще се погрижим за това по-късно в нашата работна секция.
Сега след добавяне на двете библиотеки и след инсталиране на софтуера, можете да използвате Пълния код (даден в долната част на урока) и да ги качите на вашия Arduino. Постарах се по най-добрия начин да поддържам кода възможно най-опростен, а обясненията също са дадени чрез раздели за коментари. По-нататък ще обясня важните сегменти по-долу.
1. Четене на данни от DS3231:
DS3231 е RTC (часовник в реално време) модул. Използва се за поддържане на датата и часа за повечето проекти по електроника. Този модул има собствено захранване с клетъчни монети, с което поддържа датата и часа, дори когато основното захранване е премахнато или MCU е преминал през твърдо нулиране. Така че, след като зададем датата и часа в този модул, той ще ги следи винаги.
Използването на този модул е много лесно поради библиотеката, предоставена от Arduino.
// Иницииране на DS3231 с помощта на хардуерния интерфейс DS3231 rtc (SDA, SCL); void Initialize_RTC () {// Инициализиране на rtc обекта rtc.begin (); // #### следващите редове могат да бъдат коментирани, за да се зададат датата и часът за първи път ### / * rtc.setDOW (ПЕТЪК); // Задайте Ден от седмицата на НЕДЕЛЯ rtc.setTime (18, 46, 45); // Задайте времето на 12:00:00 (24-часов формат) rtc.setDate (6, 30, 2017); // Задайте датата на 1 януари 2014 г. * /}
Забележка: Когато използвате този модул за първи път, трябва да зададете дата и час. Това може да стане, като просто премахнете коментарите, както е споменато по-горе, и напишете датата и часа. Не забравяйте да ги коментирате обратно и да ги качите, иначе всеки път, когато стартирате дъската, датата и часът ще бъдат зададени отново. Можете също да използвате RTC IC DS1307 за отчитане на времето с Arduino.
2. Четене на данни от DHT11:
DHT11 е сензор за влажност на температурата. Той изпраща стойностите на температурата и влажността като 8-битови данни последователно през изходния щифт на модула. Библиотеката чете тези данни, като използва софтуерната серийна функция на Arduino.
#define DHT11_PIN 7 // Изходният щифт на сензора е свързан към щифт 7 dht DHT; // Сензорен обект, наречен като DHT void Read_DHT11 () {int chk = DHT.read11 (DHT11_PIN); }
Тук съм свързал изходния щифт към пин 7, като пример можете да изберете всеки пин, който поддържа софтуерен сериал. Обаждане на DHT.read (ПИН номер); ще отчете стойността на температурата и влажността и ще я съхрани съответно в параметъра DHT.temperature и DHT.Humidity . Също така проверете това измерване на температура на Arduino на базата на DHT11.
3. Инициализиране на модула SC карта:
void Initialize_SDcard () {// вижте дали картата е налице и може ли да бъде инициализирана: if (! SD.begin (chipSelect)) {Serial.println ("Картата не е успешна или не присъства"); // не прави нищо повече: return; } // отваряме файла. имайте предвид, че само един файл може да бъде отворен наведнъж, // така че трябва да затворите този, преди да отворите друг. Файл dataFile = SD.open ("LoggerCD.txt", FILE_WRITE); // ако файлът е наличен, напишете в него: if (dataFile) {dataFile.println ("Дата, час, температура, влажност"); // Напишете първия ред от файла на Excel dataFile.close (); }}
Използването на SD карта с Arduino е лесно поради библиотеката на SD карти, която по подразбиране ще бъде добавена към IDE на Arduino. Във функцията за инициализиране на SD картата ще създадем текстов файл с име „LoggerCD.txt“ и ще напишем първия ред от нашето съдържание. Тук разделяме стойностите, като използваме „,“ като разделител. Това означава, че когато е поставена запетая, това означава, че трябва да преминем към следващата клетка в листа на Excel.
4. Записване на данни на SD карта
void Write_SDcard () {// отваряне на файла. имайте предвид, че само един файл може да бъде отворен наведнъж, // така че трябва да затворите този, преди да отворите друг. Файл dataFile = SD.open ("LoggerCD.txt", FILE_WRITE); // ако файлът е наличен, напишете в него: if (dataFile) {dataFile.print (rtc.getDateStr ()); // Съхраняваме дата на SD карта dataFile.print (","); // Преминаване към следващата колона с помощта на "," dataFile.print (rtc.getTimeStr ()); // Съхраняваме дата на SD карта dataFile.print (","); // Преминаване към следващата колона с помощта на "," dataFile.print (DHT.temperature); // Съхраняваме дата на SD карта dataFile.print (","); // Преминаване към следващата колона с помощта на "," dataFile.print (DHT.huminity); // Съхраняваме дата на SD карта dataFile.print (","); // Преминаване към следващата колона с помощта на "," dataFile.println (); // Преместване в края на реда към следващия ред dataFile.close ();// затваряме файла} else Serial.println ("OOPS !! Записването на SD карта не бе успешно"); }
Както казахме по-рано, нашето намерение е да запазим датата, часа, температурата и влажността в нашата SD карта. С помощта на библиотеката DS3231 и библиотеката DHT11 нашият Arduino ще може да чете всички тези четири параметъра и да ги съхранява в следните параметри, както е показано в таблицата по-долу
Дата |
rtc.getDateStr ()); |
Време |
rtc.getTimeStr ()); |
Температура |
DHT.температура |
Влажност |
DHT.влажност |
Сега можем директно да използваме тези параметри, за да ги съхраним на SD картата, използвайки реда за печат
dataFile.print (параметър);
Можете да забележите, че всеки параметър е разделен със запетая, за да изглежда четлив и dataFile.println (); се използва за обозначаване на края на реда.
5. Записване на данни в PLX-DAQ
PLX-DAQ е приставният софтуер на Microsoft Excel, който ни помага да записваме стойности от Arduino директно в файл на Excel на нашия лаптоп или компютър. Това е моят личен фаворит поради две причини:
1. Можете да пишете и наблюдавате данните едновременно и ни предоставя начин да ги начертаем като графики.
2. Не ви е необходим RTC модул като DS3231, за да следите датата и часа. Можете просто да използвате датата и часа, работещи на вашия лаптоп / компютър и да ги запазите директно в Excel.
За да използваме този софтуер с Arduino, трябва да изпращаме данните последователно по определен модел, точно както показва стойността на сериен монитор. Основните редове са обяснени по-долу:
void Initialize_PlxDaq () {Serial.println ("CLEARDATA"); // изчиства всички данни, останали от предишни проекти Serial.println ("LABEL, Date, Time, Temperature, Vlažnost"); // винаги пишем LABEL, за да го посочим като първи ред} void Write_PlxDaq () {Serial.print ("DATA"); // винаги пишем "DATA", за да посочим следното като Data Serial.print (","); // Преминаване към следващата колона с помощта на "," Serial.print ("DATE"); // Дата на съхранение в Excel Serial.print (","); // Преминаване към следващата колона с помощта на "," Serial.print ("TIME"); // Дата на съхранение в Excel Serial.print (","); // Преминаване към следващата колона с помощта на "," Serial.print (DHT.temperature); // Дата на съхранение в Excel Serial.print (","); // Преминаване към следващата колона с помощта на "," Serial.print (DHT.huminity);// Дата на съхранение в Excel Serial.print (","); // Преминаване към следващата колона с помощта на "," Serial.println (); // Преместване на края на реда към следващия ред}
Софтуерът може да разпознава ключови думи като LABEL, DATA, TIME, DATE и др. Както е показано във функцията Initialize, ключовата дума „LABEL“ се използва за записване на първия ROW на листа на Excel. По-късно във функцията Write използваме ключовата дума „DATA“, за да посочим, че следната информация трябва да се счита за DATA. За да посочим, че трябва да преминем към следващия ред, трябва да използваме запетая (“,”). За да посочим края на реда, трябва да изпратим Serial.println ();.
Както казахме по-рано, можем да напишем системната дата и час, като изпратим ключовите думи „ДАТА“ и „ВРЕМЕ“ съответно, както е показано по-горе.
Забележка: Не използвайте сериен монитор, когато използвате този софтуер PLX_DAQ.
Работно обяснение:
Работата с Arduino Data Logger е проста. След като хардуерът и софтуерът са готови, е време да запишете програмата във вашата Arduino Board. Веднага след като програмата ви бъде качена, вашите стойности за температура и влажност ще започнат да се съхраняват във вашата SD карта. Трябва да изпълните стъпките по-долу, за да разрешите на PLX-DAQ да влезе в листа на Excel в компютъра.
Стъпка 1: Отворете файла „Plx-Daq Spreadsheet“, който е създаден на вашия работен плот по време на инсталацията.
Стъпка 2: Ако има блок за сигурност, щракнете върху Опции-> Активиране на съдържанието -> Готово -> ОК, за да получите следния екран.
Стъпка 3: Сега изберете скоростта на предаване като “9600” и порта, към който е свързан вашият Arduino и кликнете върху Свързване. Вашите стойности трябва да започнат да се регистрират, както е показано на снимката по-долу.
Можете да оставите този Excel лист отворен и да наблюдавате стойностите, когато те се регистрират. Тъй като това се случва, нашата SD карта също би запазила същите стойности. За да проверите дали работи, просто извадете SD картата и я отворете на вашия компютър. В него трябва да намерите текстов файл с име „LoggerCD.txt“ . Когато се отвори, ще изглежда нещо подобно.
Този файл има данни, но би било трудно да ги анализирате в бележник. Следователно можем да го отворим в Excel като файл CSV (стойности, разделени със запетая), като по този начин го направим по-ефективен. За да отворите в Excel
1. Отворете Excel. Щракнете върху File-> Open и изберете “All file” в долния десен ъгъл и изберете “LoggerCD” файл от SD картата. Това ще отвори съветника за импортиране на текст.
2. Щракнете върху „Напред“ и изберете запетая като разделител. Щракнете отново върху „Напред“. След това завършете.
3. Сега вашите стойности ще бъдат отворени във файл на Excel, както е показано по-долу
Регистрирах стойностите на всеки 5 секунди; можете да ги регистрирате за всяко желано време, като промените функцията за забавяне в програмата. За подробно разбиране на работата, моля, гледайте видеото по-долу.
Надявам се, че проектът ви е харесал, ако имате някакви съмнения, напишете ги в раздела за коментари по-долу и аз ще ви помогна.
Подобрение на бонуса - Безжично регистриране на данни с помощта на Arduino:
След като успеете до този момент, след това с няколко напредъка и само с добавяне на няколко реда код можете да регистрирате данни безжично.
Просто свържете Bluetooth устройство като HC-05 и запишете данните в PLX-DAQ чрез Bluetooth, вместо през Serial. Това е заместител на Serial.print (параметър); с BluetoothName.print (параметър); и свържете своя лаптоп към вашия Bluetooth модул, изберете COM порта, към който са свързани вашите лаптопи Bluetooth и Taadaaa…… Имате работеща безжична система за регистриране на данни за нула време.