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

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

用Arduino做一個(gè)自動割草機(jī)

jf_L7xG2ijs ? 來源:IoT前哨站 ? 2023-07-07 14:02 ? 次閱讀

這個(gè)項(xiàng)目中,我們將用Arduino制作一個(gè)自動割草機(jī)。該機(jī)器可以自動修剪院子里長高的草。如果有障礙物,它會自動改變方向,有助于減少人力。

本文提供了項(xiàng)目的基本概述,以及制作Arduino割草機(jī)器人所需的組件。提供了電路原理圖和Arduino源代碼,以便簡化組裝和編程過程。

注意:這個(gè)項(xiàng)目不是玩具,它包含鋒利的刀片。如果不小心使用,可能會造成嚴(yán)重的傷害。不要讓它無人看管,刀片應(yīng)正確固定。操作前檢查一下。

材料清單

我們需要以下組件:

1、 Arduino UNO
2、 L293D電機(jī)驅(qū)動盾
3、 超聲波傳感器HC-SR04
4、 超聲波傳感器外殼/支架
6、 直流減速電機(jī) x4
7、 BLDC電機(jī)100KV
8、 舵機(jī)SG-90
9、 ESC模塊
10、舵機(jī)測試儀
11、3針滑動開關(guān)
12、X型十字支架
13、機(jī)器人底盤
14、11.1V鋰電池

什么是割草機(jī)器人(割草機(jī))?

割草機(jī)器人是一種用于自動修剪和維護(hù)草坪的設(shè)備。這些機(jī)器人使用傳感器和算法來導(dǎo)航和修剪草坪,并且可以根據(jù)草坪的生長速度或特定的時(shí)間表來修剪草坪。

一些割草機(jī)器人還配備了諸如障礙物檢測、防盜保護(hù)和通過智能手機(jī)應(yīng)用程序遠(yuǎn)程控制等功能。它們近年來越來越受歡迎,因?yàn)榭梢怨?jié)省時(shí)間和精力。

電路和連接

大致連接:

image.png

核心組件:

image.png

源代碼/程序

AFMotor Library:
https://github.com/adafruit/Adafruit-Motor-Shield-library

NewPing Library:
https://github.com/microflo/NewPing

需要編譯到Arduino UNO開發(fā)板中的代碼:


#include   
#include 
#include  
 
#define TRIG_PIN A0 
#define ECHO_PIN A1 
#define MAX_DISTANCE 200 
#define MAX_SPEED 190 
#define MAX_SPEED_OFFSET 20
 
NewPing sonar(TRIG_PIN, ECHO_PIN, MAX_DISTANCE); 
 
AF_DCMotor motor1(1, MOTOR12_1KHZ); 
AF_DCMotor motor2(2, MOTOR12_1KHZ);
AF_DCMotor motor3(3, MOTOR34_1KHZ);
AF_DCMotor motor4(4, MOTOR34_1KHZ);
Servo myservo;   
 
boolean goesForward=false;
int distance = 100;
int speedSet = 0;
 
void setup() {
 
  myservo.attach(10);  
  myservo.write(115); 
  delay(2000);
  distance = readPing();
  delay(100);
  distance = readPing();
  delay(100);
  distance = readPing();
  delay(100);
  distance = readPing();
  delay(100);
}
 
void loop() {
 int distanceR = 0;
 int distanceL =  0;
 delay(40);
 
 if(distance<=15)
 {
  moveStop();
  delay(100);
  moveBackward();
  delay(300);
  moveStop();
  delay(200);
  distanceR = lookRight();
  delay(200);
  distanceL = lookLeft();
  delay(200);
 
  if(distanceR>=distanceL)
  {
    turnRight();
    moveStop();
  }else
  {
    turnLeft();
    moveStop();
  }
 }else
 {
  moveForward();
 }
 distance = readPing();
}
 
int lookRight()
{
    myservo.write(50); 
    delay(500);
    int distance = readPing();
    delay(100);
    myservo.write(115); 
    return distance;
}
 
int lookLeft()
{
    myservo.write(170); 
    delay(500);
    int distance = readPing();
    delay(100);
    myservo.write(115); 
    return distance;
    delay(100);
}
 
int readPing() { 
  delay(70);
  int cm = sonar.ping_cm();
  if(cm==0)
  {
    cm = 250;
  }
  return cm;
}
 
void moveStop() {
  motor1.run(RELEASE); 
  motor2.run(RELEASE);
  motor3.run(RELEASE);
  motor4.run(RELEASE);
  } 
  
void moveForward() {
 
 if(!goesForward)
  {
    goesForward=true;
    motor1.run(FORWARD);      
    motor2.run(FORWARD);
    motor3.run(FORWARD); 
    motor4.run(FORWARD);     
   for (speedSet = 0; speedSet < MAX_SPEED; speedSet +=2) 
   {
    motor1.setSpeed(speedSet);
    motor2.setSpeed(speedSet);
    motor3.setSpeed(speedSet);
    motor4.setSpeed(speedSet);
    delay(5);
   }
  }
}
 
