Author Archives: 偉和

[LinkIt Smart 7688] MCS新功能:即時影像串流頻道

 

大家好~ 我是偉和,最近MediaTek Cloud SandBox 加入了兩種新的資料通道:Video StreamImage,本文要來介紹如何在 MCS 上即時觀看 7688 上的 webcam 影像,這樣不論您人在何方,只要連到 MCS 就可以看到影像,遠端影像監控功能就完成啦!

請注意,MCS 說明每個裝置的每月流量為 3GB,但如果每個裝置是指測試裝置的話…   那只要重新建立測試裝置就好啦,ㄎㄎ

0001

160224 物聯網IoT體驗夜

原文網址

Continue reading

[雙A計劃] Part5:Paperduino 藍牙控制 LED 閃爍

引用網址「[paperduino]android control led」

大家好  我是偉和,本篇將會教導各位如何利用App Inventor控制Paperduino。就是先前的 Arduino 換成自製的 Paperduino,小小一片的功能也是很不錯的。

Paperduino 製作請按我(程式需使用專用的Arduino IDE)

[雙A計畫] 常見問題整理

       [雙A計畫] 藍芽模組(HC05/06)常用指令教學

[雙A計劃] Part0:App Inventor 透過藍牙傳送訊號給 Arduino

[雙A計劃] Part1:App Inventor 經由藍牙控制 Arduino LED 亮滅

[雙A計劃] Part2:App Inventor 經由藍牙控制 Arduino LED 漸明漸暗

[雙A計劃] Part3:Android 手機透過藍牙接收 Arduino 類比腳位狀態

[雙A計劃] Part4:App Inventor 藍牙遙控 Arduino 雙輪機器人

[雙A計畫] Part6:Arduino 傳兩筆資料到 Android 手機

[雙A計劃] Part7:Arduino超音波感測距離回傳數值給Android手機

[雙A計劃] Part8:Android 手機對 Arduino 同時進行資料收發

先來看影片:

Continue reading

[AppInventor]Wait Function

參考網站:http://jock36.blogspot.tw/2014/07/appinventorwait-function.html#more

Hi!我是偉和

今天要交各位AppInventor 等待指令

在AppInventor裡面是沒有等待指令所以在寫某些程式時會變得非常困難

所以我就去爬文

查了些範例後 我決定使用子程式的方式去撰寫wait 指令

這裡是程式碼

所以之後你可以使用這子程式去控制延遲效果了

例如這樣:

我使用延遲子程式去使我的手機每按一次按鈕會震動5次

如果我沒放這子程式 那麼手機會持續震動直到for each迴圈結束

所以看完這篇你已經會在appinventor內使用延遲指令了!

Raspberry Pi 機器人 Python篇-Part2 LEGO®馬達測試

轉載至[http://jock36.blogspot.tw/2014/03/raspberry-pi-python-part2-lego.html] 接續上篇[Raspberry Pi 機器人 Python篇-Part1環境安裝]

將軟體更新後即將開始我們的第一個程式

在開始撰寫程式前,我們先認識一下馬達的接腳位置
[[開箱文]BrickPI – 讓 Raspberry Pi 接上您的樂高機器人感測器與馬達]中有提到,相較於NXT LEGO®主機,BrickPi可以接4顆馬達以及5顆感應器,本範例需要先將LEGO®馬達接於MA及MB。下圖為馬達接腳位置圖。
Motor_Ports_Blue

開啟我們Raspberry Pi桌面上的Lxterminal

並輸入
nano myfirstpythonrobot.py
新增名稱為myfirstpythonrobot的python程式

進入到Nano編輯頁面後開始我們的第一個程式

 

from BrickPi import * #呼叫BrickPi.py函示庫
BrickPiSetup() # 設定通訊端口腳位
 #預設的所有腳位都是關閉 所以我們要先將要用的腳位開啟
BrickPi.MotorEnable[PORT_A] = 1 #開啟MA
BrickPi.MotorEnable[PORT_B] = 1 #開啟MBˊ
BrickPiSetupSensors() #將馬達及感應器的設定送回給BrcikPi
while True:
    print “Running Forward”
    BrickPi.MotorSpeed[PORT_A] = 200 #設定MA的速度 (-255 ~ 255)
    BrickPi.MotorSpeed[PORT_B] = 200 #設定MB的速度 (-255 ~ 255)
    ot = time.time()
    while(time.time() – ot < 3): #執行while迴圈3秒
        BrickPiUpdateValues() # 要求BrickPi更新感應器或者馬達參數
        time.sleep(.1) #待機 100 ms
    print “Running Reverse”
    BrickPi.MotorSpeed[PORT_A] = -200 #設定MA的速度 (-255 ~ 255)
    BrickPi.MotorSpeed[PORT_B] = -200 #設定MB的速度(-255 ~ 255)
    ot = time.time()
    while(time.time() – ot < 3): #執行while迴圈3秒
        BrickPiUpdateValues() # 要求BrickPi更新感應器或者馬達參數
        time.sleep(.1) #待機 100 ms
註:程式盡量以手動輸入為主,以免因為字形、字體大小、網頁環境的影響而發生一些未知的錯誤

Raspberry Pi 機器人 Python篇-Part1 環境安裝

接續上篇【[開箱文]BrickPI – 讓 Raspberry Pi 接上您的樂高機器人感測器與馬達】,本篇將告訴您如何安裝包含了 Brick Pi 相關函式庫的開機用 SD 卡。

宣傳區

3/9 Brick Pi 機器人研習營,報名請按我   

什麼是 BrickPi

Raspberry Pi 機器人P控制循跡 – 使用BrickPi轉接板

一、安裝SD卡

1. 準備容量在4GB以上的SD卡

請下載開機映像檔的zip壓縮檔,請點我下載(檔名為2014.01.20_Dexter_Industries_wheezy.zip

下載之後請解壓縮。

2.下載並且安裝 Win32DiskImager 記憶卡燒錄程式

3.開啟 Win32DiskImager,點選右側磁碟片圖案選取剛下載好的映像檔,並勾選MD5 選項來驗證您下載的檔案是否正確(通常不太會出錯啦)

未命名

5. 接著就是將檔案寫入 SDCard裡  注意!請確認您所選擇的裝置(磁碟)是否正確,否則所有檔案都會不見!

安裝完畢後,將 SD 卡裝到RaspberryPi ,插上電源即可開機。登入預設帳號後請在 terminal 下執行 sudo raspi-config 進入設定畫面,找到 expand_rootfs 選項來使用全部的SD卡空間,否則即便您是使用16GB 的SD 卡,但從系統中看到的空間還是只會有2GB。

接著執行(請先確認 Raspberry Pi 是否能正常上網)

sudo apt-get update
sudo apt-get upgrade

來更新所有軟體

二、安裝BrickPi 的Python 函式庫

Raspberry Pi 的預設程式開發環境就是Python,本步驟是要下載 Brick Pi 擴充板要用到的 Python 函式庫。

1. 我們要先從網路上複製 BrickPi Python的函式庫,請直接在 terminal 輸入,或在桌面環境下開啟LXTerminal 來輸入:

git clone https://github.com/DexterInd/BrickPi_Python.git

2.安裝
我們要從上方複製的函式庫中,執行 setup.py 這個 python檔案來安裝BrickPi 模組,請在 terminal 中輸入:
sudo apt-get install python-setuptools
sudo python setup.py install

這樣就安裝完成了,下一篇就會開始介紹!

 

Raspberry Pi 機器人P控制循跡 – 使用BrickPi轉接板

這是一台使用Raspberry Pi 為核心的循跡機器人, 使用Dexter Industries 公司所生產的 BrickPi 轉接板來接上樂高NXT的感測器與馬達。請看影片中的機器人使用了比例控制方法,所以動作相當順暢:

[youtube=http://youtu.be/qdDGpQBW0YA]

這是我們1/24 25兩天研習時,現場demo機器人的照片。當然您可以直接從 Raspberry Pi 的 GPIO腳位來控制馬達與感測器,一樣可以做出機器人而無需使用 BrickPi 轉接板。之所以使用它當然是因為樂高零件的方便性囉,當然 Dexter Industries 的周邊感測器也都有現成的函式庫可以用,端看您如何選擇囉

2014-01-24 17.17.21

看完也想玩玩看嗎?   歡迎報名 14/02/23 Raspberry Pi 單板電腦整合機器人研習營

延伸閱讀:

[開箱文]BrickPI – 讓 Raspberry Pi 接上您的樂高機器人感測器與馬達

BrickPi_用RasberryPi操控NXT

以下為Python程式碼:

from BrickPi import *

BrickPiSetup()

BrickPi.MotorEnable[PORT_A] = 1
BrickPi.MotorEnable[PORT_B] = 1

BrickPi.SensorType[PORT_1] = TYPE_SENSOR_LIGHT_ON

BrickPiSetupSensors()

while True:

result = BrickPiUpdateValues()

if not result:
light = BrickPi.Sensor[PORT_1] print light

white = 476
black = 626
mid = (white + black)/2
last_power = 255*0.7 #70% of motor power
M = last_power/(black – white)

power_A = int((light – mid)*M + last_power)
power_B = int((light – mid)*(-1)*M + last_power)

if(power_A >= 255):
power_A = 255

elif(power_A <= -255):
power_A = -255

if(power_B >= 255):
power_B = 255

elif(power_B <= -255):
power_B = -255

print str(power_A) + “|” + str(power_B)

BrickPi.MotorSpeed[PORT_A] = power_A
BrickPi.MotorSpeed[PORT_B] = power_B

BrickPiUpdateValues()

 

 

[雙A計劃] Part3:Android 手機透過藍牙接收 Arduino 類比腳位狀態

本篇將教導大家如何使用手機讀取Arduino上類比腳位的數值,在此我們接上的是旋鈕式可變電阻。實際上可連接的元件不只可變電阻,所有的類比式感測器例如光敏電阻、熱敏電阻等都可以這樣使用!

[雙A計畫] 常見問題整理

       [雙A計畫] 藍芽模組(HC05/06)常用指令教學

[雙A計劃] Part0:App Inventor 透過藍牙傳送訊號給 Arduino

[雙A計劃] Part1:App Inventor 經由藍牙控制 Arduino LED 亮滅

[雙A計劃] Part2:App Inventor 經由藍牙控制 Arduino LED 漸明漸暗

[雙A計劃] Part4:App Inventor 藍牙遙控 Arduino 雙輪機器人

[雙A計劃] Part5:Paperduino 藍牙控制 LED 閃爍

[雙A計畫]Part6:Arduino 傳兩筆資料到 Android 手機

[雙A計劃] Part7:Arduino超音波感測距離回傳數值給Android手機

[雙A計劃] Part8:Android 手機對 Arduino 同時進行資料收發

先來看影片吧:

[youtube=”https://www.youtube.com/watch?v=Xlk_2cYytFI&feature=youtu.be”]

範例程式請點我下載(App Inventor中文學習網檔案庫)  App Inventor 2檔名:ReceiveDatafromArduino.aia

材料清單:

1 Android系統智慧型手機

2.Arduino相容開發板 (本文使用 Arduino MEGA2560)

3.藍牙收發接收器(本系列使用JY-MCU04 或 JY-MCU05),

4.麵包板

5.1個 1K歐姆可變電阻

先由下圖將藍牙及可變電阻接上Arduino (藍牙RX – Arduino D11, 藍牙TX – Arduino D10腳位)

 

STEP1:App Inventor 編寫藍牙訊息接收程式

畫面元件很簡單,點選 BT List 之後,會顯示藍牙配對裝置清單,點選您已經配對好的藍牙裝置之後,Arduino的類比腳位資訊就會顯示在畫面中央的 TextBox 上。

這邊要注意的地方是要將Clock1的TimerInterval更改成10,也就是每 0.01秒更新一次。這麼一來才比較不會發生漏抓Arduino 發出來的訊息


螢幕快照 2014-04-02 下午11.35.50     
 4

程式說明:

本段程式重點在於手機在讀取Arduino訊號時,並不是直接向Arduino取得資料,而是採用間接的手法。先讓手機丟出一個訊號(本範例為發送49)。Arduino在等待接收到此訊號後,才會將感應器的數值以封包的形式傳送給手機。在第二個if後就是手機解讀Arduino所傳送過來的封包,並顯示到手機上。

請注意在程式初始化時我們把 Timer 關掉了,不然還沒有藍牙連線成功之前就發送藍牙訊息的話,會一直顯示錯誤畫面。

text 文字變數是用來接收 Arduino 送來的標頭,如果是’a’ 就代表這是一串封包的第一個,可以開始讀取了。

螢幕快照 2015-06-05 下午1.04.24

 

在 Clock.Timer事件中,會先送出一個49的數字作為確認碼,Arduino 接收到這筆資料之後就知道要開始傳送資料了。由於 Arduino A0 腳位的數值範圍是 0~ 1023,但是封包卻是以 8 bit (一位元組)為單位,因此要把數值以 8位元為單位來組合,並存入 number 變數中,就能順利將數字還原了。最後將 number 變數值顯示於 TextBox 中。

螢幕快照 2014-04-02 下午11.36.20

 

在斷線時,關閉計時器與藍牙連線,並讓畫面恢復到初始狀態

螢幕快照 2015-06-05 下午1.04.29

STEP2:Arduino 程式碼

#include <SoftwareSerial.h>
#include <Wire.h>
SoftwareSerial I2CBT(10,11);
byte serialA;
void setup(){

  Serial.begin(9600);
  I2CBT.begin(9600);
}
///////////////////main///////////////////

void loop (){
    byte Data[3];
    byte cmmd[20];
    int insize;
    char str[256];
    int i=analogRead(A0);//read sensor value
    serialA=I2CBT.read();
    Data[0]='a';
    Data[1]=i/256;
    Data[2]=i%256;
    sprintf(str,"i: %d 0: %d 1: %d 2: %d",i,Data[0],Data[1],Data[2]);
     Serial.println(str);
     if (serialA == 49){
         for(int j=0;j<3;j++)
         I2CBT.write(Data[j]);
         
         serialA=0;
      } 
  //delay(100);    
}
App Inventor receive Arduino analog status

 

 

[雙A計劃] Part2:App Inventor 經由藍牙控制 Arduino LED 漸明漸暗

本篇將簡單介紹如何用手機的 Slider 滑桿元件來控制Arduino上的LED燈漸明漸暗,當然就是用到 analogWrite的 PWM效果囉。

[雙A計畫] 常見問題整理

       [雙A計畫] 藍芽模組(HC05/06)常用指令教學

[雙A計劃] Part1:App Inventor 經由藍牙控制 Arduino LED 亮滅

[雙A計劃] Part2:App Inventor 經由藍牙控制 Arduino LED 漸明漸暗

[雙A計劃] Part3:Android 手機透過藍牙接收 Arduino 類比腳位狀態

[雙A計劃] Part4:App Inventor 藍牙遙控 Arduino 雙輪機器人

[雙A計劃] Part5:Paperduino 藍牙控制 LED 閃爍

[雙A計畫]Part6:Arduino 傳兩筆資料到 Android 手機

[雙A計劃] Part7:Arduino超音波感測距離回傳數值給Android手機

[雙A計劃] Part8:Android 手機對 Arduino 同時進行資料收發

範例程式請點我下載(App Inventor中文學習網檔案庫)  App Inventor 2檔名:SlideControlLED.aia

 

材料清單:

1 Android系統智慧型手機

2.Arduino相容開發板 (本文使用 Arduino MEGA2560)

3.藍牙收發接收器(本系列使用JY-MCU04 或 JY-MCU05)

4.麵包板

5.1個220歐姆色碼電阻

6.1顆LED

先由下圖將藍牙發射器及LED接上Arduino (藍牙RX – Arduino D10, 藍牙TX – Arduino D11腳位)

App Inventor 編寫簡易的藍牙訊息發送程式

畫面元件很簡單,點選 BT List 之後,會顯示藍牙配對裝置清單,點選您已經配對好的藍牙裝置之後,就可藉由畫面中間的滑桿元件(自定義數值範圍為0~80,您也可以偷懶直接就定義為0~255)。App Inventor 會每隔按鈕就可點選。反覆點選就會送出不同的字元給Arduino 來控制LED亮滅。

螢幕快照 2014-04-04 上午12.28.35

程式說明:

STEP1:在 ListPicker1.BeforePicking事件中,將 BluetoothClient.AddressAndNames指令為 ListPicker1內容,代表點選將其內容連結到手機的已配對藍牙裝置清單。
 
STEP2:在 ListPicker1.AfterPicking事件中,確認連線成功之後,設定相關按鈕為 enabled/ disabled。

螢幕快照 2014-04-04 上午12.29.00

STEP3:

本程式重點在於使用 CLock.Timer事件每 0.01 秒將 Slider 的當下數值透過 BluetoothClient元件的 SendText 指令送出。最後按下 Disconnect 斷線按鈕則中止藍牙連線,並將個畫面元件回復到初始狀態等候下一次連線。

ffff

STEP2:Arduino的CODE

#include <SoftwareSerial.h>
#include <Wire.h>//引用二個函式庫SoftwareSerial及Wire

SoftwareSerial I2CBT(10,11);//定義PIN10及PIN11分別為RX及TX腳位

byte cmmd[20];
int insize, a;

void setup() {

   Serial.begin(9600); //Arduino起始鮑率:9600

   I2CBT.begin(57600); //藍牙鮑率:57600(注意!鮑率每個藍牙晶片不一定相同,請務必確認

   pinMode(9, OUTPUT);  //請注意您使用的Arduino 該腳位是否支援 PWM (會有~符號),否則會看不到效果

}

void loop() {

while(1){

   //讀取藍牙訊息
   if ((insize=(I2CBT.available()))>0){
      Serial.print("input size = ");
      Serial.println(insize);
      for (int i=0; i<insize; i++){
          Serial.print(cmmd[i]=char(I2CBT.read()));
          Serial.print(" ");
      }//此段請參考上一篇解釋

   }

 if(insize==4){  
      a = (cmmd[0]-48)*10;
      a=a+(cmmd[1]-48);
 }
 if(insize==3){
      a=(cmmd[0]-48);
 }
 Serial.println(a);
 analogWrite(9,map(a,0,80,0,255));   //使用 a 變數控制 LED 亮度  
 } //while
}
App Inventor PWM LED