Interfacing of Rain Detector and Zigbee Module in LPC2148.
In this project, a controller is fitted on the roof of room or building and information of rain is transmitted inside house or building using zigbee module.
ZigBee is an IEEE 802.15.4-based specification for a suite of high-level communication protocols used to create personal area networks with small, low-power digital radios.The technology defined by the ZigBee specification is intended to be simpler and less expensive than other wireless personal area networks (WPANs), such as Bluetooth or Wi-Fi.Its low power consumption limits transmission distances to 10–100 meters line-of-sight, depending on power output and environmental characteristics. ZigBee devices can transmit data over long distances by passing data through a mesh network of intermediate devices to reach more distant ones.
CODE FOR PROJECT :
Transmitter Code –
#include "header.h" #include "lcd.h" #include "pll.h" #include "uart.h" int main() { PINSEL1=0; PINSEL2=0; IO0DIR|=0xff<<16 | 0xf<<25; IO1DIR&=(~(1<<16)) & (~(1<<17)) & (~(1<<18)); lcd_init(); uart_init(); lcdstring("Rain Detector"); lcdcmd(0xc0); lcdstring("Using Zigbee"); delay(50); lcdcmd(0x01); lcdstring("Project By:"); lcdcmd(0xc0); lcdstring("FIRMCODES"); delay(50); lcdcmd(0x01); while(1) { if(!(IO1PIN & (1<<16))) //Rain Detector Sensor { txdata('r'); delay(100); IO0SET=1<<25; //Rain Indicator } if(!(IO1PIN & (1<<17))) //Rain Detector Sensor { txdata('g'); delay(100); IO0SET=1<<26; //Gas Indicator } else { txdata('n'); delay(100); IO0CLR=1<<25; // Rain Indicator } } }
Receiver –
#include "header.h" #include "lcd.h" #include "uart.h" #include "pll.h" int main() { PINSEL1=0; PINSEL2=0; IO0DIR|=0xff<<16 | 0xf<<25; IO1DIR|=(~(1<<16)); lcd_init(); uart_init(); lcdstring("Rain Detector"); lcdcmd(0xc0); lcdstring("Using Zigbee"); delay(50); lcdcmd(0x01); while(1) { rxdata(); } }
header.h –
#include<lpc214x.h> #include<string.h> #define PLOCK 10 #define THRE 5 #define RDR 0 #define lcdport IO0SET #define lcdportclr IO0CLR #define rs 16 #define rw 17 #define en 18 #define row1 18 #define row2 19 #define row3 20 #define row4 21 #define col1 22 #define col2 23 #define col3 24 #define col4 25 #define STA 5 #define STO 4 #define SI 3 #define I2EN 6 int i,j,z; void delay(int); void cmd(void); void lcdcmd(char); void disp(void); void lcddata(char); void lcd_init(void); void lcdstring(char *);
lcd.h –
#include "header.h" void delay(int time) { int i,j; for(i=0;i<time;i++) for(j=0;j<7500;j++); } void cmnd() { lcdportclr=(1<<rs); lcdportclr = (1<<rw); lcdport = (1<<en); delay(5); lcdportclr=(1<<en); } void lcdcmd(char ch) { lcdport = ((ch&0xf0)<<15); cmnd(); lcdportclr = ((ch&0xf0)<<15); lcdport = (((ch<<4)&0xf0)<<15); cmnd(); lcdportclr = (((ch<<4)&0xf0)<<15); } void daten() { lcdport=(1<<rs); lcdportclr = (1<<rw); lcdport = (1<<en); delay(5); lcdportclr=(1<<en); } void lcddata(char ch) { lcdport = ((ch&0xf0)<<15); daten(); lcdportclr = ((ch&0xf0)<<15); lcdport = (((ch<<4)&0xf0)<<15); daten(); lcdportclr = (((ch<<4)&0xf0)<<15); } void lcdstring(char *str) { int j; for(j=0;str[j]!='\0';j++) { lcddata(str[j]); } } void lcd_init() { lcdcmd(0x02); lcdcmd(0x28); lcdcmd(0x01); lcdcmd(0x0e); }
pll.h –
void clk_init() { PLL0CON=0x01; PLL0CFG=0x24; PLL0FEED=0xAA; PLL0FEED=0x55; while(!(PLL0STAT & (1<<PLOCK))); PLL0CON=0x03; PLL0FEED=0xAA; PLL0FEED=0x55; VPBDIV=0x00; }
uart.h –
/* uart.h for reciever */ #include "header.h" void uart_init() { PINSEL0=0x05; U0LCR=0x83; U0DLL=0x61; U0DLM=0x00; U0LCR=0x03; } void txdata(char ch) { U0THR=ch; while(!(U0LSR & (1<<THRE))); } void txstring(char *str) { while(*str) { txdata(*str); str++; } } void rxdata() { char str[10],i; for(i=0;i<1;i++) { while(!(U0LSR & (1<<RDR))); str[i]=U0RBR; U0FCR=0x07; } str[i]='\0'; lcdcmd(0x01); //lcdstring(str); delay(10); if(strcmp("r",str)==0) { lcdstring("Its Raining......"); IO0SET=1<<25; IO0SET=1<<26; } else if(strcmp("n",str)==0) { lcdstring("Normal Status"); IO0CLR=1<<25; IO0CLR=1<<26; } else if(strcmp("g",str)==0) { lcdstring("Gas Leakage"); IO0SET=1<<27; IO0CLR=1<<26; //buzzer } } /*uart.h for transmitter */ #include "header.h" void uart_init() { PINSEL0=0x05; U0LCR=0x83; U0DLL=0x61; U0DLM=0x00; U0LCR=0x03; } void txdata(char ch) { U0THR=ch; while(!(U0LSR & (1<<THRE))); } void txstring(char *str) { while(*str) { txdata(*str); str++; } } void rxdata() { char str[10],i; for(i=0;i<1;i++) { while(!(U0LSR & (1<<RDR))); str[i]=U0RBR; U0FCR=0x07; } str[i]='\0'; lcdcmd(0x01); lcdstring(str); delay(10); if(strcmp("R",str)==0) { lcdstring("Its Raining......"); } }