# برنامه نویسی میکروکنترلر (MicroController) ها و MicroProcessor ها > برنامه نویسی سیستم های Embeded > مباحث عمومی کار با سخت افزارها، سنسورها و لوازم جانبی >  میکرو و ماژول RFM12 فرکانس 915 مگا هرتز

## singel

سلام دوستان 
من میخوام یه فرستنده گیرنده رادیویی (البته فعلا یه ریموت همراه گیرنده) درست کنم اما چیز زیاده در موردش نمی دونم توی اینترنت در مورد ماژول RFM12 فرکانس 915 مگا هرتز 
 مطلب دیدم اما نمی دونم چطوری ازش استفاده کنم
کار زیادی هم نمی خوام برام انجام بده فقط یک قطع و وصل ساده ، اگر دوستان زحمت بکشن و راهنمایی کنن ممنون میشم
البته با میکرو و برنامه بسکام :قلب:

----------


## alborz02

> سلام دوستان 
> من میخوام یه فرستنده گیرنده رادیویی (البته فعلا یه ریموت همراه گیرنده) درست کنم اما چیز زیاده در موردش نمی دونم توی اینترنت در مورد ماژول RFM12 فرکانس 915 مگا هرتز 
>  مطلب دیدم اما نمی دونم چطوری ازش استفاده کنم
> کار زیادی هم نمی خوام برام انجام بده فقط یک قطع و وصل ساده ، اگر دوستان زحمت بکشن و راهنمایی کنن ممنون میشم
> البته با میکرو و برنامه بسکام


سلام به دوستان

اگر برنامه نویسی با میکرو را بلد هستید می تونم کمکتون کنم.

در هر حال اطلاع بدید تا ببنیم چکار میشه کرد.

موفق باشید.

----------


## singel

با بسکام تا 70 تا 80 درصد میتونم بگم بلدم
و چیز های ساده مثل روبات کوچیک و ماشین حساب و دماسنج و ... ساختم

----------


## alborz02

سلام.
یه سئوال داشتم ، می دونید این ماژول ها در چه حالتی کار میکنه ؟

دیتا شیت RFM12 را از اینجا بگیرید و مطالعه کنید :
http://www.hoperf.com/upfile/RFM12.pdf

این صفحه را هم مطالعه کنید همراه با مثال بسکام هستش :
http://www.technofun.org/blog/2008/07/22/rmf12b-interfaced-to-an-atmel-avr-atmega88-running-bascom-code/

و همچنین این صفحه که یک نرم افزار محاسباتی ارائه داده:
http://www.technofun.org/blog/2009/01/24/rfm12-rfm12b-calculator/

البته امیدوارم سر در گم نشید !
به هر حال این صفحات را مطالعه کنید (البته اگر انگلیسی تون بد نباشه !)  بعد اطلاع بدید تا ببینیم چه کار میشه کرد.

البته من خودم با یک ماژول rf که ارتباط سریال داشت کار کردم.
که خیلی متفاوت نیست.

  اگه دوست داشته باشید در مورد کاری که کردم و در زمینه ی قفل رمزی بود می تونم براتون توضیح بدم.
موفق باشید.

----------


## alborz02

قیمت این ماژول ها الان چقدر هست ؟

این پروژه را برای خودتون می خواید یا که تجاری هست ؟

----------


## singel

از راهنمایی هایی که کردین تشکر فراوان میکنم



> قیمت این ماژول ها الان چقدر هست ؟


 

*ماژول RFM12 فرکانس 915 مگا هرتز*   شناسه محصول : 0501025
*ماژول فرستنده گیرنده* این کوچک ترین ماژول فرستنده و گیرنده موجود در بازار ایران است
که امکان بر قراری ارتباطی دو طرفه را می دهد 
به این نکته توجه کنید که که یک عدد از این ماژول ها هم فرستنده و هم گیرنده است به طوری که با استفاده از دو عدد از آنها می توان دو ربات و یا میکرو و... را به هم متصل کرد .
فرکانس آن قابل تنظیم بود و می تواند بین 67 کیلو تا 400 کیلو هرتز تنظیم شود.
سرعت انتقال اطلاعات بسیار زیاد ( بیش از 115 کیلو بیت در ثانیه )
فاصله کاری بیش از 100 متر 
ولتاژکاری 2.2 تا 5.4 ولت

قیمت: 38000  ریال






