---
# System prepended metadata

title: 海龜繪圖機器人開發
tags: [伴伴學共創專案]

---

---
tags: 伴伴學共創專案
---
![](https://hackmd.io/_uploads/Hk809zQUh.jpg)

# 海龜繪圖機器人
## 簡介
什麼是海龜機器人？該概念可以追溯到威廉·沃爾特（William Walter）在 1940 年代進行的機器人工作，該工作研究了簡單系統中的複雜行為。海龜機器人通常移動緩慢，轉彎半徑小，可以追踪顯示其隨時間變化的行為的設計。它們是很好的教學輔助工具，因為它們的編程輸出可以在視覺上看到。許多編程語言都內置了“海龜圖形”。海龜圖形還可以用於研究高級主題，例如L系統或仿射幾何學。

#OTTR
＃口丁海龜

目標用 Raspberry Pi Pico 來完成。


這位是神經生物學家威廉格雷華特（ William Gray Walter）
他在上世紀四十年代根據腦神經連結原理打造了史上第一、二部「電子生物」並取名為Elmer 和 Elsie。其他人將他的機器生物暱稱為「烏龜」或是「海龜」。
後來在六十年代的電腦程式LOGO語言以此為靈感，內建了「海龜繪圖」的繪圖系統，用來教育小小孩的電腦程式概念。
直到八十年代，再進一步將「海龜繪圖」實體化，讓微控制器打造的海龜機器人，背著繪圖筆在紙上真實畫圖。
直到現代的python就成為眾所周知的turtle函式庫了。
為什麼用海龜來繪圖呢？
因為海龜在海灘上爬行的時候會留下長長的軌跡啊～
https://www.facebook.com/pondahai/posts/pfbid0331FTaAWZifqVcM4mVqwJfEer2wbn5UtYFMFaE95JbL5Myp5SDkZ4d7jwKQ9B9iNkl?locale=zh_TW

## 參考資料
[The History of Turtle Robots](https://roamerrobot.tumblr.com/post/23079345849/the-history-of-turtle-robots)

[CS 161 Lab B - Turtle Graphics](https://faculty.washington.edu/joelross/courses/archive/s15/cs161/lab/b/)

[Open Source Turtle Robot (OSTR)](https://www.instructables.com/OSTR/)

[Doodle Bot](https://mitmedialab.github.io/doodlebot/make.html)

https://joshburker.com/logoturtle/LogoTurtle.html
計畫
[Mirobot v2 drawing turtle robot kit](https://openstem.com.au/store/digital-technologies/digitech-physical-resources/mirobot-v2-drawing-turtle-robot-kit)

[Open Source Turtle Robot Kit](https://www.tindie.com/products/makersbox/open-source-turtle-robot-kit/)

[Disney's Beachbot is an artistic robot turtle that can draw in the sand](https://www.engadget.com/2015-01-12-disney-research-beachbot-art.html?guccounter=1)

https://github.com/aspro648/OSTR


## 材料
https://github.com/aspro648/OSTR/blob/master/V2/BOM.md

* [N20 萬向輪](https://shopee.tw/iCShop－N20-萬向輪●368030501365●滾珠輪-全向輪-智能小車-車輪-機器人-i.15050169.18913498233?sp_atk=60077483-9e8e-45b2-85cb-8839d9c35ae8&xptdk=60077483-9e8e-45b2-85cb-8839d9c35ae8) 20元
* iCShop－W420 鋼珠萬向輪●368040500022●滾珠輪 全向輪 智能小車 車輪 機器人 適合三號電池盒的高度
* [28BYJ-48-5V]
![](https://hackmd.io/_uploads/ryDutc_V2.png)
 需要畫出尺寸
 tinkercad有模型耶！！
![](https://hackmd.io/_uploads/SySFks_Nh.png)

(https://shopee.tw/%E3%80%90UCI%E9%9B%BB%E5%AD%90%E3%80%91(K-4)-28BYJ-48-%E6%AD%A5%E9%80%B2%E9%A6%AC%E9%81%945V-12V-4%E7%9B%B85%E7%B7%9A-%E6%B8%9B%E9%80%9F%E9%9B%BB%E6%A9%9F-i.2305548.73316735) 步進馬達

## 28byj48步進馬達以及ULN2003
https://lastminuteengineers.com/28byj48-stepper-motor-arduino-tutorial/
  
  
* 410 橡皮輪子
這個是「雙Ｄ頭」確定可以連接步進馬達嗎？
應該可以
![](https://hackmd.io/_uploads/BJq4tcOE3.png)

https://shopee.tw/product/405745673/13252436802?gclid=CjwKCAjw3ueiBhBmEiwA4BhspAdbg-cu33HN6mc_yFr0yvDzhZxDeI42LfXp92V6Eaug2AMrGv7TTBoC6uMQAvD_BwE

* 五公分的輪子


* 5908 for 28byj-48
    * 直徑6公分
    * 
![截圖 2024-08-19 下午12.43.32](https://hackmd.io/_uploads/ryvYarxsC.png)

    * 

- [ULN2003 IC](https://shopee.tw/%E3%80%90UCI%E9%9B%BB%E5%AD%90%E3%80%91(C-4-8)-ULN2003A-2003-ULN2003-i.2305548.31837617) 

## 韌體
https://github.com/aspro648/OSTR/tree/master/V2/firmware/TurtleV2.2%20ItsyBitsyM4%20CircuitPythonV6

## 想像圖
![](https://hackmd.io/_uploads/B1alNjd4n.png)
注意輪子高度與馬達高度
原設計因為是把電池放在底板下方
所以輪子訂製（猜測）

## 關於這個想像圖幾個設計想法說明
![](https://hackmd.io/_uploads/B1N7lzq4n.png)
* 所有零件都是現成件。
* 機體採立體列印。
* 筆放在輪軸軸心，這樣轉彎才能在一點。
* 電池放在下方，讓下筆有重量。
* 電路板集中在萬向輪與兩個動輪形成的三角範圍，將重量盡量集中在三角範圍中間，避免海龜急停時傾倒。
* 抓筆的機制採下筆用橡皮筋牽引，抬筆時用馬達搖臂抬升(或者顛倒)。
* 用四色原子筆。

## 開發紀錄
### 單晶片版的海龜程式庫
修改自
https://github.com/russhughes/turtleplotbot3
中的turtleplotbot.py, turtleplot.py
這個程式庫的作者Russ Hughes 修改自原 始python 中的 turtle.py
原始的 turtle.py 作者是 Gregor Lingl
原本是利用 tkinter 程式庫作為繪圖核心
RH 把 turtle.py 做修改後
再把其中_turn, _move, _pen, _done 四個副程式串接到單晶片的行為
這樣就可以實現原本只能在電腦螢幕移動的海龜
變成在現實世界驅動單晶片來移動

使用的時候只要把turtleplotbot.py, turtleplot.py
放在micropython 的lib 資料夾中
這樣主程式就可以像在電腦上寫turtle一樣寫單晶片的turtle

我把這組程式修改成可在 rp2040 運作，並且驅動步進馬達用來移動與伺服馬達用來拿筆。

### 20230528實驗結果
使用 4 顆 AA 電池驅動，四顆 AA 產生 6V 電壓，會超過 pico 的 5.5V 上限，我用 1N4001 串在電池與 VBUS 之間，這樣可以讓 1N4001 壓降 1V 左右，再利用 pico 內部的 MBR120 蕭特基二極體再降一些，最後 VSYS 量到電壓不到 5V，不至於造成傷害。
只有實現移動，還沒有實現抓筆。
還沒有校正。
兩個輪子胎紋不一樣。
最重要的：這種輪胎與步進馬達的軸，雖然都是雙 D，但是軸的平面差0.2mm，圓弧面差 0.1mm。我在想是否可以找到薄金屬片做鈑金件，套在馬達軸上。

課程規劃:
* 繪圖
* 迷宮或是障礙挑戰賽

繪圖原理
迪卡兒座標

指令
goto 這指令會越寫越歪，無法回到原點。

經典範例
碎形圖案
謝爾冰濕機三角

不做無線傳輸上傳程式碼的理由
希望學員能用有線上傳程式碼，然後帶著自己的海龜到紙上繪圖。

輪子直徑 65 mm 

### 20230705 新骨架
https://www.tinkercad.com/things/1U5chW7X9Hq
進一步縮小體積。
組裝後測試，原輪胎兩顆不一樣，換成一樣的。
Hello圖案測試，整個往右上角飄。
推測是換了輪胎之後，左輪減少太多（校正機制是僅調整左輪，上一版本左輪步數有略為減少）。

![](https://hackmd.io/_uploads/H1L_zo7F2.png)
經過組裝之後，修改設計。
https://www.tinkercad.com/things/1U5chW7X9Hq

1. 主控板使用迷你麵包板支撐，底下再設計一框架盛放麵包板，
2. 使用框架保留彈性，一方面避免與底板螺絲干涉，另一方面將來可安裝專用主控電路板
![](https://hackmd.io/_uploads/SJn5GomKh.png)
![](https://hackmd.io/_uploads/B1ZeQomtn.png)

### 

[海龜點點名](https://www.facebook.com/SimpleinfoDesign/posts/pfbid025uuWLMXuZREguza7xtVdj9FnaM54uKrnLXfzbKtLhthGNEo9A8SncknQbMCYq1oLl?locale=zh_TW)

### 202030730工作坊@COSCUP
https://hackmd.io/iUad1x4TQI6JMnYFvtrF5Q

### 歷史資料
在網上找到一個網站介紹海龜機器人歷史
https://cyberneticzoo.com/cyberneticanimals/1969-the-logo-turtle-seymour-papert-marvin-minsky-et-al-american/
這一篇文章敘述了海龜繪圖機器人的歷史
並有許多豐富有趣的照片
內容有點雜，看不太懂，大致上是從Logo語言開始介紹
Logo語言是由 Wally Feurzeig, Seymour Papert, and Cynthia Solomon.等人開發的電腦程式語言，目的是讓學生可以在螢幕或是實體世界（透過海龜機器人）以指令方式控制繪圖游標移動並繪圖
Papert提出一種名為"body-syntonic reasoning"的概念，即是讓學生想像自己是螢幕上那隻海龜，並且理解、預測與推理海龜的下一步行動
但是後來好像扯到商業化的事情！？
Logo語言後來衍生出許多變體，甚至在python的標準程式庫中，雖然已經跟Logo無關，但也可以看到海龜畫圖的程式庫
彭大海的程式小車 #OTTR 鄭鴻旗 #海龜繪圖
然後以下是我用google bard幫我整理的重點：（原網頁內容太長，要分段問）
好的，以下是剛剛我幫你翻譯的所有內容的總結：
1960 年代，麻省理工學院的 Seymour Papert 發明了 LOGO 程式語言，並與他的學生 Cynthia Solomon 一起開發了 LOGO 海龜。LOGO 海龜是一款可以用來教導孩子編程和數學的機器人。
LOGO 海龜受到了廣泛的歡迎，並被用於世界各地的學校。LOGO 海龜被認為是一種有效的教育工具，可以幫助孩子們學習編程、數學和問題解決技能。
LOGO 海龜仍然在使用，並被用於教育孩子們關於編程、數學和 STEM 的基礎知識。
希望這對你有幫助！如果您有任何其他問題，請告訴我。

這部分資料銜接一開始提到的威廉華特，LOGO團隊也有提到他們的機器人部分是被威廉華特所啟發的

### 大海用tinkercad設計的海龜2D設計圖(驗證中)


![](https://hackmd.io/_uploads/Sk0JsZDhh.png)
![](https://hackmd.io/_uploads/SJCxobDhh.png)

![](https://hackmd.io/_uploads/BkeYsWwn2.jpg)

## 馬達的不同驅動IC價格比較分析

傳統28BYJ48以及ULN2003一組賣NT$27
其中馬達20控制板7
27*2組=54
而ULN2803就只要10元就有兩組驅動器
20+20+10=50

## 步進馬達ULN2003驅動板連接器參數
https://electronics.stackexchange.com/questions/157799/what-is-the-name-type-of-the-connector-on-the-28byj-48-stepper-motors

## tinkercad模型已更換新版電路主板
![image](https://hackmd.io/_uploads/BJll00oCUa.png)

https://www.tinkercad.com/things/jAyTOp9Ajw1-openlab-taipei-turtle-robot-v3?sharecode=eqZg6aS7ZQwoI9bQfJjok3lkpl9sjtMXwCW4UiY1J5c
![image](https://hackmd.io/_uploads/B1iEVjCLa.png)
