标题: 51单片机和stm32f1的NRF通信,stm32超声波避障,寻迹 (附效果图) 源程序 [打印本页]

作者: 胡胜朋    时间: 2020-2-22 22:11
标题: 51单片机和stm32f1的NRF通信,stm32超声波避障,寻迹 (附效果图) 源程序
本帖最后由 胡胜朋 于 2020-2-25 10:25 编辑

     利用普中的51开发板和stm32f1开发板,其中51的开发板只做为发射端,stm32的开发板只作为接收端,另外在网上的很多NRF的例程,都是有自动应答(即在发送端发送完数据完成,接收端接收到数据之后会返回给发送端数据,来表示自己已经接收到数据),在我的代码中我将这些删掉很多代码,因为我在刚开始学的时候,特别怕麻烦,一看到官方的代码,就头大,所以我是51发数据,51开发板上提供了四个独立按键,k1~k4,我是按下一个按键,就给32发送一个数据,(如果不按的话,就不发送)k1~k4,分别发送上(up)下(down)左(left)右(right),那么怎么样判断32是否接收到数据,在32的循环中,我将数据区的值,显示在液晶屏上,如果接受到了数据,那么就会显示,up,down,left,right其中一个,具体是哪个,取决于你按下的按键就可以了,另外32接受到数据之后,我没有让它返回给发送端一个值,也就是说发射端并不知道对方是否接收到,不过我亲测,一按下就可以接收到,另外在32的代码中,我将每一个功能的函数,都写成一个自定义函数,这样在主函数中就会显得简洁,看起来舒服些。                                    nRF24L01是由NORDIC生产的工作在2.4GHz~2.5GHzISM 频段的单片无线收发器芯片,输出功率频道选择和协议的设置可以通过SPI 接口进行设置,发射数据时,首先将nRF24L01配置为发射模式:接着把接收节点地址TX_ADDR和有效数据TX_PLD按照时序由SPI口写入nRF24L01缓存区,TX_PLD必须在CSN为低时连续写入,而TX_ADDR在发射时写入一次即可,然后CE置为高电平并保持至少10μs,延迟130μs后发射数据;若自动应答开启,那么nRF24L01在发射数据后立即进入接收模式,接收应答信号(自动应答接收地址应该与接收节点地址TX_ADDR一致)。如果收到应答,则认为此次通信成功,TX_DS置高,同时TX_PLDTXFIFO中清除;若未收到应答,则自动重新发射该数据(自动重发已开启),若重发次数(ARC)达到上限,MAX_RT置高,TXFIFO中数据保留以便再次重发;MAX_RTTX_DS置高时,使IRQ变低,产生中断,通知MCU。最后发射成功时,CE为低则nRF24L01进入空闲模式1;若发送堆栈中有数据且CE为高,则进入下一次发射;若发送堆栈中无数据且CE为高,则进入空闲模式2
在32的开放板上,我主要实现的功能是1:利用超声波模块测出障碍物的距离,并显示在液晶屏上
                                                             2:利用ds18b20模块测环境温度,并显示在液晶屏上
                                                             3:测出32开发板芯片内部的温度,并显示在液晶屏上
                                                             4:NRF的状态是否存在,存在显示success,不存在显示error
                                                             5:显示NRF接收到的值
  注:完整的功能是:1:能够进行超声波避障的小车 2:自动寻迹的小车,3:通过51来遥控的小车,具体是避障还是寻迹还是遥控,可以通过NRF在51开发板上选择,不过由于时间紧,缺少一些小零件,没有完全实现,但是主要功能已经完成,我会尽快更新。本工程的代码以压缩包的形式上传在附件中,另外有功能实现的效果图(图片的形式),以及所用到的模块的使用方法(PPT的形式)。

51hei图片20200224184601.png (41.15 KB, 下载次数: 100)

51hei图片20200224184601.png

IMG20200222210213.jpg (4.04 MB, 下载次数: 100)

IMG20200222210213.jpg

IMG20200222210551.jpg (4.36 MB, 下载次数: 86)

IMG20200222210551.jpg

IMG20200222210230.jpg (4.18 MB, 下载次数: 91)

IMG20200222210230.jpg

FN@T51PBBNUM`[WO8WA~5V0.png (231.33 KB, 下载次数: 101)

FN@T51PBBNUM`[WO8WA~5V0.png

合集.7z

2.62 MB, 下载次数: 116, 下载积分: 黑币 -5


作者: 胡胜朋    时间: 2020-2-23 21:35
本帖最后由 胡胜朋 于 2020-2-23 21:42 编辑

后期会更新
作者: jian4dan    时间: 2020-2-26 14:11
很不错的资源谢谢
作者: 忆梦淅    时间: 2020-4-28 22:08
请问楼主使用51是用的硬件SPI还是软件SPI?
作者: 神出没    时间: 2020-4-29 08:42
有空可以学习一下
作者: R.是桃子啊    时间: 2020-5-14 09:57
有没有基于STM32的按键控制LED模块+数码管模块+串口通信模块(或是ADC模块)的实验
作者: 940512424    时间: 2020-5-14 11:06
楼主这是STM32吗
作者: w254489035    时间: 2020-5-21 09:22
好东西,感谢楼主分享
作者: 胡胜朋    时间: 2020-8-3 11:57
940512424 发表于 2020-5-14 11:06
楼主这是STM32吗

是的,stm32f103
作者: 胡胜朋    时间: 2020-8-3 11:58
忆梦淅 发表于 2020-4-28 22:08
请问楼主使用51是用的硬件SPI还是软件SPI?

我使用的是硬件的spi,但是也可以使用软件的spi,不过有点麻烦。
作者: 胡胜朋    时间: 2020-8-3 11:59
R.是桃子啊 发表于 2020-5-14 09:57
有没有基于STM32的按键控制LED模块+数码管模块+串口通信模块(或是ADC模块)的实验

这个不是有例程的吗
作者: 胡胜朋    时间: 2020-8-3 14:05
940512424 发表于 2020-5-14 11:06
楼主这是STM32吗

是的,使用stm32f103
作者: hzd530    时间: 2020-8-4 09:19
通过NRF遥控有多少距离有测过吗?
作者: 胡胜朋    时间: 2020-8-7 17:08
hzd530 发表于 2020-8-4 09:19
通过NRF遥控有多少距离有测过吗?

这个没有测过,我用的都是10m以内,很灵敏,每次信号都接受到了




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1