> این پروژه را برای خودتون می خواید یا که تجاری هست ؟


برای ارائه به دانشگاه میخوام ، پروژه پایان دوره





> البته من خودم با یک ماژول rf که ارتباط سریال داشت کار کردم.
> که خیلی متفاوت نیست.
> 
> اگه دوست داشته باشید در مورد کاری که کردم و در زمینه ی قفل رمزی بود می تونم براتون توضیح بدم.


اگر اینکار را بکنید ممنون میشم

----------


## singel

مطالبی هم که فرستاده بودید مطالعه میکنم و خبرش رو بهتون میدم
 :تشویق:

----------


## alborz02

> از راهنمایی هایی که کردین تشکر فراوان میکنم


خواهش می کنم کاری نکردم

اگر همه سعی کنیم چیزی که بلد هستیم را به کسانی که احتیاج دارند یاد بدهیم ، سرعت پیشرفت علم خیلی بیشتر خواهد بود...!

----------


## alborz02

سلام به دوستان طالب علم !




> برای ارائه به دانشگاه میخوام ، پروژه پایان دوره


به جهت اینکه گفتید برای پروژه ی دانشگاه می خواهید و خودم هم معمولا جواب آماده و مستقیم نمیدم و معتقدم که اگر شخص با صرف وقت و تفکر به مطلبی برسه اون مطلب را یاد میگیره و در ذهنش ماندگار میشه ؛ کد نویسی هاش را تا جایی که بشه نمیگم ، اما در مورد مراحلش و کارهایی که باید انجام بدید ، اگر بلد باشم راهنمایی تون می کنم !




> نقل قول:
> البته من خودم با یک ماژول rf که ارتباط سریال داشت کار کردم.
> که خیلی متفاوت نیست.
> 
> اگه دوست داشته باشید در مورد کاری که کردم و در زمینه ی قفل رمزی بود می تونم براتون توضیح بدم. 
> 
> 
> 
> 
> ...


ان شاء الله بعد از مطالعه ی اون منابعی که معرفی شد.




> قیمت: 38000  ریال


یعنی 3800 تومن ؟!!
خیلی خوبه ، همین فردا میرم یه جفتش را میخرم که یادی از قدیما کنیم...
قدیما حرف از 14 هزار تومن به بالا بود !




> به این نکته توجه کنید که یک عدد از این ماژول ها هم فرستنده و هم  گیرنده است .


این خیلی خوبه چون میشه ارتباط دو طرفه باشه ، اون ماژولی که من کار کردم فرستنده گیرنده بود.

----------


## alborz02

تا حالا با ماژول های RF کار کردید ؟

و یک نقل قول از خودم:



> یه سئوال داشتم ، می دونید این ماژول ها در چه حالتی کار میکنه ؟


جواب ؟

----------


## singel

> تا حالا با ماژول های RF کار کردید ؟


نه هنوز با ماژول rf کار نکردم و نمیدونم چطوری کار میکنه
البته این صفحه هایی که فرستاده بودید خیلی جالبه هم سورس هست و هم مدار با این تفاسیر نباید کار زیاد سختی باشه
من 2 تا ماژول سفارش دادم احتمالا تا یکی دو روز دیگه دستم میرسه

----------


## singel

این مدار که داخل سایت بود

----------


## singel

راستی در مورد این نرم افزار محاسباتی که داخل سایت بود اطلاعاتی دارید ؟

----------


## alborz02

> راستی در مورد این نرم افزار محاسباتی که داخل سایت بود اطلاعاتی دارید ؟


نه اطلاعات خاصی ندارم ، ان شاء الله وقت بکنم مطالعه می کنم و اطلاع میدم.

به احتمال زیاد چون ماژول هایی هستند که در فرکانسهای مختلف و شرایط مختلفی کار می کنند ، این نرم افزار کاربرد داره...باز هم میگم باید اون صفحات را مطالعه کنید...البته این نرم افزار یک ابزار هستش و فکر می کنم به کارتون هم نیاد.

----------


## alborz02

ضمنا برای اطلاعات بیشتر یه جستجویی در اینترنت در بین صفحات فارسی موجود بکنید که کم هم نیست ، مفید هستش.

----------


## singel

سلام این عکس ماژول به همراه کمی اطلاعات



RFM 12 ها یکی از پرقدرت ترین محصولات شرکت hoperf است . البته ماژول های قدرتمند تر دیگری از شرکت های مختلف وجود دارد که rfm12 ها در مقایسه با آنها بسیار ضعیف میباشد .

