在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

電子發(fā)燒友App

硬聲App

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

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

3天內不再提示
創(chuàng)作
電子發(fā)燒友網>電子資料下載>電子資料>SMCE:您的Arduino汽車模擬器

SMCE:您的Arduino汽車模擬器

2023-06-27 | zip | 0.00 MB | 次下載 | 免費

資料介紹

描述

隨著大流行的持續(xù),硬件不僅難以采購,而且難以安全地協同工作。智能微型車輛的情況下,可用單元的數量本質上是有限的,我們部署它們的“環(huán)境”也是如此,例如賽道或障礙賽。我們如何解決硬件資源稀缺問題?我們將資源數字化!

> 本文最初發(fā)布于platis.solutions

SMCESmartcar 平臺的數字雙胞胎,以及一個酷炫且可定制的3D 世界,供您的漫游車漫游。核心概念是您編寫可在兩者上運行的 Arduino 代碼真實的硬件和虛擬環(huán)境。通過這種方式,可以減輕或大大減少對汽車的專有和頻繁訪問的需求。理想情況下,模擬器允許限制與物理汽車的不可避免的接觸,以至于開發(fā)團隊可以在模擬器上開發(fā)他們的功能,并且只訪問真實的硬件來驗證它們。使用網絡物理系統(tǒng)的虛擬表示不僅在大流行期間很有價值。我們這些使用嵌入式系統(tǒng)的人可能會痛苦地認識到由于缺乏硬件可用性而被阻止的不利影響。在這篇文章中,我將向您展示如何開始使用SMCE以及它的許多功能。如果你想要一些關于什么的靈感您可以使用該軟件查看我們的學生如何利用SMCE 來模擬 Arduino 車輛。

poYBAGNkW9uAHCt1AASgWJTwEtE744.jpg
?

關于 SMCE

在深入了解模擬器之前,讓我們澄清一下 SMCE 不是什么:一個 3D 環(huán)境,用于您的超級自定義愛好項目,它使用各種奇異的傳感器和第三方庫。開箱即用的模擬器可支持Smartcar 庫的用戶并適應他們的典型用例和傳感器設置。模擬器不僅適用于特定的庫,但是,如果您使用它,您的生活會輕松得多。我并不是因為模擬器而這么說。它帶有很多例子,它用途廣泛,總體上是一個非常容易使用的庫,您應該嘗試一下!此外,我應該注意,模擬器不是由我制作或維護的,所以請不要聯系我尋求支持。它是由我的兩個非常有才華的前學生Ryan JansonRuthger Dijt 開發(fā)的。您可以通過在相關 GitHub 存儲庫之一上創(chuàng)建問題或開始討論來聯系他們。

SMCE 由兩部分組成:“前端”(smce-gd)和“后端”(libSMCE)libSMCE是負責在您的計算機上編譯和運行 Arduino 草圖的庫。

這個跨平臺的 C++ 庫為其消費者提供了在托管環(huán)境中編譯和執(zhí)行 Arduino 草圖的能力,并綁定到其虛擬 I/O 端口以允許主機應用程序與其子草圖進行交互。

這個跨平臺的 C++ 庫為其消費者提供了在托管環(huán)境中編譯和執(zhí)行 Arduino 草圖的能力,并綁定到其虛擬 I/O 端口以允許主機應用程序與其子草圖進行交互。

smce-gd取決于在libSMCE多彩的虛擬 3D 世界中可視化草圖執(zhí)行以及與周圍環(huán)境的交互。除非您打算做一些“聰明”的事情,擴展或為項目做出貢獻等,否則smce-gd您應該主要關心的軟件。對于本教程,我將使用1.3.1版本smce-gd在 Ubuntu 20.04 上運行。

開始使用

為了在我的 Ubuntu 筆記本電腦上安裝 SMCE,我按照Wiki上的這些說明進行操作SMCE 的一個非常酷的地方是它可以您的計算機上運行。SMCE 也可以安裝在WindowsMacOS 上。如果 SMCE 安裝正確,您將看到以下屏幕:smce-gd

pYYBAGNkW96AE4LXAAAiiQFeeCs860.png
?

選擇Start Fresh選項,然后在下一個屏幕中單擊+標志。

