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. | |
2 | Açılan File Open penceresinde önce Library sonra Graphics seçeneklerine tıkla. | |
3 | Grafik 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. | |
4 | OLED 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 | |
5 | Daha 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 | |
6 | Daha 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 | |
7 | OLED 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. | |
9 | Tekrar 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 | |
10 | Son 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);
}