Arduino термометр: Ардуино термометр на основе Uno и модуля DS18B20

Содержание

Термометр на DS18B20 и Arduino Nano. Для дома и работы

Полтора года назад* коллега по инженерству Димон попросил сделать термометр для рабочих нужд. Оказалось, что измерять околокомнатную температуру важных деталей нам просто нечем! Я взял на пробу несколько микросхем DS18B20, и после сборки макета точно понял — такому термометру работа найдётся и дома.

*Откопал черновик из июня 2019-го — не выбрасывать же?

Контроллер —  Arduino Nano. Удобно и доступно, даже не побоюсь этого слова — «изподножно».

Датчики
— две микросхемы DS18B20. Заказчик хотел именно так, потому что одну можно прислонить к детали, а второй измерять температуру помещения. Или обеими снимать показания с разных точек детали, а потом вывести среднее. Измеряемый диапазон: -55…+125 градусов Цельсия — хватит и мороз в холодильнике проверить, и нагрев ноутбука. Датчики берут питание от выводов A0 и A2 — сначала так было удобнее на время тестов, а потом прижилось.

Вообще их можно подключить к пяти вольтам и «земле».

Дисплей — первый попавшийся LCD 1602 с I2C-адаптером. Отображает показания каждого датчика и третью величину: среднее значение или разницу между ними.

N. B.! I2C-адаптеры собраны на микросхеме PCF8574 или PCF8574A. Они отличаются диапазоном адресов: по умолчанию 0x27 для PCF8574 и 0x3F для PCF8574A. Подойдёт любая — термометр сам выбирает между этими двумя адресами. Спасибо terog с «Пикабу» за код.

Вспомогательное — резистор 4,7 кОм (R1).

Дальше наши с Димоном устройства разделились. Он собрал термометр из пяти деталей, припаявшись проводами прямо к «Нане». Я нарисовал плату и добавил кнопку, чтобы переключать режимы «среднее/разница». Её «земля» так же включается на вывод

A0, но можно и на «землю» схемы.


Печатную плату делал по размеру дисплея и его I2C-адаптера, но регулировочное отверстие под потенциометр всё равно немного не совпало.

Резисторы — 0805, перемычки — 1206, конденсаторы — 0805 и 1206. Диод в SMA-корпусе. Впрочем, они с micro-USB разъёмом оказались совсем лишними — я вывел наружу разъём, который включается в «Нану», чтобы можно было с ней общаться по UART.


Включился и работает. Это ещё старая прошивка, которая показывала минус 127 градусов при отключённых датчиках. О текущей версии расскажу ниже.


Корпус оказался маловат — пришлось подпиливать плату напротив разъёма первого датчика и по-уродски выводить кабель до mini-USB штекера (он упирается в стенку, а провода под 90 градусов заворачивают вниз). На свободное место так и просится литиевый аккумулятор с зарядным устройством и «повышайкой». Димон по итогу так и сделал со своим термометром, я же питаюсь от USB.

Разъём питания и связи с ПК — M12 4-pin

Разъём для датчика — M12 3-pin

Кнопка с подсветкой — GQ12H

О работе прибора

N. B.! Гальваноразвязки, защиты от переполюсовки или превышения питающего напряжения нет. Одна моя «Нана» уже вкусила 24 вольта по входному разъёму, и больше температуру не измеряла.


При включении термометр мигает светодиодом в кнопке, показывая пользователю, сколько датчиков подключено. Два мигания — два датчика. Одно — работа с одним датчиком по упрощённому алгоритму, без вывода среднего значения или разницы. Нет датчиков — индикатор светится постоянно, а на дисплее висит надпись «Подключи и перезагрузи». Все стыковки-расстыковки надо делать на выключенном устройстве — программа не поддерживает горячей замены датчиков. Это происходит потому, что у каждой

DS18B20 есть уникальный серийный номер. Термометр ищет датчики только при включении, а затем сортирует их по возрастанию номеров. Поэтому неважно, какой датчик в какой из двух разъёмов подключать — первым будет всегда более ранний серийный номер. Я своим сделал пометки красной и зелёной «термоусадкой», и уже знаю, что первый — это красный.

Дисплей, помимо температуры с обоих датчиков, показывает среднее их значение или разницу. Режимы «среднее/дельта» переключаются умеренно долгим нажатием кнопки, а очень долгое нажатие включает-выключает подсветку дисплея. Может быть полезно, если надо оставить термометр на ночь, но не хочется, чтобы он светил в глаза.


Ещё термометр отправляет в COM-порт температуру по каждому датчику, среднюю и разницу. Причём его можно подключить не только к компьютеру, но и к телефону — через OTG-кабель.

Сфера применения устройства довольно широка:

  • узнать нагрев микросхемы очередной «понижайки» с Алиэкспресса;
  • проверить точность термометра-гигрометра с «Алиэкспресса»;
  • убедиться, что холодильник на съёмной квартире приказал долго жить, и внутри постоянно плюс девять;
  • узнать, какую температуру даёт строительный фен на минимальном положении регулятора;
  • подключить герметичный датчик на основе DS18B20, чтобы измерять температуру воды в детской ванне;
  • многое, многое другое.

Дополнение от 31.10.20


Немного обновил прошивку: кнопка больше не тупит, поэтому режимы «среднее/дельта» переключаются по короткому нажатию. Индикаторы датчиков сделал более наглядными. В скетче появилась закомментированная строка:

//#define REQUEST_PERIOD 2000

С её помощью задаётся период опроса датчиков и вывода температуры на экран и в UART. Когда строка закомментирована, то период определяется библиотечным минимумом 750 мс. Если вам не хочется, чтобы цифры часто мельтешили, ставьте 2000 или 5000 мс.

В архиве к тому же лежат уже скомпилированные файлы .hex, которые можно скормить ISP-программатору.

Arduino термометр своими руками на DS18B20 » NGIN.pro

Arduino термометр своими руками на DS18B20

Всем привет! Сегодня я собираюсь показать вам, как сделать LCD термометр с цифровым датчиком температуры DS18B20 с помощью Arduino, макетной платы и проводов.
 Таким образом, вы можете измерить температуру воздуха, жидкости, и температуру земли.* Выводятся данные о температуре на последовательном мониторе Arduino IDE.

Шаг 1: Информация о датчике
DS18B20 цифровой датчик температуры от Maxim IC. Пределы температур от -55 до 125 (+/- 0,5)(-67°F до +257°F). Каждый датчик имеет уникальный 64-битный серийный номер — это позволяет использовать огромное количество датчиков, которые будут использоваться на одной шине данных.
    Области применения включают в себя контроль температуры, промышленные системы, потребительские товары, термометры, или любая термочувствительная система

Шаг 2: Элементы
Для того, чтобы сделать термометр вам понадобятся следующие вещи:

    

Arduino (UNO, DUE, Micro, и т.п ..).
    DS18B20 датчик и один резистор 4.7кОм*
    16×2 ЖК-дисплей с шиной I2C.
    Макетная плата и перемычки, чтобы соединить все вместе.* Некоторые магазины продают датчик с 4.7K резистор

Шаг 3: БиблиотекиПеред тем, как начать делать термометр, необходимо скачать и распаковать следующие библиотеки для Arduino в  Progam Files (x86) / Arduino / Библиотеки (по умолчанию)

    


  1. 1- Wire bus
  2. Dallas Temperature, it does all the calculations and other stuff
  3. Liquid Crystal I2C
Шаг 4: Последовательный термометр
Для отображения данных на мониторе последовательно подключите датчик DS18B20 к Arduino с помощью перемычек и макетной платы и не забудьте подключить или припаять 4. 7K резистор между выводами 2 и 3 датчика.Затем скачайте, откройте и загрузите .ino файл, который называется — DS18B20_Serial.Если все в порядке, вы должны увидеть измеряемую температуру в Arduino IDE, как на скриншоте выше.
Скачать файл: ds18b20_serial.zip [671 b] (cкачиваний: 899) Шаг 5: ЖК-термометр

Если вы не хотите измерять температуру через последовательный монитор, то этот шаг для Вас!Подключите I2C LCD к контактам UNO, — A4 (SDA), A5 (SCL) и датчик к цифровому контакту 2. Затем скачайте и загрузите на Arduino .ino файл, который называется — DS18B20_I2C_LCD. Если все в порядке, вы увидите показания температуры на дисплее.

Скачать файл: ds18b20_i2c_lcd.zip [496 b] (cкачиваний: 1139)  

Удачи!

Arduino термометр на LM35 своими руками
WiFi Температурный датчик с использованием 4Duino-24
Индикация температуры и влажности с помощью D-duino и загрузка в ThingSpeak


Цифровой термометр DS18B20 и ARDUINO UNO

Казалось бы, что может быть интересного и нового в измерении температуры при помощи Ардуино? Написаны сотни статей, объемом десятки мегабайт, может чуть меньше, а может и чуть больше скетчей… А вот еще и моя статья. Зачем? Честно говоря, я тоже думал, что вопрос этот «разжеван вдоль и поперек», пока сам не столкнулся с измерением температуры. А тут полезло. Что-то не работает, что-то работает не так, возникает масса вопросов, на которые ответы приходится «выцарапывать» перерывая половину интернета, причем не только русскоязычного. Данная статья, в отличие от моих прошлых статей на данном ресурсе гораздо более практичная, но начнем сначала. Зачем, собственно измерять температуру чем-то новым, когда термометров продается – на любой вкус и кошелек? А дело в том, что температуру, зачастую, приходится не только измерять, но потом, на основе полученных данных что-то делать, либо просто регистрировать с целью отслеживания изменений. Соединив, при помощи Ардуино, термодатчик с релейным блоком получим простейший терморегулятор, а если данный терморегулятор сможет отслеживать температуру по нескольким точкам (зонам) и действовать по определенному алгоритму получим довольно серьезный прибор, промышленный аналог которого стоит сопоставимо со стоимостью неплохого ноутбука.

Однако, целью данной статьи не является создание заумно-сложных устройств. Цель в другом — предложить новичку простое, проверенное на практике, решение для измерения температуры. Также, как и предыдущие статьи эта будет состоять из частей. В каждой из которых будет рассмотрен свой вопрос. Части будут идти по возрастанию сложности.

Часть первая. Простейшая, но тоже полезная

Итак, от слов к делу! Для реализации данного проекта на первом этапе нам понадобится цифровой термодатчик DS18B20, ARDUINO UNO, резистор на 4,7 кОм (мощность особого значения не имеет, от 0,125 до 2 Вт целиком подходит, но имеет значение точность, чем точнее – тем лучше), кусочек 3-жильного провода (и отдельные проводки на этапе эксперимента тоже подойдут), а еще — несколько штырьков для платы. Хотя и без них тоже можно, если аккуратно, конечно. Выбор данного датчика не случаен. Дело в том, что он может отслеживать температуру в диапазоне от -55оС до +125оС с точностью в основной части диапазона 0,5оС, что вполне хватает для управления, как бытовым отоплением, так и разнообразными морозильными и холодильными установками, а также банями, саунами, теплицами, инкубаторами, рассадниками и прочим. Напоминаю, что ARDUINO UNO можно свободно приобрести здесь: arduino-kit.com.ua/uno-r3-new.html или здесь: arduino-kit.com.ua/arduino-leonardo-original-italiya-new-rev3.html , термодатчик DS18B20 — arduino-kit.com.ua/18b20-sensor-datchik-temperatury-dlya-arduino.html , хотя лично у меня – такой:arduino-kit.com.ua/cifrovoy-datchik-temperatury-odnozhilnyy-ds18b20.html достоинство моего — малые размеры, сопоставимые с размерами кабеля. Недостатки – отсутствие платы, что в некоторых условиях отрицательно сказывается на удобстве монтажа и жизнеспособности датчика. Также – у датчика arduino-kit.com.ua/18b20-sensor-datchik-temperatury-dlya-arduino.html встроен резистор и больше никаких резисторов паять не нужно, зато исчезает возможность подключить несколько датчиков «цепочкой». Подключение датчика к Ардуино видно на Рис. 1 и указано в Таблице 1. На термодатчике определить контакты просто. Нужно взять его так, чтобы смотреть на срез с цифрами, а ножки были внизу. Крайняя левая ножка будет GND, средняя DQ, а крайняя правая VDD.  

Таблица 1.

Пин Ардуино Уно

Пин DS18B20

Примечание

GND

GND

«-»

+5V

VDD

+5V, также подпаивается одна ножка резистора 4,7 кОм.

10

DQ

Цифровой ввод, также подпаивается вторая ножка резистора 4,7 кОм.


Рисунок 1. Подключение одного термодатчика.

На рисунке видно, что было использовано два резистора. Это связано с тем, что найденный мной резистор с маркировкой «4К7», на самом деле имел довольно высокую погрешность, которую и пришлось компенсировать вторым резистором. Общее сопротивление данной сборки составило 4,695 кОм, что я считаю вполне приемлемым. Также на рисунке можно видеть, что датчик не подпаян непосредственно к проводам (обрезок шлейфа), а вставлен в разъем. Сделано это было из соображений развития эксперимента. Паять данные датчики настоятельно рекомендуется. Сам скетч также получился довольно компактным:
Файл DS18B20.ino

Всего 14 строчек кода с комментариями. Любому новичку будет по силам разобраться. В результате работы программа выдаст нечто подобное:

 
Рисунок 2. Результат работы с одним датчиком.

Часть вторая. Немного усложненная.

Усложним мы эту часть тем, что добавим еще один датчик. Предположим, что нам нужно измерять температуру на улице и в помещении. Для этого всего лишь допаиваем один датчик «в цепочку». Очень напоминает параллельное подключение. Знатоки электрики поймут, о чем я. Но отличие есть: в данном случае выводы от центрального провода должны быть как можно короче. 

 
Рисунок 3. Плата с двумя датчиками.

