資料介紹
描述
抽象的
辦公室、餐廳、圖書館有許多共享工作空間。人們來來去去。在這次 COVID-19 大流行中,我們需要確保這些工作空間在其他人來使用它們之前是清潔和消毒的。該項目將應(yīng)用 AWS IOT 技術(shù)和 H/W M5Stack CORE2 for AWS 來控制機(jī)器人在人們離開工作區(qū)后噴灑酒精并用 UV-C 燈清潔地板。
項目描述
我們計劃建造一個小型機(jī)器人,它可以噴灑微滴酒精,同時機(jī)器人會攜帶紫外線消毒器,以確保工作空間的清潔和安全。用戶通過掃描餐桌上的二維碼開始使用工作區(qū),完成后只需按下移動 Web 上的“完成”按鈕。AWS IOT 將計算使用持續(xù)時間并命令機(jī)器人開始使用 UV-C 射線和酒精噴霧進(jìn)行清潔。同時,此用法將保留在 Dynamo DB 中。如果感染了 COVID-19 的人以前使用過此工作區(qū),此數(shù)據(jù)庫將用于歷史跟蹤。
(注意***我們計劃使用 PIR 傳感器來檢測人來并使用 Alexa 來獲取用戶的姓名。但是 PIR 傳感器非常不可靠,用戶需要一直坐在桌旁,這不實用。對于 Alexa , 沒有簡單的方法將語音轉(zhuǎn)換為文本。由于時間限制,我們選擇將解決方案與建議的解決方案稍微改變一下。)
系統(tǒng)架構(gòu)
這個項目有兩個部分。
1)客戶端,使用M5 stack Core 2來控制所有機(jī)器人的動作,如前進(jìn)、后退、左右轉(zhuǎn)、噴酒精和控制紫外線。檢查所有傳感器以防止與物體碰撞和跌倒檢測。當(dāng)用戶使用完工作區(qū)后,該機(jī)器人將由 AWS IOT 控制。AWS IOT 會將工作區(qū)占用標(biāo)志更新為 false(意味著工作區(qū)現(xiàn)在可用) CORE2 將更新使用時間并開始機(jī)器人清潔。完成清潔后,機(jī)器人將停止工作,工作空間可供下一個人使用。
2)服務(wù)器端使用AWS上的一些服務(wù)。用戶開始掃描桌面上顯示的二維碼注冊姓名。該網(wǎng)站是一個簡單的靜態(tài)網(wǎng)站,存儲在 Amazon S3 AWS 上。當(dāng)用戶按下注冊按鈕時,javascript會將信息傳遞給存儲在API網(wǎng)關(guān)上的Restful API。API 網(wǎng)關(guān)將調(diào)用 AWS lambda 在 AWS IOT 上更新設(shè)備或獲取設(shè)備影子的設(shè)備狀態(tài)。AWS IOT 更新工作區(qū)和機(jī)器人的狀態(tài),并在用戶使用完工作區(qū)后發(fā)布到 Dynamo DB。
我們可以用下圖總結(jié)所有活動
![poYBAGNkfy2ATt-eAAB1riDoDEY541.png](https://file.elecfans.com/web2/M00/77/88/poYBAGNkfy2ATt-eAAB1riDoDEY541.png)
先決條件
因為這個項目需要很多技術(shù)的基礎(chǔ)。通過完成以下教程,您應(yīng)該熟悉這些技術(shù)。
- AWS 服務(wù)(S3、API 網(wǎng)關(guān)、Lampda、AWS IOT)您可能需要查看每項服務(wù)的教程。這些 AWS 服務(wù)的 Google 教程。
- 熟悉platformIO和Core2forAWS的開發(fā)環(huán)境。轉(zhuǎn)到https://edukit.workshop.aws/en/getting-started.html以獲取教程,按照說明直到主題 3 智能恒溫器。這將確保您可以連接到 AWS 服務(wù)并通過所有安全檢查。我們的項目是從這個項目擴(kuò)展而來的。
- 從 S3 -> API-> Lampda->AWS IOT 的應(yīng)用流程。本教程對于讓您了解每個 AWS 服務(wù)之間的流程非常有用。https://iot-esp32.workshop.aws/en/module3.html項目實施
硬件實現(xiàn)
對于硬件構(gòu)建,我們需要添加額外的兩個 M5stack 模塊(M5Stack DC Motor 和 M5Stack Proto)DC 電機(jī)模塊帶有四個用于樂高電機(jī)的連接器,非常適合我們的快速原型。我們使用原型模塊將 CORE2 總線連接到 14 針插座。這些模塊可以按順序堆疊,但要注意堆疊的順序
Core 2 --> Proto --> DC Motor --> M5GO2(自帶core2)
![pYYBAGNkfzCAe4T3AABqyB9XUSc108.png](https://file.elecfans.com/web2/M00/78/1A/pYYBAGNkfzCAe4T3AABqyB9XUSc108.png)
************************************使用 < > 查看更多圖片 ********* ************************
我們在這個項目中使用的端口是
- 用于 UV-C LED 的 GPIO32
- GPIO27 酒精噴霧
- 用于紅外傳感器的 GPIO13、GPIO36
- GPIO 33、26 用于跌倒檢測
- 用于 PIR 的 GPIO 19
- GPIO3、GPIO1、GPIO35(未使用)
- 5V引腳
- 3V引腳
- 接地引腳
在 Core2 上使用 GPIO 對我來說非常棘手。您需要考慮許多限制。這是我可以從數(shù)據(jù)表中收集的一些信息。
- 應(yīng)避免使用這些端口 GPIO1、GPIO3、GPIO12、GPIO15,因為它們可能用于調(diào)試和閃存。
- 端口 34 - 39 只能用于 I/P,沒有上拉/下拉
- 端口不是 5V 容差,這意味著如果您的傳感器是 5V 傳感器類型,您需要使用電平轉(zhuǎn)換器。并且某些電平轉(zhuǎn)換器無法正常工作,如果您想避免出現(xiàn)問題,請確保購買優(yōu)質(zhì)的。
對于電平轉(zhuǎn)換器,我將它放在一個單獨的盒子中,其中包括 PIR 傳感器、繼電器模塊以及傳感器和外圍設(shè)備的所有連接,如圖所示。
![pYYBAGNkfzaAaXAkAAEf901kjiU886.png](https://file.elecfans.com/web2/M00/78/1A/pYYBAGNkfzaAaXAkAAEf901kjiU886.png)
有兩個設(shè)備需要兩個繼電器來打開/關(guān)閉。因為我們使用在市場上銷售的商業(yè)廣告。需要進(jìn)行一些修改。
酒精噴霧
我們使用便攜式酒精噴霧,只需 2 美元即可輕松購買。本設(shè)備配有內(nèi)置電池。我們只是從按鈕開關(guān)并聯(lián)到我們的插座,如圖所示。
![poYBAGNkfzmAGaNZAABFQ4jkhUs633.png](https://file.elecfans.com/web2/M00/77/88/poYBAGNkfzmAGaNZAABFQ4jkhUs633.png)
UV-C LED
請注意,并非所有的紫外線都能殺死病毒。您需要使用比普通 UV Led 更昂貴的 UV-C 產(chǎn)品。UV-C 對眼睛和皮膚有危險。請確保您在實驗過程中不要暴露在這種光線下。我買了手機(jī)UV-C盒子,取出UV-C模塊。對于這個模塊,我需要連接外部電池(1x 18650 Battery 3.7V)因為電池在盒子里太大了。如圖所示,我從啟動開關(guān)到插座并聯(lián)接線。
![pYYBAGNkfzuAM9NCAABJLEVhNRk614.png](https://file.elecfans.com/web2/M00/78/1A/pYYBAGNkfzuAM9NCAABJLEVhNRk614.png)
電池盒
核心 2 無法為兩個電機(jī)提供足夠的電力。我們需要一個單獨的電池來驅(qū)動直流電機(jī)。我為 2x 18650 選擇電池盒。這將連接到直流電機(jī)模塊。您必須使用 3.7 V 的電池來驅(qū)動 UV-C 模塊。我沒有這個的照片。您可以選擇任何您喜歡的電池盒。
機(jī)器人框架
因為我們使用樂高電機(jī),所以我選擇使用樂高構(gòu)建機(jī)器人框架。如果你不是樂高迷。您可以根據(jù)可用的材料和想象力選擇任何電機(jī)和框架。這是我使用樂高的機(jī)器人框架的圖片。
![poYBAGNkfz6AaR-CAAD58772ELU226.png](https://file.elecfans.com/web2/M00/77/88/poYBAGNkfz6AaR-CAAD58772ELU226.png)
傳感器
在這個項目中使用了四個傳感器,兩個在前面用于跌倒檢測和碰撞檢測,另外兩個在后面。我使用兩種不同類型的紅外傳感器進(jìn)行跌倒檢測和碰撞。如圖所示。
![poYBAGNkf0eAWOpxAACUfQ7nX9E900.jpg](https://file.elecfans.com/web2/M00/77/88/poYBAGNkf0eAWOpxAACUfQ7nX9E900.jpg)
使其與樂高兼容。我把樂高板貼在傳感器的背面。對于這個技巧,您可以使用小塑料蓋作為盒子的家用電燈開關(guān)。
完成所有接線并安裝所有傳感器、組件。這是消毒機(jī)器人的最終說明。
![pYYBAGNkf0qADH4gAADlqvbmuo0328.png](https://file.elecfans.com/web2/M00/78/1A/pYYBAGNkf0qADH4gAADlqvbmuo0328.png)
軟件實施
軟件實現(xiàn)有很多部分。了解更多概念。您可能需要開始學(xué)習(xí)這兩個教程
- 了解有關(guān)此項目中使用的 AWS IOT 概念和工具的更多信息。
https://iot-esp32.workshop.aws/en/introduction.html
- 了解有關(guān)許多 AWS 服務(wù)流程的更多信息。
https://iot-esp32.workshop.aws/en/module3.html
更完整的源碼請到github https://github.com/wtos03/HealthySpaces
我將僅提取一些代碼片段以進(jìn)行解釋。
網(wǎng)頁
該頁面將用于注冊工作區(qū),如下圖所示
![poYBAGNkf0yAFOeuAABUSoeS69Q727.png](https://file.elecfans.com/web2/M00/77/88/poYBAGNkf0yAFOeuAABUSoeS69Q727.png)
用戶開始選擇注冊地點。此選項菜單將幫助將名稱轉(zhuǎn)換為 AWS IOT 中使用的事物名稱。
<select name="roomNames" >
<option value="0123a8024945e75c01"> Binary Roomoption>
<option value="TT"> Analog Roomoption>
select>
用戶輸入姓名并按注冊按鈕后。網(wǎng)頁將發(fā)布帶有 Jason 格式數(shù)據(jù)的請求(工作空間狀態(tài)的名稱和 wsOccupancy 標(biāo)志)以預(yù)定義 Web API 影子狀態(tài)(參見 url:下面)
$("#register").click(function(event){
currentvalue = document.getElementById('register').innerHTML;
yourName = document.getElementById('name').value;
// trying to add the value from text box
thingName = document.getElementById("roomNames").value;
console.log(thingName);
var mydata={"action":"on","wsOccupancy":true,"userName":yourName, "thingname":thingName};
console.log(mydata);
document.getElementById("status").innerHTML= `Workspace Usage : ${yourName}`;
document.getElementById("status").setAttribute("class","button is-rounded is-large is-fullwidth is-loading");
$.ajax( {
type: 'POST',
url:'https://u2gtqb6j39.execute-api.us-west-2.amazonaws.com/Dev/shadow-state',
contentType: 'application/json',
crossDomain: true,
processData: false,
dataType: "json",
data: JSON.stringify(mydata),
success:function(data) {
console.log(" on success");
document.getElementById("status").setAttribute("class","button is-success is-rounded is-large is-fullwidth");
},
error:function(data) {
console.log(" on fail;");
document.getElementById("status").setAttribute("class","button is-success is-rounded is-large is-fullwidth");
}
});
});
如果用戶按下 Finished 按鈕,wsOccupancy 標(biāo)志將設(shè)置為 false 并發(fā)布到與注冊過程相同的 API。
如果用戶按下 Occupy 按鈕來檢查 Workspace 的狀態(tài),網(wǎng)頁將向預(yù)定義的 Web API 影子狀態(tài)發(fā)送獲取請求。此 API 將返回可用或已占用的工作區(qū)狀態(tài)。
$("#status").click(function(event){
console.log("Checking Workspace status");
//check the status of Shadow
// thingName = "ESP32"
thingName = document.getElementById("roomNames").value;
console.log(`thingname=${thingName}`);
$.ajax( {
type: 'GET',
url:'https://u2gtqb6j39.execute-api.us-west-2.amazonaws.com/Dev/shadow-state',
contentType: 'application/json',
crossDomain: true,
processData: false,
dataType: "json",
data: `thingname=${thingName}`,
success:function(data) {
console.log("success");
console.log(data.status);
document.getElementById("status").innerHTML=data.status;
if (data.status == "Available" )
{
document.getElementById("status").setAttribute("class","button is-success is-rounded is-large is-fullwidth");
}
else{
document.getElementById("status").setAttribute("class","button is-danger is-rounded is-large is-fullwidth");
}
},
error:function(data) {
console.log("error");
}
});
});
靜態(tài)網(wǎng)頁的優(yōu)點是您可以在任何支持Javascript的網(wǎng)絡(luò)瀏覽器下在本地網(wǎng)頁上運行它。無需 Web 服務(wù)器托管此服務(wù)。但是要分享這個網(wǎng)頁,我們可以上傳到 S3 存儲桶并將它們標(biāo)記為靜態(tài)網(wǎng)頁。通過將此文件 (index.html) 上傳到 S3 存儲桶并啟用為靜態(tài)網(wǎng)站托管。定義公共訪問權(quán)限或僅特定組的權(quán)限。并復(fù)制 Bucket 網(wǎng)站端點以在網(wǎng)頁上使用。在這個例子中是
http://cleanws.com.s3-website-us-west-2.amazonaws.com
我們可以翻譯此 URL 以創(chuàng)建 QR 碼或放入 NFC 標(biāo)簽,以供人們來到工作區(qū)時訪問。
蘭普達(dá)功能
在創(chuàng)建 API 網(wǎng)關(guān)之前,我們需要先創(chuàng)建 Lampda。因為 API 需要 Lampda 函數(shù)名指向。
我們需要創(chuàng)建兩個 Lampda 函數(shù)
- Shadow_Status_Check 此函數(shù)通過獲取 wsOccupancy 標(biāo)志的值來檢查 AWS IOT 的狀態(tài)。如果 true 將返回值“Occupied”以顯示在網(wǎng)頁上。如果 false 將返回值“可用”。該標(biāo)志將從報告的影子狀態(tài)中讀取。
- Shadow_Update 此函數(shù)使用 wsOccupancy 和 userName 的值更新 IOT 設(shè)備影子的狀態(tài)。
這些源代碼是用 python 3.8 編寫的。確保這兩個功能有權(quán)訪問 AWS IOT 服務(wù)(在左側(cè)的配置和權(quán)限選項卡下
![pYYBAGNkf1GAaMa6AABoYw9WUr0401.png](https://file.elecfans.com/web2/M00/78/1A/pYYBAGNkf1GAaMa6AABoYw9WUr0401.png)
所有源代碼都位于 LampdaFunctions 目錄下
API網(wǎng)關(guān)
讓網(wǎng)頁輕松訪問 AWS IOT 服務(wù)。我們可以定義連接到 Lampda 函數(shù)的 API。Lampda 功能可以連接到 AWS IOT 服務(wù)。我們無法創(chuàng)建 Web API 來直接連接到 AWS IOT。(我不知道原因,但我認(rèn)為這是安全問題)要創(chuàng)建 API,您需要創(chuàng)建資源影子狀態(tài)和兩個方法 get 和 post。
“獲取方法”鏈接到“Shadow_Status_Check”Lampda 函數(shù)。
“發(fā)布方法”鏈接到“Shadow_Update Lampda”功能。
![pYYBAGNkf1SAb0XeAADm9fjZryQ290.png](https://file.elecfans.com/web2/M00/78/1A/pYYBAGNkf1SAb0XeAADm9fjZryQ290.png)
?
AWS 物聯(lián)網(wǎng)
我們沒有在 AWS IOT 服務(wù)器上進(jìn)行太多配置。大多數(shù)在客戶端完成的任務(wù)都是由 CORE2 模塊完成的。確保正確設(shè)置所有配置和安全性。在開始這部分工作之前,請在https://edukit.workshop.aws/en/getting-started.html運行這兩個教程 Cloud Connected Blinky 和 ??Smart Thermostat 。
ThingName 將使用每個設(shè)備唯一的設(shè)備 ID 自動創(chuàng)建。
CORE 2 將開始連接 AWS IOT Shadow 服務(wù)并在數(shù)據(jù) userName 和 wsOccupancy 標(biāo)志上注冊增量更改
// register delta callback for workSpaceActuator and nameActuator
rc = aws_iot_shadow_register_delta(&iotCoreClient, &nameActuator);
if(SUCCESS != rc) {
ESP_LOGE(TAG, "Shadow Register userName Delta Error");
}
rc = aws_iot_shadow_register_delta(&iotCoreClient, &workSpaceActuator);
if(SUCCESS != rc) {
ESP_LOGE(TAG, "Shadow Register wsOccupancy Delta Error");
}
這兩個 Actuator 將注冊回調(diào)函數(shù),如下面的數(shù)據(jù)結(jié)構(gòu)。
jsonStruct_t nameActuator;
nameActuator.cb = userName_Callback;
nameActuator.pKey = "userName";
nameActuator.pData = &userName;
nameActuator.type = SHADOW_JSON_STRING;
nameActuator.dataLength = MAX_NAME_LENGTH;
jsonStruct_t workSpaceActuator;
workSpaceActuator.cb = occupancy_Callback;
workSpaceActuator.pKey = "wsOccupancy";
workSpaceActuator.pData = &wsOccupancy;
workSpaceActuator.type = SHADOW_JSON_BOOL;
workSpaceActuator.dataLength = sizeof(bool);
計算開始和停止使用時間之間的時間差。我們需要先正確設(shè)置時間。為了方便設(shè)置和方便,我們使用 ntp 協(xié)議來設(shè)置時間,它在 ntptime.h 中定義并在 ntptime.c 中實現(xiàn)。當(dāng) CORE2 將 wsOccupancy 的更新 delta 狀態(tài)從 false 變?yōu)?true 時,CORE2 將在 LED 條上打開紅色,獲取 startUsagetime 并將 robotStatus 更改為“Stop Clean”
if (*(bool *)(pContext->pData)) //True mean workspace is used
{
Core2ForAWS_Sk6812_SetSideColor(SK6812_SIDE_LEFT, 0xFF0000);
Core2ForAWS_Sk6812_SetSideColor(SK6812_SIDE_RIGHT, 0xFF0000);
Core2ForAWS_Sk6812_Show();
// Add starttime
getTimeStructure(&startTime);
strftime(startUsageTime, sizeof(startUsageTime), "%c", &startTime);
ESP_LOGI(TAG, "The current date/time in Thailand is: %s", startUsageTime);
strcpy(robotStatus,"Stop Clean");
}
如果用戶使用完工作區(qū)。wsOccupancy 的 delta 標(biāo)志將從 true 變?yōu)?false,這將觸發(fā)獲取 stopUsageTime,以 HH:MM 格式計算時間差,停止 LED 條并將機(jī)器人狀態(tài)更改為“開始清潔”
else
{
Core2ForAWS_Sk6812_Clear();
Core2ForAWS_Sk6812_Show();
// Add stoptime
getTimeStructure(&stopTime);
strftime(stopUsageTime, sizeof(stopUsageTime), "%c", &stopTime);
ESP_LOGI(TAG, "The current date/time in Thailand is: %s", stopUsageTime);
// Find time difference
diffTimePeriod (stopTime,startTime,&diffTime);
sprintf(durationTime,"%d Hr: %d Min: %d Sec",diffTime.tm_hour,diffTime.tm_min,diffTime.tm_sec);
ESP_LOGI(TAG, "The workspace usage time is: %s \n", durationTime);
strcpy(robotStatus,"Start Clean");
}
CORE2 將在第 461 行指定的每個特定時間發(fā)送報告設(shè)備影子
vTaskDelay(pdMS_TO_TICKS(1000)); Line 461
發(fā)電機(jī)數(shù)據(jù)庫
該數(shù)據(jù)庫將繼續(xù)使用工作區(qū)。一旦用戶完成使用工作區(qū)并且 CORE2 完成計算使用時間,我們將發(fā)布到 DB。您需要為保存的數(shù)據(jù)創(chuàng)建表,定義主鍵。有關(guān)更多信息,請訪問此網(wǎng)站以了解更多如何在 Dynamo DB 中存儲設(shè)備數(shù)據(jù)
https://docs.aws.amazon.com/iot/latest/developerguide/iot-ddb-rule.html
要發(fā)布到數(shù)據(jù)庫,我們需要在左側(cè)的規(guī)則選項卡下定義規(guī)則來處理物聯(lián)網(wǎng)數(shù)據(jù)。規(guī)則查詢將使用 SQL 語句開始發(fā)布到數(shù)據(jù)庫。這需要改進(jìn) SQL 語句以僅在用戶完成時發(fā)布。
SELECT state.reported.userName, state.reported.temperature, state.reported.startUsageTime, state.reported.stopUsagetime, state.reported.durationHandler FROM '$aws/things/0123a8024945e75c01/shadow/update/accepted'
機(jī)器人控制
這是我們從 aws_iot_task 注冊單獨進(jìn)程的另一個任務(wù)
xTaskCreatePinnedToCore(&robot_task, "robot_task", 2048, NULL, 3, NULL, 1);
xTaskCreatePinnedToCore(&aws_iot_task, "aws_iot_task", 4096*2, NULL, 5, NULL, 0);
robotStatus 標(biāo)志將用于控制機(jī)器人的狀態(tài)。如果用戶離開工作區(qū),狀態(tài)將變?yōu)殚_始清潔,機(jī)器人將開始清潔,直到完成或其他用戶進(jìn)入。這部分尚未完全實施。當(dāng)機(jī)器人撞到東西或幾乎要??摔倒時,只需簡單的服務(wù),如前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn)和掉頭。實現(xiàn)機(jī)器人移動算法需要更多的時間來開發(fā)和測試。
使用 i2c 協(xié)議的直流電機(jī)驅(qū)動器在目錄組件 /dc-motor/m5-dcmotor.c 中實現(xiàn)
項目測試
因為我的設(shè)備在截止日期前三天停止工作。(CORE2 無法重新編程。引導(dǎo)信息顯示 PSRAM 讀取錯誤) 屏幕像這樣出現(xiàn)垃圾。
![pYYBAGNkf1eAC1SMAABeD3xupmI581.png](https://file.elecfans.com/web2/M00/78/1A/pYYBAGNkf1eAC1SMAABeD3xupmI581.png)
我不能有視頻來展示項目的最終工作。但是在開發(fā)期間。所有功能(電機(jī)運動、傳感器。和打開設(shè)備的繼電器都已經(jīng)過測試并且運行良好。除了 GPIO 有時會在傳感器上讀取錯誤。
AWS 和 CORE2 之間的邏輯已經(jīng)過測試。當(dāng)用戶按下完成按鈕時機(jī)器人開始工作,并在發(fā)生新注冊時停止工作。唯一錯過測試的一件事是在打開 UV-C 和酒精噴霧時進(jìn)行傳感器檢查。
正如您在此視頻中看到的,AWS 部件工作正常。
以史為鑒
我從這個項目中學(xué)到了一些技巧。對其他人進(jìn)一步發(fā)展而不是再次嘗試和錯誤將是有用的。
- CORE2 中的許多設(shè)備共享相同的 i2C 總線,這有時會導(dǎo)致問題。例如,我的直流電機(jī)控制和 MPU6886 協(xié)同工作有問題。
- 在項目快完成時升級開發(fā)環(huán)境或拉新庫是一個壞主意。這導(dǎo)致我的項目完全停止。我無法及時解決問題。
- 端口 ESP32 不是 5v 容差。不能直接連接 5 V 傳感器。
- FreeRtos 取決于任務(wù)計劃。這會影響您的實時操作。我在從輸入端口讀取值以及調(diào)整時間延遲或添加更多任務(wù)時遇到問題。我從讀取端口得到了不同的行為。
- AWS 中有很多安全設(shè)置。這給我?guī)砹撕芏鄦栴},直到我決定打開所有安全性。這將是一個很大的安全漏洞。黑客可以使用您的 API 來管理 AWS IOT。我希望亞馬遜將在安全設(shè)置方面進(jìn)行更多改進(jìn),使其集中且易于設(shè)置和理解
我希望你覺得這個項目很有用。建議復(fù)制并粘貼此項目的某些部分,以幫助您更快地開發(fā)項目。我會很高興聽到這個消息。謝謝你。
?
- 由電話控制的小型機(jī)器人
- 語音機(jī)器人的構(gòu)建
- 機(jī)器人的構(gòu)建
- 機(jī)器人項目構(gòu)建
- 可用Android通過藍(lán)牙進(jìn)行控制的機(jī)器人汽車 0次下載
- 構(gòu)建機(jī)器人系統(tǒng)
- 小型機(jī)載計算機(jī)電源的設(shè)計
- 基于DSP和PC的農(nóng)業(yè)機(jī)器人控制系統(tǒng) 18次下載
- 基于DSP芯片的足球機(jī)器人實現(xiàn)與設(shè)計 27次下載
- 移動機(jī)器人的導(dǎo)航定位和地圖構(gòu)建技術(shù)綜述 22次下載
- 如何才能實現(xiàn)移動機(jī)器人的導(dǎo)航定位和地圖構(gòu)建技術(shù) 22次下載
- 小型仿人機(jī)器人系統(tǒng)的設(shè)計資料詳細(xì)說明 3次下載
- TMS320LF2407在小型機(jī)器人控制系統(tǒng)中的應(yīng)用 6次下載
- 基于嵌入式視覺的移動式自重構(gòu)微小型機(jī)器人
- 微小型自主偵察機(jī)器人控制系統(tǒng)設(shè)計
- 如何構(gòu)建一個可充電酒精檢測儀 2374次閱讀
- 基于ATmega16構(gòu)建的線跟隨機(jī)器人的完整電路圖 2042次閱讀
- 如何使用DonkeyCar平臺構(gòu)建一個自主機(jī)器人 2296次閱讀
- 基于使用A4988驅(qū)動程序和HC-05 bt模塊構(gòu)建自平衡機(jī)器人 2152次閱讀
- 基于TMS320F2812芯片實現(xiàn)移動機(jī)器人的導(dǎo)航和控制系統(tǒng)的應(yīng)用方案 2941次閱讀
- 機(jī)器人對TF電機(jī)要求有哪些 1388次閱讀
- 面對疫情 醫(yī)療機(jī)器人能幫上什么忙? 2236次閱讀
- 教育機(jī)器人市場分析_教育機(jī)器人市場前景 5805次閱讀
- 協(xié)作機(jī)器人的起源_為什么需要協(xié)作機(jī)器人 8322次閱讀
- 仙知機(jī)器人自主研發(fā)用于移動機(jī)器人應(yīng)用專業(yè)級客戶端軟件Roboshop 6250次閱讀
- 如何選擇機(jī)器人電機(jī)_機(jī)器人電機(jī)選擇舉例 1w次閱讀
- 軟體機(jī)器人 前所未見的機(jī)器人 3770次閱讀
- Python+樹莓派實現(xiàn)的微信拍攝機(jī)器人 1w次閱讀
- 如何使用HRMRP機(jī)器人平臺構(gòu)建機(jī)器人應(yīng)用系統(tǒng) 1699次閱讀
- 如何構(gòu)建不傷害人類的工業(yè)機(jī)器人 1166次閱讀
下載排行
本周
- 1A7159和A7139射頻芯片的資料免費下載
- 0.20 MB | 55次下載 | 5 積分
- 2PIC12F629/675 數(shù)據(jù)手冊免費下載
- 2.38 MB | 36次下載 | 5 積分
- 3PIC16F716 數(shù)據(jù)手冊免費下載
- 2.35 MB | 18次下載 | 5 積分
- 4dsPIC33EDV64MC205電機(jī)控制開發(fā)板用戶指南
- 5.78MB | 8次下載 | 免費
- 5STC15系列常用寄存器匯總免費下載
- 1.60 MB | 7次下載 | 5 積分
- 6模擬電路仿真實現(xiàn)
- 2.94MB | 4次下載 | 免費
- 7PCB圖繪制實例操作
- 2.92MB | 2次下載 | 免費
- 8零死角玩轉(zhuǎn)STM32F103—指南者
- 26.78 MB | 1次下載 | 1 積分
本月
- 1ADI高性能電源管理解決方案
- 2.43 MB | 452次下載 | 免費
- 2免費開源CC3D飛控資料(電路圖&PCB源文件、BOM、
- 5.67 MB | 141次下載 | 1 積分
- 3基于STM32單片機(jī)智能手環(huán)心率計步器體溫顯示設(shè)計
- 0.10 MB | 137次下載 | 免費
- 4A7159和A7139射頻芯片的資料免費下載
- 0.20 MB | 55次下載 | 5 積分
- 5PIC12F629/675 數(shù)據(jù)手冊免費下載
- 2.38 MB | 36次下載 | 5 積分
- 6如何正確測試電源的紋波
- 0.36 MB | 19次下載 | 免費
- 7PIC16F716 數(shù)據(jù)手冊免費下載
- 2.35 MB | 18次下載 | 5 積分
- 8Q/SQR E8-4-2024乘用車電子電器零部件及子系統(tǒng)EMC試驗方法及要求
- 1.97 MB | 8次下載 | 10 積分
總榜
- 1matlab軟件下載入口
- 未知 | 935121次下載 | 10 積分
- 2開源硬件-PMP21529.1-4 開關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計
- 1.48MB | 420062次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233088次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費下載
- 340992 | 191367次下載 | 10 積分
- 5十天學(xué)會AVR單片機(jī)與C語言視頻教程 下載
- 158M | 183335次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81581次下載 | 10 積分
- 7Keil工具M(jìn)DK-Arm免費下載
- 0.02 MB | 73810次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65988次下載 | 10 積分
評論