RFM12 یک ماژول نیمه دوطرفه با قابلیت های جالب و کاربردی در پروژه های ابتدایی و نیمه حرفه ای است .
برد این ماژول در بهترین شرایط تست شده به 200 متر میرسد .
این ماژول را میتوان در فرکانس های مختلفی راه اندازی کرد و حتی می توان مقدار دقیق فرکانس کاری آن را مشخص کرد . برای مثال میتوان آن را در فرکانس 912.48 MHZ راه اندازی کرد .
پس این مزیت میتواند در امنیت اطلاعات ما نقش مهمی را ایفا کند .


برخی مواقع نیاز داریم تا برد فرستنده و گیرنده ما محدود باشد مثلا میخواهیم اطلاعات را تا فاصله 5 متری ارسال کنیم و در فواصل بیش از 5 متر اطلاعات دریافت نشود .
این ماژول توانایی آن را دارد تا توان خروجی خود را تضعیف کند .
مثلا برای محدود کردن برد تا 5 متر میتوانیم توان خروجی را تا -21 db کاهش دهیم .
پس این قابلیت نیز میتواند در برخی موارد امنیت اطلاعات ما را تضمین کند .


RFM12 ها دارای بیت ریت بالایی هستند و در واقع میتوانند اطلاعات را با سرعت بسیار بالایی رد و بدل کنند .
در عمل سرعت 172000 bps با این ماژول تست شده و بخوبی کار میکند .
البته این نکته فراموش نشود که برای دستیابی به این بیت ریت میکرو باید با کریستال سرعت بالا کار کند .
در حالت کریستال 16 MHZ میتوان به این بیت ریت دست پیدا کرد .


در موقع خرید ماژول های RFM12 پشت ماژول جدولی موجود می باشد که فرکانس ماژول را مشخص کرده است .
مثلا 433 MHZ .
مزیت دیگر این ماژول این است که میتوان یک کلاک از آن برای میکرو گرفت .
که ماکزیمم آن تا 10MHZ می باشد .

*RFM12b :*
*این ماژول کاملا با ماژول RFM12 یکسان بوده و تنها تفاوت آن در توان خروجی آن می باشد که این ماژول دارای توان بیشتری نسبت به RFM12 می باشد . البته توان آن خیلی بیشتر از RFM12 نیست و در عمل تا 100 متر نسبت به RFM12 توفیق دارد .*

----------


## singel

$regfile = "m88def.dat"
$hwstack = 32
$swstack = 10
$framesize = 40

$crystal = 8000000
$baud = 19200

const File = "TxRx 1.05 .bas"
const Description = "RFM12 monitor program"

print
print Description
print File
print version()

RFM12_rst alias portc.5
config RFM12_rst = input

config portb = &b0010_1101

Test_pin alias portb.0

RFM12_cs alias Portb.2
set RFM12_cs

RFM12_sdi alias Portb.3

RFM12_sdo alias Pinb.4
set portb.4

RFM12_sck alias portb.5

RX_LED alias portd.5
config pind.5 = output

TX_LED alias portd.6
config pind.6 = output

Error_LED alias PORTd.7
config pind.7 = output

config Spi = Hard , Interrupt = Off , Data Order = Msb , Master = Yes , _
Polarity = Low , Phase = 0 , Clockrate = 4 , Noss = 1
spiinit

declare sub RFM12_SPI_wrt
declare sub RFM12_Tx(TxArray as byte)
declare sub RFM12_Rx(RxArray as byte)
declare sub RFM12_Tx_ready
declare sub RFM12_Rx_wait
declare sub RFM12_Get_Status_bit
declare sub SaveFlags
declare sub RFM12_Clear_FIFO
declare sub RFM12_Rx_on
declare sub RFM12_Init
declare sub PrintFlags

'From: RF12 Programing Guide
'Min Freq 430.24
'Max Freq 439.75
'in 2.5KHz steps
'
'That makes 3800 possible frequencies
'to choose from.

'Fc = the center Freq. in MHz
'Fr = the Freq. register value.
'Fc = 430 + Fr * 0.0025 (MHz)
'Fr = (Fc - 430) * 400
const Fc = 435.00
const Fr =(Fc - 430) * 400
const Fcmnd = &hA000 + Fr

