Tag Archives: 小道消息

[3/29_C-Day有什麼?]系列之二:手機遙控雙足機器人

本篇內容是由  CAVEDU 的實習生-黃筱晏提供的使用心得

介紹用二足步行機器人入門這本書做出的機器人

這裡是我們團隊買書的地方:機器人王國商城

01

依照書中作法做出的樣子如下

馬達一顆控制頭部用來改變重心,另一顆為前進後退

02

單一顆9V無法供應motoduino+馬達,所以要用外接電源

→把板子上的J5 移到Ext. Vin 的地方

03

電源馬達連接:

04

藍芽接法:

藍芽設定可以參造Cooper Maa

http://coopermaa2nd.blogspot.tw/2012/06/hc-0x-bluetooth-module.html

05

將motoduino及兩顆9v電池固定後:

06

 

改用motoduino控制馬達及藍芽,軟體方面使用app inventer2

Arduino程式:

const int Motor_E2 = 5;      // digital pin 5 of Arduino (PWM)   

const int Motor_E1 = 6;     // digital pin 6 of Arduino (PWM) 

const int Motor_M2 = 7;     // digital pin 7 of Arduino

const int Motor_M1 = 8;    // digital pin 8 of Arduino

char val; //variable to receive data from the serial port(bluetooth)

 

void setup()

{

  // initialize serial communications at 57600 bps:

  Serial.begin(57600);

 

  pinMode(Motor_M1, OUTPUT);

  pinMode(Motor_M2, OUTPUT);

  Serial.println("Start here");

}

 

void loop()

{

  if(Serial.available())

  {

    val = Serial.read();

    switch(val)

    {

      case 'f':   // car forward

                forward(0, 255);

                break;

      case 'b':   // car backward

                backward(0, 255);

                break;

      case 'l':   // car turn left

                left(0, 255);

                break;

      case 'r':   // car turn right

                right(0, 255);

                break;

      case 's':   // car stop

                motorstop(0, 0);

                break;

     

    }

  }

}

 

void motorstop(byte flag, byte motorspeed)

{

  Serial.println("Stop!");

  digitalWrite( Motor_E1, motorspeed);

  digitalWrite( Motor_E2, motorspeed);

 

}

 

void forward(byte flag, byte motorspeed)

{

  Serial.println("Forward!");

 

  digitalWrite( Motor_M1, HIGH);

  digitalWrite( Motor_M2, HIGH);

 

  analogWrite( Motor_E1, motorspeed);

  analogWrite( Motor_E2, 0);

 

}

 

void backward(byte flag, byte motorspeed)

{

  Serial.println("Backward!");

 

  digitalWrite( Motor_M1, LOW);

  digitalWrite( Motor_M2, LOW);

 

  analogWrite( Motor_E1, motorspeed);

  analogWrite( Motor_E2, 0);

  

}

 

void right(byte flag, byte motorspeed)

{

  Serial.println("Head Turn Right! ");

 

  digitalWrite( Motor_M1, HIGH);

  digitalWrite( Motor_M2, HIGH);

 

  analogWrite( Motor_E1, 0);

  analogWrite( Motor_E2, motorspeed);

 

}

 

void left(byte flag, byte motorspeed)

{

  Serial.println(" Head Turn Left!");

 

  digitalWrite( Motor_M1, LOW);

  digitalWrite( Motor_M2, LOW);

 

  analogWrite( Motor_E1, 0);

  analogWrite( Motor_E2, motorspeed);

 

}

app inventer2程式:

在程式初始化時,設定各元件可否點選

07

在 ListPicker 點選之前設定藍牙的配對裝置位址與名稱

08

當 ListPicker 被點選之後,對藍芽發起連線,若成功則設定各元件能不能點選。

09

當按下按鈕後,Android 手機會經由藍牙發送一個字元給Arduino

10

按下Button7時,斷開藍牙連線,各元件恢復成連線前的樣子。

11

在手機上顯示:

12

Finish:

13

零件提供來源在這裡

[Raspberry Pi 2]樹莓派2效能測試,使用Chrome 瀏覽器與 openCV

RaspberryPi 2號稱CPU效能比過去快上六倍,快六倍究竟是什麼樣的感覺呢?這次使用Linux系統的Google Chrome與opecncv這兩個需要消耗較大CPU運算來做測試。剛拿到樹莓派2的朋友們,要讓過去系統可以相容於Pi 2請看這篇

這次使用top指令來觀察Pi2的系統執行能力,首先輸入:

$top

002

出現上圖的視窗,以灰色的一行作分類,上半部顯示的是Pi2的四核心運算率,分別是:CPU0、CPU1、CPU2、CPU3,如果沒有出現,按數字鍵[1]即可

下半部顯示的是正在執行的命令,如果出現的資料太多,按下鍵盤的[i]鍵就會切換顯示方式

  • USER:顯示執行命令的帳號
  • %CPU:顯示CPU的使用率
  • %MEN:顯示記憶體的使用率
  • COMMAND:執行的命令名稱

讓我們來看看在Pi B+執行 Google Chrome 的速度如何?

我們可以看到執行 Chrome需要使用CPU 高達 70%的運算,在整個系統上資源使用量是排第一名,右下角的圖形化CPU也是整片都滿滿的綠色,代表CPU全部的使用率達百分之百。Pi B+只有CPU0可以進行運算,系統跑起來會LAG,如果要執行其他程式需要等待約一到數分鐘才能打開。

接著來看看Pi2執行 Chrome 又是如何?

如圖所見,這個瀏覽器開了兩個分頁,但是CPU只使用了百分之30,而且在運算上會分擔給四個CPU,所以每個CPU執行的速度還是很快,由於我還開了其他的程式,例如截圖軟體,所以Chrome在使用整個系統的資源量是排第七第八名。

接著來看看Pi B+執行OPENCV佔的資源如何:

CPU使用率佔百分之七十,系統使用資源量排名第一,不用說整個CPU圖片為滿滿的綠色。

接著看Pi2執行opencv

CPU使用為 59%,我們看看右下角,CPU使用量顯示,綠色居然沒超過四分之一,小編實地測試,使用Pi2時,opencv只要畫素高,經過計算會照成圖片顯示DELAY,但是總CPU使用量不會超過四分之一,應該是Pi2作業系統(OS)的使用預設是不會讓單一程式佔走大部分的運算資源,在使用時,不會讓使用者感覺系統LAG,經過測試,Pi2在需要較高運算的程式上,的確比之前的Pi快上許多。

目前CAVEDU 已經開始供貨給玩家囉,Raspberry Pi2售價是台幣1500元,Raspberry Pi B+是900元,Raspberry Pi B 降價成500元!!歡迎到我們的FB粉絲頁商城訂購~~