Как запрограммировать журнал температуры с помощью Arduino Uno?

  1. Список продуктов
  2. Накладка на SD-карту
  3. Сохранение данных - программа Hello world
  4. Часы реального времени
  5. Установка и время чтения
  6. Финальная программа
  7. Анализ данных

В последнем руководстве мы показали, как создать устройство для измерения температуры и влажности с помощью Arduino. Теперь мы расширим его функцией записи данных на SD-карту и записи времени каждого измерения.

Нам понадобится накладка на SD-карту и часы реального времени. Дисплей может остаться на обложке Grove. Если вы хотите использовать регистратор данных без дисплея, вы можете отключить его.

Список продуктов

Накладка на SD-карту

Описание и сборка

Регистратор сохраняет собранные данные на общедоступных картах SD, SDHC или micro SD (в данном случае с адаптером). Карта помещается на специальную накладку в верхней части устройства, которая расположена между Arduino и крышкой, расширяющей основание экрана.

Необходимые библиотеки для наложения SD-карты уже включены в Arduino Studio, поэтому нам не нужно устанавливать их отдельно. Документацию можно найти на сайте Arduino ,

Сохранение данных - программа Hello world

Первые данные сохраняются на карту с помощью следующей программы:

#include <SPI.h> #include <SD.h> int SELECTED_CHIP = 4; int count = 0; void setup () {Serial.begin (9600); if (SD.begin (SELECTED_CHIP)) {Serial.println ("SD-карта инициализирована."); } else {Serial.println («SD-карта не работает или отсутствует»); }} void loop () {String line = String ("Hallo Welt #") + String (count); writeToSD (линия); количество = количество + 1; Задержка (1000); } void writeToSD (String line) {File dataFile = SD.open ("test.csv", FILE_WRITE); if (dataFile) {dataFile.println (line); // Запись на SD-карту dataFile.close (); // закрытие данных Serial.println (line); } else {Serial.println ("Ошибка открытия файла данных"); }}

В начале должны быть определены две переменные: SELECTED_CHIP указывает, какое оборудование будет использоваться в оверлее. Это значение получено от производителя оверлея. Переменная count используется для подсчета операций непрерывной записи для сохранения номера на карте.

В программе setup () создается последовательное соединение для устранения ошибок и последующего подключения к SD-карте. Метод SD.begin () показывает, может ли соединение быть успешно создано.

В цикле Loop () создается строка, которая затем сохраняется на SD-карту с помощью функции writeToSD (). Для этого мы используем класс String, который позволяет гибко работать с цепочками строк. Оператор + объединяет две строки, поэтому переменная count сначала преобразуется с помощью String (count) в строку. Значение счетчика увеличивается на 1 и сохраняется в секунду.

Запись происходит в функции writeToSD (). Благодаря SD.open () он открывается или - если его там еще нет - создается файл (важно: имя файла может содержать не более 8 символов). Функция FILE_WRITE открывает файл. Если файл успешно открыт, файл содержит объект класса файла, который записывает строку в цикл loop ().

Затем закройте файл, чтобы убедиться, что он не будет поврежден при извлечении карты или отключении питания. В случае устранения ошибок мы отображаем значение строки также на последовательном интерфейсе.

Если открытие не удалось (например, из-за отсутствия SD-карты), то файл пуст и сообщение об ошибке отправляется на последовательный интерфейс.

Часы реального времени

Описание и сборка

В отличие от ПК, Arduino не имеет встроенных часов, так как он не требуется для многих приложений. Для регистратора данных используется модуль Grove RTC, который содержит тактовую микросхему DS1307.

Для часов реального времени требуется дополнительный источник питания в виде плоской батареи 3 В (CR1225), чтобы сохранить установленное время, когда Arduino не будет подключен к электричеству. Без дополнительной батареи часы реального времени не работают должным образом - поэтому вы не можете сдаться, даже если Arduino будет постоянно подключен к электричеству.

Связь осуществляется через систему шин I²C, поэтому можно использовать любой разъем этого типа.

Для часов реального времени, как и в случае с дисплеем, установите соответствующую библиотеку.

Файлы для скачивания: https://github.com/Seeed-Studio/RTC_DS1307/archive/master.zip

документация: http://wiki.seeed.cc/Grove-RTC/

Вам нужно скачать библиотеки, затем установить их через меню «Эскиз» -> «Связать библиотеки» -> «Добавить библиотеку .ZIP».

