Bluetooth термометр на avr (arduino)

Содержание

Bluetooth термометр на avr (arduino)

Администратор

Группа: Главные администраторы
Сообщений: 14349
Регистрация: 12.10.2007
Из: Twilight Zone
Пользователь №: 1

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

ORduino Nano (ATmega168) — 500 руб

Блютуз модуль HC-05 — 330 руб

Аналоговый температурнй датчик LM335 — 40 руб

На радиорынке покупал:

1 резистор на 2,2 КОма, стабилизаторы на 3.3 B и на 5.5 В, конденсаторы для них

Датчик LM335 аналоговый, поэтому, чтобы рассчитать сколько вольт приходит от него, необходимо знать напряжение питания. Если мы ошибемся в вольтаже даже на 0.01 В, то датчик уже даст ошибку в 1 градус, а чем больше заданное значение напряжения будет отличатся от действующего напряжения, тем больше будет погрешность. Не говоря про то что датчик сам имеет погрешность в 1 градус. Необходим высоко стабилизированный источник питания. И лучший результат тут покажут обычные батарейки (точнее батарея из гальванических элементов) подключенные через стабилизатор напряжения к Arduino (в Nano этого стабилизатора нет). Но схемка потребляет 60-70 мА. Для батареек это многовато («Крону» посадит примерно за час-полчаса, но для тестов подойдет). А сетевые блоки питания выдают не такое стабильное напряжение. Из-за пульсаций показания датчика будут сильно прыгать.

Самый простой выход из этой ситуации использовать цифровые датчики температуры. Например, 1-Wire датчик DS18B20.

Надо заметить, что Блютуз-модуль HC-05 мне пришел со скоростью 9600 (заявленная 38400). Благо её можно поменять через AT-команды. Для работы с модулем в режиме AT-команд можно воспользоваться нехитрым скетчем, предварительно подключив PIO11 к +5 В через резистор 220 Ом.

SoftwareSerial mySerial(2, 3); // указываем пины rx и tx соответственно

void setup()
<
Serial.begin(9600);
mySerial.begin(9600);
>

void loop()
<
if (mySerial.available())
<
int c = mySerial.read(); // читаем из software-порта
Serial.write©; // пишем в hardware-порт
>
if (Serial.available())
<
int c = Serial.read(); // читаем из hardware-порта
mySerial.write©; // пишем в software-порт
>
>

Скетч для работы с термодатчиком и Bluetooth тоже не сложный. Данные передаем в бинарном формате, пакетами. Каждый пакет начинается с

SoftwareSerial mySerial(2, 3);

const double opVoltage = 4.98; // опорное напряжение (напряжение питания)
const byte tmpPin = 0; // номер пина, на котором сидит термодатчик

void setup()
<
Serial.begin(9600);
mySerial.begin(9600);
pinMode(13, OUTPUT);
>

void loop()
<
double vl = (analogRead(tmpPin)*opVoltage)/1024; // значение напряжения на пине
int tempK = vl*100; // расчет температуры в кельвинах
int tempC = tempK – 273; // перевод температуры в градусы цельсия
byte packet[] = <0xDE, 0xAD, tempC >> 8, tempC & 0xFF >; // формируем пакет

// отправляем пакет
Serial.write(packet, 4); // на компьютер
mySerial.write(packet, 4); // блютуз-модулю

// индикация работы – помигаем светодиодом
digitalWrite(13, HIGH);
delay(500);
digitalWrite(13, LOW);
delay(1500);
>

Мидлет для телефона написан на J2ME (на чём же ещё. это же мидлет), плюс в том что будет работать на любом телефоне с поддержкой jsr82. Но, зная про «кросплатформенность» J2ME, по крайней мере должен работать

Обратите внимание, что в мидлете указан адрес моего блютуз-модуля.

Исходники мидлета, а также скетчи Arduino можно найти здесь

D2,D3,A0 — выводы Arduino.

Термометр можно использовать как домашний или как уличный, только тогда всё устройство нужно защитить от агрессивной окружающей среды. И не надо сверлить никаких дырок в стене под провод.

А ещё можно написать клиент для мобильного телефона и получить доступ в Интернет или отправлять смс. И не надо никаких GSM/GPRS шилдов и AT-команд. Лишь телефон с блютузом, но это уже совсем другая история…

Делаем термометр на основе Arduino UNO и датчика DS18B20

