平衡輪機車V2-2023

時隔一年多,又一時興起再重做這部二輪平衡機車(看到原作者也做了新的)

Self balancing bike by ReM-RC

這位立陶苑高手又製作了一部新的二輪平衡機車,主板是Aruino nano用上了二顆Nidec的無刷馬達及一顆MG995 Servo,從影片中可見十分地穩定,透過藍芽操控可前進後退左右自如,當然在現實生活中是沒有機車倒退走的~

It is an open source project: https://github.com/remrc/
3D print files: https://www.thingiverse.com/remrc 

Esp32視訊平衡二輪機車

 原則上是模仿原者的作法,但自己加上一些變化,原來是使用手機app透過藍芽來控制車子的運動,我想著把它改變成藍芽及ESP32雙重使用,其實就是透過焊電路板時的設計,有別於上一版本製作,Arduino nano專注平衡輪動作,Esp32用於視訊及控制二顆舵機,這次把平衡輪及舵機都依靠Arduino nano來控制,藍芽或ESP32只是透過串口傳訊給Arduino nano來進行操控

Reaction Balance Bike機體製作(主要以ReM-RC提供的列印檔為主)

前輪製作

先印好相關的3D列印件、樂高6514輪子、NSK623培林、MG996R舵機,二支m2x8自攻螺絲、四支m2x12螺絲、一支m3x30螺絲

鎖固MG996R需要二支M3X12及二支M3X10螺絲加上螺母

先把MG996R鎖上固定架,馬達軸朝前,前面用m3x12後面用m3x10套上螺母固定,樂高輪子兩側加上設計好的3D列印件,上二顆培林,以M3X30螺絲為中軸便做好前輪(*MG996R有附四個小小的橡膠圓壂剛好拿來做中軸的孔壂)

前輪的輪軸製作

在樂高6514上加上二片設計好的軸片,可以用四支M2X12螺絲鎖固並在中央二側各上一個培林

培林規格:內徑3MM外徑10MM厚度4MM

前輪組裝視頻

在MG996R固定好之後,可先調90度後上舵柄並鎖好螺絲,接下來是加上前輪的車輪架,最後掛上輪子就行了

後輪動力的組裝及測試

動力改採用360MG996

在ReM-RC的專案中,他在車子的前進動力方面也是使用Nidec的無刷馬達,考量重量及電力需求,我改以360度的舵機來取代(Nidec的24H馬達在我們這兒事實上不普及,上網買大多來自於對岸),因為這個改變連帶地就要重新設計固定座、帶動轉盤、後輪輪軸…也剛好可以加強3D製圖的練習,這也是我非常需要的~

後輪的設計與前輪可是有許多不同的,主要是整體寬度及帶有齒溝的輪軸(我使用的樂高6514輪子與原作用的也不同,ReM-RC用的輪子是絕版樂高車輪,不僅難買到且價格貴得¥$,相較之下6514輪子一顆就幾十塊大洋,物美價廉,我覺得主要是國家地區不同,這部份要就地取材),因為輪子不同,所以輪軸都是我重新設計的(前後輪都是)…,孔位剛好可以從輪子二側夾住輪框鎖固並且保留加上培林的位置~

用上四支M2x20的螺絲,兩側的輪軸片剛好可以鎖固在輪子中間,看來容易,其實是想了好一下子,測量孔位及一些小細節,比如要留螺絲頭鎖進去的空間,一開始沒想到,螺絲頭留在外側的話,輪子在轉動時就會卡到車架…

使用360舵機當動力,如何帶動後輪呢?這次從原作者那兒得到一到好的idea→使用封閉式2GT同步帶,有許多周長規格,我就從200MM~280MM都買來試,在www.thingiverse.com/ 上去搜2GT Pulley可以找到人家分享的各規格大小的齒輪,再自己修改成可以套用到MG996上

Bike後輪動力測試

我的策略是讓MG996上的齒輪儘量地大,而後輪轉軸的齒輪儘量地小,因為360舵機的扭力大但轉速是比不上一般DC馬達的,讓二個齒輪的比值大些,可以最大符度地提升後輪的轉速,這個測試中使用的同步帶是280MM的圓周,而要將後輪固定在車架上需要一支M3x60的長螺絲

製作中段車體

平衡輪框架

這個部份有一個固定Nidec無刷馬達及MPU6050模組三軸加速度陀螺儀6DOF GY-521架子,這顆馬達通常要在網路平台上買,購買時請注意買有帶齒輪軸的有附排線的…因為雖是日本品牌,但大都是對岸在賣,它的規格都是獨特的,尤其是排線…

