Термометр на ардуино с дисплеем nokia

Digitrode

цифровая электроника вычислительная техника встраиваемые системы

Инфракрасный термометр на основе Arduino и датчика температуры MLX90614 своими руками

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

Принцип действия инфракрасных термометров прост, все тела при температуре выше 0° по Кельвину (абсолютный ноль) излучают инфракрасную энергию, которая может быть обнаружена датчиком инфракрасного термометра. Его конструкция включает в себя линзу, которая фокусирует инфракрасную энергию, излучаемую объектом перед детектором. Детектор преобразует энергию в электрический сигнал, который затем может быть передан в микроконтроллер для интерпретации и отображения в единицах температуры после компенсации изменения температуры окружающей среды. В этом проекте мы создадим термометр на основе инфракрасного датчика, используя Arduino Uno, инфракрасный датчик температуры MLX90614 и ЖК-экран Nokia 5110 для отображения измеренной температуры.

MLX90614 – это инфракрасный датчик температуры для бесконтактного измерения температуры. Он может измерять температуры в диапазоне от -70 до 380 градусов по Цельсию с точностью около 0,5° С при комнатной температуре. Некоторые функции этого датчика перечислены ниже.

  • Малый размер и низкая стоимость
  • Легко интегрировать
  • Заводская калибровка в широком диапазоне температур: от -40 до 125 °C для температуры датчика и от -70 до 380 °C для температуры объекта
  • Высокая точность 0,5 °C в широком диапазоне температур
  • Разрешение измерения 0,02 °C
  • Одно-и двухзонные версии
  • SMBus-совместимый цифровой интерфейс для быстрого считывания температуры и построения сенсорных сетей
  • Настраиваемый ШИМ-выход для непрерывного считывания
  • Доступно в версиях напряжения питания 3 В и 5 В

Также в этом примере мы будем использовать ЖК-экран Nokia 5110. Применяемый здесь шилд поставляется с джойстиком и кнопкой. Он совместим по выводам с Arduino Uno и большинством других плат Arduino.

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

