Як інженери / розробники, ми завжди покладаємось на зібрані дані для проектування або вдосконалення системи. Запис даних та їх аналіз є звичною практикою у більшості галузей, тут ми будуємо проект Arduino Data Logger, де ми дізнаємося, як можна реєструвати дані за певний проміжок часу. Ми будемо використовувати плату Arduino для зчитування деяких даних (тут температури, вологості, дати та часу) та збереження їх одночасно на SD-карті та комп’ютері.
Збережені дані можна легко відкрити в аркуші Excel для подальшого аналізу. Для збереження дати та часу ми будемо використовувати відомий модуль RTC DS3231, а для отримання температури та вологості будемо використовувати датчик DHT11. В кінці проекту ви дізнаєтесь
- Як записати дані на SD-карту із значеннями дати, часу та датчика.
- Як записати дані безпосередньо в аркуш Excel на ПК за допомогою послідовного зв’язку.
Необхідні матеріали:
- Макет
- Arduino UNO (будь-яка плата Arduino)
- DHT11 Датчик температури
- Модуль RTC DS3231
- Модуль SD-карти
- флеш-картка
- Підключення проводів
- Комп’ютер / ноутбук
Кругова діаграма:
Принципова схема для цього проекту реєстратора температури Arduino показана нижче.
Як показано на принциповій схемі, підключення дуже прості, оскільки ми використовували їх як модулі, і їх можна безпосередньо побудувати на макетній панелі. Далі з'єднання класифікуються в таблиці нижче
Pin Arduino |
Штифт модуля |
Датчик температури - DHT11 |
|
Vcc |
5 В |
Gnd |
Gnd |
Nc |
Nc |
Вийшов |
Штифт 7 |
Модуль RTC DS3231 |
|
Vcc |
5 В |
Gnd |
Gnd |
SCL |
Штифт A5 |
SDA |
Штифт A4 |
Модуль SD-карти |
|
Vcc |
5 В |
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 в проекті Music player.
Пояснення програми Arduino:
Ми повинні написати програму Arduino, яка може зробити наступне.
- Зчитуйте дані з датчика DTH11 (або будь-які інші дані, які ви хочете записати).
- Ініціалізуйте шину I2C для зчитування даних з модуля RTC.
- Ініціалізуйте шину SPI для взаємодії модуля SD-карти з Arduino.
- Зберігайте дату, час, температуру та вологість на SD-карті.
- Зберігайте дату, час, температуру та вологість на аркуші Excel, який працює на комп’ютері / ноутбуці.
Наведені вище кроки можуть здатися складними, але вони дуже прості, оскільки у нас є бібліотеки, які виконують за нас важку роботу. Вам потрібно завантажити наступні дві бібліотеки
- Бібліотека датчиків DHT11 від GitHub
- Бібліотека модулів RTC DS3231 від 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, щоб вказати це як перший рядок} 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.humidity);// Зберігати дату в Excel Serial.print (","); // Перехід до наступного стовпця за допомогою "," Serial.println (); // Кінець рядка перейти до наступного рядка}
Програмне забезпечення може розпізнавати такі ключові слова, як LABEL, DATA, TIME, DATE тощо. Як показано у функції Initialize, ключове слово “LABEL” використовується для написання першого РЯДУ аркуша Excel. Далі у функції Write ми використовуємо ключове слово “DATA”, щоб вказати, що наступну інформацію слід розглядати як DATA. Щоб вказати, що нам потрібно перейти до наступного рядка, ми повинні використовувати кому (“,”). Щоб вказати кінець рядка, нам потрібно надіслати Serial.println ();.
Як було сказано раніше, ми можемо записати системну дату та час, надіславши ключові слова “DATE” та “TIME” відповідно, як показано вище.
Примітка: Не використовуйте послідовний монітор під час використання цього програмного забезпечення PLX_DAQ.
Робоче пояснення:
Робота з реєстратором даних Arduino проста. Коли обладнання та програмне забезпечення готові, настав час записати програму на вашу плату Arduino. Як тільки ваша програма буде завантажена, ваші значення температури та вологості почнуть зберігатися на вашій SD-карті. Вам потрібно виконати наведені нижче дії, щоб PLX-DAQ міг увійти в аркуш Excel на комп'ютері.
Крок 1: Відкрийте файл “Таблиця Plx-Daq”, який був створений на вашому робочому столі під час встановлення.
Крок 2: Якщо є блок безпеки, натисніть Параметри-> Увімкнути вміст -> Готово -> ОК, щоб отримати наступний екран.
Крок 3: Тепер виберіть швидкість передачі даних як “9600” і порт, до якого підключений ваш Arduino, і натисніть на Connect. Ваші значення повинні починати реєструватися, як показано на малюнку нижче.
Ви можете залишити цей аркуш Excel відкритим і контролювати значення, коли вони реєструються. Оскільки це відбувається, наша SD-карта також зберегла б ті самі значення. Щоб перевірити, чи працює, просто вийміть SD-карту та відкрийте її на своєму комп’ютері. Ви повинні знайти в ньому текстовий файл з назвою “LoggerCD.txt” . При відкритті це виглядало б приблизно так.
Цей файл містить дані, але проаналізувати їх у блокноті буде важко. Отже, ми можемо відкрити його в Excel як файл CSV (значення, розділені комами), що робить його більш ефективним. Відкрити в Excel
1. Відкрийте Excel. Клацніть на Файл-> Відкрити та виберіть "Усі файли" в нижньому правому куті та виберіть на карті SD файл "LoggerCD". Після цього відкриється майстер імпорту тексту.
2. Клацніть на «Далі» і виберіть кому як роздільник. Знову натисніть кнопку «Далі». Потім закінчити.
3. Тепер ваші значення будуть відкриті у файлі Excel, як показано нижче
Я реєстрував значення кожні 5 секунд; Ви можете записати їх у будь-який бажаний час, змінивши функцію затримки в програмі. Для детального розуміння роботи перегляньте відео нижче.
Сподіваюся, вам сподобався проект, якщо у вас є якісь сумніви, напишіть їх у розділі коментарів нижче, і я допоможу вам.
Покращення бонусу - Бездротовий журнал даних за допомогою Arduino:
Після того, як ви досягли успіху до цього моменту, за допомогою кількох прогресів і просто додавши кілька рядків коду, ви можете реєструвати дані бездротовим способом.
Просто підключіть пристрій Bluetooth, як HC-05, і запишіть дані на PLX-DAQ через Bluetooth замість послідовного. Тобто замінити Serial.print (параметр); з BluetoothName.print (параметр); і підключіть свій ноутбук до свого модуля Bluetooth, виберіть COM-порт, до якого підключені ваші ноутбуки Bluetooth, і Taadaaa…… У вас швидко працює система бездротового реєстрації даних.