back to top

#4 PicoBricks ile Termometre Projesi

Sensörler elektronik sistemlerin duyu organlarıdır. Hissetmek için derimizi, görmek için gözümüzü, duymak için kulağımızı, tatmak için dilimizi ve koklamak için burnumuzu kullanırız. Picobriks’te hali hazırda bir çok duyu organı(sensör) vardır. Ayrıca yenileri de eklenebilir. Nem, sıcaklık, ışık ve daha birçok sensörü kullanarak çevreyle etkileşim sağlayabilirsiniz. Picobricks ortam sıcaklığını başka hiçbir çevre bileşenine ihtiyaç duymadan ölçebilir.

Ortam sıcaklığı seralarda, kuluçka makinelerinde, ilaçların taşınmasında kullanılan ortamlarda kısaca sıcaklık değişiminin sürekli takip edilmesi gereken durumlarda kullanılmaktadır. Projelerinde sıcaklık değişimi üzerine bir işlem yapacaksan ortam sıcaklığını nasıl ölçeceğini bilmelisin. Bu projede Picobricks ile ortam sıcaklığını OLED ekranda gösterecek bir termometre hazırlayacaksın.

Proje Detayları ve Algoritma

Picobricks’te DHT11 modülü bulunmaktadır. Bu modül ortamdaki sıcaklık ve nem miktarını algılayarak mikrokontrolcüye veriler gönderebilmektedir. Bu bu projede Picobricks üzerindeki DHT11 sıcaklık ve nem sensörünün ölçtüğü sıcaklık değerlerini Picobricks OLED ekrana yazdırmak için gerekli kodları yazacağız.

Bağlantı Şeması

 Projenin MicroBlocks ile Kodlanması

1İlk olarak OLED kütüphanesini MicroBlocks editörüne import etmeniz gerekiyor. Bunun çin Add Library butonuna tıklamalısın.
2Açılan File Open penceresinde önce Library sonra Graphics seçeneklerine tıkla.
3Grafik kütüphanelerinden OLED Graphics.ubl kütüphanesine tıkla ve pencerenin sağ alt konumundaki open butonuna tıkla. OLED kütüphanesini kod kategorileri listesine eklendiğini göreceksin.
4OLED kütüphanesi ekledikten sonra Picobricks başladığında yazdığın kodların çalışabilmesi için Control menüsünde when started bloğunu sürükleyerek kod yazma alanına bırak
5Daha sonra OLED ekranın tanımlama bloğunu eklemen gerekiyor. Bunun için OLED kategorisindeki initialize i2c OLED bloğunu sürükleyerek when started bloğunun altına ekle
6Daha sonra yazdığın kodların Picobricks çalıştığı sürece sürekli olarak çalışması için Control menüsünden forever bloğunu sürükleyerek OLED tanım bloğunun altına ekle
7OLED ekrana yazı yazdırmak için OLED kategorisindeki  write Hello! at x0 y0 inverse bloğunu sürükleyerek forever bloğunun içine bırak. Start tuşuna bastığında ekranda Hello! yazdığını göreceksin. Buradaki Hello! yazısını silip dilediğin metni yazarak ekranda görüntülenmesini sağlayabilirsin.
8Şimdi write bloğundaki Hello! yazısını silip Sicaklik: yaz ve x konumunu 15, y konumunu 10 yap.
9Tekrar OLED Graphics kategorisinden write bloğu al ve forever bloğunun içine sürükleyip bırak ve x konumunu 55, y konumunu 30 yap. OLED ekrana sayısal değerler yazdırmak için öncelikle bu sayısal değerleri metinsel ifadeye dönüştürmelisin. Bunun için Data kategorisinden bloğunu sürükleyerek write bloğundaki Hello! yazan yuvarlak alana bırak. Daha sonra Picobricks kategorisinden PicoBricks temperature (C) bloğunu sürükleyerek join bloğundaki micro yazan yuvarlağa yerleştir ve blocks yazısını sil 
10Son olarak tekrar OLED Graphics kategorisinden write bloğunu sürükleyip forever bloğunun içine bırak. Hello! yazısını silerek derece yaz ve x konumunu 40, y konumunu 50 yap. Start tuşuna basarak Picobricks’in dahili sıcaklık sensörünün ölçtüğü ortam sıcaklığını OLED ekranda görüntüleyebilirsin. 

Projenin Microblocks kodlarına erişmek için tıkla.

Proje Görseli

Proje Önerisi

Sende projeni geliştirmek için ortamdaki sıcaklığın 30 derecenin üzerine çıktığında kırmızı LED’in yanmasını ve ekranda uyarı ifadesinin belirmesini sağlayabilirsin.

Projenin MicroPython Kodları

from machine import Pin, I2C, ADC
from ssd1306 import SSD1306_I2C
import utime

WIDTH  = 128                                            
HEIGHT = 64

sda=machine.Pin(4)
scl=machine.Pin(5)
i2c=machine.I2C(0,sda=sda, scl=scl, freq=2000000)
oled = SSD1306_I2C(128, 64, i2c)

pico_temp = ADC(4)
conversion_factor=3.3 / (65536)

while True:
    oled.fill(0)
    oled.show()
    reading =pico_temp.read_u16()*conversion_factor
    temperature= 27 - (reading - 0.706)/0.001721
    oled.text("Temperature:",15,10)
    oled.text(str(int(temperature)),55,30)
    oled.show()
    utime.sleep(0.5)

 Projenin Arduino C Kodları

#include <Wire.h>
#include "ACROBOTIC_SSD1306.h"

int temperature;
int reading;
int conversion_factor=3.3 / (65536);

void setup() {
  pinMode(4,INPUT);
  Serial.begin(115200);
  Wire.begin();  
  oled.init();                      
  oled.clearDisplay(); 

#if defined(__AVR_ATtiny85__) && (F_CPU == 16000000)
  clock_prescale_set(clock_div_1);
#endif
}

void loop() {
  reading = analogRead(4)*conversion_factor;
  temperature = 27 - (reading - 0.706)/0.001721;
  //String string_temperature = String(temperature);

  oled.setTextXY(3,1);              
  oled.putString("Sicaklik: ");
  oled.setTextXY(3,1);              
  //oled.putString(string_temperature);
  Serial.println(temperature);
  delay(10);
}

Son Çıkan Yazılar

CEVAP VER

Lütfen yorumunuzu giriniz!
Lütfen isminizi buraya giriniz