poYBAGNkW-GAFiFGAACbSjGqQaw700.png
?

然后是時候選擇在 Arduino 上運行的代碼了。我建議從Smartcar 庫示例中的manualControl.ino草圖開始。獲取示例的一種簡單方法是Smartcar shield通過 Arduino IDE 的庫管理器下載,然后在您的光盤上找到它。讓我們看一下草圖:

#include 

const int fSpeed   = 70;  // 70% of the full speed forward
const int bSpeed   = -70; // 70% of the full speed backward
const int lDegrees = -75; // degrees to turn left
const int rDegrees = 75;  // degrees to turn right

ArduinoRuntime arduinoRuntime;
BrushedMotor leftMotor(arduinoRuntime, smartcarlib::pins::v2::leftMotorPins);
BrushedMotor rightMotor(arduinoRuntime, smartcarlib::pins::v2::rightMotorPins);
DifferentialControl control(leftMotor, rightMotor);

SimpleCar car(control);

void setup()
{
    Serial.begin(9600);
}

void loop()
{
    handleInput();
}

void handleInput()
{ // handle serial input if there is any
    if (Serial.available())
    {
        char input = Serial.read(); // read everything that has been received so far and log down
                                    // the last entry
        switch (input)
        {
        case 'l': // rotate counter-clockwise going forward
            car.setSpeed(fSpeed);
            car.setAngle(lDegrees);
            break;
        case 'r': // turn clock-wise
            car.setSpeed(fSpeed);
            car.setAngle(rDegrees);
            break;
        case 'f': // go ahead
            car.setSpeed(fSpeed);
            car.setAngle(0);
            break;
        case 'b': // go back
            car.setSpeed(bSpeed);
            car.setAngle(0);
            break;
        default: // if you receive something that you don't know, just stop
            car.setSpeed(0);
            car.setAngle(0);
        }
    }
}

上述示例指示流動站(即SimpleCar實例)遵循從串行端口發(fā)送的簡單命令。具體來說,當f發(fā)送時,汽車將以預定義的速度前進,當b發(fā)送時,它將向后行駛,r它會向右和l向左轉彎。任何其他角色都會停下車。選擇草圖后,單擊“編譯”選項。

poYBAGNkW-qAGDrvAACf0KO2Vsk645.png
?

編譯成功后,點擊開始按鈕。您會看到汽車在虛擬世界中彈出。酷吧?讓我們開車吧!單擊屏幕左下方的“串行”選項,鍵入并按鍵盤上的“Enter”。汽車將開始行駛。按下“跟隨”選項,使相機隨著汽車一起移動,并使用我們上面描述的簡單命令進行操作。完成后,您可以單擊停止專業(yè)提示:您可能希望在函數結束時放置一個微小的延遲(例如),以避免占用您的 CPU 資源,因為仿真器將在您的草圖中快速循環(huán)。floop()delay(1)

使用傳感器

現在您已經了解了環(huán)境物理原理以及如何通過串行端口向汽車發(fā)送命令,讓我們使用一些傳感器讓汽車自動移動。默認情況下,汽車預裝了一堆方便的傳感器。默認配置包括車輛前部的超聲波傳感器 ( SR04) ,連接到引腳 6 和 7。如果距離小于 70 厘米的障礙物,讓我們使用傳感器停止汽車。

#include 

ArduinoRuntime arduinoRuntime;
BrushedMotor leftMotor{arduinoRuntime, smartcarlib::pins::v2::leftMotorPins};
BrushedMotor rightMotor{arduinoRuntime, smartcarlib::pins::v2::rightMotorPins};
DifferentialControl control{leftMotor, rightMotor};

SimpleCar car(control);

const int triggerPin           = 6; // D6
const int echoPin              = 7; // D7
const unsigned int maxDistance = 100;
SR04 front{arduinoRuntime, triggerPin, echoPin, maxDistance};

void setup()
{
  // Move the car with 50% of its full speed
  car.setSpeed(50);
}

void loop()
{
  const auto distance = front.getDistance();
  // When distance is `0` it means there's no obstacle detected
  if (distance > 0 && distance < 70) {
    car.setSpeed(0);
  }

#ifdef __SMCE__
  // Avoid over-using the CPU if we are running in the emulator
  delay(1);
#endif
}