'Payload can be up to 254 bytes.
'I have tested up to 128 bytes only.
'const Payload_Size = 128
const Payload_Size = 32
'const Payload_Size = 16
const PLS_plus1 = Payload_Size + 1

'make the test beacon length Payload_Size - 2
const Beacon = "123456789012345678901234567890"

dim Tempbit as bit
dim Temp as byte
dim TempW as word

dim SPI_Tx_wrd as word
dim SPI_Tx_L as byte at SPI_Tx_wrd overlay
dim SPI_Tx_H as byte at SPI_Tx_wrd + 1 overlay
dim SPI_Rx_wrd as word
dim SPI_Rx_L as byte at SPI_Rx_wrd overlay
dim SPI_Rx_H as byte at SPI_Rx_wrd + 1 overlay

dim Rx_Status_bit as bit
dim RxBuffer(PLS_plus1) as byte
dim RxString as string * Payload_Size at RxBuffer(1) overlay
RxBuffer(PLS_plus1) = 0

dim TxIndex as byte
dim TxBuffer(PLS_plus1) as byte
dim TxString as string * Payload_Size at TxBuffer(1) overlay
TxBuffer(PLS_plus1) = 0

dim Timeout as word
dim Cmnd as string * 4
dim Flags as byte

EchoFlag alias Flags.0
BeaconFlag alias Flags.1
SerMsgFlag alias Flags.2
RxOnFlag alias Flags.3
TxOnFlag alias Flags.4

'I have read somewhere that eram address 0 has a bug
'so I don't use it.
dim Dummy as eram word at 0
'ProgCntr must be at eram address 2.
'ProgCntr is incramented by the bootloader
'each time the chip is flashed.
dim ProgCntr as eram word at 2
dim SavedFlags as eram byte


TempW = ProgCntr
print "uC flashed " ; TempW ; " times."
print

'kill some time here while
'rfm12 does a power on reset.
reset RX_LED
reset TX_LED
reset Error_LED
waitms 500
set RX_LED
set TX_LED
set Error_LED

RFM12_Init
RFM12_Rx_on

Flags = SavedFlags
print "Echo = " ; EchoFlag
print "Beacon = " ; BeaconFlag
Cmnd = ""

do
   if BeaconFlag = 1 then
      'Tx a test beacon about once a second.
      TxString = Beacon
      print "Tx: " ; TxString
      RFM12_Tx TxBuffer(1)
      'now loop waiting for a reply msg.
      for temp = 1 to 255
         'poll RFM12 for Rx data.
         RFM12_Get_Status_bit
         if Rx_Status_bit = 1 then
            'Rx RxBuffer
            RFM12_Rx RxBuffer(1)
            print "Rx: " ; RxString
            if RxString <> TxString then
               reset Error_LED
               print "<>"
            endif
             RxString = ""
             exit for
          endif
          if temp = 255 then
            reset Error_LED
            print "no echo"
          endif
          'this delay gives the other module time to echo
          'back the beacon.
          'waitus 50        'at 38.3kbps, 32 byte payload
          'waitus 350       'at 19.2kbps, 128 bytes
          waitus 150       'at 19.2kbps, 32 bytes
          set Error_LED
      next temp
   else
      'poll RFM12 for Rx data.
      RFM12_Get_Status_bit
      if Rx_Status_bit = 1 then
         'reset RX_LED
         'Rx RxBuffer
         RFM12_Rx RxBuffer(1)
         print "Rx: " ; RxString
         if EchoFlag = 1 then
            print "Ec: " ; RxString
            'Tx RxBuffer.
            RFM12_Tx RxBuffer(1)
         endif
         'set RX_LED
       endif
    endif

    temp = inkey()
    if temp <> 0 then

      if temp = 27 then
         'press "esc" to get a command prompt.
         SPI_Tx_wrd = 0
         RFM12_SPI_wrt
         print
         print Description
         print File
         print version()
         print
         TempW = ProgCntr
         print "uC flashed " ; TempW ; " times."
         'print
         'print "Status word = " ; bin(SPI_Rx_H) ; "_" ; bin(SPI_Rx_L)
         PrintFlags
         print
         input "Command >" , Cmnd
         print
         RFM12_Rx_on
      elseif temp = 13 then
         print
         print "Tx: " ; TxString
         'Tx TxBuffer.
         RFM12_Tx TxBuffer(1)
         TxString = ""
         TxIndex = 0
      else
         'fill the TxBuffer until <cr> or full.
         if TxIndex < Payload_Size then
            print chr(temp);
            incr TxIndex
            TxBuffer(TxIndex) = temp
            Temp = TxIndex + 1
            TxBuffer(Temp) = 0
         endif
      endif
   endif


   if Cmnd <> "" then
      Select Case Cmnd
          case "u"
            'To start the bootloader without using the reset button.
            'Press "u <CR>"
            'then within 2+3=5 seconds press F4 to start the programer.
            print
            print "Press F4 to start upload."
             Waitms 3000
             'address of boot loader.
             'for mega168
             'goto &H1C00

             'for mega88
             goto &hC00

          case "c"
            'Input a hex command word value to send to RFM12.
            'For example enter: c0e0 <enter> will set the
            'ouput CLK to 10MHZ.
            'see the RFM12 Programing guide for commands.
            print
            input "Enter a Command Word in HEX >" , Cmnd
            SPI_Tx_wrd = hexval(Cmnd)
            RFM12_SPI_wrt
            print "RFM12 returned >" ; hex(SPI_Rx_wrd)

          case "b"
            toggle BeaconFlag
            if BeaconFlag = 1 then EchoFlag = 0
            SaveFlags
            PrintFlags

          case "e"
            toggle EchoFlag
            if EchoFlag = 1 then BeaconFlag = 0
            SaveFlags
            PrintFlags

          case else
            print "Unknown Command"

      end select
      print
      Cmnd = ""
   endif
