Sestavení vlastního teploměru Arduino je zábavný a praktický způsob, jak rozšířit své řemeslné dovednosti, ale kde byste měli začít? Připojte se k nám, když se ponoříme do kabeláže a kódování, které vede k otáčení Arduina, teplotní sondy DS18B20, a OLED displej do přesného digitálního teploměru, který může dobře fungovat v místnostech, akváriích a dokonce venku.
Co potřebujete k vlastní výrobě digitálního teploměru Arduino?
Všechny tyto komponenty lze nalézt na webových stránkách jako eBay a Amazon.
Deska Arduino
Pro tento projekt můžete použít téměř jakékoli Arduino s výstupem 5V. Používáme Arduino Pro Micro, takže náš hotový teploměr je kompaktní, ale pokud se chcete vyhnout pájení pro tento projekt, můžete použít větší desku, jako je Arduino Uno.
Teplotní sonda DS18B20
Teplotní senzory DS18B20 lze nalézt jako malé samostatné senzory, desky plošných spojů s připojenými senzory nebo jako vodotěsné sondy na dlouhých drátech. Vybrali jsme to druhé, protože nám to umožňuje používat náš teploměr uvnitř akvária, ale můžete si vybrat jakoukoli variantu teplotního senzoru DS18B20. Na rozdíl od jiných typů teplotních senzorů poskytují DS18B20 přímo do digitálního signálu vašemu Arduinu, spíše než analogové signály, které pocházejí z možností, jako jsou teplotní senzory LM35.
Obrazovka OLED/LCD
Displej, který si vyberete pro svůj teploměr, bude mít velký vliv na konečný produkt. Pro náš teploměr jsme vybrali 1,3palcový monochromatický bílý OLED displej kompatibilní s I2C, ale můžete si vybrat, co chcete, pokud podporuje I2C.
Další malé díly
- 4,7K (kiloohm) rezistor
- 28 až 22 AWG silikon/PVC izolovaný drát
- Prkénko na krájení (volitelně pro ty, kteří nechtějí pájet)
Zapojení vašeho domácího teploměru
Zapojení pro tento projekt je mnohem jednodušší, než si dokážete představit. Pomocí výše uvedeného schématu zapojení si můžete s malým úsilím vytvořit svůj vlastní digitální teploměr, ale také jsme níže rozebrali schéma, aby bylo snazší jej sledovat.
Zapojení teplotní sondy DS18B20
Správné zapojení teplotní sondy DS18B20 je pro tento projekt životně důležité a musíte se ujistit, že používáte odpor 4,7K, o kterém jsme se zmínili dříve, jinak vaše sonda nebude správně fungovat. Sonda je dodávána se třemi vodiči: Ground (obvykle černý), VCC (obvykle červený) a Data.
- VCC se připojuje k 5V kolíku na vašem Arduinu
- Zem se připojuje ke kolíku GND na vašem Arduinu
- Data se mohou připojit k jakémukoli digitálnímu pinu na vašem Arduinu (vybrali jsme digitální pin 15)
- Datové vodiče a vodiče VCC je také třeba vzájemně propojit pomocí odporu 4,7K
Zapojení I2C OLED displeje
Protože používáme I2C spojení mezi naším OLED displejem a naším Arduinem, musíme připojit pouze čtyři vodiče, než můžeme začít používat náš displej: VCC, Ground, SDA a SCL. Téměř každé moderní Arduino má vestavěné piny SDA a SCL, které poskytují možnost připojit až 128 jedinečných I2C komponent k jedné desce.
Naše Arduino Pro Micro má SDA na digitálním kolíku 2 a SCL na digitálním kolíku 3, ale než začnete, možná budete muset vyhledat schéma zapojení konkrétní desky, kterou jste si vybrali.
- VCC se připojuje k 5V kolíku na vašem Arduinu
- Zem se připojuje ke kolíku GND na vašem Arduinu
- SDA se připojuje ke kolíku SDA na vašem Arduinu
- SCL se připojuje ke kolíku SCL na vašem Arduinu
Testování vašeho obvodu
Je důležité, abyste obvod, který jste vytvořili, otestovali, než pro něj začnete psát konečný kód, ale k otestování obvodu, který máte, můžete použít ukázkové projekty, které přicházejí s níže uvedenými knihovnami vyrobeno.
Kódování vašeho teplotního senzoru a OLED displeje
Kódování digitálního teploměru pro kutily je složitější než jeho zapojování, ale pro usnadnění lze použít Arduino IDE.
Výběr správných knihoven
- Knihovna OLED displeje: Pro naše zobrazení používáme knihovnu Adafruit_SH1106.h, protože je to knihovna, se kterou byla navržena. Další OLED displeje mohou používat své vlastní knihovny, jako je knihovna Adafruit_SSD1306.h, a obvykle zjistíte, kterou z nich potřebujete, na stránce produktu, ze které máte svůj displej.
- Teplotní sonda DS18B20: Potřebujeme dvě knihovny pro naši teplotní sondu. DallasTemperature.h se používá ke sběru údajů o teplotě a OneWire.h k tomu, aby bylo možné naše jednodrátové připojení.
Jakmile budou tyto knihovny nainstalovány a zahrnuty do vašeho projektu, váš kód by měl vypadat podobně jako níže uvedený úryvek. Všimněte si, že jsme také zahrnuli kód pro nastavení pinů pro naše komponenty.
#zahrnout //Zobrazení knihovny
#zahrnout
#zahrnout //Knihovna teplotních sond
#define OLED_RESET -1
Displej Adafruit_SH1106 (OLED_RESET);
#define ONE_WIRE_BUS 15 //Kolík datového vodiče teplotní sondy
OneWire oneWire (ONE_WIRE_BUS); //Řekněte OneWire, který pin používáme
DallasTemperature sensors (&oneWire); //Odkaz OneWire na teplotu Dallasu
Budování funkcí
- neplatné nastavení: Používáme standard založit funkce pro inicializaci našeho displeje i naší teplotní sondy.
- prázdná smyčka: Náš standard smyčka funkce bude použita pouze k volání našeho Zobrazit funkce.
- neplatné zobrazení: Přidali jsme a Zobrazit funkce, která volá naše Temp funkce a poskytuje informace na náš displej.
- int Temp: Naše Temp funkce se používá k získání údajů o teplotě pro naše Zobrazit funkce.
Po dokončení by to mělo vypadat jako níže uvedený úryvek.
void setup() {
}
void loop() {
}
void Display() {
}
int Temp() {
}
Kódování OLED displeje
Než budeme moci přidat kód do našeho Zobrazit musíme zajistit, aby byl OLED panel inicializován v našem neplatné nastavení funkce. Nejprve použijeme a zobrazit.začátek příkaz ke spuštění zobrazení následovaný a display.clearDisplay příkaz, abyste se ujistili, že je displej čistý.
void setup() {
display.begin (SH1106_SWITCHCAPVCC, 0x3C); //Změna na základě vaší knihovny zobrazení
display.clearDisplay();
}
Odtud můžeme přidat kód do našeho Zobrazit funkce. To začíná jiným display.clearDisplay před deklarováním nové celočíselné proměnné s hodnotou, která volá Temp funkce (tím se budeme zabývat později). Tuto proměnnou jsme pak schopni použít k zobrazení teploty na displeji pomocí následujícího kódu.
void Display() {
display.clearDisplay();
int intTemp = Temp(); //Volá naši funkci Temp
display.setTextSize (3); //Nastaví velikost našeho textu
display.setTextColor (WHITE); //Nastaví barvu našeho textu
display.setCursor (5, 5); //Nastaví pozici našeho textu na displeji
display.print (intTemp); //Vytiskne hodnotu poskytnutou funkcí Temp
display.drawCircle (44, 7, 3, WHITE); //Nakreslí symbol stupně
display.setCursor (50, 5);
display.print("C"); //Přidává C k označení, že naše teplota je ve stupních Celsia
}
Kódování teplotní sondy DS18B20
Stejně jako náš displej potřebuje naše teplotní sonda také kód nastavení pro inicializaci součásti.
void setup() {
display.begin (SH1106_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
senzory.begin();
}
Dále je čas naprogramovat samotnou sondu a musíme přidat kód do našeho Temp funkce. Nejprve si vyžádáme teplotu z naší sondy, poté zaznamenáme výsledek jako plovoucí proměnnou a převedeme ji na celé číslo. Pokud je tento proces úspěšný, teplota se vrátí na Zobrazit funkce.
int Temp() {
sensors.requestTemperatures(); // Odešlete příkaz pro získání teplot
float tempC = sensors.getTempCByIndex (0); //To vyžaduje teplotu ve stupních Celsia a přiřadí ji k float
int intTemp = (int) tempC; //To převede float na celé číslo
if (tempC != DEVICE_DISCONNECTED_C) //Zkontrolujte, zda naše čtení fungovalo
{
return intTemp; //Vrátí naši hodnotu teploty do funkce Display
}
}
Dokončování
Nakonec musíme říct to hlavní smyčka funkce pro volání našeho Zobrazit fungovat s každým cyklem kódu, takže nám zůstane projekt, který vypadá takto.
#zahrnout //Zobrazení knihovny
#zahrnout
#zahrnout //Knihovna teplotních sond
#define OLED_RESET -1
Displej Adafruit_SH1106 (OLED_RESET);
#define ONE_WIRE_BUS 15 //Kolík datového vodiče teplotní sondy
OneWire oneWire (ONE_WIRE_BUS); //Řekněte OneWire, který pin používáme
DallasTemperature sensors (&oneWire); //Odkaz OneWire na teplotu Dallasu
void setup() {
display.begin (SH1106_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
senzory.begin();
}
void loop() {
Zobrazit(); //Volá naši funkci zobrazení
}
void Display() {
display.clearDisplay();
int intTemp = Temp(); //Volá naši funkci Temp
display.setTextSize (3); //Nastaví velikost našeho textu
display.setTextColor (WHITE); //Nastaví barvu našeho textu
display.setCursor (5, 5); //Nastaví pozici našeho textu na displeji
display.print (intTemp); //Vytiskne hodnotu poskytnutou funkcí Temp
display.drawCircle (44, 7, 3, WHITE); //Nakreslí symbol stupně
display.setCursor (50, 5);
display.print("C"); //Přidává C k označení, že naše teplota je ve stupních Celsia
}
int Temp() {
sensors.requestTemperatures(); // Odešlete příkaz pro získání teplot
float tempC = sensors.getTempCByIndex (0); //To vyžaduje teplotu ve stupních Celsia a přiřadí ji k float
int intTemp = (int) tempC; //To převede float na celé číslo
if (tempC != DEVICE_DISCONNECTED_C) //Zkontrolujte, zda naše čtení fungovalo
{
return intTemp; //Vrátí naši hodnotu teploty do funkce Display
}
}
Výroba digitálního teploměru pro vlastní potřebu
Tento projekt by měl být zábavný a informativní a zároveň by vám měl dát šanci vyrobit praktický předmět. Tento kód jsme navrhli tak, aby byl co nejjednodušší, ale můžete jej použít jako základ pro složitější projekt, když se budete učit.
Zajímají vás projekty Arduino, ale nejste si jisti, kde začít? Tyto projekty pro začátečníky vás naučí, jak začít.
Přečtěte si další
- DIY
- Arduino
- Elektronika
Samuel je technologický spisovatel se sídlem ve Spojeném království s vášní pro vše, co je kutilství. Samuel začal podnikat v oblasti vývoje webu a 3D tisku a řadu let pracoval jako spisovatel a nabízí jedinečný pohled do světa technologií. Zaměřuje se hlavně na DIY technické projekty a nemiluje nic víc než sdílení zábavných a vzrušujících nápadů, které si můžete vyzkoušet doma. Mimo práci lze Samuela obvykle zastihnout, jak jezdí na kole, hraje počítačové videohry nebo se zoufale pokouší komunikovat se svým krabem.
Přihlaste se k odběru našeho newsletteru
Připojte se k našemu zpravodaji a získejte technické tipy, recenze, bezplatné e-knihy a exkluzivní nabídky!
Chcete-li se přihlásit k odběru, klikněte sem