本帖最后由 firefirefire 于 2019-10-29 20:04 编辑
基于罗姆传感+智能云平台的骑行小助手
目录
一、作品开发背景
近年来,青年大众对运动的喜爱越来越浓厚。骑自行车,作为一项健康又时尚的锻炼方式,早就融入大众的生活之中了。无论是山地自行车还是普通自行车,都不再是一种代步工具,而是一种运动的时候,你会感觉,非常自由,又无比畅快。骑行人并不能知道他们当前骑行的车速、以及周围的环境状况等信息。于是,我们设计了这套骑行小助手系统。开发出一套能对自行车行驶状态进行自检的系统,检测当前骑行的速度以及光照强度,并做出相应反应。
二、作品功能介绍
设计中的自行车骑行助手系统使用了一系列的罗姆传感器来实现对自行车行驶状态及驾驶者身体数据的一系列检测。具体功能如下:
用户使用此系统的硬件设施装在自己的自行车后,任何人都可以利用电脑、手机浏览器,通过我们上位机云平台的一个链接,实时的查看骑行车所反馈的数据,比如说光照强度、骑行速度,进行实时监控。用户还可以设定一个自己骑行运动的里程目标,比如5km,我们的设备可以测量出已经骑行了多少距离,当前里程距离自己所定的目标距离还剩多少,还有个功能就是当光照强度低于一定时,车的灯会自动打开,提示当前光照强度过低,注意行驶安全。
本作品最大的特色就是实现了硬件设备与智能云设备的实时连接,并且将得到的数据通过网页的形式在手机、电脑浏览器中进行可视化显示。
三、软件开发平台及硬件模块介绍
软件部分:上位机开发平台:百度智能云下位机开发平台:keil uVision5,XCOM2.0串口调试助手,AiThinker_IDE一体化开发工具,Flash烧入工具。
数据传输:TCP通信,MQTT协议
硬件部分:
1. 罗姆照度接近传感器RPR-0521RS传感器:
利用罗姆照度接近传感器RPR-0521RS
检测当前自行车所行驶环境的光照数据,配合LED并做出对应的反应。
2. 罗姆霍尔传感器BD7411G传感器:
利用罗姆霍尔传感器BD7411G
检测当前车子行驶运动速度数据,使用户能在其它地方也能了解到当前车速,也能判断当前车子速度是否过快,提示骑友注意要安全行驶。
3.基于esp8266-12f的nodeMCU
esp8266通过mqtt协议将数据传输上报到云端,客户端可在网页中将得到的数据可视化显示。
4.罗姆arduino-UNO主板
对传感器进行控制,以及对数据的处理。
三、作品系统架构图——上位机、下位机介绍 下位机代码设计的主体开发思路
下位机的开发涉及到各个传感器模块的初始化程序、功能实现函数的构造,WiFi模块与单片机的串口通信程序,最重要的是要配置好各个传感器模块所占用的开发板资源,包括IO口,定时/计数器,串口等,合理安排单片机的内部资源,在合适的时间向正确的地址写入正确的数据。
重点程序实现原理如下:利用霍尔传感器检测自行车当前速度:罗姆霍尔传感器在感应到磁场的时候会发出低电平,在自行车车轮侧旁的钢圈上用热胶枪固定一放行磁石,再将霍尔传感器固定在自行车车轮内测钢圈上方一厘米处,当自行车在行驶的时候车轮内测钢圈上的磁石会伴随着车轮转动,磁石头部刚经过霍尔传感器正对方向的时候,霍尔传感器会发出低电平,当磁石尾部刚好离开的时候,霍尔传感器低电平会消失,利用单片机定时计数器记下磁石完整通过霍尔传感器的这段时间t,结合事前测量好的霍尔传感器的长度s,则自行车上磁石运动的瞬时速率可看成是v=t/2s,设磁石处到车轮圆心的距离为r,车轮外侧接地处距离车轮圆心的距离为R,则由同心圆不同点上运动角速度相同的特点可知U/R=u/r,这是我们要上报给云端的第一个数据DATA1,求得车轮外侧接地处的速度为U=u/r*R,且自系统通电开始,单片机每检测到一次磁石通过(由于磁石是固定在自行车内测的钢圈上的,说明车轮已经转了一圈,可以用一个变量k累加下自系统通电开始(自行车运动开始)以来所测得的磁石通过霍尔传感器的次数,即自行车车轮滚动的次数,若某时刻变量k的值为400,则说明当前车已经行驶了L=k*l米(L为所行使的总路程、k为车轮运动圈数、l为车轮外侧的周长)。至此,再通过单片机内部程序,由客户为今天的自行车运动量设置一个小目标,比如变量mylen=5000m,则可通过mylen-L=今天剩余的目标里程DATA2。再通过罗姆提供的照度传感器,测出当前骑行环境下的环境照度,当骑行环境照度低于一定程度的时候,照明灯会自行亮起。这个环境照度也是我们所需要上报到云端的一个数据DATA3。
上位机使用方法及其功能介绍:
2、可以看到如图所示的功能区,自行车上电后的行驶数据将在这得到保存,并通过可视化显示,提供给大家查看:
模块系统分布式结构图:
通信:Esp826612-f模组与arduino之间建立串口通信通信,arduino将所采集到的自行车行驶速率DATA1、行驶里程DATA2、骑行环境照度信息DATA3通过串口发至esp826612-f模组,esp826612-f模组通过TCP通信与附近热点建立连接,在通过MQTT协议向云端服务器发送报文。
定义发送报文的JSON字符串键值对:
#define Format_JSON_TH_ESP8266_JX "{\"requestId\":\"{%d}\", \"reported\":{\"speed\":%d.%d,\"light\":%d.%d,\"distance\":%d}}"
物模型属性及其数据:
物影子属性及其数据:
后台可视化数据源:
骑行小助手源代码.zip