void moveBackward() {
    goesForward=false;
    motor1.run(BACKWARD);      
    motor2.run(BACKWARD);
    motor3.run(BACKWARD);
    motor4.run(BACKWARD);  
  for (speedSet = 0; speedSet < MAX_SPEED; speedSet +=2) 
  {
    motor1.setSpeed(speedSet);
    motor2.setSpeed(speedSet);
    motor3.setSpeed(speedSet);
    motor4.setSpeed(speedSet);
    delay(5);
  }
}  
 
void turnRight() {
  motor1.run(FORWARD);
  motor2.run(FORWARD);
  motor3.run(BACKWARD);
  motor4.run(BACKWARD);     
  delay(500);
  motor1.run(FORWARD);      
  motor2.run(FORWARD);
  motor3.run(FORWARD);
  motor4.run(FORWARD);      
} 
 
void turnLeft() {
  motor1.run(BACKWARD);     
  motor2.run(BACKWARD);  
  motor3.run(FORWARD);
  motor4.run(FORWARD);   
  delay(500);
  motor1.run(FORWARD);     
  motor2.run(FORWARD);
  motor3.run(FORWARD);
  motor4.run(FORWARD);


}

測試

上傳代碼后,你可以把機(jī)器人帶到野外,也許在高草地區(qū)。高草地區(qū)可以是一個(gè)很好的測試選擇。

打開機(jī)器人上的開關(guān),確保電源為Arduino板提供正確的電壓,并且所有組件都正確連接。通過手動控制機(jī)器人的運(yùn)動來測試機(jī)器人的電機(jī),確保機(jī)器人運(yùn)動平穩(wěn)準(zhǔn)確。

測試機(jī)器人的傳感器,在其路徑上放置障礙物,并確保能避開它們。此外,檢查傳感器的范圍和靈敏度,以確保機(jī)器人可以檢測到草的存在。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 傳感器
    +關(guān)注

    關(guān)注

    2542

    文章

    50241

    瀏覽量

    750074
  • 機(jī)器人
    +關(guān)注

    關(guān)注

    210

    文章

    27989

    瀏覽量

    205536
  • 電機(jī)
    +關(guān)注

    關(guān)注

    141

    文章

    8833

    瀏覽量

    144576
  • BLDC
    +關(guān)注

    關(guān)注

    202

    文章

    776

    瀏覽量

    96610
  • Arduino
    +關(guān)注

    關(guān)注

    187

    文章

    6455

    瀏覽量

    186348

原文標(biāo)題:用Arduino做一個(gè)自動割草機(jī)