Скетч вырос всего на 3 строчки. Теперь в нем 17 строк:
Файл DS18B20_2.ino

Результаты работы этого скетча видно на Рисунке 4. 

 
Рисунок 4. Работа с двумя датчиками.

Часть третья. Заключительная.

А теперь подключим к Ардуино светодиод, который будет загораться при достижении определенной температуры. Такой себе «пороговый сигнализатор». Для этого нужен обычный светодиод и токоограничивающий резистор. Мне под руку попался на 100 Ом, его я и использовал, подключив к 7-у контакту Ардуино. Длинную ножку светодиода (анод) подпаиваем к резистору, а короткую (катод) подключаем к контакту GND Ардуино. Должно получиться, примерно, как на рисунке 5. 

Скетч также вырос совсем не на много:
Файл DS18B20_2_plus_diod.ino

Работа данной программы на компьютере отображается точно также, как показано на Рисунке 4. Естественно переменной sensors.getTempCByIndex(1) можно оперировать в очень широких пределах и управление светодиодиком лишь самый простой пример из всех возможных.

И в заключение данной статьи еще один шаг. Сейчас я расскажу, как к одной Ардуинке подключить несколько «гирлянд» данных устройств. Дело в том, что длина «гирлянды» не может быть бесконечной, более того – она очень сильно ограничена. В идеальных условиях – 300 метров, но создание «идеальных» условий – довольно дорогостоящее удовольствие. В реальных условиях – не рекомендуется превышать 10 метров. Для обычного «комнатного» термометра этого более чем достаточно, но если речь идет о каком-либо более серьезном оборудовании – этого катастрофически мало. Тем более, что для стабильной работы необходимо, чтобы датчики располагались как можно ближе к проводникам шины – «гирляндой». Отводить, конечно, тоже можно, но точность и помехозащищенность в этом случае будут крайне низкими. Итак, подключаем мы несколько «гирлянд» именно для того, чтобы собрать информацию с большого числа точек, при этом сохранив достаточную точность и помехозащищенность. Добавляем контакты согласно таблице 2:

Пин Ардуино Уно

Пин DS18B20

Примечание

GND

GND

«-»

+5V

VDD

+5V, также подпаивается одна ножка резисторов 4,7 кОм.

10

DQ

Цифровой ввод, также подпаивается вторая ножка резистора 4,7 кОм.

8

DQ

Цифровой ввод, также подпаивается вторая ножка резистора 4,7 кОм.

Как видно из таблицы – ничего сложного нет, точно такая же шина, только на другой цифровой вод. Не стал паять на 9-й контакт только из соображений удобства и скорости пайки.
Скетч:
Файл DS18B20_2_plus_1.ino

Вряд ли скетч нуждается в излишних комментариях.

Результат работы скетча выглядит так:

 
Рисунок 6. Работа одновременно двух линий датчиков.

А плата с подключенными двумя линиями выглядит так: 

 
Рисунок 7. Плата с двумя шинами.

Из рисунка видно, что резистор 4,7кОм для повышения точности также выполнен составным.  

Библиотеки, примененные для написания скетчей рассмотренных в статье находятся здесь: 
OneWire.h
DallasTemperature.h 

Обзор подготовил Павел Сергеев

Аналоговый термометр с Arduino

Компоненты:

  1. Arduino Nano R3 (аналог Arduino Uno, но имеет меньший размер) × 1
  2. Датчик температуры DS18B20 × 1
  3. Аналоговый вольтметр 0-5В DVC × 1

 Для написание программы мы будем использовать Arduino IDE.

 

Руководство 

Шаг 1: Собираем все части

 

Шаг 2: Датчик температуры DS18B20

 

DS18B20 — это цифровой датчик, который точно измеряет температуру в диапазоне от -10 °C до + 85 °C. Это очень простой в использовании компонент. Имеет интерфейс One-Wire, поэтому нужно только подключить один провод. Основные характеристики: простота использования и точность.

Шаг 3: Аналоговый вольтметр постоянного тока 0-5В

 

Это недорогой аналоговый вольтметр постоянного тока. Он работает в диапазоне от 0 до 5 В постоянного тока. Он очень прост в использовании – вы просто подключаете провода к источнику напряжения, и он отображает напряжение.

Шаг 4: Как управлять вольтметром с Arduino

 

Сначала давайте посмотрим, как управлять вольтметром с Arduino. Мы подключаем положительную сторону вольтметра к цифровому выводу 9, а отрицательную – к GND. Arduino Uno не предлагает цифро-аналоговый преобразователь, и мы должны использовать один из выводов ШИМ, чтобы записать аналоговое значение на цифровой вывод Arduino. Цифровые контакты, поддерживающие ШИМ, имеют символ ~ рядом с ними.

Чтобы отправить значение вольтметру, мы используем команду analogWrite и записываем значение от 0 до 255. Если мы записываем 0, вольтметр показывает 0 В, а если мы записываем 255, вольтметр показывает 5 В.

Шаг 5: Построение аналогового термометра

 

Давайте теперь преобразовать вольтметр в термометр. Сначала нужно подключить датчик DS18B20. Мы подключаем контакт со знаком «–» к GND Arduino, контакт со знаком «+» к 5 В, а сигнальный контакт — к цифровому выводу 2. Вот и все.

Теперь предстоит работа с вольтметром. Для этого нужно открутить винты и снять металлическую пластину. Затем необходимо создать собственное изображение для измерительного прибора. Это можно сделать в любом графическом редакторе. Теперь все, что нужно сделать, — это распечатать картинку и приклеить её на место. Наш аналоговый термометр готов!

Шаг 6: Код проекта и тестирование

Для корректной работы нужна библиотека DallasTempera.

 

 

Если всё сделать правильно, то аналоговый термометр будет работать правильно.

датчик влажности и температуры на базе Ардуино с DHT11

Сегодня вы узнаете, как собрать электронный термогигрометр на базе Arduino и датчика влажности DHT11.
OLED, который вам понадобится, по диагонали 3,3 см (1,3”) и 128х64 точек, работающий на SPI-шине.

Чтобы обмениваться данными с дисплеем нужно будет установить библиотеку u8glib. С ее помощью будут выводиться числа, буквы, растровые изображения на комнатный термометр-гигрометр.

Шаг 1: Подключение к Arduino

Органический светодиод (OLED) – диод, в котором эмиссивный электролюминесцентный слой сделан из органического полимера, который начинает испускать свет под действием электрического тока. Этот слой органического полупроводника расположен между двумя электродами, обычно как минимум один из электродов светопроницаемый.

Дисплей, который я использую, по диагонали 3,3 см (1,3”), 128х64 точки, работает на четырехпроводном последовательном периферийном интерфейсе (шине SPI). Дисплей монохромный синий, потребляет 0,04 Вт энергии, что в десять раз меньше требуемой мощности обычного ЖК-дисплея 16х2.

OLED можно перенастроить для работы с другими шинами (I2C, например) или с трехпроводной SPI шиной. Для этого нужно перепаять один или два резистора с обратной стороны платы дисплея. Они отмечены нулями (на фото).

Для перенастройки на работу с i2c шиной – перепаять резистор BS1 на 1, а резистор BS0 оставить на 0.
Для перенастройки на работу с трехпроводной SPI шиной – перепаять резистор BS1 на 0, а резистор BS0 на 1.

Шаг 2: Немного о датчике DHT11

Датчик DHT11 – самый распространенный, недорогой цифровой датчик влажности и температуры. С помощью емкостного датчика влажности и термистора сенсор получает данные об окружающем воздухе, и отправляет результат на вывод данных (то есть не использует аналоговый выход). Его крайне просто использовать, но он требует четкой синхронизации обмена данными. Единственный минус датчика – он делает измерения каждые две секунды, то есть ваши данные фактически запаздывают на две секунды.

Характеристики:

  • малый размер, низкая стоимость
  • рабочее напряжения 3-5 В
  • максимальный ампераж в режиме запроса данных – 2,5 мА
  • диапазон измерения влажности воздуха 20-80%, погрешность не превышает 5%
  • диапазон измерения температуры 0-50°С, погрешность не превышает 2°С
  • частота измерений не превышает 1 Гц (одно измерение в секунду)

Шаг 3: Компоненты для сборки термогигрометра

Вам понадобятся следующие компоненты:

Шаг 4: Подключение датчика и дисплея

Ознакомьтесь со схемой подключения к макетной плате. Положительный и отрицательный выводы под напряжением и датчика, и дисплея подключите соединительными проводами к земле и к 5В выводу платы контроллера.

Подключите соединительным проводом выходной разъем датчика к разъему A0 микроконтроллера.

Подключите пины OLED дисплея к пинам микроконтроллера в следующем порядке:

  • пин DIN дисплея с пином 13 контроллера
  • пин CLK с пином 11
  • пин CS с пином 10
  • пин D/C с пином 9
  • пин RES с пином 8

Пины 13, 11, 10, 9 и 8 используются для передачи данных через интерфейс SPI платой Arduino Uno, а также являются разъемом ICSP с нижней стороны платы контроллера.
После подключения можно загрузить код в контроллер (загрузить его можно также и до подключения).

Шаг 5: Загружаем код

Этот этап достаточно простой, просто загрузите два файла с расширением «.INO» (они называются Farenheit и Celsius, для измерения в Фаренгейтах и Цельсиях соответственно), откройте их в программе Arduino IDE и загрузите в Arduino Uno.

Если вам не нравится шрифт, его можно поменять редактируя код. Для этого просто загрузите поддерживаемые шрифты в библиотеку u8glib.

Загрузите библиотекидля DHT и u8glib, разархивируйте и загрузите в папку библиотек (/Program Files(x86)/Arduino/Libraries (default)).

Последний файл с кодом для SSD1306 128X32 и 128X64 с SPI шиной, и для двуцветных OLED дисплеев (1/4 желтых, 3/4 синих диодов, SSD1306).

Файлы

Шаг 6: Испытания

Ваш датчик влажности и температуры на Ардуино на базе микропроцессора Arduino собран и теперь вы можете узнать температуру и влажность окружающего воздуха, когда вам угодно.

ESP8266 Wi-Fi термометр на несколько датчиков 18b20 через blynk

Похожие статьи

Arduino UNO как осциллограф

Контроллеры Arduino можно использовать как простейший осциллограф, для наблюдения за быстро изменяющимися электрическими сигналами.

Скачиваем программу Processing , после чего её устанавливать не нужно — она запускается с EXE-файла.

ESP8266 карманный вай-фай джаммер

Многие знают что же такое джаммер. Но давайте рассмотрим возможности вай-фай джаммера .В основном это устройство, которое выполняет какую либо спам-атаку на объект.Вы выбираете клиентов, которые хотите отключить от своей сети, и начните атаку. Пока атака выполняется, выбранные устройства не могут подключиться к своей сети.Также были реализованы другие виды атаки .

Как это работает

Протокол 802.11 Wi-Fi содержит так называемый фрейм деаутентификации. Он используется для безопасного отключения клиентов от беспроводной сети.Поскольку эти управляющие пакеты незашифрованы, вам просто нужен MAC-адрес маршрутизатора Wi-Fi и клиентского устройства, которое вы хотите отключить от сети. Вам не обязательно быть в сети или знать пароль, этого достаточно, чтобы быть в его диапазоне.

Установка и настройка RetroPie на Orange pi \ Raspberry Pi

Хотите поиграть в видеоигры из детства? Танчики, Контра, Чип и Дэйл, Черепашки Ниндзя… Все эти игры ждут вас! Из данного руководства вы узнаете как просто и быстро собрать и настроить ретро-консоль на базе микрокомпьютера Raspberry Pi и сборки эмуляторов RetroPie.

Теги: ESP8266 Wi-Fi термометр, 2 датчика 18b20, через blynk, esp8266 blynk ds18b20, termometr blynk, diy, iot, blynk, denis_geek, термометр с телефона, , blynk esp8266 dallas18b20, denis geek, сделай сам, вай-фай термометр блунк, вай-фай, термотер блунк

Пример температурного логгера — XOD

В этом примере описывается, как хранить данные датчика и обрабатывать их на компьютере. Мы будем считывать температуру окружающей среды и сохранять значения на microSD карте. После этого мы подключим карту microSD к компьютеру и проанализируем полученные значения температуры.

Требуемое оборудование

  • Arduino Uno плата
  • TMP36 аналоговый температурный датчик
  • microSD плата расширения
  • Формитированная microSD карта
  • Плата макетирования
  • Соединительные провода

Схема

  • Аналоговый термометр подключен к A0 аналоговому порту платы Arduino.
  • Платы microSD обычно используют интерфейс SPI для связи. Arduino Uno обеспечивает SPI на пинах 11, 12, и 13. CS пин может быть подключен к произвольному цифровому пину. Мы выбрали 10.

Примечание. Если вы используете другую модель платы, посмотрите на ее распиновку и техническое описание, чтобы правильно подключиться к шине SPI.

Программирование

Создайте новый проект в XOD и назовите его как-нибудь, вроде temparature-log.

Источник данных

  • Так как мы используем термометр на основе TMP36, мы добавляем thermometer-tmp36 к патчу. Этот термометр должен быть подключен к аналоговому порту Arduino. Мы подключили наш датчик к A0, поэтому установите значение пина PORT на A0.
  • Затем мы хотим привязать температуру к отметке времени, когда она была считана. Для этого используем system-time ноду. Эта нода отображает время в секундах, прошедшее с момента запуска программы. Если мы хотим непрерывно обновлять данные, нам лучше нумеровать каждую новую запись. count нода будет делать это для нас. Поместите её на патч и установите STEP значение на 1.

