Создание самодельного термометра Arduino — это увлекательный и практичный способ расширить свои навыки мастерства, но с чего начать? Присоединяйтесь к нам, когда мы углубимся в проводку и кодирование, необходимые для превращения Arduino, датчика температуры DS18B20, в и OLED-дисплей в точный цифровой термометр, который может хорошо работать в помещениях, аквариумах и даже на открытом воздухе.
Что вам нужно, чтобы сделать цифровой термометр Arduino своими руками?
Все эти компоненты можно найти на таких сайтах, как eBay и Amazon.
Плата Ардуино
Вы можете использовать практически любой Arduino с выходом 5V для этого проекта. Мы используем Arduino Pro Micro, чтобы наш готовый термометр был компактным, но вы можете использовать плату большего размера, например Arduino Uno, если хотите избежать пайки в этом проекте.
Датчик температуры DS18B20
Датчики температуры DS18B20 можно найти в виде небольших автономных датчиков, печатных плат с прикрепленными датчиками или водонепроницаемых зондов на длинных проводах. Мы выбрали последнее, так как это позволяет нам использовать наш термометр внутри аквариума, но вы можете выбрать любой вариант датчика температуры DS18B20. В отличие от других типов датчиков температуры, датчики DS18B20 обеспечивают прямой цифровой сигнал для вашего Arduino, а не аналоговые сигналы, которые поступают от таких опций, как датчики температуры LM35.
OLED/ЖК-экран
Дисплей, который вы выберете для своего термометра, окажет большое влияние на конечный продукт. Для нашего термометра мы выбрали 1,3-дюймовый монохромный белый OLED-дисплей, совместимый с I2C, но вы можете выбрать любой понравившийся вариант, если он поддерживает I2C.
Дополнительные мелкие детали
- Резистор 4,7К (кОм)
- Провод с изоляцией из силикона/ПВХ сечением от 28 до 22 AWG
- Макетная плата (по желанию для тех, кто не хочет паять)
Подключение самодельного термометра
Проводка для этого проекта намного проще, чем вы можете себе представить. Используя приведенную выше принципиальную схему, вы можете создать свой собственный цифровой термометр своими руками без особых усилий, но мы также разбили приведенную ниже схему, чтобы ей было легче следовать.
Подключение датчика температуры DS18B20
Правильное подключение датчика температуры DS18B20 жизненно важно для этого проекта, и вам необходимо убедиться, что вы используете резистор 4,7 кОм, о котором мы упоминали ранее, иначе ваш датчик не будет работать должным образом. Пробник поставляется с тремя проводами: заземление (обычно черный), VCC (обычно красный) и данные.
- VCC подключается к контакту 5V на вашем Arduino.
- Земля подключается к контакту GND на вашем Arduino.
- Данные могут подключаться к любому цифровому контакту на вашем Arduino (мы выбрали цифровой контакт 15).
- Провода данных и VCC также необходимо соединить друг с другом с помощью резистора 4,7 кОм.
Подключение OLED-дисплея I2C
Поскольку мы используем соединение I2C между нашим OLED-дисплеем и нашим Arduino, нам нужно подключить только четыре провода, прежде чем мы сможем начать использовать наш дисплей: VCC, Ground, SDA и SCL. Почти каждый современный Arduino имеет встроенные контакты SDA и SCL, что дает возможность подключать до 128 уникальных компонентов I2C к одной плате.
Наш Arduino Pro Micro имеет SDA на цифровом выводе 2 и SCL на цифровом выводе 3, но вам, возможно, придется поискать схему выводов конкретной платы, которую вы выбрали, прежде чем начать.
- VCC подключается к контакту 5V на вашем Arduino.
- Земля подключается к контакту GND на вашем Arduino.
- SDA подключается к контакту SDA на вашем Arduino.
- SCL подключается к контакту SCL на вашем Arduino.
Проверка вашей схемы
Крайне важно протестировать созданную вами схему, прежде чем вы начнете писать для нее окончательный код, но вы можете использовать примеры проектов, которые поставляются с библиотеками, обсуждаемыми ниже, чтобы протестировать имеющуюся у вас схему. сделанный.
Кодирование датчика температуры и OLED-дисплея
Кодирование цифрового термометра своими руками сложнее, чем его подключение, но для упрощения этого можно использовать Arduino IDE.
Выбор правильных библиотек
- Библиотека OLED-дисплеев: Мы используем библиотеку Adafruit_SH1106.h для нашего дисплея, так как это библиотека, для работы с которой он был разработан. Другие OLED-дисплеи могут использовать свои собственные библиотеки, такие как библиотека Adafruit_SSD1306.h, и обычно вы можете узнать, какая из них вам нужна, на странице продукта, с которой вы получили свой дисплей.
- Датчик температуры DS18B20: Нам нужны две библиотеки для нашего датчика температуры. DallasTemperature.h используется для сбора данных о температуре, а OneWire.h — для возможности подключения по одному проводу.
После того, как эти библиотеки будут установлены и включены в ваш проект, ваш код должен выглядеть примерно так, как показано ниже. Обратите внимание, что мы также включили код для установки контактов для наших компонентов.
#включать //Показать библиотеку
#включать
#включать //Библиотека датчиков температуры
#define OLED_RESET -1
Дисплей Adafruit_SH1106 (OLED_RESET);
#define ONE_WIRE_BUS 15 //Контакт провода данных датчика температуры
OneWire oneWire (ONE_WIRE_BUS); // Сообщаем OneWire, какой пин мы используем
ДалласТемпературные датчики(&oneWire); // ссылка OneWire на температуру в Далласе
Построение функций
- недействительная установка: Мы используем стандарт настраивать функция для инициализации как нашего дисплея, так и нашего датчика температуры.
- пустая петля: Наш стандарт петля функция будет использоваться только для вызова нашего Отображать функция.
- Пустой дисплей: мы добавили Отображать функция, которая вызывает наш Температура функции и предоставляет информацию на наш дисплей.
- целая температура: Наш Температура Функция используется для получения показаний температуры для нашего Отображать функция.
После завершения это должно выглядеть так, как показано ниже.
недействительная установка () {
}
недействительный цикл () {
}
недействительный дисплей () {
}
целая температура () {
}
Кодирование OLED-дисплея
Прежде чем мы сможем добавить код в наш Отображать функции, нам нужно убедиться, что OLED-панель инициализирована в нашем недействительная установка функция. Во-первых, мы используем display.begin команда для запуска дисплея, за которой следует display.clearDisplay команду, чтобы убедиться, что дисплей четкий.
недействительная установка () {
display.begin (SH1106_SWITCHCAPVCC, 0x3C); //Изменение на основе вашей библиотеки отображения
дисплей.clearDisplay();
}
Отсюда мы можем добавить код в наш Отображать функция. Это начинается с другого display.clearDisplay перед объявлением новой целочисленной переменной со значением, вызывающим Температура функция (мы рассмотрим это позже). Затем мы можем использовать эту переменную для отображения температуры на дисплее, используя следующий код.
недействительный дисплей () {
дисплей.clearDisplay();
интервал intTemp = Temp(); //Вызывает нашу функцию Temp
display.setTextSize (3); //Устанавливаем размер нашего текста
display.setTextColor (БЕЛЫЙ); //Устанавливаем цвет нашего текста
display.setCursor(5, 5); //Устанавливаем позицию нашего текста на дисплее
display.print(intTemp); //Выводит значение, предоставленное функцией Temp
display.drawCircle (44, 7, 3, БЕЛЫЙ); //Рисует символ градуса
display.setCursor(50, 5);
дисплей.принт("С"); //Добавляем C, чтобы указать, что наша температура в градусах Цельсия
}
Кодирование датчика температуры DS18B20
Как и нашему дисплею, нашему датчику температуры также требуется код настройки для инициализации компонента.
недействительная установка () {
display.begin (SH1106_SWITCHCAPVCC, 0x3C);
дисплей.clearDisplay();
датчики.начало();
}
Далее пришло время запрограммировать сам зонд, и нам нужно добавить код в наш Температура функция. Сначала мы будем запрашивать температуру у нашего зонда, а затем записывать результат в виде переменной с плавающей запятой и преобразовывать ее в целое число. Если этот процесс прошел успешно, температура возвращается к Отображать функция.
целая температура () {
датчики.requestTemperatures(); // Отправляем команду для получения температуры
float tempC = Sensors.getTempCByIndex (0); //Это запрашивает температуру в градусах Цельсия и присваивает ей значение с плавающей запятой
int intTemp = (int) tempC; //Это преобразует число с плавающей запятой в целое число
if (tempC != DEVICE_DISCONNECTED_C) //Проверяем, сработало ли наше чтение
{
вернуть интервал времени; // Возвращаем наше значение температуры в функцию Display
}
}
Заканчивать
Наконец, нам просто нужно сообщить нашему главному петля функция для вызова нашего Отображать работать с каждым циклом кода, оставляя нам проект, который выглядит следующим образом.
#включать //Показать библиотеку
#включать
#включать //Библиотека датчиков температуры
#define OLED_RESET -1
Дисплей Adafruit_SH1106 (OLED_RESET);
#define ONE_WIRE_BUS 15 //Контакт провода данных датчика температуры
OneWire oneWire (ONE_WIRE_BUS); // Сообщаем OneWire, какой пин мы используем
ДалласТемпературные датчики(&oneWire); // ссылка OneWire на температуру в Далласе
недействительная установка () {
display.begin (SH1106_SWITCHCAPVCC, 0x3C);
дисплей.clearDisplay();
датчики.начало();
}
недействительный цикл () {
Отображать(); //Вызывает нашу функцию отображения
}
недействительный дисплей () {
дисплей.clearDisplay();
интервал intTemp = Temp(); //Вызывает нашу функцию Temp
display.setTextSize (3); //Устанавливаем размер нашего текста
display.setTextColor (БЕЛЫЙ); //Устанавливаем цвет нашего текста
display.setCursor(5, 5); //Устанавливаем позицию нашего текста на дисплее
display.print(intTemp); //Выводит значение, предоставленное функцией Temp
display.drawCircle (44, 7, 3, БЕЛЫЙ); //Рисует символ градуса
display.setCursor(50, 5);
дисплей.принт("С"); //Добавляем C, чтобы указать, что наша температура в градусах Цельсия
}
целая температура () {
датчики.requestTemperatures(); // Отправляем команду для получения температуры
float tempC = Sensors.getTempCByIndex (0); //Это запрашивает температуру в градусах Цельсия и присваивает ей значение с плавающей запятой
int intTemp = (int) tempC; //Это преобразует число с плавающей запятой в целое число
if (tempC != DEVICE_DISCONNECTED_C) //Проверяем, сработало ли наше чтение
{
вернуть интервал времени; // Возвращаем наше значение температуры в функцию Display
}
}
Создание цифрового термометра своими руками
Этот проект должен быть веселым и информативным, а также давать вам возможность сделать практический предмет. Мы разработали этот код как можно более простым, но вы можете использовать его в качестве основы для более сложного проекта по мере изучения.
Заинтересованы в проектах Arduino, но не знаете, с чего начать? Эти проекты для начинающих научат вас, как начать работу.
Читать дальше
- сделай сам
- Ардуино
- Электроника
Сэмюэл — британский писатель, который обожает все, что можно сделать своими руками. Начав бизнес в области веб-разработки и 3D-печати, а также много лет работая писателем, Сэмюэл предлагает уникальное понимание мира технологий. Сосредоточившись в основном на технических проектах DIY, он любит делиться забавными и захватывающими идеями, которые вы можете попробовать дома. Вне работы Сэмюэля обычно можно встретить на велосипеде, за компьютерными видеоиграми или отчаянно пытающимся общаться со своим домашним крабом.
Подписывайтесь на нашу новостную рассылку
Подпишитесь на нашу рассылку технических советов, обзоров, бесплатных электронных книг и эксклюзивных предложений!
Нажмите здесь, чтобы подписаться