bu Ahududu Pi Pico mikrodenetleyicilere girmenin ideal yoludur. 4$’dan başlayan fiyatlarla tahta ucuz ve kullanımı kolaydır. Düşük maliyet ve kullanım kolaylığı, cüzdanımız için en kötüsünden korkmadan onları bir projeye kolayca bırakabileceğimiz anlamına gelir.
Bu nasıl yapılır bölümünde, bir DS18B20 kullanarak canlı sıcaklık verilerini yakalamak için bir Raspberry Pi Pico kullanacağız. Bu sensör, çıplak bir transistör çipinden suya dayanıklı bir kabloya kadar birçok biçimde gelir. Sıcaklığı izlemek için bir sıvıya kısmen daldırılabilen ikinci versiyonu kullanacağız. Projemiz bir sıcaklık okuması alacak ve MicroPython’da bir koşullu test kullanarak, sıcaklık 20 santigrat derecenin altına düştüğünde bir LED’in yanıp sönmesini tetikleyecektir.
Bu Proje İçin İhtiyacınız Olacak
Devreyi Kurmak
Devre iki kısımdan oluşmaktadır. DS18B20 sıcaklık sensörü ve LED. Onları iki bölüme ayıracağız.
DS18B20’nin Raspberry Pi Pico’ya üç bağlantısı vardır.
Ahududu Pi Pico | Tel Rengi | DS18B20 |
---|---|---|
3V3 | Kırmızı | VDD |
GPIO26 | Sarı | Veri |
GND | Siyah | GND |
Üç bağlantı da devre tahtasına yapılır ve teller Pico’ya bağlanmak için kullanılır. Veriler ile 3V3 pinleri (sarı ve kırmızı) arasında 4.7K Ohm vardır direnç sağlanan 3.3V kullanarak veri pimini yükseğe çekmek için kullanılır. Bu, veri pimi ile Pico arasında sabit bir bağlantı sağlar.
LED’in Raspberry Pi Pico’ya yalnızca iki bağlantısı vardır.
Ahududu Pi Pico | Tel Rengi | NEDEN OLMUŞ |
---|---|---|
GPIO15 | Kırmızı | Anot (Uzun bacak) |
GND | Siyah | Katot (Kısa bacak) |
LED’in katot ayağında GND ile aynı hat üzerinde 330 Ohm’luk bir direnci vardır. Bu, LED’in tüketebileceği akım miktarını azaltır.
Kodu Yazmak
1. Bu kılavuzu takip edin Raspberry Pi Pico modeliniz için en son MicroPython sürümünü indirmek ve yüklemek için. Raspberry Pi Pico’yu Thonny’ye bağlamaya kadar olan adımları izleyin.
2. Thonny’de yeni bir boş proje oluşturun.
3. Önceden yazılmış üç kod modülünü içe aktarın. İlki, Pico’nun DS18B20’nin tek telli arabirimiyle konuşmasını sağlayan bir modül olan onewire’dır. Sırada, DS18B20’den gelen sensör verilerini yorumlayan ve bize insan tarafından okunabilir veriler sağlayan bir modül olan ds18x20 var. Son olarak, proje kodumuzu hızlandırmak için kullanılan zamanı içe aktarıyoruz.
import onewire, ds18x20, time
4. Machine modülünden Pin sınıfını içe aktarın. Bu, kodumuzun GPIO’ya bağlı bileşenlerle etkileşime girmesini sağlayacaktır.
from machine import Pin
5. İki nesne oluşturun, SensorPin ve uyarı. SensorPin, veri pinini DS18B20’den Pico’ya bağlamak için kullanılan GPIO pinidir. Uyarı, LED’in anoduna (uzun bacak) bağlanan GPIO pimidir.
SensorPin = Pin(26, Pin.IN)
alert = Pin(15, Pin.OUT)
6. Bir nesne, sensör oluşturun ve ds18x20 modülüne DS18B20 sıcaklık sensörümüzü nerede bulacağını söylemek için kullanın. Bu hat, sensörün bağlantı için kullandığı protokol olduğu için onewire modülünü de kullanır.
sensor = ds18x20.DS18X20(onewire.OneWire(SensorPin))
7. Bir nesne oluşturun, rom’lar ve DS18B20 sıcaklık sensörümüzü bulmak için arayüzü taramak için sensör nesnesini kullanın. DS18B20’miz gibi tüm tek kablolu cihazların, kullanılmadan önce tanımlamamız gereken ROM’da saklanan benzersiz bir kayıt numarası vardır.
roms = sensor.scan()
8. Bir süre True döngüsü kullanın sonraki kod satırlarını hiç bitmeyen bir döngüde çalıştırmak için.
while True:
9. Santigrat kullanmak için sıcaklık okumasını ayarlayın. While True döngüsü içindeki kodun, döngüye ait olduğunu göstermek için girintili olduğuna dikkat edin.
sensor.convert_temp()
10. Koda iki saniyelik bir duraklama ekleyin. Bu, biz okuma yapmadan önce DS18B20’ye oturması için zaman verir.
time.sleep(2)
11. Döndürülen ROM listesini yinelemek için bir for döngüsü kullanın. Tek telli arayüzde yalnızca bir DS18B20’ye sahip olduğumuz için, yinelediğimiz listede yalnızca bir ROM saklanacaktır.
for rom in roms:
12. Bir nesne, sıcaklık oluşturun ve bunu DS18B20 sensörü okuma çıktısını saklamak için kullanın. Çıktı, döndürülen verileri 1 ondalık basamağa yuvarlayan bir round() işlevine sarılır.
temperature = round(sensor.read_temp(rom),1)
13. Sıcaklık nesnesinde saklanan değeri sabit kodlanmış bir değere karşı kontrol etmek için koşullu bir test kullanın. Bu örnekte, sıcaklık 20 Derece Santigrat’tan az veya ona eşitse, koşul Doğru olarak değerlendirilir ve girintili kodun bir sonraki bölümü çalışır.
if temperature <= 20:
14. Python Kabuğuna kullanıcıyı sıcaklığın 20 C’nin altında olduğu konusunda uyaran bir mesaj yazdırın ve sıcaklık değerini cümleye ekleyin.
print("Warning the temperature is",temperature,"C")
15. LED’i 0,5 saniyelik bir gecikmeyle 10 kez yanıp sönmek için bir for döngüsü kullanın.
for i in range(10):
alert.toggle()
time.sleep(0.5)
16. Sıcaklık 20 C’den yüksekse etkinleşen başka bir koşul oluşturun. Bu koşul, bitmeden önce mevcut sıcaklığı yazdıracaktır.
else:
print(temperature,"C")
17. Beş saniyelik bir duraklama ekleyin döngüyü sonlandırmadan ve döngünün başlangıcına geri dönmeden önce.
time.sleep(5)
18. Kodu Raspberry Pi Pico’ya TemperatureMonitor.py olarak kaydedin.
19. Kodu başlatmak için Çalıştır simgesine tıklayın. Kısa bir aradan sonra sıcaklık ayrıntıları Python kabuğunda görünecektir. Sıcaklık 20 C’nin altındaysa, LED bizi uyarmak için beş kez yanıp sönecektir.
Eksiksiz Kod Listesi
import onewire, ds18x20, time
from machine import Pin
SensorPin = Pin(26, Pin.IN)
alert = Pin(15, Pin.OUT)
sensor = ds18x20.DS18X20(onewire.OneWire(SensorPin))
roms = sensor.scan()
print(roms)
while True:
sensor.convert_temp()
time.sleep(2)
for rom in roms:
temperature = round(sensor.read_temp(rom),1)
if temperature <= 20:
print("Warning the temperature is",temperature,"C")
for i in range(10):
alert.toggle()
time.sleep(0.5)
else:
print(temperature,"C")
time.sleep(5)