RoBoard魔人的機器人日誌

2014/3/23

[EduCake] EduCake平衡車首次亮相

今天本魔要來介紹的是最近拿到的一台EduCake平衡車,

來看看這台平衡車的樣子吧!



EduCake平衡車顧名思義,是使用EduCake來控制平衡車。



 車輪及車身是請U大使用3D Print印出的!



 EduCake上面就像我們常見的麵包版一樣,可以直接接線做實驗電路,省去焊電路的時間。



供電是使用5V的電源,所以本魔選購了一顆口紅型的行動電源供電。
而平衡車當然是需要陀螺儀感測的,所以在車底下有裝上一顆RM-G146。
動力的部分,採用了常見的直流馬達,在網路上看到的平衡車大多是使用伺服馬達來做的,
但考慮到伺服馬達的價格似乎不太夠親民,所以採用了一顆沒多少錢的直流馬達。



接著來介紹一下電路,由於是使用直流馬達,所以必須要用電路來控制正反轉,
這裡本魔採用的是TA7291P,控制上也不困難,只要拉兩組IO接上,
然後對應datasheet,個別送出正確的訊號即可控制電流流向。

而由於TA7291P需要3.5V以上供電,而IO腳位送出的電壓只有3.3V,所以為了穩定所以又加了一顆HD74LS04
這顆晶片的功用就只是拉高電壓,所以不多做解釋。



然後我們來看看我目前做的程式碼,還相當簡陋,所以目前效果還不算太好。



#include <EEPROM.h>
#include "FreeIMU1.h"
#include <Wire.h>
int raw_values[9];
//char str[512];
float ypr[3]; // yaw pitch roll
float val[9];
unsigned long pretime = 0;
int pin[4] = {10,11,31,32};
int d = 10;
// Set the FreeIMU object
FreeIMU1 my3IMU = FreeIMU1();
void setup() { 
 Serial.begin(115200);
 Wire.begin();
 delay(5);
 my3IMU.init(); // the parameter enable or disable fast mode
 delay(5);
 pinMode(10,OUTPUT);
 pinMode(11,OUTPUT);
}
void loop() {
 my3IMU.getYawPitchRoll(ypr);
 if(ypr[2] > 5){
  pin[0] = 10;
  pin[1] = 11;
  pin[2] = 31;
  pin[3] = 32;
  for(int i = 0; i < 4; i+=2){
   analogWrite(pin[i],255);
   analogWrite(pin[i+1],0);
  }
 }else if(ypr[2] < 3){
  pin[0] = 11;
  pin[1] = 10;
  pin[2] = 32;
  pin[3] = 31;
  for(int i = 0; i < 4; i+=2){
   analogWrite(pin[i],255);
   analogWrite(pin[i+1],0);
  }
 }else{
  for(int i = 0; i < 4; i++)
   analogWrite(pin[i],0);
 }
 while(millis() - pretime> 1000ul){
  Serial.print(" Roll: ");
  Serial.print(ypr[2]);
  Serial.println("");
  pretime = millis();
 }
 delay(10);
}




最後,我們來看看我目前的一個小成果吧!

Share:

2014/3/7

[86Duino] 開發環境介紹

接著要來向各位介紹的是86Duino的開發環境,
而此開發環境也是相容於Arduino的,
簡單的說,你再也不需要為了86Duino與Arduino兩邊的使用一直切換開發環境,
因為86Duino的開發環境也是可以直接開發Arduino的!

86Duino IDE的精美LOGO

86Duino整合開發環境類似一個簡易的文字處理器,
整個整合開發環境可分成三個主要的區域:

  • 指令區域(Command Area)
  • 文字區域(Text Area)
  • 訊息視窗區域(Message Windows Area)

86Duino整合開發環境

