Otto 組裝 ( Assemble Your Own Otto )

若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。

此次組裝的 Otto 機器人腳不一樣了,組裝完成後的圖如下:
有看出和原版Otto的差異嗎?

一、在組裝前,需要先檢查硬體是否有問題,準備好材料後,記得將四顆伺服馬達的槳給裝上去如下圖:


注意 Buzzer 有 + 號的那一頭為正極


二、根據官方的電路圖先將線路接好(依照下圖接線),

三、接著用官方提供的 Otto_avoid 程式來測試:

在上電後,先確定 Buzzer 有沒有聲音,再檢查四個伺服馬達有沒有動作,也要檢查伺服馬達是否有抖動的情況,接著用手擋住超音波看看 Buzzer 會不會發出聲音。

將四個伺服馬達給拆下,拆的時候用雙指捏住黑色的地方比較不會讓線受損,如下圖:


身體的部分有三角形的地方為前方,

四、要先將身體裡的伺服馬達先裝上去,拿伺服馬達內的螺絲,一長與一短,先放置在伺服馬達上

將伺服馬達鎖在身體,伺服馬達的線先任意放

五、接著要來調整腳的伺服馬達的角度,目標如下圖:

可使用 Otto_avoid 程式來作調整,Otto_avoid 程式在 Buzzer 開始發出聲音前,會將四個伺服馬達調到 90 度, Buzzer 發出聲音後,所有伺服馬達就會開始動作,所以可以配合 Nano 上的重置按鈕來調整伺服馬達。

六、調整好馬達後,將腿裝上身體,注意腳有兩個孔是朝身體前方

此時可鎖兩根長螺絲在腿上,記得不要鎖太深

七、將腳裝上,在鎖上螺絲之前,可觀察腿的孔是否有對槳,以利鎖螺絲

鎖好兩個螺絲後,會類似像下圖

八、頭的部分要先裝上超音波模組


將線調整好,且接到 Arduino Nano 控制板上,就可以把 Nano 控制板裝到頭上了

將頭蓋上身體,就完成組裝。

3D 列印四足獸 Mini Quadruped

若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。

最近拿到 Mini Quadruped - optimized for 9G servos 這隻 3D 列印的四足獸,不過筆者的接線腳位如下圖:

與Arduino Nano的數位腳位接線為從右上開始逆時針方向一圈


腳的伺服馬達角度如下圖:

臀部的伺服馬達角度如下圖:

一開始用原作者給的程式,發現伺服馬達的角度跟我手上的這一隻不一樣,修改程式讓牠可以動起來:
注:原作的程式很多在筆者手上的動作都不如預期的,於是不保留此版本的程式碼,筆者改用 QuadBot 的程式。


再來改了一個可以用Android手機藍牙控制八個關節的程式(程式下載處):


使用 QuadBot 的程式來修改,目前成果如下影片(程式下載處):

參考資料:
[2] QuadBot

NodeMcu 球形機器人試做 Part 1

若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。

在網路上看到此篇文章:【以Arduino 打造球形機器人】,雙手開始癢癢的,於是用了 Arduino Nano 照著文章做了一個版本,程式也重新寫過,完成的圖如下:
 

可以動耶,只不過和原作者內文一樣,看起來像紙箱,而且筆者還用了許多膠帶來固定壓克力球以防求爆開,接著筆者又用 NodeMcu 加上一個Servo Motor SG90 來做一個:

完了一下子後,想改幾個地方:
1. 換成直流馬達。
2. 電源開關。
3. 外型變成 3D建模的方式,就可以用 3D 列印出來。

待續~~~~

參考資料:

Data Structures in Python (Python 的資料結構)

若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。

在說明 Python 的資料結構前,先來了解什麼是資料結構,底下節錄維基百科上的解釋:
在電腦科學中,資料結構(英語:data structure)是電腦中儲存、組織資料的方式。資料結構意味著介面或封裝:一個資料結構可被視為兩個函式之間的介面,或者是由資料類型聯合組成的儲存內容的存取方法封裝。 大多數資料結構都由數列、記錄、可辨識聯合、參照等基本類型構成。』

舉例來說,生活上我們常常在排隊等結帳,先到的先結帳(先進先出),這個就是資料結構中的佇列。常見的資料結構可分為兩種:「線性(Linear)」與「非線性(Non-linear)」。線性資料結構有:陣列(Array)鏈結串列(Linked List)堆疊(Stack)佇列(Queue)矩陣(Matrix);非線性資料結構有:堆積(Heap)二元樹(Binary Tree)圖(Graph)雜湊表(Hash Table)

而每種程式語言都有一些資料結構可以用,Python也不例外,從Python的官方文件可看到底下幾種:
1. Lists
下圖為 Lists 的示意圖
  

2. Tuples 與 Sequences
下圖為 Sequences 的示意圖

而 Tuples 就是可以含有很多的 Sequences,如下圖


3. Sets
下圖為 Sets 的示意圖,有交集、聯集、差集等關係。


