找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4096|回复: 13
打印 上一主题 下一主题
收起左侧

51单片机和stm32f1的NRF通信,stm32超声波避障,寻迹 (附效果图) 源程序

  [复制链接]
回帖奖励 100 黑币 回复本帖可获得 5 黑币奖励! 每人限 1 次
跳转到指定楼层
楼主
本帖最后由 胡胜朋 于 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, 下载次数: 83)

51hei图片20200224184601.png

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

IMG20200222210213.jpg

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

IMG20200222210551.jpg

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

IMG20200222210230.jpg

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

FN@T51PBBNUM`[WO8WA~5V0.png

合集.7z

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

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏7 分享淘帖 顶2 踩
回复

使用道具 举报

沙发
ID:627541 发表于 2020-2-23 21:35 | 只看该作者
本帖最后由 胡胜朋 于 2020-2-23 21:42 编辑

后期会更新
回复

使用道具 举报

板凳
ID:698512 发表于 2020-2-26 14:11 | 只看该作者
很不错的资源谢谢
回复

使用道具 举报

地板
ID:740455 发表于 2020-4-28 22:08 来自手机 | 只看该作者
请问楼主使用51是用的硬件SPI还是软件SPI?
回复

使用道具 举报

5#
ID:108573 发表于 2020-4-29 08:42 | 只看该作者
有空可以学习一下
回复

使用道具 举报

6#
ID:669679 发表于 2020-5-14 09:57 | 只看该作者
有没有基于STM32的按键控制LED模块+数码管模块+串口通信模块(或是ADC模块)的实验
回复

使用道具 举报

7#
ID:750635 发表于 2020-5-14 11:06 | 只看该作者
楼主这是STM32吗
回复

使用道具 举报

8#
ID:755472 发表于 2020-5-21 09:22 | 只看该作者
好东西,感谢楼主分享
回复

使用道具 举报

9#
ID:627541 发表于 2020-8-3 11:57 | 只看该作者

是的,stm32f103
回复

使用道具 举报

10#
ID:627541 发表于 2020-8-3 11:58 | 只看该作者
忆梦淅 发表于 2020-4-28 22:08
请问楼主使用51是用的硬件SPI还是软件SPI?

我使用的是硬件的spi,但是也可以使用软件的spi,不过有点麻烦。
回复

使用道具 举报

11#
ID:627541 发表于 2020-8-3 11:59 | 只看该作者
R.是桃子啊 发表于 2020-5-14 09:57
有没有基于STM32的按键控制LED模块+数码管模块+串口通信模块(或是ADC模块)的实验

这个不是有例程的吗
回复

使用道具 举报

12#
ID:627541 发表于 2020-8-3 14:05 | 只看该作者

是的,使用stm32f103
回复

使用道具 举报

13#
ID:307544 发表于 2020-8-4 09:19 | 只看该作者
通过NRF遥控有多少距离有测过吗?
回复

使用道具 举报

14#
ID:627541 发表于 2020-8-7 17:08 | 只看该作者
hzd530 发表于 2020-8-4 09:19
通过NRF遥控有多少距离有测过吗?

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

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表