用树莓派制造马桶状况监视器

MAKER: Md. Khairul Alam/译:趣无尽 Cherry(转载请注明出处)

你是否在公共卫生间碰到过用完之后没有冲过的马桶?是的,总有些人忘了冲马桶,或者他们根本就不在乎,或者有时候是马桶冲水还坏掉了……遇到躺着大条的马桶,是极其难忘的人生经历。

这个项目是制作一个马桶状况跟踪器,它可以准确的告诉你马桶是否干净,是否可以如厕。

试想一下,我们能否监控马桶呢?使用相机是一个简单的解决方案!但你不能把相机放在厕所里面。那么,使用Walabot是一个很好地选择。 Walabot是一款可编程的3D成像传感器,可以使用射频技术观察物体,并且无需任何光学图像即可实现高度复杂的感应功能!

材料清单

硬件:Walabot×1

树莓派3B×1

软件:MQTT

Ubidots

MIT App Inventor

HTTP

Walabot 的工作原理

Walabot 是什么黑科技?看这个视频感受下。

Walabot通过多个天线来发送,接收和记录信号,从来感知环境。分析多个发射接收天线的宽带记录以重建环境的三维图像。

Walabot让3D成像成为可性,它替代了无法使用相机的区域,例如浴室、试验室或卧室。

我使用Walabot去识别马桶是否清洁干净。它的工作原理非常简单。将Walabot安放在马桶顶部(通常在厕所的顶部)。在初始化阶段,Walabot将扫描干净的马桶。初始化后,它定期扫描马桶(1分钟或更短)并检测初始化期间不存在的任何物体。由于在初始化期间马桶是干净的,Walabot可以很容易地检测到马桶上的任何新的物体(例如粪便)。为了获得更好的结果,必须正确设置Walabot参数。Walabot还可以测量它检测到的物体距离。因此,根据测量物体的距离,也可以知道这间厕所是否可以进入。

厕所是否有人使用

马桶是否干净

以上两个数字显示了如厕使用度和清洁度。

整个系统的运作

完整的厕所跟踪系统需要一些重要的部分。

1、将Walabot连接到树莓派3。

2、Walabot定期扫描任何新的对象,树莓派从Walabot上收集该信息,使用MQTT协议将信息发送到Ubidots云服务器。

3、启用MQTT通信,将pyhton paho MQTT客户端安装在树莓派中。

4、使用MIT App Inventor开发了一个Android应用程序,可以监控厕所的状态。

5、Android应用程序使用HTTP协议从Ubidots云接收信息。

请参阅下面完整的系统框架图。

系统框架图

安装步骤:

1、将Walabot SDK安装到树莓派。

按照Sparkfun.com的入门指南进行操作。

2、将paho mqtt客户端安装到树莓派。

使用树莓派终端命令:

sudo pip install paho-mqtt

3、在Ubidots.com中创建一个帐户并记下设备令牌。

ID

4、将ubidots API安装到树莓派。

在pi终端中输入以下命令:

sudo pip install ubidots

记下你的ubidots API密钥:

5、为树莓派开发 Python 程序。

为了找到合适的配置参数(R,pi,theta),我使用Windows的Walabot SDK开发包测试不同方位的不同对象的Walabot。我选择的值在python代码中提到。我将阈值调小用于检测小的物体。

minInCm, maxInCm, resInCm = 30, 300, 3 minIndegrees, maxIndegrees, resIndegrees = -15, 15, 5 minPhiInDegrees, maxPhiInDegrees, resPhiInDegrees = -30, 30, 5 threshold = 2

用Windows SDK测试

使用开发python程序和Android应用程序之后,我手动测试系统以便了解整个系统是否正常工作。(python程序和android源代码附加在代码部分)。在最后的代码中,我更新了R值。对于测试设置,它在测试边缘设置的很小。

这是程序中实现的逻辑关系,用于识别厕所中是否有人,厕所是否干净。

这是代码片段:

if targets: for i, target in enumerate(targets): print(target.zPosCm) if target.zPosCm>100 and target.zPosCm<180: print("Toilet is engaged.") engage_variable.save_value({'value':1}) elif target.zPosCm>200 and target.zPosCm<210: print("Toilet is not engaged, not clean.") engage_variable.save_value({'value':0}) clean_variable.save_value({'value':1}) else: print("Toilet is not engaged and clean.") engage_variable.save_value({'value':0}) clean_variable.save_value({'value':0}) break else: print('Not engaged and clean') clean_variable.save_value({'value':0}) engage_variable.save_value({'value':0}) 6、在MIT App Inventor中开发Android应用程序 源代码文件附在代码部分中。 Android的App Inventor是一个开源Web应用程序,最初由Google提供,现在由麻省理工学院(MIT)维护。 它允许新手进行计算机编程,可以为Android操作系统(OS)创建软件应用程序。它使用图形界面,非常类似于Scratch和StarLogo TNGuser interface,允许用户drag-and-drop可视对象以便创建在Android设备上运行的应用程序。 如果你是App Inventor的新手,请按照这些初学者教程进行操作。 如果你想使用附加的资源,你可以修改htttp网址。 更换 URL: http://things.ubidots.com/api/v1.6/datasources/YOUR_OWN_DEVICE_ID/variables/?token=YOUR_OWN_TOKEN 只需将你的设备ID替换掉YOUR_OWN_DEVICE_ID,将你的ubidot令牌替换掉YOUR_OWN_TOKEN即可。然后将build.apk文件并将其安装到你的手机。 新建apk文件 令牌和设备ID取自用户并存储在设备存储器中以供下次使用。 使用数据库 Android app可在Google Play商店中找到。你可以将其从Play商店安装到你的智能手机。 链接为: https://play.google.com/store/apps/details?id=appinventor.ai_khairul_uapstu.toilet 部分演示图 应用程序的屏幕截图 框架图 框架图显示整个系统的工作情况。 数据库配置 使用App Inventor进行应用程序开发 Android应用程序(.apk文件) 请在文件库下载apk文件 http://make.quwj.com/project/77 Android源代码文件(MIT App Inventor) 请在文件库下载Android源代码文件 http://make.quwj.com/project/77 代码 树莓派的Python代码。在项目文件库中可以下载。 http://make.quwj.com/project/77