ماژول فرستنده و گیرنده HM-TR
در این بخش دانلود پروژه ارتباط بی سیم رادیویی با ماژول فرستنده و گیرنده HM-TR, توسط تیم الکترونیک و برنامه نویسی الکترونیک ۹۸ برای شما علاقه مندان به پروژه های میکروکنترلر AVR آماده شده است. ارتباط بی سیم, استفاده از دستگاه ها را بدون نیاز به سیم یا کابل فراهم می کند. توسط سیستم های ارتباطی بی سیم می توان صوت, تصویر و سایر اطلاعات دیجیتال یا آنالوگ را در فواصل زیاد منتقل کرد. بسیاری از زمینه های کاری از جمله مراقبت های پزشکی, سیستم های کنترل از راه دور و مراکز خدماتی به تجهیزات بی سیم احتیاج دارند.
هدف ما در این پروژه طراحی یک فرستنده و گیرنده بی سیم رادیویی با استفاده از ماژول HM-TR است, به طوری که در فرستنده, دمای محیط با استفاده از تراشه LM75 اندازه گیری می شود و از طریق ارتباط بی سیم رادیویی برای گیرنده ارسال می گردد تا در گیرنده نمایش داده شود. در این پروژه, دمای محیط را در یک نقطه اندازه گیری می کنیم و سپس مقدار اندازه گیری شده را از طریق ارتباط بی سیم به نقطه ای دیگر منتقل می نماییم و نمایش می دهیم.
به این ترتیب یک حسگر دمای بی سیم خواهیم داشت. برای ارسال و دریافت اطلاعات به صورت بی سیم, از ماژول HM-TR استفاده شده است که نحوه راه اندازی و ویژگی های آن در ادامه مورد بررسی قرار می گیرند. دمای محیط, با استفاده از تراشه LM75 در فرستنده اندازه گیری می شود, از طریق ارتباط بی سیم ارسال می گردد و در گیرنده نشان داده می شود.
ماژول HM-TR
ماژول HM-TR توسط شرکت هپ میکروالکترونیک (HOPE Microelectronic) برای انتقال داده از طریق ارتباط بی سیم عرضه شده است و از مدولاسیون fsk برای انتقال اطلاعات استفاده می کند. برقراری ارتباط در ماژول HM-TR به صورت نیم دو طرفه (Half Duplex) است, به عبارت دیگر این ماژول می تواند هر دو عمل ارسال و دریافت را انجام دهد و به همین علت از نظر دسته بندی ارسال و دریافت در شاخه تجهیزات فرستنده – گیرنده (Transceiver) قرار می گیرد. برخی از مهمترین ویژگی های ماژول HM-TR عبارتند از:
1- استفاده از باند ISM و نیاز نداشتن به دریافت مجوز برای برقراری ارتباط
2- پروتکل ارتباطی از پیش تعریف شده (کاربر بدون درگیر شدن با این پروتکل, می تواند از ماژول استفاده کند.)
3- امکان ارسال و دریافت در محدوده وسیعی از میزان باود (پهنای باند)
4- حساسیت بالا و برد مناسب (بیش از 200 متر در فضای باز)
5- قابلیت برقراری ارتباط از طریق ارتباط UART (استاندارد TTL و RS232)
با توجه به ویژگی های فوق می توان از این ماژول در موارد مختلفی مثلا کنترل از راه دور, حسگرهای بی سیم, مانیتورینگ از راه دور و … استفاده کرد. همچنین به دلیل دارا بودن تقویت کننده RF داخلی, در صورت استفاده از آنتن مناسب, می توان عمل ارسال و دریافت را در فاصله نسبتا خوبی انجام داد. آنتن به صورت جداگانه به ماژول متصل می شود.
تصویر زیر نمای ظاهری ماژول HM-TR را نشان می دهد. همانطور که مشاهده می کنید، این ماژول در دو ساختار سازگار با TTL و سازگار با RS232 ساخته می شود. تفاوت دو ساختار نامبرده شده در این است که در ساختار دوم, تراشه MAX232 روی ماژول قرار گرفته است تا بتوان آن را مستقیم به درگاه سریال کامپیوتر متصل کرد. در این پروژه, از مدل HM-TR/TTL استفاده شده است.
راه اندازی ماژول HM-TR
ماژول HM-TR به طور کلی 6 پایه ورودی و خروجی دارد که ترتیب آن ها در تصویر زیر نشان داده شده است. استفاده از HM-TR بسیار آسان است. این ماژول دارای دو مد کاری به شرح زیر است:
:: مد ارتباط (Communication Mode)
:: مد پیکربندی (Configure Mode)
هر یک از این دو مد، با توجه به وضعیت پایه Confog در هنگام راه اندازی ماژول انتخاب می شوند. اگر هنگام راه اندازی، این پایه در سطح صفر باشد. ماژول وارد مد ارتباط می شود و انتقال داده ممکن می گردد. اما در صورتی که این پایه در سطح یک باشد، ماژول وارد مد پیکربندی خواهد شد. در این مد می توان تنظیمات دلخواه را توسط نرم افزار مخصوصی انجام داد که شرکت سازنده ارائه کرده است.
مد ارتباط ماژول HM-TR
برای وارد شدن به این مد، همانگونه که ذکر شد، باید پایه Config در زمان راه اندازی، در سطح صفر باشد. در این مد می توان ماژول را مستقیم به میکروکنترلر یا کامپیوتر متصل کرد. نقشه شماتیک زیر چگونگی انجام اینکار را نشان می دهد. تنظیمات ارتباطی که به طور پیش فرض در کارخانه انجام گرفته اند، به شرح زیر است:
1 |
9600,8,N,1; |
:: میزان باود 9600
:: داده 8 بیتی
:: بدون بیت توازن و 1 بیت توقف
ماژول HM-TR از مد ارتباطی نیم دو طرفه استفاده می کند. طراحی این ماژول به گونه ای است که ابتدا 32 بایت را از طریق واسط سریال دریافت می کند و سپس آنها را به صورت یکجا از طریق ارتباط بیسیم ارسال می نماید. اگر طول بسته داده از 32 بایت کمتر باشد، ماژول پس از مکثی حدود 30 میلی ثانیه، آنها را ارسال می کند. پس از هر ارسال، ماژول به طور خودکار وارد مد دریافت می شود. زمان تغییر وضعیت از مد ارسال به دریافت، حدود 5 میلی ثانیه است.
پایه ENABLE در ماژول HM-TR برای کنترل مصرف توان به کار می رود. زمانیکه این پایه در سطح صفر قرار می گیرد، ماژول وارد مد Sleep می شود. به این ترتیب می توان با استفاده از یکی از پایه های میکروکنترلر، وضعیت این پایه و در نهایت مصرف توان ماژول را کنترل کرد.
مد پیکربندی ماژول HM-TR
برای ورود ماژول به مد پیکربندی (Configure Mode) باید پایه CONFIG در هنگام راه اندازی، در سطح یک قرار گیرد. به این ترتیب می توانید با استفاده از نرم افزار مخصوصی که توسط شرکت سازنده معرفی شده است، تنظیمات فعلی ماژول را بررسی کنید یا به دلخواه خود تغییر دهید. تصویر زیر نمای ظاهری نرم افزار مورد نظر را نشان می دهد.
با استفاده از دکمه Read می توان تنظیمات فعلی ماژول را مشاهده کرد. دکمه Write برای نوشتن و اعمال تنظیمات جدید بر روی ماژول به کار می رود و دکمه Default تنظیمات اولیه سازنده را دوباره به ماژول اعمال می کند.
نقشه شماتیک مدار فرستنده پروژه ارتباط بی سیم رادیویی با ماژول HM-TR
تصویر زیر نقشه شماتیک کامل مدار فرستنده را نشان می دهد، همانطور که مشاهده می کنید سنسور دما LM75 برای اندازه گیری دما استفاده شده است. میکروکنترلر ATmega8 دمای اندازه گیری شده توسط آی سی LM75 را زا طریق پروتکل ارتباطی دو سیمه I2C دریافت می کند و از طریق واسط سریال به HM-TR تحویل می دهد تا با ارتباط بیسیم ارسال شود. با استفاده از دیپ سوئیچ های نشان داده شده در نقشه شماتیک می توان سرعت ارسال دما را در 4 حالت مختلف تنظیم کرد.
سنسور دما LM75
آی سی دماسنج LM75 ساخت شرکت ناسیونال (National), یک سنسور دما و ترموستات (Thermostat) دیجیتال است و محدوده دمای قابل اندازه گیری با آن از منفی 55 تا مثبت 125 درجه سانتی گراد می باشد. ارتباط با این تراشه, برای خواندن دما و دست یافتن به رجیسترهای داخلی, از طریق پروتکل I2C امکانپذیر است. به این ترتیب می توان در هر لحظه, دمای محیط را به راحتی بدست آورد. شکل زیر تصویر نمای ظاهری و ترتیب پایه های آی سی LM75 و همچنین نحوه راه اندازی تراشه را نشان می دهد.
پایه های A0 تا A2 برای آدرس دهی سخت افزاری تراشه در نظر گرفته شده اند. با آدرس دهی مناسب می توان حدکثر 8 عدد از این تراشه را روی یک باس قرار داد. برای برقراری ارتباط, پایه های SDA و SCL به میکروکنترلر متصل می شوند. پایه O.S, یک پایه خروجی از نوع کلکتور باز است. اگر دما در محدوده خاصی ( که توسط کاربر قابل تنظیم است) قرار گیرد, وضعیت این پایه تغییر خواهد کرد. از ویژگی های مهم این تراشه این است که مستقیما مقدار دما را بر حسب درجه سانتی گراد در اختیار کاربر قرار می دهد و به تنظیم اولیه و ایجاد فرآیند کالیبراسیون نیازی نیست.
برنامه میکروکنترلر فرستنده در نرم افزار BASCOM-AVR
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
'Wireless Transmitter '---------------------- $regfile = "m8def.dat" $crystal = 8000000 $baud = 9600 Config Sda = Portc.4 Config Scl = Portc.5 Config Portd.4 = Output Config Pind.6 = Input Config Pind.7 = Input Declare Function Lm75_temp(byval Adrres As Byte) As String Const Lm75w = &H90 Const Lm75r = &H91 Dim Sign As Byte , Temp As Integer Dim Dip_sw As Byte Dim S As String * 10 Set Portd.4 '----------------------------- Do Dip_sw = Pind Shift Dip_sw , Right , 6 Dip_sw = Dip_sw And &H03 Select Case Dip_sw Case 0: Waitms 250 Case 1: Waitms 500 Case 2: Waitms 1000 Case 3: Waitms 2000 End Select S = Lm75_temp(0) Print S Loop End '------------------------------------------ Function Lm75_temp(byval Adrres As Byte) As String Dim Th As Byte , Tl As Byte Dim Sl As String * 10 Sl = "" I2cstart I2cwbyte Lm75w I2cwbyte 0 I2cstart I2cwbyte Lm75r I2crbyte Th , Ack I2crbyte Tl , Nack I2cstop '-------------- Sl = Sl + "t=+" If Th.7 = 1 Then Th = Th Xor &HFF If Tl.7 = 0 Then Th = Th + 1 Sl = "" Sl = Sl + "t=-" End If Sl = Sl + Str(th) If Tl.7 = 1 Then Sl = Sl + ".5" Else Sl = Sl + ".0" End If Sl = Sl + String(1 , &HF8) + "C" Lm75_temp = Sl End Function |
برنامه میکروکنترلر فرستنده در نرم افزار Code Vision AVR
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
#include <mega8.h> #include <delay.h> // I2C Bus functions #asm .equ __i2c_port=0x15 ;PORTC .equ __sda_bit=4 .equ __scl_bit=5 #endasm #include <i2c.h> #include <lm75.h> #include <stdio.h> char sign; char dip_sw; int temp; void main(void) { PORTD=0x00; DDRD=0x10; // USART initialization // USART Transmitter: On // USART Mode: Asynchronous // USART Baud Rate: 9600 UCSRA=0x00; UCSRB=0x08; UCSRC=0x86; UBRRH=0x00; UBRRL=0x33; // I2C Bus initialization i2c_init(); // LM75 Temperature Sensor initialization lm75_init(0,75,80,1); PORTD.4=1; //ENABLE PIN while (1) { dip_sw=(PIND>>6); dip_sw=(dip_sw & 0X03); switch (dip_sw) { case 0: delay_ms(250); break; case 1: delay_ms(500); break; case 2: delay_ms(1000); break; case 3: delay_ms(2000); }; temp=lm75_temperature_10(0); sign='+'; if (temp<0) { sign='-'; temp=-temp; }; printf("t=%c%i.%u\xf8C\r\n",sign,temp/10,temp%10); }; } |
شرح برنامه میکروکنترلر به زبان بیسیک و زبان C
همانطور که اشاره شد، دمای محیط در فرستنده توسط تراشه LM75 اندازه گیری می شود. سپس میکروکنترلر، مقدار اندازه گیری شده را با استفاده از ارتباط I2C دریافت می کند. در برنامه نوشته شده در محیط Code Vision AVR برای دریافت دما از تراشه LM75 از تابع کتابخانه lm75_temp() استفاده شده است. اینکار در برنامه نوشته شده در محیط Bascom AVR توسط تابع Lm75_temp() انجام می گیرد. مقدار ی که تابع Lm75_temp() بر می گرداند، یک رشته (String) است. این رشته بدون هیچ تغییری از طریق واسط سریال ارسال می گردد.
در ابتدای حلقه اصلی برنامه، وضعیت دیپ سوئیچ متصل به پایه های PD6 و PD7 بررسی می شود و با توجه به وضعیت فعلی آن، یکی از مقادیر مشخص شده به عنوان زمان تاخیر بین هر ارسال در نظر گرفته می شود. اینکار با استفاده از ساختار دستوری Switch-case (یا Select-Case در محیط Bascom-AVR) انجام می گیرد.
مدار گیرنده
در این پروژه, گیرنده را با دو روش پیاده سازی می کنیم. در روش اول, ماژول HM-TR را بدون استفاده از میکروکنترلر و با به کارگیری تراشه FT323BL و درگاه یو اس بی USB به کامپیوتر متصل می نماییم. در این حالت, دمای ارسال شده از طرف فرستنده, توسط برنامه هایپر ترمینال Hyper Terminal دریافت و نمایش داده می شود. در روش دوم, گیرنده با میکروکنترلر ATmega8 ساخته می شود. به این ترتیب که میکروکنترلر, اطلاعات مربوط به دما را از طریق ماژول HM-TR دریافت می کند و روی LCD کاراکتری نشان می دهد. توجه کنید که در هر دو روش, از ماژول HM-TR/TTL استفاده می شود.
ساخت گیرنده به کمک کامپیوتر
همانطور که اشاره کردیم اگر کامپیوتر گیرنده باشد، از میکروکنترلر استفاده نمی شود. در این حالت، اطلاعات دریافتی مستقیما با استفاده از تراشه FT232BL به کامپیوتر منتقل می شوند و سپس با استفاده از برنامه Hyper Terminal (در سیستم عامل ویندوز) نمایش داده می شوند. تصویر زیر نقشه شماتیک کامل مدار گیرنده را نشان می دهد.
همانطور که در نقشه شماتیک مشاهده می کنید. مدار به گونه ای طراحی شده است که بتوان پایه CONFIG ماژول HM-TR را در یکی از مقادیر صفر و یک قرار داد. به این ترتیب ماژول با وصل بودن جک JP1 وارد مد ارتباط و با قطع بودن آن وارد مد پیکربندی می شود. با توجه به این امر، برای داشتن عملکرد عادی (مد ارتباط) باید جک JP1 وصل باشد تا پایه CONFIG به زمین متصل شود.
ساخت گیرنده به کمک میکروکنترلر
در این روش، یک میکروکنترلر ATmega8 به عنوان گیرنده در نظر گرفته شده است. اطلاعات دریافتی به واسط سریال میکروکنترلر وارد می شوند و سپس توسط میکروکنترلر روی نمایشگر LCD کاراکتری به نمایش در می آیند. نقشه شماتیک کامل مدار گیرنده در این حالت در تصویر زیر نشان داده شده است.
برنامه میکروکنترلر گیرنده در نرم افزار BASCOM-AVR
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
'Wireless Receiver '---------------------- $regfile = "m8def.dat" $crystal = 8000000 $baud = 9600 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6_ , Db7 = Portb.7 , E = Portb.2 , Rs = Portb.0 Dim S As String * 10 Dim B As Byte Dim Start_flag As Bit Start_flag = 0 Cls Lcd "start" S = "" Cursor Off '----------------------------- Do Here: B = Inkey() If B = 0 Then Jmp Here If B = "t" Then Start_flag = 1 End If If Start_flag = 1 Then S = S + String(1 , B) If B = "C" Then Reset Start_flag Cls Home Lcd S S = "" End If Loop End '------------------------------ |
برنامه میکروکنترلر گیرنده در نرم افزار Code Vision AVR
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
#include <mega8.h> // Alphanumeric LCD Module functions #asm .equ __lcd_port=0x18 ;PORTB #endasm #include <lcd.h> // Standard Input/Output functions #include <stdio.h> #include <delay.h> char i=0,j,a; unsigned char s[10]; bit start_flag=0; bit lcd_flag=0; interrupt [USART_RXC] void usart_rx_isr(void) { a=UDR; if (a=='t') start_flag=1; if (start_flag) if(i<10) { s[i]=a; i++; } if (a=='C') { start_flag=0; lcd_flag=1; i=0; } } void main(void) { // USART initialization // Communication Parameters: 8 Data, 1 Stop, No Parity // USART Receiver: On // USART Transmitter: Off // USART Mode: Asynchronous // USART Baud Rate: 9600 UCSRA=0x00; UCSRB=0x90; UCSRC=0x86; UBRRH=0x00; UBRRL=0x33; // LCD module initialization #asm("sei"); lcd_init(16); lcd_clear(); lcd_putsf("start"); while (1) { if(lcd_flag) { lcd_flag=0; lcd_clear(); lcd_puts(s); for(j=0;j<10;j++) s[j]=''; } delay_ms(100); }; } |
شرح برنامه میکروکنترلر به زبان بیسیک و زبان C
در برنامه گیرنده، اطلاعات از طریق واسط سریال میکروکنترلر دریافت و روی نمایشگر LCD نشان داده می شوند. برنامه به اینصورت طراحی شده است که میکروکنترلر، منتظر دریافت کاراکتر “t” می ماند و با دریافت آن، کاراکترهای بعدی را یکی پس از دیگری دریافت می کند و همه را در متغیر s قرار می دهد. این متغیر یک رشته با طول 10 کاراکتر است. عمل دریافت با دریافت کاراکتر “C” کامل و رشته دریافتی عینا روی ال سی دی کاراکتری نمایش داده می شود. پس از نمایش رشته s روی LCD مقدار موجود در این رشته پاک می شود تا برای دریافت اطلاعات بعدی آماده گردد. عملیات دریافت اطلاعات در برنامه Code Vision AVR به صورت وقفه ای و در برنامه Bascom AVR به صورت عادی انجام شده است.
توجه : در صورتیکه از برنامه نوشته شده در نرم افزار Bascom-AVR استفاده می کنید. پایه RW از LCD نشان داده شده در نقشه شماتیک را از میکروکنترلر، جدا و مستقیما به زمین وصل کنید.
توجه : در این پروژه, هم برای مدار فرستنده و هم برای مدار گیرنده, از کریستال خارجی 8MHz به عنوان مولد پالس ساعت استفاده شده است. بنابراین باید در جدول فیوزبیت های میکروکنترلر, کریستال خارجی فرکانس بالا را به عنوان مولد پالس ساعت انتخاب کنید.
ضمن تشکر و عرض سلام
امکانش هست که فایل پی سی بی کامل گیرنده و فرستنده رو برای انتقال دما و نمایش روی ال سی دی قرار بدین؟
ممنون
در این پروژه فایل پی سی بی گیرنده به همراه ال سی دی کاراکتری گنجانده نشده لطفا این فایل رو در پروژه قرار بدین
سپاسگزارم
سلام دوست عزیز
برای دریافت PCB مدار لطفا یک ایمیل به واحد پشتیبانی (آدرس ایمیل در صفحه تماس با ما، قابل مشاهده است) ارسال کنید، اگر فایل PCB این پروژه موجود باشد، همکاران ما برای شما ارسال خواهند نمود.
بله ممنون و سپاسگزارم
بنده ایمیل رو ارسال کردم
بسیار محتوای بالایی داره پروژه های موجود در سایت شما
فقط کاش امکانش بود و تنوع پروژه های وایرلس رادیویی افزایش پیدا میکرد