在Arduino上創建第一個機器人的經驗(機器人-“獵人”)

你好

在這篇文章中,我想描述使用 Arduino 組裝我的第一個機器人的過程。 這些材料對於像我這樣想要製作某種「自動運行的購物車」的初學者很有用。 這篇文章描述了我對各種細微差別的補充的工作階段。 文章末尾給出了最終程式碼(很可能不是最理想的)的連結。

在Arduino上創建第一個機器人的經驗(機器人-“獵人”)

只要有可能,我都會讓我的兒子(8 歲)參與其中。 到底什麼對它有效,什麼無效——我已經專門用了這篇文章的一部分來討論這個問題,也許它對某人有用。

機器人的一般描述

首先,簡單介紹一下機器人本身(這個想法)。 我一開始並不想組裝一些標準的東西。 同時,這套組件非常標準——底盤、引擎、超音波感測器、線路感測器、LED、高音揚聲器。 最初,機器人就是從這套「湯具」發明出來的,用來守護自己的領地。 他向越過圓圈線的違規者駛去,然後返回中心。 然而,這個版本需要一條畫線,加上額外的數學運算才能始終留在圓圈中。

因此,經過一番思考,我改變了想法,決定做一個「獵人」機器人。 一開始,它繞著軸旋轉,選擇附近的目標(人)。 如果偵測到“獵物”,“獵人”就會打開閃光燈和警報器,並開始向它駛去。 當人們走開/逃跑時,機器人會選擇一個新目標並追逐它,依此類推。 這樣的機器人不需要有限的圈子,可以在空曠的地方工作。

正如您所看到的,這很像一場追趕遊戲。 儘管最終機器人的速度不夠快,但它誠實地與周圍的人互動。 小孩特別喜歡(但有時好像要踩到一樣,心跳加速…)。 我認為這是普及技術設計的一個很好的解決方案。

機器人結構

所以,我們已經決定了這個想法,讓我們繼續吧 佈局。 元素列表由機器人應該能夠執行的操作組成。 這裡的一切都很明顯,所以讓我們立即看一下編號:

在Arduino上創建第一個機器人的經驗(機器人-“獵人”)

機器人的「大腦」是一塊 arduino uno 板 (1); 是從中國訂購的一套。 對於我們的目的來說,這已經足夠了(我們關注的是使用的引腳數量)。 我們從同一套件中取出了一個現成的底盤 (2),其上連接有兩個驅動輪 (3) 和一個後輪(可自由旋轉)(4)。 該套件還包括一個現成的電池盒 (5)。 機器人前面有超音波感測器(HC-SR04)(6),後面有一個馬達驅動器(L298N)(7),中間有一個LED閃光燈(8),還有一個小側面有一個高音揚聲器(9)。

在佈局階段,我們查看:

- 以便一切都合適
- 保持平衡
- 合理佈局

我們的中國同事已經為我們做了部分工作。 因此,笨重的電池艙被放置在中央,驅動輪大約位於其下方。 所有其他板都很輕,可以放置在外圍。

細微差別:

  1. 套件中的底盤有很多工廠孔,但我仍然沒有弄清楚它們的邏輯是什麼。 引擎和電池組的固定沒有問題,然後“調整”開始,鑽新孔以固定這個或那個板。
  2. 儲存區域的黃銅架和其他緊固件很有幫助(有時我們必須把它們拿出來)。
  3. 我將每塊板上的母線穿過夾具(再次,我在儲藏室中找到了它們)。 非常方便,所有電線都很好地放置,不會晃動。

單獨的區塊

現在我將通過 區塊 我會親自告訴你每一個。

電池倉

顯然,機器人必須擁有良好的能源。 選項可能有所不同,我選擇了 4 節 AA 電池的選項。 它們總共提供大約 5V 電壓,並且該電壓可以直接施加到 arduino 板的 5V 引腳(繞過穩定器)。

當然,我有一些謹慎,但這個解決方案是相當可行的。

由於到處都需要電源,為了方便起見,我在機器人的中心製作了兩個連接器:一個「分配」地面(右側),第二個 - 5 V(左側)。

在Arduino上創建第一個機器人的經驗(機器人-“獵人”)

馬達及驅動器

首先,關於安裝發動機。 此安裝座是工廠製造的,但具有較大的公差。 換句話說,引擎可能左右擺動幾毫米。 對於我們的任務來說,這並不重要,但在某些地方它可能會產生影響(機器人將開始向側面移動)。 為了以防萬一,我將引擎嚴格平行設定並用膠水固定。

在Arduino上創建第一個機器人的經驗(機器人-“獵人”)

正如我上面所寫,為了控制電機,使用了 L298N 驅動器。 根據文檔,每個馬達都有三個引腳:一個用於改變速度,一對引腳用於旋轉方向。 這裡有一點很重要。 事實證明,如果電源電壓為 5 V,那麼速度控制根本不起作用! 也就是說,要嘛根本不轉,要嘛轉到最大。 這個功能讓我「消磨」了好幾個晚上。 最後,我在一個論壇上的某處發現了一個提及。

一般來說,我在轉動機器人時需要較低的轉速,以便它有時間掃描空間。 但是,由於這個想法沒有任何結果,我不得不採取不同的做法:一個小轉彎 - 停止 - 轉彎 - 停止,等等。同樣,不是那麼優雅,但可行。

我還要在這裡補充一點,每次追逐後,機器人都會選擇一個隨機方向進行新的轉彎(順時針或逆時針)。

超聲波傳感器

在Arduino上創建第一個機器人的經驗(機器人-“獵人”)

我們必須尋找折衷解決方案的另一個硬體。 超音波感測器在真實障礙物上產生不穩定的數字。 事實上,這是預料之中的。 理想情況下,它可以在比賽中光滑、均勻和垂直的表面上發揮作用,但如果有人的腿在它面前“閃現”,就需要引入額外的處理。

這樣的處理我設置 中值濾波器 三項罪名。 基於對真實兒童的測試(測試期間沒有兒童受到傷害!),事實證明這足以使數據標準化。 這裡的物理原理很簡單:我們有從 必要的 物體(給出所需的距離)並從更遠的物體(例如牆壁)反射。 後者是 45、46 形式的測量中的隨機發射, 230,46,46,45,45, 310、 46... 中值濾波器濾除的就是這些。

經過所有處理後,我們得到了到最近物體的距離。 如果小於某個閾值,那麼我們就會打開警報,徑直駛向「入侵者」。

閃光器和警報器

也許是上述所有元素中最簡單的元素。 它們可以在上面的照片中看到。 這裡沒有什麼可寫的,所以現在讓我們繼續討論硬件 .

控製程式

我不認為詳細描述程式碼有什麼意義,誰需要它 - 連結位於文章末尾,那裡的所有內容都非常可讀。 但最好能解釋一下一般結構。

我們必須了解的第一件事是機器人是即時設備。 更準確地說,要記住,因為以前和現在我仍然從事電子業工作。 所以,我們立即忘了挑戰 延遲(),他們喜歡在範例草圖中使用它,並且它只是將程式「凍結」指定的時間段。 相反,正如經驗豐富的人建議的那樣,我們為每個區塊引入計時器。 所需的時間間隔已過 - 操作已執行(增加 LED 的亮度、開啟引擎等)。

定時器可以互連。 例如,高音揚聲器與閃光燈同步工作。 這稍微簡化了程序。

自然地,我們將一切分解為單獨的功能(閃光燈、聲音、轉彎、前進等)。 如果你不這樣做,那麼你將無法弄清楚什麼來自何處以及來自何處。

教育學的細微差別

我在晚上的空閒時間做了上述所有事情。 悠閒地,我在機器人上度過了大約三個星期的時間。 這本來可以結束,但我也答應告訴你有關與孩子一起工作的事情。 這個年紀能做什麼呢?

按照指示工作

我們首先分別檢查每個細節 - LED、高音揚聲器、馬達、感測器等。有大量現成的範例 - 一些在開發環境中,其他可以在網路上找到。 這當然讓我很高興。 我們獲取代碼,連接部件,確保其工作正常,然後開始更改它以適應我們的任務。 孩子在我的監督下根據圖表進行連接。 這很好。 您還需要能夠嚴格按照指示進行工作。

工作順序(“從特殊到一般”)

這是一個難點。 您需要了解一個大專案(「製造機器人」)由小任務(「連接感測器」、「連接馬達」...)組成,而這些任務又由更小的步驟組成(「找到一個機器人」)。程式,”“連接板。””,“下載韌體”...)。 透過執行或多或少可以理解的較低層級的任務,我們「關閉」中層的任務,並由此形成整體結果。 我解釋過,但我認為不會很快實現。 大概是在青春期的某個地方。

設備

鑽孔、螺紋、螺絲、螺帽、焊接和松香的氣味——如果沒有它們,我們會怎麼樣? 孩子獲得了“使用烙鐵工作”的基本技能 - 他成功焊接了幾個連接(我幫了一點忙,我不會隱藏它)。 不要忘記安全說明。

電腦工作

我為機器人編寫了程序,但仍然取得了一些令人滿意的結果。

第一:英語。 他們在學校剛開始學習,所以我們很難弄清楚 pishalka、migalka、yarkost 和其他音譯是什麼。 至少我們明白這一點。 我故意不使用母語英語單詞,因為我們還沒有達到這個水平。

第二:高效率工作。 我們教授熱鍵組合以及如何快速執行標準操作。 當我們編寫程式時,我和兒子會定期交換位置,我說需要做什麼(替換、搜尋等)。 我必須一遍又一遍地重複:「雙擊選擇」、「按住Shift」、「按住Ctrl」等等。 這裡的學習過程並不快,但我認為技能會逐漸沉積在「皮層下」。

隱藏文字可以說,上面的內容幾乎是顯而易見的。 但是,說實話,今年秋天我有機會在一所學校教九年級的電腦科學。 那太糟了。 學生不知道 Ctrl + Z、Ctrl + C 和 Ctrl + V 等基本功能,不知道按住 Shift 的同時選擇文字或雙擊單字等。 儘管事實上他們已經是學習電腦科學的第三年了……得出你自己的結論。

第三:盲打。 我把程式碼中的註解委託給孩子去敲(讓他練習)。 我們立即正確地放置了雙手,使手指逐漸記住了琴鍵的位置。

正如您所看到的,我們才剛剛開始。 我們將繼續磨練我們的技能和知識;它們將對生活有用。

順便說一句,關於未來…

進一步的發展

機器人被製造出來,可以驅動、閃爍和發出蜂鳴聲。 現在怎麼辦? 受到我們所取得成就的啟發,我們計劃進一步完善它。 有一個想法是製作一個遙控器——就像月球車一樣。 坐在遙控器前控制在完全不同的地方行駛的機器人的運動會很有趣。 但這將會是一個不同的故事...

最後,其實就是本文的英雄(影片點擊):

在Arduino上創建第一個機器人的經驗(機器人-“獵人”)

謝謝你的關注!

程式碼連結

來源: www.habr.com

添加評論