Showing posts with label Embedded Project. Show all posts
Showing posts with label Embedded Project. Show all posts

My Smart Home Project


ABSTRACT

Smart home technology has proved to contribute to increased independence and safety. Smart Home Technology is a collective term for information and communication technology in homes, where the components are communicating through a local network. The technology may be used for monitoring, alarming and executing actions, according to the programmed criteria. These project includes a high level security system informs the authorized person and to the police station by a dedicated software using internet. The heart of the project is a Web Server running on an ARM Cortex M4 microcontroller. There are various sensors, devices connected to this device for security system, control and monitoring. Dedicated softwares are there for user (.Net and Android) and police station (.Net). The user software can control the devices in home, view various sensor readings, status of security system, change configuration etc. The application used in the police station use maps of local area to provide the intruder alert. The software used in police station will be communicating with this home server and if an intruder is detected, it will be shown in the software as a location in map and a notification message which makes their duty easily. Same time the house owner will be informed by the user software. The software communicates to the Smart Home Device using UDP protocol. The user software is compatible for future developments like camera interfaces. 

















 

  Demo Videos

 


 

 

 



 

 

More Details




...................................................................................................................................................................

STM32F4 Discovery Tutorial 1 Using NETMF - Setting Up the Environment

Digital Voltmeter using PIC Microcontroller





This is a simple voltmeter which measures 0-5V at a precision of 4.8 mV. This is a simple design using inbuilt ADC of PIC 16F877A. PIC 16F877A have 8 channel 10bit ADC.  Measured voltage is displayed on 16x2 LCD display.
Using one of the most popular 8 bit PIC 16f877A, for instance, reading the datasheet, we'll find that the ADC modules (10 bit) are controlled by four different registers. The first two, ADCON0 and ADCON1, are used to set and start the ADC module. When high level language is used, the programmer doesn't need to care a lot of the register connected to the results because they are normally stored in a variable by a routine of the language itself (adc_read, for instance, using mikroc).
The ADCON0
As we can see this registers are 8 bit registers where.
- bit6 and bit 7 are used to set the frequency of the conversions.
- bits 3, 4 and 5 are used to select the pins of the microcontroller enabled to theadc conversions.
- bit 2 represents the status of the conversion procedure.
- bit 0 starts the conversion.


Regarding the second register, ADCON1, it must be set for two reasons: to select the format of the result value (bit 7), to select (bit0...bit3) the reference voltage and to set the port configuration control bits according to the following table




This circuit uses AN0 channel of ADC. The voltage conversion is employed in a logic, 16F877A have 10 bit ADC. That is, it can have 1024 levels. Reference voltage is fixed at
0 – 5 V Analog I/P is mapped to one of the 1024 levels (0-1023 Digital Count)
Resolution = 5/(1024)   (as it is 10 bit ADC)
= 5/1024
= 4.8828 mV   It  means that for a change in 4.8828mV, the binary output changes by 1.

For More Details See
PC Based Digital Voltmeter Using PIC 16F877A

ADC module of PIC Microcontroller converts the Signals on its analog pin to 10 bit binary data and it has software selectable high and low voltage reference input to some combination of VDD, VSS, RA2 and RA3. The analog input to PIC is limited to 0 to 5.The converted value is in mV. It is then converted to volts and displayed on LCD.


 Circuit



Digital Voltmeter using PIC Microcontroller 

 Code


/**********************************************/
/*
  
 http://www.facebook.com/EmbeddedProjects

 http://microcontrollerprojects00.blogspot.in/

 Author: Vishal K M

 uC:16F877A
 Compiler: mikroC
 Crystal freq: 4MHz


                                              */
/**********************************************/
// LCD module connections
sbit LCD_RS at RC0_bit;
sbit LCD_EN at RC2_bit;
sbit LCD_D4 at RD4_bit;
sbit LCD_D5 at RD5_bit;
sbit LCD_D6 at RD6_bit;
sbit LCD_D7 at RD7_bit;

sbit LCD_RS_Direction at TRISC0_bit;
sbit LCD_EN_Direction at TRISC2_bit;
sbit LCD_D4_Direction at TRISD4_bit;
sbit LCD_D5_Direction at TRISD5_bit;
sbit LCD_D6_Direction at TRISD6_bit;
sbit LCD_D7_Direction at TRISD7_bit;
// End LCD module connections






