پروژه ی ساخت دماسنج بی سیم با استفاده از رابط رادیویی 433 مگا هرتزی و آردوینو
به نام خدا
پروژه ی ساخت دماسنج بی سیم با استفاده از رابط رادیویی 433 مگا هرتزی و آردوینو

در این پروژه قصد داریم تا یک دما سنج بی سیم با استفاده از آردوینو بسازیم که هم دمای درون اطاق و هم دمای بیرون از اطاق را اندازه گیری کند. سپس داده های گفته شده در کانالی 433 مگا هرتزی ارسال و دریافت می شود.
استفاده از ماژول 433 مگا هرتزی RF و سنسور DHT11
این پروژه به دوبخش تقسیم شده است. یکی مداری با دریافت کننده ی 433 مگا هرتزی ، ال سی دی جهت نمایش و یکی از سنسور های DTH11 که درون اطاق جهت اندازه گیری دمای اطاق می باشد. قسمت بعدی این مدار یک فرستنده ی 433 مگا هرتزی و یک سنسور دیگر DHT11 دارد که در خارج از اطاق قرار می گیرد تا دمای بیرونی را محاسبه کند.

در تصویر بالا ماژول های گیرنده و گیرنده نمایشه داده شده است. گیرنده 4 پین دارد که به ترتیب Vcc و GNDو پین های داده می باشد. فرستنده ساده تر است و سه پین Vcc و GND و داده را دارد. برای ارتباط بین این دو ماژول باید از یک آنتن استفاده شود که در انتهای بحث به ساخت آن اشاره شده است.
شماتیک مدار گیرنده:

در تصویر بالا شماتیک اتصالات مدار آردوینو و ال سی دی را مشاهده می کنید. از پتانسیومتر 10 کیلویی برای تنظیم کنتراست ال سی دی استفاده شده است.

برای کامپایل کردن داده ها باید کتابخانه های زیر را دانلود کنید.
Radio Head :
[maxbutton id=”243″ url=”https://github.com/PaulStoffregen/RadioHead/archive/master.zip” ]
DHT sensor library :
[maxbutton id=”244″ url=”https://arduino-info.wikispaces.com/file/view/DHT-lib.zip” ]
دانلود کد برنامه برای گیرنده :
[maxbutton id=”245″ url=”http://avatrobo.ir/wp-content/uploads/2018/05/ohm-meter-arduino-1.txt” ]
#include <LiquidCrystal.h>
#include <RH_ASK.h>
#include <SPI.h>
#include <dht.h>
#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 < buflen; i++)
{
str += (char)buf[i];
}
lcd.setCursor(0,1);
lcd.print("OUTSIDE:");
lcd.print(str);
Serial.println(str);
delay(2000);
}
}
فرستنده:

تصویر بالا شماتیک اتصالات فرستنده است که نسبت به گیرنده ساده تر است. در این قسمت از یک آردوینو دیگر استفاده شده است و سنسور DTH11 وظیفه ی اندازه گیری دمای خارج را دارد.
برنامه برای گیرنده:
[maxbutton id=”246″ url=”http://avatrobo.ir/wp-content/uploads/2018/05/trannsmitter.txt” ]
#include <RH_ASK.h>
#include <dht.h>
#define DHTxxPIN A0
#include <SPI.h>
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);
}
}
ساختمان آنتن:

همانند شکل با استفاده از یک سیم باید ساختار بالا بسازیم تا از آن به عنوان آنتن استفاده شود.
پست های مرتبط
اردیبهشت 9, 1398
اسفند 5, 1397
بهمن 2, 1397
دیدگاهتان را بنویسید