亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

我的东西在哪里?

组件和用品

Raspberry Pi 2 B 型
× 1
Arduino UNO
× 1
JT2850 RFID 模块
× 1
JT606 RFID 天线
× 1

必要的工具和机器

运行 Windows10 且安装了 Visual Studio 2015 的 Microsoft PC
Android 手机

应用和在线服务

Microsoft Windows 10 IoT Core
Microsoft Azure
Microsoft Visual Studio 2015

关于这个项目

背景

你有没有遇到过这样的情况,每当你试图寻找什么东西,但你花了很长时间去寻找它仍然找不到它?通过利用 RFID 技术,使用 RFID 阅读器和贴在物品上的多个 RFID 标签,我们可以轻松定位我们存储的物品。每当我们购买新商品时,只需将 RFID 标签粘贴到其上并将商品详细信息注册到系统中。一旦我们需要寻找物品但不记得它在哪里,只需在移动应用程序上搜索,您就会知道它目前在您家的哪个房间。

整个想法

该项目的组件将包括一个 UHF RFID 阅读器模块、一个 UHF RFID 天线、一个 Arduino UNO、一个运行 Windows10 IoT 核心的 Raspberry Pi2(您可以在这里参考 http://ms-iot.github.io/content/en -US/GetStarted.htm(如果您不确定如何安装 Windows10 IoT 核心)、移动应用程序和用于数据存储的 Azure Web 服务。房子里会有多个UHF RFID模块,每个UHF RFID模块将连接到Arduino UNO,然后Arduino连接到Raspberry Pi2。每当需要系统跟踪的物品时,都会附上 RFID 标签。需要物品的详细信息和 RFID 值才能注册到系统中。每条记录的数据将通过 Azure Web API 存储到 Azure SQL 数据库中。每当用户要在家中搜索物品,但他/她不确定该物品将位于他/她家的哪个房间时。他/她可以打开他们的移动应用程序。移动应用程序将通过 Wifi 网络向 Raspberry Pi2 发送搜索请求。一旦 Raspberry Pi2 收到搜索请求,它就会将请求发送给所有连接到它的 Arduino Uno。 Arduino UNO 将向 UHF RFID 模块发送读取命令。一旦不同位置的任何 UHF RFID 阅读器设法捕获所需的 RFID,它就会将一个值返回给 Arduino UNO。 Arduino UNO 会将 RFID 阅读器位置返回给 Raspberry Pi2,RaspberryPi2 将进一步处理搜索结果并返回到移动应用程序。
如果你

怎么办?

我要开发一个运行在 Windows 10 IoT 核心上的后台应用程序,我们可能需要知道 Raspberry Pi 2 的 IP 地址。没有必要有显示器。感谢全能的 Windows IoT Core Watcher。您所需要做的就是连接您的 Raspberry Pi2 B 型,如下所示:

通过网线连接PC和Raspberry PI2,万能的Windows IoT Core Watcher就能告诉你你的Raspberry Pi2的IP地址是什么:

在 Visual Studio 2015 中创建项目

然后您就可以开始使用 Visual Studio 2015 进行开发,只需下载我在这里分享的代码,然后使用 Visual Studio 2015 运行它。

从github下载代码,就可以直接运行项目了。如果您正在尝试创建一个新项目,您可以尝试这种方式:

1.转到文件->新建->项目

2. 在 Visual C# 模板下,查找“后台应用程序 (IoT)”。键入您的项目名称,您的项目已创建。

3. 创建项目后,接下来是配置调试设置。右键单击项目并选择“属性”

4. 在项目的属性窗口下,点击调试选项卡并进行以下设置:

  1. 平台:ARM
  2. 目标设备:远程机器
  3. 远程机器:<您的IP地址显示在Iot Core Watcher>
  4. 取消选中“使用身份验证”

保存配置,您现在可以开始在新创建的项目中的 StartupTask.cs 文件中编码。


在 Visual Studio 2015 中调试

完成编码并想开始调试后,您可以按照以下步骤和屏幕截图进行操作:

1. 点击左侧灰色栏,在要调查的代码行设置断点:

2.接下来点击绿色的“远程机器”按钮开始调试:

3.进入调试模式后,绿色按钮“远程机器”将变为“继续”,同时步骤按钮将被启用:

  • Next -- 显示下一条语句
  • Step Into -- 进入函数并查看函数内部的代码
  • Step Over -- 跳过当前行并查看下一行代码
  • Step Out -- 退出函数并继续使用前面的代码进行调试。


带有“下一步”、“进入”、“跳过”和“退出”的“继续”按钮

在运行 debug 时,您可以滚动鼠标光标以检查变量的某些值或突出显示并右键单击该变量并选择“添加监视”以将变量添加到监视列表中:

在 Azure 上创建 Web API 以服务于 IoT 和移动应用事务

创建 Asp.NET Web 应用程序项目

1. 创建一个ASP.NET Web Application,输入项目名称,点击底部的OK按钮

2. 在下一个屏幕上单击 ASP.NET 4.5.2 模板下的选择 MVC(如果您喜欢冒险,请随意尝试使用 MVC6 框架的 ASP.NET 5 预览模板。步骤相同)

3.接下来将认证方式设置为“不认证”

4.另外请注意,如果您希望将此 Web API 托管到云服务器上,您可以勾选“在云中托管”选项,如下所示:

如果您没有 microsoft azure 帐户,您可以注册免费试用并享受 200 美元的免费赠金。只需单击此处:https://azure.microsoft.com/en-us/pricing/free-trial/

5. 如果您选择将 Web API 托管到 Azure Web App 上,单击“确定”后,下一个屏幕将需要您登录 Microsoft Azure。

6. 成功登录后,只需输入您的网络应用程序名称和后续详细信息,如表格所示:

填写完所有信息后,单击“确定”,然后等待 VS2015 在您的 Azure 帐户上创建 Web 应用程序和数据库。


成功创建本地和云 Web 应用程序后,接下来您可能希望为您的应用程序创建一个数据库。感谢 MVC 上的实体框架,我们现在可以通过几个简单的步骤为我们的 Web 应用程序设置我们的数据库。

使用实体框架

我将使用 NuGet 包管理器控制台进行安装。所以首先你需要启动你的 Nuget 包管理器,如下所示:工具->NuGet 包管理器->包管理器控制台

2. 接下来在您的包管理器控制台中输入命令“Install-Package EntityFramework”:

3. 接下来您需要创建一个模型类来描述您的数据库表和字段。只需右键单击模型文件夹,然后单击“添加”->“类..”

创建新类后,添加以下行:

使用 System.ComponentModel.DataAnnotations;

使用 System.ComponentModel.DataAnnotations.Schema;

创建模型类后,下一步是使用实体框架创建 WebAPI 控制器和操作。按照下面的打印屏幕,右键单击 Controllers 文件夹并选择“添加”->“新建脚手架项目”:

在下一个屏幕上的 Web API 类别下选择“Web API 2 Controller with actions, using Entity Framework”:

单击“添加”按钮后,将显示以下屏幕:


点击“+” ' 按钮在数据上下文类字段创建一个新的数据上下文类:

在下一个屏幕中单击添加以创建:

填写完所有字段后,单击“添加”以生成脚手架项:

成功生成脚手架项后,您将能够看到控制器和数据上下文类放入 Controllers 文件夹和 Models 文件夹中:

接下来,运行 Enable-Migrations 包管理器控制台中的命令:

启用迁移之后 命令,按照 Add-Migration 命令:

最后更新数据库 命令将基于从模型生成的迁移脚本创建一个数据库。您将能够在 Add_Data 下找到新创建的数据库 表:

发布您的 WEB API

一旦数据库设置成功,web api 就被认为完成了(脚手架控制器将为 RESTful 调用生成基本函数)。只是为了确保 MyThingsController 中存在 GetMything(GET)、PostMything(POST)、PutMything(PUT) 和 Deletemything(DELETE) 函数。

一旦 Web API 项目完成。接下来,您可以通过以下步骤将 Web API 发布到 Azure Web APP:


1. 选择 Build menu> Publish MyThingAPI 如下图:

2. 将显示以下弹出窗口并允许您选择发布目标。如果您为 Web API 使用 ASP.NET5 MVC 6 模板,则可以选择 Microsoft Azure API 应用程序(预览版):

3. 单击 Microsoft Azure Web Apps 后,将显示以下屏幕,您需要登录您的 azure 帐户:

输入您的 azure 凭据并登录:

4. 登录成功后,您将能够检索到您现有的 azure 托管的 Web 应用程序(它应该是在 VS2015 中创建此项目时创建的):

5. 选择 Web Apps 后,单击“确定”,将显示以下屏幕:

连接设置将被传播,只需点击下一步继续

6. 在设置选项卡下,您将看到数据库连接字符串,其他信息将自动填充,但请确保选中“在运行时使用此连接字符串”和“执行代码优先迁移”复选框:

6. 设置完成后,点击发布,发布成功后Visual Studio会立即启动Azure Web App:

发布 web api 后,您可以测试 REST API。我正在使用 Chrome 的扩展程序“Advance REST Client”进行测试:

您可以尝试使用以下 json 字符串进行 POST 调用:

<代码>{

id:1,

状态:“0”,

rfid:"1009622005390623",

图片:"",

name:"一些工具",

类型:“工具”,

位置:“卧室”,

createdAt:"2015-10-13T10:26:01.14",

lastUpdatedAt:"2015-10-13T10:26:01.14"

<代码>}


创建 Windows 通用应用

由于 Iot 后台应用程序和 REST API 已准备就绪,接下来是构建一个 Windows 通用应用程序作为客户端。通用应用程序允许我们为多个设备使用一组代码。我在这里以平板电脑的通用应用程序为例(您可以简单地更改手机或笔记本电脑的布局设置)。

要创建通用应用程序,只需在 Visual Studio 2015 中单击 File>New>Project,然后选择通用应用程序,如下所示:

创建新解决方案后,您可以使用我在 GitHub 中共享的 MyThingApp 替换 cs 脚本和 .xaml 文件。

在 Windows 通用应用中调试:

Windows 通用应用程序提供了多种调试配置,包括 ARM、x64 和 x86 平台。如果您在运行 Windows 64 位的本地 PC 上运行调试,则需要选择 x64 并单击绿色按钮(选择“本地机器”)

如果您的应用程序运行没有错误,它应该如下所示:

设置通知中心和 UWP 推送通知


1. 完成Web API和Universal App后,您可以在这里登录

https://dev.windows.com/en-us/dashboard/Application/New 以保留应用名称。

2. 创建应用程序名称后,返回 MyThingApp 并右键单击您的项目。选择商店>将应用与商店关联

有关创建通知中心的信息,请参阅此处:

https://azure.microsoft.com/en-us/documentation/articles/notification-hubs-windows-store-dotnet-get-started

3.接下来将以下函数添加到App.xaml.cs

私有异步 void InitNotificationsAsync()

<代码> {

var channel =await PushNotificationChannelManager.CreatePushNotificationChannelForApplicationAsync();

var hub =new NotificationHub("notification", "Endpoint=sb://smartwardrobe.servicebus.windows.net/;SharedAccessKeyName=DefaultListenSharedAccessSignature;SharedAccessKey=MlHoVfn1Ub/c2ThUha+Crn7hHSGmqofrW3cJ6IK89Ok>=");

var result =await hub.RegisterNativeAsync(channel.Uri);

<代码> }

也在 OnLaunched 函数中调用这个新函数:

protected override void OnLaunched(LaunchActivatedEventArgs e)

<代码> {

InitNotificationsAsync();

最后,将这行代码添加到 MainPage.cs 中,MainPage() 函数:

this.NavigationCacheMode =NavigationCacheMode.Required;

4. 最后,在 MyThing Web API> MyThingController 中设置线程任务,代码如下:

public class NotificationClass {

内部异步 System.Threading.Tasks.Task SendNotificationAsync(string rfid)

<代码> {

NotificationHubClient hub =NotificationHubClient

.CreateClientFromConnectionString("<你的连接字符串>", "<集线器名称>");

var toast =@"新的Mything需要update";///MainPage.xaml?value=test

await hub.SendWindowsNativeNotificationAsync(toast);

return null;

<代码> }

<代码> }

以及成功创建新记录后的以下代码:

NotificationClass notClass =new NotificationClass();

Thread notificationThread =new Thread(async x => { await notClass.SendNotificationAsync(myThing.rfid); });

notificationThread.Start();

5.设置成功后,创建记录成功后会收到如下toast通知:

6. 点击通知,它会启动安装在您 PC 上的 MyThingApp:

单击“确定”,您将看到新的 RFID 已添加到条目表单中。填写其余信息并更新。



参考链接:

1.Windows10物联网核心设置分步指南:- http://ms-iot.github.io/content/en-US/GetStarted.htm

2.在您的 PC 上设置 Visual Studio 2015:- http://ms-iot.github.io/content/en-US/win10/SetupPCRPI.htm

3.在Raspberry Pi2上设置Windows10 IoT Core的分步说明:- http://ms-iot.github.io/content/en-US/win10/SetupRPI.htm

4.如何开发物联网应用(Blinky示例):- http://ms-iot.github.io/content/en-US/win10/samples/Blinky.htm

5.Windows IoT串口示例:- http://ms-iot.github.io/content/en-US/win10/samples/SerialSample.htm

6.Ms-IoT GitHub 存储库:- https://github.com/ms-iot

7.Windows 在 GitHub 上:- http://microsoft.github.io/windows/

8.Arduino 软件串行示例(使用 UART):- https://www.arduino.cc/en/Tutorial/SoftwareSerialExample

9.SparkFun串口通讯教程:- https://learn.sparkfun.com/tutorials/serial-communication

10.开始使用 Azure 通知中心:- https://azure.microsoft.com/en-us/documentation/articles/notification-hubs-android-get-started/

11.向您的移动服务应用添加推送通知:- https://azure.microsoft.com/en-us/documentation/articles/mobile-services-dotnet-backend-android-get-started-push/

12.Code First 迁移:- https://msdn.microsoft.com/en-sg/data/jj591621.aspx

13.使用 Visual Studio 发布到 Azure Web 应用程序:- http://docs.asp.net/en/latest/tutorials/publish-to-azure-webapp-using-vs.html

14.将应用发布到 Azure Azure 应用服务:- http://www.asp.net/web-api/overview/data/using-web-api-with-entity-framework/part-10

代码

  • RFID 阅读器模块的 Arduino 代码
RFID 阅读器模块的 Arduino 代码C/C++
/* 读取命令将发送到 RFID 模块一旦标签被读取,它将返回到串口 */#include SoftwareSerial mySerial(10, 11); // RX, TXvoid setup() { // 打开串口通信,等待端口打开:Serial.begin(9600); while (!Serial) {; // 等待串口连接。仅 Leonardo 需要 } // 设置 SoftwareSerial 端口的数据速率 mySerial.begin(9600);}void loop() { // 反复运行 if (mySerial.available()) { // 发送读取命令到 RFID 模块字节消息 [] ={0xA0,0x06,0x80,0x00,0x01,0x02,0x01,0xD6}; mySerial.write(message, sizeof(message)); //将数据发送回串行 if(Serial.available()) Serial.write(mySerial.read()); }}
我在 GitHub 上的东西在哪里
https://github.com/seeyouu87/where-is-my-thing

定制零件和外壳

UHF RFID 阅读器模块。用于读取RFID标签。 uhf_reader_jt2850.svgUHF RFID 阅读器模块。用于读取RFID标签 uhf_reader_jt2850.svgUHF RFID 阅读器模块。用于读取RFID标签 uhf_reader_jt2850.svg

示意图

Fritzing 上我的东西在哪里
Fritzing.org 上的示意图 Arduino 与 UHF RFID 模块的连接。

制造工艺

  1. Microsoft Azure Cheat Sheet 2020
  2. FDM 3D 打印:我们今天在哪里?
  3. 边缘计算的边缘在哪里?
  4. 工业 4.0 事实核查:我们今天处于什么位置?
  5. 需要考虑的 4 种无源 RFID 替代技术
  6. 完整的有源 RFID 概述
  7. 带二维码、RFID 和温度验证的访问控制
  8. 聚四氟乙烯在哪里使用?
  9. 金属从何而来?
  10. 你应该在哪里建造?
  11. 锯切概念起源于哪里?
  12. 压缩空气在哪里?!