Termometer Tanpa Wayar Menggunakan Pautan RF 433 MHz Menggunakan Arduino

Cuba Instrumen Kami Untuk Menghapuskan Masalah





Dalam posting ini kita akan membina termometer tanpa wayar berasaskan Arduino yang dapat memantau suhu bilik dan suhu persekitaran luaran. Data dihantar dan diterima melalui pautan RF 433 MHz.

Menggunakan Modul RF 433MHz dan Sensor DHT11

Projek yang dicadangkan menggunakan Arduino sebagai otak dan jantung sebagai Modul pemancar / penerima 433 MHz .



Projek ini terbahagi kepada dua rangkaian yang terpisah, satu dengan penerima 433 MHz, paparan LCD dan sensor DHT11 yang akan ditempatkan di dalam bilik dan juga mengukur suhu bilik .

Litar lain mempunyai pemancar 433MHz, Sensor DHT11 untuk mengukur suhu persekitaran luar. Kedua-dua litar mempunyai satu arduino masing-masing.



Litar yang diletakkan di dalam bilik akan memaparkan bacaan suhu dalaman dan luaran pada LCD.

Sekarang mari kita lihat modul pemancar / penerima 433 MHz.

Modul pemancar / penerima 433 MHz.

Modul pemancar dan penerima ditunjukkan di atas ia mampu komunikasi simplex (sehala). Penerima mempunyai 4 pin Vcc, GND dan DATA pin. Terdapat dua pin DATA, ia sama dan kami dapat mengeluarkan data dari kedua-dua pin tersebut.

Pemancar jauh lebih sederhana kerana hanya mempunyai pin input Vcc, GND dan DATA. Kita harus menyambungkan antena ke kedua modul yang dijelaskan pada akhir artikel, tanpa komunikasi antena antara mereka tidak akan terjalin melebihi beberapa inci.

Sekarang mari kita lihat bagaimana modul ini berkomunikasi.

Sekarang anggap kita menggunakan nadi jam 100Hz ke pin input data pemancar. Penerima akan menerima replika isyarat tepat pada pin data penerima.

Itu mudah bukan? Ya ... tetapi modul ini berfungsi pada AM dan mudah terdengar. Dari pemerhatian pengarang sekiranya pin data pemancar dibiarkan tanpa sebarang isyarat selama lebih dari 250 milisaat, pin output data penerima menghasilkan isyarat rawak.

Jadi, ia hanya sesuai untuk penghantaran data yang tidak kritikal. Walau bagaimanapun projek ini berfungsi dengan baik dengan modul ini.

Sekarang mari kita beralih ke skema.

PENERIMA:


sambungan paparan arduino ke LCD. Potensiometer 10K

Litar di atas adalah sambungan paparan arduino ke LCD. Potensiometer 10K disediakan untuk menyesuaikan kontras paparan LCD.

Termometer Tanpa Wayar Menggunakan Pautan RF 433 MHz dan Arduino

Di atas adalah litar penerima. Paparan LCD harus disambungkan ke arduino ini.

Sila muat turun fail perpustakaan berikut sebelum menyusun kod

Ketua Radio: github.com/PaulStoffregen/RadioHead

Perpustakaan 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 Tanpa Wayar

Di atas adalah skema untuk Pemancar, yang cukup sederhana sebagai penerima. Di sini kita menggunakan papan arduino yang lain. Sensor DHT11 akan merasakan suhu luar dan menghantar kembali ke modul penerima.

Jarak antara pemancar dan penerima tidak boleh lebih dari 10 meter. Sekiranya ada rintangan di antara mereka, jarak transmisi dapat dikurangkan.

Program untuk Pemancar:

//------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----//

Pembinaan Antena:

Sekiranya anda membina projek menggunakan ini Modul 433 MHz , ikuti perincian pembinaan di bawah dengan ketat untuk jangkauan yang baik.

Antena RF 433 MHz

Gunakan wayar teras tunggal yang harus cukup kukuh untuk menyokong struktur ini. Anda juga boleh menggunakan wayar tembaga bertebat dengan penebat dikeluarkan di bahagian bawah untuk penyambungan pateri. Buat dua daripadanya, satu untuk pemancar dan satu lagi untuk penerima.

Prototaip Termometer Tanpa Wayar Pengarang menggunakan Arduino dan 433 MHz RF Link:

Prototaip Termometer Tanpa Wayar Menggunakan Pautan RF 433 MHz dan Arduino


Sebelumnya: Pemeriksaan Anti-Korosi untuk Pengawal Aras Air Seterusnya: L293 Quad Half-H Driver Pinout IC, Lembar Data, Litar Aplikasi