5253| 1
|
[入门教程] TinyWebDB—掌控板获取手机定位数据 |
之前的例子中,我们了解了如何通过App Inventor 2(简称AI2)创建安卓App应用,以及如何通过Easy Iot、SIoT等物联网平台实现手机App与掌控板传送简单指令和数据的方法。但如果单条数据过大或者需要保存、查询特定数据的时候,上述方法就满足不了需求了。本文将围绕TinyWebDB网络微数据库,制作一个上传手机定位信息到数据库,然后通过掌控板连接数据库,查询显示手机定位信息的应用,实现掌控板对手机位置的监控。通过实验,了解数据库在编程中的作用,数据库与物联网平台的区别,以及AI2和Mind+编程连接TinyWebDB网络微数据库的方法。 1.实验目标 (1)简单了解数据库的概念、用途和分类 (2)了解TinyWebDB网络微数据库的特点 (3)了解物联网平台和数据库的区别 (4)了解AI2编程连接TinyWebDB数据库的方法 (5)了解掌控板编程连接TinyWebDB数据库的方法 2.实验所需资源 硬件: (1)电脑 (2)手机 (3)掌控板 (4)数据线 本文实验所用的台式电脑为Windows7操作系统,手机为安卓系统,掌控板为V2.0版本,数据线为Type-C接口。 软件: (1)电脑安装Mind+软件 本文实验所用的Mind+软件版本为V1.8.0 RC1.0。 (2)App Inventor 2可视化编程平台 本次实验采用的是App Inventor 2平台的汉化增强版软件WxBit(网址为:https://www.wxbit.com/),本文下面所提到的AI2平台皆指WxBit。学习参考:《App Inventor 2—零代码开发自己的物联网APP》 。 (3)TinyWebDB网络微数据库 本文使用的TinyWebDB网络微数据库网址为: http://tinywebdb.appinventor.space/。 3.数据库的概念、用途和分类 数据库是一种将大量数据持久化存储在磁盘上,以便随时访问和查询的仓库。数据库的主要用途包括数据存储、数据管理和数据共享。具体来说,它提供对数据的增加、删除、修改和查询等操作,实现对数据的有效管理。它允许多个用户同时访问和操作同一份数据,实现多用户共享数据,提高数据的使用效率。 数据库根据不同标准可划分为多个种类,下面简单介绍数据库的常用分类及代表产品: 根据数据模型分类。关系型数据库:基于关系模型,使用表格形式存储和组织数据。关系型数据库是最常见的一种数据库类型,如MySQL、Oracle、SQL Server、PostgreSQL等。非关系型数据库:不遵循关系模型,使用其他数据模型来存储和组织数据。非关系型数据库近年来得到了广泛应用,如MongoDB、Redis、Cassandra、Couchbase等。 根据部署方式分类。桌面数据库:运行在本地计算机上的数据库管理系统,如Microsoft Access、SQLite等。网络数据库:运行在网络服务器上的数据库管理系统,可以被多个客户端同时访问,如MySQL、Oracle、SQL Server等。云数据库:部署在云服务提供商提供的虚拟机或容器中的数据库管理系统,如Amazon RDS、Microsoft Azure SQL Database等。 根据数据量分类。小型数据库:数据量较小,通常在几百MB到几GB之间,可以使用简单的数据库管理系统进行管理,如SQLite、Microsoft Access等。中型数据库:数据量中等,通常在几十GB到几百GB之间,需要使用专业的数据库管理系统进行管理,如MySQL、Oracle、SQL Server等。大型数据库:数据量非常大,通常在TB级别以上,需要使用高性能的数据库管理系统和硬件设备进行管理,如MongoDB、Cassandra、Hadoop等。 4.TinyWebDB网络微数据库 根据前面的分类标准,TinyWebDB属于小型、非关系型的网络数据库。TinyWebDB网络微数据库是一个轻量级的键值存储数据库,是App Inventor 2平台为开发者提供的一种数据存储和共享解决方案。MIT版的TinyWebDB数据库功能简单,且不容易访问,所以国内爱好者提供了一些替代方案,本文实验用到的就是其中之一。TinyWebDB以键值对作为基本存储对象,开发者可以使用字符串作为键,使用字符串、数字、布尔值、数组等数据类型作为值。TinyWebDB还提供了处理这些键值对的添加、删除、更新和查找等基本功能。使用TinyWebDB,开发者可以简单、轻松的在网络上存储和管理AI2应用程序生成的数据,实现与其他支持TinyWebDB数据库的软件共享数据。 虽然TinyWebDB数据库与Easy Iot物联网平台都具备数据传输功能,但两者的功能和用途有很大区别。TinyWebDB使用HTTP协议,采用了请求-响应模型,客户端发起请求到服务器,并等待服务器的响应。通信使用的是短暂的、无状态的连接,每个请求需要建立和关闭连接。所以TinyWebDB只是单纯的用于网络存储,只有数据写入、存储和查询等基本功能。Easy IoT则是使用MQTT协议,采用发布-订阅模型,设备可以发布(发布者)消息到主题(topic),其他设备可以订阅(订阅者)这些主题以接收消息。通信使用持久的、异步的连接,可实现设备之间的实时通信。所以Easy IoT用于远程管理和控制设备和传感器,实时传收数据和下发指令,实现设备端和用户端的交互。二者在传输效率和负载,安全性等方面都有较大区别。在构建物联网应用的过程中,可以根据需求单独或共同使用物联网平台和网络数据库。 下面我们从注册TinyWebDB网络微数据库开始本次的编程实验。打开浏览器访问 http://tinywebdb.appinventor.space/ 按提示注册单独账号,注册成功后登陆服务器。登陆成功后会显示服务器地址、API参数等信息,后面的编程会用到。 5.在AI2平台编程连接TinyWebDB数据库 使用谷歌、QQ、Firefox、Safari等非IE浏览器访问WxBit网站,按提示进行注册和登录,推荐使用QQ账号登录。 (1)登录AI2P平台(WxBit),新建一个名为“手机位置”的项目,在“组件设计”界面添加以下组件 组件属性设置参考: Screen1标题设置为“手机位置”; 表格布局为4行*2列,第一列放置时间、地址、经度、纬度的标题标签,第二列放置对应的数据标签; 所有可见组件,包括标签、按钮等名称设置为图中组件列表中的名称,字号统一设置为“22”。标签宽度设置为“A”自动,按钮宽度设置为“F”充满。 下面对3个不可见组件用途及设置做详细说明: 位置传感器组件用于获取手机位置信息。组件属性中的时间间隔设置为“10秒”。 网络微数据库组件用于连接和操作网络微数据库。此处对应的数据库是TinyWebDB,在组件属性设置的服务地址当中填入你的TinyWebDB服务器地址。经测试,HTTP和HTTPS都能正常使用。 计时器组件用于获取当前时间,保持组件默认设置。 (2)切换到“逻辑设计”界面对组件功能和事件进行编程 在“逻辑设计”界面左侧的“模块”栏中,选中相应的模块就会弹出该模块相关的编程积木,把积木按逻辑组合在一起,就形成了一系列功能和事件程序。下面的示例不再详细介绍模块来源,除内置模块外,大家可以从积木的名称和颜色上找到它来源于哪个模块。下面我们按事件进行编程: 获取手机位置事件:创建时间、地址、经度、纬度4个全局变量,通过位置传感器的“位置被更改”事件,将获取的数据赋值于4个变量。 显示手机位置事件:在上一步骤自动获取手机位置信息后,通过点击“获取当前位置”按钮,将获取到的位置信息显示在对应的标签上。为简单展示软件功能,此处没有设置数据获取失败的提示信息,当在实验中遇到获取数据不正常,可重启调试助手或App重试。 上传位置信息事件:用于将获取到的时间、地址、经度、纬度等数据依次上传到TinyWebDB数据库,上传成功后逐项提示“已上传”。本事件之所以使用回调函数逐项上传,主要是因为TinyWebDB数据库的并发能力有限,同时上传不一定能成功。 至此,涉及到该实验的AI2编程已经完成。本实验仅使用了TinyWebDB数据库的数据保存及修改功能,大家可以动手尝试数据库的增加、查询、删除等功能,完整掌握数据库的操作技巧。下面我们进行程序调试。 (3)手机预览运行AI2程序 AI2支持手机预览并运行程序,我们继续使用之前介绍过的 “WxBit调试助手”来进行程序调试。由于本实验需要使用手机位置信息,在调试前须先打开你的手机定位功能并允许“WxBit调试助手”获取手机位置权限。不同品牌手机界面可能会有区别,但都具备同样的设置和功能。 运行你手机上安装的“WxBit调试助手”,通过WxBit“预览”菜单下的“连接调试助手”扫码连接刚才编辑的程序。先点击“获取当前位置”按钮,查看是否正确显示位置信息。再点击“上传位置信息”按钮,查看是否提示“已上传”。 如果程序运行顺利,下一步通过电脑浏览器登录你的TinyWebDB数据库,点击“数据浏览”查看数据是否上传成功。 至此,一个获取并上传手机位置数据的App制作完成,你还可以为这个App设置图标,然后把它打包安装到你的手机独立运行。详细步骤可参考《App Inventor 2—零代码开发自己的物联网APP》。目前在程序中获取位置和上报位置都是手动点击按钮触发,你也可以尝试用定时器定时触发上述功能,实现自动获取并上传位置数据。 6.Mind+掌控板编程连接TinyWebDB数据库 现在TinyWebDB数据库已经有了手机位置的数据,下面通过Mind+编程让掌控板定时获取TinyWebDB数据库中的数据,实现掌控板自定获取你的手机位置信息。 (1)在Mind+上传模式新建项目并连接掌控板,在主控板扩展库添加“掌控板”,在网络服务扩展库添加“WIFI”和“TinyWenDB”2项扩展。 (2)编程连接WIFI和TinyWebDB数据库,通过TinyWebDB积木获取数据库对应标签的值显示在掌控板屏幕上。 TinyWebDB服务器参数对应设置如下: (3)将程序上传至掌控板,查看掌控板屏幕信息。 不管是在手机上主动上传位置,还是用定时程序自动上传位置,掌控板都可以每10秒更新显示最新的手机位置,从而让掌控板变成了一个简单的手机定位监控器。 本实验的数据是由手机到数据库再到掌控板,其实掌控板也可以主动向数据库上传数据,比如光线、噪音、按键等信息。手机也可以从数据库获取到掌控板上传的数据,甚至是修改、删除数据库中的数据,这就是数据库的数据管理和共享功能。 7.本实验完整程序和下载地址 掌控板Mind+程序 手机端AI2程序 下载地址:https://gitee.com/inventara/arduino |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed