DHT Tiny Breakout для Raspberry Pi
Компоненты оборудования: Датчик температуры Atmel ATTiny85 × 1DHT22 × 1 Датчик температуры и влажности DHT11 × 1 Программатор SparkFun Tiny AVR × 1 Резистор Adobe 4,7 кОм × 3 Резистор 10 кОм Adafruit × 1 Резистор Adobe 100 Ом × 1 Светодиоды Adobe Diffused Blue 3 мм × 1 Тактильный кнопочный переключатель Adobe Fruit × 1 ″ 36-контактный штекерный разъем 1 шт. При длине 6, 1 шт. При длине 2 (всего 8 контактов) × 1 Общая перемычка (0,1 ″) × 1 Arduino UNO и Genuino UNO Необязательно - используются для отладки и тестирования. × 1 Программные приложения и онлайн-сервисы: Microsoft Visual Studio 2015, Microsoft Windows 10 IoT Core, Arduino IDE.
ИСТОРИЯ
Введение
DHT11 и DHT22 - популярные датчики температуры и влажности из-за их точности при очень низкой стоимости. Однако одна проблема с ними заключается в том, что они работают по проприетарному однопроводному протоколу, который требует точного времени. С этих датчиков трудно считывать показания на платах с операционными системами, не работающими в режиме реального времени.
Некоторое время назад я опубликовал статью под названием « Датчик температуры DHT11 / DHT22 . ”Демонстрируя, как использовать образец кода Microsoft C ++ с C # для чтения этих датчиков. Библиотека смогла получить чтение, но мне пришлось добавить логику повтора, чтобы сделать ее более надежной. Это оказалось успешным для большинства, но у некоторых были проблемы с тем, чтобы заставить это работать постоянно.
Учитывая уровень интереса к использованию этих датчиков на Raspberry Pi при работе под управлением Windows 10 IoT Core, я решил создать второй вариант, который обеспечивает очень надежный метод считывания этих датчиков при сохранении низкой стоимости.
Обзор
Представленный здесь подход состоит в том, чтобы подключить датчик DHT к недорогому ATtiny85 и настроить его как ведомое устройство I2C. Это достигается с помощью библиотеки TinyWireS и создания набора регистров, которые можно читать и записывать для взаимодействия с устройством.
Устройство поддерживает следующие функции:
- Настраиваемый интервал считывания, чтобы указать, как часто следует считывать показания датчика DHT. По умолчанию чтение выполняется каждые 2 секунды.
- Ручной режим, отключающий интервал и считывающий показания по запросу.
- Настраиваемый верхний и нижний порог температуры, который срабатывает вывод прерывания, когда текущее показание температуры выше или ниже порога.
- Режим сохранения конфигурации, позволяющий восстанавливать настроенные параметры при включении питания или после сброса.
- Сброс конфигурации, позволяющий сбросить сохраненную конфигурацию до значений по умолчанию.
- Управление мощностью датчика, позволяющее включать и отключать питание датчика для экономии энергии.
- Программируемый адрес устройства i2c. Адрес этого устройства по умолчанию - 0x26, но его можно изменить с помощью команды. Устройство запомнит адрес. При сбросе адрес вернется к 0x26. Библиотека C # также включает код для поиска устройства на шине i2c, поэтому вам не нужно знать адрес для подключения.
- Программируемый выбор модели DHT. По умолчанию используется прошивка DHT22, но это можно изменить, отправив устройству команду на использование другой модели. Модель сохраняется, так что после каждой перезагрузки или выключения питания она сохраняет используемый тип модели.
Исходный код
В этом проекте есть три набора кода. Основная прошивка для платы, главный эскиз Arduino, используемый для тестирования и демонстрации платы при подключении к Arduino Uno и приложению Window 10 IoT Code, которое демонстрирует, как использовать устройство от Raspberry Pi. Весь код доступен в связанном репозитории GitHub.
Устройство / Схема
Схема небольшая, и в ней используется всего несколько недорогих компонентов. ATtiny85 можно приобрести у нескольких поставщиков. Я рекомендую подобрать несколько из них, так как у них много полезных целей.
Схема имеет шестиконтактный разъем, который позволяет подключать эфир к другой схеме или напрямую к Raspberry Pi. Штыри определяются следующим образом:
- GND -> Подключите его к заземлению на вашей цепи или к контакту заземления на Raspberry Pi.
- RST -> Этот вывод используется для сброса или перезагрузки устройства. Этот вывод должен быть подключен к 5В при нормальной работе. Чтобы перезагрузить устройство, запустите на этом выводе кратковременный НИЗКИЙ импульс.
- ИНТ -> Эта булавка предназначена для двух целей. Когда пороги активированы, этот вывод будет ВЫСОКИМ, когда порог превышен, и НИЗКИМ в противном случае. При использовании режима энергосбережения этот вывод используется для вывода устройства из спящего режима путем выдачи кратковременного импульса высокого уровня.
- ПДД -> Линия I2C SDA.
- SCL -> Линия I2C SCL.
- 5 В -> Источник питания 5 В.
Также имеется двухконтактный разъем, куда можно добавить перемычку для включения или удалить для отключения встроенного светодиода.
При использовании этого в более крупном проекте схему для DHT Tiny можно объединить или встроить в существующую схему проекта. В этом случае контакты заголовка и светодиод не обязательны.
Схема также может быть построена на отдельной плате и подключена к Raspberry Pi с помощью нескольких проводов или соединительного кабеля.
Программирование ATtiny85
Загрузите скетч с названием DHT_Tiny_Breakout.ino . на ATtiny85 с помощью программатора AVR. Если у вас нет программиста, вы можете использовать Arduino Uno (или аналогичную плату). Прочтите одну или несколько статей, перечисленных ниже, чтобы получить помощь.
- Программирование ATtiny85 с помощью Arduino Uno на Hackster.io
- Виртуальная мастерская:запрограммируйте ATTiny85 с Arduino
- Программирование ATtiny с Arduino 1.6 (или 1.0)
- Программирование ATtiny с Arduino 0022
Я использую SparkFun Tiny AVR Programmer для загрузки моего ATtiny85.
Я использую свой чип на частоте 16 МГц. См. Мою статью под названием « ATtiny @ 16MHz . », Чтобы узнать, как это сделать.
<цитата>При использовании ATtiny85 для подчиненного эскиза требуется TinyWireS библиотека, которая будет установлена в папку ваших библиотек. Эту библиотеку можно загрузить с https://github.com/rambo/TinyWire.
Макет схемы
Первый шаг - запустить DHT Tiny на макетной плате. Используя макет половинного размера, постройте схему, следуя схематическим и макетным схемам, включенным в проект.
Вот несколько советов, которые помогут упростить задачу:
- Создайте DHT Tiny на своей макетной плате, а затем используйте другую макетную плату для соединения между DHT Tiny и Uno или Raspberry Pi.
- Рекомендуется использовать контакты заголовка, поскольку это упрощает подключение и отключение DHT Tiny как единого устройства.
- Если вы планируете использовать стандартные разъемные вилки на макетной плате, вам необходимо отрегулировать черный пластиковый ободок по центру контактов, чтобы он вошел в макетную плату (см. изображения ниже). Для регулировки используйте плоскогубцы.
- Если у вас есть удлиненные штекерные разъемы шириной 0,1 дюйма, используйте их на своей макетной плате. Если вы планируете паять компоненты на печатную плату, придерживайтесь заголовков нормального размера. Удлиненные удлинители не рекомендуются для печатных плат.
- Вам потребуются перемычки "мама-мама", если вы используете контакты заголовка на макетной плате. Если у вас их нет, опустите контакты заголовка и используйте перемычки «папа-папа» между двумя платами.
- Держите провода подальше от микросхемы, чтобы было легче вытащить пальцы и вытащить микросхему для программирования.
Ниже приведены некоторые изображения макетной версии моего DHT Tiny.
Подключение Arduino Uno
Если вас интересует быстрый тест, демонстрация или у вас возникают проблемы с тем, чтобы заставить это работать с вашим Raspberry Pi, вы можете подключить DHT Tiny к Arduino Uno (или аналогичному устройству).
- Подключите GND закрепить на GND на Уно.
- Подключите 5 В подключить к 5V на Уно.
- Подключите RST закрепить на D4 на Уно.
- Подключите SDA закрепить на A4 на Уно.
- Подключите SCL закрепить на A5 на Уно.
- Подключите INT закрепить на D3 на Uno и включите светодиод с помощью перемычки.
Загрузите и запустите скетч с именем DHT_Tiny_Master.ino . . Этот скетч будет отображен на мониторе последовательного порта . .
При подключении I2C между двумя платами важно иметь подтягивающие резисторы на линиях SDA и SCL. В этой схеме два 4,7 кОм подключены между контактами и 5 В.
Ниже приведены некоторые изображения макета DHT Tiny, подключенного к Arduino Uno.
Подключение к Raspberry Pi
Если вас интересует быстрый тест, демонстрация или у вас возникают проблемы с тем, чтобы заставить это работать с вашим Raspberry Pi, вы можете подключить DHT Tiny к Arduino Uno (или аналогичному устройству).
- Подключите GND закрепить на GND (вывод 9) на Raspberry Pi 2/3.
- Подключите 5 В подключить к 5V (контакт 2) на Raspberry Pi 2/3.
- Подключите RST закрепить на GPIO4 (вывод 7) на Raspberry Pi 2/3.
- Подключите SDA закрепить на SDA (контакт 3) на Raspberry Pi 2/3.
- Подключите SCL закрепить на SCL (вывод 5) на Raspberry Pi 2/3.
- Подключите INT закрепить на GPIO17 (вывод 11) и включите светодиод.
При подключении I2C между двумя платами важно иметь подтягивающие резисторы на линиях SDA и SCL. В этой схеме два 4,7 кОм подключены между контактами и 3V3.
<цитата>ОЧЕНЬ ВАЖНО! Плата DHT Tiny будет получать питание от вывода 5V на Raspberry Pi, но подтягивающие резисторы должны быть подключены к выводу 3V3 на Raspberry Pi (3V3 находится на контактах 1 и 17).
Ниже приведены некоторые изображения макета DHT Tiny, подключенного к Raspberry Pi 3.
Запуск приложения Windows 10
Получите код по ссылке репозитория GitHub внизу проекта и распакуйте его на свой компьютер. Откройте исходный код универсального приложения в Visual Studio 2015 и либо разверните его на Raspberry Pi и запустите из консоли администратора, либо запустите в режиме отладки из Visual Studio.
Если вы впервые запускаете код Visual Studio для приложения Windows 10 IoT Core, ознакомьтесь с этими статьями от Microsoft:
- Развертывание приложения с помощью Visual Studio
- Портал устройств Windows
Взгляните на демонстрацию видео ниже, чтобы увидеть, как приложение работает на Raspberry Pi 3 при подключении к DHT Tiny.
Основные характеристики приложения
Приложение Windows 10 UWP - это демонстрационное приложение, демонстрирующее все функции DHT Tiny. Код будет отображать текущие значения температуры, влажности и других регистров с устройства. Пользовательский интерфейс также предоставляет способ изменить конфигурацию устройства, включая адрес устройства.
Маленькая библиотека DHT
В примере кода используется библиотека, написанная для взаимодействия с DHT Tiny. Эта библиотека готова к использованию и может быть включена непосредственно во все ваши приложения.
Получить библиотеку из NuGet
Если вы не хотите включать проект непосредственно в свое приложение, просто загрузите библиотеку DHT Tiny из NuGet, используя команду, показанную ниже. Откройте консоль диспетчера пакетов в Visual Studio и введите команду.
PM> Install-Package IoT.DhtTiny
Сканирование шины i2c на предмет устройства
Библиотека DHT Tiny включает метод, который будет искать на шине i2c любые устройства DHT Tiny и возвращать список адресов. Этот список можно использовать для инициализации одного или нескольких найденных устройств. Это особенно удобно, если вы изменили адрес устройства, но не можете вспомнить, для чего вы установили адрес. Обратите внимание, что метод обратного вызова не является обязательным.
// *** // *** Перечислить устройства DHT Tiny на шине i2c .// *** IEnumerable address =await DhtTiny.FindAllDhtTinyAsync (this. FindAllDhtTinyCallback); // *** // *** Метод обратного вызова // *** private void FindAllDhtTinyCallback (I2cScanEventArgs e) {int percentComplete =(int) ((double) e.CurrentIndex / (double) e.Total * 100.0d); this.Status =string.Format ("Обнаружение устройств [0x {0:X2}] [{1}%] [Found ={2:## 0}] ...", e.CurrentAddress, percentComplete, e.Items .Count ());}
Схема DHT Tiny Breakout для Raspberry Pi
Демонстрация программного обеспечения
Это видео демонстрирует, как универсальное приложение, работающее на Raspberry Pi 3, подключено к DHT Tiny на макетной плате.
[СКОРО ВИДЕО]
Создание конечного устройства
Самый простой и наиболее экономичный способ создать плату - использовать прототип печатной платы, такой как Perma-Proto Quarter-size Breadboard PCB от Adafruit. На изображении ниже показан прорыв с использованием этой прототипной платы. Обратите внимание, что я использовал дремель, чтобы снять секции шины питания с платы.
Узнать больше:DHT Tiny Breakout для Raspberry Pi
Производственный процесс
- Мониторинг температуры на Raspberry Pi
- Метеостанция Raspberry Pi 2
- Аналоговые датчики без аналоговых входов на Raspberry Pi
- Ультразвуковой датчик диапазона HC-SR04 на Raspberry Pi
- Лучшие аксессуары для Raspberry Pi
- Аналоговые датчики на Raspberry Pi с использованием MCP3008
- Зрение:для слепых
- Руководство по подключению Qwiic HAT для Raspberry Pi
- Windows 10 IoT Core для Raspberry Pi 3, модель B +
- Сборка робота MonkMakes Raspberry Pi