4. Dictionaries
下圖為 Dictionareis 的示意圖:
  

能判斷什麼時候要用哪一種資料結構是程式設計時需要考慮的事情,考慮的觀點通常有:
  • 效能。
  • 彈性。
  • 實作。

以上三點沒有絕對的順序,例如當需要先進先出的動作時,選用已有支援 Queue 的程式語言(如Java、C#等)就可以不自己重新打造 Queue 的程式庫了,若講究效能時,用C\C++語言會是選擇之一。

參考資料:
[1] https://www.tutorialspoint.com/python/python_data_structure.htm

使用NodeMCU製作Wifi 氣象台 ( Building a Weather Station with ESP8266 )

若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。

If you like this post, please click the ads on the blog or buy me a coffee. Thank you very much.

最近在Arduino ESP8266範例看到Weather Station的程式,就來做一個看看,此範例為使用https://www.wunderground.com當作氣象資料的來源,沒有使用到任何的感測器。
There is a sample code "WeatherStationDemo" in ESP8266 Weather Station library. This sample gets weather information from the website https://www.wunderground.com without using any sensors.

硬體材料(Materials):
1. NodeMcu 板子 x 1
2. Micro USB 連接線 x 1
3. 2000mAh 3.7 V 鋰電池(這是mBot用的電池)
4. SSD1306 I2C 0.96 吋 OLED 顯示模組 x 1

硬體電路(Circuit):





接線 (Wiring)
NodeMCU        -->    OLED
NodeMCU 3.3V ---> OLED Vcc
NodeMCU GND --> OLED GND
NodeMCU D3 ---->  OLED SDA
NodeMCU D4 ---->  OLED SCL

Arduino IDE 程式 (Arduino Code)
請在Arduino的程式庫管理員安裝底下的程式庫( Install the following libraries with Library Manager):
  • ESP8266 Weather Station
  • Json Streaming Parser (by Daniel Eichhorn)
  • ESP8266 Oled Driver for SSD1306 display (by me as well). Make sure that you use Version 3.0.0 or bigger!
  

安裝好上述三個程式庫後,請至 http://wunderground.com 申請帳號並取得 API Key ( Go to http://wunderground.com to get API Key for accessing web service API )

在自己的 Profile內,選取 Weather API for Developer ( Select "Weather API for Developer" in profile )


選擇 STRATUS PLAN,目前免付費 ( Select "STRATUS PLAN" )
 

之後,開啟Arduino IDE的範例 File > Examples > ESP8266 Weather Station > WeatherStationDemo
( Open File > Examples > ESP8266 Weather Station > WeatherStationDemo in Arduino IDE )
修改程式碼中的 Wifi SSID 與 Password ( Modify WIFI_SSID and WIFI_PWD variables depending on your Wifi AP configuration )


修改Wunderground Setting,其中的WUNDERGROUND_API_KEY請改成所申請到的,WUNDERGROUND_LANGUAGE 改成 EN ,WUNDERGROUND_COUNTRY 改為 TW,WUNDERGROUND_CITY改成Taipei。


調整UTC時間,台灣為 +8 (Adjust UTC Time)



示範影片(Demo Video):



參考資料:
[1] ESP8266 Weather Station

用 NodeMcu 製作 Wifi 自走車 ( A Wi-Fi Access Point Car )

若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。

NodeMcu上的ESP8266本身有SoftAP的功能,可以拿來當成Wifi基地台來用(本文沒用到網際網路),所以我們來製作一個可以透過手機上的Wifi來控制小車吧。

硬體材料:
1. NodeMcu 板子 x 1
2. Micro USB 連接線 x 1
3. 5V 直流馬達 x 2
4. 公對公杜邦線 x 4
5. 母對母杜邦線 x 6
6. L9110S 馬達驅動板 x 1
7. 小車底盤 x 1
8. 小車輪子 x 2
9. 萬向輪 x 1
10. 緊固件 x 4
11. 長螺絲 x 4
12. 短螺絲 (長8根、短2根)
13. 螺帽 x 10
14. 行動電源 x 1

硬體電路:

上圖電路是以L298N來表示L9110S。

接線對應腳位
L9110S馬達驅動板
  • B-1A 接 NodeMcu D2
  • B-1B 接 NodeMcu D1
  • A-1A 接 NodeMcu D4
  • A-1B 接 NodeMcu D3
  • VCC 接 NodeMcu 3.3V
  • GND 接 NodeMcu GND


完成圖:


Arduino IDE 程式:
先安裝Websocket程式庫,筆者是用 Markus Sattler 的版本


筆者是修改此程式庫的範例:WebSocketServer_LEDcontrol


程式碼:
完成後就可以使用手機或電腦上的瀏覽器(需有支援Websocket)連上NodeMcu的IP位址,就可以網頁控制了,而且可多台控制喔。

示範影片:


延伸的應用:
製作球形機器人,可參考以Arduino 打造球形機器人一文。