راه اندازی ماژول بلوتوث HC-05 با کدویژن و avr
دسته بندی : دستهبندی نشده
ماژول بلوتوث HC-05 با کدویژن و avr با توضیحات کاملا تصویری و سورس کد کامل به همراه معرفی اپلیکیشن های مربوطه
مطالبی که قرار است بیاموزید
در این آموزش همیار الکترونیک میخوایم ماژول بلوتوث HC-05 رو با کدویژن و avr راه اندازی کنیم. ما در این پروژه میخوایم با ماژول بلوتوث با تلفن همراه خودمون ارتباط برقرار کنیم که این ارتباط با رابط UART انجام میگیرد. در این پروژه ما میخوایم با HC-05 یک LED رو کنترل کنیم
مطالبی که قرار است بیاموزید
قطعات مورد نیاز
- میکروکنترلر ATmega8
- ماژول بلوتوث HC-05
- ال ای دی
- سیم جامپر
- بردبرد
نرم افزار مورد نیاز
ما برای پروگرام کردن کد های خود از نرم افزار کدویژن استفاده میکنیم. که از لینک زیر میتوانید این نرم افزار را دانلود کنید
ساخت پروژه با نرم افزار کدویژن
بعد از نصب این نرم افزار شروع کنید قدم به قدم با ما همراه باشید تا این پروژه ماژول بلوتوث HC-05 با کدویژن و avr رو به کامل کنیم
مرحله ۱ : وارد قسمت File -> New -> Project و در پنجره ای که باز میشود گزینه yes را کلیک کنید
مرحله ۲ : در این مرحله کدویزارد باز میشود ، در پنجره باز شده گزینه اول رو انتخاب کنید
مرحله ۳ : در این قسمت باید میکروکنترلر خودتون رو انتخاب کنید که میکروکنترلر من ATmega8 هست رو انتخاب میکنم
مرحله ۴ : روی قسمت port کلیک کنید و به تب port C بروید و بیت ها ۴ و ۵ را برای ال ای دی ها خروجی تعیین کنید
مرحله ۵ : چون ما از TX و RX استفاده میکنیم ، پس وارد USART میشیم و تیک گزینه Receiver رو میزنیم
مرحله ۶ : برای ذخیره Program -> Generate, Save and Exit رو انتخاب میکنیم
مرحله ۷ : در این مرحله باید فایل های خودتون رو دخیره کنید ، من برای این کار یک پوشه توی دسکتاپ ساختم و فایل هایم را با اسم blue101 ذخیره کردم . ۳ باکس پشت سر هم باز میشوند که هر سه تا را به همین ترتیب ذخیره میکنیم
اتصالات مدار
شما باید اتصالات مدار خود را مانند تصویر زیر ببندید
کد و توضیحات
در void main یک متغییری تعریف میکنیم
char var; // Declare your local variables here
مابقی کد آسان و قابل درک است . به آخرین خط های کد بروید تا حلقه while رو ببینید ، در کد زیر ما منتظر ورودی از ماژول بلوتوث میمانیم و به پس از خواندن آن ، تغییرات را روی ال ای دی اعمال میکنیم
while (1) { scanf("%c",&var); //this function is to used to check any character coming from our android app . if (var == 'a') // We will send ‘a’ from Bluetooth Terminal to ON the LED and ‘b’ to OFF the LED { PORTC.5 = 1; PORTC.4 = 0; } if (var == 'b') { PORTC.5 = 0; PORTC.4 = 0; } }
و بعد از کد را روی برد خود پروگرام میکنیم
اپلیکیشن برای کنترل
شما از اپلیکیشن زیر میتوانید برای راه اندازی ماژول بلوتوث HC-05 با کدویژن و avr استفاده کنید
https://play.google.com/store/apps/details?id=Qwerty.BluetoothTerminal&hl=en_IN
سورس کد
#include <io.h>
#include <stdio.h>
void main(void)
{
char var;
// Declare your local variables here
// Input/Output Ports initialization
// Port A initialization
// Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In
DDRA=(0<<DDA7) | (0<<DDA6) | (0<<DDA5) | (0<<DDA4) | (0<<DDA3) | (0<<DDA2) | (0<<DDA1) | (0<<DDA0);
// State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T
PORTA=(0<<PORTA7) | (0<<PORTA6) | (0<<PORTA5) | (0<<PORTA4) | (0<<PORTA3) | (0<<PORTA2) | (0<<PORTA1) | (0<<PORTA0);
// Port B initialization
// Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In
DDRB=(0<<DDB7) | (0<<DDB6) | (0<<DDB5) | (0<<DDB4) | (0<<DDB3) | (0<<DDB2) | (0<<DDB1) | (0<<DDB0);
// State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T
PORTB=(0<<PORTB7) | (0<<PORTB6) | (0<<PORTB5) | (0<<PORTB4) | (0<<PORTB3) | (0<<PORTB2) | (0<<PORTB1) | (0<<PORTB0);
// Port C initialization
// Function: Bit7=In Bit6=In Bit5=Out Bit4=Out Bit3=In Bit2=In Bit1=In Bit0=In
DDRC=(0<<DDC7) | (0<<DDC6) | (1<<DDC5) | (1<<DDC4) | (0<<DDC3) | (0<<DDC2) | (0<<DDC1) | (0<<DDC0);
// State: Bit7=T Bit6=T Bit5=0 Bit4=0 Bit3=T Bit2=T Bit1=T Bit0=T
PORTC=(0<<PORTC7) | (0<<PORTC6) | (0<<PORTC5) | (0<<PORTC4) | (0<<PORTC3) | (0<<PORTC2) | (0<<PORTC1) | (0<<PORTC0);
// Port D initialization
// Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In
DDRD=(0<<DDD7) | (0<<DDD6) | (0<<DDD5) | (0<<DDD4) | (0<<DDD3) | (0<<DDD2) | (0<<DDD1) | (0<<DDD0);
// State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T
PORTD=(0<<PORTD7) | (0<<PORTD6) | (0<<PORTD5) | (0<<PORTD4) | (0<<PORTD3) | (0<<PORTD2) | (0<<PORTD1) | (0<<PORTD0);
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=0xFF
// OC0 output: Disconnected
TCCR0=(0<<WGM00) | (0<<COM01) | (0<<COM00) | (0<<WGM01) | (0<<CS02) | (0<<CS01) | (0<<CS00);
TCNT0=0x00;
OCR0=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer1 Stopped
// Mode: Normal top=0xFFFF
// OC1A output: Disconnected
// OC1B output: Disconnected
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=(0<<COM1A1) | (0<<COM1A0) | (0<<COM1B1) | (0<<COM1B0) | (0<<WGM11) | (0<<WGM10);
TCCR1B=(0<<ICNC1) | (0<<ICES1) | (0<<WGM13) | (0<<WGM12) | (0<<CS12) | (0<<CS11) | (0<<CS10);
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer2 Stopped
// Mode: Normal top=0xFF
// OC2 output: Disconnected
ASSR=0<<AS2;
TCCR2=(0<<PWM2) | (0<<COM21) | (0<<COM20) | (0<<CTC2) | (0<<CS22) | (0<<CS21) | (0<<CS20);
TCNT2=0x00;
OCR2=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=(0<<OCIE2) | (0<<TOIE2) | (0<<TICIE1) | (0<<OCIE1A) | (0<<OCIE1B) | (0<<TOIE1) | (0<<OCIE0) | (0<<TOIE0);
// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// INT2: Off
MCUCR=(0<<ISC11) | (0<<ISC10) | (0<<ISC01) | (0<<ISC00);
MCUCSR=(0<<ISC2);
// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: On
// USART Transmitter: Off
// USART Mode: Asynchronous
// USART Baud Rate: 9600
UCSRA=(0<<RXC) | (0<<TXC) | (0<<UDRE) | (0<<FE) | (0<<DOR) | (0<<UPE) | (0<<U2X) | (0<<MPCM);
UCSRB=(0<<RXCIE) | (0<<TXCIE) | (0<<UDRIE) | (1<<RXEN) | (0<<TXEN) | (0<<UCSZ2) | (0<<RXB8) | (0<<TXB8);
UCSRC=(1<<URSEL) | (0<<UMSEL) | (0<<UPM1) | (0<<UPM0) | (0<<USBS) | (1<<UCSZ1) | (1<<UCSZ0) | (0<<UCPOL);
UBRRH=0x00;
UBRRL=0x33;
// Analog Comparator initialization
// Analog Comparator: Off
// The Analog Comparator’s positive input is
// connected to the AIN0 pin
// The Analog Comparator’s negative input is
// connected to the AIN1 pin
ACSR=(1<<ACD) | (0<<ACBG) | (0<<ACO) | (0<<ACI) | (0<<ACIE) | (0<<ACIC) | (0<<ACIS1) | (0<<ACIS0);
SFIOR=(0<<ACME);
// ADC initialization
// ADC disabled
ADCSRA=(0<<ADEN) | (0<<ADSC) | (0<<ADATE) | (0<<ADIF) | (0<<ADIE) | (0<<ADPS2) | (0<<ADPS1) | (0<<ADPS0);
// SPI initialization
// SPI disabled
SPCR=(0<<SPIE) | (0<<SPE) | (0<<DORD) | (0<<MSTR) | (0<<CPOL) | (0<<CPHA) | (0<<SPR1) | (0<<SPR0);
// TWI initialization
// TWI disabled
TWCR=(0<<TWEA) | (0<<TWSTA) | (0<<TWSTO) | (0<<TWEN) | (0<<TWIE);
while (1)
{
scanf(“%c”,&var);
if (var == ‘a’)
{
PORTC.5 = 1;
PORTC.4 = 0;
}
if (var == ‘b’)
{
PORTC.5 = 0;
PORTC.4 = 0;
}
}
}