unsigned long temp;
unsigned int i;
char digit[]="0.000 VOLTS";

void main() {


TRISA=0xFF;


ADCON0=0x01;
ADCON1=0x0E;

 

     Lcd_Init();                        // Initialize LCD

  Lcd_Cmd(_LCD_CLEAR);               // Clear display
  Lcd_Cmd(_LCD_CURSOR_OFF);          // Cursor off
  LCD_Out(1,1,"EMBEDDED");
   LCD_Out(2,1,"PROJECTS BLOG");
   Delay_ms(1000);

  do {
    temp = ADC_Read(0);   // Get 10-bit results of AD conversion
    temp=temp*5000/1023;   //Convert ADC value to mV
   
   

    digit[0]=(temp/1000)+48;
    digit[2]=((temp%1000)/100)+48;
    digit[3]=(((temp%1000)%100)/10)+48;
    digit[4]=(((temp%1000)%100)%10)+48;
   
    LCD_Cmd(_LCD_CLEAR);
    LCD_Out(1,1,digit);

      //Carriage Return
    Delay_ms(500);

  } while(1);
}


Download Project Files

Automatic Water Level Control And Real Time Monitoring







Automatic Water Level Control And Real Time Monitoring


Description

This project will control the water level and keep the level between two predefined upper and lower positions. Any sensors can be used for this project, condition is only that it should give an active low output when activated by water. Sensors are simply water activated switches which is connected to ground.

I personally prefer read switch-magnet arrangement. Read switches are fixed on water tank wall at desired positions, and magnet is fixed on a thermocol sheet which floats in water. Modify this idea by experimenting, for an accurate result.

The designing of sensor arrangement is shown above. Sensors are read switches connected between PORT pins and ground. There is a magnet fixed on a thermocol which floats on water. Thermocol is free to move up and down through the string with the water level. When the thermocol reaches predefined water-levels the magnet and read switch come in contact and the read switch is activated and water level is detected. This is not an ultimate design, but just a design idea.












Code

/**********************************************/
/*

 http://www.facebook.com/EmbeddedProjects

 http://microcontrollerprojects00.blogspot.in/

 Author: Vishal K M

 uC:AT89S52
 Compiler: mikroC
 Crystal freq: 12MHz


                                                                                            */
/**********************************************/

extern sfr sbit motor;
sbit LCD_RS at P1_0_bit;
sbit LCD_EN at P1_1_bit;

sbit LCD_D4 at P1_2_bit;
sbit LCD_D5 at P1_3_bit;
sbit LCD_D6 at P1_4_bit;
sbit LCD_D7 at P1_5_bit;
sbit motor at P0_0_bit;

char txt1[] = "Water Level";
char txt2[] = "FULL";
char txt3[] = "MEDIUM";
char txt4[] = "LOW";
char txt5[] = "EMPTY";
 //unsigned int data;


void main() {

P2=0XFF;
P1=0x00;
//P0=0x00;
  Lcd_Init();




while(1)
{
while(P2.F2==1)
{
Lcd_Cmd(_LCD_CLEAR);
Lcd_Out(1,1,txt1);

motor=1;                             //motor off
switch(~P2)
{
case 0: Lcd_Out(2,6,txt5); break;
case 1:Lcd_Out(2,6,txt4); break;
case 3: Lcd_Out(2,6,txt3); break ;

default: ;

}
Delay_ms(500);
                           //motor on

}   motor=0;

 }

}

PC Based Voltmeter Using C#

Voltmeter C# Arduino, PIC, AVR



This program is developed in C# (C sharp). It needs .NET framework 4.0 to work.  For the circuit and other details of the project go to the Link. Click on the image to download the program.










Code modification of existing project





/**********************************************/
/*
  
 http://www.facebook.com/EmbeddedProjects

 http://microcontrollerprojects00.blogspot.in/

 Author: Vishal K M

 uC:16F877A
 Compiler: mikroC
 Crystal freq: 4MHz


                                              */
/**********************************************/





unsigned long temp;
unsigned int i;
char digit[]="0.000";

void main() {


TRISA=0xFF;

ADCON0=0x01;
ADCON1=0x0E;
UART1_Init(9600);               // Initialize UART module at 9600 bps
  Delay_ms(100);                  // Wait for UART module to stabilize
 
   UART1_Write_Text("Embedded Projects");
   UART1_Write(0x0D);

  do {
    temp = ADC_Read(0);   // Get 10-bit results of AD conversion
    temp=temp*5000/1023;   //Convert ADC value to mV
   
   

    digit[0]=(temp/1000)+48;
    digit[2]=((temp%1000)/100)+48;
    digit[3]=(((temp%1000)%100)/10)+48;
    digit[4]=(((temp%1000)%100)%10)+48;
   
    UART1_Write_Text(digit);

      //Carriage Return
    Delay_ms(1000);

  } while(1);
}

PC Based Digital Voltmeter Using PIC 16F877A

Voltmeter C# .Net PIC, Arduino, AVR






This is a simple voltmeter which measures 0-5V at a precision of 4.8 mV. This is a simple design using inbuilt ADC of PIC 16F877A. PIC 16F877A have 8 channel 10bit ADC.  This is a computer interfaced project. Measured voltage is output in serial interface software in computer. There is a serial interface circuit (MAX232) is necessary for interfacing with computer, which is not included in the circuit. Please check     PIC Serial Communication Tutorial (UART)  for the circuit and more details.





Using one of the most popular 8 bit PIC 16f877A, for instance, reading the datasheet, we'll find that the ADC modules (10 bit) are controlled by four different registers. The first two, ADCON0 and ADCON1, are used to set and start the ADC module. When high level language is used, the programmer doesn't need to care a lot of the register connected to the results because they are normally stored in a variable by a routine of the language itself (adc_read, for instance, using mikroc).

The ADCON0
As we can see this registers are 8 bit registers where.
- bit6 and bit 7 are used to set the frequency of the conversions.
- bits 3, 4 and 5 are used to select the pins of the microcontroller enabled to the adc conversions.
- bit 2 represents the status of the conversion procedure.
- bit 0 starts the conversion.


ADCON1










Regarding the second register, ADCON1, it must be set for two reasons: to select the format of the result value (bit 7), to select (bit0...bit3) the reference voltage and to set the port configuration control bits according to the following table





ADCON1








This circuit uses AN0 channel of ADC. The voltage conversion is employed in a logic, 16F877A have 10 bit ADC. That is, it can have 1024 levels. Reference voltage is fixed at
0 – 5 V Analog I/P is mapped to one of the 1024 levels (0-1023 Digital Count)
Resolution = 5/(1024)   (as it is 10 bit ADC)
= 5/1024
= 4.8828 mV   It  means that for a change in 4.8828mV, the binary output changes by 1.

ADC module of PIC Microcontroller converts the Signals on its analog pin to 10 bit binary data and it has software selectable high and low voltage reference input to some combination of VDD, VSS, RA2 and RA3. The analog input to PIC is limited to 0 to 5.


The converted value is in mV. It is then converted to volts and characters to send to serial port.
Normal hiperterminal application can be used for reception. Comments are given in program to easy understanding.

Click here for the PC program



PIC 16F877A Voltmeter

Code

/**********************************************/
/*
  
 http://www.facebook.com/EmbeddedProjects

 http://microcontrollerprojects00.blogspot.in/

 Author: Vishal K M

 uC:16F877A
 Compiler: mikroC
 Crystal freq: 4MHz


                                              */
/**********************************************/





unsigned long temp;
unsigned int i;
char digit[]="0.000-VOLTS ";

void main() {


TRISA=0xFF;

ADCON0=0x01;
ADCON1=0x0E;
UART1_Init(9600);               // Initialize UART module at 9600 bps
  Delay_ms(100);                  // Wait for UART module to stabilize
 
   UART1_Write_Text("Embedded Projects");
   UART1_Write(0x0D);

  do {
    temp = ADC_Read(0);   // Get 10-bit results of AD conversion
    temp=temp*5000/1023;   //Convert ADC value to mV
   
   

    digit[0]=(temp/1000)+48;
    digit[2]=((temp%1000)/100)+48;
    digit[3]=(((temp%1000)%100)/10)+48;
    digit[4]=(((temp%1000)%100)%10)+48;
   
    UART1_Write_Text(digit);

    UART1_Write(0x0D);   //Carriage Return
    Delay_ms(500);

  } while(1);
}
 
Copyright Electronics Projects And Details All Rights Reserved
ProSense theme created by Dosh Dosh and The Wrong Advices.
Blogerized by Alat Recording Studio Rekaman.