加入星計(jì)劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長期合作伙伴
立即加入

全車自動(dòng)化控制系統(tǒng)-高精度倒車?yán)走_(dá),防結(jié)冰車窗,智能后視鏡

05/13 19:14
2812
服務(wù)支持:
技術(shù)交流群

完成交易后在“購買成功”頁面掃碼入群,即可與技術(shù)大咖們分享疑惑和經(jīng)驗(yàn)、收獲成長和認(rèn)同、領(lǐng)取優(yōu)惠和紅包等。

虛擬商品不可退

當(dāng)前內(nèi)容為數(shù)字版權(quán)作品,購買后不支持退換且無法轉(zhuǎn)移使用。

加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論
放大
電路板圖(3)
  • 方案介紹
  • 相關(guān)文件
  • 推薦器件
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請入駐 產(chǎn)業(yè)圖譜

一、作品簡介

感謝Digikey提供的這次汽車應(yīng)用創(chuàng)意大賽的平臺,本項(xiàng)目基于樹莓派,從功能模塊上劃分一共以下四個(gè)部分:

1、倒車雷達(dá)方案對比:倒車?yán)走_(dá)的核心原理是距離檢測,因此我計(jì)劃對比超聲波測距方案和激光測距方案的優(yōu)劣,并根據(jù)他們自身的特長將兩者結(jié)合起來完成一個(gè)間距視野角度與精度的倒車?yán)走_(dá)。

2、車窗智能防結(jié)冰:冬天北方車輛車窗會(huì)在夜晚結(jié)冰,導(dǎo)致第二天早上需要相當(dāng)長的時(shí)間化冰,否則將嚴(yán)重影響視線無法駕駛。車窗起霧的原因主要是車內(nèi)外溫差較大,導(dǎo)致車內(nèi)濕氣在車窗上凝結(jié),隨后被車外的低溫凍住結(jié)冰。我計(jì)劃的解決方案是,當(dāng)熄火并鎖車后,檢測車內(nèi)外溫度差,若溫度差大于設(shè)定值,則開啟通風(fēng)功能快速平衡車內(nèi)外溫度;當(dāng)溫差小于閾值后關(guān)閉通風(fēng)節(jié)省電量。

3、可視無線倒車?yán)走_(dá):給貨車或一些其他大型車輛添加倒車?yán)走_(dá),走線會(huì)比較麻煩,長期還容易出現(xiàn)老化問題,因此我計(jì)劃將倒車攝像頭改為無線wifi攝像頭,將畫面通過無線傳輸實(shí)時(shí)顯示在LCD屏幕上。這樣可以大大簡化安裝難度,只需要從尾燈取電即可。

4、后視鏡智能調(diào)整:這個(gè)功能目前僅在一些頂配車型中有,我打算把這個(gè)功能也一并實(shí)現(xiàn),方便對現(xiàn)有中低配車輛進(jìn)行升級。后視鏡的角度控制本質(zhì)上是一個(gè)二軸舵機(jī)云臺的控制。我計(jì)劃預(yù)設(shè)三個(gè)角度,一是行車時(shí)后視鏡角度;二是倒車時(shí)后視鏡角度;三是停車時(shí)后視鏡角度。三種狀態(tài)通過檢測汽車檔位進(jìn)行切換。

二、項(xiàng)目實(shí)物圖

三、各部分功能說明

1、倒車?yán)走_(dá)方案對比:

倒車?yán)走_(dá)的核心原理是距離檢測,距離檢測目前常用的有兩種方案,一種是通過激光進(jìn)行檢測,原理上可分為TOF,也就是記錄發(fā)射激光和收到激光之間的時(shí)間間隔;第二是三角測距法,利用固定的激光發(fā)射角度,看反射回來激光的落點(diǎn)落在CCD傳感器的位置來進(jìn)行測距。無論基于哪種原理,激光測距技術(shù)共同的優(yōu)點(diǎn)都是精度比較高,對被測物體尺寸,形狀要求小。但缺點(diǎn)也很明顯,激光測距視場非常窄,只能測一條線上的障礙物,如果障礙物并不在激光頭的正前方,則無法測量。

