当前位置:首页 > 工业控制 > 电路设计项目集锦
[导读]在达卡这样交通拥堵的城市里,找到一个空闲的停车位非常困难。对于许多人来说,一出门开车,首先想到的就是停车问题——该把车停在哪里?大多数情况下,人们会去停车场,却发现所有车位都已满员,于是不得不另寻他处。这不仅麻烦,也让人对停车感到焦虑。

在达卡这样交通拥堵的城市里,找到一个空闲的停车位非常困难。对于许多人来说,一出门开车,首先想到的就是停车问题——该把车停在哪里?大多数情况下,人们会去停车场,却发现所有车位都已满员,于是不得不另寻他处。这不仅麻烦,也让人对停车感到焦虑。

我意识到,为了享受更便捷的出行体验,尤其是在达卡这样的城市,建设一个高效的停车系统是必不可少的。

因此,我开始思考如何解决这一问题,最终成功开发出一套基于云平台的智能停车系统。我希望通过实施该系统,能够有效缓解我们城市的停车难题。ARTIK Cloud 是完成这项任务的理想且合适的平台。

借助该系统,用户可通过手机或网页应用随时随地轻松查找可用的停车位。此外,我还使用了英特尔 Edison 处理器搭配显示屏,将其安装在城市或道路的多个关键位置,以便实时提供免费停车位的信息。系统每30秒更新一次停车数据。

在本项目中,我将向您展示如何轻松构建这样的智能系统。我将使用ARTIK云平台——最酷的物联网云平台。

要运行这个演示系统,您需要在三星Artik云平台上创建三个新设备。我将以其中一个设备为例进行说明,所有设备的操作步骤相同。我分别将这三个设备命名为:rainbow-parking、indigo-parking 和 edison。其中,rainbow-parking 和 indigo-parking 用于接收并存储停车场的空位等停车数据;edison 根据预设规则发送停车信息。

1:在Artik云平台上创建新设备

A) 登录您的三星账户,点击右上角的“DEVELOPERS”选项。

B) 在仪表板中选择“DEVICE TYPES”。

C) 点击“+ NEW DEVICE TYPE”。

D) 在“DEVICE DISPLAY NAME”中输入设备名称,并设置唯一名称,然后点击“CREATE DEVICE TYPE”。

E) 点击“+ NEW MANIFEST”。

F) 在“FIELD NAME”中输入您要上传并存储的传感器数据字段名,并将数据类型设置为整数(integer),然后点击“SAVE”。

G) 然后点击“下一步:设备操作”

H) 执行一个操作或从“标准操作”中选择。点击“保存”。对于我们的项目,无需进行任何操作。然后点击“下一步:活动清单”

I) 查看设备字段,再次点击“下一步:活动清单”

J) 恭喜!您已成功创建了第一个设备。现在需要将该设备连接到Artik云平台。我们开始吧。

K) 从右上角进入ARTIK CLOUD。

L) 点击“我的Artik云”,选择“设备”。

M) 点击“+连接其他设备”。

N) 输入刚刚创建的设备名称,然后点击它。

O) 点击“连接设备...”按钮。

P) 您的设备已连接到云端。

Q) 点击设置图标。

R) 点击“生成设备令牌...”。

S) 请记录下您的设备ID和设备令牌。这些信息在您以后每次从物理设备、网页应用或安卓应用连接到设备时都会需要。

点击“保存更改”。

按照相同步骤连接另外两个设备。我连接了三个设备,分别命名为rainbow-parking、indigo-parking和edison。其中rainbow-parking和indigo-parking代表两个停车场,而edison代表公告板。我将rainbow-parking连接到一台树莓派,indigo-parking连接到另一台树莓派,并分别放置在两个不同的停车场中。此外,树莓派通过Arduino板连接停车场内的传感器,以识别空闲或已占用的停车位。

现在我将跳转到第三步,第二步的内容稍后说明。

2:在Artik云中创建规则

在此步骤中,我们将创建一条规则,设定一些条件,当条件满足时,Artik云会自动执行相应操作,并立即向订阅该操作的设备和应用程序发送消息。

A) 在“我的Artik云”菜单中选择“规则”。

B) 点击 + 新规则

C) 在“如果”选择框中,为设备选择一个数据字段,并设置值和条件。然后在“然后”字段中选择特定设备的操作。您可以设置常量参数值,也可以从其他设备的数据中选择值。如需定义来自其他设备的数据字段,请点击红色方框中的下载图标。

D) 从下拉菜单中选择一个设备,然后选择数据字段。

E) 然后点击“保存规则”。

F) 我们项目的完整规则应如下图所示。

3. 准备Arduino

在本项目中,Arduino的主要任务是从连接到停车站的传感器收集数据,并通过串行端口将数据发送至树莓派。由于我实现了两个停车站的演示项目,因此需要两块Arduino板。对于这两个停车站,我使用了两种不同类型的传感器:一种是红外传感器,适用于没有阳光直射的地方;另一种是超声波传感器,可适用于任何位置。

对于红外传感器,使用Arduino的模拟引脚进行接口连接;对于超声波传感器,则使用Arduino的数字引脚。附上两种传感器的Arduino程序代码,将相应的代码上传到你的Arduino板上。我开发的程序仅适用于四个传感器,如需更多传感器,请相应修改程序。

4:连接传感器

请参见电路图部分,了解如何将所有传感器连接到Arduino。

5:准备树莓派

假设你已具备一定的树莓派操作经验,网上有许多初学者教程可供参考。

让我们开始搭建树莓派的工作。树莓派作为WebSocket客户端,通过WebSocket协议与Artik云进行通信。我使用Node.js进行编程。与Python不同,Node.js不会预装在树莓派上。

A). 在终端中使用以下命令在树莓派上安装Node.js和npm。

B). 在树莓派上安装WebSocket客户端ws。

C). 在树莓派上安装serialport库。

如果成功完成以上三个步骤,您的树莓派便已准备好通过串口与Arduino通信,并通过WebSocket与Artik云通信。如前所述,两个停车场需要两台树莓派,因此请从GitHub下载树莓派的源代码,将rainbow-parking.js上传到连接Rainbow停车场的树莓派,将indigo-parking.js上传到连接Indigo停车场的树莓派。您可以使用FileZilla等FTP客户端将代码上传至树莓派。别忘了修改源代码中的DEVICE ID和DEVICE TOKEN。

D) 将代码上传到树莓派后,在终端窗口中输入以下命令运行程序。

6:准备Intel Edison

我假设您已有一定的Intel Edison开发板使用经验。

A). 从链接中下载 Intel XDK 并安装到您的电脑上。

B). 从我的 GitHub 下载 edison-lcd 文件夹,并使用 Intel XDK 打开它。

C). 将 i2c LCD 显示屏连接到 Edison 板,可使用基础保护板以方便连接。

D). 使用串口线将 Edison 板连接到电脑,上传代码后运行。使用 Intel XDK 上传和运行代码非常简单。

7. 开发Web应用程序

在开发Web应用时,使用了HTML和JavaScript。为了与Artik云通信,我再次采用了WebSocket协议。在应用中集成地图时,使用了Google地图API。

请从我的GitHub下载web-app文件夹,并将DEVICE ID和DEVICE TOKEN替换为您自己的设备ID和Token。使用能接收新数据并触发操作的设备ID(例如我的Edison)。打开websocket.html文件,通过网页浏览器即可使用。

8. 在 Artik Cloud 创建应用程序

在开始开发 Android 应用程序之前,您需要先在 Artik Cloud 中创建一个应用。请按照以下步骤操作:

A). 从开发者仪表板中选择“APPLICATION”

B). 点击“+NEW APPLICATION”

C). 填写应用名称和描述

D). 点击“SET PERMISSION FOR A SPECIFIC DEVICE”(为特定设备设置权限)

E). 选择“rainbow-parking”,并勾选“Read”复选框,然后点击“ADD DEVICE TYPE”

F). 对“indigo-parking”重复相同操作,然后点击“SAVE”

G). 点击右上角的“SHOW CLIENT ID & SECRET”

H). 记下 Client ID 和 Secret,这些信息将用于 Android 应用程序

9. 开发 Android 应用程序

A). 下载 Android Studio 并将其安装到您的电脑上。

B). 从我的 GitHub 下载 android-app 源代码。

C). 启动 Android Studio,通过浏览源代码导入项目。

D). 打开 MainActivity.java,并输入在 Artik 云上创建应用后获得的 CLIENT ID。

E). 打开 MessageActivity.java,并填写已添加到 Artik 云应用中的设备的 DEVICE ID 和 ACCESS TOKEN。

F). 保存更改,构建 APK 文件,将其安装到手机上,即可使用。

10. 设置所有硬件

将所有传感器连接到Arduino板,然后使用串口线将Arduino连接到树莓派。通过SSH客户端访问树莓派,并运行之前上传的代码。使用您喜欢的浏览器打开网页应用,尽情享受整个系统。别忘了用安卓应用程序进行测试。

本文编译自hackster.io

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
关闭