Daftar Isi:

Plot Data DHT11 Menggunakan Raspberry Pi dan Arduino UNO: 7 Langkah
Plot Data DHT11 Menggunakan Raspberry Pi dan Arduino UNO: 7 Langkah

Video: Plot Data DHT11 Menggunakan Raspberry Pi dan Arduino UNO: 7 Langkah

Video: Plot Data DHT11 Menggunakan Raspberry Pi dan Arduino UNO: 7 Langkah
Video: TUTORIAL IOT - Menghubungkan Raspberry dengan DHT11 Versi Lengkap 2024, November
Anonim
Plot Data DHT11 Menggunakan Raspberry Pi dan Arduino UNO
Plot Data DHT11 Menggunakan Raspberry Pi dan Arduino UNO

Instruksi ini menjelaskan bagaimana saya memplot data sensor suhu DHT11 menggunakan Arduino Uno dan Raspberry Pi. Pada sensor suhu ini dihubungkan dengan Arduino Uno dan Arduino Uno dihubungkan secara serial dengan Raspberry Pi. Di Raspberry Pi Side, pustaka matplotlib, numpy dan drawow digunakan untuk memplot grafik.

Langkah 1: Hal-hal yang Dibutuhkan untuk Proyek

Hal-hal yang Dibutuhkan untuk Proyek
Hal-hal yang Dibutuhkan untuk Proyek
Hal-hal yang Dibutuhkan untuk Proyek
Hal-hal yang Dibutuhkan untuk Proyek
Hal-hal yang Dibutuhkan untuk Proyek
Hal-hal yang Dibutuhkan untuk Proyek

1. Raspberry Pi

2. Arduino Uno

3. Sensor Suhu DHT11

4. Kabel Jumper

5. Papan tempat memotong roti

Langkah 2: Unduh dan Instal Arduino IDE di Raspberry Pi

Unduh dan Instal Arduino IDE di Raspberry Pi
Unduh dan Instal Arduino IDE di Raspberry Pi
Unduh dan Instal Arduino IDE di Raspberry Pi
Unduh dan Instal Arduino IDE di Raspberry Pi
Unduh dan Instal Arduino IDE di Raspberry Pi
Unduh dan Instal Arduino IDE di Raspberry Pi

Catatan: - Anda dapat menggunakan Arduino IDE dari windows, Linux atau Mac untuk mengunggah sketsa di Arduino UNO.

Langkah pertama adalah menginstal Arduino IDE untuk browser yang terbuka di Raspberry Pi dan buka tautan yang diberikan di bawah ini

Arduino IDE Sebelumnya

Kemudian unduh versi ARM Linux dan ekstrak menggunakan perintah

tar -xf nama file

Setelah mengekstrak Anda akan melihat direktori baru. Disini saya menggunakan arduino-1.8.2 IDE. Kemudian masuk ke direktori dengan menggunakan perintah.

cd arduino-1.8.1

Untuk menjalankan Arduino IDE, gunakan perintah ini di direktori arduino-1.8.2

./arduino

Cara menggunakan perpustakaan

Untuk menginstal library apapun di Arduino, cukup download library dan paste di folder arduino 1.8.2 ==> libraries.

CATATAN: - Pastikan tidak ada (-) di folder perpustakaan untuk ex (DHT-sensor). Jika ada (-), ganti namanya.

kami akan menggunakan dua perpustakaan dalam instruksi ini, DHT_Sensor dan Adafruit_Sensor

Langkah 3: Kode untuk Arduino

Kode untuk Arduino
Kode untuk Arduino

Sekarang, mari kita python dan Arduino berbicara bersama. Pertama kita membutuhkan program sederhana untuk mendapatkan Arduino mengirimkan data melalui port serial. Program berikut adalah program sederhana yang akan menghitung Arduino dan mengirim data ke port serial.

Kode Arduino

