1. 功能描述
? ? ?掃地機(jī)器人是現(xiàn)代家庭清潔的得力助手,能夠自主規(guī)劃清掃路徑,避開障礙物,有效覆蓋整個清潔區(qū)域。掃地機(jī)器人的出現(xiàn)極大地減輕了家庭清潔的負(fù)擔(dān),節(jié)省了時間和精力,它可以定期清理地面,確保家居環(huán)境的整潔和衛(wèi)生,讓家里變得更加舒適、無塵和宜居。
本文示例將實(shí)現(xiàn)R058a樣機(jī)掃地機(jī)器人在行進(jìn)過程中避障并清掃垃圾的功能。
2. 電子硬件
在這個示例中,我們采用了以下硬件,請大家參考:
主控板 | Basra主控板(兼容Arduino Uno)? |
擴(kuò)展板 | Bigfish2.1擴(kuò)展板? |
傳感器 |
觸須傳感器 |
近紅外傳感器 | |
電池 | 7.4V鋰電池 |
?3. 功能實(shí)現(xiàn)
編程環(huán)境:Arduino 1.8.19
下面提供一個實(shí)現(xiàn)掃地機(jī)器人在行進(jìn)過程中避障并清掃垃圾的參考程序(sketch_sep14a.ino):
/*------------------------------------------------------------------------------------
版權(quán)說明:Copyright 2023 Robottime(Beijing) Technology Co., Ltd. All Rights Reserved.
Distributed under MIT license.See file LICENSE for detail or copy at
https://opensource.org/licenses/MIT
by 機(jī)器譜 2023-09-14 https://www.robotway.com/
------------------------------*/
#include <Servo.h>
Servo left_wheel; // 左輪
Servo right_wheel; // 右輪
#define forward_speed_left 60 // 小車前進(jìn)時,左輪速度
#define forward_speed_right 120 // 小車前進(jìn)時,右輪速度
#define back_speed_left 120 // 小車后退時,左輪速度
#define back_speed_right 60 // 小車后退時,右輪速度
#define turnleft_speed_left 120 // 小車左轉(zhuǎn)時,左輪速度
#define turnleft_speed_right 120 // 小車左傳時,右輪速度
#define turnright_speed_left 60 // 小車右轉(zhuǎn)時,左輪速度
#define turnright_speed_right 60 // 小車右轉(zhuǎn)時,右輪速度
#define stop_left 90 // 小車停止時,左輪速度
#define stop_right 90 // 小車停止時,右輪速度
#define obstacle_threshold 500 // 觸須傳感器閾值
#define ir_threshold 800 // 近紅外傳感器閾值
int left_obstacle_sensor; // 左側(cè)觸須傳感器
int right_obstacle_sensor; // 右側(cè)觸須傳感器
int ir_sensor; // 近紅外傳感器
void setup() {
delay(50);
Serial.begin(9600);
left_wheel.attach(3); // 定義左右輪引腳
right_wheel.attach(4);
pinMode(A0, INPUT); // 左邊觸須傳感器接口
pinMode(A2, INPUT); // 右邊觸須傳感器接口
pinMode(A3, INPUT); // 前面近紅外傳感器接口
}
void loop() {
left_obstacle_sensor = analogRead(A0); // 讀取左邊觸須傳感器值
right_obstacle_sensor = analogRead(A2); // 讀取右邊觸須傳感器值
ir_sensor = analogRead(A3); // 讀取近紅外傳感器值
// 如果左邊傳感器檢測到障礙物,執(zhí)行后退并向右轉(zhuǎn)操作
if (left_obstacle_sensor > obstacle_threshold) {
backRight();
}
// 如果右邊傳感器檢測到障礙物,執(zhí)行后退并向左轉(zhuǎn)操作
else if (right_obstacle_sensor > obstacle_threshold) {
backLeft();
}
// 如果前面近紅外傳感器檢測到障礙物,執(zhí)行后退操作
else if (ir_sensor > ir_threshold) {
back();
}
// 如果都沒有檢測到障礙物,執(zhí)行前進(jìn)操作
else {
forward();
}
}
// 小車前進(jìn)
void forward() {
left_wheel.write(forward_speed_left);
right_wheel.write(forward_speed_right);
}
// 小車后退
void back() {
left_wheel.write(back_speed_left);
right_wheel.write(back_speed_right);
}
// 小車后退左轉(zhuǎn)
void backLeft() {
left_wheel.write(back_speed_left);
right_wheel.write(turnleft_speed_right);
}
// 小車后退右轉(zhuǎn)
void backRight() {
left_wheel.write(turnright_speed_left);
right_wheel.write(back_speed_right);
}
// 小車停止
void stop() {
left_wheel.write(stop_left); // 停止
right_wheel.write(stop_right); // 停止
}
?4. 擴(kuò)展樣機(jī)
本樣機(jī)有一些簡單的擴(kuò)展案例,如下圖所示將舵機(jī)更換為直流電機(jī):
文章來源:http://www.zghlxwxcb.cn/news/detail-744554.html
程序源代碼及樣機(jī)3D文件等資料詳見 掃地機(jī)器人 文章來源地址http://www.zghlxwxcb.cn/news/detail-744554.html
到了這里,關(guān)于機(jī)器人制作開源方案 | 掃地機(jī)器人的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!