国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

畢業(yè)設(shè)計 基于樹莓派的AI視覺機械臂小車

這篇具有很好參考價值的文章主要介紹了畢業(yè)設(shè)計 基于樹莓派的AI視覺機械臂小車。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。


0 前言

?? 這兩年開始畢業(yè)設(shè)計和畢業(yè)答辯的要求和難度不斷提升,傳統(tǒng)的畢設(shè)題目缺少創(chuàng)新和亮點,往往達(dá)不到畢業(yè)答辯的要求,這兩年不斷有學(xué)弟學(xué)妹告訴學(xué)長自己做的項目系統(tǒng)達(dá)不到老師的要求。

為了大家能夠順利以及最少的精力通過畢設(shè),學(xué)長分享優(yōu)質(zhì)畢業(yè)設(shè)計項目,今天要分享的是

?? 畢業(yè)設(shè)計 基于樹莓派的AI視覺機械臂小車

??學(xué)長這里給一個題目綜合評分(每項滿分5分)

  • 難度系數(shù):3分
  • 工作量:3分
  • 創(chuàng)新點:5分

?? 選題指導(dǎo), 項目分享:

https://gitee.com/dancheng-senior/project-sharing-1/blob/master/%E6%AF%95%E8%AE%BE%E6%8C%87%E5%AF%BC/README.md

1 簡介

基于樹莓派的AI視覺和機械臂。視覺識別是一個主要內(nèi)容,是信息輸入的重要方式,而機械臂是機器人輸出、工作的重要方式,比如農(nóng)業(yè)采摘機器人。因此,AI視覺和機器的互相配合加持對實際生產(chǎn)生活具有很大的意義。

2 主要機器

  • 機器人套件
  • 蜂鳴器
  • 輕觸按鍵
  • 漫反射紅外光電避障傳感模塊

3 樹莓派簡介

智能小車的大腦是一塊信用卡大小的樹莓派板子,所以DIY沖動的朋友可以到各大商城購買一塊最新版的樹莓派,:

樹莓派第三代張這個樣子——正面照
畢業(yè)設(shè)計 基于樹莓派的AI視覺機械臂小車

簡單介紹:

  • Micro-USB Power–電源插槽
  • CPU
  • 四個USB接口
  • 一個HDMI接口
  • 一個耳機插孔,也可以輸出視頻
  • 40個GPIO引腳
  • 一個SD卡插槽,沒有硬盤
  • 一個網(wǎng)線插口,自帶無線網(wǎng)卡
  • 樹莓派相機插槽
  • Micro-USB Power,樹莓派供電接口

所有具體接口如何使用,詳細(xì)講解的話會使該篇文章顯得拖沓,放在其它篇幅講解,目前不懂沒關(guān)系,不影響到我們制作智能小車。

1.電源適配器 5V 2A
畢業(yè)設(shè)計 基于樹莓派的AI視覺機械臂小車

2.移動電源 輸出5V 2.1A

注意:Pi沒有板載穩(wěn)壓芯片,只能且必須用5V的電源給Pi供電。如果電壓過大,Pi會永久“變磚”,等著流淚吧!

4 基本運動-TB6612FNG驅(qū)動芯片

畢業(yè)設(shè)計 基于樹莓派的AI視覺機械臂小車

采用了TB6612FNG驅(qū)動芯片,電機電源接口帶有反接保護電路,相對于傳統(tǒng)的L298N在效率上提高很多,體積上也大幅減小,使用方法和L298N類似。
同時除了使用RPi.GPIO庫編程以外,再使用gpiozero庫的Motor類來實現(xiàn)電機控制。
畢業(yè)設(shè)計 基于樹莓派的AI視覺機械臂小車

實驗原理

畢業(yè)設(shè)計 基于樹莓派的AI視覺機械臂小車
畢業(yè)設(shè)計 基于樹莓派的AI視覺機械臂小車
TB6612FNG是東芝半導(dǎo)體公司生產(chǎn)的一款直流電機驅(qū)動器件,具有大電流MOSFET-H橋結(jié)構(gòu),雙通道電路輸出,也就是可以驅(qū)動兩個電機。

畢業(yè)設(shè)計 基于樹莓派的AI視覺機械臂小車

畢業(yè)設(shè)計 基于樹莓派的AI視覺機械臂小車

擴展板上使用了兩塊TB6612FNG芯片,但是并聯(lián)的,只有兩路輸出,可以用作備份,也可以用作2路4驅(qū)。

下面分別是控制兩個電機的IO口:
STBY口接單片機的IO口清零電機全部停止,置1通過AIN1 AIN2,BIN1,BIN2 來控制正反轉(zhuǎn)
VM 接15V以內(nèi)電源
VCC 接2.7v – 5V電源
GND 接地

驅(qū)動1路:

PWMA 接單片機的PWM口

畢業(yè)設(shè)計 基于樹莓派的AI視覺機械臂小車
A01、AO2 接電機1的兩個腳

驅(qū)動2路:

PWMB 接單片機的PWM口

畢業(yè)設(shè)計 基于樹莓派的AI視覺機械臂小車

B01、BO2 接電機2的兩個腳

注意: 若是pwm控制,則需要pwm頻率100khz ,親測80khz也好用,同時STBY引腳需要接高電平。

程序編寫

#!/usr/bin/env python2
# -*- coding: utf-8 -*-

import  RPi.GPIO as GPIO
import time

PWMA = 18
AIN1   =  22
AIN2   =  27

PWMB = 23
BIN1   = 25
BIN2  =  24

GPIO.setwarnings(False) 
GPIO.setmode(GPIO.BCM)
GPIO.setup(AIN2,GPIO.OUT)
GPIO.setup(AIN1,GPIO.OUT)
GPIO.setup(PWMA,GPIO.OUT)
GPIO.setup(BIN1,GPIO.OUT)
GPIO.setup(BIN2,GPIO.OUT)
GPIO.setup(PWMB,GPIO.OUT)

L_Motor= GPIO.PWM(PWMA,80000)
L_Motor.start(0)

R_Motor = GPIO.PWM(PWMB,80000)
R_Motor.start(0)

def t_up(speed,t_time):
        L_Motor.ChangeDutyCycle(speed)
        GPIO.output(AIN2,False)
        GPIO.output(AIN1,True) # AIN1高電平為前進(jìn)

        R_Motor.ChangeDutyCycle(speed)
        GPIO.output(BIN2,False)
        GPIO.output(BIN1,True) # BIN1高電平為前進(jìn)
        time.sleep(t_time)

def t_stop(t_time):
        L_Motor.ChangeDutyCycle(0)
        GPIO.output(AIN2,False)#AIN2
        GPIO.output(AIN1,False) #AIN1

        R_Motor.ChangeDutyCycle(0)
        GPIO.output(BIN2,False)#BIN2
        GPIO.output(BIN1,False) #BIN1
        time.sleep(t_time)

def t_down(speed,t_time):
        L_Motor.ChangeDutyCycle(speed)
        GPIO.output(AIN2,True) # AIN2高電平為后退
        GPIO.output(AIN1,False) 

        R_Motor.ChangeDutyCycle(speed)
        GPIO.output(BIN2,True) # BIN2高電平為后退
        GPIO.output(BIN1,False) 
        time.sleep(t_time)

def t_left(speed,t_time):
        L_Motor.ChangeDutyCycle(speed)
        GPIO.output(AIN2,True)  # 左輪后退
        GPIO.output(AIN1,False) 

        R_Motor.ChangeDutyCycle(speed)
        GPIO.output(BIN2,False)
        GPIO.output(BIN1,True) # 右輪前進(jìn)
        time.sleep(t_time)

def t_right(speed,t_time):
        L_Motor.ChangeDutyCycle(speed)
        GPIO.output(AIN2,False)
        GPIO.output(AIN1,True) # 左輪前進(jìn)

        R_Motor.ChangeDutyCycle(speed)
        GPIO.output(BIN2,True) # 右輪后退
        GPIO.output(BIN1,False) 
        time.sleep(t_time)    

try:
    while True:
        t_up(50,3)
        t_down(50,3)
        t_left(50,3)
        t_right(50,3)
        t_stop(3)
except KeyboardInterrupt:
    GPIO.cleanup()

5 紅外避障功能

畢業(yè)設(shè)計 基于樹莓派的AI視覺機械臂小車
采用了E18-D80NK漫反射式紅外光電開關(guān)避障傳感器模塊。同時除了使用RPi.GPIO庫編程以外,再使用gpiozero庫來實現(xiàn)。
畢業(yè)設(shè)計 基于樹莓派的AI視覺機械臂小車
實驗原理
畢業(yè)設(shè)計 基于樹莓派的AI視覺機械臂小車
E18-D80NK是一種及發(fā)射與接收于一體的光電傳感器,發(fā)射光經(jīng)過調(diào)制后發(fā)出,接收頭對反射光進(jìn)行解調(diào)輸出,有效的避免了可見光的干擾。透鏡的使用,也使得這款傳感器最遠(yuǎn)可以檢測80厘米距離的物體(由于紅外光的特性,不同顏色的物體,能探測到的最大距離也不同,白色物體最遠(yuǎn),黑色物體最近)。

檢測障礙物的距離可以根據(jù)要求,通過尾部的電位器旋鈕進(jìn)行調(diào)節(jié)。

傳感器相關(guān)參數(shù)
畢業(yè)設(shè)計 基于樹莓派的AI視覺機械臂小車

這個NPN型光電開關(guān)的輸出組是0或1,即數(shù)字電路中的高電平與低電平。檢測到目標(biāo)是低電平輸出,正常狀態(tài)是高電平輸出。光電開關(guān)就三條線:電源、地、輸出,輸出不需要進(jìn)行AD轉(zhuǎn)換。

在上面的擴展板TB6612FNG芯片電路圖上可以知道連接GPIO的接線情況,A通道為左輪控制,B通道為右輪控制:
畢業(yè)設(shè)計 基于樹莓派的AI視覺機械臂小車
程序編寫

這里先使用RPi.GPIO庫來編寫程序,當(dāng)按下按鍵后車輛開始行進(jìn),左右都沒探測到障礙物時直行,左側(cè)探測到障礙物時右轉(zhuǎn),右側(cè)探測到障礙物時左轉(zhuǎn),否則就是左右都探測到障礙物停止0.3秒,再后退0.4秒,再左轉(zhuǎn)0.5秒。文章來源地址http://www.zghlxwxcb.cn/news/detail-416512.html

#!/usr/bin/python  
# coding=utf-8  
#本段代碼實現(xiàn)樹莓派智能小車的紅外避障效果
#代碼使用的樹莓派GPIO是用的BCM編碼方式。

import RPi.GPIO as GPIO  
import time  
import sys 
 
SensorRight = 16
SensorLeft  = 12

PWMA   = 18
AIN1   = 22
AIN2   = 27

PWMB   = 23
BIN1   = 25
BIN2   = 24

BtnPin  = 19
Gpin    = 6
Rpin    = 5

#智能小車運動函數(shù) 
def t_up(speed,t_time):
        L_Motor.ChangeDutyCycle(speed)
        GPIO.output(AIN2,False)#AIN2
        GPIO.output(AIN1,True) #AIN1

        R_Motor.ChangeDutyCycle(speed)
        GPIO.output(BIN2,False)#BIN2
        GPIO.output(BIN1,True) #BIN1
        time.sleep(t_time)
        
def t_stop(t_time):
        L_Motor.ChangeDutyCycle(0)
        GPIO.output(AIN2,False)#AIN2
        GPIO.output(AIN1,False) #AIN1

        R_Motor.ChangeDutyCycle(0)
        GPIO.output(BIN2,False)#BIN2
        GPIO.output(BIN1,False) #BIN1
        time.sleep(t_time)
        
def t_down(speed,t_time):
        L_Motor.ChangeDutyCycle(speed)
        GPIO.output(AIN2,True)#AIN2
        GPIO.output(AIN1,False) #AIN1

        R_Motor.ChangeDutyCycle(speed)
        GPIO.output(BIN2,True)#BIN2
        GPIO.output(BIN1,False) #BIN1
        time.sleep(t_time)

def t_left(speed,t_time):
        L_Motor.ChangeDutyCycle(speed)
        GPIO.output(AIN2,True)#AIN2
        GPIO.output(AIN1,False) #AIN1

        R_Motor.ChangeDutyCycle(speed)
        GPIO.output(BIN2,False)#BIN2
        GPIO.output(BIN1,True) #BIN1
        time.sleep(t_time)

def t_right(speed,t_time):
        L_Motor.ChangeDutyCycle(speed)
        GPIO.output(AIN2,False)#AIN2
        GPIO.output(AIN1,True) #AIN1

        R_Motor.ChangeDutyCycle(speed)
        GPIO.output(BIN2,True)#BIN2
        GPIO.output(BIN1,False) #BIN1
        time.sleep(t_time)
        
def keysacn():
    # 按下按鍵后,車輛才行進(jìn)
    val = GPIO.input(BtnPin)
    while GPIO.input(BtnPin) == False:
        val = GPIO.input(BtnPin)
    while GPIO.input(BtnPin) == True:
        time.sleep(0.01)
        val = GPIO.input(BtnPin)
        if val == True:
            GPIO.output(Rpin,1)
            while GPIO.input(BtnPin) == False:
                GPIO.output(Rpin,0)
        else:
            GPIO.output(Rpin,0)
            
def setup():
    GPIO.setwarnings(False)
    GPIO.setmode(GPIO.BCM)       # 按物理位置給GPIOs編號
    GPIO.setup(Gpin, GPIO.OUT)     # 設(shè)置綠色Led引腳模式輸出
    GPIO.setup(Rpin, GPIO.OUT)     # 設(shè)置紅色Led引腳模式輸出
    GPIO.setup(BtnPin, GPIO.IN, pull_up_down=GPIO.PUD_UP)    # 設(shè)置輸入BtnPin模式,拉高至高電平(3.3V) 
    GPIO.setup(SensorRight,GPIO.IN)
    GPIO.setup(SensorLeft,GPIO.IN)
    
    GPIO.setup(AIN2,GPIO.OUT)
    GPIO.setup(AIN1,GPIO.OUT)
    GPIO.setup(PWMA,GPIO.OUT)

    GPIO.setup(BIN1,GPIO.OUT)
    GPIO.setup(BIN2,GPIO.OUT)
    GPIO.setup(PWMB,GPIO.OUT)
    
if __name__ == '__main__':
    setup()
    keysacn()
    L_Motor= GPIO.PWM(PWMA,100)
    L_Motor.start(0)
    R_Motor = GPIO.PWM(PWMB,100)
    R_Motor.start(0)
    try:
        while True:
            SR_2 = GPIO.input(SensorRight)
            SL_2 = GPIO.input(SensorLeft)
            if SL_2 == True and SR_2 == True: # 高電平表示無障礙
                print("t_up")
                t_up(50,0)
            elif SL_2 == True and SR_2 ==False:
                print("Left")
                t_left(50,0)
            elif SL_2==False and SR_2 ==True:
                print("Right")
                t_right(50,0)
            else:
                t_stop(0.3)
                t_down(50,0.4)
                t_left(50,0.5)
    except KeyboardInterrupt:  # 當(dāng)按下Ctrl+C時,將執(zhí)行子程序destroy()。
        GPIO.cleanup()

6 最后

到了這里,關(guān)于畢業(yè)設(shè)計 基于樹莓派的AI視覺機械臂小車的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包