بستن منو
×

راه اندازی ماژول بلوتوث HC-05 با کدویژن و avr

دسته بندی : میکروکنترلر avr

چکیده :

ماژول بلوتوث HC-05 با کدویژن و avr با توضیحات کاملا تصویری و سورس کد کامل به همراه معرفی اپلیکیشن های مربوطه

در این آموزش همیار الکترونیک میخوایم ماژول بلوتوث HC-05 رو با کدویژن و avr راه اندازی کنیم. ما در این پروژه میخوایم با ماژول بلوتوث با تلفن همراه خودمون ارتباط برقرار کنیم که این ارتباط با رابط UART انجام میگیرد. در این پروژه ما میخوایم با HC-05 یک LED رو کنترل کنیم

 

قطعات مورد نیاز

  1. میکروکنترلر ATmega8
  2. ماژول بلوتوث HC-05
  3. ال ای دی
  4. سیم جامپر
  5. بردبرد

نرم افزار مورد نیاز

ما برای پروگرام کردن کد های خود از نرم افزار کدویژن استفاده میکنیم. که از لینک زیر میتوانید این نرم افزار را دانلود کنید

دانلود نرم افزار کدویژن (+)

ساخت پروژه با نرم افزار کدویژن‌

بعد از نصب این نرم افزار شروع کنید قدم به قدم با ما همراه باشید تا این پروژه ماژول بلوتوث HC-05 با کدویژن و avr رو به کامل کنیم

مرحله ۱ : وارد قسمت File -> New -> Project و در پنجره ای که باز میشود گزینه yes را کلیک کنید

ساخت پروژه در کدویژن

 

مرحله ۲ : در این مرحله کدویزارد باز میشود ، در پنجره باز شده گزینه اول رو انتخاب کنید

کدویزارد در کدویژن

 

مرحله ۳ : در این قسمت باید میکروکنترلر خودتون رو انتخاب کنید که میکروکنترلر من ATmega8 هست رو انتخاب میکنم

انتحاب میکروکنترلر در کدویژن

 

مرحله ۴ : روی قسمت port کلیک کنید و به تب port C بروید و بیت ها ۴ و ۵ را برای ال ای دی ها خروجی تعیین کنید

پورت های میکروکنترلر

 

مرحله ۵ : چون ما از TX و RX استفاده میکنیم ، پس وارد USART میشیم و تیک گزینه Receiver رو میزنیم

تنظیم USART در کدویژن

 

مرحله ۶ : برای ذخیره Program -> GenerateSave and Exit رو انتخاب میکنیم

ذخیره پروژه در کدویژن

 

مرحله ۷ : در این مرحله باید فایل های خودتون رو دخیره کنید ، من برای این کار یک پوشه توی دسکتاپ ساختم و فایل هایم را با اسم blue101 ذخیره کردم . ۳ باکس پشت سر هم باز میشوند که هر سه تا را به همین ترتیب ذخیره میکنیم

ساخت پروژه در کدویژن

 

اتصالات مدار

شما باید اتصالات مدار خود را مانند تصویر زیر ببندید

HC-05 با کدویژن

 

کد و توضیحات

 

در 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-06 با کدویژن avr

 

اپلیکیشن برای کنترل

شما از اپلیکیشن زیر میتوانید برای راه اندازی ماژول بلوتوث 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;

}

}

}


نصب درایور پروگرامر isp

آموزش نصب درایور پروگرامر isp در ویندوز 10 و 7 به همراه لینک دانلود نرم افزار درایور پروگرامر zadig و حل مشکل بالا نیامدن پروگرامر download isp driver

ساخت ربات تعقیب خط

ساخت ربات مسیریاب با avr

ساخت ربات مسیریاب یا همان تعقیب خط با استفاده از میکرو کنترلر AVR با استفاده از برنامه نویسی ATmega16 با استفاده از 2 سنسور مادون قرمز

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

در حال اعتبار سنجی لطفا منتظر بمانید ...