loop

sub PrintFlags
   if BeaconFlag = 1 then
      print "Beacon ON"
   else
      print "Beacon OFF"
   endif
   if EchoFlag = 1 then
      print "Echo ON"
   else
      print "Echo OFF"
   endif
end sub

sub SaveFlags
   'save to eram
   Flags = Flags and 3
   SavedFlags = Flags
end sub

sub RFM12_Init
   local i as byte
   print "Init values:"
   'Initialize RFM12
   Restore Init_data
   for i = 1 to 14
      read SPI_Tx_wrd
      print hex(SPI_Tx_wrd)
      'send init data to RFM12.
      RFM12_SPI_wrt
      'waitms 100
   next i
   print
end sub

'*************************************************  **********************
'The following data lines are RFM12 commands used to initialize the device.
'read the RFM12 progamming guide and data sheets for a complete
'description of these commands.
'
'Configuration settings:
'
'&h80D8 = Configure module for 433Mhz band.
'
'RF center Freq. setting
'select freq with const "Fc" above.
'Fcmnd is a constant that holds the Freq command.
'see the "const" statments at the top of this code.
'example: &hA000 + Fr = &hA7D0 for 435MHz
'
'To change the data rate the following values will need to be adjusted.
'
'bit rate
'&hC611 = 19.2kbps works well at 8MHz
'&hC608 = 38.3kbps works at 8MHz
'
'Rx band width
'&h94A0 = Rx BW = 134KHz works at 8MHz
'&h9480 = 200kHz works at 8MHz
'
'Tx deviation
'&h9850  = 90kHz  works at 8MHz
'&h9870  = 120kHz  works at 8MHz

Init_data:
data &h80D8% , &h8298% , Fcmnd% , &hC611% , &h94A0% , &hC2AC% , &hCA81%
data &hCED4% , &hC483% , &h9850% , &hCC17% , &hE000% , &hC800% , &hC040%
'*************************************************  ************************

sub RFM12_Clear_FIFO
   'Clear FIFO
   SPI_Tx_wrd = &hCA81
   RFM12_SPI_wrt
   SPI_Tx_wrd = &hCA83
   RFM12_SPI_wrt
end sub

sub RFM12_Tx(TxArray as byte)
   local i as byte
   reset TX_LED
   'turn on Tx
   SPI_Tx_wrd = &h8239
   RFM12_SPI_wrt
   TxOnFlag = 1
   waitus 150
   'Send Preamble.
   restore TxPreamble_data
   for i = 1 to 5
      read SPI_Tx_wrd
      RFM12_Tx_ready
      if Timeout = 0 then exit for
      RFM12_SPI_wrt
   next i
   'Send payload.
   for i = 1 To Payload_Size
      RFM12_Tx_ready
      if Timeout = 0 then exit for
      SPI_Tx_wrd = &hB800 + TxArray(i)
      RFM12_SPI_wrt
   next i
   RFM12_Tx_ready
   RFM12_Rx_on
   set TX_LED
