Wireless Thermometer Gamit ang 433 MHz RF Link Paggamit ng Arduino

Subukan Ang Aming Instrumento Para Sa Pagtanggal Ng Mga Problema





Sa post na ito magtatayo kami ng isang Arduino batay sa wireless thermometer na maaaring subaybayan ang temperatura ng kuwarto at panlabas na temperatura ng paligid. Ang data ay naipadala at natanggap sa pamamagitan ng 433 MHz RF link.

Gamit ang 433MHz RF Module at DHT11 Sensor

Ang iminungkahing proyekto ay gumagamit ng Arduino bilang utak at puso bilang 433 MHz transmitter / module ng tatanggap .



Ang proyekto ay nahahati sa dalawang magkakahiwalay na mga circuit, ang isa na may 433 MHz receiver, LCD display at DHT11 sensor na ilalagay sa loob ng silid at din sumusukat sa temperatura ng kuwarto .

Ang isa pang circuit ay may 433MHz transmitter, Sensor ng DHT11 para sa pagsukat sa labas ng temperatura ng paligid. Parehong may circuit ang bawat circuit ng bawat isa.



Ang circuit na nakalagay sa loob ng silid ay magpapakita ng panloob at panlabas na pagbabasa ng temperatura sa LCD.

Tingnan natin ngayon ang module ng 433 MHz transmitter / receiver.

433 MHz transmitter / module ng tatanggap.

Ang mga modyul ng transmiter at receiver ay ipinapakita sa itaas na may kakayahang simplex na komunikasyon (isang paraan). Ang tatanggap ay may 4 na mga pin ng Vcc, GND at DATA. Mayroong dalawang mga pin ng DATA, pareho ang mga ito at maaari naming i-output ang data mula sa alinman sa dalawang mga pin.

Ang transmiter ay mas simple mayroon itong Vcc, GND at DATA input pin. Kailangan naming ikonekta ang isang antena sa parehong mga module na inilalarawan sa pagtatapos ng artikulo, nang walang komunikasyon sa antena sa pagitan ng mga ito ay hindi maitatag nang lampas sa ilang pulgada.

Tingnan natin ngayon kung paano nakikipag-usap ang mga modyul na ito.

Ipagpalagay ngayon na naglalagay kami ng pulso ng orasan na 100Hz sa pin ng input ng data ng transmiter. Makakatanggap ang tatanggap ng eksaktong kopya ng signal sa pin ng data ng tatanggap.

Simple iyan di ba? Yeah ... ngunit ang modyul na ito ay gumagana sa AM at madaling kapitan ng ingay. Mula sa pagmamasid ng may-akda kung ang data pin ng transmiter ay natitira nang walang anumang signal para sa higit sa 250 milliseconds, ang pin ng output data ng tatanggap ay gumagawa ng mga random signal.

Kaya, angkop lamang ito para sa hindi kritikal na paghahatid ng data. Gayunpaman ang proyekto na ito ay gumagana nang mahusay sa modyul na ito.

Ngayon magpatuloy tayo sa mga iskema.

TANGGAP:


arduino sa koneksyon sa display ng LCD. 10K potensyomiter

Ang circuit sa itaas ay arduino sa koneksyon sa display ng LCD. 10K potentiometer ay ibinigay para sa pag-aayos ng kaibahan ng LCD display.

Wireless Thermometer Gamit ang 433 MHz RF Link at Arduino

Sa itaas ay ang circuit ng tatanggap. Ang LCD display ay dapat na konektado sa arduino na ito.

Mangyaring i-download ang mga sumusunod na file ng library bago isulat ang code

Head ng Radyo: github.com/PaulStoffregen/RadioHead

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

Programa para sa Tagatanggap:

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

Transmitter:

Transmitter ng Wireless Thermometer

Sa itaas ay ang eskematiko para sa Transmitter, na kung saan ay medyo simple bilang tatanggap. Narito gumagamit kami ng isa pang arduino board. Ang sensor ng DHT11 ay makakaramdam sa labas ng temperatura ng paligid at ibabalik sa module ng tatanggap.

Ang distansya sa pagitan ng transmitter at receiver ay hindi dapat higit sa 10 meter. Kung mayroong anumang mga hadlang sa pagitan nila, maaaring mabawasan ang saklaw ng paghahatid.

Programa para sa 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----//

Pagtatayo ng Antenna:

Kung nagtatayo ka ng mga proyekto gamit ito 433 MHz module , sundin ang mga detalye sa ibaba ng pagpapatakbo nang mahigpit para sa mahusay na saklaw.

433 MHz RF antena

Gumamit ng isang solong core wire na kung saan dapat ay sapat na matibay upang suportahan ang istrakturang ito. Maaari mo ring gamitin ang insulated wire na tanso na may pagkakabukod na tinanggal sa ibaba para sa pagsali ng solder. Gumawa ng dalawa sa mga ito, isa para sa transmiter at isa pa para sa tatanggap.

Ang may-akda ng Wireless Thermometer Prototype na gumagamit ng Arduino at 433 MHz RF Link:

Prototype ng Wireless Thermometer Gamit ang 433 MHz RF Link at Arduino


Nakaraan: Mga probe na Anti-Corrosion para sa Controller ng Antas ng Tubig Susunod: L293 Quad Half-H Driver IC Pinout, Datasheet, Application Circuit