## 舵機
舵機主要用于角度控制,通常使用于航模、智能小車機器人等,在工業控制上也有作用。
套件中配備了一個<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使用
- 俄羅斯方塊實現原理
- 俄羅斯方塊代碼講解
- 手勢控制的樹莓派相冊
- 模塊介紹
- 爬取圖片
- 電子相冊
- 附錄
- 網址