吴忠躺衫网络科技有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何使用樹莓派制作一個巡線機器人

科技觀察員 ? 來源:八色木 ? 作者:八色木 ? 2022-04-08 16:38 ? 次閱讀

眾所周知,樹莓派是一個基于ARM微處理器的開發平臺。憑借其強大的計算能力,它在廣大電子愛好者中經常會創造出奇跡。為了更好地了解樹莓派及其工作原理,讓我們嘗試使用樹莓派制作一個巡線機器人。

pYYBAGJP9IqAMIPBAAZE3Zjaj5c762.png

如果你對機器人感興趣,那么你應該非常熟悉“巡線機器人”這個名稱。這種機器人只需使用一對傳感器和馬達就能沿著線行走。使用樹莓派制造這樣一個機器人,會讓我們打開更大的想象空間。

尋線機器人的原理

pYYBAGJP9IaAblWtAAHb6uCYPxQ842.png

尋線機器人能夠在紅外傳感器的幫助下跟蹤線條。紅外線傳感器具有紅外線發射器和紅外線接收器,其中,紅外線發射器(紅外LED)主要發射光,它發射出的紅外線只有在被反射時才會返回。接收器(光電二極管)則等待接收返回后的紅外光。然而,不是所有的表面都能反射紅外線,只有白色的表面才能完全反射紅外線,而黑色的表面會吸收紅外光。

poYBAGJP9ICAJT1MAABmT3tBP_Q848.png

使用這樣的兩個紅外傳感器來隨時檢查機器人是否處于軌道上,如果機器人偏離軌道,我們就通過兩個電機來校正它。電機應該是雙向旋轉的,而且需要的工作電流較大,因此,我們需要額外使用電機驅動模塊,如L293D。機器人還需要一個像樹莓派(Raspberry Pi)這樣的主控大腦,它會根據紅外傳線傳感器模塊的數值來指示電機工作。下面是一個簡化的控制原理圖。

poYBAGJP9HqALLxlAABVA0zDZKA781.png

兩個紅外傳感器被放置在軌道線的兩側。如果沒有傳感器檢測到黑線,樹莓派將命令電機向前移動,如下所示:

poYBAGJP9HeAMxZuAABrRKuB5KY622.png

如果左邊的傳感器檢測到黑線,那么樹莓派就會命令機器人,通過單獨旋轉右邊的輪子,使機器人向左轉。

poYBAGJP9HOAKPfJAACTT0bXj1c975.png

如果右邊的傳感器檢測到黑線,那么樹莓派就會命令機器人,通過單獨旋轉左邊的輪子,使機器人向右轉。

pYYBAGJP9G-Aegs6AACbgBqVebo814.png

如果兩個傳感器都檢測到黑線,機器人就會停止。

pYYBAGJP9GuAdZSrAAAt05dhwkI794.png

這樣,機器人就能夠在不脫離軌道的情況下沿著軌道線一直前進。下面讓我們看看電路和代碼。

樹莓派尋線機器人電路圖

poYBAGJP9GeAZsaTAAFz3C4rtc8222.png

在這個電路中,包含了兩個紅外線傳感器模塊和一對連接到樹莓派的直流電機。整個電路由一個移動電源供電(在電路中用電池來表示)。同時,由于樹莓派電路板上并沒有提供針腳的描述,我們需要用下面的圖片來驗證每一個引腳的接口定義。圖片是基于樹莓派2B的,如果你采用樹莓派3B,也可以查閱: 樹莓派3的外圍I/O數據接口

poYBAGJP9GKAIA8bAAHaeu47Zm8643.png

如上圖所示,左上角的引腳是+5V引腳,我們使用這個+5V引腳給紅外傳感器供電,如圖所示(紅色線)。然后,我們用黑色線將GND引腳連接到紅外線傳感器和電機驅動模塊的GND。黃線分別將傳感器1和2的輸出引腳與GPIO引腳2和3連接起來。同時,要驅動電機,我們需要連接L293D電機驅動板的四個引腳(A,B,A,B)。這四個引腳分別與樹莓派的GPIO14,4,17和18連接。電機與L293D電機驅動模塊連接,驅動模塊使用電池供電。一定要將電池的負極與樹莓派的接地連接起來,這樣才能保證電路的正常工作。

樹莓派編程

首先需要導入GPIO,下面的函數是對樹莓派的GPIO引腳進行編程。我們還將“GPIO”重命名為“IO”,所以在程序中,每當我們想要引用GPIO引腳時,我們都會使用“IO”這個詞。

import RPi.GPIO as IO

有時,當我們試圖使用某個GPIO引腳時,可能它正在執行一些其他功能。在這種情況下,當我們執行程序時會收到警告。下面的命令是告訴樹莓派忽略警告繼續執行程序。

IO.setwarnings(False)

我們可以參考樹莓派的GPIO引腳定義,無論是采用電路板上的引腳號碼或采用引腳的功能號碼,比如,電路板上的“PIN 29”是“GPIO5”。所以在這里,我們要用下面的代碼告訴樹莓派具體用的是“29”還是“5”來表示引腳號。

