💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
## 舵机 舵机主要用于角度控制,通常使用于航模、智能小车机器人等,在工业控制上也有作用。 套件中配备了一个<a href="http://wiki.dfrobot.com.cn/index.php?title=(DFR)Gravity%EF%BC%9AIO_Expansion_HAT_for_Raspberry_Pi">舵机</a>,如下图。工作电压为4.8~6V,转动角度180°±10°。舵机的输入线有三条,中间红色是电源线,棕色是地线,另外一根橙色线是控制信号线。通过控制线发送PWM的电脉冲来控制舵机。 <div align="center"><img src="images/screenshot_1562051995969.png"/></div> ### step1:硬件连接 将舵机的控制信号线、电源线、地线分别接在树莓派IO扩展板上,如下图。 <div align="center"><img src=""/><p align="center">舵机与IO扩展板连接图</p></div> ### step2:舵机控制 进入DFRobot_RaspberryPi_Expansion_Board/raspberry目录下,新建一个py文件,命名为myservo.py ``` cd DFRobot_RaspberryPi_Expansion_Board/raspberry sudo nano myservo.py ``` 在myservo.py文件中,添加下面内容: ```python #-*- coding:utf-8-*- from DFRobot_RaspberryPi_Expansion_Board import DFRobot_Expansion_Board_IIC as Board from DFRobot_RaspberryPi_Expansion_Board import DFRobot_Expansion_Board_Servo as Servo import time board = Board(1, 0x10) # Select i2c bus 1, set address to 0x10 servo = Servo(board) # print last operate status, users can use this variable to determine the result of a function call def print_board_status(): if board.last_operate_status == board.STA_OK: print("board status: everything ok") elif board.last_operate_status == board.STA_ERR: print("board status: unexpected error") elif board.last_operate_status == board.STA_ERR_DEVICE_NOT_DETECTED: print("board status: device not detected") elif board.last_operate_status == board.STA_ERR_PARAMETER: print("board status: parameter error") elif board.last_operate_status == board.STA_ERR_SOFT_VERSION: print("board status: unsupport board framware version") if __name__ == "__main__": while board.begin() != board.STA_OK: # Board begin and check board status print_board_status() print("board begin faild") time.sleep(2) print("board begin success") servo.begin() # servo control begin chan_list = [board.CHANNEL1] m = 0 while True: for i in range(0, 181): servo.move(chan_list) time.sleep(0.008) time.sleep(0.002) for i in range(0, 181): servo.move(chan_list) time.sleep(0.008) time.sleep(0.002) ``` 在终端输入下面命令,运行程序 ``` python myservo.py ``` 然后可以看到舵机来回转动。 <div align="center"><img src="images/1.gif"/></div> ## 继电器 主控器(单片机)无法直接控制交流电、大电流、大电压等设备,必须通过中间层(继电器)控制,即弱电控制强电,继电器也是最常用的电子设备。 这款数字继电器模块,专为低压主控器设计,可以稳定工作在3V供电场合中。 <div align="center"><img src="images/01.png"/></div> 继电器板载一个红色的LED灯,当常开触点闭合时,LED灯亮;常开触点断开时,LED熄灭。接线端设有常开触点接口(NO)和常闭触点接口(NC),方便扩展使用。 ## 继电器控制家用电器 ### step1: 硬件连接 将继电器连接到树莓派IO扩展板的数字口,如下图。 <div align="center"><img src=" "/><p id="color" style="color:red">图 继电器插在扩展板数字口上</p></div> ### step2: 编写程序 进入DFRobot_RaspberryPi_Expansion_Board/raspberry目录下,新建一个py文件,命名为test.py ``` cd DFRobot_RaspberryPi_Expansion_Board/raspberry sudo nano test.py ``` 在test.py中添加内容: ```python import RPi.GPIO as GPIO import time RelayPin = 16 # pin16 def setup(): GPIO.setmode(GPIO.BCM) # Numbers GPIOs by BCM location GPIO.setup(RelayPin, GPIO.OUT) GPIO.output(RelayPin, GPIO.LOW) def loop(): while True: print("...Relay on") GPIO.output(RelayPin, GPIO.HIGH) time.sleep(1) print("Relay off...") GPIO.output(RelayPin, GPIO.LOW) time.sleep(1) def destroy(): GPIO.output(RelayPin, GPIO.LOW) GPIO.cleanup() # Release resource if __name__ == '__main__': setup() try: loop() except KeyboardInterrupt: # When 'Ctrl+C' is pressed, the child program destroy() will be excuted. destroy() ``` 输入命令运行程序: ``` python test.py ``` 可以看见继电器上红色LED灯每隔一秒闪烁,并且会听到继电器每1秒钟转换开关状态的“滴答声”。 <div align="center"><img src="images/2.gif"/></div> 将用电器接在接线柱上,如下图所示,就可以通过树莓派来控制灯的亮灭了。 <div align="center"><img src="images/2.png"/></div>