В каждой библиотеке есть примеры программ на вкладке «Файл» -> «Примеры».

Установка и время чтения

В финальной программе для установки времени мы используем собственный эскиз вместо метода setup (). В противном случае время будет сбрасываться при каждом запуске Arduino:

#include <Wire.h> #include <DS1307.h> часы DS1307; // создаем объект часов void setup () {Serial.begin (9600); // создать соединение с часами clock.begin (); // Die Zeit einstellen clock.fillByYMD (2017, 9, 24); clock.fillByHMS (18, 53, 15); clock.fillDayOfWeek (СБ); clock.setTime (); } void loop () {printTime (); Задержка (1000); } void printTime () {clock.getTime (); // Запрос времени от чипа Serial.print (clock.hour, DEC); Serial.print ( ":"); Serial.print (clock.minute, DEC); Serial.print ( ":"); Serial.print (clock.second, DEC); Serial.print ("|"); Serial.print (clock.dayOfMonth, DEC); Serial.print ( ""); Serial.print (clock.month, DEC); Serial.print ( ""); Serial.print (часы, год, DEC); Serial.println (); }

В настройке () мы открываем соединение с последовательным портом, чтобы отправить время на компьютер для контроля. В clock.begin () открывается соединение с часами, подготавливаются дата, время и день недели, а затем функция clock.setTime () отправляет информацию в часы реального времени (заменяя предыдущие значения текущими).

В цикле loop () время дается, а затем приостанавливается в секунду. В Arduino Studio результат отображается в разделе «Инструменты» → «Последовательный монитор».

Важно: отправка программы в Arduino занимает несколько секунд, поэтому трудно точно установить время. В случае данного приложения это не проблема - если измеренное значение регистрируется каждые несколько минут, отклонение на несколько секунд не имеет значения, тем более что значение записывается в течение дня.

Финальная программа

После тестирования всех частей мы можем расширить программу из последнего урока:

#include <SPI.h> #include <SD.h> #include <Wire.h> #include <DS1307.h> #include <DHT.h> #include <rgb_lcd.h> часы DS1307; DHT dht (A0, DHT22); rgb_lcd lcd; байт DEGREE_SYMBOL = 0; степень байта [8] = {0b00000, 0b00010, 0b00101, 0b00010, 0b00000, 0b00000, 0b00000, 0b00000}; длинный без знака DISPLAY_UPDATE_INTERVAL = 200; // 200 миллисекунд без знака long WRITE_INTERVAL = 60000; // 1 минута без знака long lastDisplayUpdate = DISPLAY_UPDATE_INTERVAL; unsigned long lastWrite = WRITE_INTERVAL; void setup () {Serial.begin (9600); // Инициализация последовательного интерфейса // Инициализация SD-карты int selectedChip = 4; if (! SD.begin (selectedChip)) {Serial.println («SD-карта неисправна или отсутствует»); } else {Serial.println ("SD-карта инициализирована."); } dht.begin (); // Создание соединения с часами .begin (); // Создать соединение с часами реального времени lcd.begin (16, 2); // Создать и инициализировать отображение - 2 строки по 16 символов lcd.createChar (DEGREE_SYMBOL, градус); // Das neue "°" - регистрация символов на дисплее} void loop () {float влажность = dht.readHumidity (); температура плавания = dht.readTempera (); if (isnan (температура) || isnan (влажность)) {Serial.println ("Не удалось прочитать из DHT"); возвращение; // данные не должны быть зациклены здесь loop ()} if (millis () - lastDisplayUpdate> DISPLAY_UPDATE_INTERVAL) {const float coldest = 18; const float hottest = 30; int red = limit (255 * (температура - самая холодная) / (самая горячая - самая холодная)); // Цвета от синего до фиолетового до красного int green = 0; int blue = limit (255 * (самая горячая - температура) / (самая горячая - самая холодная)); updateDisplay (красный, зеленый, синий, температура, влажность); lastDisplayUpdate = millis (); } if (millis () - lastWrite> WRITE_INTERVAL) {String line = String (getTime ()) + ";" + Строка (температура) + ";" + Строка (влажность); writeToSD (линия); lastWrite = millis (); }} String getTime () {clock.getTime (); // запрос времени от микросхемы String t = String (clock.dayOfMonth, DEC); t + = String ("."); t + = String (clock.month); t + = String ("."); t + = String (clock.year); t + = String (""); t + = строка (часы. час); t + = ":"; t + = String (clock.minute); t + = ":"; t + = String (clock.second); возврат т; } void writeToSD (String line) {File dataFile = SD.open ("datalog.csv", FILE_WRITE); if (dataFile) {dataFile.println (line); // запись на SD-карту dataFile.close (); Serial.println (линия); // Дополнительная запись в последовательный интерфейс для устранения ошибок else {Serial.println ("Ошибка открытия файла данных"); }} void updateDisplay (int красный, int зеленый, int синий, температура плавания, влажность плавания) {lcd.setRGB (красный, зеленый, синий); lcd.setCursor (0, 0); lcd.print ("T:"); lcd.print (температура); lcd.write (DEGREE_SYMBOL); lcd.print ( "С"); lcd.setCursor (0, 1); lcd.print ("H:"); lcd.print (влажность); lcd.print ( "%"); } float limit (float color) {// Значения цвета должны быть в пределах 0..255 if (color <0) {return 0; } else if (color> 255) {return 255; } else {вернуть цвет; }}

