Showing posts with label LinkIt ONE. Show all posts
Showing posts with label LinkIt ONE. Show all posts

2016/04/17

LinkIt ONE:簡單試用Grove溫濕度感測器

簡單試用,真的非常簡單,就只是試一試而已,能動就收工。

首先感謝MakerPRO歐先生拿給我一套Grove感測器組合。

拿出Grove溫濕度感測器,名稱後綴Pro,代表這是DHT22。

有標示AM2302,其實就是DHT22。
背面照。
然後要找DHT的程式庫,嘗試了很多套,包括Arduino網站看到的Seeed Studio提供的RobTillaart的、Seeed Studio為LinkIt ONE提供的、在LinkIt ONE論壇找到LinWeiTing所撰寫的LDHT、以中斷實作的idDHTLib,結果通通不行。

如果是DHT11的話,使用這套簡單的程式庫,每3秒讀取1次的話,大約10次中會有1次成功。

嗯,沒搞定,但還是要收工。

LinkIt ONE:簡單試用Grove LED Bar

簡單試用,真的非常簡單,就只是試一試而已,能動就收工。

首先感謝MakerPRO歐先生拿給我一套Grove感測器組合。

拿出Grove LED Bar

共有10個LED,1個紅色、1個黃色、1個淡綠色,剩餘7個綠色。
LED控制晶片是MY9221。
我插在D8,因為之後的範例程式預設使用數位腳位8和9。
然後到GitHub下載程式庫Seeed-Studio/Grove_LED_Bar,安裝;接著開啟附帶的範例草稿碼Walk.ino,建置並燒錄。

就可以看到LED開始工作。
範例很多,請自行嘗試。收工。

LinkIt ONE:簡單試用Grove光感測器

簡單試用,真的非常簡單,就只是試一試而已,能動就收工。

首先感謝MakerPRO歐先生拿給我一套Grove感測器組合。

拿出Grove光感測器

其實就是光敏電阻,咦,旁邊有顆晶片,不知為何。
背面照。
我連接到類比腳位A0。
程式碼:
#define SENSOR_PIN A0
#define LED_PIN 13

void setup() {
  Serial.begin(115200);
  pinMode(LED_PIN, OUTPUT);
}

void loop() {
  int v = analogRead(SENSOR_PIN);
  Serial.println(v);

  if(v > 200){
    digitalWrite(LED_PIN, LOW);
  }
  else{
    digitalWrite(LED_PIN, HIGH);
  }

  delay(1000);
}

功能很簡單,周遭環境較亮時,analogRead會讀到較大的值,若超過某界限(此處設為200),就熄滅內建的LED(腳位13);若周遭環境昏暗,analogRead會讀到較小的值,便點亮LED。

收工。

LinkIt ONE:簡單試用Grove聲音感測器

簡單試用,真的非常簡單,就只是試一試而已,能動就收工。

首先感謝MakerPRO歐先生拿給我一套Grove感測器組合。

拿出Grove聲音感測器

主要是個麥克風,加上其他一堆零件。
背面照。
我接到A0。
程式碼:
#define SOUND_SENSOR_PIN A0
#define LED_PIN 13
#define THRESHOLD 100

unsigned long t_extended;

void setup() {
  Serial.begin(115200);
  pinMode(LED_PIN, OUTPUT);
  digitalWrite(LED_PIN, LOW);

  t_extended = millis();
}

void loop() {
  int v = analogRead(SOUND_SENSOR_PIN);
  Serial.println(v);

  unsigned long t = millis();
 
  if(v > THRESHOLD){
    t_extended = t + 3000;
    digitalWrite(LED_PIN, HIGH);
  }

  if(t > t_extended){
    digitalWrite(LED_PIN, LOW);
  }
}

功能很簡單,若音量大於THRESHOLD,就會點亮LED,持續3秒鐘,然後熄滅。

收工。

LinkIt ONE:簡單試用Grove觸摸感測器

簡單試用,真的非常簡單,就只是試一試而已,能動就收工。

首先感謝MakerPRO歐先生拿給我一套Grove感測器組合。

拿出Grove觸摸感測器

正面照。
要觸摸的地方在背面。原理是在手指觸摸(甚至只要靠得夠近即可),電容會改變,便可達到偵測的功能。
我接在D8。
程式碼:
#define TOUCH_PIN 8
#define LED_PIN 13

void setup(){
  pinMode(TOUCH_PIN, INPUT);
  pinMode(LED_PIN, OUTPUT);
  digitalWrite(LED_PIN, LOW);
}