另一種方案是超聲波測距方案,也就是我們熟知的聲納。原理上和上面提到的TOF一致,都是測量發(fā)射信號和接收到反射信號之間的時(shí)間,以此來計(jì)算速度。但超聲波由于頻率較低,速度較慢,在不同介質(zhì)中傳播速度不一致,同時(shí)衍射現(xiàn)象較為明顯。這些特性導(dǎo)致超聲波測距的精度并不高,但優(yōu)勢是視場較寬,可以檢測更大的范圍。

從上面的介紹可以看出,兩種方案的優(yōu)缺點(diǎn)正好可以相互互補(bǔ),因此我會(huì)結(jié)合兩種方案,在實(shí)際中驗(yàn)證上述差異,并結(jié)合他們的優(yōu)點(diǎn),制作一個(gè)高精度雷達(dá)。

首先先說說激光雷達(dá)的使用方法。項(xiàng)目中我使用的激光雷達(dá)是VL53L0X。

我們先要在python中安裝必要的驅(qū)動(dòng)庫:

pip3 install adafruit-circuitpython-vl53l0x

安裝完成后,將VL53L0X連接到樹莓派的I2C接口上,接線方式如下:

SCL: BCM3

SDA: BCM2

VCC: 3.3V

GND: GND

完成連線后,新建一個(gè)python文件,寫入以下代碼:

import board
import time
import busio
import adafruit_vl53l0x
i2c = busio.I2C(board.SCL,board.SDA)
sensor = adafruit_vl53l0x.VL53L0X(i2c)

lazer_val = sensor.range
print("Lazer:{0} mm".format(lazer_val))

然后使用python來運(yùn)行它,如果一切順利,應(yīng)該就可以看到一下輸出

下面我們再試一下超聲波傳感器。市面上常見的超聲波傳感器有SR-04和US-100兩種。其中US-100支持串口輸出,溫度測量,精度范圍也更好,但實(shí)際體驗(yàn)下來差別不大。因此這里我們使用最經(jīng)典的TRIG-ECHO觸發(fā)方式來進(jìn)行通訊。

首先安裝庫文件:

pip3 install adafruit-circuitpython-hcsr04 adafruit-circuitpython-us100

接下來是接線:

TRIG: BCM22

ECHO: BCM27

VCC: 3.3V

GND: GND

接著在我們剛才創(chuàng)建的文件中加入以下內(nèi)容:

import adafruit_hcsr04
sonar = adafruit_hcsr04.HCSR04(trigger_pin=board.D22, echo_pin=board.D27)
sonar_val = int(sonar.distance*10)
print("Sonar:{0} mm".format(sonar_val))

用python來運(yùn)行它,如果一切順利,應(yīng)該就可以看到一下輸出:

這里多說一句,由于新的樹莓派5硬件變化,過去的pwmio,pulseio等庫均出現(xiàn)問題。雖然部分功能有時(shí)還可以運(yùn)行,但會(huì)有各種問題出現(xiàn),因此盡量避免使用。這里我們需要修改一下庫中adafruit_hcsr04.py的源碼,注釋以下代碼:

# try:
# frompulseio import PulseIn

# _USE_PULSEIO = True
# except (ImportError, NotImplementedError):
# pass # This is OK, we'll try tobitbang it!

接著我們測試一下雷達(dá)特性:

可以看到在距離較短時(shí),激光雷達(dá)所得測量值更精準(zhǔn),也更小。在此時(shí)參考激光雷達(dá)的讀數(shù)會(huì)更為保守。

而當(dāng)障礙物不在雷達(dá)正前方時(shí),我們可以看到聲納依舊可以檢測到物體,但激光雷達(dá)檢測不到,顯示的距離遠(yuǎn)大于聲納讀數(shù)。

因此我們可以結(jié)合上面兩個(gè)結(jié)果,只要其中任意讀數(shù)低于100,就響起警報(bào)。警報(bào)使用的是GPIO控制有源蜂鳴器實(shí)現(xiàn)。這里需要注意的是,蜂鳴器不可直接用GPIO驅(qū)動(dòng),如果直接驅(qū)動(dòng),不但功率低聲音小,還有一定損壞GPIO的風(fēng)險(xiǎn)。我們要使用三極管或mos管來驅(qū)動(dòng)蜂鳴器。

接線方式如下:

5V: 5V

signal: BCM17

GND: GND

完整代碼如下:

import board
import time
import busio
import adafruit_vl53l0x
i2c = busio.I2C(board.SCL,board.SDA)
print(i2c.scan())
sensor = adafruit_vl53l0x.VL53L0X(i2c)

