Ардуино термометр: Термометр на Arduino Uno и DS18B20

Содержание

Бюджетный GSM термометр на Arduino Nano

На чтение 12 мин.

  • Цена: $13
  • Добрый день! Очередной обзор самодельного устройства из дешевых китайских электронных компонентов, в этот раз GSM-термометр. Как обычно, дёшево, себестоимость устройства примерно 850 ₽ или 13$. Сборка так же не составит труда для тех кто хотя бы пару раз в жизни держал паяльник 🙂 Заинтересовало? Прошу под «cut»!

    Начнём с технического задания, устройство должно:

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

    2. Отслеживать наличие или отсутствие сети 220В, уведомлять при отсутствии или восстановлении.

    3. Работать автономно не менее 24 часов.

    4. Полностью управляться через смс сообщения.

    Для сборки нам понадобится:

    1. Arduino Nano v3 ATmega328P — 180 ₽.

    2. GSM модуль SIM800L — 240 ₽.

    3. Контроллер заряда-разряда для Li-ion аккумулятора TP4065 — 30 ₽.

    4. Датчик DS18B20 — 80 ₽.

    5. Светодиод RGB с общим анодом — 1шт * 10 ₽.

    6. Резисторы 2,2 кОм, 3,3 кОм, 4,7 кОм, 20 кОм — 5 ₽.

    7. Выключатель — 15 ₽.

    8. Корпус для PowerBank 4×18650 — 190 ₽.

    9. Аккумулятор 18650 — 190 ₽.

    10. Зарядное устройство 5В 1,5А — из личных запасов.

    Не обязательно, но очень желательно:

    11. Полевой транзистор IRLML6402 — 5 ₽.

    12. Диоды SS26 — 5 ₽.

    13. GSM антенна — 80 ₽.

    Могу предположить что возникнут вопросы о работе устройства в сети GSM. Почему бы не использовать GPRS/3G/4G? Во-первых GSM — надёжно, во-вторых есть места очень плохим покрытием, при котором голосовая связь и смс сообщения ещё работают но GPRS-трафик передаётся не стабильно. Поэтому выбор пал именно на этот стандарт. В плане надёжности отдаю предпочтение Arduino, хотя устройство можно было бы собрать и на ESP8266, но в последней не могу быть уверен на все 100%.

    За основу GSM-термометра была взята GSM-сигнализация из этого обзора, которая после «финальной» прошивки в течение года отработала без сбоев. Из прошивки «выпилено» всё лишнее и добавлен датчик температуры DS18B20. Диапазон измерения температуры датчика от -55°C до 125°C, даташит на русском языке можно взять по ссылке.

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

    Схема устройства.

    Потроха.

    Внешний вид.

    Используемые порты Arduino Nano v3

    D5 — шина данных датчика температуры DS18B20 — желтый провод.

    D6 — подключен к RST входу модема, для перезагрузки в случае потери сети.

    D7 — подключен к делителю напряжения от внешнего источника питания +5В. Верхнее плечо 2,2 кОм, нижнее 3,3 кОм.

    Делитель напряжения

    D8 — модем TX

    D9 — модем RX

    D10 — красный светодиод

    D11 — синий светодиод

    D12 — зеленый светодиод

    Прошивка
    Программное обеспечение XLoader для прошивки Arduino Nano/Uno берём тут или на гугл диске вместе с прошивкой. Прошивку в виде hex — файла для Arduino Nano/Uno берём тут. Исходник прилагается.

    Инструкция по прошивке

    — подключаем Arduino в USB-порт

    — выбираем нужный hex-файл

    — выбираем нужный тип Arduino Nano или Uno

    — выбираем COM порт, который создался при подключении Arduino к USB

    — скорость 57600

    — нажимаем Upload

    Для тех кто будет шиться из исходника
    В файл SoftwareSerial.h (C:Program Files (x86)ArduinohardwarearduinoavrlibrariesSoftwareSerialsrcSoftwareSerial. h) необходимо внести изменения

    было так:



#define _SS_MAX_RX_BUFF 64

стало так:



#define _SS_MAX_RX_BUFF 192

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

Команды управления не чувствительны к регистру:

AddPhone — Добавить номер телефона. Всего может быть добавлено не более 9 номеров + 1 основной номер который автоматически сохраняется в память при первом звонке на устройство после сброса на заводские установки командами ResetPhone, FullResetили MemTest. То есть кто первый позвонил на устройство после его сброса на заводские установки тот и «главный», этот номер заносится в первую ячейку памяти и его невозможно изменить или удалить через смс.

Пример команды:

AddPhone:2+71234567891risp

AddPhone:3+71234567892s

AddPhone:4+71234567893sp

AddPhone:5+71234567894r

Синтаксис команды:
AddPhone — команда

: — разделитель

5 — записать в пятую ячейку памяти

+71234567890 — номер телефона

s — Параметр «SMS» — будет отправлено sms сообщение при срабатывании датчиков

r — Параметр «Ring» — будет совершен голосовой вызов при срабатывании датчиков

p — Параметр «Power» — будет отправлено sms сообщение при включении/отключении внешнего питания

i — Параметр «Info» — будет отправлено sms сообщение о включении или отключении оповещения при изменении температуры

При отсутствии параметров «s», «r», «p»,«i» телефон заносится в память, но никак не используется.

DeletePhone — Удалить номер телефона.

Пример команды:

DeletePhone:+71234567891

Синтаксис команды:
DeletePhone — команда

: — разделитель

+71234567891 — номер телефона

EditMainPhone — Изменить параметры «s», «r», «p», «i» основного телефона, этот номер занесён в первую ячейку памяти.

Пример команды:

EditMainPhone:spri

Синтаксис команды:
EditMainPhone — команда

: — разделитель

srpi — параметры

RingTime — Длительность тревожного голосового вызова, параметр может иметь значение от 10 до 255 секунд.

Пример команды:

RingTime:40

Синтаксис команды:
RingTime — команда

: — разделитель

40 — длительность вызова составит 40 секунд, после чего будет вызван следующий абонент.

ModemID — Принудительная установка модели используемого модема. Возможные значения: 0 — автоопределение модема, 1 — M590, 2 — SIM800l, 3 — A6_Mini.

Пример команды:

ModemID:2

Синтаксис команды:
ModemID — команда

: — разделитель

2 — ID модема.

NetCheckTime — Интервал проверки регистрации модема в сети оператора в минутах, параметр может иметь значение от 1 до 60 минут. При значении 0 проверка отключена.

Пример команды:

NetCheckTime:10

Синтаксис команды:
NetCheckTime — команда

: — разделитель

10 — каждые 10 минут будет производиться поочерёдная проверка уровня сигнала сети или проверка регистрации модема в домашней сети оператора, то есть весь цикл проверки будет занимать 20 минут. В случае отсутствия сигнала или регистрации в домашней сети модем будет перезагружен.

TempCheckTime — Интервал автоматического обновления температуры, параметр может иметь значение от 1 до 60 минут.

Пример команды:

TempCheckTime:10

Синтаксис команды:

TempCheckTime — команда

: — разделитель

10 — каждые 10 минут будет производиться снятие показаний с датчика температуры.

LowTemp — Нижний порог температуры при достижении которого будет отправлено оповещение. Параметр может иметь значение от -50 до 125 и не может превышать или равняться значению параметра HighTemp.

Пример команды:

LowTemp:25

Синтаксис команды:
LowTemp — команда

: — разделитель

25 — температура

HighTemp — Верхний порог температуры при достижении которого будет отправлено оповещение. Параметр может иметь значение от -50 до 125 и не может быть меньше или равняться значению параметра LowTemp.

Пример команды:

HighTemp:60

Синтаксис команды:

HighTemp — команда

: — разделитель

60 — температура

WatchPowerTime — Время в минутах по истечении которого будет отправлено смс сообщение об отключении внешнего источника питания. Если внешнее питание будет восстановлено до истечения установленного времени, то сообщение не будет отправлено.

Пример команды:

WatchPowerTime:5

Синтаксис команды:
WatchPowerTime — команда

: — разделитель

5 — 5 минут до отправки смс сообщения

WatchPowerOn1 — включить контроль внешнего питания, смс сообщение об отключении внешнего питания будет отправлено при условии что включено оповещение при изменении температуры (GuardOn).

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

WatchPowerOff — выключить контроль внешнего питания

BalanceNum — Изменение номера запроса баланса и обработка длины ответа запроса. Значение по умолчанию для Beeline: #100#L22.

Пример команды:

BalanceNum:#103#L24

Синтаксис команды:
BalanceNum — команда

: — разделитель

#103# — номер запроса баланса

L24 — Длина (len) пересылаемого ответа 24 символа, обрезаем спам из запроса баланса.

Reboot — перезагрузка устройства (только Arduino)

ResetConfig — сброс настроек на заводские установки

ResetPhone — удаление из памяти всех телефонных номеров

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

GuardOn — включить оповещение при изменении температуры

GuardOff — выключить оповещение при изменении температуры

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

TestOn — включается тестовый режим.

TestOff — выключается тестовый режим.

LedOff — выключает светодиод режима ожидания.

LedOn — включает светодиод режима ожидания.

Money — запроса баланса.

ClearSms — Удалить из памяти все sms

ListPhone — вывод в монитор порта списка сохранённых в памяти телефонов

Memtest — тест энергонезависимой памяти устройства, все настройки устройства будут сброшены, аналогично команде FullReset.

ListConfig — вывод в монитор порта текущей конфигурации устройства.

Световая индикация
Светится синим — температура ниже или равна нижней границе контроля, произведено оповещение, оповещение включено.

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

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

Мигает синим — температура ниже или равна нижней границе контроля, оповещение отключено.

Мигает зелёным — температура между нижней и верхней границей, оповещение отключено.

Мигает красным — температура выше или равна верхней границе контроля, оповещение отключено.

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

Пусконаладочные работы или как этим пользоваться?!

Основным моментом после сборки является проверка EEPROM памяти устройства, для этого необходимо выполнить из консоли команду MemTest. Для доступа к консоли можно использовать Putty или монитор порта в Arduino IDE. В настройках необходимо указать нужный COM-порт и скорость порта 9600.

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

Лог консоли — MemTest



memtest
EEPROM: 1024B
Test passed.
GSM Temperature Alarm 2018.12.03-01
Deleting eepromconfig data.
Load default eepromconfig data.
Read eepromconfig:
RingTime: 40
Test: 0
Led: 1
Guard: 1
NetCheckTime: 0
TempCheckTime: 10
LowTemp: 10
HighTemp: 70
WatchPower
Mode: 1
Time: 0
ModemID: Autodetect
Delete balance data.
Load default balance data.
Balance number: #100#
Length to return: 22
Deleting phone data.
Load default phone data.
Read array phone:
№ -> Phone -> s -> r -> p -> i
1 -> -> 0 -> 0 -> 0 -> 0
2 -> -> 0 -> 0 -> 0 -> 0
3 -> -> 0 -> 0 -> 0 -> 0
4 -> -> 0 -> 0 -> 0 -> 0
5 -> -> 0 -> 0 -> 0 -> 0
6 -> -> 0 -> 0 -> 0 -> 0
7 -> -> 0 -> 0 -> 0 -> 0
8 -> -> 0 -> 0 -> 0 -> 0
9 -> -> 0 -> 0 -> 0 -> 0
10 -> -> 0 -> 0 -> 0 -> 0
Detected ModemID: 2
Guard ON at boot.
Temperature: 47.81

Для дальнейшей настройки необходимо зарегистрировать основной номер, с которого в дальнейшем будет производиться настройка, для этого достаточно совершить голосовой вызов на номер устройства. Номер с которого был совершен вызов будет добавлен в первую ячейку памяти устройства, так же этому номеру автоматически будут добавлены параметры «s», «r», «p», «i», которые в случае необходимости можно изменить командой EditMainPhone.

Лог консоли — регистрация основного номера



Ring from: +7905xxxxxxx
Primary phone: +7905xxxxxxx
GSM Temperature Alarm 2018.12.03-01
Read eepromconfig:
RingTime: 40
Test: 0
Led: 1
Guard: 1
NetCheckTime: 0
TempCheckTime: 10
LowTemp: 10
HighTemp: 70
WatchPower
Mode: 1
Time: 0
ModemID: Autodetect
Balance number: #100#
Length to return: 22
Read array phone:
№ -> Phone -> s -> r -> p -> i
1 -> 7905xxxxxxx -> 1 -> 1 -> 1 -> 1
2 -> -> 0 -> 0 -> 0 -> 0
3 -> -> 0 -> 0 -> 0 -> 0
4 -> -> 0 -> 0 -> 0 -> 0
5 -> -> 0 -> 0 -> 0 -> 0
6 -> -> 0 -> 0 -> 0 -> 0
7 -> -> 0 -> 0 -> 0 -> 0
8 -> -> 0 -> 0 -> 0 -> 0
9 -> -> 0 -> 0 -> 0 -> 0
10 -> -> 0 -> 0 -> 0 -> 0
Detected ModemID: 2
Guard ON at boot.
Temperature: 47.88

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

Лог консоли — настройка температуры



lowtemp:25
LowTemp is: 25
hightemp:50
HighTemp is: 50
TempCheckTime:5
TempCheckTime is: 5
Temperature: 47.94

Проверяем настройки командой info из консоли и через смс сообщение.

Лог консоли — вывод команды info



info
Temperature: 47.81
Current temperature: 47.81
Low: 25
High: 50
TempCheckTime: 5 min
Guard ON at boot.

СМС сообщение — вывод команды info

Основные настройки закончены, устройство готово к работе. В случае необходимости можно добавить ещё не более девяти номеров оповещения. Так же номера можно дублировать, при этом со всех дублей при добавлении будут автоматически сняты все признаки кроме «r» — оповещение голосовым вызовом.

Оповещение.

При изменении температуры выше или ниже заданных пределов, на номера с признаком «s» — будут отправлены смс сообщения с информацией о текущей температуре. Далее устройство совершит голосовые вызовы на все номера с признаком «r» и перейдёт в режим наблюдения с соответствующей световой индикацией. Следующее оповещение будет произведено только после нормализации температуры и последующим уходом температуры за указанные пределы. В случае отключения внешнего питания устройства на все номера с признаком «p» будет отправлено соответствующее уведомление. Номера с признаком «i» будут получать информационные сообщения о включении или отключении оповещения (следить или следить и оповещать), и номера телефона с которого было произведено действие.

На этом пока всё. Спасибо за внимание! 🙂

Беспроводной цифровой термометр для смартфона

Простой Bluetooth термометр для Android на Arduino

В этой статье я расскажу как сделать простой беспроводной термометр, который может связываться с Andrond — смартфоном по каналу Bluetooth и отображать температуру на экране телефона в специальном приложении. Для изготовления такого термометра вам понадобится плата Arduino (например Arduino Uno), дешевый китайский модуль Bluetooth, и популярный дешевый термодатчик LM35.

Принципиальная схема устройства

Как видим, устройство питается от батареи напряжением 9 В, а Bluetooth модуль типа HC-05 подключается к контрактам CON1.

Смартфон с Android

Для работы с термометром на телефон нужно установить приложение — монитор temperaturemonitoring.apk. Программа создана с помощью веб-приложения MIT App Inventor. Если программа запущена на смартфоне, то данные с термометра принимаются по Bluetooth и отображаются на экране телефона.

Arduino Uno

Ардуино — это плата разработки, основанная на микроконтроллере AVR ATmega328P. На плате есть 6 аналоговых входов и 14 цифровых портов ввода/вывода. Микроконтроллер имеет 32 кб Flash памяти, 2 кб ОЗУ и 1 кб энергонезависимой памяти данных EEPROM. Плата поддерживает интерфейсы связи UART, SPI и I2C. Плата может работать на частоте 16 МГц.

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

Bluetooth модуль типа HC-05 — это простой в использовании модуль, реализующий последовательный порт через Bluetooth (SPP), предназначенный для простой реализации Bluetooth соединения в различных приложениях на микроконтроллерах. Последовательный порт через Bluetooth представляет собой протокол связи посредством модуляции Bluetooth V2.0 + EDR (улучшенная скорость передачи данных) со скоростью 3 Мбит/с в диапазоне частот 2,4 ГГц. Модуль использует ядро CSR Bluecore 04 — одночиповую систему Bluetooth основанную на технологии CMOS и использует адаптивную функцию скачкообразной перестройки частоты. Пароль автоматического соединения по умолчанию — 1234.

Термодатчик LM35

LM35 — это специальная прецизионная микросхема, выходное напряжение которой линейно и пропорционально изменению температуры (в градусах по Цельсию). LM35 имеет точность ±1/4 ℃ при температурах, близких к комнатной, и ± 3/4 ℃ в диапазоне температур от -55 до + 150 ℃. Масштабный коэффициент составляет 10 10 мВ / ℃. Вывод Vout датчика температуры LM35 подключен к аналоговому входу A0 Arduino Uno. Микроконтроллер Arduino обрабатывает это напряжение, и программа Temp.ino в MCU, вычисляет эквивалентную температуру. Значение температуры предается модулю Bluetooth HC-05 по последовательному интерфейсу.

Ка? ?оказано на схеме, контакты RX и TX модуля Bluetooth подключаются к выводам TX и RX Arduino Uno. Модуль Bluetooth HC-05 передает данные о температуре на с??ртфон через интерфейс Bluetooth. Приложение Android получает эти данные и выводит их на экран телефона. Для Для того, чтобы всё ето заработало, необходимо произвести сопряжения телефона и модуля Bluetooth.

Софт

Для прошивки платы Arduino вам потребуется оболочка Arduino IDE software. Это свободно распространяемое программное обеспечение скачивается на официальном сайте по следующей ссылке:
https://www.arduino.cc/en/Main/Software.

  1. Скачайте и установите программу Arduino
  2. Подключите плату Arduino к одному из USB портов компьютера.
  3. Запустите программу Arduino
  4. В программе выберите правильный COM потрт, созданный в момент подключения платы Arduino.
  5. Загрузите файл ? исходными кодами прошивки в программу Arduino (в терминах Ардуино такая программа называется «Sketch» (Скетч), ити «эскиз»), откомпилируйте и загрузите прошивку в контроллер платы

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

Сборка и тестирование

Соберите устройство согласно схеме. Проверка работоспособности очень проста. Установите на смартфона файл TemperatureMonitoring.apk. Подайте питание на передатчик (плату Ардуино и модуль Bluetooth). Перейдите в настройки телефона, в разделе доступных Bluetooth устройств найлите наш модуль и произведите соединение с ним, введя пароль 1234 (телефон отобразит устройство как HC-05). После успешного соединения запустите установленную программу TemperatureMonitoring и оно начнет отображать данные температуры, полученные со стороны передатчика:

Автор проекта Shibendu Mahata, Jadavpur University, Индия.
Источник — журнал Electronics For You (Индия).
Перевод MBS Electronics, 07.2018

Трёхзонный термометр на ардуино с индикацией пиковых температур. | DIY

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

Комплектующие:

  • аналог arduino nano
  • OLED-дисплей SSD1306
  • 3 датчика DS18B20
  • резистор 4,7 кОм
  • 2 резистора 10 кОМ
  • 2 кнопки
  • макетная плата

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

Дисплей подключаем к А4 и А5, так как только эти выводы могут работать с I2C и запитываем его от 3,3 В. Кнопки подключаем по схеме выше к D2 и D3, так как только эти выводы работают с прерываниями на arduino nano, но об этом позже. Датчики можно подключить к любому оставшемуся пину, я выбрал D4 и запитываем их от 5В, не забываем соединить +5В и информационный выход резистором 4,7 кОм. У меня получилась такая временная конструкция:

При включении, по умолчанию, на дисплей будет выводится текущая температура во всех трех зонах и названия этих зон. При нажатии первой кнопки будет происходить смена информации на более подробную по каждой зоне ( её название, текущая температура с точностью одного знака после запятой, минимальная и максимальная температура за период в целочисленном виде). Нажатие второй кнопки будет обнулять период за который фиксируется максимальная и минимальная температура, также предусмотрен автоматическое обнуление через сутки после включения или нажатия второй кнопки. В первом варианте скетча работа с кнопками была реализована стандартным способом, но так как скетч нагружен сбором информации, её обработкой и выводом, то выполнялся довольно долго и кнопки работали не совсем так как хотелось. Быстрое нажатие не переключало режимы, нужно было немного подержать кнопку, это связано с долгой работой скетча и не совпадением времени физического нажатия и программного опроса кнопки. Пропала даже необходимость задержки для устранения дребезга контактов кнопки. Получалось, что все работает, но не комфортно. Чтобы это устранить в окончательном варианте скетча добавим опрос первой кнопки в прерывании и именно поэтому нужно было подключать её к D2 или D3. Вторую кнопку решено было оставить как есть, срабатывание при удержании нам на руку, это будет как защита от случайного нажатия. Далее сам скетч с подробным описанием внутри:

Скачать скетч.

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

По умолчанию.

По умолчанию.

Первое нажатие, показания датчика с макетной платы, он не влагозащищенный и его не трогали.

Первое нажатие, показания датчика с макетной платы, он не влагозащищенный и его не трогали.

Второе нажатие, этот датчик побывал в стаканах.

Второе нажатие, этот датчик побывал в стаканах.

Третье нажатие, этот датчик также опускали в стаканы.

Третье нажатие, этот датчик также опускали в стаканы.

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

Если статья была вам полезна ставьте лайк, подписывайтесь на мой канал, ведь впереди еще много интересного!

#diy #arduino #ардуино #электроника для начинающих #программирование #электротехника #своими руками #arduino nano #микроконтроллеры #технологии

Самодельный сетевой термометр DS18B20 (ардуино + светотехника)

Прошло много времени с тех пор, как я его обновлял, так что пора задуматься над этим, не много чепухи, борьба!
Код с открытым исходным кодом, поставьте звезду, если он вам нравится!
git ссылка! ! !
Обзор колонки IOT:


необходимые материалы

1. nodemcu (я не буду здесь подробно объяснять).
2. DS18B20 (датчик температуры и влажности).
3. Резистор с сопротивлением более 4,7 кОм (достаточно для выполнения условий).
4. Несколько линий Dupont и один макет. (См. Конкретные фактические требования)

Подключение оборудования

        Что касается микроконтроллера, мы знаем, что для порта io микроконтроллера требуется подтягивающий резистор для подключения к DS18B20, но плата разработки приварена к подтягивающему резистору во время производства, и тогда этот Nodemcu не имеет подтягивающего резистора. резистор вверх, поэтому нам нужно подключить резистор самостоятельно.Диапазон значений больше 4,7 кОм, иначе устройство DS18B20 не может быть обнаружено для подключения к Nodemcu.
Подключение оборудования показано на рисунке ниже:

1. Скачать часть