文章出處:【微信號:IoT前哨站,微信公眾號:IoT前哨站】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    割草機(jī)的硬件主要是由哪些部分組成的?

    割草機(jī)的硬件主要是由哪些部分組成的?采用了哪些器件?分別實(shí)現(xiàn)了什么功能?
    發(fā)表于 07-13 06:29

    牛!當(dāng)雜草遇到“黑科技”,智能割草機(jī)完勝!

    本帖最后由 草帽王路飛 于 2021-10-15 15:50 編輯 雜草叢生,人工除草太麻煩!今天,給大家介紹款神器『智能割草機(jī)』既能美化草坪,又能解放雙手,省時(shí)省力!、功能設(shè)定功能功能
    發(fā)表于 10-15 15:49

    無感鋰電割草機(jī)視頻

    無感FOC外轉(zhuǎn)子割草機(jī)7000轉(zhuǎn) https://v.youku.com/v_show/id_XNTg0Nzg5NjgwOA==.html
    發(fā)表于 04-09 22:24

    自動割草機(jī)器人的設(shè)計(jì)

    摘要! 介紹自動割草機(jī)器人的設(shè)計(jì)和實(shí)現(xiàn)" 其硬件系統(tǒng)主要包括單片機(jī)系統(tǒng)#電機(jī)控制器以及傳感器系統(tǒng)三部分" 軟件部分實(shí)現(xiàn)單片機(jī)系統(tǒng)的控制以及割草
    發(fā)表于 11-22 15:24 ?30次下載

    怎樣給割草機(jī)裝上太陽能

    怎樣給割草機(jī)裝上太陽能
    的頭像 發(fā)表于 09-11 11:21 ?4276次閱讀

    海瑞思科技?xì)饷苄苑浪畽z測割草機(jī)配件測試實(shí)例

    如今相信大家對割草機(jī)定不陌生,它是種用于修剪草坪、植被的機(jī)械工具,發(fā)動機(jī)的輸出軸上裝有刀片,刀片利用發(fā)動機(jī)高速旋轉(zhuǎn)割斷草葉,能夠節(jié)省作業(yè)時(shí)間,大大降低人力成本。 待測產(chǎn)品:割草機(jī)
    發(fā)表于 02-16 17:40 ?361次閱讀

    自動割草機(jī)器人主控系統(tǒng)的結(jié)構(gòu)

    運(yùn)動系統(tǒng)主要通過單片機(jī)給出的多路PWM信號對自動割草機(jī)器人的行動電機(jī)以及割草電機(jī)進(jìn)行控制。傳感器系統(tǒng)由電子籬笆傳感器、光電開關(guān)傳感器、碰撞開關(guān)傳感器、雨水傳感器、無線遙控接收模塊等組成
    的頭像 發(fā)表于 03-29 11:06 ?3749次閱讀
    <b class='flag-5'>自動</b><b class='flag-5'>割草機(jī)</b>器人主控系統(tǒng)的結(jié)構(gòu)

    基于Arduino Mega 2560的自主機(jī)器人割草機(jī)

    決定 Arduino Mega 2560 板自己建造我的機(jī)器人割草機(jī)。整個(gè)過程花了很長時(shí)間,經(jīng)過些實(shí)驗(yàn),現(xiàn)在配置完成,Mowerino 工作正常。請繼續(xù)關(guān)注這個(gè)項(xiàng)目,因?yàn)槲蚁朐谖磥?/div>
    發(fā)表于 12-20 15:45 ?5次下載

    自動割草機(jī)v1開源項(xiàng)目

    電子發(fā)燒友網(wǎng)站提供《自動割草機(jī)v1開源項(xiàng)目.zip》資料免費(fèi)下載
    發(fā)表于 02-03 11:37 ?6次下載
    <b class='flag-5'>自動</b><b class='flag-5'>割草機(jī)</b>v1開源項(xiàng)目

    無刷電機(jī)驅(qū)動器直流無刷綠籬機(jī)園林工具割草機(jī)方案

    割草機(jī),又叫打草機(jī)、割灌機(jī),用途廣泛。主要應(yīng)用在園林裝飾修剪、草地綠化修剪、城市街道、綠化景點(diǎn)、田園修剪、田地除草,特別是公園內(nèi)的草地和草原,足球場等其他用草場地,私人別墅花園,以及農(nóng)林畜牧場地植被
    發(fā)表于 03-10 10:12 ?9次下載
    無刷電機(jī)驅(qū)動器直流無刷綠籬<b class='flag-5'>機(jī)</b>園林工具<b class='flag-5'>割草機(jī)</b>方案

    基于ES32F0101的鋰電割草機(jī)應(yīng)用

    修剪效果參差不齊,整體美觀度得不到保證。電動割草機(jī)的出現(xiàn)解決了這些問題。電動割草機(jī)修剪迅速,效果統(tǒng),而小型鋰電池割草機(jī)更因?yàn)檩p便,體積小,便于攜帶,功能齊全,
    的頭像 發(fā)表于 03-27 15:52 ?956次閱讀

    機(jī)器人割草機(jī)開源分享

    電子發(fā)燒友網(wǎng)站提供《機(jī)器人割草機(jī)開源分享.zip》資料免費(fèi)下載
    發(fā)表于 06-15 14:19 ?10次下載
    機(jī)器人<b class='flag-5'>割草機(jī)</b>開源分享

    EPSON愛普生高精度慣性導(dǎo)航模塊賦能無人割草機(jī)新賽道

    對于海外的消費(fèi)者來說,家庭割草服務(wù)直是個(gè)難題。無人自動割草機(jī)很好地解決了這個(gè)痛點(diǎn)。但是無人
    的頭像 發(fā)表于 12-19 08:29 ?807次閱讀
    EPSON愛普生高精度慣性導(dǎo)航模塊賦能無人<b class='flag-5'>割草機(jī)</b>新賽道

    愛普生高精度慣性導(dǎo)航模塊賦能無人割草機(jī)新賽道

    愛普生高精度慣性導(dǎo)航模塊賦能無人割草機(jī)新賽道 對于海外的消費(fèi)者來說,家庭割草服務(wù)直是個(gè)難題。無人自動
    的頭像 發(fā)表于 04-01 15:52 ?480次閱讀
    愛普生高精度慣性導(dǎo)航模塊賦能無人<b class='flag-5'>割草機(jī)</b>新賽道

    XV7181BB陀螺儀傳感器在自動割草機(jī)中的應(yīng)用

    自動割草機(jī)作為現(xiàn)代園藝設(shè)備的創(chuàng)新之,正在改變我們的庭院維護(hù)方式。為了在各種地形條件下實(shí)現(xiàn)穩(wěn)定、高效的割草,自動
    的頭像 發(fā)表于 06-12 11:05 ?299次閱讀
    XV7181BB陀螺儀傳感器在<b class='flag-5'>自動</b><b class='flag-5'>割草機(jī)</b>中的應(yīng)用