资料介绍
描述
项目级别:中级到高级
软件先决条件
- 视窗 10
- 视觉工作室 2015
- 安卓工作室
- MPLAB X IDE(带 XC8 编译器)
介绍
Windows IoT 新的 Windows IoT 为开发人员提供了一些功能,可以在更短的时间内创建强大而高效的应用程序。Windows IoT 驱动的 Raspberry Pi 是这个家庭自动化项目的关键要素。
![poYBAGOkEAyAW2aQAAF4CxAVQX8466.png](https://file.elecfans.com/web2/M00/85/9E/poYBAGOkEAyAW2aQAAF4CxAVQX8466.png)
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. 数字和模拟传感器都可以连接到从设备。由于 Raspberry Pi 从设备通信是双向 RF 链路,因此 Raspberry Pi 无需任何物理连接即可读取传感器读数。
8. 简洁的GUI C#程序将帮助用户检查连接状态、网络监控、设备控制等。
9. 存在基于定时器的控制选项。设置您想要关闭/打开特定设备的时间,Raspberry Pi 将完成剩下的工作。
10.无需太多修改即可轻松引入语音检测/语音命令。
11. 传感器读数可以写入带有时间戳的 Azure 数据库。电气设备也可以通过 Azure 云数据库进行控制。
树莓派连接
![pYYBAGOkEA-AaCkMAAMOZwXAQw4983.jpg](https://file.elecfans.com/web2/M00/86/27/pYYBAGOkEA-AaCkMAAMOZwXAQw4983.jpg)
在这个家庭自动化系统中,Raspberry Pi 没有任何物理连接,除了 nRF SPI 通信链路 [不包括电源、以太网/WiFi 和 HDMI(可选)等基本连接]。所有的控制、监控、决策、触发和切换操作都在 Raspberry Pi 中完成。Raspberry Pi 使用双工无线链路(非 WiFi 或蓝牙标准)与从属设备通信。整个C#程序可以从本文的软件部分(GitHub)下载。
(注意:由于程序的硬件IO要求,编译到x64/x86平台可能无法正常工作。
注意:我为无线模块编写的 nRF 类没有利用该模块的真正潜力。一旦我有足够的时间,我将更新 GitHub nRF 类文件。)
![pYYBAGOkEB6AC25JAASw23glHHE098.jpg](https://file.elecfans.com/web2/M00/86/27/pYYBAGOkEB6AC25JAASw23glHHE098.jpg)
C# 应用程序支持 3 种方式来控制家用电器甚至工业系统。
1. RPi 的 GUI。在 Raspberry Pi 中运行的漂亮 C# GUI 将允许您监视网络命令、不同的传感器读数、控制家用电器和自动控制以及其他后台任务,如 Azure DB 读/写、计时器等。
![poYBAGOkECOARWDQAACyoldkKn8130.jpg](https://file.elecfans.com/web2/M00/85/9E/poYBAGOkECOARWDQAACyoldkKn8130.jpg)
设备框列出了所有可用的从属设备。您可以随时删除或添加从属设备。
在 GUI 的顶部,您可以看到通过 nRF 无线链接从从属设备提取的不同传感器读数。C# 应用程序使用这些传感器读数来自动控制电气设备。
在底部,“网络日志”框显示通过 Azure 云数据库或 LAN 从移动设备/计算机接收到的所有命令以及连接设备的 IP 地址和名称。在其下方,放置了一个状态栏。它向用户显示所有必要的信息和通知。通过打开“自动更新”按钮,您将从选定的从属设备的传感器数据中获得实时更新(可以将这些传感器数据写入带有时间戳的 Azure DB 中)。此按钮还可用于检查从设备是否在 nRF24 的 RF 链接的无线范围内。“自动控制”复选框用于启用“自动控制”模式,该模式可以根据光强度传感器读数调整光强度。在 PIR 传感器的帮助下,还可以对人员存在发出警报。
除了控制之外,还可以通过 LAN 或 Azure 云数据库传输消息。
![poYBAGOkEFKAHY2cAA4rxFG2fig930.jpg](https://file.elecfans.com/web2/M00/85/9E/poYBAGOkEFKAHY2cAA4rxFG2fig930.jpg)
2.本地数据报包。
我开发了一个简单的 Android 和 Windows 通用应用程序,用于通过本地网络 (LAN) 控制设备。
3. 基于Azure 云数据库的控制。
上面说的同一个应用程序有一个特殊的模式通过互联网(通过 Azure 云)向 Raspberry Pi 发送命令
![poYBAGOkEFWAaFDaAACM9_MRkEE396.png](https://file.elecfans.com/web2/M00/85/9E/poYBAGOkEFWAaFDaAACM9_MRkEE396.png)
(注意:我制作这些应用程序只是为了测试功能。如果你擅长 GUI 设计,你可以做得更好
注意:如果没有运行 Windows IoT 的强大 Raspberry Pi 和上述 C# 应用程序,则无法使用此应用程序。
注意:所有网络命令都以一个字符开头, '!'
您可以在 Pi 的 C# 程序的 MainPage.cs 文件中看到完整的命令。)
从机
从设备是一块基于 PIC18F24K20 的板,带有 nRF24 无线模块。除了单独的设备类型代码和唯一的 ID/地址编号外,所有从属设备都具有相同的电路和固件程序。因此,不费吹灰之力就可以轻松制作任意数量的从属设备。
![pYYBAGOkEGqATXKwAAVPZ2cmjT0997.jpg](https://file.elecfans.com/web2/M00/86/27/pYYBAGOkEGqATXKwAAVPZ2cmjT0997.jpg)
每个从属设备都有一个“AddMe”和“RemoveMe”按钮,用于将该从属设备注册到 Raspberry Pi 或删除从属设备。
更新 (15/09/2015)
我添加了一个“自动扫描”选项。现在,连同“AddMe”按钮,您可以扫描其无线范围内的从属设备。此选项将允许您添加树莓派无线范围内的所有从属设备,而无需按从属设备的“AddMe”按钮。您所需要的只是“扫描”并等待可用设备列出。>
传感器可用
1.温度传感器(LM35)
2.光强度传感器(LDR)
3. PIR传感器(HC-SR601)
![pYYBAGOkEG-ANARjAABmQfAsF14651.png](https://file.elecfans.com/web2/M00/86/27/pYYBAGOkEG-ANARjAABmQfAsF14651.png)
从设备原理图和 PCB 设计
您可以从本文的硬件部分下载 Eagle CAD 文件。
(我没有在互联网上找到任何好的 nRF Eagle 库。所以我自己制作了一个。您可以在本文的自定义部件和外壳部分找到这个 nRF24L01+ 库)
![poYBAGOkEHuAAwmLAAGLP02aIvs258.png](https://file.elecfans.com/web2/M00/85/9F/poYBAGOkEHuAAwmLAAGLP02aIvs258.png)
从设备如何工作
Slave Devices类似于无线扩展树莓派的IO口。尽管无线通信系统有点复杂,但使用起来非常方便。永远不可能仅仅为了实施自动化系统而为整个家庭布线。所以,我决定选择无线系统。另一个附加优势是,您可以随时将家庭自动化系统扩展到任何房间,而无需添加或更新一行代码。您所需要的只是奴隶的“点击添加我”按钮。想象一下用有线系统做同样的事情!!
![poYBAGOkEJWAZ8JhAAOFmbZJseo158.png](https://file.elecfans.com/web2/M00/85/9F/poYBAGOkEJWAZ8JhAAOFmbZJseo158.png)
正如我所说,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 发送的触发延迟触发三端双向可控硅开关。
![poYBAGOkEJqAARwbAAEnuh0Wzek791.png](https://file.elecfans.com/web2/M00/85/9F/poYBAGOkEJqAARwbAAEnuh0Wzek791.png)
![pYYBAGOkEKyASpRWAAPVRdBtqoo879.jpg](https://file.elecfans.com/web2/M00/86/27/pYYBAGOkEKyASpRWAAPVRdBtqoo879.jpg)
B. 中继装置
作为中继设备配置和连接从站非常容易。除了 5v 或 12v 继电器、BC547 NPN 晶体管 1k 电阻器和 1N4001/1N4004/1N4007 二极管或 ULN2003 达林顿对 IC 之外,您不需要任何额外的大型电路。我建议使用现成的简单继电器板(它非常便宜且容易获得,不会超过 2 美元[至少在我们地区])
![pYYBAGOkEK6AWnsiAAA5vxqgSBU412.png](https://file.elecfans.com/web2/M00/86/27/pYYBAGOkEK6AWnsiAAA5vxqgSBU412.png)
C. 12v直流电机装置
它是中继设备的扩展。这里不是继电器电路,从设备控制两个 12v 直流电机。流行的电机驱动器 IC L293 或 L93D 可用于这些设备。
![pYYBAGOkELGAQkITAABzHqOByFk242.jpg](https://file.elecfans.com/web2/M00/86/27/pYYBAGOkELGAQkITAABzHqOByFk242.jpg)
树莓派从机无线通信
对于 Raspberry Pi 和从属设备之间的无线通信,我使用了 nRF24L01+ 模块并在 10 字节的有效载荷内创建了自定义数据包结构。
![poYBAGOkELOAAp8rAAD9kzPg9rQ227.png](https://file.elecfans.com/web2/M00/85/9F/poYBAGOkELOAAp8rAAD9kzPg9rQ227.png)
数据包类型和从设备 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
一些沟通情况
![pYYBAGOkELeAddzkAACuNpFE-bM579.png](https://file.elecfans.com/web2/M00/86/27/pYYBAGOkELeAddzkAACuNpFE-bM579.png)
![poYBAGOkELmAAMJqAAC_Kj5q_8g868.png](https://file.elecfans.com/web2/M00/85/9F/poYBAGOkELmAAMJqAAC_Kj5q_8g868.png)
![poYBAGOkELyAJTwiAACmDLmw3uU262.png](https://file.elecfans.com/web2/M00/85/9F/poYBAGOkELyAJTwiAACmDLmw3uU262.png)
![poYBAGOkEL-AWQuOAACfBoaGzOM152.png](https://file.elecfans.com/web2/M00/85/9F/poYBAGOkEL-AWQuOAACfBoaGzOM152.png)
---------------------------------------------- -
其他有用的链接和注释
- 要启用 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 家庭自动化与其他系统
![Windows IoT 家庭自动化与其他系统](https://hackster.imgix.net/uploads/image/file/76898/Adv.png?auto=compress%2Cformat&w=740&h=555&fit=max)
附录
有些人可能不熟悉微控制器 (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 引脚)。
![pYYBAGOkEMyALuA7AAOLz5BETv8224.jpg](https://file.elecfans.com/web2/M00/86/27/pYYBAGOkEMyALuA7AAOLz5BETv8224.jpg)
3. 你可以在PCB设计中看到PicKit3的header。
..................................................... ..................................................... ......................
不可能在这里解释整个程序。因此,请阅读给定代码文件的注释。我在本文末尾添加了一些有用的代码片段。
随时发表您对这个项目的评论、意见和疑问。
谢谢 :)
阿南德。
- 基于Raspberry PI的应用程序的典型场景家庭自动化
- 基于诺基亚5110的Raspberry Pi帽子 0次下载
- 基于树莓派的开源库存管理系统和MySQL数据库 0次下载
- 基于Microsoft Azure和Raspberry Pi的鸟类探测器
- 带有使用Raspberry Pi的数据库安全系统的键盘
- ACS数据库与RSC数据库比较研究
- 数据库系统原理与应用教程之关系数据库的详细资料说明 4次下载
- 创建新的数据库和更改SQL Server CE数据库中的数据操作教程免费下载 5次下载
- 数据库教程之数据库的设计过程资料说明 10次下载
- 数据库学习教程之数据库的发展状况如何数据库有什么新发展 5次下载
- 数据库教程之如何进行数据库设计 21次下载
- 如何进行数据库设计?数据库设计介绍和需求分析及结构设计资料概述 0次下载
- 《爱上Raspberry Pi》中译版-电子书籍.pdf 0次下载
- 无线家庭自动化IPv6和特 4次下载
- 现代家庭自动化遥控系统电路图
- 无模式数据库的利与弊 528次阅读
- 一款数据库自动化提权工具 733次阅读
- 多平台的关系数据库管理和开发工具 937次阅读
- 什么是数据库 1474次阅读
- Python-mysql数据库基础 740次阅读
- 常见的数据库管理 2110次阅读
- 基于Raspberry Pi Pico开发先进的家庭自动化系统 3003次阅读
- 云数据库和自建数据库的区别及应用 4669次阅读
- 利用Raspberry Pi构建存储和虚拟化时间序列数据 952次阅读
- 自动驾驶技术虚拟场景数据库的介绍和特点及仿真场景的详细概述 1.1w次阅读
- 一文看懂数据库原理与应用 11.8w次阅读
- 数据库引擎是什么 1.1w次阅读
- 什么是数据库技术_数据库技术的基础知识 1.3w次阅读
- 目前流行的数据库_构建数据库系统的流程 7166次阅读
- 基于COM技术的SCADA系统数据库设计 2460次阅读
下载排行
本周
- 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次下载 | 免费
评论