加載草圖并在模擬器中運行它。它會一直直行,直到遇到障礙物。您可以通過單擊屏幕左側的傳感器讀數來實時監(jiān)控它們。在下面的屏幕截圖中,我們可以看到,一旦遇到墻壁,電機就沒有油門,并且檢測到的距離在預期范圍內。專業(yè)提示:如果按F3 ,您將獲得傳感器指向的位置及其范圍的指示。這對于調試傳感器輸入特別有價值。

poYBAGNkW-2AXrr2AACnRCeTtrw599.png
?

作為額外的真實感,傳感器讀數故意不完全準確并且包含噪聲。默認設置中當前可用的傳感器有:

  • 車輛前部的一個SR04超聲波傳感器,距離相對較遠,但其測量速度較慢且噪聲較大。
  • 四個 SHARP 紅外傳感器(例如GP2Y0A21 ),位于汽車側面。它們的射程更短,但更準確、更快速。
  • 兩個方向里程表,每側一個,用于測量汽車行駛了多少。
  • 一個GY50陀螺儀,可以告訴您汽車的方向,或者更確切地說,以度數 [0, 360) 為單位的角位移。
  • OV767X攝像頭,可用于流式傳輸汽車所看到的內容。

連接性

通過串行端口發(fā)送命令并根據傳感器輸入使汽車自動行駛很有趣,但不可否認的是,您可以完成的任務是有限的。您經常需要您的車輛與“外部世界”進行通信,無論它可能是不同設備上的應用程序還是服務器。物理Smartcar平臺圍繞 ESP32 微控制器構建,因此它可以通過 WiFi 或藍牙輕松連接到其他設備。SMCE 允許其用戶通過WiFi 和 MQTT模擬連接。雖然 WiFi 庫的模擬還沒有完全實現,因為仍有工作要做,但應該不會超過一些#ifdef __SMCE__編寫一個可在真實硬件和仿真器上無縫運行的 Arduino 草圖。讓我們看看如何編寫一個簡單的草圖,通過 MQTT 消息控制汽車并廣播遙測數據,即前超聲波傳感器的距離測量值。注意:雖然下面的草圖在 SMCE 上運行良好,但它需要一些添加/更改才能在實際的 ESP32 上運行,主要是關于 WiFi 連接。

#include <MQTT.h>
#include <WiFi.h>

#include <Smartcar.h>

#ifndef __SMCE__
WiFiClient net;
#endif
MQTTClient mqtt;

ArduinoRuntime arduinoRuntime;
BrushedMotor leftMotor(arduinoRuntime, smartcarlib::pins::v2::leftMotorPins);
BrushedMotor rightMotor(arduinoRuntime, smartcarlib::pins::v2::rightMotorPins);
DifferentialControl control(leftMotor, rightMotor);

SimpleCar car(control);

const auto oneSecond = 1000UL;
const auto triggerPin = 6;
const auto echoPin = 7;
const auto maxDistance = 400;
SR04 front(arduinoRuntime, triggerPin, echoPin, maxDistance);

void setup() {
  Serial.begin(9600);
#ifdef __SMCE__
  // ================= 1
  // mqtt.begin("aerostun.dev", 1883, WiFi);
  mqtt.begin(WiFi); // Will connect to localhost
#else
  mqtt.begin(net);
#endif
  // ================= 2
  if (mqtt.connect("arduino", "public", "public")) {
    mqtt.subscribe("/smartcar/control/#", 1);
    mqtt.onMessage([](String topic, String message) {
      if (topic == "/smartcar/control/throttle") {
        car.setSpeed(message.toInt());
      } else if (topic == "/smartcar/control/steering") {
        car.setAngle(message.toInt());
      } else {
        Serial.println(topic + " " + message);
      }
    });
  }
}

void loop() {
  if (mqtt.connected()) {
    mqtt.loop();
    const auto currentTime = millis();
    static auto previousTransmission = 0UL;
    if (currentTime - previousTransmission >= oneSecond) {
      previousTransmission = currentTime;
      const auto distance = String(front.getDistance());
      // ================= 3
      mqtt.publish("/smartcar/ultrasound/front", distance);
    }
  }
#ifdef __SMCE__
  // Avoid over-using the CPU if we are running in the emulator
  delay(1);
#endif
}

