Сегодня в уроке мы сохраним данные и время считывания данных в файл. Который можно открыть в Excel и построить график.
Как вывести график на смартфон, в режиме реального времени смотрите тут: Arduino SD карта. Воспроизводим звуки и музыку в wav формате.
Для урока нам понадобиться:
1. Arduino UNO или Arduino NANO
2. Модуль SD карты .
3. Беспаечная макетная плата .
5. Модуль реального времени DS3231
Модуль DS3231 выбрал не случайно. В нем есть датчик температуры . И мы можем сохранять значение температуры и время замеров .
Это наглядный пример использования легирование показаний с датчиков . Вы можете использовать другое датчики: DS18B20, DHT11, DHT22 . Также вы можете использовать одновременно несколько датчиков и сохранять показание с них.
Подключаем SD-модуль и модуль реального времени DS3231 к Arduino UNO по схеме.
Для работы нам понадобиться библиотека DS3231.h. Скачать ее можно с сайта разработчика или в разделе для скачивания файлов внизу страницы.
Мы уже научились работать с картой, если возникнут сложности посмотрите предыдущий урок: Arduino SD карта. Создаем, удаляем файлы. Чтение, запись файлов.
Перейдем сразу к модулю времени DS3231 . Для его подключения нужно добавить всего пару строк:
#include <DS3231.h> // Библиотека для часов реального времени
// Подключаем часы реального времени
DS3231 rtc(SDA, SCL); //(A4 = SDA, A5 = SCL)
void setup() {
....
rtc.begin(); // инициализируем часы реального времени
}
Для вывода текущего времени и температуры есть 2 функции.
#include <SD.h>
#include <SPI.h>
#include <DS3231.h> // Библиотека для часов реального времени
File myFile;
// Подключаем часы реального времени
DS3231 rtc(SDA, SCL); //(A4 = SDA, A5 = SCL)
// Измените это в соответствии с вашей платой расширения или модулем;
const int chipSelect = 4;
void setup() {
// Открыть последовательное соединение и ждать открытия порта:
Serial.begin(9600);
Serial.println("Initializing SD card...");
if (!SD.begin(chipSelect))
{
Serial.println("initialization failed!");
while (1);
}
Serial.println("initialization done.");
rtc.begin(); // инициализируем часы реального времени
}
void loop() {
// выведим время и черз запятую температуру с дачика модуля DS3231
Serial.print(rtc.getTimeStr());
Serial.print(",");
Serial.println(int(rtc.getTemp()));
// открываем файл для записи
myFile = SD.open("test.csv", FILE_WRITE);
if (myFile) { /// записываем данные черз запятую
myFile.print(rtc.getTimeStr());
myFile.print(",");
myFile.println(int(rtc.getTemp()));
myFile.close(); // закрываем файл
}
// Если не получилось открыть файл для записи выводим ошибку
else {
Serial.println("error opening test.txt");
}
delay(10000); /// ждем 10 сек. И повторяем запись данных в файл.
}
Для примера работы выведем время и показания в монитор порта.
И точно такие же показания будем сохранять в наш файл.
Можно сохранять в текстовый файл. А можно сохранить в файл TEST.csv.
Это тоже текстовый файл. Но его можно сразу открыть в Excel.
Осталось только построить график по полученным данным.
У вас наверное возникнет вопрос, почему у меня так скачет температура? Нет у меня нет резкого изменения температуры в комнате. Просто я погрел пальцами модуль времянки. И после он постепенно остывал.
Этот небольшой урок дает представления о возможностях легирования данных с использованием Arduino и SD карты.
Понравилась статья? Поделитесь ею с друзьями:
Файлы для скачивания
![]() |
DS3231.zip | 379 Kb | 404 | Скачать |
Вернуться в раздел: Уроки Arduino: Подключение датчиков и модулей к Arduino Дата публикации 18 октября , 2019
Читайте также
Комментарии
Войдите или Зарегистрируйтесь И Вы сможете общаться на форуме и оставлять комментарии без капчи.