Новинкой в ​​этой программе является то, что есть два процесса с разными тактовыми частотами. Для отображения текущего и плавного цветового перехода дисплей должен обновляться несколько раз в секунду. С другой стороны, для подсчета измеренных значений на карте достаточно подсчитать минуты. Таким образом, простые прерывания с функцией задержки довольно невозможны.

Решение: благодаря функции millis () последние миллисекунды могут быть восстановлены при запуске Arduino. LastDisplayUpdate и lastWrite хранят последние обновления или записывают результаты на SD-карту.

При каждом запуске цикла цикла сравнивается, больше ли разница между этими значениями и millis (), чем значение DISPLAY_UPDATE_INTERVAL или, возможно, WRITE_INTERVAL, и только в этом случае она выполняется. Переменные lastWrite и lastDisplayUpdate инициализируются с длиной соответствующего интервала, чтобы выполнить оба действия сразу после запуска программы.

Наконец, в цикле loop () значения принимаются и проверяются датчиком. Если при загрузке значений возникают проблемы, появляется сообщение об ошибке, и выполнение loop () на этом этапе прекращается и начинается снова (т. Е. Значение с датчика считывается снова).

Затем он проверяет, должен ли дисплей обновляться. Это происходит, когда текущая разница во времени и lastDisplayUpdate больше, чем DISPLAY_UPDATE_INTERVAL. Цветовой тон определяется, и данные отправляются на дисплей. Для лучшего чтения здесь используется метод updateDisplay ().

Тогда lastDisplayUpdate устанавливается на текущее время.

То же самое происходит при сохранении данных на SD-карту. Если время последней операции сохранения превышает WRITE_INTERVAL, текущее время определяется часами реального времени, данные сохраняются на SD-карту, а lastWrite устанавливается на текущее время.

Время определяется методом getTime (), который проверяет время по часам реального времени и создает строку с датой и временем. Оператор + = добавляет правое строковое значение слева.

Анализ данных

Данные сохраняются в файле в формате datalog.csv и могут быть импортированы в таблицы Excel, LibreOffice Calc или Google для анализа.

Просто извлеките SD-карту из Arduino и поместите ее на компьютер для чтения.

Веселитесь, создавая!

название изображения: рейхельт

Похожие