end sub

TxPreamble_data:
data &hB8AA% , &hB8AA% , &hB8AA% , &hB82D% , &hB8D4%

sub RFM12_Tx_ready
   Reset RFM12_cs
   Timeout = 65500
   While RFM12_sdo = 0
      decr Timeout
      waitus 6
      if Timeout = 0 then
         print "Tx Timeout"
         exit while
      endif
   Wend
end sub

sub RFM12_Rx_on
   'Start Rx
   SPI_Tx_wrd = &h8299
   RFM12_SPI_wrt
   RFM12_Clear_FIFO
   RxOnFlag = 1
   waitus 80
end sub

sub RFM12_Rx(RxArray as byte)
   local i as byte
   timeout = 1
   reset RX_LED
   SPI_Tx_wrd = &hB000
   for i = 1 To Payload_Size
      RFM12_Rx_wait
      if Timeout = 0 then
         set RX_LED
         set Error_LED
         exit for
      endif
      RFM12_SPI_wrt
      RxArray(i) = SPI_Rx_L
   next i
   RxArray(i) = 0
   RFM12_Clear_FIFO
   set RX_LED
end sub

sub RFM12_Rx_wait
   Timeout = 35500
   do
      RFM12_Get_Status_bit
      'timeout if nothing happens.
      decr Timeout
      if Timeout = 0 then
         reset Error_LED
         print "Rx Timeout"
         exit do
      endif
   loop until Rx_Status_bit = 1
end sub

sub RFM12_Get_Status_bit
   reset RFM12_sdi
   reset RFM12_cs
   set RFM12_sck
   Rx_Status_bit = RFM12_sdo
   reset RFM12_sck
   set RFM12_cs
end sub

sub RFM12_SPI_wrt
   'Send word (SPI_Tx_wrd) to RFM12.
   'Also receive word (SPI_Rx_wrd).
   'RFM12 Chip select
   reset RFM12_cs
   'send hi byte.
   SPI_Rx_H = spimove(SPI_Tx_H)
   'send lo byte.
   SPI_Rx_L = spimove(SPI_Tx_L)
   'deselect chip.
   set RFM12_cs
end sub

----------


## singel

سلام ضمن تشکر از  دوست عزیزم alborz02
از دوستان خواهش میکنم اطلاعاتشون رو دریغ نکنن

زکات علم که یادتون هست !
اطلاعات خیلی خیلی کوچیک هم برای من و امثال من خیلی مفید و کارگشاست

----------


## alborz02

> RFM 12 ها یکی از پرقدرت ترین محصولات شرکت hoperf  است . البته ماژول های قدرتمند تر دیگری از شرکت های مختلف وجود دارد که  rfm12 ها در مقایسه با آنها بسیار ضعیف میباشد .





> ...این ماژول را میتوان در فرکانس های مختلفی راه اندازی  کرد و حتی می توان مقدار دقیق فرکانس کاری آن را مشخص کرد . برای مثال  میتوان آن را در فرکانس 912.48 MHZ راه اندازی کرد ....


؟؟!!

این همه مطلبی که نوشتید چی هست ؟؟

اینها را که با یک نگاه گذرا میشه فهمید !


زیاد خودتون را درگیر این اطلاعات نکنید ! اینها زیاد مهم نیستند

----------


## alborz02

> اطلاعات خیلی خیلی کوچیک هم برای من و امثال من خیلی مفید و کارگشاست


آفرین !

اینجاست که به این اطلاعات خیلی خیلی کوچیک میگند فوت و فن کاسه گری...

ناراحتش نباش راه میندازیمش

----------


## singel

دوست عزیز در مورد کدی که داخل سایت گذاشتم یکسری سوال داشتم مثلا این کد چیه و چکار میکنه


config Spi = Hard , Interrupt = Off , Data Order = Msb , Master = Yes , _
Polarity = Low , Phase = 0 , Clockrate = 4 , Noss = 1
spiinit

----------


## joker

Action
 Configures the SPI related statements..  
http://avrhelp.mcselec.com/index.html?config_spi.htm
این چند خط پروتکل SPI را روی میکرو کنترلرهای اتمل پیکربندی میکنه

