实验准备

硬件设备准备

  1. 旭日x3派一块

  2. USB数据线一根(C口的)

  3. I/O转版一块

  4. 软排线

  5. 面包板一块

  6. 双色LED灯一个

  7. 继电器一个

其他准备

  1. MpbaXterm

  2. Ubuntu20.04系统环境

  3. python3.8.10环境

  4. jupyterlab环境

  5. 笔记本电脑一台

实验开始

双色灯实现控制

介绍

双色LED发光二极管,就是一个LED发光二极管可以发出两种颜色的灯。本次实验三脚双色LED。这种灯有三个脚,中间脚是共极,两边的脚一个是直脚,一个是斜脚,分别对应一个颜色。举个红绿双色共阳的例子。一般直脚对应红色,斜脚对应绿色,当电流从中间脚流向直脚时,红灯工作;当电流从中间脚流向斜脚时,绿灯工作;当电流从中间脚同时向直脚及斜脚流过时,红灯和绿灯同时工作,混合成颜色。一般的电路会选择此种双色LED的红色和绿色以指示电路的两种工作状态。特殊一点的还会要到第三种混合色,但是这种混合色的一致性比较难把握。

实验原理

将右边的引脚S(绿色)和中间的引脚(红色 )连接到旭日x3派的转板的GPIO上,对旭日x3派上的的引脚进行编程控制,将LED灯从绿色变为红色,然后使用GPIO数字信号进行控制。

接线:-负引脚接GND,R引脚接G17,S引脚接G18如下图所示

接上电源打开MobaXterm进行ssh连接,在命令行输入如下代码

jupyter lab --ip=0.0.0.0 --port=8888 --allow-root

打开浏览器,输入显示的ip地址,点击新建,选择notebook--python3

写入代码,并运行

# 导入旭日x3派内置接口库
import Hobot.GPIO as GPIO
import time


pin_R = 11 # 定义红色LED灯PIN
pin_G = 12 # 定义绿色LED灯PIN

GPIO.setmode(GPIO.BOARD)       # Numbers GPIOs by physical location
GPIO.setwarnings(False)        #  忽略GPIO警告
GPIO.setup(pin_R,GPIO.OUT)
GPIO.setup(pin_G,GPIO.OUT)     #初始化引脚


def Color(): # 设置颜色
    GPIO.output(pin_R,GPIO.HIGH)   #修改输出引脚
    GPIO.output(pin_G,GPIO.LOW)
    time.sleep(1)
    GPIO.output(pin_R,GPIO.LOW)
    GPIO.output(pin_G,GPIO.HIGH)
    time.sleep(1)
    
def Loop():
    while True:
        Color()
        
def Release_pin():#清除引脚
    GPIO.output(pin_R,GPIO.LOW)
    GPIO.output(pin_G,GPIO.LOW)
    GPIO.cleanup()

# 程序入口
if __name__ == "__main__":
    try:
        Loop()
    except KeyboardInterrupt:
        Release_pin()

会发现红绿灯闪烁,间隔为一秒,点击结束按钮释放引脚。

继电器实现控制

介绍

继电器(英文名称:relay)是一种电控制器件,是当输入量(激励量)的变化达到规定要求时,在电气输出电路中使被控量发生预定的阶跃变化的一种电器。它具有控制系统(又称输入回路)和被控制系统(又称输出回路)之间的互动关系。通常应用于自动化的控制电路中,它实际上是用小电流去控制大电流运作的一种“自动开关”。故在电路中起着自动调节、安全保护、转换电路等作用。

实验原理

继电器说明

继电器是具有隔离功能的自动开关元件,广泛应用于遥控、遥测、通讯、自动控制、机电一体化及电力电子设备中,是最重要的控制元件之一。 继电器一般都有能反映一定输入变量(如电流、电压、功率、阻抗、频率、温度、压力、速度、光等)的感应机构(输入部分);有能对被控电路实现“通”、“断”控制的执行机构(输出部分);在继电器的输入部分和输出部分之间,还有对输入量进行耦合隔离,功能处理和对输出部分进行驱动的中间机构(驱动部分)。

工作原理

继电器的工作原理很简单。当继电器供电时,电流开始流经控制线圈; 结果,电磁体开始通电。然后衔铁被吸引到线圈上,将动触点向下拉,从而与常开触点连接。所以带负载的电路通电。然后断开电路会出现类似的情况,因为在弹簧的作用下,动触头将被拉到常触点。这样,继电器的接通和断开可以控制负载电路的状态。

接线

将继电器DC+接到5v,DC-接到GND,IN接G18,COM接5V,双色LED灯的G脚接NC,R引脚接NO,GND接地,如下图所示

运行代码,双色LED灯闪烁,并发出嘀嗒声。

 

#导入所需库
import Hobot.GPIO as GPIO
import time
   
#定义引脚
RelayPin = 11 


def X3pi_setup():
    GPIO.setmode(GPIO.BOARD)        # 采用实际的物理管脚给GPIO口
    GPIO.setwarnings(False)  # 忽略警告
    GPIO.setup(RelayPin, GPIO.OUT)  # 设置Pin模式为输出模式
    GPIO.output(RelayPin, GPIO.LOW) # 关闭继电器
    

def loop():
    while True:
        GPIO.output(RelayPin, GPIO.HIGH)  #高电平时打开继电器
        time.sleep(1)   # 时间间隔                   
        GPIO.output(RelayPin, GPIO.LOW)   #低电平时关闭
        time.sleep(1) 

def destroy():   # 释放资源
    GPIO.output(RelayPin, GPIO.LOW) #关闭继电器
    GPIO.cleanup()

# 程序入口
if __name__ == '__main__':
    X3pi_setup()          运行程序
    try:
        loop()        
    except KeyboardInterrupt:   #结束释放接口

        destroy()