İçindekiler:
- Adım 1: Proje İçin Gereken Şeyler
- Adım 2: Arduino IDE'yi Raspberry Pi'ye İndirin ve Kurun
- Adım 3: Arduino için Kod
- Adım 4: Raspberry Pi'yi Kurun
- Adım 5: Python Komut Dosyası
- Adım 6: Devre Şeması
- 7. Adım: Sonuç
Video: Raspberry Pi ve Arduino UNO Kullanarak DHT11 Verilerini Çizin: 7 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:19
Bu talimat, Arduino Uno ve Raspberry Pi kullanarak sıcaklık sensörü DHT11 verilerini nasıl çizdiğimi açıklıyor. Bu sıcaklık sensöründe Arduino Uno ile Arduino Uno seri olarak Raspberry Pi ile bağlanmıştır. Raspberry Pi Side'de grafikleri çizmek için matplotlib, numpy ve drawow kütüphaneleri kullanılmaktadır.
Adım 1: Proje İçin Gereken Şeyler
1. Ahududu Pi
2. Arduino Uno
3. DHT11 Sıcaklık Sensörü
4. Atlama Telleri
5. Breadboard
Adım 2: Arduino IDE'yi Raspberry Pi'ye İndirin ve Kurun
Not: - Arduino UNO'ya çizim yüklemek için Windows, Linux veya Mac'in Arduino IDE'sini kullanabilirsiniz.
İlk adım, Raspberry Pi'de bu açık tarayıcı için Arduino IDE'yi kurmak ve aşağıda verilen bağlantıyı açmaktır.
Arduino Önceki IDE
Ardından Linux ARM sürümünü indirin ve komutu kullanarak çıkarın
tar -xf dosya adı
Çıkardıktan sonra yeni bir dizin göreceksiniz. Burada arduino-1.8.2 IDE kullanıyorum. Ardından komutu kullanarak dizine gidin.
cd arduino-1.8.1
Arduino IDE'yi çalıştırmak için arduino-1.8.2 dizininde bu komutu kullanın.
./arduino
Kitaplıklar nasıl kullanılır?
Arduino'ya herhangi bir kitaplık kurmak için, kitaplığı indirip arduino 1.8.2 ==> kitaplıklar klasörüne yapıştırmanız yeterlidir.
NOT:- Ex (DHT-sensörü) için kütüphane klasöründe (-) olmadığından emin olun. (-) varsa yeniden adlandırın.
bu öğretilebilir dosyada iki kitaplık kullanacağız, DHT_Sensor ve Adafruit_Sensor
Adım 3: Arduino için Kod
Şimdi python ve Arduino'yu birlikte konuşalım. Öncelikle Arduino'nun seri port üzerinden veri göndermesini sağlamak için basit bir programa ihtiyacımız var. Aşağıdaki program Arduino'yu sayacak ve verileri seri porta gönderecek basit bir programdır.
Arduino Kodu
#include "DHT.h" kayan tempC; // C float tempF'de değişken veya tutma sıcaklığı; // F şamandıra neminde sıcaklığı tutmak için değişken; // Basınç okumasını tutmak için değişken
#define DHTPIN 7 // hangi dijital pine bağlıyız
#define DHTTYPE DHT11 // DHT 11
//#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321
//#define DHTTYPE DHT21 // DHT 21 (AM2301)
// DHT sensörünü başlat.
DHT dht(DHTPIN, DHTTYPE);
geçersiz kurulum(){Serial.begin(115200); // seri monitörü aç
dht.begin(); // dht'yi başlat }
geçersiz döngü() {tempC = dht.readTemperature(); // Değişkenlerinizi bildirdiğinizden emin olun
nem = dht.readHumidity(); // Nem Oku
Seri.print(tempC);
Seri.print(", ");
Seri.print(nem);
Seri.print("\n"); // yeni hat gecikmesi için(2000); // Okumalar arasında duraklama. }
Sketch derlendikten sonra board ve port seçin ve yükleyin.
Adım 4: Raspberry Pi'yi Kurun
Kod yüklendikten sonra, Arduino Uno'dan seri olarak gelen verilerin grafiğini çizebilmemiz için bazı kütüphaneler kurun.
1. PySerial, çeşitli farklı aygıtlar üzerinden seri bağlantı desteği sağlayan bir kitaplıktır. Yüklemek için komutunu kullanın.
Sudo apt-get install python-serial
2. Numpy, çok boyutlu bir dizi nesnesini ve üzerinde çalışan ilişkili hızlı matematik işlevlerini tanımlayan bir pakettir. Ayrıca lineer cebir ve FFT (Hızlı Fourier Dönüşümü) ve karmaşık rastgele sayı üretimi için basit rutinler sağlar. Apt paketi veya pip kullanarak birçok şekilde kurabilirsiniz. Burada pip kullanarak kurulum yapıyorum, bunun için önce pip kurmamız gerekiyor
sudo apt-get install python-pip python-dev build-essential
sudo pip kurulumu numpy
ya da apt paketini kullanmak istiyorsanız
sudo apt yükleme python-numpy
3. Matplotlib, çizimleri Tkinter, wxPython, Qt veya GTK+ gibi genel amaçlı GUI araç takımlarını kullanan uygulamalara yerleştirmek için nesne yönelimli bir API sağlayan bir 2B çizim kitaplığıdır. Yüklemek için komutu kullanın
sudo pip kurulum matplotlib
veya
sudo apt yükleme python-matplotlib
4. Drawnow, MATLAB'da "imshow" kullandığımız için genellikle her yinelemeden sonra sonuçları görmek için kullanılır. Yüklemek için komutu kullanın
sudo pip kurulumu çizildi
Adım 5: Python Komut Dosyası
Sonraki adım, yazmak için herhangi bir düzenleyiciyi kullanabileceğiniz bir python betiği yazmaktır.
1. Verileri tek bir grafikte çizin
seriyi içe aktar # Seri Kitaplığını içe aktar
numpy'yi içe aktar # numpy'yi içe aktar
matplotlib.pyplot'u plt olarak içe aktar #import matplotlib library
Drawow import'dan *
tempC = #Boş dizi nem =
arduino = seri. Serial("/dev/ttyACM0", 115200)
plt.ion() # canlı veri sayısını çizmek için etkileşimli mod = 0
def makeFig(): #İstediğimiz grafiği oluşturan bir işlev oluşturun
plt.ylim(20, 30) #y min ve max değerlerini ayarla
plt.title('Gerçek Zamanlı DHT11 Verisi') #Başlığı çiz
plt.grid(True) #Izgarayı aç
plt.ylabel('Temp C') #ylabel'i ayarla
plt.plot(tempC, 'b^-', label='Derece C') #sıcaklığı çiz
plt.legend(loc='sağ üst') #efsaneyi çiz
plt2=plt.twinx() #İkinci bir y ekseni oluştur
plt.ylim(50, 70) #İkinci y ekseninin limitlerini ayarla
plt2.plot(nem, 'g*-', etiket='Nem') #plot basınç verileri
plt2.set_ylabel('Nem') #label ikinci y ekseni
plt2.ticklabel_format(useOffset=Yanlış)
plt2.legend(loc='sol üst')
while True: # Sonsuza kadar dönen while döngüsü
while (arduino.inWaiting()==0): #Veri gelene kadar burada bekle
geçmek #hiçbir şey yapma
arduinoString = arduino.readline()
dataArray = arduinoString.split(', ') #Bir diziye böl
temp = kayan nokta(dataArray[0])
hum = kayan nokta(dataArray[1])
tempC.append(temp)
nem.append(hum)
çizilmiş(makeFig)
plt.duraklat(.000001)
count=count+1 if(count>20): #yalnızca son 20 veriyi al, eğer veri daha fazlaysa ilk önce açılır
tempC.pop(0)
nem.pop(0)
2. Nem ve sıcaklığı ayrı ayrı çizmek için
seriyi içe aktar # Seri Kitaplığını içe aktar
numpy'yi içe aktar # numpy'yi içe aktar
matplotlib.pyplot'u plt olarak içe aktar #import matplotlib library
Drawow import'dan *
tempC = #Boş dizi
nem =
arduino = serial. Serial("/dev/ttyACM0", 115200) #Arduino'nun bağlı olduğu seri port ve Baudrate
plt.ion() #matplotlib'e canlı verileri çizmek için etkileşimli mod istediğinizi söyleyin
def CreatePlot(): #İstediğimiz grafiği oluşturan bir işlev oluşturun
plt.subplot(2, 1, 1) #Yükseklik, Genişlik, İlk arsa
plt.ylim(22, 34) #y min ve max değerlerini ayarla
plt.title('Gerçek Zamanlı DHT11 Verisi') #Başlığı çiz
plt.grid(True) #Izgarayı aç
plt.ylabel('Temp C') #Yılbelleri ayarla
plt.plot(tempC, 'b^-', label='Derece C') #sıcaklığı çiz
plt.legend(loc='üst merkez') #efsaneyi çiz
plt.subplot(2, 1, 2) # Yükseklik, Genişlik, İkinci arsa
plt.grid(Doğru)
plt.ylim(45, 70) #İkinci y ekseninin limitlerini ayarla
plt.plot(nem, 'g*-', label='Nem (g/m^3)') #plot nem verisi
plt.ylabel('Nem (g/m^3)') #label ikinci y ekseni
plt.ticklabel_format(useOffset=False) #y eksenini otomatik ölçeklendirmeyi durdurmak için
plt.legend(loc='üst merkez')
while True: # Sonsuza kadar dönen while döngüsü
while (arduino.inWaiting()==0): #Veri geçişi gelene kadar burada bekle #hiçbir şey yapma
arduinoString = arduino.readline() #seri porttan verileri oku
dataArray = arduinoString.split(', ') #Bir diziye böl
temp = float(dataArray[0]) #İlk öğeyi kayan sayıya dönüştür ve temp olarak koy
hum = float(dataArray[1]) #İkinci öğeyi kayan sayıya dönüştür ve uğultuya koy
tempC.append(temp) #Geçici okuma ekleyerek tempC dizimizi oluşturun
nem.append(hum) #hum okumasını ekleyerek nem dizimizi oluşturma
drawow(CreatePlot)
plt.duraklat(.000001)
say=say+1
if(count>20): #yalnızca son 20 veriyi al, eğer veri daha fazlaysa ilk önce açılır
tempC.pop(0) # ilk öğeyi çıkar
nem.pop(0)
Adım 6: Devre Şeması
Arduino ==> DHT11
3.3V ==> VCC
GND ==> GND
D7 ==> ÇIKIŞ
Önerilen:
(IOT Projesi) ESP8266 ve Openweather API'sini Kullanarak Hava Durumu Verilerini Alın: 5 Adım
(IOT Projesi) ESP8266 ve Openweather API'sini Kullanarak Hava Durumu Verilerini Alın: Bu talimatta, şehrimizin hava durumu verilerini openweather.com/api'den alıp İşleme yazılımını kullanarak görüntüleyen basit bir IOT projesi oluşturacağız
MSP432 LaunchPad ve Python Kullanarak Bir Sıcaklık Sensörünün (TMP006) Canlı Verilerini Çizme: 9 Adım
MSP432 LaunchPad ve Python Kullanarak Bir Sıcaklık Sensörünün (TMP006) Canlı Verilerinin Çizilmesi: TMP006, bir nesnenin sıcaklığını nesneyle temas etmeye gerek kalmadan ölçen bir sıcaklık sensörüdür. Bu eğitimde Python kullanarak BoosterPack'ten (TI BOOSTXL-EDUMKII) canlı sıcaklık verilerini çizeceğiz
IoT: Node-RED Kullanarak Işık Sensörü Verilerini Görselleştirme: 7 Adım
IoT: Node-RED Kullanarak Işık Sensörü Verilerini Görselleştirme: Bu talimatta, internete bağlı bir sensörün nasıl oluşturulacağını öğreneceksiniz! Bu demo için bir ortam ışığı sensörü (TI OPT3001) kullanacağım, ancak seçtiğiniz herhangi bir sensör (sıcaklık, nem, potansiyometre vb.) işe yarayacaktır. Sensör değerleri
Uçuş Haritalama Verilerini Kullanarak Erken Uyarı Raspberry PI Pist Işığı: 14 Adım (Resimlerle)
Uçuş Haritalama Verilerini Kullanan Erken Uyarı Raspberry PI Pist Işığı: Bu lamba, her zaman tepeden uçan uçaklarla ilgilendiğim için birkaç nedenden dolayı ortaya çıktı ve yaz aylarında hafta sonları genellikle etrafta uçan oldukça heyecan verici uçaklar var. Onları yalnızca ilerledikçe duyma eğiliminde olsanız da
Arduino Sensör Verilerini İşleme Kullanarak MYsql'e Kaydetme: 6 Adım
Arduino Sensör Verilerini İşleme Kullanarak MYsql'e Kaydetme: Dürüst olmak gerekirse, Arduino verilerini doğrudan MySQL'e depolamak zordur, böylece Arduino IDE bağımlılığında Arduino IDE'ye benzer, ancak birçok farklı kullanıma sahip olan İşleme IDE'sini kullandım ve kodlayabilirsiniz. java.Not:Arduino seri monitörünü çalıştırmayın