برای شروع به کار یک پروگرامر اول بخرید ( مدلهای Usb به قیمت حدود 5-6 هزارتومنی توی بازار هست )
یک یا دو عدد میکرو کنترلر سری atmega8  یا atmega16 یا اتمگا 32 تهیه کنید
یک بردبورد برای بستن موقت مدار بخرید
و دیگه بقیه کارها را طبق نقشه پیش برید ، و نهایتا سورسی که گذاشتید را یکبار با bascom کامپایل کنید و فایل hex اون را با استفاده از پروگرامری که دارید روی میکروکنترلر بریزید وبعد از وصل کردن تغذیه مدار دیگه منتظر کارکردنش باشید.

----------


## alborz02

سلام.




> یک یا دو عدد میکرو کنترلر سری atmega8  یا atmega16 یا اتمگا 32 تهیه کنید
> یک بردبورد برای بستن موقت مدار بخرید


دو عدد میکرو لازم دارید و دو عدد برد بورد.

----------


## singel

سلام عزیزان ممنون از راهنمایی هاتون
اما میخوام بدونم 
1-   SPI  به چه دردی میخوره و کجا بکار میاد
2- این کدی که اینجا قرار دادم چه چیزی رو ارسال میکنه بالای این کد نوشته شده rx,tx یعنی بروی هر دو میکرو باید همین برنامه کامپایل بشه (هم فرستنده و هم گیرنده)
3- ایا مدارش همینه یعنی به همین سادگی به میکرو متصل میشه


دیگه برای تست کردنش طاقت ندارم

----------


## singel

سلام دوستان
امروز ماژول ها که سفارش داده بودم به دستم رسید فقط چند تا سوال دارم
1- توی نقشه مداری که فرستادم rx , tx  میکرو به کجا وصل میشه
2- چه نوع اطلاعاتی رو میشه رد و بدل کرد
3- شماره های 4 و 5 و 8 روی ماژول باید ازاد باشه یا به جایی وصل میشه

----------


## alborz02

> سلام دوستان
> امروز ماژول ها که سفارش داده بودم به دستم رسید فقط چند تا سوال دارم
> 1- توی نقشه مداری که فرستادم rx , tx  میکرو به کجا وصل میشه
> 2- چه نوع اطلاعاتی رو میشه رد و بدل کرد
> 3- شماره های 4 و 5 و 8 روی ماژول باید ازاد باشه یا به جایی وصل میشه


سلام.

کار پروژه به کجا رسید ؟

----------


## alborz02

> دوست عزیز در مورد کدی که داخل سایت گذاشتم یکسری سوال داشتم مثلا این کد چیه و چکار میکنه
> 
> 
> config Spi = Hard , Interrupt = Off , Data Order = Msb , Master = Yes , _
> Polarity = Low , Phase = 0 , Clockrate = 4 , Noss = 1
> spiinit


مراجعه کنید به کتاب میکرو کنترلرهای AVR نوشته ی علی کاهه انتشارات نص

فصل ارتباط سریال SPI

----------


## alborz02

> سلام عزیزان ممنون از راهنمایی هاتون
> اما میخوام بدونم 
> 1-   SPI  به چه دردی میخوره و کجا بکار میاد
> 2- این کدی که اینجا قرار دادم چه چیزی رو ارسال میکنه بالای این کد نوشته شده rx,tx یعنی بروی هر دو میکرو باید همین برنامه کامپایل بشه (هم فرستنده و هم گیرنده)
> 3- ایا مدارش همینه یعنی به همین سادگی به میکرو متصل میشه
> 
> 
> دیگه برای تست کردنش طاقت ندارم


به کتابی که معرفی کردم مراجعه کنید.

برای ارتباط برقرار کردن بین دو وسیله (میکرو) می تونیم از راههای مختلفی استفاده کنیم. یکی از این راهها ارتباط SPI هست.

----------


## singel

سلام
ببخشید چند وقتی که کارم زیاد شده و نتونستم کاری انجام بده اما الان دارم مدارش رو میبندم تا فردا هم خبرش رو میدم 
یکسری اطلاعات جدید هم از اینترنت گرفتم که اگر نتیجه بده بصورت کامل توی سایت قرار میدم :قلب:

----------


## singel

سلام دوستان عزیز
الان که دارم این من رو مینویسم عرق شرم رو پیشونیم نشسته ، نمی دونم با چه رویی دوباره دارم سوال میپرسم
مقصرش یکی دانشگاه بود و اون یکی  پروژه ای که برای اداره دارم مینویسم که فرصت هیچ کاری بهم نداد 
خلاصه بازم ببخشید
من این مدار رو بستم یکم هم توی اینترنت تحقیق کردم