Сейчас у нас есть три источника данных на патче.

Ограничение частоты обработки данных

Нам нужно установить частоту обработки данных, чтобы ограничить объем считываемых данных и дать некоторое время, чтобы плата microSD очистилась после каждой записи. Самый простой способ сделать это — использовать clock ноду. Поместите её на патч и соедините со всеми тремя источниками данных.

IVAL пин отвечает за частоту генерации импульсов, и, как следствие, для получения нового объема данных. Мы решили получать и записывать данные 4 раза в секунду, поэтому мы установили IVAL значение 0.25 (=¼).

Формат данных

Мы прогнозируем получение большого колличества данных. Для упрощения обработки рекомендуется отформатировать их как таблицу. Каждая строка будет представлять собой одну запись: номер записи, отметку времени записи и значение температуры, считанное в этот момент. Чтобы объединить все значения данных и сохранить их, как одну строку, используйте join ноду. Поместите ноду join на патч и соедините её со всеми источниками данных.

D пин ноды join используется для разделения значений. С помощью этого пина вы можете установить символ или строку, которые вы хотите разграничить.

Существует множество текстовых форматов для хранения и обмена данными. Примерами таких форматов являются CSV (Comma-Separated Values) или TSV ((Tab-separated values)). Эти текстовые форматы используются для хранения табличных данных и обмена ими между различными компьютерными программами. В частности, приложения для работы с электронными таблицами, такие как Google Spreadsheets, Microsoft Excel, LibreOffice Calc, могут легко импортировать такие файлы. Посмотрите пример файла CSV, который определяет длительность треков для музыкального альбома:

No.,Title,Length
1,Hells Bells,5:12
2,Shoot to Thrill,5:17
3,What Do You Do for Money Honey,3:35
4,Givin’ the Dog a Bone,3:31
5,Let Me Put My Love into You,4:15
6,Back in Black,4:15
7,You Shook Me All Night Long,3:30
8,Have a Drink on Me,3:58
9,Shake a Leg,4:05
10,Rock And Roll Ain’t Noise Pollution,4:15

Итак, давайте использовать текстовый формат TSV для хранения. Чтобы разграничить значения с вкладками, поместите \t символ в D пин ноды join. \t представляет собой специальную последовательность для обозначения TAB символа, поскольку ее нельзя легко распечатать и отобразить в среде IDE.

Хранение данных

В XOD существует нода sd-log для добавления текстовых строк в конец указанного файла, хранящегося на SD-карте. Добавьте ноду sd-log в патч и настройте её входы:

  • Свяжите входной пин LINE с выходным пином ноды join.

  • CS пин используется для указания порта SPI интерфейса на Arduino плате. В этом примере это D10.

  • FILE пин указывает название файла на карте MicroSD. Назовем наш файл данных temp-log.txt.

  • W пин запускает новую запись. Соедините его с DONE пином термометра. С помощью этого линка в sd-log создается новая запись только при появлении нового значения температуры.

    Вот результирующий программный патч.

Измерение температуры

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

Температура окружающей среды изменяется медленно. Чтобы проверить логгер, мы форсируем изменения: мы охладим термометр в холодильнике и нагреваем его с помощью фена.

Когда будет собрано достаточно данных, вытащите карту microSD.

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

Откройте temp-log.txt файл на своем компьютере, чтобы узнать, что получилось.

Как видите, у нас есть таблица с тремя столбцами и множеством строк. Одна строка для одного образца. В первом столбце хранится номер записи (просто игнорируйте 00 части), второй столбец — это значение времени в секундах, а последнее — фактическая температура в градусах Цельсия. Вы можете использовать различные приложения для анализа данных. В нашем эксперименте мы будет использовать Google Spreadsheets.

Вы можете перемещать значения данных в электронную таблицу по-разному:

  • Выберите все данные из temp-log.txt файла, нажав CTRL+A в текстовом редакторе. Скопируйте то, что вы выбрали, нажав CTRL+C. Создайте новый документ Google Spreadsheet, выберите первую ячейку в таблице и нажмите CTRL+V.
  • Создайте новый документ Google Spreadsheet. Нажмите File -> Import.. -> Upload. Выберите temp-log.txt файл с карты microSD или перетащите его в поле. Выберите Tab тип разделителя и импортируйте данные.

После ввода данных вы можете визуализировать их.

  • Создайте пустой график, нажав Insert -> Chart.
  • Выберите Chart type. Мы выбрали Smooth line chart.
  • Отредактируйте X-AXIS и выберите столбец времени в качестве данных.
  • Отредактируйте SERIES и выберите столбец температуры в качестве данных.
  • нажмите CUSTOMIZE -> Chart & axis title.
  • Введите заголовки для вертикальной и горизонтальной осей. Мы назвали их Temperature, C и Time.
  • Установите минимальную и максимальную границы для вертикальной и горизонтальной осей. Устанавливаем (10,90) значение для Temperature, C оси и (0,3000) для оси Time .
  • Вы можете изменить цвет линии, нажав Series и выбрав цвет.

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

Если у вас возникли проблемы с попыткой повторить эксперимент, загрузите готовый проект и откройте его в среде IDE.

Вывод

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

Чтобы улучшить отображение работы устройства, используйте led и delay ноды связанные с ERR и DONE пинами чтобы ваше устройство четко показывало поступление записей без каких либо проблем или возникновение ошибки ( из-за сбоя / нехватки места / плохой SD-карты или неправильного соединения).

Цифровой термометр

с использованием датчика температуры Arduino и LM35


Цифровой термометр

с использованием датчика температуры Arduino и LM35:

В этом проекте мы объединили датчик температуры LM35 с Arduino для разработки цифрового термометра. Измеренная температура будет напрямую отображаться на ЖК-дисплее размером 16 * 2. LM35DZ может считывать температуру по шкале Цельсия. Выходное напряжение датчика прямо пропорционально температуре в градусах Цельсия.LM35 может использоваться в диапазоне от -55 ° C до + 150 ° C с точностью +/- 0,75 ° C. Итак, давайте узнаем, как создать цифровой термометр с помощью датчика температуры Arduino и LM35.

Есть также несколько других датчиков, таких как MLX, которые могут измерять температуру без какого-либо физического контакта.


Необходимые компоненты:

Для создания цифрового термометра нам понадобятся следующие компоненты.


Датчик температуры LM35:
Введение:

Серия LM35 — это прецизионные температурные устройства на интегральных схемах с выходным напряжением, линейно пропорциональным температуре по Цельсию.Устройство LM35 имеет преимущество перед линейными датчиками температуры, откалиброванными в градусах Кельвина, поскольку пользователю не требуется вычитать большое постоянное напряжение из выходного сигнала для получения удобного масштабирования по шкале Цельсия. Устройство LM35 не требует какой-либо внешней калибровки или подстройки для обеспечения типичной точности ± ° C при комнатной температуре и ± ° C во всем диапазоне температур от -55 ° C до 150 ° C.

Более низкая стоимость обеспечивается за счет обрезки и калибровки на уровне пластины. Низкое выходное сопротивление, линейный выходной сигнал и точная внутренняя калибровка устройства LM35 делают подключение к схемам считывания или управления особенно простым.Устройство используется с одиночными блоками питания или с плюсовыми и минусовыми блоками питания. Поскольку устройство LM35 потребляет от источника питания всего 60 мкА, у него очень низкий самонагрев — менее 0,1 ° C в неподвижном воздухе.

Характеристики:
  1. Калибровка непосредственно в градусах Цельсия (Цельсия)
  2. Линейная при масштабном коэффициенте 10,0 мВ / ° C
  3. Гарантия точности 0,5 ° C (при температуре 25 ° C)
  4. Рассчитан на полный диапазон от -55 ° C до 150 ° C
  5. Подходит для удаленных приложений
  6. Низкая стоимость за счет обрезки пластин
  7. Работает от 4 до 30 вольт
  8. Потребление тока менее 60 мА
  9. Низкое самонагревание, 0.08 ° C закапывать воздух
  10. Нелинейность всего 0,25 ° C типично
  11. Низкоомный выход, 0,1 Ом для нагрузки 1 мА
Рабочий:

Чтобы понять принцип работы датчика температуры lm35, мы должны понимать коэффициент линейного масштабирования. В характеристиках lm35 это значение составляет +10 милливольт на градус Цельсия. Это означает, что при увеличении выхода датчика на 10 милливольт значение температуры увеличивается на единицу.Например, если датчик выдает 100 мВ на выводе vout, температура в градусах Цельсия будет составлять 10 градусов по Цельсию. То же самое и с отрицательными показаниями температуры. Если датчик выдает -100 милливольт, температура будет -10 градусов по Цельсию.

Принципиальная схема показана выше. Вкратце, в центре рисунка два транзистора. Один имеет в десять раз большую площадь эмиттера другого. Это означает, что он имеет одну десятую плотности тока, поскольку через оба транзистора проходит одинаковый ток.Это вызывает напряжение на резисторе R1, которое пропорционально абсолютной температуре и почти линейно во всем диапазоне, который нас интересует. О «почти» части заботится специальная схема, которая выравнивает слегка изогнутый график зависимости напряжения от температуры. Усилитель наверху гарантирует, что напряжение на базе левого транзистора (Q1) пропорционально абсолютной температуре (PTAT), сравнивая выход двух транзисторов.

Усилитель справа преобразует абсолютную температуру (измеренную в Кельвинах) в градусы Фаренгейта или Цельсия, в зависимости от детали (LM34 или LM35).Маленький кружок с буквой «i» в нем — это цепь источника постоянного тока. Два резистора откалиброваны на заводе для получения высокоточного датчика температуры. В интегральной схеме много транзисторов — два посередине, некоторые в каждом усилителе, некоторые в источнике постоянного тока и некоторые в цепи компенсации кривизны. Все это умещается в крохотном корпусе с тремя выводами


Принципиальная схема и подключения:


Первым делом подключим датчик температуры LM35.Подключите 1-й контакт LM35 к 5 В Arduino UNO, а 3-й контакт к GND. Аналогичным образом подключите 2-й контакт к аналоговому входному контакту A0 Arduino UNO

.

Теперь мы подключим ЖК-дисплей 16 × 2 к Arduino.
1. Подключите контакты 1,3,5,16 ЖК-дисплея к GND.
2. Подключите контакты 2,15 ЖК-дисплея к VCC (5 В).
3. Подключите контакт 4 ЖК-дисплея к контакту D8 Arduino.
3. Подключите контакт 6 ЖК-дисплея к контакту D9 Arduino.
3. Подключите контакт 11 ЖК-дисплея к контакту D10 Arduino.
3. Подключите контакт 12 ЖК-дисплея к контакту D11 Arduino.
3. Подключите контакт 13 ЖК-дисплея к контакту D12 Arduino.
3. Подключите контакт 14 ЖК-дисплея к контакту D13 Arduino.


Исходный код / ​​программа:

Исходный код цифрового термометра, использующего датчик температуры Arduino и LM35, приведен ниже. Скопируйте этот код, вставьте его в свою Arduino IDE и загрузите на плату Arduino.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

14

18

19

20

21

22

23

24

25

26

27

28

29

30

34

35

36

37

38

39

40

41

42

#include

ЖК-дисплей LiquidCrystal (8,9,10,11,12,13);

#define sensor A0

байт степень [8] =

{

0b00011,

0b00011,

0b00000,

0b00000,

0b00000,

000

000

000

000

000

000 };

void setup ()

{

lcd.begin (16,2);

lcd.createChar (1 степени);

lcd.setCursor (0,0);

lcd.print («Цифровой»);

ЖК.setCursor (0,1);

lcd.print («Термометр»);

задержка (2000);

lcd.clear ();

}

пустой контур ()

{

/ * ——— Температура ——- * /

показание поплавка = analogRead (датчик);

температура поплавка = показание * (5,0 / 1023,0) * 100;

задержка (10);

/ * —— Результат отображения —— * /

lcd.clear ();

lcd.setКурсор (2,0);

lcd.print («Температура»);

ЖК.setCursor (4,1);

lcd.print (температура);

жк. Запись (1);

lcd.print («С»);

задержка (1000);

}


Видео демонстрация и объяснение:

Посмотрите этот видеоурок, в котором подробно рассказывается о цифровом термометре с использованием датчика температуры Arduino и LM35.

Цифровой термометр

с датчиком температуры LM35 и Arduino

Вот аналогичный проект, связанный с водонепроницаемым датчиком температуры, на случай, если вы хотите измерить температуру жидкости: Цифровой термометр с использованием водонепроницаемого датчика температуры Arduino и DS18B20

Цифровой термометр на базе Arduino

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

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

Измерение температуры — важная часть многих приложений.Поддержание точной температуры в складских помещениях, лабораториях, инкубаторах и т. Д. Имеет первостепенное значение.

Выберите следующий набор проектов Arduino, которые вы хотите изучить в Electronicshub : Arduino Projects »

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

Существуют разные типы термометров для разных целей. Наиболее часто встречающийся термометр — это медицинский или клинический термометр, который представляет собой ртутный стеклянный термометр.

Они используются для измерения температуры человеческого тела и являются примером аналогового термометра. В наши дни использование цифровых термометров увеличивается, поскольку они точны и безопасны в использовании.

В этом проекте разработан цифровой термометр на базе Arduino, который можно использовать для контроля температуры в помещении.

Принципиальная схема

Необходимое оборудование

Описание компонентов

LM35