我用內聯注釋突出顯示了草圖中的三個有趣點,然后是=================

  • 這是與 MQTT 代理建立連接的地方。如果沒有傳遞參數begin那么它將連接到localhost. 您有責任本地或遠程主機上設置代理。
  • 在這里,我們訂閱我們感興趣的主題,并定義一旦收到帶有特定主題的消息將發(fā)生什么。
  • 我們想提供一些反饋,因此我們每隔一秒發(fā)送/發(fā)布前視超聲波傳感器測量的距離。

如果您使用的是 Ubuntu,Mosquitto是最容易設置的 MQTT 代理之一。我使用mosquitto_pubmosquitto_sub實用程序訂閱前超聲波傳感器測量并發(fā)送油門命令,如下面的屏幕截圖所示。50一旦在/smartcar/control/throttle主題上得到適當的消息,汽車就開始加速行駛,并在/smartcar/ultrasound/front.

pYYBAGNkW--AA32DAADlPEQLVRw284.png
?

相機

當試圖了解你的漫游者的環(huán)境時,傳感器只能讓你走這么遠。SMCE 允許您獲取虛擬世界的圖像流。這樣,您既可以在汽車的微控制器本身上進行一些非常簡單的圖像處理,也可以將圖像流廣播到功能更強大的設備并在那里進行圖像處理。為簡單起見,SMCE 僅支持Arduino_OV767X庫,并且可以利用 MQTT 來廣播流。讓我們看一個草圖,它為 MQTT 客戶端偵聽提供圖像流/smartcar/camera和之前一樣,只是增加了攝像頭流:

#include 

#include <MQTT.h>
#include <WiFi.h>
#include <OV767X.h>

#include <Smartcar.h>

#ifndef __SMCE__
WiFiClient net;
#endif
MQTTClient mqtt;

ArduinoRuntime arduinoRuntime;
BrushedMotor leftMotor(arduinoRuntime, smartcarlib::pins::v2::leftMotorPins);
BrushedMotor rightMotor(arduinoRuntime, smartcarlib::pins::v2::rightMotorPins);
DifferentialControl control(leftMotor, rightMotor);

SimpleCar car(control);

const auto oneSecond = 1000UL;
const auto triggerPin = 6;
const auto echoPin = 7;
const auto maxDistance = 400;
SR04 front(arduinoRuntime, triggerPin, echoPin, maxDistance);

std::vector<char> frameBuffer;

void setup() {
  Serial.begin(9600);
  Camera.begin(QVGA, RGB888, 15);
  // ================= 1
  frameBuffer.resize(Camera.width() * Camera.height() * Camera.bytesPerPixel());
#ifdef __SMCE__
  // mqtt.begin("aerostun.dev", 1883, WiFi);
  mqtt.begin(WiFi); // Will connect to localhost
#else
  mqtt.begin(net);
#endif
  if (mqtt.connect("arduino", "public", "public")) {
    mqtt.subscribe("/smartcar/control/#", 1);
    mqtt.onMessage([](String topic, String message) {
      if (topic == "/smartcar/control/throttle") {
        car.setSpeed(message.toInt());
      } else if (topic == "/smartcar/control/steering") {
        car.setAngle(message.toInt());
      } else {
        Serial.println(topic + " " + message);
      }
    });
  }
}

void loop() {
  if (mqtt.connected()) {
    mqtt.loop();
    const auto currentTime = millis();
    static auto previousFrame = 0UL;
    // ================= 2
    if (currentTime - previousFrame >= 65) {
      previousFrame = currentTime;
      Camera.readFrame(frameBuffer.data());
      mqtt.publish("/smartcar/camera", frameBuffer.data(), frameBuffer.size(),
                   false, 0);
    }
    static auto previousTransmission = 0UL;
    if (currentTime - previousTransmission >= oneSecond) {
      previousTransmission = currentTime;
      const auto distance = String(front.getDistance());
      mqtt.publish("/smartcar/ultrasound/front", distance);
    }
  }
#ifdef __SMCE__
  // Avoid over-using the CPU if we are running in the emulator
  delay(1);
#endif
}
  • 在堆上分配足夠的內存以包含單個幀。
  • 65毫秒,從相機中讀取一幀并將其復制到frameBuffer. 然后通過 MQTT 廣播它。

為了向您展示這在真實場景中會是什么樣子,您可以使用參考 Android 應用程序通過 MQTT 消息控制汽車以及可視化圖像流。它不是最漂亮的,但您將了解如何使用 JAVA 和 Android 完成事情的要點。

poYBAGNkW_OAbAUfAAFKrgZo3s4971.png
?

自定義傳感器配置

默認情況下,車輛預裝了一組特定的傳感器、執(zhí)行器和可用引腳。這在 SMCE 的 wiki 中的車輛功能下進行了描述。要使用您自己的設置,您可以定義您的自定義配置,使用與您的草圖json位于同一目錄中的文件。假設我們想要一個允許我們通過串行端口駕駛汽車的草圖(如前所述),從車輛的所有四個側面測量距離并將它們發(fā)送給我們。你最終會得到一個如下圖所示的草圖:

#include 

const int fSpeed   = 70;  // 70% of the full speed forward
const int bSpeed   = -70; // 70% of the full speed backward
const int lDegrees = -75; // degrees to turn left
const int rDegrees = 75;  // degrees to turn right
const unsigned long transmissionInterval = 100; // In milliseconds
const int maxDistance = 300;

ArduinoRuntime arduinoRuntime;
BrushedMotor leftMotor(arduinoRuntime, smartcarlib::pins::v2::leftMotorPins);
BrushedMotor rightMotor(arduinoRuntime, smartcarlib::pins::v2::rightMotorPins);
DifferentialControl control(leftMotor, rightMotor);

SimpleCar car(control);

// ================= 1
SR04 left(arduinoRuntime, 2, 3, maxDistance); // trigger and echo pin respectively
SR04 right(arduinoRuntime, 4, 5, maxDistance);
SR04 front(arduinoRuntime, 6, 7, maxDistance);
SR04 back(arduinoRuntime, 16, 17, maxDistance);

void setup()
{
  Serial.begin(9600);
}

void loop()
{
  static auto previousTransmission = 0UL;
  const auto currentTime = millis();
  // ================= 2
  if (currentTime > previousTransmission + transmissionInterval) {
    previousTransmission = currentTime;
    Serial.println("===");
    Serial.println("Left: " + String(left.getDistance()));
    Serial.println("Right: " + String(right.getDistance()));
    Serial.println("Front: " + String(front.getDistance()));
    Serial.println("Back: " + String(back.getDistance()));
  }

  handleInput();
#ifdef __SMCE__
  // Avoid over-using the CPU if we are running in the emulator
  delay(1);
#endif
}

void handleInput()
{
  if (Serial.available())
  {
    char input = Serial.read(); // read everything that has been received so far and log down
    // the last entry
    switch (input)
    {
      case 'l': // rotate counter-clockwise going forward
        car.setSpeed(fSpeed);
        car.setAngle(lDegrees);
        break;
      case 'r': // turn clock-wise
        car.setSpeed(fSpeed);
        car.setAngle(rDegrees);
        break;
      case 'f': // go ahead
        car.setSpeed(fSpeed);
        car.setAngle(0);
        break;
      case 'b': // go back
        car.setSpeed(bSpeed);
        car.setAngle(0);
        break;
      default: // if you receive something that you don't know, just stop
        car.setSpeed(0);
        car.setAngle(0);
    }
  }
}
  • 在這里,我們定義了我們的傳感器應該連接到的引腳。例如,left超聲波 ( SR04) 傳感器連接到引腳23前者是觸發(fā)銷,后者是回聲銷。
  • 我們通過串行端口“打印”出測量值,間隔由 的值指定transmissionInterval
pYYBAGNkW_WAJl2uAACIbD7SJAU437.png
?

