Wireless Thermometer Menggunakan RF Link 433 MHz Menggunakan Arduino

Coba Instrumen Kami Untuk Menghilangkan Masalah





Dalam posting ini kita akan membuat termometer nirkabel berbasis Arduino yang dapat memantau suhu ruangan dan suhu lingkungan eksternal. Data dikirim dan diterima melalui tautan RF 433 MHz.

Menggunakan Modul RF 433MHz dan Sensor DHT11

Proyek yang diusulkan memanfaatkan Arduino sebagai otak dan hati sebagai Modul pemancar / penerima 433 MHz .



Proyek ini dibagi menjadi dua sirkuit terpisah, satu dengan penerima 433 MHz, layar LCD dan sensor DHT11 yang akan ditempatkan di dalam ruangan dan juga mengukur suhu ruangan .

Sirkuit lain memiliki pemancar 433MHz, Sensor DHT11 untuk mengukur suhu lingkungan luar. Kedua sirkuit tersebut masing-masing memiliki satu arduino.



Sirkuit yang ditempatkan di dalam ruangan akan menampilkan pembacaan suhu internal dan eksternal pada LCD.

Sekarang mari kita lihat modul pemancar / penerima 433 MHz.

Modul pemancar / penerima 433 MHz.

Modul pemancar dan penerima yang ditunjukkan di atas mampu melakukan komunikasi simpleks (satu arah). Penerima memiliki 4 pin Vcc, GND dan DATA pin. Ada dua pin DATA, keduanya sama dan kami dapat mengeluarkan data dari salah satu dari dua pin.

Pemancar jauh lebih sederhana karena hanya memiliki pin input Vcc, GND dan DATA. Kami harus menghubungkan antena ke kedua modul yang dijelaskan di akhir artikel, tanpa komunikasi antena di antara mereka tidak akan terjalin lebih dari beberapa inci.

Sekarang mari kita lihat bagaimana modul ini berkomunikasi.

Sekarang asumsikan kita menerapkan pulsa clock 100Hz ke pin input data pemancar. Penerima akan menerima replika yang tepat dari sinyal di pin data penerima.

Sederhana kan? Ya… tapi modul ini bekerja pada AM dan rentan terhadap noise. Dari pengamatan penulis jika pin data pemancar dibiarkan tanpa sinyal selama lebih dari 250 milidetik, maka pin keluaran data penerima menghasilkan sinyal acak.

Jadi, ini hanya cocok untuk transmisi data non-kritis. Namun proyek ini bekerja sangat baik dengan modul ini.

Sekarang mari beralih ke skema.

PENERIMA:


Arduino ke koneksi layar LCD. Potensiometer 10K

Rangkaian di atas adalah koneksi arduino ke layar LCD. Potensiometer 10K disediakan untuk mengatur kontras layar LCD.

Wireless Thermometer Menggunakan RF Link 433 MHz dan Arduino

Di atas adalah rangkaian penerima. Layar LCD harus terhubung ke arduino ini.

Silakan unduh file perpustakaan berikut sebelum menyusun kode

Kepala Radio: github.com/PaulStoffregen/RadioHead

Pustaka sensor DHT: https://arduino-info.wikispaces.com/file/detail/DHT-lib.zip

Program untuk Penerima:

//--------Program Developed by R.Girish-----//
#include
#include
#include
#include
#define DHTxxPIN A0
LiquidCrystal lcd(12,11,5,4,3,2)
RH_ASK driver(2000, 7, 9, 10)
int ack = 0
dht DHT
void setup()
{
Serial.begin(9600)
lcd.begin(16,2)
if (!driver.init())
Serial.println('init failed')
}
void loop()
{
ack = 0
int chk = DHT.read11(DHTxxPIN)
switch (chk)
{
case DHTLIB_ERROR_CONNECT:
ack = 1
lcd.setCursor(0,0)
lcd.print('INSIDE:')
lcd.print('NO DATA')
delay(1000)
break
}
if(ack == 0)
{
lcd.setCursor(0,0)
lcd.print('INSIDE:')
lcd.print(DHT.temperature)
lcd.print(' C')
delay(2000)
}
uint8_t buf[RH_ASK_MAX_MESSAGE_LEN]
uint8_t buflen = sizeof(buf)
if (driver.recv(buf, &buflen))
{
int i
String str = ''
for(i = 0 i {
str += (char)buf[i]
}
lcd.setCursor(0,1)
lcd.print('OUTSIDE:')
lcd.print(str)
Serial.println(str)
delay(2000)
}
}
//--------Program Developed by R.Girish-----//

Pemancar:

Pemancar Termometer Nirkabel

Di atas adalah skema untuk Transmitter, yang cukup sederhana sebagai penerima. Di sini kami menggunakan papan arduino lain. Sensor DHT11 akan merasakan suhu lingkungan luar dan mengirim kembali ke modul penerima.

Jarak antara pemancar dan penerima tidak boleh lebih dari 10 meter. Jika ada hambatan di antara keduanya, jangkauan transmisi mungkin berkurang.

Program untuk Transmitter:

//------Program Developed by R.Girish----//
#include
#include
#define DHTxxPIN A0
#include
int ack = 0
RH_ASK driver(2000, 9, 2, 10)
dht DHT
void setup()
{
Serial.begin(9600)
if (!driver.init())
Serial.println('init failed')
}
void loop()
{
ack = 0
int chk = DHT.read11(DHTxxPIN)
switch (chk)
{
case DHTLIB_ERROR_CONNECT:
ack = 1
const char *temp = 'NO DATA'
driver.send((uint8_t *)temp, strlen(temp))
driver.waitPacketSent()
break
}
if(ack == 0)
{
if(DHT.temperature == 15)
{
const char *temp = '15.00 C'
driver.send((uint8_t *)temp, strlen(temp))
driver.waitPacketSent()
}
if(DHT.temperature == 16)
{
const char *temp = '16.00 C'
driver.send((uint8_t *)temp, strlen(temp))
driver.waitPacketSent()
}
if(DHT.temperature == 17)
{
const char *temp = '17.00 C'
driver.send((uint8_t *)temp, strlen(temp))
driver.waitPacketSent()
}
if(DHT.temperature == 18)
{
const char *temp = '18.00 C'
driver.send((uint8_t *)temp, strlen(temp))
driver.waitPacketSent()
}
if(DHT.temperature == 19)
{
const char *temp = '19.00 C'
driver.send((uint8_t *)temp, strlen(temp))
driver.waitPacketSent()
}
if(DHT.temperature == 20)
{
const char *temp = '20.00 C'
driver.send((uint8_t *)temp, strlen(temp))
driver.waitPacketSent()
}
if(DHT.temperature == 21)
{
const char *temp = '21.00 C'
driver.send((uint8_t *)temp, strlen(temp))
driver.waitPacketSent()
}
if(DHT.temperature == 22)
{
const char *temp = '22.00 C'
driver.send((uint8_t *)temp, strlen(temp))
driver.waitPacketSent()
}
if(DHT.temperature == 23)
{
const char *temp = '23.00 C'
driver.send((uint8_t *)temp, strlen(temp))
driver.waitPacketSent()
}
if(DHT.temperature == 24)
{
const char *temp = '24.00 C'
driver.send((uint8_t *)temp, strlen(temp))
driver.waitPacketSent()
}
if(DHT.temperature == 25)
{
const char *temp = '25.00 C'
driver.send((uint8_t *)temp, strlen(temp))
driver.waitPacketSent()
}
if(DHT.temperature == 26)
{
const char *temp = '26.00 C'
driver.send((uint8_t *)temp, strlen(temp))
driver.waitPacketSent()
}
if(DHT.temperature == 27)
{
const char *temp = '27.00 C'
driver.send((uint8_t *)temp, strlen(temp))
driver.waitPacketSent()
}
if(DHT.temperature == 28)
{
const char *temp = '28.00 C'
driver.send((uint8_t *)temp, strlen(temp))
driver.waitPacketSent()
}
if(DHT.temperature == 29)
{
const char *temp = '29.00 C'
driver.send((uint8_t *)temp, strlen(temp))
driver.waitPacketSent()
}
if(DHT.temperature == 30)
{
const char *temp = '30.00 C'
driver.send((uint8_t *)temp, strlen(temp))
driver.waitPacketSent()
}
if(DHT.temperature == 31)
{
const char *temp = '31.00 C'
driver.send((uint8_t *)temp, strlen(temp))
driver.waitPacketSent()
}
if(DHT.temperature == 32)
{
const char *temp = '32.00 C'
driver.send((uint8_t *)temp, strlen(temp))
driver.waitPacketSent()
}
if(DHT.temperature == 33)
{
const char *temp = '33.00 C'
driver.send((uint8_t *)temp, strlen(temp))
driver.waitPacketSent()
}
if(DHT.temperature == 34)
{
const char *temp = '34.00 C'
driver.send((uint8_t *)temp, strlen(temp))
driver.waitPacketSent()
}
if(DHT.temperature == 35)
{
const char *temp = '35.00 C'
driver.send((uint8_t *)temp, strlen(temp))
driver.waitPacketSent()
}
if(DHT.temperature == 36)
{
const char *temp = '36.00 C'
driver.send((uint8_t *)temp, strlen(temp))
driver.waitPacketSent()
}
if(DHT.temperature == 37)
{
const char *temp = '37.00 C'
driver.send((uint8_t *)temp, strlen(temp))
driver.waitPacketSent()
}
if(DHT.temperature == 38)
{
const char *temp = '38.00 C'
driver.send((uint8_t *)temp, strlen(temp))
driver.waitPacketSent()
}
if(DHT.temperature == 39)
{
const char *temp = '39.00 C'
driver.send((uint8_t *)temp, strlen(temp))
driver.waitPacketSent()
}
if(DHT.temperature == 40)
{
const char *temp = '40.00 C'
driver.send((uint8_t *)temp, strlen(temp))
driver.waitPacketSent()
}
if(DHT.temperature == 41)
{
const char *temp = '41.00 C'
driver.send((uint8_t *)temp, strlen(temp))
driver.waitPacketSent()
}
if(DHT.temperature == 42)
{
const char *temp = '42.00 C'
driver.send((uint8_t *)temp, strlen(temp))
driver.waitPacketSent()
}
if(DHT.temperature == 43)
{
const char *temp = '43.00 C'
driver.send((uint8_t *)temp, strlen(temp))
driver.waitPacketSent()
}
if(DHT.temperature == 44)
{
const char *temp = '44.00 C'
driver.send((uint8_t *)temp, strlen(temp))
driver.waitPacketSent()
}
delay(500)
if(DHT.temperature == 45)
{
const char *temp = '45.00 C'
driver.send((uint8_t *)temp, strlen(temp))
driver.waitPacketSent()
}
if(DHT.temperature == 46)
{
const char *temp = '46.00 C'
driver.send((uint8_t *)temp, strlen(temp))
driver.waitPacketSent()
}
if(DHT.temperature == 47)
{
const char *temp = '47.00 C'
driver.send((uint8_t *)temp, strlen(temp))
driver.waitPacketSent()
}
if(DHT.temperature == 48)
{
const char *temp = '48.00 C'
driver.send((uint8_t *)temp, strlen(temp))
driver.waitPacketSent()
}
if(DHT.temperature == 49)
{
const char *temp = '49.00 C'
driver.send((uint8_t *)temp, strlen(temp))
driver.waitPacketSent()
}
if(DHT.temperature == 50)
{
const char *temp = '50.00 C'
driver.send((uint8_t *)temp, strlen(temp))
driver.waitPacketSent()
}
delay(500)
}
}
//------Program Developed by R.Girish----//

Konstruksi Antena:

Jika Anda sedang membangun proyek menggunakan ini Modul 433 MHz , ikuti detail konstruksi di bawah ini secara ketat untuk jangkauan yang baik.

Antena RF 433 MHz

Gunakan kabel inti tunggal yang harus cukup kokoh untuk menopang struktur ini. Anda juga dapat menggunakan kawat tembaga berinsulasi dengan insulasi dilepas di bagian bawah untuk sambungan solder. Buat dua ini, satu untuk pemancar dan satu lagi untuk penerima.

Prototipe Termometer Nirkabel Penulis menggunakan Arduino dan Tautan RF 433 MHz:

Prototipe Thermometer Nirkabel Menggunakan RF Link 433 MHz dan Arduino


Sepasang: Probe Anti Korosi untuk Pengontrol Level Air Berikutnya: Pinout IC Driver L293 Quad Half-H, Lembar Data, Sirkuit Aplikasi