一年前,我去永辉买菜,二十分钟后回来,发现停门口的电瓶车不见了。
后来我又买了一辆电瓶车。
我又买了一件雨衣,下雨天时骑车用。雨衣刚买回来感觉还不错,装袋子里刚刚好,一点多余空间都不给,浑然天成的赶脚。
雨衣用了一次过后:
就再也装不回去了……
想象一下,熟练的工厂工人将崭新平整的雨衣塞进了刚刚好的包装里,交到我这样的手残党客户手里,我要想把使用过后有褶皱的雨衣再塞回去,花上个小半天应该也能行。不说了,设计包装的师傅出来挨打。袋子给大一点,废不了几块布料啊。
咦?为什么我要吐槽雨衣?
后来我买了辆电瓶车,日常上两把锁的情况下。还一直想着给它加个防盗追踪功能,却迟迟动不了手。差不多一年过去了,最近我有种预感,车近期有被盗的卦象(其实是无脸再拖延),于是决定着手来做这个防盗追踪功能。
对了,说一下我平时使用电瓶车遇到的问题。
首先是怕被偷的问题,电瓶和车子被偷风险都挺大。
再就是平时充电的问题,车棚里车子多得很,来往停车取车人较多,如果有人不小心把你充电器插头碰掉了,第二天上班就只能安排其他的交通工具了,我遇到过两次这种情况,特别麻烦。
这次刚好手上有一块Tinkernode的NB物联网开发板,于是就用它来做这个防盗追踪装置。
原本也计划将第二个问题物联网监控充电情况的问题也给一起解决掉,但没有找到相对应的测电压的模块,所以暂时放着,以后再加这个功能。
Tinkernode这个板子,真心很方便,它自带有定位功能,所以不用再外加定位模块了。
并且它供电方式多样,6-24v直流电源、3.7v锂电池、USB供电、4.5-6v太阳能供电。开发板上有一块esp32的控制器,所以在制作的时候,不用外接控制器了,板子整体很小,功能集成度很高,适用于更小更窄的应用场景。
自带的联通卡在我这儿,NB信号很弱,所以我自己买了一张移动的NB卡。
需要实现的功能
我想利用Tinkernode这块开发板通过NB物联网,将电瓶车的实时位置信息上传到阿里云物联网平台,可以通过平台上的地图软件来直观地查看电瓶车的位置。
并通过阿里云为电瓶车设置“地理围栏”,当电动车离开了我所设置的范围内,阿里云会给我的手机发送短信或打电话通知情况。
假如我遇到车子被偷的情况,车子一出地理围栏的范围,我就会收到电话通知,然后我就会通过阿里云对Tinkernode进行控制,让它操作继电器对电瓶车进行断电,让偷车贼丧失快速移动的能力,然后我可以通过地图定位赶到车所在的位置,将车夺回。
具体细节
电瓶车控制部分是24v直流电,可以直接给Tinkernode开发板供电,然后我将继电器安装在油门手柄这条线路上即可,断开后,手柄将无法再控制电瓶车的启动
材料
- Tinkernode开发板
- 继电器
接线
材料简单,接线方面也很简单。将Tinkernode开发板的GNSS定位天线和NB信号天线给扣上。继电器的信号线焊在开发板D4脚,正负极各自对应着焊。
阿里云平台
接下来就是阿里云平台的部分了,其实在Tinkernode教程贴里也有阿里云相应的使用教程,我这里也还是一步步地写出来。
先打开阿里云网址:
https://www.aliyun.com/?utm_content=se_1002986586
注册并登陆,点击“物联网平台”,
在 “IOT studio” 下,选择 “项目管理” ,并点击 “新建项目”
点击 “新建空白项目”,并输入项目名称,我们这里输入 “Tracker”
随后就会进入到项目管理页面,我们在Tracker这个项目下,新建一个产品。我之前已经建了两个产品,不用管这俩。
点击新建产品后,我们会看到下边的页面,我们先给产品取个名字 GNSS_tacker,然后把类型选成 “自定义品类”、“直连设备” ,连网方式选 “蜂窝”,点击 “保存”
产品页面就会出现该产品,
点击GNSS_tacker产品的 “查看” 命令
点击 “功能定义”,选择 “标准功能” 页面下 “添加标准功能”
在搜索栏输入 “地理位置”,点搜索按钮。
选择 “适用类别” 与图片相对应的选项,并点击 “确定”。
“地理位置” 这个功能就产生了。
然后到 “设备” 选项卡下,选择 “新增设备” 。
会弹出窗口,“产品” 那里选择 “GNSS_tacker” , 然后 “提交”
弹出窗口这里直接点 “关闭” 。
此时,设备显示 “未激活”。
继电器
上边,咱们将GNSS定位在阿里云上的操作给完成了,现在还需要添加继电器的部分。
回到 “产品” 页面下的 “功能定义” ,点 “标准功能” 下的 “添加标准功能”,找到一个 “主灯开关” 的功能,点击 “确定” 。由于继电器和主灯开关的性质相似,这里就用 “主灯开关” 来控制继电器。
至此,继电器部分也完成了。
最后一步,咱们在 “产品” 页面下点击 “查看”,再在GNSS_tacker页面右上角点击 “发布” ,弹出对话框将4个对勾打上,选择 “发布” 。
程序部分
程序方面,首先是阿里云要接收Tinkernode上报的地理位置信息,然后Tinkernode还要订阅阿里云上关于对继电器的开、关操作。
上报的GNSS地理信息,必须要符合阿里云的格式:
这个我们可以不用管,直接使用示例程序里的现成代码就行。我们需要做的是修改和阿里云关联的几处信息:
ProductKey、DeviceName、DeviceSecret这三项在阿里云平台上查看,ClientId这项不改,
这句语句需要对应着阿里云上两个功能的标识符来修改,
修改为:
这两条语句,分别从阿里云平台上 “设备” 页面下的 “Topic列表” 下的 “物模型通信Topic” 里两条信息,将其复制后粘贴在语句内,
修改为:
接下来是将代码上传到Tinkernode开发板上。首次使用开发板需要按照wiki资料进行格式化和下载将要用到的库文件,这些资料都在产品页面里,
程序上传完成后,就可以在阿里云平台的 “设备” 页下,看到设备已经被激活,并 “在线” 了。
可以在 “产品” 页下的 “运行状态” 里看到开发板上报上来的GNSS信息
也可以通过 “在线调试” 功能,来测试继电器是否正常工作。
可以看到继电器亮红灯了,已经接受到阿里云平台发布的订阅信息了,正常工作了。
地图可视化制作
在阿里云平台上的 “主页” 下,点击 “web应用” 下的 “新建”
弹窗内,输入名称后点击 “确认”,
点击左上角 “组件”,将 “设备地图” 拖拽到中心的空白画布上,并点击右上角蓝框的 “编辑设备地图”,
点击 “选择产品”,选择刚刚我们新建的产品 “GNSS_tacker” ,然后点 “确定” 。然后点击右上角灰色的对勾 “保存”。
回到刚才的 “组件” 页面,点击保存和发布。
显示web应用发布成功了,可以点击 “预览” 查看,GNSS所在地图位置。
数据分析
接下来演示历史轨迹和地理围栏功能,
回到阿里云列表页面,选择 “数据分析”:
选择 “实验室”,
选择 “空间数据可视化”,
点击 “创建场景”,
选择 “物联网平台” ,然后输入名称后,选择对应的产品,点击 “确定”,
点击 “历史轨迹” ,
选择 “时间段” 和对应的设备,点击 “平滑轨迹线” 后,就能看到对应时间段内的移动轨迹了。
地理围栏功能,选择 “地理围栏” 里的 “绘制围栏” ,
我这里选择 “圆形围栏”:
需要你在相应地图内,拖动绘制一个圆形,然后就会弹出一个对话框,让你填一些信息,完成信息后,就点 “确定” 。当相应的GNSS设备出了划定的围栏范围后,就会通过短信或者电话的方式通知你了。
我测试了一下,短信通知,偶尔能成功。电话通知是百分百成功的。
安装到车子上
接下来就是将Tinkernode和继电器安装在电瓶车上了。
先把坐垫下的空开关了,把电给断了,
然后拧螺丝,把灯罩给拆开,
找到油门手柄相关的线,
将这个线扣给扒开,左边连接着油门手柄,右边连接着电瓶车电源和电瓶车主控的信号线,
连线的方式为,Tinkernode的电源由右边线扣来输出,Tinkernode上6-24v的两个接线端口的“+”“-”分别接在右边线扣上的红线和黑线上,
继电器这边,则先将这个左边线扣上的红线给剪掉。继电器的“com”接剪掉后红线头的部分,“NC”端接在左线扣上的红线端口上,
接线完成后,就将灯罩给扣上,螺丝上好,就完成了。
程序里设定的是,每20秒向阿里云上报位置信息,NB卡每年300M的流量是完全够用的。现在就可以去阿里云里看历史轨迹了!也可以按照上文来设置地理围栏,这里就不再演示了。
在 “产品” 页下的 “在线调试” 功能可以及时地将电瓶车的油门手柄进行断电,起到远程制动的效果。
美中不足的地方就是,装在车上的Tinkernode开发板如果不是通过地理围栏,而是通过跟我手机的定位进行距离判断,比方说当电瓶车离开我的手机3公里时,就发送手机提醒给我,这样会更实用一些。