İçindekiler:
2025 Yazar: John Day | [email protected]. Son düzenleme: 2025-01-13 06:58
Bu Eğitilebilir Kitapta, ahududu pi ve ADS1115 analogdan dijitale dönüştürücü ile bir ışık ve sıcaklık sensörünün nasıl okunacağını ve matplotlib kullanarak grafiğinin nasıl çizileceğini öğreneceksiniz. Gerekli malzemelerle başlayalım.
Gereçler
- Ahududu pi (4 kullanmama rağmen herhangi biri yapacak)
- Raspbian yüklü MicroSD kart (iyi eğitim:
- HDMI monitör ve güç kaynağı
- Mikro USB kablosu
- Adafruit ADS 1115 analogdan dijitale dönüştürücü:
- Atlama telleri
- ışık sensörü (LDR)
- Sıcaklık sensörü
- potansiyometre x2 (değer, daha sonra ölçeceğimiz sıcaklık ve ışık sensörlerinizin direnç aralığının orta noktası olacaktır)
- ekmek tahtası
1. Adım: Raspberry Pi'nizi Kurun
1. Ahududu pi'nizi ayarlamak için bu öğreticiyi izleyin:https://www.raspberrypi.org/help/noobs-setup/2/2. I2C'yi etkinleştirin: sol üstteki ahududu pi sembolüne tıklayın. Tercihler > ahududu pi konfigürasyonu > arayüzler > seçeneğine gidin ve I2C'de "etkinleştir" kutusunu işaretleyin. Ardından Tamam'a tıklayın.3. Şimdi bir terminal penceresi açın. Komut satırına şunu yazın:
sudo apt-get yükseltme
sudo pip3 adafruit-circuitpython-ads1x15'i kurun
sudo apt-get install python-matplotlib
Adım 2: Işık ve Sıcaklık Sensörlerinizi Ölçün
Şimdi ışık ve sıcaklık sensörlerinin direncini ölçmemiz gerekecek. Direnç ölçümü ayarında bir volt metre alın ve ışık sensörünüzün ışık ve karanlıkta uçlarını ölçün. Değerleri kaydedin. Şimdi voltmetrenizi sıcak ve soğukta sıcaklık sensörünüzün uçlarına alın (su kullandım). Değerleri kaydedin. Bunları daha sonra devremizde kullanacağız.
Adım 3: Devrenizi Bağlayın
1. Sarf malzemeleri listesinde listelenen malzemeleri toplayın. Potansiyometreler için en yüksek ve en düşük değerlerin (açık ve koyu, sıcak ve soğuk) ortalaması olan bir değer kullanın.
(yüksek-düşük) / 2
2. Yukarıdaki devre şemasını takip edin:
- Analog-dijital dönüştürücü üzerindeki SDA'yı pi üzerindeki SDA'ya bağlayın
- Analog-dijital dönüştürücüdeki SCL'yi pi üzerindeki SCL'ye bağlayın
- Analog-dijital dönüştürücüdeki VDD'yi pi üzerindeki 3.3v'ye bağlayın
- Analogdan dijitale dönüştürücü üzerindeki GND'yi pi üzerinde toprağa bağlayın
- Geri kalan bileşenleri devre şemasına göre bağlayın.
4. Adım: Kod
1. Terminali yazın:
nano dijital.py
2. Aşağıda veya Github'da bulunan kodu, çıkması gereken metin düzenleyiciye yapıştırın.
matplotlib.pyplot'u plt olarak içe aktar
numpy'yi np olarak içe aktar kartı içe aktar busio içe aktar zamanı içe aktar adafruit_ads1x15.ads1115'i adafruit_ads1x15.analog_in'den ADS olarak içe aktar AnalogIn i2c = busio. I2C(board. SCL, board. SDA) ads = ADS. ADS1115(i2c) x = 0 light =In AnalogIn (ads, ADS. P0) temp = AnalogIn(ads, ADS. P1) X1 = X2 = Y1 = Y2 = plt.ylim(-50, 1000) plt.plot(X1, Y1,) etiket = "hafif", renk = '#0069af') plt.plot(X2, Y2, etiket = "Sıcaklık", renk = '#ff8000') plt.xlabel('Zaman(dakika)') plt.ylabel(' Level') plt.title('Zaman içinde ışık ve sıcaklık') plt.legend() while True: x += 5 Y1.append(light.value/30) X1.append(x) Y2.append(temp.value) /3) X2.append(x) plt.plot(X1, Y1, etiket = "hafif", renk = '#0069af') plt.plot(X2, Y2, etiket = "Sıcaklık", renk = '#ff8000') plt.duraklat(300)
3. Şimdi çıkmak için CTRL+X'e basın, kaydetmek için y'ye basın, ardından enter'a basın.
Terminalde yazarak programınızı çalıştırın:
sudo python3 dijital.py
4. Potansiyometreleri, grafik geniş bir değerler aralığı gösterecek şekilde ayarlayın. Grafiğin çok çeşitli değerler gösterdiğinden emin olmak için sensöre bir ışık tutmayı ve odadaki ışıkları kapatmayı deneyin.
Değerlerden herhangi biri dibin altına düşerse, karşılık gelen böleni düşürmeyi deneyin (satır 29 ve 31).
Değerlerden herhangi biri üstten yukarı çıkarsa, karşılık gelen böleni artırmayı deneyin (satır 29 ve 31).
Adım 5: Sorun Giderme
1. Tüm bağlantıları devre şemasına göre iki kez kontrol edin
2. I2C algılama - i2c üzerinden bağlanan tüm cihazları size gösterir:
Terminali yazın:
sudo apt-get install i2c araçları
sudo i2cdetect - y 1