資料介紹
描述
嗨,在花了幾個晚上做機器人之后,我決定與你分享我的上一份工作。一個基于 Arduino/ESP32 的機器人,能夠避開障礙物、跟蹤線路、跟隨并顯示來自攝像頭的實時視頻。
該機器人駕駛室通過藍牙(連接到Arduino)或WIFI(ESP32板連接到Arduino)進行控制。
我希望以一種非常簡單的方式制作這個機器人的分步指南。
避障機器人是一種完全自主的機器人,它能夠避開移動時遇到的任何障礙物。簡單的說,當它在前進的過程中遇到障礙物時,會自動停止前進并后退一步。然后它看起來左右兩側(cè)并開始以最佳方式移動,這意味著如果右側(cè)有另一個障礙物則向左方向移動,或者如果左側(cè)有另一個障礙物則向右方向移動。避障機器人非常有用,它是許多大型項目的基礎,例如自動汽車、制造工廠中使用的機器人,甚至是航天器中使用的機器人。
線路跟蹤機器人使用一些紅外接近傳感器來檢測線路,并根據(jù)從傳感器接收到的輸入,Arduino 將在電機驅(qū)動器的幫助下引導電機移動。
跟隨機器人使用接近傳感器,可以檢測附近的任何物體并跟隨該物體。如果您來到機器人前面,它會開始跟隨您。該機器人由超聲波傳感器和紅外傳感器組成,有助于跟蹤物體。這就像機器人只有避障,但在工作中是相反的。它使用了 2 個紅外傳感器和一個超聲波傳感器。紅外傳感器用于跟隨人或物體,超聲波傳感器用于移動機器人。
藍牙機器人可以通過連接到 Arduino 的藍牙設備進行控制。我開發(fā)了一個可以控制機器人方向和激活動作模式的 Android 應用程序。
ESP32板可以通過WIFI傳輸實時視頻。我開發(fā)了一個 Android 應用程序,您可以在其中看到機器人運動過程中的實時視頻。您可以將機器人用作物聯(lián)網(wǎng)設備。
補給品
組裝底部機箱
將底部機箱放在一個平面上,然后將雙 H 橋 L298N 安裝在其上(使用 4 個螺釘)。
注意雙 H 橋方向(參見圖片以供參考)。
使用較長的螺釘和螺母將 4 直流電機安裝在底盤上(參見圖片以供參考)。
按照架構(gòu)將 4 直流電機連接到雙 H 橋 L298N。請記住,雙 H 橋 L298N 能夠控制 2 個直流電機,我們必須將右電機和左電機連接在一起。
使用孔將 5V 5 路跟蹤模塊組裝在底部機箱的前部位置(參見圖片以供參考)。對于此步驟,您必須使用 2 個印刷墊片和 2 個 M2 螺母/螺釘。
使用小 M3 螺釘將 4 Standoff M3x50mm 擰到底部機箱上。該支架將用于將底架與頂架固定
組裝頂部機箱
將頂部機箱放在平面上并將 Arduino 板安裝在其上(使用 4 個螺釘)。
將 Arduino Sensor Shield V5.0 放在 Arduino 板的頂部,注意將相應的引腳耦合在一起。
用螺釘將 2 IR 傳感器安裝在機箱上。使用底盤上的定向支撐,以使傳感器定向為 30°。這一步很重要,因為紅外傳感器用于檢查機器人左右兩側(cè)的障礙物。
將 Micro 伺服 SG90 安裝在機箱方孔上。使用 2 個螺絲固定。
用螺絲將蜂鳴器模塊安裝在機箱上。使用正確方向的支撐。
用 2 顆螺絲將電池座安裝在機箱上。使用正確方向的支撐。
您現(xiàn)在已經(jīng)組裝了頂部和底部機箱。好工作。
讓我們繼續(xù)其他步驟。
準備超聲波傳感器和 ESP32 CAM
使用 3D 打印面部支架并將超聲波傳感器 HC-SR04 插入 2 圓孔中。
然后將Holder安裝在已經(jīng)安裝在底盤上的微伺服上。
使用 4 母對母電纜連接超聲波傳感器 HC-SR04。
將 ESP32 Cam 安裝在 3D 打印的面部支架上。
使用 2 根母對母電纜(5V 和 GND)連接 ESP32 Cam。
接線組件
現(xiàn)在我們可以開始給智能汽車接線了。
在將機箱組裝在一起之前,我們必須將組件連接到底部機箱上,以便使用孔穿過。
使用 5 母-母電纜將跟蹤模塊 5V 5 路連接到底部機箱上。
使用 6 母-母電纜將雙 H 橋 L298N 連接到底部機箱上。
使用 2 公公電纜連接 GND、5V 端口。
將雙 H 橋上的 GND、12V 端口連接到電池座。重要提示:將電源開關置于 OFF 位置。
現(xiàn)在您可以使用頂部機箱上的孔穿過之前接線的母-母電纜。不要忘記微伺服電纜。
將 Top Cassis 放在頂部并使用 M3 螺釘將其與底部機箱固定。
現(xiàn)在我們可以繼續(xù)連接頂部機箱上的其他組件。
使用 3 根母對母電纜連接頂部機箱上的兩個 IR 傳感器。
使用 3 根母對母電纜連接頂部機箱上的蜂鳴器模塊。
嘗試使用彈性或類似的東西將所有電纜放在一起。
接線細節(jié):
L298N電機驅(qū)動器:
+12V → 鋰電池 (+)
GND → Lipo 電池 (-)重要:將 GND 連接到 lipo 電池 (-) 和 arduino 板的任何 GND 引腳
+5V → arduino Vin
EnA → arduino 數(shù)字引腳 3
In1 → arduino 數(shù)字引腳 4
In2 → arduino 數(shù)字引腳 5
In3 → arduino 數(shù)字引腳 6
In4 → arduino 數(shù)字引腳 7
EnB → arduino 數(shù)字引腳 11
OUT1 → 電機 FWD+BWD 右
OUT2 → 電機 FWD+BWD 右
OUT3 → 電機 FWD+BWD 左
OUT4 → 電機 FWD+BWD 左
蜂鳴器模塊:
GND → Arduino V
VCC → Arduino G
I/O → arduino 數(shù)字引腳 13
微伺服:
GND → Arduino V
VCC → Arduino G
IN → arduino 數(shù)字引腳 12
紅外右傳感器:
GND → Arduino V
VCC → Arduino G
OUT → arduino 數(shù)字引腳 2
紅外左傳感器:
GND → Arduino V
VCC → Arduino G
OUT → arduino 數(shù)字引腳 8
HC-SR04 超聲波
聲納傳感器:
VCC → Arduino URF +5V
Trig → arduino URF 模擬引腳 2
Echo → arduino URF 模擬引腳 3
GND → Arduino URF GND
跟蹤模塊:
GND → Arduino G
5V → Arduino V
OUT2 → arduino 模擬引腳 4
OUT3 → arduino 模擬引腳 1
OUT4 → arduino 模擬引腳 0
藍牙模塊 HC-06
GND → Arduino G
5V → Arduino V
TX → Arduino RX
RX → arduino TX
ESP32 凸輪
GND → Arduino G
5V → Arduino V
RX → arduino TX重要:連接時必須斷開藍牙
帶電壓讀取器的面包板
使用粘合劑將迷你面包板安裝在頂部機箱上。
使用公公電纜將雙 H 橋上的 12V 端口連接到面包板。
電池電壓(100k和1M電阻串聯(lián))
100k電阻→12V
100k/1M 電阻 → arduino 模擬引腳 5
1M電阻→arduino G
迷你面包板也可用于您自己的實驗!
完成組裝
現(xiàn)在您可以完成組裝 4 個塑料輪并將所有電線組合在一起的工作。
編程 Arduino UNO
創(chuàng)建一個名為 \Catosci_SmartCar 的文件夾并保存所有 .ino、.cpp 和 .h 文件。
在 Arduino IDE 上打開 Catosci_SmartCar.ino 文件并上傳到 Arduino 板。
重要提示:請記住在連接 USB 數(shù)據(jù)線之前斷開藍牙
/**********************************************************************
Filename : Catosci_SmartCar.ino
Product : Catosci 4WD Car for UNO
Description : A Multifunctional Bluetooth Remote Car.
Auther : Carlo Iurisci
Modification: 2022/03/25
**********************************************************************/
#include "Catosci_4WD_Car_for_Arduino.h"
#include "Automatic_Obstacle_Avoidance_Mode.h"
#include "Automatic_Tracking_Line_Mode.h"
#include "BluetoothOrders.h"
#define UPLOAD_VOL_TIME 3000
#define UPLOAD_DATA_TIME 500
#define COMMANDS_COUNT_MAX 8
#define INTERVAL_CHAR '@'
//#define DEBUG
u32 lastUploadVoltageTime;
u32 lastUploadDataTime;
String inputStringBLE = "";
bool stringComplete = false;
int paramters[COMMANDS_COUNT_MAX], paramterCount = 0;
int bleCarMode = MODE_NONE;
void setup() {
pinsSetup();
Serial.begin(9600);
servoSetup();
// while (!strip.begin());
// strip.setAllLedsColor(0xFF0000);
}
void loop() {
// invia misura Vbatteria all'App ogni UPLOAD_VOL_TIME
upLoadVoltageToApp();
// invia lettura sensori all'App ogni UPLOAD_DATA_TIME
upLoadAndReadSonarValueToApp();
if (stringComplete) { //da eseguiro solo alla ricezione di un comando
String inputCommandArray[COMMANDS_COUNT_MAX];
String inputStringTemp = inputStringBLE;
for (u8 i = 0; i < COMMANDS_COUNT_MAX; i++) {
int index = inputStringTemp.indexOf(INTERVAL_CHAR);
if (index < 0) {
break;
}
paramterCount = i; //
inputCommandArray[i] = inputStringTemp.substring(0, index);
inputStringTemp = inputStringTemp.substring(index + 1);
paramters[i] = inputCommandArray[i].toInt();
}
stringComplete = false;
inputStringBLE = "";
char commandChar = inputCommandArray[0].charAt(0);
switch (commandChar)
{
case ACTION_MOVE:
if (paramterCount == 2) {
motorRun(paramters[1], paramters[2]); //app contol catoscicar_speed is 0 ~ 100 ,pwm is 0~255
}
break;
case ACTION_CAR_MODE:
if (paramterCount == 1) {
bleCarMode = paramters[1];
switch (bleCarMode)
{
case MODE_NONE: case MODE_GRAVITY:
resetCarAction();
writeServo(OA_SERVO_CENTER);
break;
case MODE_ULTRASONIC:
oa_CalculateVoltageCompensation();
break;
case MODE_ULTRASONIC_NOIR:
oa_CalculateVoltageCompensation();
break;
case MODE_FOLLOW:
oa_CalculateVoltageCompensation();
break;
case MODE_TRACKING:
tk_CalculateVoltageCompensation();
break;
default:
break;
}
}
break;
case ACTION_BUZZER:
if (paramterCount == 1) {
setBuzzer(paramters[1]);
}
break;
default:
break;
}
}
switch (bleCarMode) //loop per modalità di controllo
{
case MODE_NONE: case MODE_GRAVITY:
break;
case MODE_ULTRASONIC:
updateAutomaticObstacleAvoidance();
break;
case MODE_ULTRASONIC_NOIR:
updateAutomaticObstacleAvoidanceNoInfrared();
break;
case MODE_FOLLOW:
UltrasonicFollow();
break;
case MODE_TRACKING:
updateAutomaticTrackingLine();
break;
default:
break;
}
void upLoadVoltageToApp() {
int voltage = 0;
if (millis() - lastUploadVoltageTime > UPLOAD_VOL_TIME) {
if (getBatteryVoltage()) {
voltage = batteryVoltage * 1000;
}
String sendString = String(ACTION_GET_VOLTAGE) + String(INTERVAL_CHAR) + String((voltage)) + String(INTERVAL_CHAR);
Serial.println(sendString);
lastUploadVoltageTime = millis();
}
}
void upLoadAndReadSonarValueToApp() {
// invia lettura sensori all'App
if (millis() - lastUploadDataTime > UPLOAD_DATA_TIME) {
String sendString = String(ACTION_ULTRASONIC)+String(INTERVAL_CHAR)+String(getSonar());
sendString += String(INTERVAL_CHAR)+ String(digitalRead(IR_AVOIDANCE_RIGHT_PIN));
sendString += String(INTERVAL_CHAR) + String(digitalRead(IR_AVOIDANCE_LEFT_PIN)) + String(INTERVAL_CHAR);
Serial.println(sendString);
lastUploadDataTime = millis();
}
}
void serialEvent() {
while (Serial.available()) {
char inChar = (char)Serial.read();
inputStringBLE += inChar;
if (inChar == '\n') {
stringComplete = true;
Serial.println(inputStringBLE);
}
}
}
上傳完成后,代碼將開始運行。
迷你伺服將定位到 90°。
重要提示:如果需要,將面支架重新定位在伺服器上。
您現(xiàn)在可以使用串行命令測試機器人運動和動作模式。
以下是串行命令的說明:
#define ACTION_MOVE 'A' //control movement of the smartcar A#speedl#speedr#
#define ACTION_CAR_MODE 'H' //smartcar mode.
// H#MODE_NONE->stop
// H#MODE_GRAVITY->stop
// H#MODE_ULTRASONIC->obstacle avoidance with sonar and ir
// H#MODE_ULTRASONIC_NOIR->obstacle avoidance with sonar and no-ir
// H#MODE_TRACKING->tracking with ir
// H#MODE_FOLLOW->follow with sonar and ir
#define ACTION_BUZZER 'D' //control buzzer D#1# buzzer on / D#0# buzzer off
#define MODE_NONE 0
#define MODE_GRAVITY 1
#define MODE_ULTRASONIC 2
#define MODE_ULTRASONIC_NOIR 3
#define MODE_TRACKING 4
#define MODE_FOLLOW 5
編程 ESP32 CAM
現(xiàn)在是時候?qū)?ESP32 CAM 進行編程以傳輸實時視頻了。按照本教程使用 FTDI 編程器將 ESP32 CAM 連接到您的筆記本電腦/計算機 USB。
https://randomnerdtutorials.com/program-upload-code-esp32-cam/
創(chuàng)建一個名為\esp32cam-robot的文件夾并保存 app_httpd.cpp ,esp32cam-robot.ino。
在 Arduino IDE 上打開esp32cam-robot.ino文件。
在上傳代碼之前,您需要在以下變量中插入您的網(wǎng)絡憑據(jù):
const char* ssid = "REPLACE_WITH_YOUR_SSID";
const char* password = "REPLACE_WITH_YOUR_PASSWORD";
然后,單擊Arduino IDE 中的上傳按鈕
當您開始在調(diào)試窗口上看到一些點時,按下 ESP32-CAM 板載 RST 按鈕。
幾秒鐘后,代碼應該成功上傳到您的板上。
當您看到“ Done uploading ”消息時,您需要從 GND 移除 GPIO 0 并按下 RST 按鈕以運行您的新代碼。
在串行監(jiān)視器上,您應該看到類似這樣的內(nèi)容。記下 ESP32 IP 地址。
20:43:13.775 -> ..........
20:43:18.265 -> WiFi connected
20:43:18.265 -> Camera Ready! Use 'http://192.168.1.27' to connect
20:43:18.359 -> Starting web server on port: '80'
20:43:18.359 -> Starting stream server on port: '81'
安卓應用
您現(xiàn)在可以使用我開發(fā)的應用程序通過藍牙控制機器人并通過 wifi 觀看實時視頻。
?
- 構(gòu)建ESP32 MicroPython Wifi的機器人汽車
- Arduino機器人開源
- 如何制作ESP32 CAM板監(jiān)控機器人汽車
- Arduino繪圖機器人開源分享
- 基于ESP32 CAM的人工智能機器人 6次下載
- 基于ESP32-CAM的監(jiān)控RC機器人 1次下載
- Arduino機器人開源項目
- 使用Websockets創(chuàng)建自己的ESP32機器人汽車
- Arduino Uno迷你機器人開源分享
- Arduino機器人開源分享
- Arduino機器人Ludos開源
- PCB ESP32基礎機器人
- arduino / VScode+platformIO搭建esp32/esp8266編譯環(huán)境(一篇足矣)
- ESP32 開發(fā)之旅② Arduino For ESP32說明
- Arduino教學機器人的使用教程免費下載 37次下載
- ESP32能取代STM32嗎?哪個更好? 2373次閱讀
- 字節(jié)發(fā)布機器人領域首個開源視覺-語言操作大模型,激發(fā)開源VLMs更大潛能 360次閱讀
- 基于ESP32開發(fā)的螞蟻機器人方案 933次閱讀
- 機器人技術中常用的路徑規(guī)劃算法的開源庫 842次閱讀
- 什么是ESP32-CAM攝像頭? 2.1w次閱讀
- 使用ESP32實現(xiàn)UDP通信的方法 5723次閱讀
- ESP8266/ESP32自動下載原理 4249次閱讀
- 如何使用ESP32創(chuàng)建一個氣象站 3771次閱讀
- 如何使用Arduino制造一個自動平衡機器人 4429次閱讀
- 如何在ESP32上使用代碼運行TensorFlow模型? 4526次閱讀
- dfrobotSparki機器人套裝簡介 2064次閱讀
- dfrobotRomeo BLE多合一控制器簡介 2399次閱讀
- dfrobotRomeo 三合一Arduino兼容控制器介紹 2372次閱讀
- 協(xié)作機器人的起源_為什么需要協(xié)作機器人 8127次閱讀
- 機器人離線編程與機器人編程趨勢 6064次閱讀
下載排行
本周
- 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驅(qū)動電路設計》 溫德爾著
- 0.00 MB | 6656次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 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次下載 | 免費
評論
查看更多