Загрузите файлы библиотеки OneWire и DallasTemperature, используемые DS18B20.
(Вы можете вручную найти соответствующий файл библиотеки в проекте-> загрузить
библиотеку- > библиотеку управления для загрузки и установки). Файл библиотеки OneWire структурирован таким образом, чтобы позволить Arduino указать контакты, применяемые к одной шине, и библиотеке DallasTemperature используется файл То есть вы можете получить данные о температуре, считанные DS18B20, эти два файла заголовка должны быть включены в программу.

2. Интерпретация кода

(1) Представьте заголовочный файл мигалки и загруженные файлы заголовков OneWire.h, DallasTemperature.h.

#define BLINKER_WIFI 
#include <Blinker.h>

#include<OneWire.h>
#include<DallasTemperature.h>

2. Определите контакты, глобальные переменные и объекты OneWire, которые будут использоваться (вывод 13 соответствует D7 NodeMCU).

#define PIN 13      

float temp_read = 0;

DallasTemperature sensors(&onewire);
OneWire onewire(PIN);

3. Используйте технологию SmartConfig для настройки устройства для работы в сети одним щелчком мыши, принцип аналогичен совместному использованию Wi-Fi, а удобство использования выше, чем прямая настройка сети.

void smartConfig()
{
    
    
  WiFi.mode(WIFI_STA);
  Serial.println("\r\nWait for Smartconfig...");
  WiFi.beginSmartConfig();
  
  while (1)
  {
    
      
    Serial.print(".");
    delay(1000);                                             
    if (WiFi.smartConfigDone())
    {
    
    
      Serial.println("SmartConfig Success");
      
      Serial.printf("SSID:%s\r\n", WiFi.SSID().c_str());
      Serial.printf("PSW:%s\r\n", WiFi.psk().c_str());
      break;
    }
  }
}
void WIFI_Init()
{
    
    
    Serial.println("\r\n正在连接");
    
    while(WiFi.status()!=WL_CONNECTED)
    {
    
    
        if(WIFI_Status)
        {
    
    
            Serial.print(".");
            delay(1000);                                        
            count++;
            if(count>=5)
            {
    
    
                WIFI_Status = false;
                Serial.println("WiFi连接失败,请用手机进行配网"); 
            }
        }
        else
        {
    
    
            smartConfig();  
        }
     }  
     
     Serial. println("连接成功");  
     Serial.print("IP:");
     Serial.println(WiFi.localIP());
}

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

BlinkerNumber TEMP("temp");    

void heartbeat()
{
    
    
    TEMP.print(temp_read);        
}

В основной функции 65setup — обратный вызов последовательного порта, операция инициализации мигалки и функция возврата данных.

void setup()
{
    
    
    
    Serial.begin(115200);
    BLINKER_DEBUG.stream(Serial);
    BLINKER_DEBUG.debugAll();
    
    WIFI_Init();
    Blinker.begin(auth, WiFi.SSID().c_str(), WiFi.psk().c_str());
    Blinker.attachHeartbeat(heartbeat);
}

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

  Blinker.run();
   sensors.requestTemperatures();
   Serial. write("温度:");
   float t=sensors.getTempCByIndex(0);
   temp_read=t;
   Serial.print(t);
   Serial.println("摄氏度");
   delay(1000);

3. Отладка и результаты

(1) Снимок экрана с эффектом, распечатанным последовательным монитором, показан ниже.


(2)

Простой термометр на Ардуино “Уно” – Хроники Фрилансера

Некоторое время назад возникла идея ограничить потребление воды, которую наша теплоэнергетическая компания почему-то называет “горячей”. Для этого немного поинтересовался доступной элементарной базой, наличием датчиков и тому подобными вещами. Некоторое время назад уже видел, как на “йотюбе” мастера показывают простые устройства для контроля этого дела.

Одно из самых доступных решений состоит в использовании готовых модулей. Фактически даже есть уже готовые контроллеры, которые и температуру позволяют задать и настроить ряд параметров. Мне они не очень подходят по той простой причине, что буду использовать роботизированный шаровой кран, который имеет свою логику, и подавать на него напряжение надо по сути 5-10 секунд. А далее снимать напряжение. То есть логика работы реализуема, но получает что необходимо готовое устройство разобрать, доделать.

Кроме того, сразу на семейном совете решили, как обходить ситуацию – “я моюсь а эти отключили горячую воду”. Устройство ведь совсем перекроет кран горяче-теплой воды. Решили что сделаем там – когда появляется горячая, устройство включит систему сразу (ну или через 10…60 секунд задержки). А когда будет понижена температура ниже нижней границы допустимой зоны, то кран закроется через 10…20-ть минут. Причем, желательно эти параметры задавать с клавиатуры.

Выяснилось, что следует задавать как минимум следующие параметры:

  • Д1 – задержка в минутах для открытия крана
  • Д2 – задержка в минутах для закрытия крана
  • Д3 – время подачи управляющего напряжения на кран. 1…60 сек.
  • Температура T1 – верхняя граница зоны гистерезиса. Очевидно около 45С. При этой температуре – кран открывается с задержкой Д1
  • Температура T2 – нижняя температура зоны гистерезиса. Около 40С.  Кран открыт, и температура опускается ниже этой грарницы – то кран закрывается через Д2 минут

Логика работы.

  • При включении меряется температура, если она ниже Т2 – кран закрывается. Если выше Т2- кран открывается. Т1 – не используется.
  • Идет замер температуры. Интегральный. За основу берется отсчет 5-ти измерений.
  • Если интегральная температура последних 5-ти измерений повышается и превышает Т1 – кран открывается
  • Если интегральная температура последних 5-ти измерений падает и понижается ниже Т2 – кран закрывается
  • Процедура открытия и закрытия крана – одна для всей системы. Немедленных операция не выполняется. Все операции выполняются с задержкой Д1 или Д2, для открытия или закрытия.
  • Меню настройки параметров использует 4 клавиши без фиксации вверх/вниз/переключение режимов/ и изменения состояния
  • Устанавливаются параметры Т1,Т2, Д1, Д2, Состояние
  • Состояние изменяется как “Авто”, “Выкл”, “Вкл”, авто – работает как описано, остальное – принудительно устанавливает включенный или выключенный режим. Немедленно.

Для индикации работы используются светодиоды – Красный, Зеленый и желтый для индикации текущего состояния.

Пару слов про ПО. Использую старую версию Ардуино 1.0.4. просто потому, что мне так удобно. Вы можете адаптировать все скетчи/скрипты под более новую версию.

Для начала разработки проверил работоспособность макета на основе Ардуино “Уно”, герметичного цифрового датчика температуры DS18b20. В качестве индикатора использовал обычный индикатор 1602. Схема включения вот такая. Без резистора 4.7 кОм – не работает. Зеленый провод на следующем эскизе используется для передачи данных и соответствует желтому в герметичном датчике.

Больше информации по этой части проекта можно найти на:

  • Библиотека для работы с датчиками температуры Даллас
  • Тема на tweaking4all.com – много информации и примеров по ИМС и ее использованию
  • Библиотека GitHub OneWire – здесь
  • Способ вывода переменных с плавающей точкой, на встроенных устройствах – вот здесь
  • Скетч макета который вы увидите ниже – ds18b20_1620-001, в коде есть несколько других (пока по сути не нужных) функций, для работы с RTC.

Инерционность датчика, около 2-х секунд, что хорошо видно при касании его рукой. Работает эта схема отлично. Остается доделать программную часть – добавить кнопки и псевдо-меню.

Как всегда статья дописівается и дополняется по ходу проекта.

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-карты или неправильного соединения).

Цифровой термометр с использованием LM35 и Arduino

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

1) Когда температура превышает 35 градусов Цельсия, светится зеленый светодиод.

2) Когда температура ниже 35 градусов Цельсия, красный светодиод светится.

3) Потенциометр 10 кОм используется для установки контрастности ЖК-экрана 16×2.

Основным используемым здесь компонентом является датчик температуры (LM35).

LM35

LM35 — это датчик температуры, который выдает аналоговый сигнал на выходе, который линейно пропорционален температуре в градусах Цельсия.

LM35 имеет три контакта:

PIN 1: Vcc, это входной контакт (5v)

PIN 2: Vout, мы получаем выход (он должен быть подключен к аналоговому выводу Arduino)

PIN 3: GND , он используется для заземления

CIRCUIT

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

Выберите плату в IDE как «Arduino Uno» и загрузите указанный код.

Если не удается загрузить код, проверьте USB-накопитель или попробуйте снова подключить его.

ФОРМУЛА ТЕМПЕРАТУРЫ LM35

Выходное напряжение LM35 прямо пропорционально градусам Цельсия, а 10 мВ соответствует 1 градусу Цельсия.

Примечание: LM35 может измерять от -50 до 150 градусов Цельсия.

Разрешение аналогового вывода Arduino составляет от 0 до 1023, т. Е. При входе + 5 В он считается до 1023.

LM35 Максимальный вход составляет 1500 мВ (максимальная температура составляет 150 градусов Цельсия) или 1,5 В (максимальное выходное напряжение).

Таким образом, при 1,5 В количество аналоговых выводов равно (1,5 / 5) * 1023 = 306.9.

Теперь новое разрешение LM35 равно 306.9 / 150 = 2.046. Этот аналоговый вывод имеет значение 2,046, что соответствует изменению температуры по Цельсию LM35 на 1 градус.

ОКОНЧАТЕЛЬНОЕ ВЫПОЛНЕНИЕ

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

Здесь я использовал 5V Arduino для включения датчика (LM35) и ЖК-дисплея. Вы также можете использовать отдельный источник питания 5 В от батареи.

Когда температура превышает 35 градусов Цельсия, зеленый светодиод светится, как показано ниже:

Когда температура ниже 35 градусов Цельсия, красный светодиод светится, как показано ниже:

Вы также можете моделировать онлайн: https: / / www.tinkercad.com/things/ddvnnsV6y88

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

с использованием датчика температуры 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

140002

14

18

19

20

21

22

23

24

25

26

27

28

29

30

000

34

35

36

37

38

39

40

41

42

#include h>

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

#define sensor A0

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

{

0b00011,

0b00011,

0b00000,

0b00000,

0b00000,

000

000

000

000

000

000 0b00000 };

void setup ()

{

lcd.begin (16,2);

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

lcd.setCursor (0,0);

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

ЖК.setCursor (0,1);

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

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

lcd.clear ();

}

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

{

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

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

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

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

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

lcd.clear ();

lcd.setCursor (2,0);

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

ЖК.setCursor (4,1);

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

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

lcd.print («C»);

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

}


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

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

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

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

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

Как сделать самодельный термометр No Touch на Arduino «osoyoo.com

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

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

Запчасти и аксессуары:

  • Плата Arduino (любая плата, совместимая с UNO, Nano, Mega2560) x 1 шт.
  • MLX Инфракрасный датчик температуры.
  • OSOYOO I2C 16 × 2 ЖК-дисплей
  • Держатель батареи 9V Arduino (опционально)

Аппаратное соединение:
MLX Инфракрасный датчик температуры и ЖК-дисплей I2C 16 × 2 обмениваются данными с Arduino через шину I2C.Линия данных
I2C имеет два контакта SDA и SCL.
На платах UNO и MEGA2560 SCL — крайний левый вывод в рядах цифровых выводов (четвертый вывод слева от D13), а SDA находится сразу за выводом SCL (третий вывод слева от D13). В UNO A4 также является выводом SDA, а A5 также является выводом SCL.

MLX Ардуино UNO
SDA SDA
SCL SCL
VCC 3 В
ЗЕМЛЯ ЗЕМЛЯ
ЖК-дисплей 16 × 2 Ардуино UNO
SDA A4
SCL A5
VCC 5 В
ЗЕМЛЯ ЗЕМЛЯ

Установка программного обеспечения:

Шаг 1) Загрузите библиотеку LiquidCrystal I2C с https: // osoyoo. com / wp-content / uploads / samplecode / LiquidCrystal_I2C.zip

Затем в верхнем меню Arduino IDE -> Sketch -> Include Library -> Add .Zip library, добавьте указанный выше файл в библиотеку Arduino IDE.

Шаг 2) Добавьте библиотеку Adafruit_MLX
В верхнем меню Arduino IDE -> Sketch -> Включить библиотеку -> Библиотеки диспетчера, затем по ключевым словам для поиска «Adafruit_MLX» вы найдете библиотеку Adafruit_MLX, нажмите «Установить», чтобы загрузить эту библиотеку в вашу среду IDE. .

Шаг 3) Загрузите образец скетча с https: // osoyoo.com / driver / diythermometer.ino

Загрузите вышеуказанный эскиз в свой Arduino.

Теперь ваш ЖК-дисплей 1602 будет показывать температуру объекта, который находится перед датчиком MLX.

См. Следующий рисунок;

9 Датчики температуры, совместимые с Arduino

Считывание температуры с помощью Arduino — очень полезная задача. Существует множество датчиков температуры с различными функциями, которые вы можете использовать в своих проектах. В этой статье мы собрали 9 доступных датчиков температуры, совместимых с Arduino и другими платами для разработки (например, ESP32 или ESP8266).

1. DHT11

DHT11 — это цифровой датчик температуры, который измеряет температуру и относительную влажность.

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

В следующей таблице приведены наиболее важные характеристики датчика температуры DHT11.

У нас есть специальное руководство по использованию этого датчика с Arduino:

2.DHT22

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

В следующей таблице приведены наиболее важные характеристики датчика температуры DHT22.

Узнайте, как использовать датчик температуры DHT22 с Arduino, из следующего руководства:

3.LM35DZ, LM335, LM34

LM35DZ — это линейный датчик температуры, калиброванный напрямую в градусах Цельсия. Аналоговый выход прямо пропорционален температуре в градусах Цельсия: 10 мВ на каждый градус Цельсия повышения температуры.

Этот датчик очень похож на LM335 (калиброванный по Кельвину) и LM34 (калиброванный по Фаренгейту).

В следующей таблице приведены наиболее важные характеристики датчика температуры LM35.

LM35DZ
Протокол связи аналоговый выход
Диапазон питания 4–30 В

5 150 ° C Диапазон температур

Точность +/- 0.5ºC (при 25ºC)
Интерфейс с Arduino аналог Читать ()
Где купить? Проверить цены
LM35
LM335
LM34

Узнайте, как использовать датчики температуры LM35DZ, LM335 или LM34 с Arduino:

4.

BMP180

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

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

Ознакомьтесь со следующим руководством, чтобы узнать, как использовать датчик BMP180 с Arduino для измерения давления, температуры и оценки высоты:

5. TMP36

TMP36 — аналоговый датчик температуры. Он выводит аналоговое значение, пропорциональное температуре окружающей среды. Он очень похож на датчик температуры LM35.

Проверьте наиболее подходящие характеристики TMP36 в следующей таблице.

TMP36
Протокол связи аналоговый выход
Диапазон питания от 2,7 В до 5,5 В

5 Диапазон температур до + 125 ° C

Точность +/- 1ºC (при 25ºC)
Интерфейс с Arduino аналог Читать ()
Где купить? посмотреть на eBay

6.

LM75

Датчик LM75 — еще один полезный датчик температуры. Он работает через соединение I2C, что означает, что он взаимодействует с Arduino с помощью контактов SDA и SCL. Вы можете найти один из этих датчиков примерно за 2 доллара (посмотреть на eBay).

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

LM75
Протокол связи I2C
Диапазон питания 3.От 0 до 5,5 В
Диапазон температур от -55 до 125 ° C
Точность +/- 2,0 ° C (в диапазоне от -55 до 125 ° C))
Интерфейс с Arduino Библиотека I2C для LM75
Где купить? посмотреть на eBay