Как использовать клавиатуру как мышь в Windows
Мышь является основой для комфортного использования Windows. К сожалению, он также может выйти из строя или разойтись (в случае беспроводной связи) Что делать в этом случае, когда у нас нет запасной мыши под рукой? Мы можем использовать клавиатуру. В случае неисправности мыши у нас есть два способа использовать клавиатуру для перемещения курсора на рабочем столе. Первый способ использует встроенную в Windows функцию
Как удалить вирус Genesis с помощью всплывающей рекламы и окон
Любое вредоносное ПО, которое атакует наш веб-браузер, чрезвычайно обременительно. Измененные домашние страницы и поисковые системы или дополнительные панели инструментов могут раздражать. В эту группу также входят вредители, которые вызывают всплывающие окна с рекламой. Как от них избавиться?
Как бесплатно взломать FB ID и пароль
Взлом аккаунта FB возможен благодаря широкому выбору способов. На рынке существует множество онлайн-программ, что дает вам возможность исправить, как взломать учетную запись Facebook в течение 2 минут. Более того, вам даже не нужно загружать какое-либо программное обеспечение или программу для него. Многие из них Facebook Spy программы приходят бесплатно, в то время как другие
Интернет не работает? Если перезагрузка маршрутизатора не работает, попробуйте это.
Советы по устранению неполадок Делать одно и то же снова и снова и ожидать разных результатов. Это безумие, и наблюдать за ним обычно легко. Давайте возьмем моего друга в качестве примера. Каждые выходные он ходит в одни и те же три бара, потому что "вот где цыпочки, чувак".
Контент-маркетинг: описание продукта
Хотя покупатели по-прежнему с большей вероятностью будут платить цену при совершении покупки, они ожидают от продавца достоверной информации и интересной информации о товаре или услуге, которые его интересуют. В случае магазинов с большим ассортиментом создание уникальных описаний товаров для всех товаров в списке является трудоемкой задачей. Однако стоит потратить время и ресурсы, чтобы выиграть как в глазах потребителей, так и в глазах поисковика. Как создать описание товара?
Как изменить меню Win + X в Windows 10
Административное меню, доступное с помощью Alt-Click (щелчок правой кнопкой мыши) значка меню «Пуск», также называется Power-user или WinX menu. Последнее соглашение об именах связано с возможностью запуска меню с помощью клавиши Windows + клавиша X ( Win + X ). Меню WinX доступно в Windows 8, 8.1 и Windows 10.
Программа Лизинг - Деловые программы - InsERT
Просмотр Мы предлагаем вам привлекательное предложение, которое мы подготовили в сотрудничестве с Европейским лизинговым фондом. Аренда наших программ - чрезвычайно выгодное решение как для предпринимателей, которые только что начали свой бизнес, так и для тех, кто
Как загрузить предварительный просмотр Microsoft Office 2016 бесплатно?
Microsoft выпустила публичную версию своего последнего офисного пакета - Office 2016. Мы найдем в них новую версию Outlook, Word, Excel и PowerPoint. Посмотрите, как загрузить пакет и протестировать его бесплатно. Новый Office 2016 является
Как инвестировать - средствами или самостоятельно? - Фондовый рынок Образование
Хотите, чтобы ваши деньги заработали больше, чем на депозите? Если мы подумаем об инвестициях на фондовом рынке, мы, наконец, столкнемся с дилеммой, вкладывать ли деньги самостоятельно или в инвестиционные фонды. Есть много причин, почему вы должны выбрать средства. Мы также ломаем другую сторону медали. Первая причина - диверсификация Первый и самый важный принцип инвестирования - как
Как скрыть рекламу и спонсируемые продукты на Аллегро
Вы не возражаете, что реклама и спонсорские продукты отображаются на Allegro, даже если у вас есть AdBlock? Сайт работает все медленнее и медленнее на вашем компьютере? Узнайте, как скрыть рекламу и рекламные продукты и очистить интерфейс Allegro.
Как включить и отключить роуминг на вашем телефоне
... данных, потому что тогда телефон будет использовать дорогие услуги роуминга . Давайте проверим, что именно является роумингом и как он влияет на вашу учетную запись, и как включить и отключить роуминг на наших телефонах. Что такое роуминг ? Когда приближается сезон отпусков, дискуссии на эту тему часто появляются в СМИ. роуминг , Но что именно это? Хотя концепция

Комментарии