用三顆m3x8的螺絲就可以把馬達穩穩地固定在架子上,GY-521晶片則是先焊好前面四條排線,用二顆M3螺絲鎖定在架子上,它將以I2C的方式與Arduino nano通訊

其它部份就是靠m3螺絲搭螺母來接合,應該是蠻容易的,可能要準備的規格:M3x10、M3x12、M3x16、M3x20

電路製作(焊電路板)

焊電路板的策略

市面上的nano擴充板應該都不能符合自己的需求,最好的方法就是自己焊,我使用一塊3x7cm的洞洞板來排列所需的零件加上一塊輪出5v的降壓板來製作(主電源是12v輸入),我也不是電子科班出身,排電路焊電路這事只能靠錯誤中成長…

一開始我把Arduino nano焊死,後來才想用母座的的方式比較好,焊接的時候要注意錫別用太多,一不小心就短路了,另外我有別RXD和TXD引出來,讓藍芽模組或ESP32CAM可以透過SERIAL 和NANO溝通

電路板電路測試-平衡輪部份

電路板焊好了可不一定就是好,搭建一個平衡輪的平台來測試它是不是可以運作,第一要檢查的是電路板有沒有短路的地方(接錯或焊在一起了!哈!這個我都犯過),12V的電可不容小覷,只要有搞錯,開電的那一瞬間就放煙火了,Arduino nano和降壓模組肯定第一燒掉~如果沒犯那些大錯,也可能其他訊線線沒焊好!都ok的情形下,平衡輪就會運作了…

平衡輪的測試台→製作一個ReactionWheel 

電路板的串口通訊測試

在這個設計中,Arduino nano除了不停地操控平衡輪之外,也接收來自串口(Serial Port)的輸入,依簡單的指令來控制二個舵機,在電路板上也有焊出二個舵機的pin,接上藍芽模組後,我們可以利用串口通信app來測試…

最後的組裝

在ESP32CAM的部份是相對單純的,列印了一個外殼(事先設計好可以固定於平衡車前端),ESP32CAM接四條杜邦線(要自己壓吧!我使用很細的鍍銀單芯線一側壓母頭一側壓公頭)四個PIN→5V,GND,U0T,U0R,就是要取代原本藍芽模組接的位置,讓ESP32CAM透過UART和Arduino nano溝通

ESP32CAM取得即時影像

一般我們玩ESP32CAM常用的招數(它啟動了webserver),取得即時的影像串流,修改一下它的Webserver的網頁程式,比如按了「←」
<button class="button" onmousedown="toggleCheckbox('left');" ontouchstart="toggleCheckbox('left');">&#8592;</button>搭配合if(!strcmp(variable, "left")) { Serial.println("Left"); }
這樣就從串口送出了Left這個字串給Arduino nano了

把11.1v的電池用束帶固定在中段車身的下方,再把電路板固定在中段車身的中間,可以用四顆M2x15的螺絲(孔位都設計得剛剛好),把馬達線、mpu6050、ESP32CAM及前後SERVO的線都接上電路板

使用M3螺絲及螺母將整輛車體結合,需準備一些M3X12~M3X20的螺絲,如果要讓車體平常可以有個支撐不會完全倒下,可以準備幾支M3X50的螺絲鎖在車體中後段

製作電源線

買到的11.1v航模電池都是三塊3.7v鋰電組合成的,當然是挑一下品質良好的廠牌,電量大約450mAh的也就夠了,常見的是電池有二個接頭,最一個XT30另一個充電用的4PIN接頭,後所以我做了一條杜邦+XT30母頭的線,有一個很重要注意的事,杜邦那側接電路板,正負級一定要確認,如果接反了,通電的一瞬間就全毀了~

平衡車初始測試 

好不容易到了最後一步就是測試了,先後車子斜放然後開啟電源,這時程式會開始計算初始值,聽到嗶嗶二聲代表準備好了,開始把車子擺正,平衡輪會隨著角度變化開始運轉,順利的話喬一下就會立著了,馬達會是愛轉不轉的狀態,其實是不停地在變換正反轉,拿出手機連線ESP32CAM設定的SSID,利用瀏灠器就可以控制車子了

後續雜記

反作用輪的平衡機制

從這段影片中,我們可以看到它對於二端不同負重時的平衡方式,就像我們二手提不同重物時的表現,以這個機構來說,它有一定的承受能力,僅能撐起某個重量的不平衡,做成自平衡腳踏車也是依靠這個力量,如果想弄得更大或真實世界可載人的機構也並非不可能,只是可預期的需要更強大的電力來帶起更強的反作用力…

就像四軸空拍機可以載人飛行嗎?我想可以的,但需要怎樣的機構可想而知~