void loop(){
  if(digitalRead(TOUCH_PIN) == HIGH){
    digitalWrite(LED_PIN, HIGH);
  }
  else{
    digitalWrite(LED_PIN, LOW);
  }
}


很簡單,以手指觸摸時,就點亮LED,反之則熄滅。

收工。

LinkIt ONE:簡單試用Grove灰塵感測器

簡單試用,真的非常簡單,就只是試一試而已,能動就收工。

首先感謝MakerPRO歐先生拿給我一套Grove感測器組合。

拿出Grove灰塵感測器,測量空氣中細懸浮微粒。

正面照。左下有兩個調整旋鈕,但根據官方資料,我們不可隨意更動。
背面照。
必須接在D8。
程式碼,完全抄自官方範例。
#define DUST_SENSOR_PIN  8
unsigned long duration;
unsigned long starttime;
unsigned long sampletime_ms = 2000;//sampe 30s
unsigned long lowpulseoccupancy = 0;
float ratio = 0;
float concentration = 0;


void setup(){
  Serial.begin(9600);
  pinMode(DUST_SENSOR_PIN, INPUT);
  starttime = millis(); //get the current time;
}

void loop(){
  duration = pulseIn(DUST_SENSOR_PIN, LOW);
  lowpulseoccupancy = lowpulseoccupancy + duration;

  if((millis() - starttime) >= sampletime_ms){ //if the sampel time = = 30s
    ratio = lowpulseoccupancy / (sampletime_ms * 10.0); // Integer percentage 0~100
    concentration = 1.1*pow(ratio,3)-3.8*pow(ratio,2)+520*ratio+0.62; // using spec sheet curve

    Serial.print("concentration = ");
    Serial.print(concentration);
    Serial.println(" pcs/0.01cf");
    Serial.println("\n");
   
    lowpulseoccupancy = 0;
    starttime = millis();
  }
}

然後打開序列埠監控視窗。
有興趣的人,請自行查閱官方文件,據說可測1微米與2.5微米,咦,真的嗎?

收工。

LinkIt ONE:簡單試用Grove紫外線感測器

簡單試用,真的非常簡單,就只是試一試而已,能動就收工。

首先感謝MakerPRO歐先生拿給我一套Grove感測器組合。

拿出Grove紫外線感測器

感測器是GUVA-S12D,可偵測波長200nm ~ 400nm。
官方網站給的圖,紫外線指數越強,會產生越大的光電流,呈線性關係。
背面照。
我裝在A0。
程式碼,都是從Seeed Studio官網抄來的:
void setup() {
  Serial.begin(115200);
}


void loop() {
  // 收集1024次
  long analog = 0;
  for(int i = 0; i < 1024; i++){
    analog += analogRead(A0);
    delay(2);
  }
  analog >>= 10; // 算出平均值
 
  float v = analog * 4.98 / 1023.0; // 電壓
  float intensity = v * 307; // 照射強度
  float uv_index = intensity / 200; // 紫外線指數
 
  Serial.print("The voltage value: ");
  Serial.print(v);
  Serial.println("V");

  Serial.print("Illumination intensity: ");
  Serial.print(intensity);
  Serial.println("mW/m^2");

  Serial.print("UV index: ");
  Serial.println(uv_index);
 
  delay(20);
}


開啟序列埠監控視窗,每10秒得到一次量測結果。第一項是模組輸出的電壓值;第二項是照射強度(illumination intensity),然後算出第三項紫外線指數。
不過我手裡也沒有別的紫外線指數測量儀器可供比對,也不知道對不對。

嘿,可到中央氣象局即時查詢紫外線指數喔。
或者到維基百科看看紫外線指數的定義吧。
收工。

LinkIt ONE:簡單試用Grove加速度感測器

簡單試用,真的非常簡單,就只是試一試而已,能動就收工。

首先感謝MakerPRO歐先生拿給我一套Grove感測器組合。

拿出Grove三軸加速度感測器

採用ADXL345晶片,測量範圍±16g。
背面照。
插入I2C插座。
然後到GitHub下載程式庫Seeed-Studio/Accelerometer_ADXL345,安裝;接著開啟附帶的範例草稿碼ADXL345_demo_code.ino,建置並燒錄。

開啟序列埠監控視窗,便可看到如下畫面,拿起感測器搖一搖吧。
收工。

LinkIt ONE:簡單試用Grove氣壓感測器BMP180

簡單試用,真的非常簡單,就只是試一試而已,能動就收工。

感謝MakerPRO歐先生拿給我一套Grove感測器組合,已經是很久以前的事情了,早該用一用、寫寫教學文,沒想到拖到現在,而且只是簡單試用文,唉。