默認設置不支持上面的草圖,原因有兩個:(a)默認汽車沒有配備四個傳感器,SR04只有一個,(b)在典型 ESP32 板上可用的引腳在默認情況下不可用仿真板。幸運的是,我們可以改變它!我們需要做的第一件事是使所有必要的引腳可用,并確保它們是正確的類型(即數字或模擬)。在這里我們應該注意,由于技術原因,傳感器的回波引腳必須指定為以下是您應該遵循的步驟:1617SR04analog

  • 在與您的草圖相同的目錄中創(chuàng)建一個空文件。board_config.json
  • 獲取SMCE 使用的默認板配置,以便我們可以在它的基礎上進行構建(補丁)。
  • 使用該gpio_drivers屬性來指定您的草圖需要的所有引腳。注意:不要忘記您需要指定電機、里程表(如果您使用它們)、陀螺儀等所需的引腳。就我而言,我想移除一些我不使用的引腳(0和),1添加新的(1617)并確保SR04傳感器使用的所有引腳都處于正確的模式。
{
    "gpio_drivers": [
        { "pin": 2, "digital": true },
        { "pin": 3, "analog": true },
        { "pin": 4, "digital": true },
        { "pin": 5, "analog": true },
        { "pin": 6, "digital": true },
        { "pin": 7, "analog": true },
        { "pin": 16, "digital": true },
        { "pin": 17, "analog": true },
                
        { "pin": 12, "digital": true },
        { "pin": 13, "analog": true },
        { "pin": 14, "digital": true },
        
        { "pin": 18, "analog": true },

        { "pin": 25, "digital": true },
        { "pin": 26, "digital": true },
        { "pin": 27, "analog": true },
        
        { "pin": 34, "digital": true },
        { "pin": 35, "analog": true },
        { "pin": 85, "analog": true },
        { "pin": 135, "analog": true },

        { "pin": 39, "digital": true },
        { "pin": 36, "analog": true },
        { "pin": 86, "analog": true },
        { "pin": 136, "analog": true },
        
        { "pin": 250, "digital": true },
        
        { "pin": 205, "analog": true }
    ]
}

創(chuàng)建board_config.json指定仿真 Arduino 板上可用引腳的文件后,是時候設置您的車輛了。同樣,我們將使用默認設置來獲取靈感并相應地對其進行修補

  • 在與您的草圖相同的目錄中創(chuàng)建一個文件。vehicle_config.json
  • 獲取 SMCE 使用的默認車輛配置,以便我們在此基礎上進行構建。
  • 更改slots您感興趣的。在我的情況下,我想在和插槽上連接SR04傳感器Left使用與草圖中相同的引腳,并確保這些引腳已經被.RightBackboard_config.json
{
   "slots": {
      "Left": {
         "class": "UltraSonic",
         "name": "Left Ultrasound",
         "props": {
            "trigger_pin": 2,
            "echo_pin": 3
         }
      },
      "Right": {
         "class": "UltraSonic",
         "name": "Right Ultrasound",
         "props": {
            "trigger_pin": 4,
            "echo_pin": 5
         }
      },
      "FrontTop": {
         "class": "UltraSonic",
         "name": "Front Ultrasound",
         "props": {
            "trigger_pin": 6,
            "echo_pin": 7
         }
      },
      "Back": {
         "class": "UltraSonic",
         "name": "Back Ultrasound",
         "props": {
            "trigger_pin": 16,
            "echo_pin": 17
         }
      }
   }
}

專業(yè)提示:如果您想完全覆蓋任何配置,可以將from_scratch頂級元素添加為true. 如果您想完全移除占用您根本不使用的插槽的攝像頭或其他傳感器,這將非常有用。引腳也是如此。例如,下面的配置將創(chuàng)建一輛汽車,其后側僅配備一個超聲波傳感器和一對電機。沒有別的,沒有相機,沒有里程表,沒有陀螺儀。

{
   "from_scratch": true,
   "vehicle": "RayCar",
   "slots": {
      "Back": {
         "class": "UltraSonic",
         "name": "Back Ultrasound",
         "props": {
            "trigger_pin": 16,
            "echo_pin": 17
         }
      }
   },
   "builtin": {
      "Left BrushedMotor": {
         "forward_pin": 12,
         "backward_pin": 14,
         "enable_pin": 13
      },
      "Right BrushedMotor": {
         "forward_pin": 25,
         "backward_pin": 26,
         "enable_pin": 27
      }
   }
}

修改環(huán)境

poYBAGNkW_iAGg75AAJdJVJyCfU325.png
?

?

?