В этом уроке мы будем использовать датчик температуры DS18B20 с Arduino UNO для создания термометра. Датчик DS18B20 является хорошим вариантом, когда в проекте с высокой точностью требуется хорошая реакция. Мы покажем как подключить DS18B20 к вашему Arduino UNO и отобразить данные температуры на ЖК-дисплее 16×2.

Обзор датчика DS18B20

Датчик DS18B20 взаимодействует с Arduino через 1-проводную шину. По определению для связи с Arduino требуется только одна линия данных (и земля).

Рабочая температура датчика колеблется от -55° C до + 125° C с точностью ± 0,5° C в диапазоне от -10° C до + 85° C. Кроме того, DS18B20 может получать питание непосредственно от линии передачи данных («паразитный источник питания») без необходимости внешнего источника питания.

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

Особенности DS18B20

  • Необходим только один однопроводный интерфейс для связи между микроконтроллером и датчиком.
  • Требуется только один внешний компонент: резистор 4,7 кОм.
  • Может питаться от линии передачи данных напрямую, требуя напряжения от 3,0 до 5,5 В.
  • Каждое устройство имеет уникальный 64-битный последовательный код, хранящийся на встроенном ПЗУ.
  • Может измерять температуру в диапазоне от -55° C до + 125° C (от -67° F до + 257° F).
  • Точность ± 0,5° C в диапазоне от -10° C до + 85° C.

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

Требования к комплектующим

Требования к оборудованию для вашего термометра достаточно стандартные, нам пригодятся:

  • Arduino UNO
  • ЖК-дисплей 16х2
  • Датчик температуры DS18B20
  • Провода для перемычек
  • Резистор 1K
  • Макетная плата

Схема соединения

Сделайте соединения согласно приведенной ниже схеме.

Соединяем датчик и Ардуино

  • VCC -> Arduino 5V, плюс резистор 4,7K, идущий от VCC к Data
  • Data -> Пин 7 Arduino
  • GND -> GND Arduino

Соединения для ЖК-дисплея и Arduino UNO

  • Пин 1 -> GND
  • Пин 2 -> VCC
  • Пин 3 -> Arduino Пин 3
  • Пин 4 -> Arduino Пин 33
  • Пин 5 -> GND
  • Пин 6 -> Arduino Пин 31
  • Пин 7-10 -> GND
  • Пин 11 -> Arduino Пин 22
  • Пин 12 -> Arduino Пин 24
  • Пин 13 -> Arduino Пин 26
  • Пин 14 -> Arduino Пин 28
  • Пин 15 -> VCC через резистор 220 Ом
  • Пин 16 -> GND
Читайте также:  Преобразователь напряжения 12в в 220в

Подключите потенциометр, как показано выше, к контакту 3 на ЖК-дисплее, для управления контрастностью.

Этот проект работает на температурах до 125° C. В случае наличия некоторого диссонанса в значении показанной температуры дважды проверьте соединения с резистором, подключенным к DS18B20. После соединения всего, что описано выше, мы можем перейти к программированию.

Исходный код для термометра

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

  • Первая библиотека называется – OneWire (скачать).
  • Вторая библиотека называется – DallasTemperature (перейти на GitHub).

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

Примерно это выглядит так:

Мы смогли измерить температуру до 100°C с помощью этого датчика! Он очень отзывчив.

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

Bluetooth термометр на avr (arduino)

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

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

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

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

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

1. Смартфон с Android

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

2. 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 .

3. Термодатчик 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.

4. Софт

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

1. Скачайте и установите программу Arduino

2. Подключите плату Arduino к одному из USB портов компьютера.

3. Запустите программу Arduino

4. В программе выберите правильный COM потрт, созданный в момент подключения платы Arduino.

5. Загрузите файл с исходными кодами прошивки в программу Arduino (в терминах Ардуино такая программа называется “Sketch” (Скетч), ити “эскиз”), откомпилируйте и загрузите прошивку в контроллер платы.

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

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

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

Создаем беспроводной термометр на Arduino

Узнайте, как использовать RF модуль 433 МГц совместно с ATMega328P-PU. В данной статье мы соберем схему из датчика DHT11 и радиочастотного передатчика. А также соберем приемное устройство с радиоприемником 433 МГц и LCD дисплеем.

Что нам потребуется

  • компьютер с установленной Arduino IDE (я использую версию 1.6.5);
  • библиотека VirtualWire (ссылка ниже);
  • Arduino Mega;
  • ATMega328P;
  • программатор AVR MKII ISP;
  • LCD дисплей;
  • датчик температуры и относительной влажности воздуха DHT11;
  • радиочастотные модули 433 МГц;
  • перемычки;
  • макетная плата;
  • компоненты из перечня элементов, приведенного ниже.

