1下载的所有文件。
git clonehttp:/ / GitHub。COM / bennywinefeld /家庭自动化。G。
在根目录下有规划的RaspberryPi所需要的文件
switchcontroller.py -主要的Python程序实现控制中心
radiocomm.py–低水平程序发送/接收数据包通过nRF24L01
lib_nrf24.py - nRF24L01的免费图书馆,我贴出来方便
在arduinoedgedevice目录,你会发现:
arduinoedgedevice.ino C代码实现
edgedevicearduinonano.fzz–示意图的边缘设备在Fritzing格式
2。程序Arduinos
每一个Arduino必须有唯一的ID,打开arduinoedgedevice.ino设置为前
#定义board_id 0x02
在上传此代码Arduino电路板将ID = 2。当你打开电源板将闪烁2次–容易找到ID.
测试无线通信之间的拉斯伯里和Arduino的工作运行的底层通信模块直接从覆盆子Unix shell,不启动GUI枢纽:<strong>Python radiocomm.py 2</strong>
这将发送100包ID = 2,得到100回Arduino。每个包包括5个字节。例如下面的包是用board_id = = 2来设置输出引脚3 Arduino的指令(一个连接到LED)1:
0x1 0x2 0xa4 0x3 0x1
预期的回复是0x2 0x1 0xa4 0x3 0x1-即同一数据包的发送者和接收者字节换位。随着测试的进展你应该看到LED开关和Python代码打印信息如
传输95 / 100
发送MSG 0x1 0x2 0xa4 0x3 0x1,尝试1 / 15
有响应0x2 0x1 0xa4 0x3 0x1 0.04秒
消息发送成功
…
100 / 100良好的传输,尝试= 1.04的平均数
开始你的收发器测试彼此靠近。最大射程取决于房子。
三.拉斯伯里中心项目
如果测试通信经历了好,你可以启动服务器。
首先打开SwitchController.py和修改创建对象和边缘设备的部分,例如
myhub。addedgedevice(edgedevice(2,“Yasha的床垫加热器”、\
[ [ 2,pintypes.momentary_switch,“21:30”、“22:00”],\
【3,PinTypes。toggle_switch,“---”、“---”] ] \
))
这将创建ID = 2 Arduino边缘设备通信的一个对象。数字2引脚,连接到光电耦合器被声明为瞬时开关。即切换的物理设备(如床垫加热器)连接到它,我们应该把一个序列0-1-0。21:30是自动的开启时间和关闭时间22:00–。
运行<strong>Python switchcontroller.py</strong>启动Web服务器。
这是一个赶上我们不能把阅读的加热器的实际状态。每当树莓服务器发送0-1-0序列引脚2假设加热器状态翻转。即是,现在关闭,反之亦然。发送信号后,服务器还记得加热器的新状态。但如果你按下加热按钮手动,拉斯伯里知道任何关于这个事件不更新状态。因此,从这一点上它会做所需的–即相反会使加热器在21:30,22:30
而检测加热器的真实状态并将它发送回服务器这是很有可能的,这就需要调整自己的加热器电路,这是从模型到模型非常不同。