7.

BME280

BME280 — барометрический датчик, который также измеряет температуру и влажность.Он может обмениваться данными через протокол связи I2C или SPI, а модуль BME280 может получать питание от 3,3 или 5 В.

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

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

Узнайте, как использовать BME280 с Arduino для получения показаний температуры, влажности и давления:

8. DS18B20

Датчик температуры DS18B20 представляет собой однопроводной цифровой датчик температуры.Это означает, что для связи с Arduino требуется только одна линия данных (и GND).

Каждый датчик температуры DS18B20 имеет уникальный 64-битный серийный код. Это позволяет подключить несколько датчиков к одному проводу передачи данных. Таким образом, вы можете получать температуру от нескольких датчиков, используя всего один цифровой вывод Arduino.

В следующей таблице приведены наиболее важные характеристики датчика температуры DS18B20:

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

9.Водонепроницаемый DS18B20

DS18B20 также доступен в водонепроницаемой версии (см. Руководство по DS18B20). Провода защищены ПВХ, который идеально подходит, если вам нужно измерить температуру жидкостей или если датчик должен подвергаться воздействию воды.

Электропроводка и технические характеристики такие же, как у обычного DS18B20.

Где купить? Сравните цены на водонепроницаемый датчик температуры DS18B20 на Maker Advisor.

Заключение

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

Вам также могут понравиться наши ресурсы по Arduino:

Спасибо за чтение.

П.С. Также рекомендуем прочитать:

Цифровой термометр с использованием Arduino и датчика DS18B20

// Подключение Arduino к датчику температуры DS18B20

#include h> // Включить код библиотеки ЖК-дисплея

#define DS18B20_PIN 10

// LCD подключения модулей (RS, E, D4, D5, D6, D7)

LiquidCrystal lcd (2, 3, 4, 5, 6, 7);

int raw_temp;

температура поплавка;

char txt [] = «C»;

void setup (void) {

// запуск последовательного порта

Serial.begin (9600);

// настраиваем количество столбцов и строк ЖК-дисплея

lcd.begin (16, 2);

txt [0] = 223; // Поместите символ градуса (°)

lcd.setCursor (2, 0);

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

}

void loop (void) {

if (ds18b20_read (& raw_temp)) {

Serial.print («Temperature =»);

temp = (float) raw_temp / 16; // Преобразование необработанного значения температуры в градусы Цельсия (температура в ° C = raw / 16)

Serial.печать (темп); // Вывести значение температуры в градусах Цельсия

Serial.println («° C»); // Печать ‘° C’

// Отображение температуры на ЖК-дисплее

lcd. setCursor (4, 1);

жк. Печать (темп.);

lcd.print (txt);

}

else {

Serial.println («Ошибка связи!»);

lcd.setCursor (4, 1);

lcd.print («Ошибка!»);

}

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

}

bool ds18b20_start () {

bool ret = 0;

digitalWrite (DS18B20_PIN, LOW); // Отправляем импульс сброса на датчик DS18B20

pinMode (DS18B20_PIN, OUTPUT);

delayMicroseconds (500); // Ждем 500 мкс

pinMode (DS18B20_PIN, INPUT);

delayMicroseconds (100); // ждем чтения ответа датчика DS18B20

if (! digitalRead (DS18B20_PIN)) {

ret = 1; // Датчик DS18B20 присутствует

delayMicroseconds (400); // Ждем 400 мкс

}

return (ret);

}

void ds18b20_write_bit (логическое значение) {

digitalWrite (DS18B20_PIN, LOW);

pinMode (DS18B20_PIN, ВЫХОД);

delayMicroseconds (2);

digitalWrite (DS18B20_PIN, значение);

delayMicroseconds (80);

pinMode (DS18B20_PIN, INPUT);

delayMicroseconds (2);

}

void ds18b20_write_byte (значение байта) {

byte i;

для (i = 0; i <8; i ++)

ds18b20_write_bit (bitRead (value, i));

}

bool ds18b20_read_bit (void) {

bool value;

digitalWrite (DS18B20_PIN, LOW);

pinMode (DS18B20_PIN, ВЫХОД);

delayMicroseconds (2);

pinMode (DS18B20_PIN, INPUT);

delayMicroseconds (5);

значение

= digitalRead (DS18B20_PIN);

delayMicroseconds (100);

возвращаемое значение;

}

байт ds18b20_read_byte (void) {

байт i, значение;

для (i = 0; i <8; i ++)

bitWrite (значение, i, ds18b20_read_bit ());

возвращаемое значение;

}

bool ds18b20_read (int * raw_temp_value) {

if (! Ds18b20_start ()) // Отправить стартовый импульс

return (0); // Возвращаем 0 в случае ошибки

ds18b20_write_byte (0xCC); // Отправляем команду пропуска ПЗУ

ds18b20_write_byte (0x44); // Отправляем команду начала преобразования

while (ds18b20_read_byte () == 0); // Ожидаем завершения преобразования

if (! Ds18b20_start ()) // Отправляем стартовый импульс

return (0); // Возвращаем 0 в случае ошибки

ds18b20_write_byte (0xCC); // Отправляем команду пропуска ПЗУ

ds18b20_write_byte (0xBE); // Отправляем команду чтения

* raw_temp_value = ds18b20_read_byte (); // Считываем младший байт температуры и сохраняем его в младшем байте raw_temp_value

* raw_temp_value | = (unsigned int) (ds18b20_read_byte () << 8); // Считываем байт MSB температуры и сохраняем его в raw_temp_value Байт MSB

return (1); // OK -> return 1

}

Температурные датчики? Регистрация для Arduino: какой датчик выбрать?

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

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

  • Датчик термистора
  • Датчики DHT и AHT
  • Водонепроницаемый датчик температуры
  • Барометрический датчик
  • Датчик газа

Все эти датчики доступны для покупки в нашем интернет-магазине! — Seeed Studio Bazaar, активатор оборудования IoT.

Как видите, некоторые из датчиков являются частью нашей системы Grove.

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


Какой датчик температуры выбрать для Arduino?

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

Термистор: Термистор — это сочетание терминов термистор и резистор. В конечном счете, это резистор особого типа , который зависит от температуры. Это означает, что сопротивление резистора изменяется в зависимости от температуры. Термисторы очень точны и экономичны для измерения неэкстремальных температур (~ -40 ° C — 100 ° C).Термисторы могут регистрировать только данные о температуре, поэтому это лучший выбор, если вы ищете экономичный и надежный способ регистрации данных о неэкстремальных температурах.

DHT и AHT: Датчики DHT и AHT работают одинаково. Датчики AHT — это новая и улучшенная версия датчиков DHT. Эти датчики состоят из двух основных частей — термистора и емкостного датчика влажности . Это означает, что датчики DHT и AHT могут регистрировать не только данные о температуре, но и о влажности.Затем внутри этих датчиков есть еще одна микросхема для преобразования аналогового сигнала от датчиков в цифровые сигналы. По сути, это термисторный датчик с дополнительным датчиком влажности. Если вы ищете экономичный и надежный способ регистрации данных как о неэкстремальных температурах (~ -40 ° C — 80 ° C), так и о влажности, это лучший выбор. Датчики DHT также являются самыми популярными среди пользователей Arduino.

Водонепроницаемые датчики: Водонепроницаемые датчики температуры также доступны для контроля температуры воды.Эти датчики могут регистрировать более широкий диапазон температур (~ -50 ° C — 120 ° C).

Другое:

Барометрические датчики: Барометрические датчики могут регистрировать данные как о давлении, так и о температуре.

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

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

Итак, давайте посмотрим, какие датчики температуры наиболее популярны в каждой категории!


Термисторный датчик