Введение

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

Существует множество способов передачи небольшого объема данных с помощью Arduino или контроллеров ATMega. Один из них использует уже готовую библиотеку, подобную RCSwitch, Radiohead или VirtualWire. Кроме того, можно отправить необработанные данные с помощью встроенного в микроконтроллер модуля UART. Но использовать встроенный модуль UART не рекомендуется, так как приемник будет собирать и все помехи, и микроконтроллер будет работать не так, как предполагалось. В данной статье для передачи и приема данных я использую библиотеку VirtualWire. Эта библиотека работает с Arduino IDE 1.6.2 и 1.6.5.

Модуль передатчика 433 МГц, когда не передает данные, всё равно излучает радиочастотные колебания и передает шум. Он также может создавать помехи другим радиочастотным устройствам. Чтобы не допустить этого, я включаю его, когда необходимо передать данные, и выключаю его, когда передача закончена.

Аппаратная часть

Нам необходимы две структурные схемы. Одна для передающего устройства, вторая для приемного.

Читайте также:  Зарядное устройство от солнечных батарей

Передатчик

  • способ прошивки микроконтроллера → ISP;
  • датчик для измерения температуры и влажности → DHT11;
  • микроконтроллер для обработки данных → ATMega32p;
  • способ беспроводной передачи данных → радиочастотный модуль 433 МГц.

Приемник

  • способ приема радиосигнала → радиочастотный модуль 433 МГц;
  • способ обработки принятых данных → Arduino Mega;
  • способ отображения температуры и влажности → 16×2 LCD.

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

Передатчик

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

Приемник

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

Перечень элементов

Передатчик

Приемник

Программа

Программа передатчика

Сперва рассмотрим программу передающей части:

Для передачи влажности и температуры в одном сообщении я соединяю их вместе. Сначала данные считываются в переменную как целые числа, потом целые числа преобразовываются в массив символов, а затем они соединяются друг с другом. На приемной стороне данные будут разделены на отдельные символы. Делая это, я ограничиваю себя двумя цифрами градусов. Если датчик находится в среде с температурой менее 10°C, я буду получать на дисплее символы мусора. Например, если температура составляет 20°C, а влажность – 45%, то будет передаваться сообщение 2045, и всё хорошо. Если температура равна 9°C, а влажность – 78%, то передастся сообщение 978x, где «x» – случайный символ. Поэтому, если вы будете собирать данный беспроводной термометр, я советую вам изменить программу для передачи правильных данных, когда температура будет меньше 10°C.

Программа приемника

Интересный способ использования библиотеки LiquidCrystal – это создание пользовательских символов. С помощью createChar я создал символ градусов. Таким же способом вы можете создать и свои собственные символы. Чтобы создать пользовательский символ или значок, вам необходимо объявить его, как массив из восьми байт, и «нарисовать», какие пиксели будут включены (1 – включен, 0 – выключен).

В функции setup() вы создаете его с помощью createChar . createChar принимает два аргумента: номер позиции для хранения символа и массив байт, в котором определено, какие пиксели будут отображаться. В нашем случае это lcd.createChar(1, degreesymbol) . Затем символ выводится на LCD с помощью функции lcd.write .

Заключение

В данной статье я использовал датчик температуры и влажности DHT11. Температура и влажность были преобразованы в массив символов, а затем переданы с помощью передатчика 433 МГц. На приемной стороне массив символов был разделен на пары и выведен на LCD. Для получения символа градусов я использовал функцию createChar библиотеки LiquidCrystal.

Загрузки

  • Библиотека VirtualWire версия 1.6 (библиотека для Arduino для организации связи через радиомодули с использованием амплитудной манипуляции).
  • Описание библиотеки VirtualWire.

Фото и видео

Передатчик

Приемник

Видео

Термистор и Arduino

Термистор (терморезистор) – это резистор, который меняет свое сопротивление с изменением температуры.

Технически все резисторы являются термисторами, так как их сопротивление меняется в зависимости от температуры. Но эти изменения очень незначительны и измерить их очень сложно. Термисторы изготавливаются таким образом, чтобы сопротивление изменялось на значительную величину в зависимости от температуры. Около 100 Ом и даже больше при изменении температуры на 1 градус по Цельсию!

Существуют два вида термисторов – с NTC (negative temperature coefficient – отрицательный температурный коэффициент) и с PTC (positive temperature coefficient – положительный температурный коэффициент). В большинстве случаев для измерения температуры используются NTC сенсоры. PTC часто используются в качестве предохранителей – с увеличением температуры растет сопротивление, это приводит к тому, что через них проходит большая сила тока, они нагреваются и срабатывают как предохранители. Достаточно удобно для предохранительных цепей!

Если сравнивать термисторы с аналоговыми датчиками температуры типа LM35, TMP36, цифровыми вроде DS18B20, или термопарами, основными преимуществами термисторов можно назвать:

  • Во первых, они гораздо дешевле чем все перечисленные выше датчики температуры!
  • Их гораздо проще использовать в условиях повышенной влажности, так как это просто резистор.
  • Термисторы работают с любым напряжением (цифровые датчики требуют 3 или 5 В питания логики).
  • Если сравнить термистор и термопару, то первым не нужен усилитель сигнала, чтобы считывать данные. Соответственно, вы можете использовать практически любой микроконтроллер.
  • Соотношение точность показаний/цена – потрясающие. Например, термистор 10 КОм 1% может производить измерения температуры с точностью ±0.25°C! (При условии, что у вас подходящий аналогово-цифровой преобразователь на микроконтроллере).
  • Их практически невозможно поломать или повредить.

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

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

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

Ниже приведены технические характеристики термисторов, которые чаще всего используются в DIY проектах на Arduino:

  • Сопротивление при 25 °C: 10K ±1%.
  • B25/50: 3950 ±1%.
  • Диапазон измеряемых температур от -55°C до 125°C.
  • Диаметр: 3.5 мм / 0.13 дюйма.
  • Длина: 18 дюймов / 45 см.
  • Зависимость сопротивления от температуры.

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

Тестируем термистор

Так как термисторы – по своей сути – резисторы , проверить их не составит труда. Достаточно измерить сопротивление с помощью мультиметра:

При комнатной температуре показания должны составить около 10 КОм. Например, показания при 30°C – 86°F, составляют около 8 КОм.

Подключение термистора к Arduino

Термисторы подключаются к Arduino очень просто. Достаточно использовать монтажную плату, как это показано на рисунке ниже. Так как сопротивление термистора достаточно высокое (около 10 КОм), сопротивление проводников практически не повлияет на результаты измерений.

Методика считывания аналогового напряжения

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

Скажем, мы используем резистор с постоянным номиналом 10K и переменный резистор, который называется R. При этом напряжение на выходе (Vo), которое мы будем передавать Arduino, будет равно:

Читайте также:  Stmicroelectronics выпустила уникальную интеллектуальную систему на кристалле homeplug

Vo = R / (R + 10K) * Vcc,

где Vcc – это напряжение источника питания (3.3 В или 5 В)

Теперь мы хотим подключить все это к Arduino. Не забывайте, что когда вы измеряете напряжение (Vi) с использованием АЦП на Arduino, вы получите числовое значение.

ADC value = Vi * 1023 / Vcc

Теперь мы совмещаем два напряжения (Vo = Vi) и получаем:

ADC value = R / (R + 10K) * Vcc * 1023 / Vcc

Что самое прекрасное, Vcc сокращается!

ADC value = R / (R + 10K) * 1023

То есть вам неважно, какое напряжение питания вы используете!

В конце мы все же хотим получить R (сопротивление). Для этого надо использовать еще одно преобразование, в котором R переносятся в одну сторону:

R = 10K / (1023/ADC – 1)

Отлично. Давайте попробуем, что из этого всего выйдет. Подключите термистор к Arduino как это показано на рисунке ниже:

Подключите один контакт резистора на 10 КОм к контакту 5 В, второй контакт резистора 10 КОм 1% – к одному контакту термистора. Второй контакт термистора подключается к земле. ‘Центр’ двух резисторов подключите к контакту Analog 0 на Arduino.

Теперь запустите следующий скетч для Arduino:

// значение ‘другого’ резистора

#define SERIESRESISTOR 10000

// к какому пину подключается термистор

#define THERMISTORPIN A0

// преобразуем полученные значения в сопротивление

reading = (1023 / reading) – 1;

reading = SERIESRESISTOR / reading;

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

Более точные измерения

При проведении измерений аналоговых значений, особенно с ‘шумными’ платами вроде Arduino, можно использовать два метода для улучшения качества показаний. Первый – использовать пин 3.3 В для аналогового сигнала и второй – собрать небольшой массив экспериментальных значений и усреднить их.