یک کد برای فرستنده گیرنده از میکرو به میکرو نوشتم که وقتی روی مدار هم بستم کار کرد
اما همونو به این ماژول ها وصل کردم دیگه کار نکرد ، کد ها رو براتون میزارم لطفا بررسی کنید ببینید اصلا اینجوری کار میکنه
نقشه مدار هم همون عکسی که براتون فرستادم البته با میکرو atmega32

کد فرستنده :


$regfile = "m32def.dat" : $crystal = 8000000
Dim A As Byte , B As Byte
Config Spi = Hard , Interrupt = On , Data Order = Lsb , Polarity = High , Phase = 0 , Clockrate = 128
Spiinit
Do
B = 120
Spiout B , 1
Waitms 50
Loop
End


کد گیرنده : 


 $regfile = "m32def.dat" : $crystal = 8000000
Dim A As Byte , B As Byte
Config Portc = Output
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Pina.2 , Db5 = Pina.3 , Db6 = Pina.4 , Db7 = Pina.5 , Rs = Pina.0 , E = Pina.1
Config Spi = Hard , Interrupt = On , Data Order = Lsb , Polarity = High , Phase = 0 , Clockrate = 128
Spiinit
Set Portc
Locate 1 , 1 : Lcd "daryaft  :"
Do
 Spiin B , 1
 Locate 2 , 1 : Lcd B
Waitms 50
Loop
End

----------


## alborz02

> سلام دوستان عزیز
> الان که دارم این من رو مینویسم عرق شرم رو پیشونیم نشسته ، نمی دونم با چه رویی دوباره دارم سوال میپرسم
> مقصرش یکی دانشگاه بود و اون یکی  پروژه ای که برای اداره دارم مینویسم که فرصت هیچ کاری بهم نداد 
> خلاصه بازم ببخشید
> من این مدار رو بستم یکم هم توی اینترنت تحقیق کردم


سلام.
چه عجب تشریف آوردید !

----------


## alborz02

> من این مدار رو بستم یکم هم توی اینترنت تحقیق کردم
> 
> یک کد برای فرستنده گیرنده از میکرو به میکرو نوشتم که وقتی روی مدار هم بستم کار کرد



مدار را چطوری بستید که کار کرد ؟





> اما همونو به این ماژول ها وصل کردم دیگه کار نکرد


از سالم بودن ماژول ها اطمینان حاصل کنید...

یک روش برای این کار اینست که ماژول ها را به همراه میکرو ها کنار یک رادیو بگذارید ، اگر صدای پارازیت از رادیو اومد ، مشخصه که ماژولها سالم هستند.


در مورد مراحل بعدی ، در آینده صحبت می کنیم...

----------


## golshahr

سلام من تاپیک شما ها رو الان دیدم .راستش من هم دارم رو این ماژول کار میکنم ولی جوابی نگرفتم .من هم بر اساس سورس هائی که تو اینترنت پیدا کردم برنامه رو نوشتم ولی کار نکرد نمی دونم مشکل کار کجاست اگر شما ها کار کردید واقعا خوشحال میشم که از اطلاعات تون استفاده کنم . راستش خیلی وفته گیر کردم .خیلی خوشحال شدم که دیدم اینجا تاپیک راجع به RFM12b هست.

----------


## alborz02

> سلام من تاپیک شما ها رو الان دیدم .راستش من هم دارم رو این ماژول کار میکنم ولی جوابی نگرفتم .من هم بر اساس سورس هائی که تو اینترنت پیدا کردم برنامه رو نوشتم ولی کار نکرد نمی دونم مشکل کار کجاست اگر شما ها کار کردید واقعا خوشحال میشم که از اطلاعات تون استفاده کنم . راستش خیلی وفته گیر کردم .خیلی خوشحال شدم که دیدم اینجا تاپیک راجع به RFM12b هست.


سلام ؛

خوبه که بالاخره یه نفر پیدا شد تا این بحث را به یه جایی برسونیم ، اون دوست قبلیمون که دیگه خبریشون نشد...

ان شاء الله که بتونیم با کمک همدیگه جواب بگیریم ،

برای شروع یه شرحی از کاری که می خواهید انجام بدید (نوع مدار یا پروژه و...)  و همچنین تلاشهایی که انجام دادید ، بدهید.


موفق باشید.

----------

