Arduino Esplora ile Güzel Bir Termometre Projesi
M. Hamit YANIK // 24 Eylül 2013 // 33 yorum // kategori: Arduino ProjeleriHerkese Merhaba! ArduinoTürkiye.com’daki ikinci yazımı Arduino Esplora ile şık bir termometre yapımı üzerine yazmak istedim.
Dün biraz boÅŸ vaktim olunca masamın üzerindeki Esplora’ya takıldı gözlerim. PeÅŸinden Esplora’nın TFT ekranının da bir köşede durduÄŸunu görünce, boÅŸ vakti deÄŸerlendirmek adına bir dijital-görsel termometre yapayım dedim.
Adafruit’in GFX ve ST7735 LCD Kütüphanesi olduÄŸu da aklıma gelince, yapımının oldukça basit olacağını düşünerek giriÅŸtim çalışmaya.
Termometrenin tamamlanması yaklaşık 50 dakika sürdü. Hatalarını gidermek ve biraz da makyaj için 2 saat ayırmak gerekti.
Gelelim nasıl yapıldığına. Öncelikle Adafruit’in GFX ve ST7735 kütüphanelerini indirip Arduino’nun “libraries” klasörüne eklememiz gerekiyor.
Aşağıdaki linklerden bu kütüphaneleri edinebilirsiniz:
https://github.com/adafruit/Adafruit-ST7735-Library
https://github.com/adafruit/Adafruit-GFX-Library
GitHub sayfasının saÄŸ sütunundaki “Download ZIP” butonuna tıklayarak ZIP dosyası olarak indiriniz.
Arduino yazılımındaki Sketch > Import Library > Add Library… menüsünden, indirdiÄŸiniz zip dosyalarını seçerek kütüphaneleri Arduino derleyicisine ekleyebilirsiniz.
GFX kütüphanesinin kullanım klavuzu için aşağıdaki PDF dosyasını inceleyin:
http://learn.adafruit.com/downloads/pdf/adafruit-gfx-graphics-library.pdf
Termometre kodlarını aşağıda sizlerle paylaşıyorum. Kod satırlarında gerekli açıklamarı yapmaya çalıştım. Deneme yanılma yöntemiyle de keşfetmeniz mümkün. Termometremiz 0 ile 99 santigrad derece arasını ölçebiliyor. İsterseniz kodlar üzerinde biraz oynamalar yapıp -40 ile +150 santigrad derece arasında ölçüm yapabilirsiniz. LCD küçük olduğundan ben 0-99 derece arasını tercih ettim.
Sorularınız için aşağıdaki yorum bölümünü kullanabilirsiniz. Yanıtlamaya çalışacağım. Herkese başarılar. Sağlıcakla!
/**  * @file Esplora_Termometre.ino  * @author M. Hamit YANIK (hamityanik@hotmail.com)  * @date Eylül, 2013  * @brief Arduino Esplora ile şık bir termometre.  *  * Arduino Esplora + TFT LCD ile Adafruit kütüphaneleri kullanılarak  * yapılmış şık bir termometre.  * www.arduinoturkiye.com  */ #include <Esplora.h>// Esplora hazır fonksiyonlarını kullanmak için #include <Adafruit_GFX.h>// Çekirdek grafik kütüphanemizi dahil edelim #include <Adafruit_ST7735.h>// Esplora LCD'sinin sürücüsünü dahil edelim #include <SPI.h>// Esplora LCD'sini SPI haberleşme kullanarak daha hızlı // kullanmak için SPI.h dosyasını dahil edelim // Esplora LCD'sinin pin bağlantılarını ayarlıyoruz #define sclk 15 // Arduino'nun 15. pini: SCK clock pini #define mosi 16 // Arduino'nun 16. pini: Master Output Slave Input (MOSI) data pini #define cs 7 #define dc 0 #define rst 1 // RGB565CONVERT fonksiyonu 32 bit rgb renk kodunu 16 bit rgb renk koduna cevirir // Photoshop, Adobe Fireworks gibi tasarım programları 32bit rgb renk kodları ile çalışır. // Parlak kırmızı renk kodu bilgisayarda #FF3300 iken, bunu 16 bit renk koduna çevirmek // için RGB565CONVERT fonksiyonundan geçirmeliyiz: RGB565CONVERT(0xFF, 0x33, 0x00) #define RGB565CONVERT(red, green, blue)\ (uint16_t)((( red >> 3 )<< 11 )| \ (( green >> 2 )<< 5 )| \ ( blue >> 3 )) // renk tanımlamalarımız #define kirmizi RGB565CONVERT(0xFF, 0x33, 0x00)// parlak kırmızı #define gri RGB565CONVERT(0xCC, 0xCA, 0xCF) #define koyu_gri RGB565CONVERT(127, 127, 135) #define yesil RGB565CONVERT(0x66, 0xcc, 0x00)// parlak yesil #define sari RGB565CONVERT(0xFF, 0xFF, 0x00)// sari #define siyah 0 // Seçenek 1: herhangi bir giriş-çıkış pinini kullanarak LCD ile haberleşebiliriz. // ama bu biraz yavaş olacak. //Adafruit_ST7735 tft = Adafruit_ST7735(cs, dc, mosi, sclk, rst); // Seçenek 2: SPI donanım pinlerini kullanarak LCD ile haberleşelim. // İşte bu LCD'yi kullanmanın en hızlı yolu! Adafruit_ST7735 tft = Adafruit_ST7735(cs, dc, rst); int celsius = 0; int old_celsius=0; long previousMillis = 0; void setup(void) { // Eğer LCD'niz düzgün çalışmıyorsa aşağıdaki farklı tanımlamaları deneyin. // If your TFT's plastic wrap has a Black Tab, use the following: tft.initR(INITR_BLACKTAB); // initialize a ST7735S chip, black tab // If your TFT's plastic wrap has a Red Tab, use the following: //tft.initR(INITR_REDTAB); // initialize a ST7735R chip, red tab // If your TFT's plastic wrap has a Green Tab, use the following: //tft.initR(INITR_GREENTAB); // initialize a ST7735R chip, green tab // LCD'yi yatay kullan tft.setRotation(1); // LCD'yi siyah renkle doldur tft.fillScreen(siyah); tft.setCursor(10, 5); // imleci X:10, Y:5 koordinatlarına getir tft.setTextSize(2); // yazı boyutunu 2 yap tft.println("Termo"); // Önceden ayarladığımız koordinatlara Termo yaz tft.setCursor(14, 18); // imleci X:14, Y:18 koordinatlarına getir tft.println("metre"); // metre yaz // termometre gövdemizi çiziyoruz tft.drawRoundRect(130, 4, 10, 10, 5, gri); tft.drawRoundRect(125, 104, 20, 20, 10, gri); tft.drawRect(130, 9, 10, 100, gri); tft.fillRect(131, 10, 8, 4, siyah); tft.fillRect(131, 104, 8, 4, siyah); tft.fillRoundRect(131, 5, 8, 8, 4, siyah); tft.fillRoundRect(126, 105, 18, 18, 9, siyah); tft.fillRoundRect(127, 106, 16, 16, 8, kirmizi); // termometre çizgilerini ve 0'dan 100'e kadar sayıları yazıyoruz // yazı boyutlarını küçük olarak ayarla tft.setTextSize(1); for( int i=0; i<11; i++ ) { switch( i ) { case 0: // Eğer 100'ü yazıyorsan biraz sola yaz tft.setCursor(98, (i*10)+3); break; case 10: // Eğer 0'ı yazıyorsan biraz sağa yaz tft.setCursor(108, (i*10)+3); break;       default: // diğerlerini bu hizada yaz tft.setCursor(103, (i*10)+3); } // yazılarda mavi'den kırmızıya geçiş efekti tft.setTextColor(RGB565CONVERT(map(i,0,10,255,0), 55, map(i,0,10,0,255))); // çizgi yazılarını yaz tft.println(100-(i*10)); // çizgileri çiz tft.drawLine(120, (i*10)+6, 125, (i*10)+6, yesil); } // derece yazdığımız alanın köşeleri yuvarlatılmış gri ile doldurulması tft.fillRoundRect(10, 44, 80, 34, 4, koyu_gri); // başlangıçta 00°C yaz tft.setCursor(16,50); tft.setTextSize(3); tft.setTextColor(gri); tft.print("00"); tft.print("\xF7"); tft.print("C"); tft.setCursor(4,116); tft.setTextSize(1); tft.setTextColor(gri); tft.print("\x41\x72\x64\x75\x69\x6e\x6f\x54\x75\x72\x6b\x69\x79\x65\x2e\x63\x6f\x6d"); // bundan sonraki yazıların boyutunu 3 ve rengini sari olarak ayarla tft.setTextSize(3); tft.setTextColor(sari); } void loop() { unsigned long currentMillis = millis(); // Yarım saniyede bir sıcaklık oku if(currentMillis - previousMillis > 500) { previousMillis = currentMillis; celsius = Esplora.readTemperature(DEGREES_C); if( celsius > 99 ) { celsius = 99; } if( celsius < 0 ) { celsius = 0; } } // eğer sıcaklık değişmişse if( celsius != old_celsius ) { // Derece değerini yazacağımız yeri önce koyu gri ile temizliyoruz tft.fillRect(16, 50, 34, 22, koyu_gri); // Derece değerini yaz tft.setCursor(16,50); tft.print(celsius); // termometre barını güncelle tft.fillRect(132, 102-(celsius), 6, 4, siyah); tft.fillRect(132, 106-(celsius), 6, celsius, kirmizi); old_celsius = celsius; } }Etiketler: arduino > Arduino Esplora > arduino esplora termometre > arduino esplora thermometer > arduino lcd thermometer > esplora lcd
Hamit çok güzel bir yazı olmuş eline sağlık.
Özellikle henüz hakkında pek kaynak olmayan Esplora ile ilgili olması da ayrı bir güzel olmuş.
Teşekkürler Coşkun Hocam.
çok güzel gömmüşünüz tebrik ederim 😉
Teşekkürler.
hocam çok teÅŸekkürler..süper anlatım açıklamalar 10 numara..fevkalade…Allah razı olsun..
Teşekkürler. Amin, cümlemizden.
Güzel bir kullanım örneÄŸi, ilk incelediÄŸimde Esplora’yı mevcut iÅŸlerimde kullanıp kullanamayacağımla ilgili bir fikir oluÅŸmamıştı ama ÅŸimdi sevmeye baÅŸladım. becerikli bir kart.
Üzerinde sensörleri barındırması, kolayca lcd takılabiliyor olması bazı çalışmaları oldukça kolaylaştırıyor.
İyi günler Hamit bey, ben sizin projenizde olduğu gibi ortamın sıcaklığını ölçüp bunu da pc ye gönderen bir bitirme ödevim var, sizin projenizde benim için her şey hazır ama sadece bluetooth ile pc ye gönderme eksik bunu nasıl tamamlayabilirim hangi bluetooth modülünü tavsiye edersiniz yardımcı olursanız sevinirim.
Bu devreyi kurmak istesem ;
elinizde devre şeması ve malzeme listesi varsa paylaşabilir misiniz ?
hocam böyle bir ekrandan sıcaklığı öğreneceğim ve yanına bir de küçük bir fan takmayı düşünüyorum bilgisayar dan da verdiğim dereceler aralığında çalışacak bi sistem yapmayı planlıyorum önerilerinizi ala bilir miyim yada ola bilir mi böyle birşey
Merhaba,
Benzer ÅŸekilde daha yuksek sicakliklari ornegin
400 C ileri ölçmek mümkün mu ? Hangi devre elemanlarına ihtiyacimiz var ? Yardimci olabilir misiniz.
pt100 denen sensorle tipine göre -200…+1600 derece aralığına ölçüm yapılabılır farklı bır olçum teknıgı vardır… seçilen sensore göre bir tablo vardır bu tabloda her bir sıcaklık deÄŸerine karşılık bir direnç deÄŸeri vardır bu direnci ölçüp tablodan gerekli sıcaklık bulunup gösterilir… pt100 0 derece sıcaklıkta 100ohm deÄŸer gösterir pt1000 ise 0 derecede 1000ohm deÄŸer gösterir
Hocam yukarıda verdiğiniz kodları hangi programda yazdığınızı öğrenebilirmiyim. Teşekkürler.
Merhabalar ben yeni başladım esplorayi bağladım pc ye ancak kodları nasıl entegre edeceğim yardım edebilir misiniz ?
esplorayı pcdeki usb den çekin çıkarın şuradan http://arduino.cc/en/Main/Software arduinoyu yükleyin. kurulum bittikten sonra esplorayı pc usb ye takın, arduino ideden esplorayı seçin ve bağlantığını görün. yukarıdsaki kodları ide deki program editörüne kopyalayın ve esploraya gönderin.
Ömer hocam çok teşekkür ederim dediklerinizi yaptım ancak ekranda düz yatay kalın çizgiler çıkıyor sadece zebra perde gibi aynı ..
şuradaki adımları yapmaya çalışın ingilizce ama linkler ve kodlar yardımcı olur en azından anlamaya çalışırsdanız yardımı olur http://arduino.cc/en/Guide/ArduinoEsplora şuradada google translate yarma türkçesi ile anladığın kadar ilerlersin herhalde https://translate.google.com/translate?hl=tr&sl=en&tl=tr&u=http%3A%2F%2Farduino.cc%2Fen%2FGuide%2FArduinoEsplora
s.a beyler
bu arduino esplora yı nerden ögrenebilirim yardımcı olabilirmisiniz rica etsem
a.s beyim. burada herkes kendi öğreniyor sora sora. almadıysan robotistan.com dan alabilirsin esplorayı. genel olarak arduinoya göre değişik yönleri olduğundan başlangıçta sıkıntı çekebiliyormuşun. örnekleri bir dene
arkadaşlar ellerinize sağlı güzel projeler var
bende arduıno ile rf kombi termostat kontrolü yapmak istiyorum bana yardımci ola bilecek arkaşlar varmıdır
forum kısmına gelip oradan da sorarsanız iyi olur.
Bu verdiÄŸiniz kodu yüklediÄŸimde siyah ve grı ekranla karsılasıyorum.. Ve arduinoma baska yazılım atarken resımde gorunen ekran gelıyor ve cıkıyor obur yazdıgım yazılıma gecılıyor……
temiz bir proje açın kutuphaneleri indirip gerekli yere kurun. programı dikkatli şekilde değişiklik yapmadan yeniden oluşturun ve esploraya kaydedin.
hala aynı skıntı verdiğiniz projeleri yüklemeye calısırken sıyah beyaz ekran gelıyor vede baska yazılım yukledıgımzde ekran gelıyor gidiyor beyfendi
Programlama dılınde hangısını kullanmamız gerekiyor
görkem kardeşim arduino ile yükleniyor. arduino içindeki esplorar örneklerini de deneyin öncelikle. esplora ekran sürücüsü normalde gelmiyor yazıda anlatıldığı şekilde onları kurmanız lazım. ekranı takmadan arduino led blink ötneğini bir deneyin. esplora farklı bir ürün kendine has özellikleri var ben de hiç kullanmadım ama çok da zor değil.
Merhaba,Arduino programında bulunan seri port ekranında ki bilgileri kaydetmek mümkün mü ?
copy past yapın yada herhangi bir seriport açan terminal programı ile gelen bütün veriyi direk diske yazabilirsiniz.
merhabalar su anda size uzakdogudan cınden yazıyorum ben elektrik muhendisyim ama cok once mezun olmusum 1989 ytü mezunuyum .dolayısıyla yazılımlar konusubda cok zayıfım .ancak turkıyedekı sırketımde ve cındekı fabrıkamızda cnc makınelerı ve mını cnc yazı makınelerı uretıyoruz.mini dediğim makinelerde daha once kopyaladıgımız programları kullanıyoruz ancak yaklasık 3 aydır arduınoyu tanıdım ve bu mantıkla bizim makinelere yeni programlar yazılabilecegını dusundum ve yeni tasarım makınelerımızı daha ucuza mal edebılecegımızı anladım .bu noktada sizden yardım talebılımız olursa once fıkır alısverısı anlasırsakta tıcarı falıyet olabılır mı?cevabınızı beklıyorum .detayları sonra anlatırım .selamlar.
denenebilir belki. genelde hassas programlama için numune ürün gerekiyor ve donanımı iyi tanımak lazım…
Satın alabiliyomuyuz bunu ??
esplora artık uretilmiyor desteği kalmadı 2.el veya stokda kalmış ürün belki bulabilirsiniz ama ileriye yonelik yatırım yapmayın. kodlar uno ya uyarlanabilir tft lct ve sensor alıp benzer bir proje yapabilirsiniz.