Grove — Датчик температуры (2,90 $)
  • Grove — Датчик температуры использует термистор для определения температуры окружающей среды.
  • Обнаруживаемый диапазон этого датчика составляет -40ºC — 125ºC , а точность составляет ± 1,5ºC

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


Датчики DHT и AHT

Grove — Датчик температуры и влажности (DHT11) (5,90 $)
  • DHT11 — это базовый сверхдешевый цифровой датчик температуры и влажности.
  • DHT11 — самый популярный модуль температуры и влажности для Arduino и Raspberry Pi благодаря своим многочисленным преимуществам.
    • Например. Низкое энергопотребление и отличная долговременная стабильность. Относительно высокая точность измерения может быть получена при очень низких затратах.
  • Our Grove — Датчик температуры и влажности — это высококачественный недорогой цифровой датчик температуры и влажности, основанный на новом модуле DHT11.
    • Он имеет вывод цифрового сигнала с одной шиной через встроенный АЦП, что экономит ресурсы ввода-вывода платы управления.
  • Он имеет диапазон влажности от 5% до 95% относительной влажности с ± 5% , а также диапазон температур от -20 ℃ до 60 ℃ с ± 2% .

Как уже упоминалось, наш датчик температуры и влажности Grove использует обновленную версию DHT11. Так в чем разница?

Датчик температуры-влажности-DHT22 (AM2302) (4,99 доллара США)
  • Цифровой модуль измерения температуры и влажности AM2302 представляет собой комбинированный датчик температуры и влажности с откалиброванным цифровым выходным сигналом.
  • Датчик состоит из емкостного чувствительного элемента и высокоточного элемента измерения температуры, подключенного к высокопроизводительному 8-разрядному микроконтроллеру.
    • Таким образом, продукт имеет преимущества : отличное качество, сверхбыстрый отклик, сильную помехоустойчивость и высокую стоимость.
  • Датчик DHT22 имеет сверхкомпактный размер, чрезвычайно низкое энергопотребление и с дальностью передачи сигнала более 20 метров , что делает его очень универсальным с точки зрения применения.
  • Продукт также легко подсоединяется с помощью 3 выводов (интерфейс с одной шиной). Если вы хотите подключить датчик более длинным проводом, вы можете легко добавить подтягивающий резистор.
  • DHT22 имеет диапазон влажности от 0% до 100% относительной влажности с ± 2% и диапазон температур от -40 ℃ до 80 ℃ с ± 0,5% .

Grove — Датчик температуры и влажности Pro (DHT22 / AM2302)
  • Часть системы Grove, есть еще один датчик температуры с модулем DHT22.
  • Отличие заключается в том, что этот датчик имеет коммутационную плату с разъемом Grove. Это сделано для упрощения подключения к щитам, совместимым с Seeeduino или Grove.Большое удобство, ура! R
  • Этот датчик также имеет диапазон влажности от 0% до 100% относительной влажности с ± 2% и диапазон температур от от -40 ℃ до 80 ℃ с ± 0,5% .

Эти датчики DHT идеально подходят для домашних проектов, таких как метеостанции, системы автоматического контроля окружающей среды, тестирование / проверка оборудования, системы мониторинга фермы / сада и многое другое!

В целом, датчики DHT представляют собой базовые и медленные датчики температуры и влажности, которые подходят для начинающих и любителей, желающих выполнять базовую регистрацию данных.DHT22 более точен и имеет больший диапазон по сравнению с DHT11, но стоит дороже. Если вы ищете что-то более точное с большим диапазоном, выберите DHT22, если нет, DHT11 тоже подойдет!

Grove — Датчик температуры и влажности промышленного класса AHT20 I2C
  • Этот датчик температуры, выпущенный в начале 2020 года, основан на модуле AHT20 от Aosong, также создателя DHT11 и DHT22.
  • Новые внутренние компоненты AHT20 позволяют улучшить его характеристики по сравнению с датчиками предыдущего поколения.
  • AHT20 имеет диапазон влажности 0% — 100% с точностью ± 2%, относительной влажности и диапазон температур -40 ℃ — 85 ℃ с точностью ± 0,3 ℃ .

Если вам нужны более точные данные, которые не могут предоставить датчики серии DHT, AHT20 будет для вас правильным выбором. Узнайте больше в нашем другом блоге.


Водонепроницаемый датчик температуры

Однопроводный датчик температуры (DS18B20) (7 долларов США.50)
  • DS18B20 — это цифровой термометр, который обеспечивает измерение температуры от 9 до 12 бит по Цельсию.
  • Имеет функцию сигнализации с энергонезависимой программируемой пользователем верхней и нижней точкой срабатывания.
  • Это однопроводный датчик температуры длиной 2 м с водонепроницаемым зондом и длинной проволокой, , подходит для иммерсивного определения температуры .
  • Он широко принят и задокументирован для использования с Arduino.
  • Чтобы этот датчик заработал, вам нужно добавить дополнительное сопротивление , чтобы он заработал, что мы и сделали, настроив его на порт Grove и предварительно собрав сопротивление внутри, чтобы вы могли использовать его как обычный датчик Grove. .
    • Это делает его легко подключаемым однопроводным датчиком температуры для Seeeduino, который основан на Arduino и совместим со всеми платформами Arduino.
  • Некоторые особенности этого датчика DS18B20 включают:
    • Водонепроницаемый
    • Требуется только один провод для интерфейса данных
    • Совместимость с Grove
    • Допускает источник питания от 3,0 В до 5,5 В
    • Широкий диапазон температур от от -55 ° C до + 125 ° C
    • Высокая точность ± 0.5 ° C (от -10 ° C до + 85 ° C)

Поскольку этот датчик температуры DS18B20 является водонепроницаемым с широким диапазоном температур и высокой точностью, он очень подходит для проектов на открытом воздухе или для измерения температуры жидкости. Некоторые проекты включают приготовление пищи Sous Vide, солнечный котел и многое другое. Однако DS18B20 использует протокол 1-Wire Dallas, который требует некоторого кодирования, чтобы заставить его работать . Это делает его немного менее удобным для новичков.

Вы можете заглянуть в другой наш блог, посвященный DS18B20, чтобы узнать больше об этом датчике!


Барометрический датчик

Grove — Датчик барометра (BMP280) (8 долларов США.90)
  • Датчик BMP280 — это датчик атмосферного давления, специально разработанный Bosch для мобильных приложений.
    • Он отличается высокой точностью, линейностью, а также долговременной стабильностью и высокой устойчивостью к электромагнитной совместимости.
  • Датчик барометра Grove BMP280 построен на основе Bosch BMP280, недорогого и высокоточного датчика окружающей среды, который измеряет температуру и барометрическое давление.
  • Давление воздуха можно измерить в диапазоне от 300 гПа до 1100 гПа с ± 1.0 гПа абсолютная точность. Что касается температуры, датчик идеально работает в диапазоне температур от –40 ℃ до 85 ℃ с точностью ± 1 ℃ .
  • Благодаря высокой точности измерения атмосферного давления, высота может быть рассчитана так же, как барометрическое давление и высота обратно пропорциональны. Высота может быть измерена с точностью до ± 1 метра.
  • Еще одна замечательная особенность этого модуля заключается в том, что вам даже не нужно беспокоиться о конфликтах I2C, поскольку он предоставляет как интерфейсы I2C, так и SPI .Чтобы использовать SPI, просто отпаяйте контактные площадки на задней панели. Если вы используете I2C, плата также предоставляет 2 адреса I2C, которые вы можете выбрать по своему усмотрению.

