基于STM32的智能(GPS+BC26)导盲系统
闲来无事,用手头STM32做个项目。
成品功能: STM32通过GPS模块采集位置数据,通过超声波监测距离,看前方是否有障碍物,有的话蜂鸣器提醒。数据显示在屏幕上,通过NB-IOT(BC26)模块连接阿里云物联网平台接受数据并实时监控。
材料
- STM32ZET6开发板(战舰V3)
- TFT显示屏(战舰有我用的2.7寸的)
- NB-IOT(BC26)模块
- GPS模块(ATK-NEO-6M GPS 模块)
- 超声波模块(HCSR04)
- 杜邦线
- 用keil5进行开发
开始制作。
制作过程
首先测试GPS模块,将例程下入板中测试。然后测试BC26模块,通过AT指令接入阿里云,成功连接后再通过STM32接入阿里云实现通信。最后加入超声波模块。进行组合测试。https://blog.csdn.net/weixin_42320020/article/details/115556492
GPS模块
GPS(ATK-NEO-6M GPS)模块
设置好后,模块接收NMEA码并解析出我们需要的数据。
例如:
每个都代表着不同的数据。可以参考:GPS的NMEA码的详细解释定义
具体的模块已经配置好了,我们使用就可以了。
硬件连接
- 将模块插入到开发板的ATK-MODULE接口(靠下插)即可。
- 短接: USART3_RX 和 GBC_TX 以及 USART3_TX 和 GBC_RX。
代码测试
- 将原子哥的代码下载到板子中进行测试。
- 通电测试(我开始在室内,等了好久都没有数据,后来搬到室外就有数据了,第一次连接需要等一会儿,在室外有数据之后,再回到室内就还有数据。)
-
这样即表示成功
NB-IOT(BC26)模块
这里需要添加几个展示。模块配置连接阿里云可以参考我上篇文章。基于STM32的NB-IOT(BC26)的温湿度监测系统
这样BC26和阿里云对接就搞定了。
将GSM模块加入BC26代码中
哪个作为基础代码都可以
- 将模块代码文件加入。
- 在keil中添加引入这个文件。
- 在主函数中添加初始化函数。
- 将位置数据添加到串口中。
{\"GeoLocation\":{\"E\":%.5f,\"N\":%.5f,\"G\":%.1f}
-
进行测试。
可以看到已经有数据了。
超声波模块
超声波模块工作原理:
(1)采用IO口TRIG触发测距,给最少10us的高电平信号。
(2)模块自动发送8个40khz的方波,自动检测是否有信号返回。
(3)有信号返回,通过IO口ECHO输出一个高电平,高电平持续时间就是超声波从发射到返回的时间,测试距离=(高电平时间声速(340M/s)/2(发射和回来的时间,所以要除以2))*
超声波STM32代码:
void Ultra_Ranging(float *p)
{
u8 i;
u32 j;
float Ultr_Temp;
for(i=0;i<5;i++)
{
TRIG_Send=1;
delay_ms(10);
TRIG_Send=0;
while(!ECHO_Reci);
while(ECHO_Reci)
{
delay_us(10);
j++;
}
Ultr_Temp+=340/2*j*10;
j=0;
delay_ms(60);
}
*p=Ultr_Temp/5/1000000;
}
将超声波代码加入到写好的代码中。进行测试。
可以看到效果跟预想的一样。
最后加入当超声波监测距离小于3米蜂鸣器报警。
这个项目就完成你了。
最后附上完整的项目文件。自行下载。
这个项目到这里就算完了。
还有很多不足的地方,希望大佬可以指正。也希望和爱好者交流学习。
禁止转载!!!
QQ:2039723308
VX:Shiboven