●指令區域
指令區域如圖的頂端所示,其中包括標題列、選單項目與圖示,
標題列顯示程式的檔案名稱(sketch_mar07a)以及整合開發環境的版本(86Duino Coding 101),
在這底下是一系列的選單項目和圖示,
類似任何一種文字處理器或文字編輯器,
你可以點擊選單中的其中一個,以顯示許多其他的選項,如下:

  • 檔案(File)
    包含儲存選項、讀取選項和列印程式選項,可以用來開啟許多的程式範例,也包括偏好設定(Preferences)。
  • 編輯(Edit)
    包含一般文字處理器中的複製、貼上、搜尋和取代功能,還附加了快速註解及還原與重作。
  • 程式(Sketch)
    包含上傳程式至主板前的檢查(Verify)功能,以及一些程式資料與匯入(Import)的選項。
  • 工具(Tools)
    包含多種功能如選定86Duino或Arduino主板類型和USB連接埠,也添加了許多貼心的功能如:自動編排、修正編碼等。
  • 說明(Help)
    包含許多感興趣的主題連結和整合開發環境的版本等等。


接著看到選單工具底下有六個圖示,滑鼠游標移到每個圖示上會顯示各自的名稱,由左到右如下:

  • 檢察(Verify)
    點擊此圖示可檢查86Duino或Arduino程式是否有效且程式中沒有任何錯誤。
  • 上傳(Upload)
    點擊此圖示可以檢查並上傳你的程式至86Duino或Arduino主版。
  • 新增(New)
    點擊此圖示可在新視窗開啟新的空白程式。
  • 開啟(Open)
    點擊此圖示可開啟先前儲存的腳本程式碼。
  • 儲存(Save)
    點擊此圖示可儲存目前開啟的程式,假如程式名稱尚未命名,你將會被提示為此程式命名檔名。
  • 序列監視器(Serial Monitor)
    點擊此圖示可開啟一個新的視窗,在86Duino開發環境間傳送和接收資料。

●文字區域
文字區域如圖的中間部分所示,你將會在此區域創建你的程式。
目前的程式名稱會被顯示於文字區域左上角的標籤中(預設名稱為當下的日期)。
你將會從這裡編輯你的程式內容,就像在任何文字編輯器中一樣。

●訊息視窗區域
訊息視窗區塊如圖的底部所示,從整合開發環境來的訊息顯示於深藍色區域,
你能看到的訊息包括檢查程式的訊息、狀態更新等訊息。
在訊息視窗區塊的右下方,你可以看到主板類型的名稱以及與它連結的USB連接埠,本例中為86Duino Zero on COM11。




瞭解了開發環境,我們就可以準備開發我們的第一隻程式,
下回開始本魔將會一步步帶領各位進入程式與電子的世界,
本魔將會帶領各位學習下列幾點:

  • 學習良好的專案設計概念
  • 學習電子學的基礎特性
  • 使用免焊實驗電路板(麵包板)建構電路
  • 撰寫程式來控制電子元件

藉此創造出各式各樣的電路效果。



















內容參考自:《Arduino自造指南:從65個專案玩透Arduino》
Share:

2014/3/6

[86Duino] ZERO硬體介紹

究竟什麼是86Duino?


86Duino ZERO正面


86Duino ZERO背面



根據86Duino的網站(http://www.86duino.com/index.php?lang=TW),
它是:

86Duino為新一代的開放式硬體平台(open-source hardware platform),採用Vortex86EX 處理器,提供更快的處理效能及高擴充性,且完全相容Arduino系列,並可支援x86架構的作業系統及執行以Arduino為基礎的系統。
86Duino採用了高性能32位元的x86兼容處理器,可以額外安裝Windows、Linux 和最流行的32位RTOS O/S,在單一封裝內集成了PCIE,DDR3,ROM控制器,xISA,I2C,SPI,IPC(DMA和中斷定時器/計數器包括內部外設控制器),網路,FIFO UART,USB2.0和SD/ SATA控制器形成一個系統級晶片(SOC)。
86Duino 提供了一個超完美的解決方案,開放式的硬體與軟體,可自行下載電路圖,讓使用Arduino及嵌入式系統的藝術家、設計師、業餘愛好者、任何有興趣的人,建立打造互動式科技所需的性能。

簡單來說86Duino是一套可程式化的微型計算機系統,
你可以使用指令與各種形式的輸入與輸出進行互動。
圖示86Duino的型號為ZERO,體積遠小於魔人的手掌大小。

體積相當小的86Duino ZERO

對於剛接觸的人來說,它的功能相當類似於Arduino,
對於輸入和輸出的設備幾乎是無限制的,例如:感測器、顯示器、電機設備等,
你可以設定確切需要的互動,創建一個符合功能的裝置。
事實上,86Duino是可以完全相容Arduino的程式的,測試後,
你將會發現86Duino可以完美的做出Arduino可以做的事,但卻又增加了新的功能。

現在,讓魔人帶領你們更仔細的探索86Duino ZERO硬體(也就是瞭解「實體的部分」),
並看看我們將實做出什麼。
別太擔心要如何寫程式或設計電路,因為本魔會陸續的將這些東西做出個簡易的成果。

●現在讓我們快速的瀏覽ZERO,從版子的左側開始,你將會看到三個連接器,如圖示:

USB_DEV、USB與電源連接器
官方硬體圖

USB_DEV(USB Device/Programming Port)連接器,
此連接器的線材使用USB轉Micro USB的線傳輸即可(即一般智慧手機之傳輸線),
此連接器為了以下三個原因連結主版與你的電腦:
  1. 提供主板電源
  2. 上傳你的指令到主版
  3. 從電腦傳送和接收資料
USB(USB 2.0 Port),
此USB與前面介紹到的USB_DEV不同點在於,USB_DEV是用來與電腦連結、傳輸資料的,
而此USB是用來與裝置連結、讀取裝置用,例如:鍵盤、滑鼠、藍芽接收器等。

最後看到的是電源連接器,透過此連接器你可以使用7-12V的電源變壓器(或電池)對86Duino供電。

●接著看到的是86Duino主版的核心:Vortex86EX SOM-128-EX

Vortex86EX SOM-128-EX(左方為正面、右方為背面)

根據86Duino的網站的介紹(http://www.86duino.com/index.php?p=374&lang=TW):


SOM-128-EX is a subtype of an embedded system and more likely an extension concept of system on chip. The reason we specially design this is that we understand what the difficult part of developing a new system is.
Usually, a tailored system for a special application would involve high overhead cost; however, if one adopts SOM, one can easily implement the already laid out pins of I/Os and connectors for consumers who want a customized system without committing months of design and paperwork.


SOM-128-EX是一個嵌入式系統的子型且系統能更容易的擴展概念在這晶片上,我們特別這樣設計的原因是因為我們知道開發一個新系統的困難點。
通常,特定系統的特殊應用會包括高昂的開銷,但是如果採用了SOM,人們可以很容易的實現輸入輸出和連接器在已經定義的腳位,這使人們不用為了一個特定的系統花幾個月的時間設計以及閱讀文件。

而此處理器是86Duino的「大腦」,他是一台具有處理器(CPU)可執行指令的微型電腦,
也包含了儲存程式中的資料與指令,並提供各種控制的途徑。

●接著看到處理器的上下方各有一排插槽,本魔由下排開始介紹:
左圖為下排插槽、右圖為官方硬體圖

第一排插槽用來提供電源,此外還有NC(Not Connected)為沒有連接的腳位,
以及可以連接一個外部重置(RESET)的按鈕進行重置功能。
第二排插槽提供了6個ADC輸入,可以用來測量電子訊號的電壓變化。

●接著看到上排:
左圖為上排插槽、右圖為官方硬體圖

這裡可以看到0到13的插槽為訊號輸入輸出(I/O),
它可以用來偵測是否存在一個電子訊號,或是用指令產生一個訊號。
插槽0與插槽1被稱為序列連接埠(Serial Port),用來傳送與接收其他設備的資料。
由波浪號(~)標記的插槽可以產生不同的電子訊號,例如:建立燈光效果或控制伺服馬達。
然而最上方可以看到串列資料(SDA)及串列時脈(SCL)的獨立插槽,
這兩個插槽通常是用在內部整合電路(Inter-Integrated Circuit,I²C)的傳輸上。

●接下來介紹在86Duino的右方的10根針腳與PCI-E插槽:


SPI與PCI-E


官方硬體圖

串列外設介面(Serial Peripheral Interface Bus,SPI),
有點類似先前介紹的內部整合電路(Inter-Integrated Circuit,I²C),
是一種4線同步序列資料協定,適用於可攜式裝置平台系統。
然而看到下面的PCI Express,簡稱PCI-E,是電腦匯流排PCI的一種,
可以與電腦直接的做溝通,但必須動些手腳,這裡就不提太多,
如果真的很想知道怎麼使用,可以直接向86Duino官方詢問。

●接下來是一些非常有用的設備,發光二極體(Light-emitting diodes,LED),

當電流通過這些微小的裝置時它們就會發亮。

左圖為發光二極體、右圖為官方硬體圖

86Duino主版有4顆LED,其中最右邊且標記ON(硬體圖為PWR)的LED,會在主板有通過電時亮燈。
然而標記TX和RX的LED會在資料透過序列埠(serial port)與USB86Duino和連接的設備間傳送與接收資料時會亮燈。
最後是標記L的LED是提供你個人使用(它與編號13的數位訊號輸入輸出(I/O)插槽連接)。

●正面的最後我們看到重置(Reset)按鈕:


重置按鈕

就如同電腦一樣,有時候86Duino也會發生錯誤,當所有的嘗試都失敗時,

你或許需要重置系統並重新啟動你的86Duino
在主板上的重置按鈕就是用來重新啟動系統來解決以上的問題。

●接下來看到86Duino的背面:



Micro-SD與LAN

我們可以明顯的看到MicroSD與LAN的插槽,
根據86Duino的網站的介紹(http://www.86duino.com/index.php?p=3401&lang=TW):


雖然每片 86Duino 開發板在出廠時,皆已內建 86Duino 韌體系統於板上的 Flash 記憶體內,但我們仍建議使用者改在 MicroSD 卡上建立及執行 86Duino 韌體系統,這有下列好處:
  • MicroSD 卡讀寫速度比板上 Flash 快,特別是寫入速度快數十倍以上,以 MicroSD 卡燒錄 sketch 程式可大幅縮短燒錄時間。此外,亦可小幅縮短 86Duino 開機時間。
  • 板上 Flash 有寫入次數限制,過度頻繁地寫入會降低其壽命,且損壞後更換不易。改由 MicroSD 卡執行 86Duino 韌體系統,可減少對板上 Flash 的寫入次數,延長 Flash 的壽命。
  • 板上 Flash 內也儲存 86Duino 的 BIOS,自行寫程式對其進行資料寫入有一定風險。MicroSD 卡價格低廉且用壞即丟,可在上面寫程式亂玩,使用限制更少更靈活。

簡單的說,加入MicroSD可以使86Duino讀取速度變快且較不用擔心控制板的壽命問題,
若是沒有使用MicroSD,也不用擔心86Duino不能使用。

接著看到區域網路(Local Area Network,LAN)的插槽,

相較於傳統Arduino,86Duino有了LAN的插槽,你就不需要為了此功能再去購買乙太網路介面擴充(Ethernet shield)。

但當然若是想要使用更多功能,86Duino也是可以相容於Arduino的擴充板的,
但請注意,你需要記得哪個擴充版使用了哪個輸入與輸出以確保不會發生「衝突」,
你也可以購買完全空的擴充板,用來新增你自己的電路。



























內容參考自:《Arduino自造指南:從65個專案玩透Arduino》
Share:
技術提供:Blogger.

追蹤者