import adafruit_hcsr04
sonar = adafruit_hcsr04.HCSR04(trigger_pin=board.D22, echo_pin=board.D27)

from digitalio import DigitalInOut, Direction, Pull
buz = DigitalInOut(board.D17)
buz.direction = Direction.OUTPUT

while True:
try:
time.sleep(0.5)
lazer_val = sensor.range
sonar_val =int(sonar.distance*10)
print("Lazer: {0} mm".format(lazer_val))
print("Sonar: {0} mm".format(sonar_val))
if lazer_val < 100 or sonar_val < 100:
buz.value = 1
else:
buz.value = 0
except:
print("Retrying!")
time.sleep(0.5)

2、車窗智能防結(jié)冰:

冬天北方車輛車窗會(huì)在夜晚結(jié)冰,導(dǎo)致第二天早上需要相當(dāng)長的時(shí)間化冰,否則將嚴(yán)重影響視線無法駕駛。車窗起霧的原因主要是車內(nèi)外溫差較大,導(dǎo)致車內(nèi)濕氣在車窗上凝結(jié),隨后被車外的低溫凍住結(jié)冰。我計(jì)劃的解

決方案是,當(dāng)熄火并鎖車后,檢測車內(nèi)外溫度差,若溫度差大于設(shè)定值,則開啟通風(fēng)功能快速平衡車內(nèi)外溫度;當(dāng)溫差小于閾值后關(guān)閉通風(fēng)節(jié)省電量。

這里面就涉及到了兩個(gè)溫度傳感器的數(shù)值讀取。為了盡可能體驗(yàn)開發(fā)板功能,在這里我選取了兩個(gè)不同的傳感器。我們分來講他們的驅(qū)動(dòng)方法。

首先是BMP280,這本是一顆氣壓傳感器,但是傳感器內(nèi)部有溫度傳感器,用來做補(bǔ)償計(jì)算使用。溫度傳感器的讀數(shù)可以直接讀取,因此可以用作我們當(dāng)前的應(yīng)用。

我們先要在python中安裝必要的驅(qū)動(dòng)庫:

pip3 install adafruit-circuitpython-bmp280

安裝完成后,將bmp280連接到樹莓派的I2C接口上,接線方式如下:

SCL: BCM3

SDA: BCM2

VCC: 3.3V

GND: GND

完成連線后,新建一個(gè)python文件,寫入以下代碼:

import boardimport busioimport adafruit_bmp280i2c = busio.I2C(board.SCL, board.SDA)bmp280 = adafruit_bmp280.Adafruit_BMP280_I2C(i2c, address = 0x76)bmp280.sea_level_pressure = 1018.25print("Temperature: %0.1f C" % bmp280.temperature)print("Pressure: %0.1f hPa" % bmp280.pressure)print("Altitude = %0.2f meters" % bmp280.altitude)

然后使用python來運(yùn)行它,如果一切順利,應(yīng)該就可以看到一下輸出:

接下來是另一個(gè)傳感器,我使用的是SHT48。這是一款溫濕度傳感器,體積非常小,同樣使用I2C進(jìn)行通訊。

首先安裝庫文件:

pip3 install adafruit-circuitpython-sht4x

接線和上面一樣:

SCL: BCM3

SDA: BCM2

VCC: 3.3V

GND: GND

接著在我們剛才創(chuàng)建的文件中加入以下內(nèi)容:

import adafruit_sht4xsht = adafruit_sht4x.SHT4x(i2c)print("") print("Found SHT4x with serial number", hex(sht.serial_number))sht.mode = adafruit_sht4x.Mode.NOHEAT_HIGHPRECISIONprint("Current mode is: ", adafruit_sht4x.Mode.string[sht.mode])temperature, relative_humidity = sht.measurementsprint("Temperature: %0.1f C" % temperature)print("Humidity: %0.1f %%" % relative_humidity)print("")

用python運(yùn)行一下,如果一切順利,應(yīng)該就可以看到一下輸出:

我們可以看到兩個(gè)傳感器讀數(shù)相差無幾。

我們用手指貼在SHT40傳感器背面的PCB上,10秒后,我們就可以看到出現(xiàn)了明顯的溫度差異:

