简单搭建属于自己的物联网系统(五):简单控制LED灯开关

物联网 · 02-01 · 377 人浏览

前言

本篇篇幅较少,主要介绍使用GPIO接口控制LED灯的开关。

准备工作

LED发光二极管。
pF316US.md.jpg

连接LED灯

LED灯长针为正极,短针为负极,为方便区分,长针连红线,短针连黑线,如图所示。
pF31qC4.md.jpg

对照开发板的针脚图,将LED灯连接到开发板上。红线连接任意一个GPIO接口,黑线连接GND接口。
pF33nVf.md.png

这里我连接的是GPIO3_D3。注意不要将正负极接反,否则可能会烧坏发光二极管和开发板。

控制LED灯

OrangePi 3B 官方系统中已经预装了wringOP,直接使用以下命令查看GPIO接口使用情况

gpio readall 

执行结果如图所示。
pF33BRJ.md.png

由图可知,GPIO3_D3所对应的wPi编号为25,当前模式为IN。
首先将25号接口模式改为输出模式OUT。

gpio mode 25 out

此时25号口输出为低电平,自然LED灯是不会亮的。接下来将25号口设置输出高电平。

gpio write 25 1

执行后,LED灯成功点亮,如图所示。
pF33Dz9.md.jpg

若要关闭LED灯,将25号口设置输出低电平即可。

gpio write 25 0

使用 Python 控制

使用 os.system() 执行命令即可。

# 开
os.system("gpio write 25 1")

# 关
os.system("gpio write 25 0")

如果想让LED灯闪烁,可以这样:

while True:
    time.sleep(0.5)
    os.system("gpio write 25 1")
    time.sleep(0.5)
    os.system("gpio write 25 0")

这样,LED灯将0.5秒闪烁一次。

对接物联网平台

定义命令。
pF33oQA.md.png

设备侧做以下修改:

def onTopicIssueCommand(self, payload):
    entry = payload["msg"]

    id = entry["command_id"]

    match entry["param"]:
        case "led":
            match entry["value"]:
                case "ON":
                    self.led.LED_ON(25)
                case "OFF":
                    self.led.LED_OFF(25)
                case "FLASH":
                    self.led.LED_FLASH(25)

    self.responseCommand(id)

云端下发命令

pF33qdf.md.png

版权声明

本文系作者原创文章,未经允许不得转载,否则保留追究法律责任的权利。https://www.scott-sloan.cn/archives/266/

物联网
Theme Jasmine by Kent Liao