下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1A7159和A7139射頻芯片的資料免費下載
  2. 0.20 MB   |  55次下載  |  5 積分
  3. 2PIC12F629/675 數據手冊免費下載
  4. 2.38 MB   |  36次下載  |  5 積分
  5. 3PIC16F716 數據手冊免費下載
  6. 2.35 MB   |  18次下載  |  5 積分
  7. 4dsPIC33EDV64MC205電機控制開發(fā)板用戶指南
  8. 5.78MB   |  8次下載  |  免費
  9. 5STC15系列常用寄存器匯總免費下載
  10. 1.60 MB   |  7次下載  |  5 積分
  11. 6模擬電路仿真實現
  12. 2.94MB   |  4次下載  |  免費
  13. 7PCB圖繪制實例操作
  14. 2.92MB   |  2次下載  |  免費
  15. 8零死角玩轉STM32F103—指南者
  16. 26.78 MB   |  1次下載  |  1 積分

本月

  1. 1ADI高性能電源管理解決方案
  2. 2.43 MB   |  452次下載  |  免費
  3. 2免費開源CC3D飛控資料(電路圖&PCB源文件、BOM、
  4. 5.67 MB   |  141次下載  |  1 積分
  5. 3基于STM32單片機智能手環(huán)心率計步器體溫顯示設計
  6. 0.10 MB   |  137次下載  |  免費
  7. 4A7159和A7139射頻芯片的資料免費下載
  8. 0.20 MB   |  55次下載  |  5 積分
  9. 5PIC12F629/675 數據手冊免費下載
  10. 2.38 MB   |  36次下載  |  5 積分
  11. 6如何正確測試電源的紋波
  12. 0.36 MB   |  19次下載  |  免費
  13. 7PIC16F716 數據手冊免費下載
  14. 2.35 MB   |  18次下載  |  5 積分
  15. 8Q/SQR E8-4-2024乘用車電子電器零部件及子系統(tǒng)EMC試驗方法及要求
  16. 1.97 MB   |  8次下載  |  10 積分

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935121次下載  |  10 積分
  3. 2開源硬件-PMP21529.1-4 開關降壓/升壓雙向直流/直流轉換器 PCB layout 設計
  4. 1.48MB  |  420062次下載  |  10 積分
  5. 3Altium DXP2002下載入口
  6. 未知  |  233088次下載  |  10 積分
  7. 4電路仿真軟件multisim 10.0免費下載
  8. 340992  |  191367次下載  |  10 積分
  9. 5十天學會AVR單片機與C語言視頻教程 下載
  10. 158M  |  183335次下載  |  10 積分
  11. 6labview8.5下載
  12. 未知  |  81581次下載  |  10 積分
  13. 7Keil工具MDK-Arm免費下載
  14. 0.02 MB  |  73810次下載  |  10 積分
  15. 8LabVIEW 8.6下載
  16. 未知  |  65988次下載  |  10 積分
主站蜘蛛池模板: 一级特级aaaa毛片免费观看 | 视频网站在线 | 国产精品第9页 | 扒开双腿猛进入jk校视频 | 日本不卡免费新一区二区三区 | 国产久热精品 | 六月色播| 国产美女久久 | 亚洲男人天堂2021 | 一级黄色毛片播放 | 丁香五月网久久综合 | 婷婷色综合久久 | 精品国产_亚洲人成在线高清 | www四虎影院| 亚洲婷婷综合中文字幕第一页 | chinese国产一区二区 | 免费在线h视频 | 手机看片久久青草福利盒子 | 操她视频网站 | 欧美一卡二卡科技有限公司 | 亚洲人成毛片线播放 | 一区二区影院 | 欧美69色| 亚洲www网站 | 国产男女怕怕怕免费视频 | 欧美日韩国产成人高清视频 | 男人j进女人j的视频一进一出 | 四虎国产永久在线精品免费观看 | 啪啪激情综合 | 激情婷婷综合久久久久 | 国产精品激情综合久久 | 一级毛片女人喷潮 | 97人摸人人澡人人人超一碰 | 白嫩美女一级高清毛片免费看 | 狠狠综合欧美综合欧美色 | 日韩一级片在线观看 | 婷婷久| 天天摸天天摸天天躁 | 色94色欧美一区 | 白嫩少妇激情无码 | 123综合网在线 |