拿出Grove氣壓感測器,採用BMP180。
正面照,可看到I2C位址是0x77。
背面照。
安裝吧,接到I2C的Grove連接埠,如下圖。
然後到GitHub下載程式庫Seeed-Studio/Grove_Barometer_Sensor,安裝;接著開啟附帶的範例草稿碼Barometer_Sensor.ino,建置並燒錄。

開啟序列埠監控視窗,便可看到如下畫面。第一項是溫度,單位攝氏;第二項是氣壓,單位Pa(帕);第三項是一大氣壓;第四項是海拔高度,單位公尺。
收工。

2015/06/14

LinkIt ONE:Arduino IDE 1.6.4加SDK 1.1.09

LinkIt SDK 1.1.09 Beta開始支援Arduino 1.6.4,Windows與Mac都支援。底下試試在Windows XP上安裝。

下載Arduino IDE 1.6.4,並解壓縮。

首先安裝板子需要的USB驅動程式,到這裡下載,解壓縮後得到InstallMTKUSBCOMPortDriver.exe,執行。

接下來要讓Arduino IDE支援LinkIt ONE板子,開啟後,到選單「File-Preferences」,在「Additional Boards Manager URLs」裡輸入「http://download.labs.mediatek.com/package_mtk_linkitone_index.json」。
到選單「Tools-Board-Boards Manager...」,應會看到LinkIt ONE,按下「Install」進行安裝。
然後重新啟動Arduino IDE,接下來必須更新韌體以符合SDK版本。選單「Tools-Board」選「LinkIt ONE」,選單「Tools-Programmer」選「LinkIt Firmware Updater」,然後執行「Tools-Burn Bootloade」,出現韌體更新工具。
把開關MS/UART撥到MS,拔插USB線,更新韌體。然後便可試著燒錄LED閃爍範例程式,記得把開關MS/UART撥回UART。

改成Arduino 1.6.4後,許多原始程式碼就不必每次都重新編譯了,太好啦。不過LinkIt的原始碼仍需要。

改成SDK 1.1.09(或1.1.08)後,就不必一直切換Debug port/Modem port了,太好啦。


參考資料:

LinkIt ONE:Mac OS X安裝SDK 1.1.09

LinkIt ONE SDK 1.1.09開始支援Mac OS X 10.9與10.10,底下簡述安裝過程。

PS 我的Mac OS X版本是10.8,也可以。

下載Java 7,我下載的是jdk-7u79-macosx-x64.dmg,掛載後執行JDK 7 Update 79.pkg。

下載Arduino軟體,1.5.6-r2或1.5.7,我下載的是arduino-1.5.7-macosx-java7-r2.zip,解壓縮後得到Arduino.app,放進目錄「應用程式」(/Applications)。

下載LinkIt ONE SDK 1.1.09(檔案名MediaTek_LinkIt_SDK_for_Arduino_Mac_1_1_09.zip),解壓縮,得到目錄MediaTek_LinkIt_SDK_for_Arduino_Mac_1_1_09。把這個目錄搬移放進/Applications。

開啟終端機,切換進SDK目錄,
$ cd /Applications/MediaTek_LinkIt_SDK_for_Arduino_Mac_1_1_09
$ ./install_linkit_sdk -i /Applications/Arduino.app

應出現「Install done.」字樣。

然後在Arduino.app上點按滑鼠耍右鍵,選「顯示套件內容」,應可在Contents/Java/hardware/arduino與Contents/Java/hardware/tools底下看到新子目錄mtk。

接下來要燒錄最簡單的LED閃爍範例程式,開啟Arduino IDE後,到選單「Tools-Board」選擇「LinkIt ONE」,到選單「Tools-Port」選擇「/dev/cu.usbmodem1443」,也就是以「cu」開頭、而且尾端沒有「(LinkIt ONE)」字樣的那一個。

然後開啟Blink範例程式,燒錄,成功囉。


後話:

我之前在Mac OS X 10.8上安裝SDK 1.1.09,須修改指令./install_linkit_sdk -i /Applications/Arduino.app的安裝路徑為/Applications/Arduino.app/Contents/Java,而且會出現底下的錯誤訊息,無法安裝。

file /Applications/Arduino.app/Contents/Java/hardware/tools/mtk/autostart.txt does not exist, create it.
Create file /Applications/Arduino.app/Contents/Java/hardware/tools/mtk/autostart.txt failed, error [13]: Permission denied
Read target start file C:\autostart.txt failed.

參考資料: