资料介绍
描述
项目级别:中级到高级
软件先决条件
- 视窗 10
- 视觉工作室 2015
- 安卓工作室
- MPLAB X IDE(带 XC8 编译器)
介绍
Windows IoT 新的 Windows IoT 为开发人员提供了一些功能,可以在更短的时间内创建强大而高效的应用程序。Windows IoT 驱动的 Raspberry Pi 是这个家庭自动化项目的关键要素。
Raspberry Pi 充当系统的主人。Raspberry Pi 通过 2.4GHz ISM Band RF Link 连接到许多从属设备。从设备是一个基于 PIC18F 微控制器的电路板,具有与 Raspberry Pi 建立双工无线链路所需的电路和程序。除了不同的设备 ID/地址(应该是唯一的)和设备类型编号外,每个从设备都具有相同的电路和 PCB 设计。Windows IoT 上的 C# 程序能够同时处理任意数量的从属设备。
特征
2. Raspberry Pi 通过 ISM 频段 2.4GHz 无线链路连接到一个或多个从设备。
3. 这些从属设备允许Raspberry Pi 远程控制家用电器/电子设备。
4. 可以进行不同级别的控制。
一种。基于继电器的控制(简单的开/关功能)。
b. 基于 Triac 的控制(可以控制光强度或平均功率)
d. 用户可以毫不费力地添加其他控制方法,如 PWM、反馈系统等。
5. 我已经编写了一个移动应用程序来启用基于 Internet 和本地网络(数据报套接字)的控制。
6. 树莓派添加新的从设备无需更改程序。只需点击奴隶的“添加我”按钮。Raspberry Pi 会自动将设备添加到网络(自动扫描选项也可用)。
7. 数字和vwin 传感器都可以连接到从设备。由于 Raspberry Pi 从设备通信是双向 RF 链路,因此 Raspberry Pi 无需任何物理连接即可读取传感器读数。
8. 简洁的GUI C#程序将帮助用户检查连接状态、网络监控、设备控制等。
9. 存在基于定时器的控制选项。设置您想要关闭/打开特定设备的时间,Raspberry Pi 将完成剩下的工作。
10.无需太多修改即可轻松引入语音检测/语音命令。
11. 传感器读数可以写入带有时间戳的 Azure 数据库。电气设备也可以通过 Azure 云数据库进行控制。
树莓派连接
在这个家庭自动化系统中,Raspberry Pi 没有任何物理连接,除了 nRF SPI 通信链路 [不包括电源、以太网/WiFi 和 HDMI(可选)等基本连接]。所有的控制、监控、决策、触发和切换操作都在 Raspberry Pi 中完成。Raspberry Pi 使用双工无线链路(非 WiFi 或蓝牙标准)与从属设备通信。整个C#程序可以从本文的软件部分(GitHub)下载。
(注意:由于程序的硬件IO要求,编译到x64/x86平台可能无法正常工作。
注意:我为无线模块编写的 nRF 类没有利用该模块的真正潜力。一旦我有足够的时间,我将更新 GitHub nRF 类文件。)
C# 应用程序支持 3 种方式来控制家用电器甚至工业系统。
1. RPi 的 GUI。在 Raspberry Pi 中运行的漂亮 C# GUI 将允许您监视网络命令、不同的传感器读数、控制家用电器和自动控制以及其他后台任务,如 Azure DB 读/写、计时器等。
设备框列出了所有可用的从属设备。您可以随时删除或添加从属设备。
在 GUI 的顶部,您可以看到通过 nRF 无线链接从从属设备提取的不同传感器读数。C# 应用程序使用这些传感器读数来自动控制电气设备。
在底部,“网络日志”框显示通过 Azure 云数据库或 LAN 从移动设备/计算机接收到的所有命令以及连接设备的 IP 地址和名称。在其下方,放置了一个状态栏。它向用户显示所有必要的信息和通知。通过打开“自动更新”按钮,您将从选定的从属设备的传感器数据中获得实时更新(可以将这些传感器数据写入带有时间戳的 Azure DB 中)。此按钮还可用于检查从设备是否在 nRF24 的 RF 链接的无线范围内。“自动控制”复选框用于启用“自动控制”模式,该模式可以根据光强度传感器读数调整光强度。在 PIR 传感器的帮助下,还可以对人员存在发出警报。
除了控制之外,还可以通过 LAN 或 Azure 云数据库传输消息。
2.本地数据报包。
我开发了一个简单的 Android 和 Windows 通用应用程序,用于通过本地网络 (LAN) 控制设备。
3. 基于Azure 云数据库的控制。
上面说的同一个应用程序有一个特殊的模式通过互联网(通过 Azure 云)向 Raspberry Pi 发送命令
(注意:我制作这些应用程序只是为了测试功能。如果你擅长 GUI 设计,你可以做得更好
注意:如果没有运行 Windows IoT 的强大 Raspberry Pi 和上述 C# 应用程序,则无法使用此应用程序。
注意:所有网络命令都以一个字符开头, '!'
您可以在 Pi 的 C# 程序的 MainPage.cs 文件中看到完整的命令。)
从机
从设备是一块基于 PIC18F24K20 的板,带有 nRF24 无线模块。除了单独的设备类型代码和唯一的 ID/地址编号外,所有从属设备都具有相同的电路和固件程序。因此,不费吹灰之力就可以轻松制作任意数量的从属设备。
每个从属设备都有一个“AddMe”和“RemoveMe”按钮,用于将该从属设备注册到 Raspberry Pi 或删除从属设备。
更新 (15/09/2015)
我添加了一个“自动扫描”选项。现在,连同“AddMe”按钮,您可以扫描其无线范围内的从属设备。此选项将允许您添加树莓派无线范围内的所有从属设备,而无需按从属设备的“AddMe”按钮。您所需要的只是“扫描”并等待可用设备列出。>
传感器可用
1.温度传感器(LM35)
2.光强度传感器(LDR)
3. PIR传感器(HC-SR601)
从设备原理图和 PCB 设计
您可以从本文的硬件部分下载 Eagle CAD 文件。
(我没有在互联网上找到任何好的 nRF Eagle 库。所以我自己制作了一个。您可以在本文的自定义部件和外壳部分找到这个 nRF24L01+ 库)
从设备如何工作
Slave Devices类似于无线扩展树莓派的IO口。尽管无线通信系统有点复杂,但使用起来非常方便。永远不可能仅仅为了实施自动化系统而为整个家庭布线。所以,我决定选择无线系统。另一个附加优势是,您可以随时将家庭自动化系统扩展到任何房间,而无需添加或更新一行代码。您所需要的只是奴隶的“点击添加我”按钮。想象一下用有线系统做同样的事情!!
正如我所说,slave 设备以灵活性和更多控制扩展了 Raspberry Pi 的范围。由用户决定他/她应该分配给从属设备的控制功能。就像模板一样,我制作了 5 种不同类型的从属控件。您可以毫不费力地将它扩展到任何类型的任何数字。
public enum device_type : byte
{
Test_Device = 0, //Used a prototype for testing
Triac_Device = 1, //Triac/Solid state relay high speed switching
Relay_Device = 2, //Common Relay Control
Buzzer_Device = 3, //Buzzer and Alarm Control board (Not implemented)
Motor_Device = 4
};
上面的枚举语句显示了我的程序中可能的从属类型。
A. 三端双向可控硅装置
(注:对功率器件不熟悉的可以省略该类Slave Devices。)
Triac 是一种交流功率器件,可用于电机速度控制、光强度控制等快速开关应用。适当的触发是必要的,在设计 Triac 电路时还应考虑换向方法。从设备和 TRIAC 控制板的集成使系统更加有用和灵活。Triac 的触发有点棘手。您需要一个过零检测器来了解交流电 (LM358) 的过零点。从机内部的 PIC18F24K20 微控制器将识别过零点(来自 LM358 的方波)并根据我们从 Raspberry Pi 发送的触发延迟触发三端双向可控硅开关。
B. 中继装置
作为中继设备配置和连接从站非常容易。除了 5v 或 12v 继电器、BC547 NPN 晶体管 1k 电阻器和 1N4001/1N4004/1N4007 二极管或 ULN2003 达林顿对 IC 之外,您不需要任何额外的大型电路。我建议使用现成的简单继电器板(它非常便宜且容易获得,不会超过 2 美元[至少在我们地区])
C. 12v直流电机装置
它是中继设备的扩展。这里不是继电器电路,从设备控制两个 12v 直流电机。流行的电机驱动器 IC L293 或 L93D 可用于这些设备。
树莓派从机无线通信
对于 Raspberry Pi 和从属设备之间的无线通信,我使用了 nRF24L01+ 模块并在 10 字节的有效载荷内创建了自定义数据包结构。
数据包类型和从设备 ID
来自从设备的“add_me_packet”将在 Raspberry Pi 的设备列表中注册该从设备 ID。Raspberry Pi 将使用这个唯一的设备 ID 与特定的从设备进行进一步的通信。
同样,数据包通常由树莓派下发,用于控制操作。
从属设备在收到来自树莓派的更新数据包请求后,将以其传感器读数和连接设备的状态作为数据包响应给树莓派。如果您知道系统的工作原理,您可以轻松地将我的 10 字节数据包系统更改为 20 或 32(最大)数据包系统。
设备类型
我们已经看到了 Triac 器件、继电器和电机控制板。Raspberry Pi 如何知道或识别从设备将要执行的操作类型(你已经知道,每个从设备都有相同的固件和电路)。这由数据包的第 3 个字节定义。
要将从设备配置为电机设备,您需要更改给定嵌入式 C 程序的#define 语句。
//#define triac
#define relay //////need to change according to your device
#define device_id 59 //////need to change according to your device
///////////////////////////////////////////////////////////
#define device_type 4
///Device type declaration for program
/*
Test_Device = 0,
Triac_Device = 1,
Relay_Device = 2,
Buzzer_Device = 3,
Motor_Device = 4
*/
对于可控硅设备
#define triac ///Uncomment this define statement
//#define relay //////need to change according to your device
#define device_id 59 //////need to change according to your device
///////////////////////////////////////////////////////////
#define device_type 1 ///change to 1
对于继电器设备
//#define triac
#define relay //////need to change according to your device
#define device_id 59 //////need to change according to your device
///////////////////////////////////////////////////////////
#define device_type 2
一些沟通情况
---------------------------------------------- -
其他有用的链接和注释
- 要启用 Internet 控制,您需要注册 Azure 帐户并使用 Azure 数据库。此链接将为您简要介绍 Azure 数据库和 Azure 移动服务Azure
-
(Pi 的 C# 仅使用第一个表条目)
1 / 4 • hi world 或任何文本:Pi 将在网络日志窗口中显示此消息
-
可以将不同的传感器读数插入到 Azure 数据库中。我没有在我的系统中使用它,但你只需要 2 行代码就可以做到这一点。只需将更新代码放置在
azureMonitor_tick
计时器滴答事件中。
//Note free Azure Subscription has 20MB database size limit.
- 您必须输入自己的 Azure 订阅密钥、表条目 ID 和其他信息,才能在您的计算机/树莓派/手机上运行我的程序。
public static MobileServiceClient MobileService = new MobileServiceClient(
"https://myandroid.azure-mobile.net/",
"Replace this string");
和
item_default.Id = "xxxxxxxxxxxxxxxxxxxxxxxxxx";
//Inside this case statement of data_received(byte[] data_byte) function
case (byte)packet_type.update_packet:
..................
if ((bool)autocontrol.IsChecked)
{
byte[] bb = {0x00,0x00, 0x00
, 0x00 , 0x00 , 0x00 };
if (temp < 140)
bb[0] = (byte)(temp);
else
bb[0] = 140;
bb[1] = data_byte[8]; //Added code (This will enable buzzer based
//PIR reading.
bb[2] = lastitem.device3_state;
bb[3] = lastitem.device4_state;
nrf_send_data(bb, lastitem.device_address, packet_type.data_packet);
}
.......
}
最后一点
Windows IoT 家庭自动化与其他系统
附录
有些人可能不熟悉微控制器 (uC) 和 uC 编程。我将解释刻录从属设备的 .hex 文件所需的一些基本内容。
1.您需要安装Microchip的MPLAB X IDE和XC8 Compiler才能重新编译程序。如果只需要烧录程序,则不需要安装 XC8 编译器。
您可以从此链接下载 MPLAB X 和 XC8 编译器MPLAB X 和 XC8
2. 编程硬件工具或简单的编程器是将程序烧录到 uC 中必不可少的。对于 Microchip 的 PIC 控制器,可以使用 PicKit3、PicKit2 或 ICD3/2。(需要连接 MCLR、VDD、GND、PGD 和 PGC 引脚)。
3. 你可以在PCB设计中看到PicKit3的header。
..................................................... ..................................................... ......................
不可能在这里解释整个程序。因此,请阅读给定代码文件的注释。我在本文末尾添加了一些有用的代码片段。
随时发表您对这个项目的评论、意见和疑问。
谢谢 :)
阿南德。
- 基于Raspberry PI的应用程序的典型场景家庭自动化
- 基于诺基亚5110的Raspberry Pi帽子 0次下载
- 基于树莓派的开源库存管理系统和MySQL数据库 0次下载
- 基于Microsoft Azure和Raspberry Pi的鸟类探测器
- 带有使用Raspberry Pi的数据库安全系统的键盘
- ACS数据库与RSC数据库比较研究
- 创建新的数据库和更改SQL Server CE数据库中的数据操作教程免费下载 5次下载
- 数据库教程之数据库的设计过程资料说明 10次下载
- 数据库学习教程之数据库的发展状况如何数据库有什么新发展 5次下载
- 数据库教程之数据库的创建与管理详细资料免费下载 18次下载
- 数据库教程之如何进行数据库设计 21次下载
- 如何进行数据库设计?数据库设计介绍和需求分析及结构设计资料概述 0次下载
- 《爱上Raspberry Pi》中译版-电子书籍.pdf 0次下载
- 无线家庭自动化IPv6和特 4次下载
- 现代家庭自动化遥控系统电路图
- 无模式数据库的利与弊 366次阅读
- 一款数据库自动化提权工具 558次阅读
- 多平台的关系数据库管理和开发工具 698次阅读
- 什么是数据库 1190次阅读
- Python-mysql数据库基础 614次阅读
- 常见的数据库管理 1916次阅读
- 基于Raspberry Pi Pico开发先进的家庭自动化系统 2849次阅读
- 云数据库和自建数据库的区别及应用 4412次阅读
- 利用Raspberry Pi构建存储和虚拟化时间序列数据 884次阅读
- 自动驾驶技术虚拟场景数据库的介绍和特点及仿真场景的详细概述 1.1w次阅读
- 一文看懂数据库原理与应用 11.7w次阅读
- 数据库引擎是什么 1.1w次阅读
- 什么是数据库技术_数据库技术的基础知识 1.3w次阅读
- 目前流行的数据库_构建数据库系统的流程 7076次阅读
- 基于COM技术的SCADA系统数据库设计 2343次阅读
下载排行
本周
- 1山景DSP芯片AP8248A2数据手册
- 1.06 MB | 532次下载 | 免费
- 2RK3399完整板原理图(支持平板,盒子VR)
- 3.28 MB | 339次下载 | 免费
- 3TC358743XBG评估板参考手册
- 1.36 MB | 330次下载 | 免费
- 4DFM软件使用教程
- 0.84 MB | 295次下载 | 免费
- 5元宇宙深度解析—未来的未来-风口还是泡沫
- 6.40 MB | 227次下载 | 免费
- 6迪文DGUS开发指南
- 31.67 MB | 194次下载 | 免费
- 7元宇宙底层硬件系列报告
- 13.42 MB | 182次下载 | 免费
- 8FP5207XR-G1中文应用手册
- 1.09 MB | 178次下载 | 免费
本月
- 1OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 2555集成电路应用800例(新编版)
- 0.00 MB | 33566次下载 | 免费
- 3接口电路图大全
- 未知 | 30323次下载 | 免费
- 4开关电源设计实例指南
- 未知 | 21549次下载 | 免费
- 5电气工程师手册免费下载(新编第二版pdf电子书)
- 0.00 MB | 15349次下载 | 免费
- 6数字电路基础pdf(下载)
- 未知 | 13750次下载 | 免费
- 7电子制作实例集锦 下载
- 未知 | 8113次下载 | 免费
- 8《LED驱动电路设计》 温德尔著
- 0.00 MB | 6656次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935054次下载 | 免费
- 2protel99se软件下载(可英文版转中文版)
- 78.1 MB | 537798次下载 | 免费
- 3MATLAB 7.1 下载 (含软件介绍)
- 未知 | 420027次下载 | 免费
- 4OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 5Altium DXP2002下载入口
- 未知 | 233046次下载 | 免费
- 6电路仿真软件multisim 10.0免费下载
- 340992 | 191187次下载 | 免费
- 7十天学会AVR单片机与C语言视频教程 下载
- 158M | 183279次下载 | 免费
- 8proe5.0野火版下载(中文版免费下载)
- 未知 | 138040次下载 | 免费
评论
查看更多