IO.setmode (IO.BCM)

我們前面說到,電路中將設置6個引腳作為輸入/輸出引腳。前兩個引腳是讀取紅外線傳感器數據的輸入引腳。后四個是輸出引腳,前兩個用于控制右電機,后兩個用于控制左電機。

IO.setup(2,IO.IN) #GPIO 2 -> Left IR out

IO.setup(3,IO.IN) #GPIO 3 -> Right IR out

IO.setup(4,IO.OUT) #GPIO 4 -> Motor 1 terminal A

IO.setup(14,IO.OUT) #GPIO 14 -> Motor 1 terminal B

IO.setup(17,IO.OUT) #GPIO 17 -> Motor Left terminal A

IO.setup(18,IO.OUT) #GPIO 18 -> Motor Left terminal B

紅外傳感器如果檢測到白色的面,將輸出“True”,所以只要兩個傳感器的狀態都是“True”,機器人就可以繼續前進。

if(IO.input(2)==True and IO.input(3)==True): #both white move forward

IO.output(4,True) #1A+

IO.output(14,False) #1B-

IO.output(17,True) #2A+

IO.output(18,False) #2B-

如果右邊的紅外傳感器檢測到黑線,機器人將執行右轉動作。當條件滿足時,停止右電機,單獨旋轉左電機,如下面的代碼所示:

elif(IO.input(2)==False and IO.input(3)==True): #turn right

IO.output(4,True) #1A+

IO.output(14,True) #1B-

IO.output(17,True) #2A+

IO.output(18,False) #2B-

如果左紅外傳感器檢測到黑線,機器人將執行左轉動作。當條件滿足時,停止左電機,單獨旋轉右電機,如下面的代碼所示:

elif(IO.input(2)==True and IO.input(3)==False): #turn left

IO.output(4,True) #1A+

IO.output(14,False) #1B-

IO.output(17,True) #2A+

IO.output(18,True) #2B-

如果兩個傳感器都檢測到黑線,這意味著機器人執行停止動作。這可以通過設置電機的兩個端子都為“True”來實現,如下面的代碼所示:

else: #stay still

IO.output(4,True) #1A+

IO.output(14,True) #1B-

IO.output(17,True) #2A+

IO.output(18,True) #2B-

完成變成后,我們可以在白色的瓷磚地面,用黑色膠帶粘貼出我們想要的軌道線形狀,這樣就可以開始享受機器人巡線的樂趣了。下面是完整的Python代碼,將其保存到樹莓派上,在樹莓派命令窗口中執行代碼即可。

import RPi.GPIO as IO

import time

IO.setwarnings(False)

IO.setmode(IO.BCM)

IO.setup(2,IO.IN) #GPIO 2 -> Left IR out

IO.setup(3,IO.IN) #GPIO 3 -> Right IR out

IO.setup(4,IO.OUT) #GPIO 4 -> Motor 1 terminal A

IO.setup(14,IO.OUT) #GPIO 14 -> Motor 1 terminal B

IO.setup(17,IO.OUT) #GPIO 17 -> Motor Left terminal A

IO.setup(18,IO.OUT) #GPIO 18 -> Motor Left terminal B

while 1:

if(IO.input(2)==True and IO.input(3)==True): #both while move forward

IO.output(4,True) #1A+

IO.output(14,False) #1B-

IO.output(17,True) #2A+

IO.output(18,False) #2B-

elif(IO.input(2)==False and IO.input(3)==True): #turn right

IO.output(4,True) #1A+

IO.output(14,True) #1B-

IO.output(17,True) #2A+

IO.output(18,False) #2B-

elif(IO.input(2)==True and IO.input(3)==False): #turn left

IO.output(4,True) #1A+

IO.output(14,False) #1B-

IO.output(17,True) #2A+

IO.output(18,True) #2B-

else: #stay still

IO.output(4,True) #1A+

IO.output(14,True) #1B-

IO.output(17,True) #2A+

IO.output(18,True) #2B-

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • ARM
    ARM
    +關注

    關注

    134

    文章

    9165

    瀏覽量

    369189
  • 巡線機器人
    +關注

    關注

    0

    文章

    14

    瀏覽量

    6451
  • 樹莓派
    +關注

    關注

    117

    文章

    1710

    瀏覽量

    105875