Статью: Как включить обновления программного обеспечения в системе Arlo?
Так как же заработать хорошую маму с экспертными знаниями? Откройте свой собственный интернет-магазин, создайте блог компании, поделитесь своим опытом, вдохновением и приобретенными знаниями и радостью быть матерью. Интернет магазин с поделками У вас есть художественный талант, и вы любите рисовать? Или, может быть, вы можете создавать куклы, обнимашки и другие игрушки, одеяла, покрывала для подушек и одеял, одежду. Изделия ручной работы созданы
Просто как обратить внимание на интересный контент в такой ограниченной области, как окно браузера?
Просто как обратить внимание на интересный контент в такой ограниченной области, как окно браузера? Как привлечь внимание пользователей вашего сайта к интересному и важному контенту или предложить им наиболее интересные продукты, предлагаемые вами? Воспользуйтесь бесплатным расширением DJ-ImageSlider , благодаря которому вы сможете отобразить эффективный слайдер! Для кого эта электронная книга? Курс Joomla! Бесплатный
Спросите себя: «Как я собираюсь справиться с этим, когда я знаю, что мой подросток собирается кричать на меня?
Спросите себя: «Как я собираюсь справиться с этим, когда я знаю, что мой подросток собирается кричать на меня? Что мне делать, когда она просит использовать машину, когда она знает, что я собираюсь сказать «нет»? Приготовьтесь. Скажи: «На этот раз я не буду с ней спорить. Никто не может заставить меня сделать это. Я не даю ей разрешения нажимать на мои кнопки ». Ваша позиция должна быть:« Неважно, как сильно вы пытаетесь втянуть меня в борьбу за власть, этого не произойдет ». Позвольте себе руководствоваться
Или, может быть, даже поддерживать развивающийся список покупок вместе со своим значительным другом, который вы оба можете обновить в любое время и в любом месте?
Или, может быть, даже поддерживать развивающийся список покупок вместе со своим значительным другом, который вы оба можете обновить в любое время и в любом месте? Easy peasy: откройте заметку, затем нажмите значок меню из трех точек в правом нижнем углу и выберите «Collaborator». Начните вводить имя человека или адрес Gmail, и Keep покажет вам список предложений от ваших контактов по мере ввода; Вы можете нажать одно из его предложений или продолжить ввод адреса электронной почты вручную. И если
Что если я скажу вам, что вы можете получить телефон, который будет таким же стильным и мощным, как Samsung Galaxy S7 , но за долю цены?
Как их сложить?
Как их сложить? Этот процесс требует большего объяснения. Все, что вам нужно сделать, это добавить товары на вкладку «Корзина», а когда вы решите закончить покупки, перейдите в кассу. Вы видите в корзине покупок Смык код скидки? Там вы должны вставить код скидки. Теперь активируйте его, и вам будет предоставлена ​​скидка Smyk. Последний шаг - выбрать способ оплаты, доставки и подтверждения заказа. Хотите проверить, что предлагают другие магазины? Посетите единственный магазин и розовый или
Как от них избавиться?
Как от них избавиться? Я уже думал, что всплывающие окна с рекламой - это пережиток прошлого, от которого я избавился из своей виртуальной жизни во времена Windows XP. К сожалению, я встретил неприятный сюрприз и на моем экране стали появляться всплывающие окна с рекламой примерно каждые 2 минуты. Как я с ними справился?
Как быстро работает Интернет в районе Osiedle Akademicki?
Как быстро работает Интернет в районе Osiedle Akademicki? В настоящее время ядро ​​сети имеет пропускную способность 10000 Мбит / с ( 10 Гбит / с ). Эффективная скорость передачи данных для жителей составляет от 100 Мбит / с до 1000 Мбит / с ( 1 Гбит / с ) в зависимости от сегмента, к которому подключена комната. Такая высокая скорость доступна постоянно, независимо от загрузки сети.
Как открыть брокерский счет за рубежом?
Как открыть брокерский счет за рубежом? Первым шагом является подготовка всех документов. Чаще всего вам потребуется сканирование паспорта и / или сканирование второго документа, удостоверяющего личность, и подтверждение вашего адреса. Подтверждением может быть текущий счет за электричество, газ, кабель или вывоз мусора. Идея заключается в том, что служба должна быть связана с определенным адресом (подписка на мобильный телефон исключена) и что в нее должны быть включены
Вопрос только в том, как это будет работать?
Вопрос только в том, как это будет работать? Поэтому мы решили выбрать 10 маршрутизаторов, которые будут лучшим выбором в определенном ценовом диапазоне. Сегодня мы рассмотрим сегмент, который учитывает большинство домашних
Ольга Токарчук - как начать читать?
Ольга Токарчук - как начать читать? 18 апреля состоялась премьера последней книги Ольги Токарчук - сборник рассказов под названием «Странные истории». Несколькими днями ранее литературный мир распространялся с новостями о том, что автор был в числе шести финалистов престижной международной премии «Человек-Букер». Читать дальше ...

К сожалению, он также может выйти из строя или разойтись (в случае беспроводной связи) Что делать в этом случае, когда у нас нет запасной мыши под рукой?
Как от них избавиться?
Как создать описание товара?
Сайт работает все медленнее и медленнее на вашем компьютере?
Что такое роуминг ?
Оуминг , Но что именно это?
Так как же заработать хорошую маму с экспертными знаниями?
Интернет магазин с поделками У вас есть художественный талант, и вы любите рисовать?
Просто как обратить внимание на интересный контент в такой ограниченной области, как окно браузера?
Как привлечь внимание пользователей вашего сайта к интересному и важному контенту или предложить им наиболее интересные продукты, предлагаемые вами?