LM35 — это прецизионный датчик температуры по шкале Цельсия.Выходное напряжение датчика прямо пропорционально температуре в градусах Цельсия. LM35 может использоваться в диапазоне от -55 0 C до +150 0 C с точностью +/- 0,75 0 C.

При комнатной температуре точность составляет +/- 0,25 0 C. Выходное напряжение LM35 изменяется на 10 мВ / 0 C, т.е. на каждые 1 0 C изменения температуры выходное напряжение изменяется на + / — 10 мВ. LM35 представляет собой 3-контактную ИС, и рисунок, изображающий контакты, показан ниже.

Аналогичным прецизионным датчиком температуры является LM34, который можно использовать для измерения температуры в градусах Фаренгейта. Его можно использовать для получения температуры непосредственно в градусах Фаренгейта.

Схема цифрового термометра

LM35 — датчик температуры, используемый в этом проекте. Выходной сигнал датчика прямо пропорционален температуре, но в аналоговой форме. Следовательно, выход LM35, то есть контакт 2, подключен к аналоговому входу A0 Arduino.

Поскольку это цифровой термометр, нам необходимо преобразовать аналоговые значения в цифровые и отобразить результат на дисплее, например ЖК-дисплее.В этом проекте мы использовали ЖК-дисплей 16X2. Контакты 1 и 2 ЖК-дисплея подключены к заземлению и питанию соответственно.

Для управления контрастностью дисплея контакт 3 ЖК-дисплея подключен к стеклоочистителю POT 10 кОм. Остальные клеммы POT подключены к питанию и заземлению. Контакты 15 и 16 ЖК-дисплея используются для включения подсветки ЖК-дисплея.

Они подключены к питанию и заземлению соответственно. Для отображения информации на ЖК-дисплее нам нужны 4 вывода данных ЖК-дисплея. Контакты 11-14 (D4-D7) подключены к контактам 5-2 Arduino.Контакты 4, 5 и 6 (RS, RW и E) ЖК-дисплея являются контактами управления.

Контакты 4 (RS) ЖК-дисплея подключены к контакту 7 Arduino. Контакт 5 (RW) подключен к земле. Контакт 6 (E) подключен к контакту 6 Arduino.

Рабочий

В этом проекте разработан высокоточный цифровой термометр. Он состоит из простых компонентов, таких как Arduino, датчик температуры LM35 и ЖК-дисплей. Работа схемы очень проста и объясняется ниже.

Датчик температуры i.е. LM35 постоянно контролирует температуру в помещении и выдает аналоговое эквивалентное напряжение, прямо пропорциональное температуре.

Эти аналоговые данные передаются в Arduino через A0. Согласно написанному коду, Arduino преобразует это аналоговое значение напряжения в цифровые показания температуры. Это значение отображается на ЖК-дисплее.

Скорость изменения захвата температуры может быть запрограммирована в коде. Вывод, отображаемый на ЖК-дисплее, является точным показателем комнатной температуры в градусах Цельсия.

Код

Примечание

  • Этот проект может использоваться для мониторинга температуры в помещении в диапазоне от -55 0 C до +150 0 C с очень точными показаниями.
  • Используемый датчик температуры (LM35) представляет собой прецизионный датчик температуры по шкале Цельсия. Если показания температуры требуются в градусах Фаренгейта, то можно использовать либо датчик температуры Фаренгейта (LM34), либо просто изменить код для преобразования Цельсия в Фаренгейт.
  • Термометр может питаться от батареи 9 В, что делает его портативным устройством, которое можно легко перемещать между разными комнатами или местами.
  • Может использоваться в транспортных средствах для определения условий обледенения дороги.
  • На основании показаний термометра системы кондиционирования, отопления и охлаждения могут управляться вручную или автоматически.

Инфракрасный термометр Arduino

Для измерения температуры доступны различные типы датчиков. Если вы хотите определять температуру бесконтактным способом, сначала следует использовать инфракрасный датчик термометра.Инфракрасный термометр MLX от Melexis — это бесконтактный датчик температуры.


Датчик температуры LM35 выдает выходной сигнал, зависящий от тепла, падающего на сенсорное устройство, но вы не можете попасть в огонь, чтобы определить точное значение температуры. Этот датчик MLX обеспечивает бесконтактное измерение температуры.

MLXESF-BAA Распиновка

Имя контакта, функция

ВСС, Земля. К этому штырю также подсоединяется металлическая банка.

SCL / Vz, последовательный тактовый вход для 2-проводного протокола связи.

PWM / SDA, цифровой вход / выход. широтно-импульсная модуляция или последовательные данные для 2-проводного протокола связи.

VDD, Внешнее напряжение питания.

Датчик внутренне содержит 17-битный АЦП и мощный DSP, способствовавший высокой точности и разрешению, и этот датчик обеспечивает два метода вывода, ШИМ и I²C, но этот вывод имеет вариации разрешения, как если бы вы взяли вывод как ШИМ, то 10- Битовый выход ШИМ обеспечивает разрешение 0.14 ºC, а метод I²C дает разрешение 0,02 ºC.

MLX калибруется на заводе в широком диапазоне температур: от -40 ºC до 85 ºC для температуры окружающей среды и от -70 ºC до 382,2 ºC для температуры объекта.

как работает инфракрасный термометр?

Мы знаем, что каждый объект излучает инфракрасные лучи, их концентрация зависит от температуры, но эти инфракрасные лучи не видны человеческому глазу. Обнаруживая ИК-лучи, мы можем квантовать температурный диапазон.Кстати датчик термометра MLX тоже работает.

Этот датчик состоит из двух секций, а именно: 1. Детектор термобатареи (он отвечает за преобразование тепловой энергии в электрическую), 2. Секция согласования сигнала (обрабатывает сигнал от детектора термобатареи и передает его в виде считываемого сигнала внешними периферийными устройствами).

Секция формирования сигнала

имеет 17-битный блок АЦП для преобразования сигнала, обнаруженного термобатареей, и блок калиброванного DSP (цифровая обработка сигналов), который квантует весь сигнал после того, как выходной сигнал проходит через клеммы PWM и I²C / TWI.

Схема приложения

Датчик термометра MLX — это устройство plug & play, поэтому мы можем напрямую подключить устройство оповещения и легко сделать устройство тепловой сигнализации.

Интерфейс MLX

Микроконтроллеры имеют способ связи I2C для сопряжения с внешними периферийными устройствами. Термометр MLX также имеет линии связи I2C, так что мы можем связать этот датчик с микроконтроллером без каких-либо дополнительных схем.

Датчик работает с питанием 3,3 В постоянного тока, если микроконтроллер работает с напряжением 5 В постоянного тока, нам нужны подтягивающие резисторы между линиями SDA и SCL к линии + 3,3 В постоянного тока.

MLX

Термометр с Arduino

Платы Arduino имеют линии связи I²C и легко взаимодействуют с I²C с помощью файла заголовка проводов. В этой статье в качестве примера используется плата Arduino uno, если вы используете другую плату Arduino и хотите узнать, как проверить линии I²C здесь.

Подключите датчик, как показано на рисунке, и подайте источник питания + 3,3 В постоянного тока от платы Arduino к датчику. Здесь резисторы 4,7 кОм используются для обеспечения подтяжки по линиям I²C.

Инфракрасный термометр Arduino Код

 / ********************************************** **** MLX ------------- Arduino VDD ------------------ 3.3V VSS --------- --------- GND SDA ------------------ SDA (A4 на старых платах) SCL ------------- ----- SCL (A5 на старых платах) ************************************** *************** /

#include  // библиотека I2C, необходимая для MLX
#include .h> // Библиотека SparkFunMLX Arduino

IRTherm therm; // Создаем объект IRTherm для взаимодействия во всем

константный байт LED_PIN = 8; // Дополнительный светодиод, подключенный к выводу 8 (активный низкий)

установка void ()
{
  Серийный номер .begin (9600); // Инициализируем Serial для вывода журнала
 therm.begin (); // Инициализируем тепловой ИК-датчик
 therm.setUnit (TEMP_F); // Устанавливаем единицы библиотеки на Фаренгейт
 // В качестве альтернативы, TEMP_F можно заменить на TEMP_C для Цельсия или
 // TEMP_K для Кельвина.
 pinMode (LED_PIN, ВЫХОД); // вывод светодиода как выход
 setLED (НИЗКИЙ); // светодиод выключен
}

пустой цикл ()
{
 setLED (ВЫСОКИЙ); // светодиод горит
 
 // Вызов функции therm.read () для считывания с датчика температуры объекта и окружающей среды.
 if (therm.read ()) // В случае успеха read () вернет 1, в случае неудачи - 0.
 {
 // Используйте функции object () и ambient () для захвата объекта и окружающей среды
// температуры.
// Это будут числа с плавающей запятой, вычисленные в единицах, которые вы установили с помощью setUnit (). Серийный  .print ("Объект:" + Строка (therm.object (), 2));
  Серийный  .write ('°'); // Символ градуса
  Серийный номер  .println («F»);
  Серийный номер  .print ("Ambient:" + String (therm.ambient (), 2));
  Серийный  .write ('°'); // Символ градуса
  Серийный номер  .println («F»);
  Серийный номер  .println ();
 }
 setLED (НИЗКИЙ);
 задержка (500);
}

void setLED (bool on)
{
 если (на)
 digitalWrite (LED_PIN, LOW);
 еще
 digitalWrite (LED_PIN, HIGH);
}

 

Номер ссылки

Библиотека Arduino для ИК-термометра

Датчик MLX Лист данных



Как сделать самодельный инфракрасный термометр на Arduino

Инфракрасный термометр MLX с Arduino позволяет проводить измерения температуры без необходимости касаться поверхности.

Это эффективный способ измерения температуры в ситуациях, когда доступ к измеряемой поверхности затруднен. Однако технология, лежащая в основе инфракрасного термометра с Arduino, непроста. Он основан на законе Стефана-Больцмана и на том, как тело излучает инфракрасное излучение, пропорциональное его температуре.

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

Как работает инфракрасный термометр

Он используется в медицине и сельском хозяйстве, а также для измерения температуры оборудования или устройства.

Эта последняя функция очень важна, поскольку может предотвратить проблемы внутри машин и электронных устройств. Особенно, когда контролируемая поверхность недоступна для измерения контактным термометром. Инфракрасный термометр стал очень популярным. Вы можете найти на рынке разные цены, качества и преимущества.Есть даже инфракрасный термометр, который подключается к мобильному приложению.

Источник: AFP

Основной принцип инфракрасного термометра

Температура у человека составляет от 36ºC до 37,2ºC. Ниже этого диапазона вы можете страдать от переохлаждения, а выше — от лихорадки.

Так как же инфракрасный термометр может узнать, что температура вашего тела 36ºC?

Молекулы, которые находятся внутри нашего тела или любого объекта, не стоят на месте. Они двигаются, как дети, когда у них передозировка шоколада в бейсбольном парке.Они не стоят на месте, даже если их связать.

То же самое происходит с молекулами. Кроме того, когда они двигаются, они испускают инфракрасное излучение. Это излучение находится ниже видимого спектра света, и поэтому мы, люди, не можем его видеть.

Чем выше температура тела или объекта, тем быстрее движутся молекулы и тем больше инфракрасного излучения излучает тело. Даже если вы можете сильно нагреть тело, оно может излучать видимый свет.

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

Технические характеристики MLX

Название MLX относится к семейству инфракрасных термометров. В этом семействе есть несколько моделей. Они обозначаются трехбуквенным суффиксом.

MLX диапазон температур и точность

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

Модель BAA инфракрасного термометра MLX поддерживает диапазон температур от -40ºC до 125ºC для температуры окружающей среды и от -70ºC до 380ºC для температуры поверхности объектов.

Что касается точности, это зависит от диапазона температур, который вы измеряете. В следующей таблице, взятой из листа технических характеристик данной конкретной модели, приводится сводка допустимых отклонений.

Температура окружающей среды (Ta) представлена ​​на оси X.Ось Y представляет температуру объекта (To).

Как подключить инфракрасный термометр MLX к Arduino

Подключение инфракрасного термометра к Arduino очень просто, поскольку он использует интерфейс связи I2C, как и многие другие компоненты.

Термометр MLX имеет 4 контакта:

Смотрите также

1. VIN: вывод питания. Это будет зависеть от регулятора напряжения, но обычно вы можете подавать 5 В или 3 В 3.

2.GND: заземляющий контакт или 0 В.

3. SCL: вывод тактового сигнала интерфейса I2C.

4. SDA: Вывод сигнала данных интерфейса I2C.

Для подключения инфракрасного термометра к Arduino следуйте приведенным ниже электрическим схемам.

Как запрограммировать инфракрасный термометр MLX на Arduino

Чтобы запрограммировать инфракрасный термометр с помощью Arduino, первое, что вам нужно сделать, это загрузить библиотеку Arduino. В этом случае мы собираемся использовать тот, который называется Adafruit.

Это очень простая библиотека, которая позволяет получать температуру в градусах Цельсия и Фаренгейта. Откройте диспетчер библиотек, найдите MLX и установите версию Adafruit.

После установки вы можете загрузить следующий код. Tcode работает одинаково на любой плате, совместимой с платформой Arduino.


Присоединяйтесь к нашей группе Telegram. Станьте частью интересного онлайн-сообщества. Присоединиться здесь.

Подпишитесь на нашу рассылку новостей

Получайте последние обновления и актуальные предложения, поделившись своей электронной почтой.Д-р Рауль В. Родригес

Декан школы бизнеса Woxsen. Он является зарегистрированным экспертом в области искусственного интеллекта, интеллектуальных систем, многоагентных систем Европейской комиссии и был номинирован на список Forbes 30 Under 30 Europe 2020.