收藏 人收藏

    評論

    相關推薦

    如何利用樹莓構建跟隨機器人

    在這個項目中,讓我們利用樹莓的力量來構建機器人,它可以跟蹤球并跟隨它,就像踢足球的機器人
    發表于 11-24 17:12 ?2769次閱讀
    如何利用<b class='flag-5'>樹莓</b><b class='flag-5'>派</b>構建<b class='flag-5'>一</b><b class='flag-5'>個</b>跟隨<b class='flag-5'>機器人</b>

    變形樂高玩具變形和樹莓起玩出樂高機器人

    玩法。1.樂高做樹莓底盤嗯,基本沒啥技術含量,5歲小孩子所擁有的動手能力就夠了。2.樹莓做樂高核心這個就很可怕了!樂高加上樹莓
    發表于 09-02 14:26

    樹莓打造視頻監控機器人Verybot

    `在網上有看到基于樹莓 ( raspberry pi ) 的視頻監控機器人平臺 Verybot ,順帶把這個
    發表于 09-18 15:33

    有關樹莓制作機器人平臺的探索

    最近打算用樹莓機器人平臺,原因如下: 1.樹莓帶系統 帶個小顯示屏搞
    發表于 11-10 10:19

    請教利用樹莓制作六足機器人的問題

    本人新手,最近在準備制作六足機器人,如果利用舵機控制器+遙控手柄套件的話,可以很容易就實現簡單的功能。為了能讓六足機器人實現更加復雜的功
    發表于 11-10 15:33

    樹莓語音識別機器人(下)

    `樹莓語音識別機器人(上)第四步:聲卡盡管有音頻輸出口可以連接音箱或耳機,但為了獲得更好的音質,我們將外置聲卡材料:1. 樹莓2. US
    發表于 01-20 10:59

    10分鐘,DIY樹莓版TH Robot WiFi視頻小車機器人

    樹莓核心的TH Robot WiFi視頻小車機器人!首先是器件說明,由于樹莓已經集成了WiFi功能,所以無需外接WiFi模塊,所有的部
    發表于 04-08 22:11

    高速機器人 精選資料分享

    高速機器人卓大大!這個小車好厲害的,還能飛檐走壁,智能車啥時候也這樣?▲ 敏捷
    發表于 07-22 09:07

    請問下怎樣去設計種基于PID算法的機器人

    怎樣去設計種基于PID算法的機器人?基于PID算法的
    發表于 07-27 06:54

    如何使用樹莓開發智能機器人控制系統

    樹莓和其他機器人的控制器有何不同?如何使用樹莓開發智能機器人控制系統?
    發表于 12-23 06:55

    如何利用樹莓搭建完整的機器人系統?

    如何利用樹莓搭建完整的機器人系統?
    發表于 01-18 06:37

    用Arduino和L298制作帶有避障機器人

    電子發燒友網站提供《用Arduino和L298制作帶有避障機器人器.zip》資料免費下載
    發表于 01-31 09:31 ?1次下載
    用Arduino和L298<b class='flag-5'>制作</b>帶有避障<b class='flag-5'>機器人</b>的<b class='flag-5'>巡</b><b class='flag-5'>線</b>器

    Arduino機器人

    電子發燒友網站提供《Arduino機器人.zip》資料免費下載
    發表于 02-09 09:46 ?0次下載
    Arduino<b class='flag-5'>巡</b><b class='flag-5'>線</b><b class='flag-5'>機器人</b>

    樹莓機器人船構建

    電子發燒友網站提供《樹莓機器人船構建.zip》資料免費下載
    發表于 07-10 11:33 ?0次下載
    <b class='flag-5'>樹莓</b><b class='flag-5'>派</b><b class='flag-5'>機器人</b>船構建

    機器人電路圖 機器人的工作原理和應用領域

    分析。本文將詳細闡述機器人的定義、工作原理及其在多個領域的應用,以及還將分享
    的頭像 發表于 07-04 17:02 ?2095次閱讀
    <b class='flag-5'>巡</b><b class='flag-5'>線</b><b class='flag-5'>機器人</b>電路圖 <b class='flag-5'>巡</b><b class='flag-5'>線</b><b class='flag-5'>機器人</b>的工作原理和應用領域
    线上百家乐官网赢钱| 百家乐大赌场娱乐网规则| KK百家乐官网的玩法技巧和规则| 御金娱乐城| 大丰收娱乐城官网| 德州扑克qq| 威尼斯人娱乐城正规吗| A8百家乐的玩法技巧和规则| 金博士百家乐的玩法技巧和规则| 百家乐画面方法| 大发888下载不了| 大玩家百家乐的玩法技巧和规则 | 赌百家乐心里技巧| 百家乐包赢| 百家乐庄闲和游戏机| 德州百家乐官网21点桌| 澳门百家乐赌技术| 真人百家乐游戏软件| 威尼斯人娱乐网反| 大发888娱乐场下载zhidu| 广州百家乐娱乐场开户注册| 太阳城在线娱乐| 大发888 注册| 大发888娱乐城俄罗斯| 顶级赌场官网下载| 崇左市| 百家乐官网游戏规则介绍| 聚众玩百家乐官网的玩法技巧和规则 | 百家乐官网有方法赚反水| 百家乐官网赌博游戏平台| 百家乐官网代理荐| 百家乐怎么看门路| 百家乐长t恤| 大富翁娱乐城| 沭阳县| 娱乐百家乐官网的玩法技巧和规则| 尊龙百家乐官网娱乐| 澳门百家乐官网必赢看| 百家乐游戏客户端| 大发888怎么了| 百家乐官网视频双扣游戏|