Изграждането на вашия DIY Arduino термометър е забавен и практичен начин да разширите уменията си за бърникане, но откъде трябва да започнете? Присъединете се към нас, докато задълбаваме в окабеляването и кодирането, което влиза в превръщането на Arduino, температурна сонда DS18B20, и OLED дисплей в прецизен цифров термометър, който може да работи добре в стаи, аквариуми и дори на открито.
Какво ви е необходимо, за да направите DIY цифров термометър Arduino?
Всички тези компоненти могат да бъдат намерени на уебсайтове като eBay и Amazon.
Платка Arduino
Можете да използвате почти всеки Arduino с 5V изход за този проект. Ние използваме Arduino Pro Micro, така че готовият ни термометър да е компактен, но можете да използвате по-голяма платка като Arduino Uno, ако искате да избегнете запояване за този проект.
DS18B20 Температурна сонда
Температурните сензори DS18B20 могат да бъдат намерени като малки самостоятелни сензори, печатни платки с прикрепени сензори или като водоустойчиви сонди на дълги проводници. Избрахме последното, тъй като това ни позволява да използваме нашия термометър в аквариум, но можете да изберете всеки вариант на температурния сензор DS18B20. За разлика от други видове температурни сензори, DS18B20s осигуряват директен към цифров сигнал към вашия Arduino, а не аналоговите сигнали, които идват от опции като температурни сензори LM35.
OLED/LCD екран
Дисплеят, който изберете за вашия термометър, ще има голямо влияние върху крайния продукт. Избрахме 1,3-инчов I2C-съвместим монохромен бял OLED дисплей за нашия термометър, но можете да изберете каквото искате, стига да поддържа I2C.
Допълнителни малки части
- 4.7K (килоом) резистор
- 28 до 22 AWG силикон/PVC изолиран проводник
- Макет (по избор за тези, които не желаят да запояват)
Окабеляване на вашия DIY термометър
Окабеляването за този проект е много по-просто, отколкото може да си представите. Използвайки схемата по-горе, можете да създадете свой собствен цифров термометър „Направи си сам“ с малко усилия, но ние също така разбихме диаграмата по-долу, за да я улесним за следване.
Свързване на температурната сонда DS18B20
Правилното свързване на вашата температурна сонда DS18B20 е жизненоважно за този проект и трябва да сте сигурни, че използвате 4.7K резистора, който споменахме по-рано, или сондата ви няма да работи правилно. Сондата се предлага с три проводника: Ground (обикновено черен), VCC (обикновено червен) и Data.
- VCC се свързва към 5V щифт на вашия Arduino
- Заземяването се свързва към GND щифт на вашия Arduino
- Данните могат да се свързват с всеки цифров щифт на вашия Arduino (избрахме цифров щифт 15)
- Проводниците за данни и VCC също трябва да бъдат свързани помежду си с 4.7K резистор
Свързване на I2C OLED дисплея
Тъй като използваме I2C връзка между нашия OLED дисплей и нашия Arduino, трябва да свържем само четири проводника, преди да можем да започнем да използваме нашия дисплей: VCC, Ground, SDA и SCL. Почти всяко модерно Arduino има вградени SDA и SCL щифтове, осигуряващи възможност за свързване на до 128 уникални I2C компонента към една платка.
Нашият Arduino Pro Micro има SDA на цифров пин 2 и SCL на цифров пин 3, но може да се наложи да потърсите диаграма на pinout на конкретната платка, която сте избрали, преди да започнете.
- VCC се свързва към 5V щифт на вашия Arduino
- Заземяването се свързва към GND щифт на вашия Arduino
- SDA се свързва към SDA щифта на вашия Arduino
- SCL се свързва към SCL щифта на вашия Arduino
Тестване на вашата верига
От решаващо значение е да тествате схемата, която сте направили, преди да започнете да пишете окончателния код за нея, но можете да използвате примерните проекти, които идват с библиотеките, разгледани по-долу, за да тествате веригата, която имате направени.
Кодиране на вашия температурен сензор и OLED дисплей
Кодирането на вашия DIY цифров термометър е по-трудно от свързването му, но 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 препратка към температурата в Далас
Изграждане на функциите
- настройка на празнота: Ние използваме стандарта настройвам функция за инициализиране както на нашия дисплей, така и на нашата температурна сонда.
- празен цикъл: Нашият стандарт цикъл функцията ще се използва само за извикване на нашата Дисплей функция.
- празен дисплей: Добавихме a Дисплей функция, която извиква нашата Темп функция и предоставя информация на нашия дисплей.
- int Temp: Нашите Темп функцията се използва за получаване на отчитане на температурата за нашата Дисплей функция.
След като приключите, това трябва да изглежда като фрагмента по-долу.
void setup() {
}
void loop() {
}
void Display() {
}
int Temp() {
}
Кодиране на OLED дисплея
Преди да можем да добавим код към нашия Дисплей функция, трябва да се уверим, че OLED панелът е инициализиран в нашия настройка на празнота функция. Първо, ние използваме a дисплей.начало команда за стартиране на дисплея, последвана от a display.clearDisplay команда, за да се уверите, че дисплеят е ясен.
void setup() {
display.begin (SH1106_SWITCHCAPVCC, 0x3C); //Промяна въз основа на вашата библиотека на дисплея
display.clearDisplay();
}
От тук можем да добавим код към нашия Дисплей функция. Това започва с друго display.clearDisplay команда, преди да декларирате нова целочислена променлива със стойност, която извиква Темп функция (ще разгледаме това по-късно). След това можем да използваме тази променлива, за да покажем температурата на дисплея, като използваме следния код.
void Display() {
display.clearDisplay();
int 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);
display.print("C"); //Добавя C, за да покаже, че нашата температура е в Целзий
}
Кодиране на температурната сонда DS18B20
Подобно на нашия дисплей, нашата температурна сонда също се нуждае от код за настройка, за да инициализира компонента.
void setup() {
display.begin (SH1106_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
сензори.begin();
}
След това е време да програмираме самата сонда и трябва да добавим код към нашата Темп функция. Първо, ще поискаме температурата от нашата сонда, последвано от запис на резултата като плаваща променлива и преобразуването му в цяло число. Ако този процес е успешен, температурата се връща на Дисплей функция.
int Temp() {
senzors.requestTemperatures(); // Изпратете командата за получаване на температури
float tempC = sensors.getTempCByIndex (0); //Това изисква температурата в Целзий и я присвоява на float
int intTemp = (int) tempC; //Това преобразува float в цяло число
if (tempC != DEVICE_DISCONNECTED_C) //Проверете дали нашето четене работи
{
върнете intTemp; //Връщаме нашата стойност на температурата към функцията Display
}
}
Завършване
И накрая, ние просто трябва да кажем нашата основна цикъл функция за извикване на нашата Дисплей функция с всеки цикъл на кода, оставяйки ни проект, който изглежда така.
#включи //Показване на библиотеката
#включи
#включи // Библиотека на температурните сонди
#define OLED_RESET -1
Adafruit_SH1106 дисплей (OLED_RESET);
#define ONE_WIRE_BUS 15 //Извод за данни на температурната сонда
OneWire oneWire (ONE_WIRE_BUS); // Кажете на OneWire кой щифт използваме
Далас температурни сензори (&oneWire); //OneWire препратка към температурата в Далас
void setup() {
display.begin (SH1106_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
сензори.begin();
}
void loop() {
Покажи(); //Извиква нашата функция за показване
}
void Display() {
display.clearDisplay();
int 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);
display.print("C"); //Добавя C, за да покаже, че нашата температура е в Целзий
}
int Temp() {
senzors.requestTemperatures(); // Изпратете командата за получаване на температури
float tempC = sensors.getTempCByIndex (0); //Това изисква температурата в Целзий и я присвоява на float
int intTemp = (int) tempC; //Това преобразува float в цяло число
if (tempC != DEVICE_DISCONNECTED_C) //Проверете дали нашето четене работи
{
върнете intTemp; //Връщаме нашата стойност на температурата към функцията Display
}
}
Изграждане на цифров термометър "Направи си сам".
Този проект трябва да бъде забавен и информативен, като същевременно ви дава възможност да направите практичен предмет. Ние проектирахме този код, за да бъде възможно най-прост, но можете да го използвате като основа за по-сложен проект, докато научавате.
Интересувате се от проекти на Arduino, но не сте сигурни откъде да започнете? Тези проекти за начинаещи ще ви научат как да започнете.
Прочетете Следващото
- Направи си сам
- Arduino
- електроника
Самуел е базиран в Обединеното кралство технологичен писател със страст към всичко „Направи си сам“. След като стартира бизнес в областта на уеб разработката и 3D печата, заедно с работата си като писател в продължение на много години, Самуел предлага уникален поглед към света на технологиите. Фокусирайки се главно върху технологични проекти „Направи си сам“, той не обича нищо повече от споделянето на забавни и вълнуващи идеи, които можете да опитате у дома. Извън работа Самуел обикновено може да бъде намерен да кара колоездене, да играе компютърни видеоигри или отчаяно да се опитва да общува със своя домашен рак.
Абонирайте се за нашия бюлетин
Присъединете се към нашия бюлетин за технически съвети, ревюта, безплатни електронни книги и ексклузивни оферти!
Щракнете тук, за да се абонирате