## 舵机
舵机主要用于角度控制,通常使用于航模、智能小车机器人等,在工业控制上也有作用。
套件中配备了一个<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>
- 前言
- 第一章 树莓派快速入门
- 1. 初识树莓派3B+
- 2. 烧录系统
- 3. 树莓派连接键盘鼠标和显示器
- 4. 启动树莓派
- 5.树莓派连接网络
- 6. Windows远程访问树莓派
- 7. 终端通过raspi-config配置树莓派
- 第二章 树莓派编程
- 1. Linux入门操作
- 常用的linux命令
- 重要的快捷键
- 通过命令安装软件
- 树莓派关机/重启
- 2. 创建、编辑和保存文件
- 3. 创建并运行Python程序
- 4. 使用树莓派的GPIO口
- 第三章 树莓派套件应用
- 树莓派3B+ IO扩展板介绍
- 家居系统
- 会呼吸的RGB灯
- 树莓派控制家电
- 制作一个环境检测仪
- 树莓派摄像头做远程监控
- 摄像头使用
- socket通信
- PiCamera + socket远程监控
- AI语音
- 配置snowboy
- 自定义响应
- 采集语音和语音播放
- 语音机器人
- 图灵机器人
- 俄罗斯方块小游戏
- pygame基本使用
- ADKeyboard使用
- 俄罗斯方块实现原理
- 俄罗斯方块代码讲解
- 手势控制的树莓派相册
- 模块介绍
- 爬取图片
- 电子相册
- 附录
- 网址