Grove — Датчик окружающей среды (BME280) (17,00 долларов США)
  • Датчик BME280 — это встроенный датчик окружающей среды, разработанный специально для мобильных приложений, где размер и низкое энергопотребление являются ключевыми ограничениями при проектировании.
  • Они имеют общие черты с вышеупомянутым BMP280, но не полностью идентичны.
  • Устройство сочетает в себе отдельные высокоточные датчики давления, влажности и температуры с высокой линейностью, рассчитанные на низкое потребление тока, долгосрочную стабильность и высокую устойчивость к электромагнитной совместимости.
  • Датчик окружающей среды Grove (BME280) построен на базе Bosch BME280.
  • Grove BME280 обеспечивает точное измерение не только атмосферного давления и температуры, но и влажности окружающей среды.
    • Давление воздуха можно измерить в диапазоне от 300 гПа до 1100 гПа с ± 1.0 с точностью гПа, в то время как датчик идеально работает для температур от — 40 ℃ до 85 ℃ с точностью ± 1 ℃ . Что касается влажности, то можно получить значение влажности с погрешностью не более 3% .
  • Подобно BMP280, он может измерять высоту с точностью ± 1 метров, что также делает его точным высотомером.
  • Кроме того, вам не нужно беспокоиться о конфликтах I2C, поскольку он предоставляет как , , так и интерфейсы I2C и SPI .

Так в чем их отличия?

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

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


Датчик газа

Grove — Датчик температуры, влажности, давления и газа (BME680) (20 долларов. 50)
  • BME680 является расширением существующего семейства датчиков окружающей среды Bosch Sensortec. BME680 впервые объединяет высоколинейные и высокоточные датчики газа, давления, влажности и температуры, где датчик газа в BME680 может обнаруживать широкий спектр газов для измерения качества воздуха для личного благополучия.
  • Датчик температуры, влажности, давления и газа Grove (BME680) основан на модуле BME680. Функция 4-в-1 интегрирована в такой небольшой модуль, что позволяет очень удобно применять его на устройствах IoT или GPS.
  • Он отличается низким энергопотреблением , широким диапазоном измерения и имеет дополнительный выход , который позволяет независимо включать / отключать отдельные датчики влажности, давления и газа.
  • Газы, которые может обнаруживать BME680, включают летучие органические соединения (ЛОС) из красок (таких как формальдегид), лаков, средств для удаления краски, чистящих средств, мебели, офисного оборудования, клея, клея и спирта.
  • Узнайте больше подробностей и технических характеристик BME680 ниже!

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


Сводка

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

Датчик температуры (BMP2806) Датчик температуры окружающей среды , Влажность, давление
Датчик Термистор DHT11 DHT22 (AM2302) AHT20 Однопроводный датчик температуры (DS18B20) Grove — Датчик барометра (BMP2806 Grove) Grove — Датчик температуры, влажности, давления и газа (BME680)
Меры Температура Температура, влажность Температура, влажность Температура, влажность Температура Температура, давление Температура, влажность, давление, газ
Протокол связи Однопроводный (интерфейс с одной шиной). Однопроводный (интерфейс с одной шиной). Однопроводный (интерфейс с одной шиной). I2C One-Wire (интерфейс с одной шиной). I2C, SPI I2C, SPI I2C, SPI
Напряжение питания от 3,3 В до 5 В от 3,3 В до 5 В от 3,0 до 6 В от 2,0 до 5,5 В В до 5,5 В от 3,3 В до 5 В от 3,3 В до 5 В от 3,3 В до 5 В
Диапазон измерения температуры от -40 ° C до 125 ° C от -20 º до 60 ℃ от -40 ° C до 80 ° C от -40 ° C до 85 ° C от -55 ° C до 125 ° C от -40 ° C до 85 ° C от -40 ° C до 85 ° C -40 ℃ до 85 ℃
Точность измерения температуры ± 1.5 ° C ± 2% ± 0,5% ± 0,3 ℃ ± 0,5 ° C ± 1 ° C ± 1 ℃ ± 1 ° C
Другие измерения Диапазон и Точность Диапазон влажности: от 5 до 95% Точность влажности: ± 5% Диапазон влажности: от 0 до 100% Относительная влажность Точность: ± 2% Диапазон влажности: от 0 до 100% Точность влажности: ± 2% Диапазон атмосферного давления: 300 — 1100 гПа Точность барометрического давления: ± 1. 0 гПа Диапазон атмосферного давления: 300 — 1100 гПа Точность барометрического давления: ± 1,0 гПа Диапазон влажности: 0% — 100% Точность относительной влажности: ± 3% Диапазон атмосферного давления: 300-1100 гПа Точность барометрического давления: ± 1,0 гПа Диапазон влажности: 0 % — 100% Точность относительной влажности: ± 3% Датчик газа ЛОС (например, этанол, спирт, окись углерода)
Цена 2,90 долл. США 5,90 долл. США 4,99 долл. США / 9,90 долл. США 4,90 долл. США долл. США .90 17,00 $ 20,50 $

Что вы думаете об этом списке датчиков температуры? У вас есть еще один датчик температуры, который вы хотите добавить в этот список? Дайте нам знать в разделе комментариев ниже!

Теги: датчики температуры Arduino, bme280, BME280 Arduino, BME680, bme680 arduino, bmp280, bmp280 arduino, DHT11, DHT11 Arduino, DHT22, DHT22 Arduino, ds18B20, DS18B20 Arduino, термистор

Продолжить чтение

Постройте графический термометр | Журнал 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. Проверка нажатия кнопок оператора.
    • При нажатии PB1 (+) перейдите к подпрограмме Set-Clock .
    • Измените период тренда, если нажать 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 сбрасывается обратно в ноль, таким образом возвращаясь «по кругу» к первому местоположению массива. Несколько простых тестов «если» для ограничения диапазона используются для обеспечения правильной работы 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 Wiring: Чтобы установить контакты 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


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

A110 (Коробка из 100 шт. По 4,20 $)A106 (Коробка из 100 шт. По 3 доллара США.92)A113 (коробка из 100 шт. По 4,97 долл. США)
ПУНКТ КОЛ-ВО ОПИСАНИЕ ИСТОЧНИК 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 А Зарядное устройство 5V + кабель — опция
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 ПЛАТА В СБОРЕ —— Состоит из позиций а-е ниже
7a 1 ПЛАТА — ПЛАТА ПРОТОТИПА Различный,
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% AXIAL Цифровой ключ 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
Макмастер

A106 (коробка из 100 шт. По 1,45 $)

10 4 NO_4 x .5 ВИНТ САМОРЕЗИНЯЩИЙ Различный СТАЛЬ, НОМЕР 4, ВИНТ ЛИСТОВОГО МЕТАЛЛА 1/5 ДЮЙМА Для получения более подробной информации см. Номер по каталогу McMaster
Макмастер

A110 (Коробка из 100 шт. По 42 $.21)

11 4 4-40 x 0,5 В НОЖЕ ВИНТ HD Различный СТАЛЬ, НОМЕР 4, ВИНТ ЛИСТОВОГО МЕТАЛЛА 1/4 ДЮЙМА Для получения более подробной информации см. Номер по каталогу McMaster
Макмастер
12 4 4-40 x 0,25 ВИНТ HD МАШИННЫЙ Различный НЕРЖАВЕЮЩАЯ ВИНТА STL SCKT HD 4-40 x 1/4 ДЮЙМА Для получения более подробной информации см. Номер по каталогу McMaster
Макмастер
13 4 ВИНТ PHIL HD MACH 4-40 x 0,75 дюйма Различный ВИНТ PHIL HD 4-40 x 3/4 дюйма из нержавеющей стали Для получения более подробной информации см. Номер по каталогу McMaster
Макмастер
14 4 4-40 ГАЙКА ШЕСТИГРАННАЯ Различный ГАЙКА ШЕСТИГР. STL НЕРЖ. STL 4-40 Для получения более подробной информации см. Номер по каталогу McMaster
Макмастер

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
Исходный код

.

Author:

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

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