马桶状况跟踪器 的教程


材料清单

硬件:Walabot×1
树莓派3B×1

软件:MQTT
Ubidots
MIT App Inventor
HTTP

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://maker.quwj.com/project/77
Android源代码文件(MIT App Inventor)
请在文件库下载Android源代码文件 http://maker.quwj.com/project/77

代码

树莓派的Python代码。在项目文件库中可以下载。
http://maker.quwj.com/project/77


> 马桶状况跟踪器

组件清单

  • Walabot × 1
  • 树莓派3B × 1