Первое. Питание 5 В от Arduino подается напрямую от USB вашего персонального компьютера. В результате сигнал гораздо более зашумленный, чем питание от контакта 3.3 В (этот контакт предусматривает предварительную обработку через интегрированный в плату регулятор). То есть просто подключите 3.3 к контакту AREF и используйте его в качестве источника напряжения VCC.

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

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

В этом скетче учтены оба “апгрейда”. В результате вы сможете подучить более точные показания температуры.

// к какому аналоговому контакту мы подключены

#define THERMISTORPIN A0

// сколько показаний берется для определения среднего значения

// чем больше значений, тем дольше проводится калибровка,

// но и показания будут более точными

#define NUMSAMPLES 5

// емкость второго резистора в цепи

#define SERIESRESISTOR 10000

// подключите AREF к 3.3 В и используйте именно этот контакт для питания,

// так как он не так сильно “шумит”

// формируем вектор из N значений с небольшой задержкой между считыванием данных

Домашняя метеостанция на базе Ардуино

Давненько хотелось сделать мини метеостанцию-надоело выглядывать в окно чтобы посмотреть на градусник за стеклом. Этот приборчик заменит гигрометр, барометр и термометр а также покажет текущее время. В данном посту я расскажу как быстро и просто собрать небольшую метеостанцию на базе Ардуино. Основой будет плата Arduino Nano можно применить другие платы- Arduino Uno, Arduino Pro mini). Данные атмосферного давления и температуры в помещении будем получать с датчика BMP180, а влажность и температуру на улице с датчика DHT11. Часы реального времени DS1302 будут указывать текущее время. Всю информацию выводим на двухстрочный дисплей LCD1602.

Датчик DHT11 передает информацию по одному проводу на ардуино. Питается напряжением 5 В. Он измеряет влажность в пределах от 20 до 80%. Температура измеряет в диапазоне от 0 до 50 о С.

Эта самоделка сделана на базе готовых плат и датчиков, поэтому ее можно повторить любому начинающему любителю поработать с паяльником. Заодно можно получить азы программирования Ардуино. Я программировал эту метеостанцию в программе визуального программирования FLPROG за 15 минут. Не нужно вручную часами писать скетчи, данная программа помогает начинающим (и не только) быстро освоить азы программирования устройств на основании платформы Ардуино.

Кому лень повозиться с программой – скетч ( только выставлять текущее время часов надо будет):

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

Всю информацию можно получить посмотрев в видео:

Перечень материалов и инструментов

-плата Arduino Nano
-двухстрочный дисплей LCD1602;
-часы реального времени DS1302;
-датчик атмосферное давления и температуры BMP180;
-датчик температуры и влажности DHT11;
-блок зарядки от телефона;
-любой подходящий корпус
-пинцет;
ножницы;
-паяльник;
-кембрик;
-тестер;
-соединительные провода;
-провод четырехжильный для выносного датчика.

Шаг первый. Делаем корпус для метеостанции

Подобрал пластмассовую коробочку из магазина Fix Price (всего то 17р). Предварительно вырезал в крышке окно для дисплея. Затем вырезал частично перегородки в коробке, сделал отверстия для USB разъема платы Arduino проем для датчика BMP180 Датчика BMP180 будет находится на наружной стороне корпуса, чтобы исключить лишний нагрев от электронной начинки находящейся внутри. После я покрасил корпус самоделки изнутри потому что пластик прозрачный. Коробка закрывается на защелку и в ней все элементы неплохо поместились.

Шаг второй. Сборка схемы прибора.

Далее надо скоммутировать по схеме все платы и датчики метеостанции. Делаем это с помощью монтажных проводов с соответствующими разъемами. Я не делал соединения на пайке ,так в перспективе при выходе какого то модуля из строя (или по другим причинам) можно легко его заменить. На винтовом разъеме подключается кабель датчика DHT11 идущий на улицу. Питание можно осуществить с разъема USB платы Ардуино на компьютер, или подав напряжение 7-12В на контакт VIN и GND.

Сначала я собрал схему вне корпуса и запрограммировал и отладил ее в программе FLPROG.

Фото блок схемы в программе FLPROG.

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

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

Всем спасибо за внимание, вам успехов и удачи и в вашей жизни и в творчестве!

Рейтинг
( Пока оценок нет )
Загрузка ...
Adblock
detector