Наша цель в этом проекте – измерить температуру, обработать ее и отобразить на ЖК-дисплее. Чтобы мы могли легко общаться с температурным датчиком mlx90614, мы будем использовать библиотеку mlx90614 от Adafruit (https://github.com/adafruit/Adafruit-MLX90614-Library) и библиотеку Nokia 5110 (http://www.rinkydinkelectronics.com/library.php?id=47) для удобного отображения текста на экране.

Сам код программы довольно прост. Единственное, поясним работу бесконечного цикла. Мы начинаем с определения единицы измерения, в которой температура должна отображаться в градусах Цельсия или в градусах Фаренгейта, затем считываем температуру с датчика температуры и отображаем ее на дисплее. Для обеспечения точности, задержка в 1000 мс, вставленная между показаниями, обеспечивает и предотвращает конфликты запросов на считывание.

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

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

Источник

Домашняя метеостанция (Nokia 5110 LCD)(Arduino)

На основе недорогих модулей можно собрать простую домашнюю метеостанцию, в качестве индикатора будет использовать модуль Nokia 5110 LCD.

Метеостанция имеет несколько датчиков (модулей):

  • BMP180 — датчик давления (мм.рт.ст) и температуры (измерение температуры в помещении)
  • 18B20 — цифровой датчик температуры (измерение температуры на улице)
  • DS3231 — часы реального времени
  • DHT11 — датчик влажности

BMP180

DHT11 DS3231 18B20

Подключение модулей к Arduino Nano или Uno:

  • Nokia 5110 LCD — RST,CE,DC,DIN,CLK (цифровые выходы Arduino 3,4,5,6,7). На вход VCC необходимо подавать питание 3,3 В, а на выход BL (подсветка) можно подавать питание 5 В через сопротивление 330 Ом или 3,3 В через сопротивление 200 Ом.
  • BMP-180 — напряжение питания (VIN) датчика 3,3 В, выходы SCL и SDA подключаются на цифровые выходы A5 (SCL) и A4 (SDA) платы Arduino.
  • 18B20 — на датчике имеется маркировка выводов: + — out, на вывод + подается питание 5 В, на — GND и out соответственно выход, который подключается к аналоговому входу Arduino A0.
  • DHT11 — напряжение питания датчика 5 В (VCC), выход DATA подключается к цифровому выходу 2 Arduino.
  • DS3231 — напряжение питания датчика 5 В (VCC),выходы SCL и SDA подключаются на цифровые выходы A5 (SCL) и A4 (SDA) платы Arduino.

Для успешной загрузки скетча Вам понадобятся следующие библиотеки:

  • DHT
  • DallasTemperature
  • OneWire
  • DS3231
  • pcd8544 — в библиотеке изменена нумерация подключения выводов, поэтому необходимо использовать именно эту библиотеку.
  • bmp085

После сборки уст-во практически не нуждается в настройке, единственное что придется сделать, это установить контрастность индикатора:

lcd.setContrast(60); // контрастность 0-127

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

Коды английский букв и символы находятся в файле charset.cpp, который находится в папке библиотеки.

Скачайте и распакуйте архив charset.cpp.zip который содержит charset.cpp, и поместите его в папку библиотеки pcd8544.

Далее залейте в плату Arduino следующий скетч:

Обновлено: 10.01.2022 в 22:40 | Просмотров: 13 408

Домашняя метеостанция + будильник (Nokia 5110 LCD)(Arduino)
На странице http://rcl-radio.ru/?p=55605 рассматривался пример создания простой погодной метеостанции на основе датчиков давления, влажности и температуры с выводом информации на LCD экран Nokia 5110. На данной странице будет показан пример создания погодной станции с будильником, так как в погодной станции имеются часы реального времени, то добавить дополнительный функционал в виде будильника не представляет большого труда. Так же необходимо добавить три кнопки управления, это + , — и.

TDA7313 + DS3231 + IR + LCD2004 (Arduino)
Ранее в http://rcl-radio.ru/?p=58563 описывался пример использования аудиопроцессора TDA7313 под управлением Arduino Nano с дисплеем LCD1602, на этой странице будет рассмотрен аналогичный пример но с использованием дисплея LCD2004 c I2C модулем на базе микросхем PCF8574, что позволяет подключать символьный дисплей LCD2004 к плате Arduino всего по двум проводам SDA и SCL (А4 и А5). Микросхема TDA7313 имеет три стерео входа, регуляторы тембра НЧ и ВЧ, тонкомпенсация и четыре выхода.

LCD0802 (Arduino)
LCD0802 дисплей работает на контроллере HD44780 и полностью совместим с библиотекой LiquidCrystal которая интегрирована в Arduino IDE. Дисплей имеет две строки по 8 символов. Размеры платы дисплея 58х32 мм. Схема подключения Распиновка Настройка контрастности производится путем установки резистора 2. 2,7 К между выводами Vo и GND. Тестовый скетч: #include
// подключаем встроенную в Arduino IDE библиотеку для дисплея LCD 16×2 LiquidCrystal lcd(12, 11.

Регулятор громкости и тембра на LC75421M (Arduino)
Ранее в http://rcl-radio.ru/?p=128799 был показан пример тестового запуска аудиопроцессора LC75421M, на этой странице будет показан пример практического применения аудиопроцессора в качестве регулятора громкости и тембра. Регулятор громкости и тембра на LC75421M содержит следующие компоненты: Аудиопроцессор LC75421M Плата Arduino Nano (Atmega328) Энкодер KY-040 (модуль) Три тактовые кнопки Модуль часов реального времени DS3231 ИК-датчик VS1838B Пульт ДУ (NEC) .

Дисплей 2X16 VFD (Arduino)
Дисплей VDF1602 (16T202DA1E) выполнен на базе вакуумно-люминесцентного индикатора, который может отображать ASCII символы в 2 строки (16 знаков в 1 строке) каждый символ в виде матрицы 5х7 пикселей. Дисплей 16T202DA1E программно полностью совместим с дисплеем LCD1602 контроллере HD44780, поэтому использует стандартную библиотеку LiquidCrystal которая интегрирована в Arduino IDE. Для правильной работы базе вакуумно-люминесцентного индикатора требуется два.

Источник

Метеостанция на Arduino

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

Получить фактические точные данные можно с помощью домашней метеостанции. Домашнюю метеостанцию можно купить, а можно сделать самостоятельно. Рассмотрим создание домашней метеостанции на контроллере Arduino.

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

  • контроллер Arduino;
  • плата прототипирования (без пайки)
  • модуль датчика BMP085 или BMP180
  • модуль с датчиком влажности DHT11
  • датчик температуры DS18B20
  • резистор 4,7 кОм;
  • дисплей Nokia 5110
  • провода и корпус

В качестве платы Arduino в принципе можно использовать любую из модельного ряда Arduino, но я рекомендую Arduino Uno или Arduino Duemilanove, так как в будущем собираюсь установить на нее Ethernet shield, чтобы сделать домашнюю метеостанцию устройством IoT («Интернета вещей»). Я буду использовать плату Arduino Duemilanove (рисунок 1).

Рис. 1. Плата Arduino Duemilanove

Теперь рассмотрим датчики, которые будем использовать в проекте.
Датчик давления BMP085 (рисунок 2) – высокоточный датчик атмосферного давления с низким энергопотреблением. используется для измерения атмосферного давления. Точность достигает минимального значения измерения давления 0.03hPa. Также выводит и данные о температуре. Напряжение питания 1.62V — 3.6V. Интерфейс подключения I2C. В продаже встречаются готовые платы как с стабилизатором, так и без него. Датчик давления BMP085 мы будем использовать только для измерения атмосферного давления, для измерения температуры будем использовать более точный датчик DS18B20.

Рис.2. Модуль датчика BMP085

Датчик температуры DS18B20 (рисунок 3) – это цифровой измеритель температуры с разрешением преобразования 9 — 12 разрядов и функцией тревожного сигнала контроля за температурой. Обменивается данными с микроконтроллером по однопроводной линии связи, используя протокол интерфейса 1-Wire. Диапазон измерения температуры составляет от -55 до +125 °C. Для диапазона от -10 до +85 °C погрешность не превышает 0,5 °C. У каждой микросхемы DS18B20 есть уникальный серийный код длиной 64 разряда, который позволяет нескольким датчикам подключаться на одну общую линию связи.

Рис. 3. Датчик температуры DS18B20

Датчик DHT11 (рисунок 4) не обладают высоким быстродействием и точностью, но зато имеет низкую стоимость. Датчик состоит из емкостного датчика влажности и термистора. Содержит аналого-цифровой преобразователь для преобразования аналоговых значений влажности и температуры в цифровые. Диапазон измерения влажности – 20-80%, частота опроса 1 раз в секунду. Мы будем использовать в проекте датчик DHT11 в виде готового модуля.

Рис.4. Модуль DHT11

Для отображения информации с датчиков будем использовать ЖК-дисплей Nokia 5110 (рисунок 5). Это графический монохромный дисплей с разрешением 84×48 точек. Дисплей Nokia 5110 поставляется на плате в паре с контроллером PCD8544 и штыревым разъемом. Электропотребление дисплея позволяет питать его от выхода +3.3 В платы Arduino.

Рис. 5. Дисплей Nokia 5110

Собираем схему согласно рисунка 6.

Рис. 6. Схема подключения к Arduino

Для удобства я спаял датчики на плате прототипирования, сделал контакты для подключения проводов от дисплея и оформил это в виде шилда – припаял штырьки для подключения к контактам платы Arduino (рисунок 7).

Рис. 7. Как получилось у меня. Проект метеостанции на Arduino

Теперь приступим к написанию скетча. При написании скетча нам понадоьятся следующие Arduino-библиотеки:
• OneWire – для работы с устройствами 1-Wire (датчик DS18B20);
• BMP085 и Wire – для работы с датчиком BMP085 (или BMP180);
• DHT – для работы с датчиком DHT11;
• Adafruit_GFX и Adafruit_PCD8544 – для работы с дисплеем Nokia 5110.

С периодичностью 5 секунд получаем данные с датчиков DS18B20, DHT11, BMP085 и выводим в монитор последовательного порта и на дисплей Nokia 5110. Процедура получения данных с датчика DS18B20 – get_temp() выполняет поиск устройств 1-Wire, подключенных к выводу Adruino D7 (у нас один датчик), и выдает его данные.
Запустим Arduino IDE. Создадим новый скетч и внесем в него содержимое листинга 1.

void setup() <
// запуск последовательного порта
Serial.begin(9600);
Serial.println(«start»);
// запуск I2C
Wire.begin();
// запуск bmp
dps.init();
// инициализация дисплея
display.begin();
// установить контраст фона экрана
display.setContrast(60);
display.clearDisplay(); // очистить экран
display.setTextSize(1); // размер шрифта
display.setTextColor(BLACK); // цвет
// заставка
display.setCursor(15,15);
display.print(«Home Meteo»);
display.display();
delay(2000);
>

void loop () <
display.clearDisplay();
display.setCursor(15,5);
display.print(«Home Meteo»);
// ds18b20
int Temp=get_temp();
if(Temp==999) <
display.setCursor(15,15);
display.print(«t=»);
display.print(Temp1/16);
display.print(«.»);
display.print(((Temp1%16)*100)/16);
display.print(» C»);
>
else if(Temp==998) <
Serial.println(«Temp=ERROR»);
display.setCursor(15,15);
display.print(«t=ERROR»);
>
else <
Serial.print(«Temp=»);
Serial.print(Temp/16);
Serial.print(«.»);
Serial.print(((Temp%16)*100)/16);
Serial.println(» *C»);
display.setCursor(15,15);
display.print(«t=»);
display.print(Temp/16);
display.print(«.»);
display.print(((Temp%16)*100)/16);
display.print(» C»);
Temp1=Temp;
>
// dht11
float h = dht.readHumidity();
float t = dht.readTemperature();
Serial.print(«humidity=»);
Serial.print(h);
Serial.println(» %»);
Serial.print(«temperatura=»);
Serial.print(t);
Serial.println(» *C»);
display.setCursor(15,25);
display.print(«h=»);
display.print(h);
display.print(» %»);
// bmp085
dps.getTemperature(&Temperature085);
dps.getPressure(&Pressure085);
dps.getAltitude(&Altitude085);
Serial.print(«pressure5=»);
Serial.print(Pressure085/133.3);
Serial.println(» mm Hg»);
Serial.print(«temp5=»);
Serial.print(Temperature085*0.1);
Serial.println(» *C»);
Serial.println();
display.setCursor(5,35);
display.print(«p=»);
display.print(Pressure085/133.3);
display.print(«mmHg»);
// обновить
display.display();
// пауза
delay(5000);
>
// получение температуры датчика ds18b20
int get_temp() <
byte i;
byte present = 0;
byte data[12];
byte addr[8];
int Temp;

if ( !ds.search(addr)) <
Serial.print(«No more addresses.n»);
ds.reset_search();
return 999;
>
Serial.print(«R=»); // печать уникального 1-wire идентификатора
for( i = 0; i Рис.8. Вывод данных в монитор последовательного порта

Устанавливаем это все в корпус (рисунок 10).

Рис. 9. Вывод данных с Arduino на дисплей Nokia 5110

Устанавливаем это все в корпус (рисунок 10).

Рис. 10. Собранная на Ардуино метеостанция в корпусе

Остается накрыть блок крышкой и перенести на улицу, при этом дисплей и блок питания оставить в комнате. Метеостанция будет готова к работе.

Метеостанцию можно усложнить, добавив датчик дождя и часть кода из предыдущего проекта «Датчик дождя на Arduino«.

В прикрепленных архивах рабочий скетч и необходимые библиотеки. Скачать файлы проекта.

Источник

Adblock
detector