1. 程式人生 > >【raspberry pi】樹莓派小車

【raspberry pi】樹莓派小車

一、元件介紹 大家好,我是Sunny。今天將給大家帶來系列教程《樹莓派小車系列》,先給大家介紹介紹我這次使用到的一些元件。 1、樹莓派

2、小車底盤

3、小車車輪(馬達)

4、L298N電機驅動模組

5、超聲波測距模組、杜邦線

6、電池盒

7、無線網絡卡
二、模組接線 首先樹莓派要安裝好系統和python的一些模組。這個小車最主要部分就是L298N模組的控制,控制住了L298N這個模組就控制住了我們整個小車,這裡我弄一張圖片,大家可以看到每一個地方是幹嘛的。然後就是跟樹莓派的對接。 L298N的每個介面負責的功能如下圖
下面是樹莓派和l298n接線圖
把馬達接到L298N上面,然後把電池盒的正極接到12v介面,負極接到接地介面(中間那個),然後第三個介面需要一個5v的輸入,我就從樹莓派的GPIO2取。
in1、in2、in3、in4分別接樹莓派GPIO的11、12、13、15這幾個口。這張圖大家應該能理解到上面in1到in4的接法了,還有電源的接法。 三、馬達轉動 上面講了我們如何把樹莓派和l298n和馬達接線連線起來。既然連起來了,我們就應該來試試如何用樹莓派通過python來控制這個馬達的轉動。 首先我們需要安裝python的gpio模組,可以通過pip安裝也可以通過下載原始碼安裝。 [backcolor=white !important][size=1em]
1
sudo vim xiaoche.py



[backcolor=white !important][size=1em]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#匯入gpio的模組
import RPi.GPIO as GPIO
import time

#設定gpio口的模式
GPIO.setmode(GPIO.BOARD)

#定義訊號介面gpio口
INT1 = 11
INT2 = 12
INT3 = 13
INT4 = 15

#設定gpio口為輸出
GPIO.setup(INT1,GPIO.OUT)
GPIO.setup(INT2,GPIO.OUT)
GPIO.setup(INT3,GPIO.OUT)

GPIO.setup(INT4,GPIO.OUT)

#這裡參考上一節模組接線的L298N模組的控制圖
GPIO.output(INT1,GPIO.HIGH)
GPIO.output(INT2,GPIO.LOW)
GPIO.output(INT3,False)
GPIO.output(INT4,False)

#延時2秒之後執行cleanup釋放GPIO介面
time.sleep(2)
GPIO.cleanup()



程式碼寫到之後我們儲存退出,接著執行一下觀看馬達有沒有轉動。 [backcolor=white !important][size=1em]
1
sudo python xiaoche.py



四、底盤安裝 五、小車跑起來 下面是 xiaoche.py 完整的程式碼。 [backcolor=white !important][size=1em]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BOARD)

IN1 = 11
IN2 = 12
IN3 = 13
IN4 = 15

def init():
    GPIO.setup(IN1,GPIO.OUT)
    GPIO.setup(IN2,GPIO.OUT)
    GPIO.setup(IN3,GPIO.OUT)
    GPIO.setup(IN4,GPIO.OUT)

def qianjin(sleep_time):
        GPIO.output(IN1,GPIO.HIGH)
        GPIO.output(IN2,GPIO.LOW)
        GPIO.output(IN3,GPIO.HIGH)
        GPIO.output(IN4,GPIO.LOW)
        time.sleep(sleep_time)
        GPIO.cleanup()

def cabk(sleep_time):
        GPIO.output(IN1,GPIO.LOW)
        GPIO.output(IN2,GPIO.HIGH)
        GPIO.output(IN3,GPIO.LOW)
        GPIO.output(IN4,GPIO.HIGH)
        time.sleep(sleep_time)
        GPIO.cleanup()

def left(sleep_time):
        GPIO.output(IN1,False)
        GPIO.output(IN2,False)
        GPIO.output(IN3,GPIO.HIGH)
        GPIO.output(IN4,GPIO.LOW)
        time.sleep(sleep_time)
        GPIO.cleanup()

def right(sleep_time):
    GPIO.output(IN1,GPIO.HIGH)
    GPIO.output(IN2,GPIO.LOW)
    GPIO.output(IN3,False)
    GPIO.output(IN4,False)
    time.sleep(sleep_time)
    GPIO.cleanup()
init()
cabk(10)