資料介紹
描述
在織物印花廠的培訓期間,我們注意到由于用于 GSM 測量的傳統(tǒng)方法,大量織物被浪費。GSM(克每平方米)是織物質量的指標,織物行業(yè)使用各種機器和技術在整個制造和印花過程中保持織物的 GSM 一致。
織物 GSM 測量的傳統(tǒng)方法包括切割一塊面積為 0.01 平方厘米的小圓形織物,并使用精密天平測量其重量。這是在拉幅過程中專門完成的,機器的超喂根據(jù)輸入和輸出 GSM 進行控制。
該項目旨在用基于光學的方法取代這種傳統(tǒng)方法。目前,該項目的范圍僅限于單色(白色)平紋斜紋織物。(算法也可以應用于具有相當精確度的針織面料)
在 Ultra96 上設置 PYNQ
對于希望以最少的開發(fā)和調試時間實現(xiàn)硬件加速應用程序的任何人,PYNQ是一個不錯的選擇。目前 PYNQ 支持多個板,包括 Ultra96。所以如果你碰巧有一個 Ultra96 或類似的板子,我強烈建議你試試 PYNQ。(根據(jù)我的經(jīng)驗,任何支持 Python 的東西都非常容易使用)
您要做的第一件事是從這里為您的電路板下載 PYNQ 2.3 映像。對于 Ultra96,您也可以在 board 的官方網(wǎng)站上找到它。
下載后,您可以使用 PYNQ 重新刷新開發(fā)板隨附的 SD 卡。如果您在格式化卡時遇到問題,此視頻將展示如何使用 DISKPART for windows 來完成。
安裝后,您應該能夠使用 Ultra96 的 wifi 接入點(pynq_<您的主板的mac地址>)訪問您的 Ultra96。您可以通過從您喜歡的瀏覽器訪問192.168.2.1:9090打開 Jupyter Notebook ,并立即開始開發(fā)。
提示 :
登錄密碼是“xilinx”
獲取 PYNQ 計算機視覺庫
PYNQ 的計算機視覺庫提供了幾個用于在硬件中加速 OpenCV 功能的覆蓋。目前支持 Filter2D 和擴張操作。(如果你是 Xilinx 的人讀到這篇文章,我希望你們也可以下載可以使用 xfopencv 庫構建的其余疊加層。下載 17gigs 的 SDSoC 來構建疊加層不是我可以用我的第三世界互聯(lián)網(wǎng))
您可以從此處獲取計算機視覺庫。
或者簡單地說,在 Jupyter Notebook 中打開一個終端并輸入,
sudo pip3 install --upgrade git+https://github.com/Xilinx/PYNQ-ComputerVision.git
你就完成了。
?
獲取 PYNQ:BNN 覆蓋
PYNQ 越來越好。Xilinx 的優(yōu)秀人員還提供了一些疊加層,使我們能夠在硬件中運行量化神經(jīng)網(wǎng)絡!您可以在他們的GitHub 頁面上閱讀更多相關信息。(接下來我們將嘗試訓練我們自己的小型神經(jīng)網(wǎng)絡來識別織物結構,從而使校準更容易。)
sudo pip3 install git+https://github.com/Xilinx/BNN-PYNQ.git (on PYNQ v2.3)
現(xiàn)在我們已經(jīng)安裝了所有這些花哨的疊加層,讓我們開始做事吧。
機織物的經(jīng)緯紗分離
盡管它的價格很高,但我們還是能夠獲得令人驚訝的好織物圖像。下圖顯示了機織織物放大后的樣子。
機織織物由沿水平和垂直方向運行的紗線組成。那么有什么比使用可靠的 ol Sobel 過濾器更好的方法來分離它們!Sobel算子用于識別灰度圖像的邊緣(稱為圖像強度函數(shù),其中每個像素僅被賦予一個從最低強度到最高強度的值)。使用這些梯度,可以通過將它們的梯度與相鄰像素的梯度進行比較來找到形成邊緣的像素。我們可以通過將原始圖像與 Sobel X 和 Y 核進行卷積來生成經(jīng)紗和緯紗的子圖像。
?
?
Sobel 濾波器 - 使用 Filter2D 覆蓋在 Ultra96 硬件上實現(xiàn)
在我們開始使用硬件加速過濾器 2D 之前,我們需要導入必要的疊加層。讓我們打開一個新的 Notebook 并開始開發(fā)算法。安裝計算機視覺庫時獲得的筆記本中提供了使用疊加層時必須遵循的語法和結構。
提示:自己運行提供的筆記本,看看這些操作與軟件相比有多快!
提示 2 - 如果您在訪問相機時遇到錯誤,請執(zhí)行 Kernel > Restart and Run All。
import cv2 #NOTE: This needs to be loaded first# Load filter2D + dilate overlay
# Load filter2D + dilate overlay
from pynq import Bitstreambs = Bitstream("/usr/local/lib/python3.6/dist-packages/pynq_cv/overlays/xv2Filter2DDilate.bit")bs.download()
import pynq_cv.overlays.xv2Filter2DDilate as xv2
# Load xlnk memory mangager
from pynq import XlnkXlnk.set_allocator_library('/usr/local/lib/python3.6/dist-packages/pynq_cv/overlays/xv2Filter2DDilate.so')mem_manager = Xlnk()
我們還需要從我們的網(wǎng)絡攝像頭捕捉幀。
camera = cv2.VideoCapture(0)
width = 640
height = 480
camera.set(cv2.CAP_PROP_FRAME_WIDTH,width)camera.set(cv2.CAP_PROP_FRAME_HEIGHT,height)
你還需要這個函數(shù)在 Jupyter 中顯示圖像。稍后我們將把這個項目與 Flask 集成,所以我們只需要在初始階段使用它來檢查事情是否正常工作。
import IPython
def imshow(img):
returnValue, buffer = cv2.imencode('.jpg', img)
IPython.display.display(IPython.display.Image(data=buffer.tobytes()))
讓我們將內核設置為 numpy 數(shù)組。
sobelx = np.ones((480,640),np.uint8)sobely = np.ones((480,640),np.uint8)blur_frame = np.ones((480,640),np.uint8)
#These must be 3x3 since filter2d overlay supports a 3x3 kernel size
kernel_sobelx = np.array([[1.0,0.0,-1.0],[2.0,0.0,-2.0],[1.0,0.0,-1.0]],np.float32)#Sobel Xkernel_sobely = np.array([[1.0,2.0,1.0],[0.0,0.0,0.0],[-1.0,-2.0,-1.0]],np.float32)#Sobel Ykernel_sharp = np.array([[-1.0,-1.0,-1.0],[-1.0,32.0,-1.0],[-1.0,-1.0,-1.0]],np.float32)#sharpkernelb = np.array([[1/16.0,1/8.0,1/16.0],[1/8.0,1/4.0,1/8.0],[1/16.0,1/8.0,1/16.0]],np.float32)#blur
kernelVoid = np.zeros(0)
您將需要這些來運行您的硬件功能。
xFin= mem_manager.cma_array((height,width),np.uint8)
xFbuf= mem_manager.cma_array((height,width),np.uint8)
xFout= mem_manager.cma_array((height,width),np.uint8)
blur = mem_manager.cma_array((height,width),np.uint8)
讓我們開始應用 sobel 過濾器。
# Flush webcam buffers (needed when rerunning notebook)
for _ in range(5):
ret, frame_in = camera.read()# Read in a frame
ret, img = camera.read()
if ret:
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) #Convert color image from webcam to grayscale image
xFin[:] = gray[:] # load grayscale image to frame in buffer
xv2.filter2D(xFin, -1, kernelb, xFout, borderType=cv2.BORDER_CONSTANT) #See how easy it is to call the overlay!
blur_frame[:] = xFout[:]
imshow(blur_frame) #Display gaussian blurred image
blur[:] = xFout[:]
xv2.filter2D(blur, -1, kernel_sobelx, xFbuf, borderType=cv2.BORDER_CONSTANT) #convolve with sobel x filter
xv2.filter2D(xFbuf, -1, kernelVoid, xFout, borderType=cv2.BORDER_CONSTANT)
sobelx[:] = xFout[:]
xv2.filter2D(blur, -1, kernel_sobely, xFbuf, borderType=cv2.BORDER_CONSTANT) #convolve with sobel y filter
xv2.filter2D(xFbuf, -1, kernelVoid, xFout, borderType=cv2.BORDER_CONSTANT)
sobely[:] = xFout[:]
imshow(sobelx)
imshow(sobely)
else:
print("Error reading frame from camera.")
?
輸出
由于我們需要強烈的模糊來去除紗線的細線部分,因此通過使用相機的焦距調整,輸入圖像略微失焦。
?
?
?
?
?
通過一些額外的形態(tài)變換和閾值處理,我們可以很容易地獲得黑色背景上的白色條紋的經(jīng)紗和緯紗。
由于我們需要獲取經(jīng)紗和緯紗的數(shù)量,因此我們不得不使用一些耗時的軟件功能。(回想一下我們使用上面的代碼獲得的 sobelx 和 sobely 圖像)
warpcount = 0
weftcount = 0
warparea = 0
weftarea = 0
draw_warp = 1
draw_weft = 1
warp_perimeter_thresh = 800
weft_perimeter_thresh = 800
############ This part should come after obtaining sobelx and y images##########
if draw_warp:
im2x, contoursx, hierarchyx = cv2.findContours(sobelx,cv2.RETR_TREE,cv2.CHAIN_APPROX_NONE)
for cnt in contoursx:
perimeter = cv2.arcLength(cnt,True)
if perimeter > warp_perimeter_thresh:
cv2.drawContours(img, cnt, -1, (204,50,153), 2)
warpcount = warpcount+1
warparea = +cv2.contourArea(cnt)
if draw_weft:
im2y, contoursy, hierarchyy = cv2.findContours(sobely,cv2.RETR_TREE,cv2.CHAIN_APPROX_NONE)
for cnt in contoursy:
perimeter = cv2.arcLength(cnt,True)
if perimeter > weft_perimeter_thresh:
cv2.drawContours(img, cnt, -1, (0,0,255), 2)
weftcount = weftcount+1
weftarea = +cv2.contourArea(cnt)
mem = "Warp Yarns : "+str(warpcount)
mem1 = "Warp Pixel Area : "+str(warparea)+ " pixels"
mem2 = "Weft Yarns : "+str(weftcount)mem3 = "Weft Pixel Area : "+str(weftarea)+ " pixels"
areatot = (warparea+weftarea)
mem4 = "Totalized Pixel Area : "+str(areatot)+ " pixels"
font = cv2.FONT_HERSHEY_SIMPLEX
cv2.putText(img,mem,(5,370), font, 1,(0,255,0),2,cv2.LINE_AA)
cv2.putText(img,mem1,(5,400), font, 1,(255,100,100),2,cv2.LINE_AA)
cv2.putText(img,mem2,(5,430), font, 1,(0,255,0),2,cv2.LINE_AA)
cv2.putText(img,mem3,(5,460), font, 1,(255,100,100),2,cv2.LINE_AA)
cv2.putText(img,mem4,(5,30), font, 1,(255,0,0),2,cv2.LINE_AA)
imshow(img)
這是輸出。這部分有點資源密集,但我們的幀速率已經(jīng)限制在 25FPS(由于它是 USB 攝像頭),所以它不會對我們產(chǎn)生太大影響。
至此,我們已經(jīng)得到了經(jīng)紗和緯紗的支數(shù)(我們可以直接用這些來得到紗線密度,也就是單位面積的紗線數(shù)量),以及紗線的總像素數(shù)。由于在不知道給定織物類型的每個像素質量的情況下,無法從像素數(shù)量估計紗線質量,因此我們可以簡單地使用具有已知 GSM 的織物樣本進行校準。
舉個例子。上面顯示的織物樣品是 110GSM。讓我們結合它來校準我們的算法來測量這種織物類型的 GSM。
gsm = (areatot/27747)*110mem5 = "Predicted GSM : "+str(gsm)+ " GSM"
cv2.putText(img,mem5,(5,60), font, 1,(255,0,0),2,cv2.LINE_AA)
讓我們再次運行代碼并提供同一織物不同部分的圖片。
?
預測的 GSM 很接近,但可以觀察到一點偏差。校準后,我們??必須確保傳感器和織物之間的距離在移動到不同區(qū)域時不會發(fā)生變化。這促使我們開發(fā)了本文后半部分所示的 XY cartecean 滑塊系統(tǒng)。
針織面料測試
針織物的織物結構更復雜,以便以這種方式捕捉。然而,如下圖所示,我們可以在一側捕獲交織在一起的紗線簇(稱為環(huán))。
所以我們大概可以在這些紗線簇和質量之間建立關系。為此,我們需要更改我們的算法以僅找到垂直邊緣。
回憶一下 draw_warp 和 draw_weft 控制變量。我們可以將其中一個設置為零。
?
使用 PYNQ 使我們的算法更智能:BNN
如果我們的算法能夠在校準過程中識別出機織織物和針織物,它就可以輕松適應不同的織物結構。讓我們利用 PYNQ BNN 覆蓋來加快推理速度。
(在 Ultra96 上安裝 BNN 后,請務必查看示例筆記本以熟悉自己)
為了在我們的數(shù)據(jù)集上訓練提供的模型,我們需要使用我們相對更強大的計算機一段時間。(我是在 Linux 上完成的)所以將 PYNQ:BNN 存儲庫克隆到你的電腦上。
您需要按照此處的說明安裝 Theano、Lasagne、Pylearn2 和其他一些必需的軟件包。由于我們的數(shù)據(jù)集很小,我們現(xiàn)在不需要 CUDA 來進行 GPU 加速,但是如果您的數(shù)據(jù)集變得更大,您可能需要它。
安裝 pylearn2 后,請記住通過輸入為 pylearn2 數(shù)據(jù)集設置路徑變量,
export PYLEARN2_VIEWER_COMMAND="eog --new-instance"
export PYLEARN2_DATA_PATH=/YOURPATHTOHERE/pylearn2/datasets
在您的終端中。
我們現(xiàn)在將嘗試為我們的模型生成一個 MNIST 數(shù)據(jù)集進行訓練。首先,我們需要獲取一些梭織和針織織物結構的照片。
您可以使用末尾附加的phototaker.py代碼從您的網(wǎng)絡攝像頭拍攝多張灰度圖像。
拿到照片后,我們可以使用這個神奇的工具來生成 MNIST 數(shù)據(jù)。
https://github.com/gskielian/JPG-PNG-to-MNIST-NN-Format
將 repo 克隆到您的 PC 中,將圖像復制到培訓和測試目錄。
根據(jù)標簽數(shù)量編輯batches.meta.txt 。
在終端上鍵入./resize-script.sh 將所有圖像調整為 28x28 大小并運行convert-images-to-mnist-format.py以生成數(shù)據(jù)集。
提示:您將獲得 4 個文件。
?
gskielian 的工具將生成訓練圖像集和標簽作為 train-images-idx3-ubyte 和 train-labels-idx1-ubyte,但您必須將 train 重命名為 t10k,因為這是訓練腳本要查找的內容。
然后,您必須轉到 pylearn2/pyearn2/datasets 并編輯mnist.py文件并更改訓練和測試數(shù)據(jù)的大小、時期數(shù)和批量大小以適合您的數(shù)據(jù)集。
一切調整好后,你可以進入你的BNN目錄,運行mnist.py
這將生成一個名為 mnist_parameters.npz 的文件。您需要使用 mnist-gen-weights-W1A1 或W1A2.py生成比特流
生成成功后,將生成的文件放在/usr/local/lib/python3.6/dist-packages/bnn/params/newmodel/lfcW1A1/
我們可以使用LFC-BNN_MNIST_Webcam.ipynb筆記本對其進行測試。
import bnn
hw_classifier = bnn.LfcClassifier(bnn.NETWORK_LFCW1A1,"newmodel",bnn.RUNTIME_HW)
import cv2
from PIL import Image as PIL_Image
from PIL import ImageEnhance
from PIL import ImageOps# says we capture an image from a webcam
import numpy as np
import math
from scipy import misc
from array import *
cap = cv2.VideoCapture(0)
_ , cv2_im = cap.read()
cv2_im = cv2.cvtColor(cv2_im,cv2.COLOR_BGR2RGB)
img = PIL_Image.fromarray(cv2_im).convert("L")
Image enhancement
contr = ImageEnhance.Contrast(img)img = contr.enhance(3)
# The enhancement values (contrast and brightness)
bright = ImageEnhance.Brightness(img)
# depends on backgroud, external lightsetc
img = bright.enhance(4.0)
#Adding a border for future cropping
img = ImageOps.expand(img,border=80,fill='white')
inverted = ImageOps.invert(img)
box = inverted.getbbox()
img_new = img.crop(box)
width, height = img_new.size
ratio = min((28./height), (28./width))
background = PIL_Image.new('RGB', (28,28), (255,255,255))
if(height == width):
img_new = img_new.resize((28,28))
elif(height>width):
img_new = img_new.resize((int(width*ratio),28))
background.paste(img_new, (int((28-img_new.size[0])/2),int((28-img_new.size[1])/2)))
else:
img_new = img_new.resize((28, int(height*ratio)))
background.paste(img_new, (int((28-img_new.size[0])/2),int((28-img_new.size[1])/2)))
background
img_data=np.asarray(background)
img_data = img_data[:,:,0]
misc.imsave('/home/xilinx/img_webcam_mnist.png', img_data)
#Resize the image and invert it (white on black)
smallimg = ImageOps.invert(img_load)
smallimg = smallimg.rotate(0)
data_image = array('B')
pixel = smallimg.load()
for x in range(0,28):
for y in range(0,28):
if(pixel[y,x] == 255):
data_image.append(255)
else:
data_image.append(1)
# Setting up the header of the MNIST format file - Required as the hardware is designed for MNIST dataset
hexval = "{0:#0{1}x}".format(1,6)
header = array('B')
header.extend([0,0,8,1,0,0])
header.append(int('0x'+hexval[2:][:2],16))
header.append(int('0x'+hexval[2:][2:],16))
header.extend([0,0,0,28,0,0,0,28])
header[3] = 3 # Changing MSB for image data (0x00000803)
data_image = header + data_image
output_file = open('/home/xilinx/img_webcam_mnist_processed', 'wb')
data_image.tofile(output_file)
output_file.close()
class_out = hw_classifier.classify_mnist("/home/xilinx/img_webcam_mnist_processed")
print("Class name: {0}".format(hw_classifier.class_name(class_out)))
?
訓練時放置在類名 1 下的針織面料圖像的輸出。
推理耗時 7.00 微秒分類率:每秒 142857.14 張圖像
班級名稱:1
偉大的。我們的模型能夠成功地確定織物結構,并且它使用硬件進行推理,速度非常快!
制作 XYZ 滑塊
制作這種 XYZ 滑動機構是為了從織物的不同區(qū)域采集多個樣本,而不會在校準后改變相機和傳感器之間的距離。它是 3D 打印部件和金屬制造部件的混合體。附上 3D 打印文件。
使用 EAGLE 設計了一個 PCB,以使用 A4988 步進電機驅動器控制 4 個步進電機。這些驅動程序使用 STM32 F103C8T6 MCU 進行控制。MCU根據(jù)Ultra96板通過Serial發(fā)送的數(shù)據(jù)控制各軸的絕對位置。附上 PCB gerber 文件和 STM32-Arduino 代碼。(轉到頁面末尾!)
您還需要為 Arduino 下載AccelStepper 庫。
MCU 期望以 '、' 作為分隔符的絕對位置和 * 表示字符串結束。我們可以輕松地生成一個字符串并使用 pySerial 通過串行方式發(fā)送它。
?
?
使用 Flask 創(chuàng)建 Web 界面
現(xiàn)在我們的代碼可以正常工作了,讓我們把所有東西放在一起。您可以使用 Flask 快速為您的圖像處理應用程序生成一個漂亮的 webapp。而且很棒的是,Ultra96 開發(fā)板預裝了 Flask!您可以在 GitHub 上找到如何將 Flask 與 OpenCV 一起使用的一個很好的示例。
https://github.com/log0/video_streaming_with_flask_example
借助一點 Bootstrap 和 Javascript 的魔力,您可以制作一個真正響應式的 Web GUI,如下所示。即:我沒有提供整個 Flask GUI,因為它仍然是一個正在開發(fā)的用于商業(yè)用途的項目,但是如果您對如何制作 GUI 有任何疑問,我們非常樂意為您提供幫助。
結果
基于 Sobel 濾波器的紗線檢測是對來自 3 個不同織物樣本的 30 個圖像進行的。下圖顯示了使用的樣本類型。
通過將相機放置在織物的不同部分上,獲得相同織物的不同樣品。紗線檢測算法在每個樣品的 10 張這樣的照片上運行。結果表明,機織織物的準確度 <94%,針織物的垂直毛圈結構準確度為 90%。(根據(jù)要求提供表格結果)
?
使用紗線像素區(qū)域的 GSM 測定
50 個不同的織物樣本(每個不同點 4 幀,共 200 張圖像),標稱 GSM 為 107 GSM,用于該測試。全范圍誤差(最大讀數(shù)為 250GSM)被制成表格。下圖描述了讀數(shù)相對于實際值的變化。
可以觀察到相當大的偏差,但這在織物行業(yè)中是可以接受的。然而,這可以通過增強算法進一步最小化。
結論
Ultra96 板對于初學者和專家來說都是一個很棒的板。它與 PYNQ 的兼容性將其提升到了一個全新的水平。如果您對 Xilinx 提供的令人驚嘆的計算機視覺和 BNN 庫不滿意,您可以使用 Vivado 編寫自己的“疊加層”,并在硬件上運行某些部分(甚至整個程序)。
在硬件層中運行卷積(對于 Sobel、Smoothing、Erosion、Blurs)等操作可以大大減少算法的運行時間。然而,在這個應用程序中,幀速率受到資源密集型輪廓檢測和相機的最大幀速率(24fps)的限制。
希望 Avnet 和 Xilinx 為 PYNQ 和 Ultra96 創(chuàng)建越來越多的資源和庫,這使開發(fā)人員能夠快速測試他們的想法,而無需經(jīng)歷從頭開始構建一切的麻煩。
- Ultra96硬件用戶指南
- Ultra96 SDR第一部分:簡單的射頻頻譜圖Web應用程序
- Ultra96 CSI-2視頻輸出到Raspberry Pi攝像頭輸入
- Ultra96上的實時攝像頭饋送網(wǎng)頁
- 使用PYNQ的Ultra96面部識別鎖栓
- 使用Tensil、TF-Lite和PYNQ在Ultra96板上運行YOLO v4 Tiny
- 在Ultra96 V2平臺上用Python實現(xiàn)人臉檢測和人臉跟蹤
- 用于Ultra96的夾層板96AnalogXperience
- Ultra96 FPGA上的Live NYC Subway Monitor應用程序
- 關于Ultra96的Xilinx DDS編譯器IP教程
- 與Ultra96聯(lián)網(wǎng)端口轉發(fā)
- Ultra96 V2上基于標記的增強現(xiàn)實
- Ultra96皮膚癌AI構建
- 2018.2 Ultra96:從 Matchbox 桌面關斷 PetaLinux BSP,無法關斷電路板
- 一起玩Ultra96之GPIO操作
- 使用PYNQ訓練和實現(xiàn)BNN 221次閱讀
- 米爾PYNQ開發(fā)板來了 901次閱讀
- dfrobotSIM808 GPS/GPRS/GSM擴展板簡介 1939次閱讀
- 源創(chuàng)通信SinoV-GSM400P 4線 GSM 無線Asterisk卡介紹 2434次閱讀
- 源創(chuàng)通信SINOV-GSM800P 8GSM模塊 Asterisk卡介紹 2712次閱讀
- 介紹用GSM網(wǎng)絡發(fā)現(xiàn)WCDMA盲區(qū)及盲區(qū)難點排查 537次閱讀
- PYNQ中MicroBlaze程序文件的加載過程 2192次閱讀
- 詳解Xilinx公司Zynq? UltraScale+?MPSoC產(chǎn)品 3184次閱讀
- 微軟正在尋求將觸摸傳感器帶入其硬件的織物材料中去 843次閱讀
- 基于Arm技術的16nm MPSoC開發(fā)套件Ultra96 6099次閱讀
- PYNQ 基于Zynq架構添加了對python的支持 8754次閱讀
- gsm模塊如何與單片機通信? 2.7w次閱讀
- gsm模塊有哪些_常見三款GSM模塊介紹 9.4w次閱讀
- gsm模塊是什么_gsm模塊工作原理_gsm模塊的應用 5w次閱讀
- 基于GSM的工業(yè)過程控制的實現(xiàn) 3331次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
- 1.06 MB | 532次下載 | 免費
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費
- 3TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費
- 5元宇宙深度解析—未來的未來-風口還是泡沫
- 6.40 MB | 227次下載 | 免費
- 6迪文DGUS開發(fā)指南
- 31.67 MB | 194次下載 | 免費
- 7元宇宙底層硬件系列報告
- 13.42 MB | 182次下載 | 免費
- 8FP5207XR-G1中文應用手冊
- 1.09 MB | 178次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應用800例(新編版)
- 0.00 MB | 33566次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關電源設計實例指南
- 未知 | 21549次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數(shù)字電路基礎pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅動電路設計》 溫德爾著
- 0.00 MB | 6656次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉中文版)
- 78.1 MB | 537798次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191187次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183279次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論
查看更多