Постройте графический термометр | Журнал Nuts & Volts


Используйте Arduino для измерения и отображения графиков изменения климата!

Я живу в районе Среднего Запада США, где каждую зиму становится холодно. Те из нас, кто живет в этом регионе, сосредотачиваются — осмелюсь сказать, одержимы — температурой наружного воздуха и ближайшими прогнозами и тенденциями.

Недавно я начал изучать способы улучшения и обновления моей «технологии теплового мониторинга» и придумал этот простой и легкий в сборке термометр для построения графиков трендов. Этот проект оснащен большим цветным графическим дисплеем, на котором текущая температура отображается большими жирными цифрами. Более того, он также отображает тенденции изменения температуры за последние 4, 8, 16 или 24 часа.

Для меня и моих братьев, одержимых температурой, он дает представление о внезапных изменениях, а также ободряет в середине зимы всякий раз, когда мы видим тенденции к повышению!

Этот проект объединяет ЦП (центральный процессор) Arduino, некоторые датчики температуры / влажности и модуль часов реального времени (RTC) в большой (3.Цветной графический ЖК-дисплей с диагональю 5 дюймов с высоким разрешением для создания забавного и полезного «графического термометра». Результатом этих усилий стало простое в сборке устройство, обладающее следующими характеристиками и функциями:

  • Обеспечивает устройство для наблюдения за погодой, ориентированное на местные условия: ваш задний двор.
  • Полностью автономная работа: Никаких сложностей с Wi-Fi или Интернетом.
  • Просто и легко собрать: использует доступные модули и детали.
  • Легко программируется и настраивается: на помощь приходит интегрированная среда разработки Arduino (IDE)!
  • Показывает температуру и влажность в помещении и на улице большими яркими цифрами: большой, красочный, легко читаемый дисплей.
    Пользовательский шрифт с крупными цифрами обеспечивает отличное качество отображения.
  • Ярко показывает тенденции погоды: Графики изменений температуры за предыдущие 4, 8, 16 или 24 часа.
  • Включает цифровые часы: показывает день, дату и время, что упрощает чтение графиков тенденций с отметками времени.
  • Compact: помещается в небольшой корпус, напечатанный на 3D-принтере, или устанавливается в корпус собственной конструкции.
  • Гибкая базовая платформа и корпус могут использоваться для других проектов и приложений.
    Этот проект может легко превратиться в полнофункциональные графические часы «день-дата-время».
    Доступный слот для SD-карты на ЖК-экране можно использовать для добавления новых функций (долгосрочная регистрация данных или ??).

Главный дисплей

Дисплей, представленный этим прибором, показан на Рисунок 1 .

РИСУНОК 1. Графический дисплей термометра.


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

А теперь самое интересное! Отображается графический график зависимости температуры от времени, показывающий последние тенденции изменения температуры.

Вертикальная ось Y может быть настроена на C ° или F °, в то время как горизонтальная ось X представляет время точно так же, как осциллограмма. Пользователь может нажать одну кнопку, чтобы выбрать периоды времени «ретроспективного просмотра» на 4, 8, 16 или 24 часа.

Как видите, часовые маркеры времени суток обозначают горизонтальную ось.

Оборудование

Доступность больших (3,5 дюйма) недорогих цветных ЖК-экранов 480×320 стала главной движущей силой этого проекта. Эти высококачественные ЖК-дисплейные модули теперь доступны по цене от 8 до 12 долларов и обеспечивают очень доступную яркую, красочную цифровую индикацию, а также графические изображения с высоким разрешением. Кроме того, эти дисплеи подключаются непосредственно к плате Arduino Uno или Mega 2560 (, рис. 2, ) и полностью поддерживаются программными библиотеками Arduino IDE.

РИСУНОК 2. Недорогой ЖК-дисплей подключается непосредственно к Arduino Mega.


Какой процессор: Uno или Mega?

На первый взгляд, скромные требования к вводу-выводу в этом проекте могут быть легко выполнены с помощью процессоров Arduino Uno или Mega. Однако несколько быстрых вычислений показывают, что для моей реализации цель хранения и построения графиков данных температуры за 24 часа потребует около 3,2 КБ оперативной памяти.

Кроме того, хотя основная программа невелика, для того, чтобы отображать символы высокого качества для больших цифровых считываний, вместе с самой программой необходимо хранить несколько больших таблиц данных шрифтов.

По этим причинам Uno с 2 КБ ОЗУ и 32 КБ программной памяти не отвечает нашим требованиям. Однако Mega 2560 с его 8 КБ ОЗУ и объемом программы 256 КБ отлично отвечает этим требованиям!

Датчики

Я начал эту разработку, используя некоторые «однопроводные» цифровые датчики температуры 18B20, которые у меня были под рукой. Хотя они отлично работали, я обнаружил, что однопроводные датчики DHT21 I 2 C могут предоставлять данные о температуре и влажности всего за 3,50 доллара за штуку.

С помощью пары этих парней легко собирать данные внутри и вне помещений. Поскольку для этих датчиков требуется только одна линия передачи данных, провод питания и заземляющий провод, длина трехжильного ленточного кабеля — это все, что необходимо для простого прохода через подоконник к наружному датчику.

Часы и четырехкнопочная панель управления

После того, как ранний прототип заработал, я решил добавить усовершенствование RTC. Всего за пару долларов дополнительный модуль DS3231 RTC предоставляет точную информацию о часах и календаре с автономным питанием.Несколько кнопок упрощают настройку часов. Тот же набор кнопок позволяет пользователю легко выбрать желаемый период графика тренда.

Схема

Полная схема графического термометра показана на рис. 3 .

РИСУНОК 3. Полная схема графического термометра Arduino.


При питании от простого настенного бородавки Arduino или зарядного устройства для сотового телефона на 5 В пользователь взаимодействует с прибором с помощью простого набора кнопок.

Если у вас уже есть запасная плата Mega, блок питания и несколько обычных мусорных ящиков, вы потратите менее 25 долларов на добавление цветного графического ЖК-дисплея (~ 10 долларов), модуля RTC (~ 2 доллара США), датчики (~ 3,50 доллара США за штуку) и массив кнопок (~ 2 доллара США).

Если у вас нет доступа к 3D-принтеру или вы не хотите изготавливать корпус самостоятельно, полный набор деталей корпуса, напечатанных на 3D-принтере, можно приобрести в магазине Nuts & Volts Junk Box.

Программное обеспечение

Проверенные и надежные библиотеки поддержки используются для управления интерфейсом RTC, интерфейсом датчика DHT21, цветным графическим ЖК-дисплеем и блокировкой кнопок.Их необходимо загрузить и добавить в вашу библиотеку IDE. Исходный код Arduino для графического термометра находится в загружаемом материале. Вот несколько основных моментов, которые помогут вам разобраться в деталях программы.

Во-первых, как обычно для проектов Arduino, библиотеки устройств, несколько констант конфигурации и некоторые ключевые переменные данных инициализируются в подпрограмме Setup () .

Затем начинается основной цикл (, рис. 4 ), который периодически проходит через следующий список задач:

  1. Обновлять отображение времени суток раз в минуту.
  2. Считывание показаний датчиков и обновление дисплеев каждые две секунды.
  3. Раз в минуту добавлять новое значение в память трендов.
  4. Проверить нажатие кнопок оператора.
    • Перейдите к программе Set-Clock при нажатии PB1 (+).
    • Измените период тренда, если нажать PB3 (Next).
  5. Обновлять и перерисовывать график тренда раз в минуту.

РИСУНОК 4. Главный цикл ().


Сохранение значений температуры в памяти трендов

Показания температуры с плавающей запятой (° C) считываются с каждого датчика DHT21 каждые две секунды.Показания вне помещения преобразуются в 16-битовое целое число со знаком в единицах «десятых долей градуса Цельсия» для включения в массив целых чисел памяти трендов, Tdata [] . Устройство Tdata [] рассчитано на 1530 элементов и рассчитано на 25,5 часов считывания показаний наружной температуры.

Один раз в минуту указатель индекса глобального массива, GBL_TdataNewPtr , увеличивается, и текущее показание наружной температуры сохраняется в Tdata [GBL_TdataNewPtr] .Таким образом, указатель GBL_TdataNewPtr проходит через все 1530 ячеек массива Tdata [] , заполняя его показаниями до тех пор, пока он не удержит 1530 минут (25,5 часов) данных.

Когда достигается конец массива, значение GBL_TdataNewPtr, сбрасывается обратно в ноль, таким образом «циклически» возвращаясь к первому местоположению массива. Несколько простых «if-тестов» с ограничением диапазона используются для обеспечения правильной работы GBL_TdataNewPtr при достижении границ конечной точки массива.При таком подходе видно, что каждое новое показание температуры, добавляемое в Trend-Memory , автоматически удаляет и заменяет самое старое показание в массиве Tdata [] .

В качестве примечания: при запуске программы (т. Е. Устройство подключено к источнику переменного тока или нажата кнопка сброса процессора) каждый элемент Tdata [] инициализируется значением, определенным как «NoData» (const int NoData = 9999 ;). Это значение игнорируется при построении графиков трендов и не позволяет ошибочным случайным значениям включения питания загрязнять график трендов.

Создание графика тренда

Чтобы построить график тренда, нам необходимо преобразовать сохраненные значения температуры в координаты точки XY на ЖК-дисплее. Рисунок 5 показывает, что ось X нашего графика тренда представляет время, а ось Y представляет температуру.

РИСУНОК 5. Данные тренда хранятся в круговом массиве данных.


Чтобы построить график, нам нужно отобразить ЗНАЧЕНИЯ температуры в координаты Y для отображения.Точно так же мы должны преобразовать каждый указатель INDEX массива в соответствующую координату X. Это могло бы быть сложной задачей, если бы не удобная функция Arduino map (…) . Как показано на рис. 6 , эта функция преобразует входное значение ( In_Value, ) в выходное значение ( Out_Value, ), используя линейную прямолинейную передаточную функцию. Переданные параметры In_Low , In_Hi , Out_Low и Out_Hi определяют уравнение прямой линии с соответствующим наклоном и смещением.Затем функция принимает In_Value в «десятых долях градуса» и возвращает преобразованное Out_Value в пиксельных координатах оси Y.

РИСУНОК 6. Функция карты преобразует данные для построения графиков.


Масштабирование графика оси Y

Чтобы лучше визуализировать тенденции и подчеркнуть даже небольшие изменения температуры, мы выполняем автоматическое «масштабирование по оси Y» каждый раз, когда строится новый график тенденции. Для этого данные для построения графика быстро предварительно просматриваются, чтобы найти значения MaxTemp (максимальное) и MinTemp (наименьшее) в наборе данных графика.

При наличии этих пределов график оси Y может быть «центрирован» относительно средней точки этих двух пределов. Затем общий график «усиления» настраивается так, чтобы значения MaxTemp располагались в самом верху графика или около него, а значения MinTemp располагались в нижней части графика или около нее.

Для этого используются пределы MaxTemp / MinTemp для управления значениями карты (…) In-HI / In_Low . Установив Out_Low на нижнюю координату Y графика графика и Out_HI на верхнюю координату Y, карта (…) Функция настроена на предоставление полностью масштабированной координаты Y для каждого значения температуры, которое мы графически отображаем.

Масштабирование графика оси X

Также необходимо правильно масштабировать и отображать ось X. Этот процесс немного сложнее, так как пользователь может выбрать периоды графика тенденции 4, 8, 16 или 24 часа. Еще одна проблема для нас — «цикличность» массива памяти трендов Tdata [] . Чтобы масштабировать X, нам нужен алгоритм, который будет «выбирать» и извлекать только 380 точек, которые нам нужно отобразить на экране из «базы данных» Tdata [] из 1530 показаний.

Это делается путем перехода / пропуска через массив данных тренда в определенных шагах, чтобы выбрать только показания температуры, которые находятся в пределах периода времени, который мы показываем на нашем графике. Значение « Skip_Step_Size » вычисляется, как показано на рис. 7 .

РИСУНОК 7. Формула масштабирования по оси X.


Чтобы отследить график, мы всегда начинаем рисовать с правой стороны экрана, начиная с GLB_TdataNewPtr — самого нового и самого последнего сохраненного элемента массива.По идее, мы затем продвигаемся от правого края экрана к левому краю, пиксель за пикселем, многократно вычитая значение Skip_Step_Size из GLB_TdataNewPtr .

Таким образом, мы «шагаем назад во времени», чтобы извлекать и отображать сохраненные исторические значения температуры по мере продвижения. Мы продолжаем делать это, пока не нанесем на график все положения оси X нашего графика (около 380 точек). Если вы внимательно посмотрите во время обновления графика, вы увидите, что график действительно рисует на экране справа налево.

Линии между точками

Чтобы избежать эффекта пунктирной линии, мы на самом деле рисуем короткие линии между соседними точками данных, чтобы заполнить любые пробелы, которые могут появиться при больших колебаниях температуры. Поскольку наши пиксели такие маленькие, мы также предпринимаем шаги, чтобы нарисовать «линии двойной ширины», чтобы было легче увидеть след.

Проблема создания крупных персонажей

Графические программы построения графиков, такие как fillRect (…) , drawLine (…) , drawPoint (…) , print (…) и другие предоставляются библиотекой ЖК-графики и используются во всей программе для создания готового дисплея. К сожалению, сам модуль ЖК-дисплея довольно прост и не включает многих встроенных функций рисования линий, печати текста или других функций аппаратного ускорения графики.

Это означает, что главный процессор (наш Mega) должен делать большую часть работы. Отображение красивого текста на экране — задача, требующая особенно больших вычислительных ресурсов. На рис. 8 показаны этапы высокого уровня, необходимые для «печати» показаний температуры на ЖК-экране.

РИСУНОК 8. Обзор «печати» текста на ЖК-дисплее.


Рисунок 9 представляет следующий уровень детализации, который показывает, что ЦП должен сначала очистить прямоугольную область фона за новым текстом, чтобы стереть все, что было ранее нарисовано на экране. Затем Mega должен получить битовую комбинацию каждого символа из поисковой таблицы символьной комбинации.

РИСУНОК 9. Детали печати текста.


Наконец, ЦП должен записать каждый из символов «пикселей переднего плана» в память ЖК-дисплея. Поскольку для выполнения каждого из этих действий требуется много циклов процессора, медленные (по сегодняшним меркам) тактовые частоты 16 МГц Mega заметно замедляют выполнение работы.

Несмотря на то, что для символов небольшого размера (например, 10-точечного шрифта) процессы достаточно быстрые, формирование больших цифр в наших основных показаниях температуры заметно замедляется. Поскольку мы обновляем эти значения каждые пару секунд, трудно не заметить мигание, которое это вызывает на этих дисплеях!

Что можно сделать, чтобы ускорить процесс?

Рисунок 9 показывает, что самый простой способ вывести число на экран — это просто прочитать новое значение температуры, отформатировать его для печати, а затем бездумно «вытянуть» его целиком на ЖК-экран.Ваш смартфон или настольный / портативный компьютер так быстро выполняет эти действия, что вы даже не можете оценить все, что происходит.

Однако с Mega наши большие цифры мигают, даже если их значения не изменились, и мы просто стираем и записываем одни и те же символы на экран. Если мы вставим некоторую логику перед этапами записи на экране, чтобы гарантировать, что мы пишем на экран только тогда, когда это абсолютно необходимо, мы можем улучшить производительность.

Например, если значение температуры изменилось с 39.От 4 до 39,8 градусов, нам действительно нужно обновить и изменить только один символ; то есть превратить 4 в 8.

Избегая ненужной перезаписи цифр «3», «9» и «.», Мы можем эффективно обновлять отображение в три раза быстрее. Фактически, если температура стабильная и не меняется, мы ничего не пишем на экран!

Предваряя процесс записи экрана с помощью сравнения нового символа с предыдущим символом (, рис. 10, ), мы можем избежать перезаписи неизмененного текста.

РИСУНОК 10. Улучшенная схема «Печать строки на ЖК-дисплей».


Этот метод доказал свою эффективность и значительно улучшает внешний вид инструмента. Это довольно просто сделать, и требуется всего несколько байтов ОЗУ, чтобы «запомнить» то, что мы выводили на экран во время предыдущего прохода по основному циклу .

Проблемы сборки и упаковки

Дизайн упаковки, проводки и корпуса для этого проекта оказался сопряжен с определенными проблемами.Сначала я подумал, что это очень удобно, когда ЖК-дисплей подключается к мегапроцессору. В конце концов, это одновременно выполняет около 20 соединений и создает прочную подсборку CPU-дисплея. Однако после соединения стало очевидно, что не было никаких удобных отверстий для крепления экрана к отверстию корпуса.

Кроме того, ЖК-модуль препятствует доступу к выводам ЦП, которые нам необходимо подключить к датчикам, модулю RTC и кнопкам. Кто бы мог подумать! Вот что у меня сработало.

Дизайн корпуса

Поскольку я всегда ищу проекты, оправдывающие покупку моего 3D-принтера, я всегда думал о распечатанном корпусе для этого проекта. С этой целью я использовал SolidWorks для моделирования всех внутренних частей и придумал дизайн корпуса, показанный на рис. 11 . Разъемы на задней стороне корпуса идут к датчикам температуры / влажности. Примечание: Я решил разместить датчик температуры / влажности в помещении снаружи шкафа, чтобы тепло от электроники не влияло на показания в помещении.

РИСУНОК 11. Обзор корпуса.


На рис. 12 показаны детали для 3D-печати, составляющие корпус проекта (пять уникальных элементов, всего семь штук для печати). Внутренняя рамка CPU-LCD обеспечивает средства для крепления LCD / CPU к передней панели. Вы можете распечатать детали самостоятельно или приобрести набор в Nuts & Volts Junkbox .

РИСУНОК 12. Детали корпуса, напечатанные на 3D-принтере (вид сзади).


Я напечатал все детали с помощью нити PLA и добился очень хорошей точности размеров и подгонки деталей. Как видно из печати, на задней панели имеются вырезы для двух портов трехконтактного разъема датчиков с дополнительной парой функций для выбивания на случай, если вы захотите добавить дополнительные датчики.

Нарезание резьбы по частям и сборка деталей

Подробные этапы сборки, показывающие, как создается весь проект, можно найти на Рис. 13 .

РИСУНОК 13. Детали корпуса и финальной сборки.


Вы можете видеть, что плата ЦП крепится к раме ЦП с помощью 4-40 крепежных винтов ( Рисунок 13_1 ). После печати отверстия между процессором и рамой легко продеваются с помощью стандартного ручного метчика 4-40. Подузел рамы CPU-LCD крепится к резьбовым «выступам» на задней стороне передней панели.

Я обнаружил, что вместо ручного метчика можно легко сформировать резьбу, осторожно закручивая крепежный винт 4-40 x 0,25 дюйма в каждую бобышку.Просто двигайтесь медленно и держите винт прямо и правдиво.

На самоклеющейся основе Рисунок 13_3 показывает, что мембранный переключатель 1×4 легко прикрепляется к передней панели. Я раскрашиваю напечатанные пользовательские условные обозначения кнопок на бумажных этикетках, чтобы создать соответствующие этикетки для кнопок. Слой прозрачной ленты, помещенный поверх новых легенд, улучшит их износостойкость.

В качестве альтернативы мембранному переключателю вы можете использовать дискретные кнопочные переключатели или даже полностью исключить механические переключатели, купив модуль ЖК-дисплея с прикрепленным сенсорным экраном.Сенсорные ЖК-дисплеи Uno / Mega с той же механической компоновкой можно легко найти всего за несколько долларов больше, чем модель без сенсорного экрана, которую я использовал.

Конечно, вам придется добавить совместимую сенсорную библиотеку и переработать логику кнопочного управления в программном обеспечении для поддержки этого изменения.

Две ножки наклонной стойки собираются с помощью 4-40 винтов (требуется больше резьбы!), А затем прикрепляются к задней панели с помощью 4-40 крепежных винтов через вентиляционные отверстия в нижней части корпуса. Гайки на задней стороне вентиляционных отверстий завершают крепление ( Рисунок 13_4 ).Обратите внимание на рисунок, что угол наклона можно легко настроить после запуска проекта.

Печатная плата интерфейса датчика (прототип платы) крепится к задней панели с помощью четырех саморезов № 4 x 1/4 дюйма ( Рисунок 13_4 ). Хотя я включил файлы Gerber для печатной платы интерфейса разъема датчика, эта плата настолько проста, что ее можно изготовить из небольшого кусочка материала прототипа платы размером 0,1 x 0,1 дюйма. В загружаемых материалах для этой статьи содержится полная информация об интерфейсной плате сенсора, использующей любой из этих методов сборки.

Наконец, модуль RTC надевается на стойки, выступающие из задней панели ( Рисунок 13_4 ). Эти штыри можно оплавить паяльником, чтобы удержать модуль RTC, или можно использовать несколько слоев двусторонней ленты из пеноматериала, чтобы просто приклеить его к поверхности задней панели.

После того, как вся внутренняя проводка будет завершена в соответствии со схемой (см. Также следующий раздел), передняя панель присоединяется к задней панели с помощью четырех саморезов № 4 x 1/2 дюйма для листового металла ( Рисунок 13_5 ) .

Файлы проектирования корпуса

Как уже упоминалось, полный набор файлов STL для 3D-принтера для всех частей корпуса включен в загружаемый материал. Вы также найдете исходные файлы дизайна SolidWorks (2013) и 2D-чертежи с размерами (PDF), а также файлы STP, которые позволят вам перенести проект в вашу любимую программу 3D CAD для доработок и изменений. Вы также можете приобрести недорогой корпус, напечатанный на 3D-принтере, в Nuts & Volts Junkbox .

Проблемы с подключением и варианты

Чтобы подключить ЦП к датчикам, часам реального времени и кнопкам, нужно либо припаять провода к задней стороне Mega (фу!), Либо придумать другой способ сделать U-образные соединения, которые могут перенаправить верхнюю часть -боковые порты ввода / вывода процессора на тыльную сторону. Я придумал два разных метода решения этой проблемы:

Подключение RTC: Для соединения контактов SDA и SCL между Mega и модулем RTC я вырезал отдельные контакты из полосы длинной (общая длина ~ 20 мм) штыревых контактов SIP.Затем я аккуратно придал штифтам U-образную форму, как показано на Рисунок 14 . Это позволило использовать провода розетки-розетки для подключения часов реального времени к ЦП.

РИСУНОК 14. Выполнение мегаповоротных соединений. Примечание: ЖК-панель и рамка присутствуют в виде A, но не показаны в виде B.


Кнопки, датчики, + 5 В и проводка заземления: Для остальных соединений я использовал 36-контактный двухрядный штыревой разъем, чтобы сделать 18-позиционный U-образный соединитель.Сначала я зажал разъем в тисках, а затем смог согнуть короткие штыри достаточно близко друг к другу, чтобы я мог сделать перемычку из припоя на каждой из пар штырей (, рис. 14B, ). Примечание по сборке: не пропускайте «тиски», так как пластиковая рамка штифта легко ломается при попытке согнуть отдельные штифты.

Вставив один ряд выводов в Mega, осторожно сформируйте небольшой угол на каждом из внешних рядов выводов, как показано на Рис. 14A . Это позволяет подключать провода розеток с задней стороны платы ЦП.От этого U-образного соединителя мы можем получить +5 В, землю и все нечетные порты ввода-вывода от D23 до D53. Поскольку мембранный переключатель 1×4 уже оканчивается гнездом SIP с шагом 0,1 дюйма, он может подключаться прямо к U-образному соединителю (контакты D37, D39, D41, D43 и D45 на , рис. 14A, ).

Я использовал дискретные провода розетки-розетки для подключения к сигнальным линиям датчика температуры / влажности (мега-контакты D23 и D25), а также провода +5 В и заземления к интерфейсной плате датчика. Только не забудьте внимательно пересчитать контакты, чтобы найти и вставить все в правильные контакты!

Как показано на схеме (, рис. 3, ), модуль RTC получает питание и заземление от интерфейсной платы сенсора с помощью еще пары проводов розетки-розетки.

Необходимо изменить назначение портов?

В то время как пара проводов SDA и SCL, идущая к RTC, представляет собой заблокированное назначение контактов, которое вы не хотите изменять, проводку ко всем другим устройствам можно переместить на любые открытые контакты, которые могут работать лучше для вас. Это можно сделать, просто отредактировав исходный код, чтобы он соответствовал назначению контактов вашей схемы подключения.

Улучшения и другие идеи проекта

Падение цен на высококачественные цветные графические ЖК-дисплеи делает их жизнеспособной альтернативой обычным старым монохромным текстовым дисплеям или даже семисегментным светодиодным цифровым индикаторам, на которые мы привыкли полагаться в наших проектах микроконтроллеров.

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

Будь то тенденции температуры, время и дата, показания тока / напряжения, состояние батареи или другие переменные, подумайте о том, чтобы придать вашему следующему проекту немного особого шика, включив в дизайн цветной графический ЖК-дисплей!

Береги себя и удачи в построении графиков! NV


Список литературы

Arduino IDE, библиотеки Arduino, полезные руководства и ссылки
https: // www.arduino.cc

Сведения об аппаратном и программном обеспечении графического термометра
https://github.com/Ed-EE-Eng/Graphics_Thermometer

Графическая библиотека gfx
https://github.com/adafruit/Adafruit-GFX-Library

Документация / руководство по использованию библиотеки AdaFruit gfx
https://learn.adafruit.com/adafruit-gfx-graphics-library

Библиотека RTC
https://github.com/adafruit/RTClib

Руководство по установке и использованию вспомогательной графической библиотеки MCUfriend
https: // forum.arduino.cc/index.php?topic=366304.0

Библиотека отключения кнопок Bounce2
https://github.com/thomasfredericks/Bounce2

Библиотека датчиков DHT
https://github.com/adafruit/DHT-sensor-library


Список деталей

ПУНКТ КОЛ-ВО ОПИСАНИЕ ИСТОЧНИК PN / ИНФОРМАЦИЯ ДЛЯ ЗАКАЗА ПРИМЕЧАНИЯ
1 1 Процессор ARDUINO MEGA Ардуино.cc
+ другие
Процессор ARDUINO MEGA Alt: поиск на eBay MEGA-совместимого
https://store.arduino.cc/usa/arduino-mega-2560-rev3
2 1 ИСТОЧНИК ПИТАНИЯ ARDUINO Разное,
eBay
ИСТОЧНИК ПИТАНИЯ UNO / MEGA, 9 В постоянного тока, 1 А Зарядное устройство для телефона 5 В + кабель — опция
eBay Search: Адаптер питания Arduino Uno, 9 В постоянного тока
3 1 3.ЖК-ДИСПЛЕЙ 5 В 480×320 eBay 3.5 ДЮЙМОВЫЙ МОДУЛЬ TFT LCD ЭКРАНА 480×320 ДЛЯ ARDUINO UNO & MEGA Рассмотрите возможность добавления «сенсорного экрана» на eBay quiry
Искать: TFT LCD Screen Module 480×320 Arduino UNO MEGA
4 1 DS3231 МОДУЛЬ RTC Разное,
eBay
DS3231 МОДУЛЬ RTC
eBay Search: DS3231 Модуль часов реального времени RTC
5 1 CR2032 АККУМУЛЯТОР Разное,
eBay
CR2032 АККУМУЛЯТОР Для использования с поз. 4
Поиск на eBay: CR2032 АККУМУЛЯТОР
6 1 PB1, PB2, PB3, PB4.
КНОПКА 1×4
Разное,
eBay
МЕМБРАННАЯ КНОПКА 1×4 Не требуется, если элемент 3 имеет сенсорный экран
eBay Search: Матричная матричная клавиатура 1×4
7 1 ДАТЧИК INTFC ПЛАТА В СБОРЕ —— Состоит из позиций a-e ниже
7a 1 PCB — ПЛАТА ПРОТОТИПА Разное,
eBay
Сделай сам прототип макетной платы универсальная плата 2×8 см Просмотрите подробные сведения о компоновке сборки в Интернете, чтобы они соответствовали трехмерным отверстиям в корпусе mtg
eBay Search: Двусторонняя печатная плата 2×8 см
7b 2 П1, П2.TERM BLOCK HDR 3-POS VERT 3.5 MM PCB MNT. ПРИМЕЧАНИЕ: ТРЕБУЕТСЯ СОПРЯЖЕНИЕ ВИНТА Цифровой ключ ЧАСТЬ ПЕЧАТНОЙ ПЛАТЫ: WM7752-ND @ 0,78 шт.
ЧАСТЬ ПОДКЛЮЧЕНИЯ: WM7733.ND по 1,14 долл. США за шт.
eBay eBay Search: 3-контактный разъем для печатной платы с шагом 3,5 мм в клеммной колодке
7c 1 P7. 3-КОНТАКТНЫЙ МУЛЬТФИЛЬМ RT ANG Цифровой ключ САМ1051-03-НД @.25 шт. АЛЬТЕРНАТИВ: вырезать из более длинных полос; Ссылка на eBay для 10 шт. x 40-контактный по цене 3,80 долл. США
eBay eBay Search: 40-контактная полоса заголовка с прямоугольными штырями 2,54 мм, однорядная, под прямым углом
1 P5. 6-КОНТАКТНЫЙ МУЛЬТФИЛЬМ RT ANG Цифровой ключ AM1051-06-ND @ .46 шт. АЛЬТЕРНАТИВА: вырезать из более длинных полос
(см. Примечания к пункту 8)
7e 2 R1, R2.RES 4.7K 1 / 4W 1% ОСЬ Цифровой ключ 4,75KXBK-ND Значение не критично. Можно использовать значение от 4,7K до 10K, точность 5-10% OK
eBay Search for: Металлопленочный резистор 4,7 кОм 0,25 Вт
8 2 S1, S2. DHT21 МОДУЛЬ ДАТЧИКА ТЕМПЕРАТУРЫ / ВЛАЖНОСТИ Разное,
eBay
DHT21 AM2301 МОДУЛЬ ЦИФРОВОГО ДАТЧИКА ТЕМПЕРАТУРЫ / ВЛАЖНОСТИ ДЛЯ ARDUINO
eBay Search: DHT21 AM2301 Сенсорный модуль
9 4 NO_4 х.ВИНТ-САМОРЕЗ, 25 ДЮЙМ Различный СТАЛЬ, НОМЕР 4, ВИНТ ЛИСТОВОГО МЕТАЛЛА 1/4 ДЮЙМА Для получения более подробной информации см. McMaster PN
Макмастер A106 (Коробка из 100 шт. По 1,45 $)
10 4 NO_4 x 0,5 В САМОРЕЗИНЕ Различный СТАЛЬ, НОМЕР 4, ВИНТ ЛИСТОВОГО МЕТАЛЛА 1/5 ДЮЙМА Для получения более подробной информации см. McMaster PN
Макмастер A110 (Коробка из 100 шт. По 42 $.21)
11 4 4-40 x 0,5 В НОЖЕ ВИНТ HD Различный СТАЛЬ, НОМЕР 4, ВИНТ ЛИСТОВОГО МЕТАЛЛА 1/4 ДЮЙМА Для получения более подробной информации см. McMaster PN
Макмастер 92196A110 (Коробка из 100 шт. По 4,20 $)
12 4 ВИНТ 4-40 x 0,25 В НОЖНИЦЕ Различный НЕРЖАВЕЮЩАЯ ВИНТА STL SCKT HD 4-40 x 1/4 ДЮЙМА Для получения более подробной информации см. McMaster PN
Макмастер 92196A106 (Коробка из 100 шт. По 3 доллара США.92)
13 4 ВИНТ PHIL HD MACH 4-40 x 0,75 дюйма Различный ВИНТ PHIL HD 4-40 x 3/4 дюйма из нержавеющей стали Для получения более подробной информации см. McMaster PN
Макмастер 92196A113 (коробка из 100 шт. По 4,97 долл. США)
14 4 4-40 ГАЙКА ШЕСТИГРАННАЯ Различный ГАЙКА ШЕСТИГР. STL ИЗ НЕРЖ. STL 4-40 Для получения более подробной информации см. McMaster PN
Макмастер
  • A005 (Коробка из 100 шт. По 3 доллара США.02)
  • 15 1 ВНУТРЕННЯЯ ПРОВОДКА Различный РАЗНЫЕ ШТИФТЫ, РАЗЪЕМЫ, ПРОВОДА Разное
    16 1 КОРПУС — ПЕРЕДНЯЯ ПАНЕЛЬ НАПЕЧАТАННЫЙ 3D ПЕРЕДНЯЯ ПАНЕЛЬ, 3D НАПЕЧАТАННАЯ (PLA) ПОДРОБНЕЕ ПОДРОБНЕЕ ПОДРОБНЕЕ В ИНТЕРНЕТЕ
    17 1 КОРПУС — ЗАДНЯЯ ПАНЕЛЬ НАПЕЧАТАННЫЙ 3D ЗАДНЯЯ ПАНЕЛЬ, 3D НАПЕЧАТАННАЯ (PLA) ПОДРОБНЕЕ ПОДРОБНЕЕ ПОДРОБНЕЕ В ИНТЕРНЕТЕ
    18 1 МОНТАЖНАЯ РАМА CPU / LCD НАПЕЧАТАННЫЙ 3D МОНТАЖНАЯ РАМА, 3D НАПЕЧАТАННАЯ (PLA) ПОДРОБНЕЕ ПОДРОБНЕЕ ПОДРОБНЕЕ В ИНТЕРНЕТЕ
    19 2 НАКЛОННОЕ ОСНОВАНИЕ, КОРПУС НАПЕЧАТАННЫЙ 3D НАКЛОННЫЙ КОРПУС MNT, 3D НАПЕЧАТАННЫЙ (PLA) ПОДРОБНЕЕ ПОДРОБНЕЕ ПОДРОБНЕЕ В ИНТЕРНЕТЕ
    20 2 НАКЛОННАЯ БАЗА, НОЖКА НАПЕЧАТАННЫЙ 3D НАКОНЕЧНАЯ ЛАПКА, 3D НАПЕЧАТАННАЯ (PLA) ПОДРОБНЕЕ ПОДРОБНЕЕ ПОДРОБНЕЕ В ИНТЕРНЕТЕ

    Загрузки

    Что в почтовом индексе?
    Файлы Gerber
    Примечания по сборке и проектированию
    Файлы Solidworks
    Файлы STL
    Исходный код

    Как сделать инфракрасный термометр на 3D-принтере — Инновации и экономическое развитие

    Как сделать инфракрасный термометр на 3D-принтере

    Многие планы повторного открытия требуют (или потребуют) бесконтактного измерения температуры в реальном времени людей, входящих в здания и другие общественные места.К сожалению, спрос на надежные инфракрасные (ИК) термометры все еще очень высок, а коммерческое предложение ограничено. Следуя этому руководству, разработанному исследователями из лаборатории VEMI в UMaine, вы и другие любители можете помочь увеличить поставки ИК-термометров, что позволит вашим местным предприятиям, некоммерческим и другим организациям соблюдать рекомендации в области общественного здравоохранения и снова открывать свои двери.

    ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: НЕ ИСПОЛЬЗУЙТЕ ЭТО В МЕДИЦИНСКИХ ЦЕЛЯХ. Он предназначен для считывания * приблизительной * температуры, чтобы узнать, есть ли у кого-то высокая температура; он НЕ должен использоваться для медицинской диагностики болезни.

    ПЕРЕЧЕНЬ ДЕТАЛЕЙ

    Цены на запчасти могут меняться. На момент публикации можно было приобрести все необходимые детали из указанных ниже источников примерно за 60 долларов.

    ** Плата FTDI не является обязательной, требуется не более 1 платы. См. Шаг 4 инструкции

    .

    Почему именно эти детали?

    Arduino Pro Mini — самый маленький надежный микроконтроллер, который мы могли купить, что делает его идеальным для встраивания в корпус, напечатанный на 3D-принтере.Штыревые разъемы, макетная плата и провода F / F не требуются для функциональности, но сделают готовый продукт более надежным. Корпус для 3D-печати был разработан с переключателем, кнопкой и дисплеем, перечисленными выше; изменение любого из них потребует внесения изменений в материалы дела.

    Этот датчик температуры НЕ является медицинским. Датчик, включенный в это руководство, имеет точность ± 0,5 ℃, а медицинский датчик — ± 0,1 ℃. Как отмечалось выше, НЕ ИСПОЛЬЗУЙТЕ ЭТО В МЕДИЦИНСКИХ ЦЕЛЯХ. Он предназначен для считывания * приблизительной * температуры, чтобы узнать, есть ли у кого-то высокая температура; он НЕ должен использоваться для медицинской диагностики болезни.

    Версия датчика температуры с более высокой точностью (которая все еще не является медицинским) доступна для покупки через Digi-Key Electronics.

    ИНСТРУКЦИЯ

    Шаг 1: Чехол для 3D-печати

    Скачать футляр для 3D-печати можно здесь: https: // bit.ly / 2TxaxFv

    Этот футляр предназначен для печати двух частей, которые соединяются вместе.

    Печать рассчитана на следующие настройки:

    • Ширина ломтика 0,2 мм
    • 10% заполнение
    • Автоматическое создание поддержки: ВКЛ.
    • Снарядов: 3

    Начните печатать первую половину корпуса, прежде чем приступить к сборке компонентов (см. Ниже). Печать, вероятно, займет больше времени, чем процесс сборки, но периодически проверяйте ее, чтобы убедиться, что все в порядке.Когда первая половина будет готова, выньте ее из принтера и начните печатать вторую половину.

    Шаг 2: Загрузите код

    Загрузите код ИК-термометра здесь: https://bit.ly/3cE2bUe

    Чтобы установить эту программу, вам необходимо загрузить программное обеспечение Arduino с сайта www.arduino.cc

    1. Откройте IRThermometer.ino с помощью программного обеспечения Arduino.
    2. Откройте диспетчер библиотек, выбрав панель инструментов «Эскиз»> «Включить библиотеку»> «Управление библиотеками».
    3. В диспетчере библиотек найдите и установите:
      1. SevSeg
      2. Adafruit_MLX
    4. Закройте диспетчер библиотек.
    Рисунок 2

    Шаг 3. Сборка электронных компонентов
    • СХЕМЫ: Загрузите следующие таблицы данных и держите их под рукой во время работы над этим проектом. Они понадобятся вам для правильного подключения схемы. Датчик температуры
      : https://bit.ly/2zltlkh
      7-сегментный дисплей: https: // bit.ly / 3hgOHAv
    • ПРОВОДА: Провода, приобретенные для этого проекта, необходимо будет немного отредактировать для использования. Если используется штыревой наконечник, вставьте провод в обычное соединение. Если необходимо подключить более тонкие провода и выводы (в случае дисплея и термостата), сделайте следующее.
      а. Снимите черный пластиковый кожух вокруг одного из адаптеров F, подняв пластиковый язычок прямо над видимым металлом. Удалив пластик, вставьте штифт в металлический переходник и нанесите припой на соединение.Это будет действовать так же, как припаивание провода к компоненту, но соединение будет значительно прочнее.
    • ПРОТОБОРТ:
      а. Эта плата не представляет собой набор изолированных контактов. Вместо этого многие контакты подключены. Если вы присмотритесь, вы увидите линии зеленого цвета, соединяющие сразу несколько точек. Большинство из них — это 3-точечные линии, но некоторые будут 4 или 2. Используйте эти разъемы для подключения проводов к резисторам и друг к другу.
    1. Вам понадобятся: Arduino Pro Mini и разъемы для контактов.(Рисунок 3).
      Рисунок 3

      а. Отсоедините 2 12-контактных, 1 6-контактный и 1 2-контактный разъемы. Припаяйте контакты к плате Arduino. (Рисунок 4)

      Рисунок 4

    2. Вам понадобятся 12 проводов, светодиодный дисплей, 4 резистора по 1 кОм и макетная плата (рисунок 5). Рисунок 5

      а. С каждого провода снимите пластиковую оболочку с одного из концов. Это можно сделать, подняв пластиковый язычок сбоку заостренным предметом и стянув куртку. Когда вы закончите, концы проволоки должны выглядеть так, как показано на рисунке 6.

      Рисунок 6

      б. Для каждого из 12 контактов на дисплее припаяйте конец провода без оболочки к контакту. (Рисунок 7).

      Рисунок 7

      c. Для контактов 1-5, 7, 10 и 11 подключите конец провода с оболочкой непосредственно к соответствующему контакту Arduino.
      г. Для контактов 6, 8, 9 и 12 разрежьте провод пополам. Вы припаяете каждую из этих половинок к макетной плате и припаяете между ними резистор 1 кОм, затем, следуя схеме (рисунок 2), подключите другую половину к соответствующему выводу Arduino.(Рисунок 8)

      Рисунок 8

    3. Вам потребуются: 4 резистора 10 кОм, 1 датчик температуры, 1 кнопка, 1 макетная плата из шага 2. (Рисунок 9).
      Рисунок 9

      а. Остальную часть макетной платы можно использовать для пайки наиболее продвинутой части схемы. Каждый из 3 резисторов 10 кОм следует припаять к плате и подключить на одном конце через встроенные каналы или паяные перемычки. Это будут подтягивающие резисторы для цепи термостата. (Рисунок 10)

      Рисунок 10

      б.Припаяйте провод к каждой ножке датчика температуры (Рисунок 11), затем разрежьте эти провода пополам. Припаяйте ОБА из недавно обрезанных концов каждого провода к Protoboard, как показано (Рисунок 12 и Рисунок 13), а другой открытый конец будет подключаться к Arduino, как показано на схеме (Рисунок 2).

      Рисунок 11 Рисунок 12 Рисунок 13

      i. Два набора проводов будут припаяны к свободному концу двух резисторов, а концы проводов в оболочке будут подключаться к контактам SDA и SCL на Arduino
      ii.Один набор проводов будет припаян к общему концу резисторов, а конец провода с оболочкой будет вставлен в контакт VCC.
      iii. Один набор проводов будет припаян к паре открытых контактов на макетной плате, а конец провода с оболочкой будет вставлен в контакт GND.
      г. ВАЖНО: Глядя на техническое описание термостата, помните, что вывод выводится так, как если бы он смотрел ВНИЗ над датчиком. (Рисунок 14)

      Рисунок 14

    4. Чтобы подключить кнопку, вам придется разрезать провод пополам и также обрезать оба конца с внутренней резьбой.Припаяйте один провод между 3-м резистором 10 кОм и одной стороной кнопки, а другой провод — между другой стороной кнопки и землей на вашей прототипной плате. Затем припаяйте другой провод к контакту, подключенному к 3-му резистору 10 кОм, и подключите его к Arduino на контакте A2.
    5. Вам понадобятся: 1 зажим для аккумулятора и 1 выключатель.
      a. Отрежьте красный провод на зажиме аккумулятора и припаяйте обе половины красного провода к 2 разным контактам на выключателе питания (средний контакт и один из внешних контактов) (Рисунок 15).Затем подключите адаптер зажима аккумулятора к 2 контактам с маркировкой RAW и GND (RAW должен быть КРАСНЫМ проводом).

      Рисунок 15

    6. Последняя схема должна поместиться в корпус, как показано на рисунке 16. Рисунок 17 был добавлен, чтобы показать, как выглядит размещение компонентов без загромождения проводов.
      Рисунок 16

      Рисунок 17

    Шаг 4: Программирование платы

    Чтобы начать программировать Arduino, у вас есть два варианта. Либо (а) используйте плату FTDI, либо (б) используйте Arduino Uno для программирования вашей платы.

    Перед загрузкой кода проверьте программу «Термометр», убедившись, что все ваши выводы ввода / вывода совпадают с теми, которые были закодированы в программе.
    Чтобы загрузить либо:

      • Вставьте плату FTDI в правильные контакты вашего Arduino; ваше программное обеспечение Arduino должно распознать плату.
      • Чтобы использовать Arduino UNO для программирования Pro Mini:
            1. ВНИМАТЕЛЬНО извлеките микросхему ATmega328 из UNO.
            2. Подключите вывод 5V UNO к выводу VCC Pro Mini.
            3. Подключите контакт GND UNO к контакту GND Pro Mini.
            4. Подключите контакт TX UNO к контакту TX0 Pro Mini.
            5. Подключите контакт RX UNO к контакту RX1 Pro Mini.
            6. Подключите контакт сброса UNO к контакту RST Pro Mini.
            7. Откройте программное обеспечение Arduino и выберите Инструменты> Плата> Arduino Pro или Pro Mini.
            8. Загрузите вашу программу!
    • ПРОВЕРЬТЕ ТЕРМОМЕТР .Удерживая датчик на расстоянии 1-2 дюймов от лба, нажмите кнопку. Когда вы отпустите его, ваша температура должна отображаться на дисплее. Сделайте это несколько раз. Если можете, сделайте это с другим человеком.
    • КАЛИБРОВКА ТЕРМОМЕТРА . Возможно, вы заметили, что градусник постоянно готов немного низко или немного высоко. Требуется калибровка. Откройте код arduino и найдите переменную tempOffset (это одна из первых строк кода, окруженная символом ******).По умолчанию установлено значение 7, потому что это наиболее распространенное смещение, которое нам нужно для наших внутренних датчиков. Увеличьте или уменьшите это значение, чтобы сместить термометр так, чтобы измеренная средняя здоровая температура составляла 98,6 F. Перезагрузите программу в Arduino, и все готово!

    Для этого проекта потребуется только одна плата FTDI или Uno, независимо от того, сколько термометров вы сделаете. После установки программы плата больше не понадобится.

    ОБЯЗАТЕЛЬНО ПРОГРАММИРУЙТЕ ARDUINO ПЕРЕД ЗАВЕРШЕНИЕМ ОКОНЧАТЕЛЬНОЙ СБОРКИ. Когда все компоненты установлены, соединение будет очень плотным, и повторное открытие устройства может оказаться затруднительным.

    Шаг 5: Окончательная сборка:

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

    Шаг 6: Тестирование

    При включении устройства (щелчком выключателя питания) вы должны увидеть цифру «0».При нажатии и удерживании кнопки случайные (нерелевантные) сегменты временно загораются, а когда вы отпускаете кнопку, на дисплее отображается температура человека. Рекомендуется повторить этот процесс несколько раз, чтобы получить более точную оценку.


    Инфракрасный термометр разработан VEMI Lab. По любым вопросам обращайтесь в лабораторию VEMI.

    Термометр Arduino с … ТВ-выходом · Один транзистор

    Как использовать библиотеку Arduino TVout для создания термометра, который отображает температуру на экране телевизора.

    Аналоговое видео заменяется цифровыми сигналами, которые обеспечивают лучшее разрешение и изображение без шума и помех. Хотя приемники цифровых сигналов дешевы и популярны, устройства для генерации таких сигналов дороги и предназначены только для профессионального использования. С другой стороны, аналоговое видео легко создать с помощью простого оборудования. Вы даже можете транслировать его по RF (по проводам, а не в эфире) с помощью обычных модуляторов (автономные устройства или модули от игровых консолей, телевизионных приставок, видеомагнитофонов и т. Д.)).

    Самый простой способ сгенерировать видеосигнал — использовать микроконтроллер и несколько резисторов. Для этого я воспользуюсь платой Arduino (ATmega 328p) с библиотекой TVout. Видеосигнал низкого разрешения, черно-белый. Но его можно использовать для отображения данных на экране телевизора. Если у вас больше нет телевизора с аналоговым видеовходом, можно использовать карту захвата USB. Библиотека TVout основана на прерываниях, поэтому будет мешать некоторым другим функциям микроконтроллера, зависящим от прерывания.

    Например, с помощью TVout можно отобразить показания температуры с датчика. Но не все виды датчиков. Поскольку TVout основан на прерываниях, вы не можете использовать датчики OneWire или I2C. Связь OneWire мешает синхронизации видео, поэтому каждый раз, когда датчик считывает показания, изображение на короткое время искажается. Однако I2C полностью несовместим с TVout (вы не получите изображения вообще, если используете библиотеку Wire ).

    Осталось использовать аналоговый датчик (термистор).Они тоже хороши, но требуют калибровки. Вот схема устройства.

    Термометр со схемой TVout

    Схема очень простая. Я построил его на макете. Если у вас нет модуля KY-013, вы можете построить делитель напряжения с термистором и резистором 100 Ом.

    Термометр TVout на макетной плате

    Я использовал аудиоразъем на макетной плате (один канал для видео, другой для звука). В это гнездо вставляется кабель RCA.

    Термометр отображает фактическую температуру, минимум и максимум, а также небольшой график изменения температуры за 116 секунд. Когда записывается новое минимальное или максимальное значение, раздается короткий звуковой сигнал с частотой 1 кГц.

    Требуется библиотека TVout. Чтобы установить его, используйте диспетчер библиотек Arduino IDE. Однако компиляция не удастся, если вы не найдете папку библиотеки (где находятся ваши проекты, есть папка библиотек ; найдите TVout , введите ее), где вы должны удалить подпапку TVout и переименовать TVOutfonts в Утилита .О проблеме было сообщено на GitHub. В конце поста вы можете скачать готовую модифицированную версию, которая компилируется без ошибок.

    Вот код:

     #include < TVout  .h>
    #include <служебная программа / fontALL.h>
    
      TVout  TV;
    float minTemp = 100, maxTemp = 0;
    байтовый график [117] = {0};
    
    // Считываем термистор и конвертируем в градусы Цельсия
    //  https://tkkrlab.nl/wiki/Arduino_KY-013_Temperature_sensor_module 
    double readThermistor (int RawADC) {
     двойная температура;
     Темп = журнал (10000.0 * ((1024.0 / RawADC - 1)));
     Temp = 1 / (0,001129148 + (0,000234125 + (0,0000000876741 * Temp * Temp)) * Temp);
     Темп = Темп - 273,15; // Преобразование Кельвина в Цельсия
     // Temp = (Temp * 9.0) / 5.0 + 32.0; // Преобразование Цельсия в Фаренгейт
     return Temp;
    }
    
    void draw_initial_screen () {
     TV.clear_screen ();
    
     TV.set_cursor (19, 3);
     TV.select_font (font8x8);
     TV.print («Термометр»);
    
     TV.draw_rect (0, 0, 125, 14, 1, 2);
    
     TV.select_font (font6x8);
     TV.set_cursor (0, 20);
     TV.print ("МИН");
    
     ТЕЛЕВИЗОР.set_cursor (43, 20);
     TV.print («Текущий»);
    
     TV.set_cursor (109, 20);
     TV.print («МАКС»);
    
     TV.select_font (font4x6);
     TV.set_cursor (4, 86);
     TV.print («0»);
     TV.set_cursor (0, 76);
     TV.print («10»);
     TV.set_cursor (0, 66);
     TV.print («20»);
     TV.set_cursor (0, 56);
     TV.print («30»);
     TV.set_cursor (0, 46);
     TV.print («40»);
    
     TV.draw_line (10, 46, 10, 88, 1);
     TV.draw_line (10, 88, 126, 88, 1);
     TV.set_pixel (9, 48, 1);
     TV.set_pixel (11, 48, 1);
     TV.set_pixel (9, 58, 1);
     TV.set_pixel (11, 58, 1);
     ТЕЛЕВИЗОР.set_pixel (9, 68, 1);
     TV.set_pixel (11, 68, 1);
     TV.set_pixel (9, 78, 1);
     TV.set_pixel (11, 78, 1);
    
     TV.set_cursor (67, 90);
     TV.select_font (font4x6);
     TV.print («2 мин эволюции»);
    }
    
    void display_min (float mt) {
     TV.set_cursor (0, 33);
     TV.select_font (font6x8);
     если (mt <10) TV.print ("");
     TV.print (мт, 1);
    }
    
    void display_max (float mt) {
     TV.set_cursor (103, 33);
     TV.select_font (font6x8);
     если (mt <10) TV.print ("");
     TV.print (мт, 1);
    }
    
    void display_current (float t) {
     TV.set_cursor (42, 32);
     ТЕЛЕВИЗОР.select_font (font8x8);
     ТВ.принт (т, 2);
     TV.draw_rect (40, 30, 44, 12, 1, -1);
    }
    
    void setup () {
     TV.begin (PAL, 128, 96);
     draw_initial_screen ();
     задержка (1000);
    }
    
    void display_graph (float ct) {
     for (int i = 0; i <116; i ++) {
     график [i] = график [i + 1];
     TV.set_pixel (i + 10, 88 - график [i], 1);
     если (график [i + 1]> 0)
     TV.set_pixel (i + 11, 88 - график [i + 1], 0);
     }
     граф [116] = (байт) ct;
     если (граф [116]> 40) граф [116] = 40;
    }
    
    void loop () {
     float currTemp = readThermistor (analogRead (A2));
    
     display_current (currTemp);
     display_graph (currTemp);
    
     if (currTemp  maxTemp) {
     maxTemp = currTemp;
     display_max (maxTemp);
     TV.tone (1000, 200);
     }
    
     задержка (1000);
    }
     

    Генерация аналогового видеосигнала с помощью Arduino занимает много ресурсов микроконтроллера. Однако digitalRead () и digitalWrite () , а также analogRead () работают. Это позволяет связывать микроконтроллер с различными аналоговыми датчиками и запускать реле или другие устройства. Я еще не пробовал это, но думаю, можно использовать датчики цифрового типа (DHT11 / DHT22 / AM2302), которые можно читать без использования прерываний.

    Идя дальше, вы можете подключать AV-выходы к ВЧ-модуляторам. Помните, что вы не можете использовать модулятор, управляемый I2C, потому что Arduino, используемый для генерации видео, также не может связываться через I2C. Вы можете использовать модулятор фиксированного выходного канала с игровой консоли. А не выводит РЧ-сигнал на антенну . Хотя аналоговое телевещание было отключено, вещание в этих диапазонах частот, вероятно, является незаконным. Используйте кабель для передачи сигнала на большое расстояние.

    ресурсов

    .

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *