查看: 869|回复: 0

[原创] (新潮)用ALi TigerBoard 和电子元件建立一个小型家庭系统

[复制链接]

该用户从未签到

发表于 2016-3-29 16:05:49 | 显示全部楼层 |阅读模式
分享到:
注意事项:
在我们继续实验之前,我想有必要提醒一下关于实验中“电流”的危险性。一旦出现任何状况,最糟糕的情况就是死掉或者烧了你的房子。所以,请不要试图完成任何文中提到但是你不理解事情,或者你可以在制作的时候寻求一些有经验的电工的帮助。
实验准备
硬件需求
ALi TigerBoard(或者任何5V输出功率的型号,均可比如树莓派2)
USB无线软件狗
8路继电器
一些Female-Female跳线(40 PCS FEMALE TO FEMALE JUMPER WIRES)
灯头电线
(以上硬件,某宝均有销售)
其他要求
了解基本Python语言或者其他任何语言(会用到Python)
对Linux系统有基本了解
专心致志
流程要求
首先,用 ssh 链接到ALi TigerBoard上,并安装“apache”和“php5”:

你会需要安装 python 的 GPIO 库来控制树莓派的 GPIO 插脚:

了解元件
现在,在我们继续制作之前,你需要了解一下我们将使用到的电子元件。
1 、继电器
继电器是一种使用非常低的电压输入控制高压电的电气设备。由一个线圈缠绕的金属杆和两
个小型金属节点构成的闭合电路。其中一个节点是固定的,其他的都是可移动的。无论何时,
当电流通过线圈的时候,它会产生一个磁场,吸引可移动节点向静态节点运动,形成电路。
通过给线圈供应小额电压,我们就能完成高压电路的轮回。同时,静态节点并非在物理上与
线圈有联系,因此一旦有地方出错,微控制器驱动的线圈也很少出现故障。

试验中,我使用一个 8 路继电器,可以同时控制 8 个设备。你可以选择自己的继电器或者继
电板,但是请确保你在继电器的额定电压之内处理,以避免任何事故的发生。
2 、跳线
跳线就是我们链接 ALi TigerBoard GPIO插脚与继电器的简单连接电线。
3 、ALi TigerBoard
我们使用的主角 ALi TigerBoard 作为一个微控制器来操纵继电器。它的 GPIO(通用输入/输出)插
脚。你可以看到下面这些插脚的布局,我们将使用这些接口为继电器加电和控制开关。

连接电路
电路非常简单。我们将连接 GPIO 插脚到继电板上。首先连接继电器板上的“GND”与
ALi TigerBoard 上的任意“GND”。然后链接继电器的“IND1”到 GPIO PIN 17,我们会把 GPIO PIN 17 作
为一个控制第一继电器的输出。最后,将继电器的“VCC”连接到ALi TigerBoard的“5V”GPIO 插脚。
让我们简单直接设置一下:

现在我们到了最为棘手的部分,我们要将继电器连接到接通主电路供电的灯头上。但是,我
想先给你介绍一个如何通过直流屏电源开启及关闭灯光的简单操作。
我们通常连接两根电线到灯泡上,来提供电流供给。其中一根电线是“中性”电线,另一根
则是实际带着电流的“负极”电线,同样的这里也有一个控制整个电路的开关。因此,当开
关(闭合)连接到流经灯泡的电流和负极电线时,电路便完整了。灯泡从而亮了起来。当开
关(断开),破坏了电路和灯泡的电流,因此灯泡不亮。这里有一个小的电路图来解释具体
情况:

当我们在试验中,我们需要“负极电线”通过我们的继电器来打破电路,从而使用继电器开
关的控制流经的电流。因此,当继电器打开,在闭合电路中灯泡也应该亮起来,反之亦然。
请参考一下完整的电路:

控制脚本
现在,终于到了软件的部分。我编写了一个简单的 python 脚本来控制继电器开关,使用了
GPIO PIN 17 和一个 PHP 代码可以在任何移动终端上面来运行 python 脚本。下面我会贴上源代码。


注意:你将会需要添加“www-data”用户到 sudoers 文件。
注意+:PHP 代码只是为了测试,我们不建议在公共环境中运行。
完整代码分享:

  • #!/usr/bin/python
  • import sys
  • import RPi.GPIO as GPIO
  • GPIO.setwarnings(False)
  • GPIO.setmode(GPIO.BCM)
  • args = sys.argv
  • pin = 17 # GPIO PIN 17
  • ctl = args[1] #Argument 1 for ON/OFF
  • if (int(ctl) == 1):
  •         GPIO.setup(pin, GPIO.OUT)
  •         GPIO.output(pin,GPIO.HIGH)
  • if (int(ctl) == 0):
  •         GPIO.setup(pin, GPIO.OUT)
  •         GPIO.output(pin, GPIO.LOW)
回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /2 下一条

手机版|小黑屋|与非网

GMT+8, 2024-4-28 11:34 , Processed in 0.113545 second(s), 17 queries , MemCache On.

ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

苏公网安备 32059002001037号

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.