7070| 3
|
[项目] 【每周挑战】用micro:bit+Obloq打造物联网智能提醒喝水器 |
本帖最后由 于鑫 于 2018-10-21 09:01 编辑 用micro:bit + Obloq 打造物联网智能提醒喝水器 项目背景 大家好,我叫于儿,今年8岁。 爸爸工作很忙,经常忘记喝水,所以我开发一个智能提醒喝水器提醒爸爸喝水。为了让更好地让爸爸养成喝水的习惯,我加入了物联网模块,实时监控爸爸的喝水数据。晚上等爸爸回家我就可以拿着数据批评爸爸。 我6岁开始学习编程,我会Scratch,现在在用micro:bit学习Python。我基于micro:bit和Obloq物联网模块来开发这个物联网智能提醒喝水器。 大致思路如下:
流程图如下: 这个项目的难点是如何实现称重。一开始想用重量传感器模块,研究了很久发现micro:bit上没有可用的驱动,都是用Arduino来读取数据然后通过串口再传递给micro:bit,可是我没有Arduino,并且似乎micro:bit不能2个设备同时工作在串口模式下,也就是说无法跟Obloq放在一起工作。 于是我想到我有薄膜压力传感器,水杯的重量可以转变成压力,然后通过薄膜压力传感器来读到重量。 薄膜压力传感器的缺点是精度差,不过我的这个项目关心的是重量的差值,对精度要求不高,可以接受。【后来我加入了多次测量求平均值的方法,提高了读数的精度和稳定性】
配件资料 RFP612薄膜压力传感器 RFP薄膜式压力传感器可对任何接触面的压力进行静态和动态测量,薄膜压力传感器将施加在传感器感应区域的压力转换成电阻信号,然后根据力~电阻的标定关系曲线获得外界所施压力的变化信息,压力越大,传感器输出的电阻越小。 RFP-ZHII电阻电压转换模块RFP-ZHII电阻电压转换模块将传感器的电阻信号转化为模拟电压信号或高低电平。它配合RFP薄膜式压力传感器一起使用,将压力转换为模拟信号供micro:bit读取。 功能引脚见下图 通过实际称重测试,我测得了如下重量-模拟信号读数:
将上面的数据做到图上(见下图),可以发现重量和模拟信号呈线性关系。 通过线性回归,可以得到重量~模拟信号的函数关系为: [mw_shl_code=python,true]import numpy as np weight = [0, 83, 162, 229, 311, 396, 460, 538, 620, 722, 878] analog = [1020, 968, 935, 893, 873, 840, 827, 808, 797, 782, 750] analog_fit = np.polyfit(weight, analog, 1) print(analog_fit)[/mw_shl_code] 输出 [-0.295, 981]
实际使用时我们是读到模拟信号量然后换算重量,所以模拟信号~重量的函数关系为: [mw_shl_code=python,true]weight_fit = np.polyfit(analog, weight, 1)print(weight_fit) [/mw_shl_code]
OBLOQ - IoT物联网模块 OBLOQ是一款基于ESP8266设计的串口转WIFI物联网模块,用以接收和发送物联网信息。它尺寸紧凑,价格低,接口简单,即插即用,搭配DFRobot自有的物联网平台,大大降低了物联网的使用门槛,无需复杂的基础知识,就能迅速搭建出一套物联网应用。 数字蜂鸣器是一款简单的发声装置,可以通过频率来控制音调。它结构简单、应用丰富,能够模拟我们生活中许多声音和音乐。 详细资料请参考数字蜂鸣器模块 代码实现 注册物联网 登陆https://iot.dfrobot.com.cn完成用户注册,即可添加设备。 我是用微信小程序注册的,在微信小程序中搜索EasyIoT,点击小程序,完成授权即可。 Iot_id 和 Iot_pwd 可以在 我的 里查看点击 创建 添加设备 添加后在 设备 里可以查看到刚刚添加的设备及其 topic 进入https://makecode.microbit.org/ --> 点击“添加软件包” --> 在搜索框中输入Obloq,点击搜索 --> 添加Obloq软件包。 模拟读数转化为重量 根据重量判断喝水行为 定时提醒喝水 接收到“water”信息提醒喝水 完整代码如下 系统演示 先来张系统全家福 喝水、加水的数据可以在EasyIot小程序里看到 详细演示请看文章开头的视频。 |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed