找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 5495|回復(fù): 13
收起左側(cè)

51單片機(jī)和stm32f1的NRF通信,stm32超聲波避障,尋跡 (附效果圖) 源程序

  [復(fù)制鏈接]
回帖獎(jiǎng)勵(lì) 100 黑幣 回復(fù)本帖可獲得 5 黑幣獎(jiǎng)勵(lì)! 每人限 1 次
ID:627541 發(fā)表于 2020-2-22 22:11 | 顯示全部樓層 |閱讀模式
本帖最后由 胡勝朋 于 2020-2-25 10:25 編輯

     利用普中的51開發(fā)板和stm32f1開發(fā)板,其中51的開發(fā)板只做為發(fā)射端,stm32的開發(fā)板只作為接收端,另外在網(wǎng)上的很多NRF的例程,都是有自動(dòng)應(yīng)答(即在發(fā)送端發(fā)送完數(shù)據(jù)完成,接收端接收到數(shù)據(jù)之后會(huì)返回給發(fā)送端數(shù)據(jù),來(lái)表示自己已經(jīng)接收到數(shù)據(jù)),在我的代碼中我將這些刪掉很多代碼,因?yàn)槲以趧傞_始學(xué)的時(shí)候,特別怕麻煩,一看到官方的代碼,就頭大,所以我是51發(fā)數(shù)據(jù),51開發(fā)板上提供了四個(gè)獨(dú)立按鍵,k1~k4,我是按下一個(gè)按鍵,就給32發(fā)送一個(gè)數(shù)據(jù),(如果不按的話,就不發(fā)送)k1~k4,分別發(fā)送上(up)下(down)左(left)右(right),那么怎么樣判斷32是否接收到數(shù)據(jù),在32的循環(huán)中,我將數(shù)據(jù)區(qū)的值,顯示在液晶屏上,如果接受到了數(shù)據(jù),那么就會(huì)顯示,up,down,left,right其中一個(gè),具體是哪個(gè),取決于你按下的按鍵就可以了,另外32接受到數(shù)據(jù)之后,我沒有讓它返回給發(fā)送端一個(gè)值,也就是說發(fā)射端并不知道對(duì)方是否接收到,不過我親測(cè),一按下就可以接收到,另外在32的代碼中,我將每一個(gè)功能的函數(shù),都寫成一個(gè)自定義函數(shù),這樣在主函數(shù)中就會(huì)顯得簡(jiǎn)潔,看起來(lái)舒服些。                                    nRF24L01是由NORDIC生產(chǎn)的工作在2.4GHz~2.5GHzISM 頻段的單片無(wú)線收發(fā)器芯片,輸出功率頻道選擇和協(xié)議的設(shè)置可以通過SPI 接口進(jìn)行設(shè)置,發(fā)射數(shù)據(jù)時(shí),首先將nRF24L01配置為發(fā)射模式:接著把接收節(jié)點(diǎn)地址TX_ADDR和有效數(shù)據(jù)TX_PLD按照時(shí)序由SPI口寫入nRF24L01緩存區(qū),TX_PLD必須在CSN為低時(shí)連續(xù)寫入,而TX_ADDR在發(fā)射時(shí)寫入一次即可,然后CE置為高電平并保持至少10μs,延遲130μs后發(fā)射數(shù)據(jù);若自動(dòng)應(yīng)答開啟,那么nRF24L01在發(fā)射數(shù)據(jù)后立即進(jìn)入接收模式,接收應(yīng)答信號(hào)(自動(dòng)應(yīng)答接收地址應(yīng)該與接收節(jié)點(diǎn)地址TX_ADDR一致)。如果收到應(yīng)答,則認(rèn)為此次通信成功,TX_DS置高,同時(shí)TX_PLDTXFIFO中清除;若未收到應(yīng)答,則自動(dòng)重新發(fā)射該數(shù)據(jù)(自動(dòng)重發(fā)已開啟),若重發(fā)次數(shù)(ARC)達(dá)到上限,MAX_RT置高,TXFIFO中數(shù)據(jù)保留以便再次重發(fā);MAX_RTTX_DS置高時(shí),使IRQ變低,產(chǎn)生中斷,通知MCU。最后發(fā)射成功時(shí),CE為低則nRF24L01進(jìn)入空閑模式1;若發(fā)送堆棧中有數(shù)據(jù)且CE為高,則進(jìn)入下一次發(fā)射;若發(fā)送堆棧中無(wú)數(shù)據(jù)且CE為高,則進(jìn)入空閑模式2。
在32的開放板上,我主要實(shí)現(xiàn)的功能是1:利用超聲波模塊測(cè)出障礙物的距離,并顯示在液晶屏上
                                                             2:利用ds18b20模塊測(cè)環(huán)境溫度,并顯示在液晶屏上
                                                             3:測(cè)出32開發(fā)板芯片內(nèi)部的溫度,并顯示在液晶屏上
                                                             4:NRF的狀態(tài)是否存在,存在顯示success,不存在顯示error
                                                             5:顯示NRF接收到的值
  注:完整的功能是:1:能夠進(jìn)行超聲波避障的小車 2:自動(dòng)尋跡的小車,3:通過51來(lái)遙控的小車,具體是避障還是尋跡還是遙控,可以通過NRF在51開發(fā)板上選擇,不過由于時(shí)間緊,缺少一些小零件,沒有完全實(shí)現(xiàn),但是主要功能已經(jīng)完成,我會(huì)盡快更新。本工程的代碼以壓縮包的形式上傳在附件中,另外有功能實(shí)現(xiàn)的效果圖(圖片的形式),以及所用到的模塊的使用方法(PPT的形式)。

51hei圖片20200224184601.png
IMG20200222210213.jpg
IMG20200222210551.jpg
IMG20200222210230.jpg
FN@T51PBBNUM`[WO8WA~5V0.png

合集.7z

2.62 MB, 下載次數(shù): 116, 下載積分: 黑幣 -5

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:627541 發(fā)表于 2020-2-23 21:35 | 顯示全部樓層
本帖最后由 胡勝朋 于 2020-2-23 21:42 編輯

后期會(huì)更新
回復(fù)

使用道具 舉報(bào)

ID:698512 發(fā)表于 2020-2-26 14:11 | 顯示全部樓層
很不錯(cuò)的資源謝謝
回復(fù)

使用道具 舉報(bào)

ID:740455 發(fā)表于 2020-4-28 22:08 來(lái)自觸屏版 | 顯示全部樓層
請(qǐng)問樓主使用51是用的硬件SPI還是軟件SPI?
回復(fù)

使用道具 舉報(bào)

ID:108573 發(fā)表于 2020-4-29 08:42 | 顯示全部樓層
有空可以學(xué)習(xí)一下
回復(fù)

使用道具 舉報(bào)

ID:669679 發(fā)表于 2020-5-14 09:57 | 顯示全部樓層
有沒有基于STM32的按鍵控制LED模塊+數(shù)碼管模塊+串口通信模塊(或是ADC模塊)的實(shí)驗(yàn)
回復(fù)

使用道具 舉報(bào)

ID:750635 發(fā)表于 2020-5-14 11:06 | 顯示全部樓層
樓主這是STM32嗎
回復(fù)

使用道具 舉報(bào)

ID:755472 發(fā)表于 2020-5-21 09:22 | 顯示全部樓層
好東西,感謝樓主分享
回復(fù)

使用道具 舉報(bào)

ID:627541 發(fā)表于 2020-8-3 11:57 | 顯示全部樓層

是的,stm32f103
回復(fù)

使用道具 舉報(bào)

ID:627541 發(fā)表于 2020-8-3 11:58 | 顯示全部樓層
憶夢(mèng)淅 發(fā)表于 2020-4-28 22:08
請(qǐng)問樓主使用51是用的硬件SPI還是軟件SPI?

我使用的是硬件的spi,但是也可以使用軟件的spi,不過有點(diǎn)麻煩。
回復(fù)

使用道具 舉報(bào)

ID:627541 發(fā)表于 2020-8-3 11:59 | 顯示全部樓層
R.是桃子啊 發(fā)表于 2020-5-14 09:57
有沒有基于STM32的按鍵控制LED模塊+數(shù)碼管模塊+串口通信模塊(或是ADC模塊)的實(shí)驗(yàn)

這個(gè)不是有例程的嗎
回復(fù)

使用道具 舉報(bào)

ID:627541 發(fā)表于 2020-8-3 14:05 | 顯示全部樓層

是的,使用stm32f103
回復(fù)

使用道具 舉報(bào)

ID:307544 發(fā)表于 2020-8-4 09:19 | 顯示全部樓層
通過NRF遙控有多少距離有測(cè)過嗎?
回復(fù)

使用道具 舉報(bào)

ID:627541 發(fā)表于 2020-8-7 17:08 | 顯示全部樓層
hzd530 發(fā)表于 2020-8-4 09:19
通過NRF遙控有多少距離有測(cè)過嗎?

這個(gè)沒有測(cè)過,我用的都是10m以內(nèi),很靈敏,每次信號(hào)都接受到了
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表