因此,假設(shè)我們把SHT40放置于車內(nèi),BMP280放置于車外,當(dāng)車內(nèi)溫度高與車外一定溫度時(shí)(正常這個(gè)溫度應(yīng)大于10度,且同時(shí)室外溫度低于0度。但為了方便演示,這里設(shè)置為2.5度),開啟換氣風(fēng)扇(風(fēng)扇使用蜂鳴器進(jìn)行指示),平衡車內(nèi)外溫度,就可以避免車窗上出現(xiàn)冷凝水再結(jié)冰的問題。

蜂鳴器接線:

5V: 5V

signal: BCM17

GND: GND

完整代碼如下:

import timeimport boardimport busioimport adafruit_bmp280i2c = busio.I2C(board.SCL, board.SDA)print(i2c.scan())bmp280 = adafruit_bmp280.Adafruit_BMP280_I2C(i2c, address = 0x76)bmp280.sea_level_pressure = 1013.25 import adafruit_sht4xsht = adafruit_sht4x.SHT4x(i2c)print("Found SHT4x with serial number", hex(sht.serial_number))sht.mode = adafruit_sht4x.Mode.NOHEAT_HIGHPRECISION# Can also set the mode to enable heater# sht.mode = adafruit_sht4x.Mode.LOWHEAT_100MSprint("Current mode is: ", adafruit_sht4x.Mode.string[sht.mode]) from digitalio import DigitalInOut, Direction, Pullled = DigitalInOut(board.D17) #定義引腳編號led.direction = Direction.OUTPUT #IO為輸出 while True: # print("Temperature: %0.1f C" % bmp280.temperature) # print("Pressure: %0.1f hPa" % bmp280.pressure) # print("Altitude = %0.2f meters" % bmp280.altitude) # print("") # temperature, relative_humidity = sht.measurements # print("Temperature: %0.1f C" % temperature) # print("Humidity: %0.1f %%" % relative_humidity) # print("") outer = bmp280.temperature inner = sht.measurements[0 print("outer: %0.1f C" % outer) print("inner: %0.1f C" % inner) print("") if (inner - outer > 2.5): led.value = 1 print(1) else: led.value = 0 print(0) time.sleep(0.5)

3、可視無線倒車?yán)走_(dá):

在給貨車或一些其他大型車輛添加倒車?yán)走_(dá),走線會(huì)比較麻煩,長期還容易出現(xiàn)老化問題,因此我計(jì)劃將倒車攝像頭改為無線wifi攝像頭,將畫面通過無線傳輸實(shí)時(shí)顯示在LCD屏幕上。這樣可以大大簡化安裝難度,只需要從尾燈取電即可。wifi可以用車載的AP,也可以讓樹莓派自己進(jìn)入AP模式,讓無線攝像頭進(jìn)行連接。

先講講無線攝像頭的部分。由于我們希望得到無線視頻流,因此只要是可以聯(lián)網(wǎng)的ip攝像頭在本項(xiàng)目中都可以應(yīng)用。那么里我們就使用一種成本比較低的方案,用ESP32CAM進(jìn)行實(shí)現(xiàn)。

開發(fā)板上燒錄的是arduino ide上的官方CameraWebServer例程。首先我們需要定義我們使用的開發(fā)板:

#define CAMERA_MODEL_AI_THINKER

其次是要更改wifi連接信息,也就是以下兩行:

const char* ssid = "REPLACE_WITH_YOUR_SSID";const char* password = "REPLACE_WITH_YOUR_PASSWORD";

上傳代碼后,如果一切正常,我們可以在串口監(jiān)視器里看到開發(fā)板的ip。

下面我們回到樹莓派。首先安裝需要的庫:

pip3 install opencv-python

接著新建python文件,寫入以下代碼:

import cv2 url = "http://192.168.1.91:81/stream"cap = cv2.VideoCapture(url) while (True): ret, frame = cap.read() cv2.imshow('frame', frame) if cv2.waitKey(1) & 0xFF == ord('q'): break cap.release()cv2.destroyAllWindows()

注意由于這里需要可視化的界面,所以我們不能再像之前那樣在ssh中操作。我們需要接上顯示器進(jìn)入桌面,然后在桌面打開終端,在終端里用python運(yùn)行上面的程序,運(yùn)行后,我們就可以看到已經(jīng)成功從無線攝像頭中獲取到圖像。

4、后視鏡智能調(diào)整:

這個(gè)功能目前僅在一些頂配車型中有,我打算把這個(gè)功能也一并實(shí)現(xiàn),方便對現(xiàn)有中低配車輛進(jìn)行升級。后視鏡的角度控制本質(zhì)上是對舵機(jī)云臺的控制。我準(zhǔn)備預(yù)設(shè)三個(gè)角度,一是行車時(shí)后視鏡角度;二是倒車時(shí)后視鏡角度;三是停車時(shí)后視鏡角度。三種狀態(tài)通過檢測汽車檔位進(jìn)行切換。

舵機(jī)驅(qū)動(dòng)本應(yīng)使用pwmio庫進(jìn)行,但是由于樹莓派5硬件的變化,過去的RPI.GPRO庫已無法使用,而大量的庫都是建立在RPI.GPIO上的,包括pwmio。因此這里我使用digitalio自行編寫了一個(gè)pwm發(fā)生器,可以產(chǎn)生10個(gè)周期為50hz,可設(shè)置高電平us的pwm方波,用來給舵機(jī)發(fā)送信號。舵機(jī)接線方法如下:

PWM: BCM4

VCC: 5V

GND: GND

完成連接后,我們通過以下代碼,就可以實(shí)現(xiàn)用脈沖時(shí)間us的方式控制舵機(jī),并設(shè)置舵機(jī)居中,即us=1500:

importboard
importtime
fromdigitalio import DigitalInOut, Direction, Pull
pwm_pin= DigitalInOut(board.D4)
pwm_pin.direction= Direction.OUTPUT

defto(ns, freq = 50):
cycle = 1 * 1_000_000 / freq
for i in range(10):
cycle_begin = time.time() * 1000_000
pwm_pin.value = 1
while (time.time() * 1000_000 - cycle_begin) < ns:
pass
pwm_pin.value = 0
while (time.time() * 1000_000 - cycle_begin) < cycle:
pass

to(1500)

現(xiàn)在我們需要一個(gè)按鍵接入來模擬檔位變化。按照真實(shí)的情景,這里應(yīng)該使用的是一個(gè)多段開關(guān),直接接入GPIO,通過GPIO電平變化來進(jìn)行判斷。但GPIO的開關(guān)輸入實(shí)現(xiàn)在之前已經(jīng)做過。為了避免重復(fù),也是盡可能體驗(yàn)更多的功能,在這我用了一顆電位器來模擬旋鈕換擋。

樹莓派本身并不包含ADC,因此這里我們需要外接個(gè)ADC模塊來完成模擬量采集,并轉(zhuǎn)化為數(shù)字信號傳遞給樹莓派。我選用的ADC模塊是ADS1115,這一一塊16bits的ADC,輸出十進(jìn)制的范圍是0-65535,精度比較高。

接線方法如下:

SCL: BCM3

SDA: BCM2

VCC: 3.3V

GND: GND

A0: 電位器中間

電位器兩端一端接3.3V,一端接GND。

先安裝對應(yīng)的庫:

pip3 install adafruit-circuitpython-ads1x15

隨后通過下面代碼初始化ADC。我把電位器接在了A0,因此代碼中使用P0進(jìn)行讀?。?/p>

import busioimport boardimport adafruit_ads1x15.ads1115 as ADSfrom adafruit_ads1x15.analog_in import AnalogIni2c = busio.I2C(board.SCL, board.SDA)ads = ADS.ADS1115(i2c)pot = AnalogIn(ads, ADS.P0)while 1: print(pot.value)

運(yùn)行以上代碼,可以看到終端中不斷打印出ADC讀數(shù)。轉(zhuǎn)動(dòng)電位器,可以看到讀數(shù)發(fā)生相應(yīng)變化。

最后,就是把所有的功能整合在一起,完成項(xiàng)目了。

整合方法一般是把每一個(gè)單獨(dú)的功能封裝成一個(gè)函數(shù),或是一個(gè)類,然后導(dǎo)入主函數(shù)中,在需要時(shí)進(jìn)行調(diào)用。而在這里,由于我們的python代碼運(yùn)行在一個(gè)完整的linux系統(tǒng)上,為了盡可能放大操作系統(tǒng)的優(yōu)勢,同時(shí)盡可能減小代碼直接的耦合,我們使用另一種方式進(jìn)行功能整合:直接使用python來運(yùn)行/停止其他程序。

在這里我們需要預(yù)先定義運(yùn)行和停止的方法,我們新建一個(gè)control.py文件,把控制代碼寫在里面:

import os, signal def kill(filename): cmd_run="ps aux | grep {}".format(filename) pipe=os.popen(cmd_run) for line in pipe.read().splitlines(): # print(line) if "python" in line: pid = int(line.split()[1]) a = os.kill(pid,signal.SIGKILL) # print("已殺死pid為%s的進(jìn)程, 返回值是:%s" % (pid, a)) pipe.close() def run(filename, python = "python"): os.system(python + " ./" + filename + " &") # 在運(yùn)行命令后面加上&符號,以另一個(gè)線程跑

從以上代碼中可以看出,運(yùn)行代碼默認(rèn)是通過python來運(yùn)行的。如果有特殊需求,比如要使用虛擬環(huán)境的python,那么只需要在調(diào)用時(shí)添加python變量,把虛擬環(huán)境bin中的python絕對路徑以字符串形式傳遞給該變量即可。

終止的方法是通過文件名查詢所有當(dāng)前進(jìn)程,獲得pid之后再殺進(jìn)程實(shí)現(xiàn)的。

下面寫我們的主程序。主程序邏輯比較清晰,根據(jù)擋位不同,也就是電位器所在范圍的不同,分為三種情況:

行車擋:將后視鏡(舵機(jī))調(diào)整為行車時(shí)角度,并關(guān)閉其他模塊;

倒車擋:將后視鏡(舵機(jī))調(diào)整為倒車時(shí)角度,開啟倒車?yán)走_(dá),開啟無線倒車鏡,并關(guān)閉其他模塊;

駐車擋:將后視鏡(舵機(jī))調(diào)整為駐車時(shí)角度,開啟防結(jié)冰結(jié)霜功能,并關(guān)閉其他模塊。

由于我是使用python文件調(diào)用其他python文件,這里有一點(diǎn)就要特別注意了,當(dāng)我終止主程序時(shí),由于其他運(yùn)行中的python文件是在操作系統(tǒng)內(nèi)被調(diào)用的,所以并不會(huì)被一同終止。因此,我們還需要再主程序中增加終止主程序時(shí)需要終止所有可調(diào)用模塊的功能。實(shí)現(xiàn)代碼如下:

import controldef handler(signal, frame): control.kill("distance.py") control.kill("temp.py") control.kill("cam.py") exit() signal.signal(signal.SIGTSTP, handler) # Ctrl+Zsignal.signal(signal.SIGINT, handler) # Ctrl+C

至此,所有功能都已完成。完整的代碼如下:

import timeimport boardimport servo import busioimport adafruit_ads1x15.ads1115 as ADSfrom adafruit_ads1x15.analog_in import AnalogIni2c = busio.I2C(board.SCL, board.SDA)ads = ADS.ADS1115(i2c)pot = AnalogIn(ads, ADS.P0) import controldef handler(signal, frame): control.kill("distance.py") control.kill("temp.py") control.kill("cam.py") exit() import signalsignal.signal(signal.SIGTSTP, handler) # Ctrl+Zsignal.signal(signal.SIGINT, handler) # Ctrl+C state = 0old_state = 0while True: if(pot.value < 1000): state = 1 elif(pot.value > 2000): state = 3 elif(1100 < pot.value < 1900): state = 2 if state is not old_state: old_state = state if state == 2: servo.to(1500) control.run("cam.py") control.run("distance.py", python = "sudo python") control.kill("temp.py") if state == 3: servo.to(2000) control.kill("cam.py") control.kill("distance.py") control.kill("temp.py") if state == 1: servo.to(1000) control.run("temp.py", python = "sudo python") control.kill("cam.py") control.kill("distance.py") time.sleep(0.1) print(pot.value)

  • 演示視頻+源碼.rar

推薦器件

更多器件
器件型號 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊 ECAD模型 風(fēng)險(xiǎn)等級 參考價(jià)格 更多信息
L6206PD013TR 1 STMicroelectronics DMOS dual full bridge driver

ECAD模型

下載ECAD模型
$7.05 查看
L9788 1 STMicroelectronics Multifunction IC for Automotive Engine Management System

ECAD模型

下載ECAD模型
暫無數(shù)據(jù) 查看
FSBB20CH60C 1 onsemi Intelligent Power Module, 600V, 20A, 60-TUBE
$26.91 查看

相關(guān)推薦

電子產(chǎn)業(yè)圖譜