#include "DHT.h" float tempC; // Variabel atau holding temp di C float tempF; // Variabel untuk menahan suhu dalam kelembaban float F; //Variabel untuk menahan pembacaan tekanan

#define DHTPIN 7 // pin digital yang kita sambungkan

#define DHTTYPE DHT11 // DHT 11

//#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321

//#define DHTTYPE DHT21 // DHT 21 (AM2301)

// Inisialisasi sensor DHT.

DHT dht(DHTPIN, DHTTYPE);

void setup(){Serial.begin(115200); //nyalakan monitor serial

dht.mulai(); //inisialisasi dht }

void loop() {tempC = dht.readTemperature(); // Pastikan untuk mendeklarasikan variabel Anda

kelembaban = dht.readHumidity(); // Baca Kelembaban

Serial.print(tempC);

Serial.print(", ");

Serial.print(kelembaban);

Serial.print("\n"); // untuk penundaan baris baru(2000); // Jeda di antara pembacaan. }

Setelah sketsa dikompilasi, pilih papan dan port dan unggah.

Langkah 4: Siapkan Raspberry Pi

Siapkan Raspberry Pi
Siapkan Raspberry Pi

Setelah kode diunggah, Instal beberapa pustaka sehingga kita dapat memplot grafik data yang datang secara serial dari Arduino Uno.

1. PySerial adalah perpustakaan yang menyediakan dukungan untuk koneksi serial melalui berbagai perangkat yang berbeda. Untuk menginstalnya gunakan perintah.

Sudo apt-get install python-serial

2. Numpy adalah paket yang mendefinisikan objek array multi-dimensi dan fungsi matematika cepat terkait yang beroperasi di atasnya. Ini juga menyediakan rutinitas sederhana untuk aljabar linier dan FFT (Fast Fourier Transform) dan pembuatan angka acak yang canggih. Anda dapat menginstalnya dengan banyak cara baik menggunakan paket apt atau pip. Disini saya menginstall menggunakan pip untuk itu pertama kita harus menginstall pip

sudo apt-get install python-pip python-dev build-essential

sudo pip install numpy

atau jika Anda ingin menggunakan paket apt

sudo apt install python-numpy

3. Matplotlib adalah pustaka plot 2D yang menyediakan API berorientasi objek untuk menyematkan plot ke dalam aplikasi menggunakan toolkit GUI tujuan umum seperti Tkinter, wxPython, Qt, atau GTK+. Untuk menginstalnya gunakan perintah

sudo pip instal matplotlib

atau

sudo apt install python-matplotlib

4. Drawnow umumnya digunakan untuk melihat hasil setelah setiap iterasi seperti yang kita gunakan "imshow" di MATLAB. Untuk menginstalnya gunakan perintah

sudo pip install drawow

Langkah 5: Python Scipt

Python Scipt
Python Scipt
Python Scipt
Python Scipt

Langkah selanjutnya adalah menulis skrip python untuk itu Anda dapat menggunakan editor apa pun untuk menulisnya.

1. Plot data dalam satu grafik

impor serial # impor Perpustakaan Serial

impor numpy # Impor numpy

impor matplotlib.pyplot sebagai plt #import matplotlib library

dari impor yang ditarik *

tempC = #Empty arrayhumidity =

arduino = serial. Serial("/dev/ttyACM0", 115200)

plt.ion() # mode interaktif untuk memplot jumlah data langsung = 0

def makeFig(): #Buat fungsi yang membuat plot yang kita inginkan

plt.ylim(20, 30) #Tetapkan nilai y min dan maks

plt.title('Data DHT11 Waktu Nyata') #Plot judulnya

plt.grid(True) #Nyalakan grid

plt.ylabel('Temp C') #Set ylabel

plt.plot(tempC, 'b^-', label='Degree C') #plot suhu

plt.legend(loc='atas kanan') #plot legenda

plt2=plt.twinx() #Buat sumbu y kedua

plt.ylim(50, 70) #Tetapkan batas sumbu y kedua

plt2.plot(kelembaban, 'g*-', label='Humidity') #plot data tekanan

plt2.set_ylabel('Humidity') #label kedua sumbu y

plt2.ticklabel_format(useOffset=False)

plt2.legend(loc='kiri atas')

while Benar: # Perulangan while yang berulang selamanya

while (arduino.inWaiting()==0): #Tunggu disini sampai ada data

lulus #tidak melakukan apa-apa

arduinoString = arduino.readline()

dataArray = arduinoString.split(', ') #Pisahkan menjadi array

suhu = float(dataArray[0])

hum = float(dataArray[1])

tempC.tambahkan(temp)

kelembaban. tambahkan(hum)

ditarik (makeGbr)

plt.jeda(.000001)

count=count+1 if(count>20): #hanya ambil 20 data terakhir jika data lebih akan muncul lebih dulu

tempC.pop(0)

kelembaban.pop(0)

2. Untuk memplot kelembaban dan suhu secara terpisah

impor serial # impor Perpustakaan Serial

impor numpy # Impor numpy

impor matplotlib.pyplot sebagai plt #import matplotlib library

dari impor yang ditarik *

tempC = #Array kosong

kelembaban =

arduino = serial. Serial("/dev/ttyACM0", 115200) #Serial port tempat arduino terhubung dan Baudrate

plt.ion() #Beri tahu matplotlib bahwa Anda ingin mode interaktif untuk memplot data langsung

def CreatePlot(): #Buat fungsi yang membuat plot yang kita inginkan

plt.subplot(2, 1, 1) #Tinggi, Lebar, Plot pertama

plt.ylim(22, 34) #Tetapkan nilai y min dan maks

plt.title('Data DHT11 Waktu Nyata') #Plot judulnya

plt.grid(True) #Nyalakan grid

plt.ylabel('Temp C') #Set ylabels

plt.plot(tempC, 'b^-', label='Degree C') #plot suhu

plt.legend(loc='upper center') #plot sang legenda

plt.subplot(2, 1, 2) # Tinggi, Lebar, Plot Kedua

plt.grid(Benar)

plt.ylim(45, 70) #Tetapkan batas sumbu y kedua

plt.plot(kelembaban, 'g*-', label='Humidity (g/m^3)') #plot data kelembapan

plt.ylabel('Humidity (g/m^3)') #label kedua sumbu y

plt.ticklabel_format(useOffset=False) #untuk menghentikan skala otomatis sumbu y

plt.legend(loc='tengah atas')

while Benar: # Perulangan while yang berulang selamanya

while (arduino.inWaiting()==0): #Tunggu disini sampai ada data pass #do nothing

arduinoString = arduino.readline() #membaca data dari port serial

dataArray = arduinoString.split(', ') #Pisahkan menjadi array

temp = float(dataArray[0]) #Konversi elemen pertama ke angka mengambang dan masukkan temp

hum = float(dataArray[1]) #Konversi elemen kedua ke angka mengambang dan masukkan hum

tempC.append(temp) #Bangun array tempC kami dengan menambahkan pembacaan temp

kelembaban.append(hum) #Membangun susunan kelembaban kami dengan menambahkan pembacaan hum

drawow(Buat Plot)

plt.jeda(.000001)

hitung=hitung+1

if(count>20): #hanya ambil 20 data terakhir jika data lebih akan muncul lebih dulu

tempC.pop(0) # keluarkan elemen pertama

kelembaban.pop(0)

Langkah 6: Diagram Sirkuit

Diagram Sirkuit
Diagram Sirkuit
Diagram Sirkuit
Diagram Sirkuit
Diagram Sirkuit
Diagram Sirkuit

Arduino ==> DHT11

3.3V ==> VCC

GND ==> GND

D7 ==> KELUAR

Direkomendasikan: