Category Archives: Intel系列:Edison/101/Joule/Galileo

[Arduino101] 開放資料平台之智慧家電控制

 

 

隨著最近的天氣溫度上升,對住家的環境也會有所影響,所以才想利用政府開放資料平台得到目前台北市氣溫溫度和透過arduino 101 接上 LM35線性溫度感測器得知目前的室內溫度,再與台北市目前溫度和室內溫度比較後,透過藍牙控制電風扇,若室內溫度高於台北市溫度則風扇開啟,反之則風扇關閉。

作者/攝影 許鈺莨
時間  約一小時
成本 NTD 2,000
難度  *  *  *
材料表
  • Arduino 101
  • 繼電器
  • DFROBOT Arduino 擴充板
  • DFROBOT 的 LM 35線性溫度
  • arduino IDE 1.8.1
  • Appinventor 2

 

首先,硬體設備先建置:

  1. 將DFROBOT擴充板接到Arduino101
  2. LM35線性溫度感測器接到A4腳位
  3. 將繼電器接到13號腳位

 

所有硬體接好後會是以下這張圖

再來就是程式撰寫的部分,分別為arduino IDE 和Appinventor 2,先以arduino IDE 環境說明為例:

 

第5行:LM35接DFROBOT 擴充板A4腳位

第6~11行: BLE UUID設定

第12行:設定繼電器腳位為13號腳位

第17~36行:BLE連線開啟

第40~83行:BLE傳輸LM35線性溫度感測器數值至手機畫面,並且Arduino101接收到字元O時則繼電器開啟,收到C字元則繼電器關閉。

完整程式:

#include <CurieBLE.h>

#include <LM35.h>

LM35 temp(A4);
BLEPeripheral blePeripheral;  // BLE Peripheral Device (the board you're programming)
BLEService RelayService("19B10010-E8F2-537E-4F6C-D104768A1214"); // BLE LED Service

// BLE LED Switch Characteristic - custom 128-bit UUID, read and writable by central
BLEUnsignedCharCharacteristic switchCharacteristic("19B10011-E8F2-537E-4F6C-D104768A1214", BLERead | BLEWrite);
BLEUnsignedIntCharacteristic LM35Data( "19B10012-E8F2-537E-4F6C-D104768A1214", BLERead | BLENotify);
const int  RelayPin = 13; // pin to use for the Relay
char control = '0';
int old_data ;

void setup() {
  Serial.begin(9600);

  // set Light pin to output mode
  pinMode( RelayPin, OUTPUT);

  // set advertised local name and service UUID:
  blePeripheral.setLocalName("LM35");
  blePeripheral.setAdvertisedServiceUuid( RelayService.uuid());

  // add service and characteristic:
  blePeripheral.addAttribute(RelayService);
  blePeripheral.addAttribute(switchCharacteristic);
  blePeripheral.addAttribute(LM35Data);
  // set the initial value for the characeristic:
  switchCharacteristic.setValue(0);

  // begin advertising BLE Relay service:
  blePeripheral.begin();

  Serial.println("BLE Relay service.");
}

void loop() {
  // listen for BLE peripherals to connect:
  BLECentral central = blePeripheral.central();

  // if a central is connected to peripheral:
  if (central) {
    Serial.print("Connected to central: ");
    // print the central's MAC address:
    Serial.println(central.address());

    // while the central is still connected to peripheral:
    while (central.connected()) {
      // if the remote device wrote to the characteristic,
      // use the value to control the Light:
      if (switchCharacteristic.written()) {

        control = switchCharacteristic.value();
        Serial.print("value : ");
        Serial.println(control);
        
        if (control == 'O') {      
          Serial.println("Relay on");
          Serial.println(switchCharacteristic.value());
          digitalWrite(13, HIGH);                           // Open relay
        } else if(control == 'C'){ 
          
          Serial.println(F("Relay off"));
          Serial.println(switchCharacteristic.value());
          digitalWrite(13, LOW);                            // Close Relay
        }
        
      }
      int new_data = temp.cel();
      if(old_data != new_data)
      { 
        LM35Data.setValue(new_data);
        Serial.println(new_data);
        old_data = new_data;
        delay(1000);
      }
    }

    // when the central disconnects, print it out:
    Serial.print(F("Disconnected from central: "));
    Serial.println(central.address());
  }
}

 

接下來是Appinventor2程式說明:

Arduino 101 BLE藍牙連線需要MAC序號才可連線成功,每片MAC都不相同,在Arduino101背後QR code下方即可找到,我使用Arduino101的 BLE 藍牙MAC為98:4F:EE:0F:42,每個Arduino101的藍牙MAC都不同。當程式執行時螢幕便會初始化,手機藍牙開始等待連線,當連上Arduino101時,螢幕標題會寫已連線,開始顯示室內溫度。

當手機與arduino101藍牙連線時,Arduino101會開始送出LM35線性溫度感測器的值。

手機利用OPEN DATA 開放資料平台每10秒鐘抓取台北市溫度的json網頁,資料來源:https://goo.gl/Vz49bi
json網頁: https://works.ioa.tw/weather/api/weathers/1.json
而台北市溫度是使用中央氣象局網站公告的氣象預報資訊作為資料來源,每 20 分鐘更新最新天氣概況。

而抓取json網頁的資料有個技巧就是先將所有的json網頁匯到Appinventor 的ListPicker元件裡,ListPicker元件可以自動將json網頁資料排列好,再利用陣列抓取我們所需資料,台北市溫度在第11行第2列中。

 

ListPicker 元件把json網頁排列好,如下圖所示:

比較台北市溫度和室內溫度,一開始抓取台北市溫度時會出現()為開始要抓取第一筆json資料之符號。而台北市溫度大於室內溫度,則風扇打開;反之, 台市溫度小於室內溫度,則風扇關閉。

 

手機端畫面如下圖所示:

 

結論:
本篇實現出藉由抓取open data 之json網頁得知目前台北氣溫數值和LM35線性溫度感測器測量出室內溫度並作比較,更進一步控制家電,未來可應用於溫室或打造智慧家電,有利於植物栽種,或調節房屋溫度,打造人類更舒適的環境。

 

 

相關文章:

[Arduino/Genuino101 專題] Arduino101 x BLE x MeArm x App Inventor 使用手機藍牙遙控機械手臂

本文將帶領讀者認識Arduino/Genunio101的功能,以及如何使用I2C界面來控制機械手臂MeArm、用BLE(Bluetooth Low Energy)來跟手機溝通,並使用MIT App Inventor來撰寫手機的應用程式來跟控制板溝通。

作者/攝影 袁佑緣
時間  3小時
成本  約1,850(不含101)
難度  * * * * *
材料表

 

1.Arduino/Genuino 101 介紹

2015年10月,Arduino與Intel合作發表了一塊名為Arduino/Genuino 101的開發板,使用x86的核心並搭載BLE(Bluetooth Low Energy)以及IMU(Inertial Measurement Unit),也就是內建加速度感測與陀螺儀,而本次範例將使用101上面的BLE功能,如果想要了解IMU在101上面的應用,可以參考部落格上的另外一篇文章[ Arduino101 專題實作計畫] Arduino101二輪平衡小車DIY

 

101 的詳細規格介紹

 

2. Arduino IDE 環境準備

首先請到Arduino的官網下載最新版本的IDE,https://www.arduino.cc/en/Main/Software
以筆者為例,最新的Arduino IDE版本是8.3,Windows使用者如果不想要系統安裝Arduino IDE的話,可以直接點選Windows zip的選項,下載後解壓縮,點選裡面的.exe檔也可以直接執行。

 

打開Arduino IDE後,我們要來安裝最新的101套件包,因為驅動程式也會包含在裡面,所以不需要在額外安裝囉。請打開Tools -> Board -> Boards Manager,並搜尋101,應該就會有最新版本的Intel Curie Boards跳出來,以筆者為例,最新版本為2.0.2版。

接下來因為我們的101在連接到機械手臂之間,會經過一塊16通道的伺服馬達控制板PCA9685,所以我們必須先下載PCA9685的函式庫才能控制我們的伺服馬達。

請到Adafruit的github上面下載Adafruit-PWM-Servo-Driver-Library

請點選Download,並將下載後的壓縮檔解壓縮後,放到Arduino資料夾裡面的libraries資料夾裡面。

 

3.硬體電路

接下來請準備好若干條母對公的杜邦線,以及電池提供額外的電源(6v),以防驅動機械手臂時電源供應不足,導致101控制板無法正常運作。

完整的電路接線圖如下,基本機械手臂上的四顆伺服馬達只要把接頭正確的接上PCA9685上就行了,PCA9685上面黑色的部份表示接地線,紅色部份表示電源線,黃色則是訊號線,我們可以透過此腳位輸入PWM訊號來控制伺服馬達。

PCA9685接到101的部份只要把SDA、SCL這兩個腳位接起來,好讓101可以透過I2C來跟PCA9685溝通,另外再接上VCC跟GND以提供PCA9685工作時所需的電壓就行了。

接完之後大概就會如下完成圖,因為這塊伺服馬達控制板的關係,所以我們不需要一塊額外的麵包板跟很多條的杜邦線互相接,是不是很方便啊?

 

4.Arduino 程式設計

請在Arduino IDE 上面完成以下的程式碼。

#include <CurieBLE.h>
#include <Wire.h>
#include <Adafruit_PWMServoDriver.h>

#define SERVOMIN  150 
#define SERVOMAX  600 

Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver();

BLEService BLE_serv("19B10010-E8F2-537E-4F6C-D104768A1214");
BLEUnsignedIntCharacteristic BLE_char("19B10011-E8F2-537E-4F6C-D104768A1214", BLERead | BLEWrite);

void setup() 
{
    Serial.begin(9600);
    pwm.begin();
    pwm.setPWMFreq(60);

    BLE.begin();
    BLE.setLocalName("mearm");
    BLE.setAdvertisedService(BLE_serv);
    BLE_serv.addCharacteristic(BLE_char);
    BLE.addService(BLE_serv);
    BLE_char.setValue(0);
    BLE.advertise();

    Serial.println("Waiting for connections...");
}

void loop() {
    BLEDevice central = BLE.central();
    if(central)
    {
        Serial.print("Connected to central");
        Serial.println(central.address());
        while(central.connected())
            if(BLE_char.written())
            {
                int servo_num = BLE_char.value();
                int pulse_len = BLE_char.value();
                pwm.setPWM(servo_num, 0, pulse_len);
            }
        Serial.println("disconnected");
    }
}

程式說明:

以上的程式碼主要會引入兩個函式庫,一個是用來控制馬達的<Adafruit_PWMServoDriver.h>,另一個則是待會要用來跟手機溝通的<CurieBLE.h>,接下來的程式碼就是初始化一個BLE的Service,然後裡面

包一個Characteristic,主要負責來接收手機端傳送過命令。來馬達編號,還有指定的馬達PWM訊號,藉此來操控我們的機械手臂。

在while(central.connected())迴圈當中,101會一直去確認是否有新的訊息送過來,如果有收到訊息,就會把收到的來馬達編號,還有指定的馬達PWM訊號,透過pwm.setPWM(servo_num, 0, pulse_len);來控制指定的伺服馬達,藉此來操控我們的機械手臂。

 

5.App Inventor 程式設計

App Inventor是一款圖形化的Android App設計界面,只要您有google帳號,就可以直接線上編輯,雲端儲存,還可以打包下載成APK檔,然後傳到手機裡安裝,如果想要知道App Inventor的教學與應用,可以參考App Inventor中文學習網

接下來我們就要實際動手來寫我們的應用程式了,請先連到MIT App Inventor官網

接下來請新建一個專案,並進到Designer界面,開始進行我們的手機界面佈置。

因為本次專案會用到BLE的元件,所以我們必須用到App Inventor的擴充元件功能,請複製以下的網址http://iot.appinventor.mit.edu/assets/edu.mit.appinventor.ble.aix

並在extension中把BLE元件import進來,如下圖。

接下來請完成以下的元件佈置,其中Slider的最大數值是600,最小數值是150,跟前面Arduino 程式碼裡面定義的一樣,另外Connect按鈕其實是一個清單(而非一般的按鈕元件),按下去之後可以讓使用者去選取要連哪一個藍牙裝置,最下方有一個scan的按鈕,可以用來掃描新的藍牙裝置,掃描附近的裝置後,app就會自動更新清單中可以連線的裝置列表。

 

接下來我們進到Blocks界面,開始設計我們的後台程式。

首先是初始化以及連線清單的設定,在初始化的過程就會先進行一次掃描的動作,並把掃描的結果更新在清單上,此外,當清單被點選之後,程式就會呼叫BLE元件去連線清單內的指定的裝置。

讀者可能會好奇,其中有一個叫做is_connected的函式,這個自定義的元件是有什麼功能呢?其實它就是會根據是否連接到裝置來做一些按鈕跟拉桿的設定,以及此刻狀態的提示,如下圖。

以下則是基本的連線、斷線功能,以及掃描附近裝置與更新的實作。

接下來的這四個Blocks,讀者可以直接從字面上的意思去解讀他的功能,也就是當編號1到4的拉桿被拖動時,就會執行update_and_send的函式,也就是更新拉桿上面馬達狀態的提示以及送出指定的馬達脈波長度。

update_and_send的實作如下,基本上就是會根據拉桿的位置對應到的數值,送出指定的控制指令,這邊值得注意的是要記得把serviceUuid跟characteriscUuid改成跟前面Arduino程式碼裡面指定的一模一樣喔,不然BLE會無法進行資料的溝通。

到此為止已經大功告成囉,接下來就剩下把App下載到手機上就完成了,您可以點選Build -> App(provide QR code for apk,讓App Inventor把編譯好的程式碼暫時存到雲端,並顯示QRcode,讓您可以掃描它來安裝App。

 

注意:

由於BLE元件是App Inventor相當新的功能,所以對於一些手機較舊的讀者可能會發現無法安裝或者是無法使用的問題,這只能換更新版本的Android系統或者是看看App Inventor官方未來是否會有相關的計畫來支援舊版本的手機。

 

相關文章:

[ Arduino101 專題實作計畫] Arduino101二輪平衡小車DIY

作者/攝影 袁佑緣
時間
  • 3小時
成本
難度  * * * * * *
材料表
  • 厚度3mm壓克力板
  • Arduino101控制板
  • 減速馬達x2
  • 麵包板
  • 杜邦線
  • 排針
  • 電池盒
  • 防滑墊
  • 3.7v鋰電池(14500)
  • 鋰電池充電器
  • TA7279P馬達驅動晶片

1. 平衡車車體製作

本範例的平衡車車體主要是由雷切壓克力構成,壓克力的厚度是使用3mm的板材,再藉由螺絲螺帽組合而成,車子的馬達使用的是兩顆小型的5V減速馬達,輪子的部份也是由壓克力組成,胎皮則是貼上一層防滑墊,車子的底部則有兩個3號電池座,裡面各裝兩顆7V的鋰電池,一個用來驅動控制板,另一個則用來驅動馬達。
詳細的CAD檔可以參考筆者放在網路上的onsahpe專案,有興趣的讀者可以參考看看喔!

圖一、平衡車的模擬動畫

圖二、組裝爆炸圖

圖四六七八、車體的三視圖

圖八、平衡車實體圖

 

2.電路接線

本次範例使用的馬達驅動晶片是TA7279P,其腳位功能與編號如下圖(節錄自官方datasheet) ,請將5號及10號腳位接到鋰電池的電源上,並把A、B兩個channel的馬達訊號輸入腳位,也就是1、3、12、13接到Arduino 101上的3、5、6、9號腳位來當作控制板的訊號控制腳位,因為這些腳位才有辦法做PWM訊號的輸出,也因此才能控制馬達的轉速。
至於馬達的部份,請將下表output(輸出)的腳位各自接到兩顆馬達上即可,例如:A channel想控制左馬達,B channel想控制右馬達,那就把4、6號腳位接到左馬達上,9、11號腳位接到右馬達上。
另外也別忘記要給TA7279馬達驅動晶片供給工作電壓,只要在14號腳位供給5V的電力,7號腳位接地就行囉。

圖九、TA7279P腳位功能圖

圖十、TA7279P腳位編號圖

圖十一、完成車體與電線配置!

3. Arduino環境準備

請先準備好Arduino IDE,並請在Arduion IDE上的Boards Manager那邊搜尋關鍵字intel,並如下圖安裝Intel Cuire Board。至於驅動程式的部份,使用MacOS跟Linux的朋友不用擔心,直接使用就可以了,那如果是windows的使用者在第一次將控制板接到電腦上時,會挑出自動安裝驅動程式的視窗,請耐心等候電腦完成安裝就可以進行到下一步囉!

圖十二、Arduino IDE Boards Manager設定

4.程式設計

#include "CurieIMU.h" //引入Arduino 101 IMU的函式庫,用來偵測車體的            角速度與加速度方向

//宣告PID控制的各個參數,各個參數的最佳數值必須視車體情況而定,不同的車體會有所不同,電力的大小也會有影響
const float kp = 24; 
const float ki = 0.05;
const float kd = 15;

//宣告參數K作為complimentray filter的參數
const float K = 0.95;

//list number的大小會決定取平均的樣本數,越多則越準,但也會花掉更多計算時間
const int angle_list_number = 5;
const int error_list_number = 10;

//設定馬達初速為0
int speed = 0;

//定義馬達的驅動腳位
const int motor_A_1 = 3;
const int motor_A_2 = 5;
const int motor_B_1 = 6;
const int motor_B_2 = 9;

//宣告進行角度計算與PID控制會用到的一些參數
float time, time_pre, time_step;
float gyro_angle = 0;
float acce_angle = 0;
float angle_list[angle_list_number];
float pre_error = 0;
float error_list[error_list_number];
float diff_error = 0;
float offset = 0;

void setup()
{
	for(int i = 0; i < angle_list_number; i++)
		angle_list[i] = 0.0;
	for(int i = 0; i < error_list_number; i++)
		error_list[i] = 0.0;
	pinMode(motor_A_1, OUTPUT);
	pinMode(motor_A_2, OUTPUT);
	pinMode(motor_B_1, OUTPUT);
	pinMode(motor_B_2, OUTPUT);
	pinMode(13, OUTPUT);

	Serial.begin(9600);
	Serial.println("Start!!!");

//設定Arduino 101 的IMU感測器	
      CurieIMU.begin();
	CurieIMU.setAccelerometerRange(4);
	CurieIMU.setGyroRange(250);
	time = millis();
	for(int i = 0; i < 5; i++)
	{
		Serial.println("Ready...");
		delay(200);	
	}
	int time2 = millis();

//待機兩秒後,取得一個初始位置的角度,這個位置將會是平衡車目標的平衡位置
	while((millis()-time2) < 2000)
		offset = get_angle();
	digitalWrite(13, HIGH);
}

void loop()
{
//主迴圈會一直去讀取現在角度與目標角度的誤差,並透過PID控制來回傳修正動作給馬達
	float error = get_angle();
	float feedback = PID_feedback(error);
	if(abs(error) > 70)
//當傾斜角度過大時,會視為倒掉,此時將會停機並等待重啟
	{
		while(true)
		{
			analogWrite(motor_A_1, 0);
			digitalWrite(motor_A_2, LOW);
			analogWrite(motor_B_1, 0);
			digitalWrite(motor_B_2, LOW);
			Serial.println("Stop!!!");
		}
	}
	balance(feedback);
}

//平衡函式將會根據PID算出的回饋數值,呼叫馬達做出相對應的修正動作
void balance(float feedback)
{
	speed = int(feedback);
	if(speed < 0)
	{
		analogWrite(motor_A_1, abs(speed));
		analogWrite(motor_B_1, abs(speed));
		digitalWrite(motor_A_2, LOW);
		digitalWrite(motor_B_2, LOW);
	}
	else
	{
		digitalWrite(motor_A_1, LOW);
		digitalWrite(motor_B_1, LOW);
		analogWrite(motor_A_2, abs(speed));
		analogWrite(motor_B_2, abs(speed));
	}
}

//讀取角度的函式會透過計時器累加的部份,將IMU讀到的角速度離散積分成角度,同時會做平均取值並輔以complimentary filter的方式來將精確的角度數值計算出來
float get_angle()
{
	time_pre = time;
	time = millis();
	time_step = (time - time_pre)/1000;

	float ax, ay, az;
	float gx, gy, gz;
	CurieIMU.readAccelerometerScaled(ax, ay, az);
	CurieIMU.readGyroScaled(gx, gy, gz);

//將以下的註解取消掉的話可以從Arduino 101的Serial讀到此刻感應器的原始數值,記得baud rate要跟前面宣告的一樣設定成9600,另外要提醒一下如果開啟Serial輸出的功能的話,會消耗掉額外的計算資源,所以如果已經不需要再讀取數值時,最好把以下的程式碼註解掉
	//Serial.print(ax);
	//Serial.print("\t");
	//Serial.print(ay);
	//Serial.print("\t");
	//Serial.print(az);
	//Serial.print("\t");
	//Serial.print(gx);
	//Serial.print("\t");
	//Serial.print(gy);
	//Serial.print("\t");
	//Serial.print(gz);
	//Serial.println();
	
	gyro_angle += gy*time_step;
	acce_angle = (180/3.141593) * atan(ax/az);
	for(int i = 0; i < angle_list_number-1; i++)
		angle_list[i] = angle_list[i+1];
	angle_list[angle_list_number-1] = K * acce_angle + (1-K) * gyro_angle;
	float mean_angle;
	mean_angle = 0.0;
	for(int i = 0; i < angle_list_number; i++)
		mean_angle += angle_list[i];
	mean_angle /= 5;
	mean_angle -= offset;
	return mean_angle;

}

//PID回饋的函式會將錯誤進行一連串的計算,並根據開頭我們設定的三個係數來做出適當的回饋
float PID_feedback(float error)
{
	for(int i = 0; i < error_list_number-1; i++)
		error_list[i] = error_list[i+1];
	error_list[error_list_number-1] = error;

	float sum_error = 0;
	for(int i = 0; i < error_list_number; i++)
		sum_error += error_list[i];
	diff_error = error - pre_error;
	pre_error = error;
	float p_term = kp * error;
	float i_term = ki * sum_error;
	float d_term = kd * diff_error;
	float feedback = p_term + i_term + d_term;
	if(feedback >= 255)
		feedback = 255;
	else if(feedback <= -255)
		feedback = -255;

//跟前面一樣,把以下程式碼的註解拿掉的話可以從Serial讀出實際得出的回饋
	// Serial.print("P_term: ");
	// Serial.print(p_term);
	// Serial.print("\tI_term: ");
	// Serial.print(i_term);
	// Serial.print("\tD_term: ");
	// Serial.print(d_term);
	// Serial.print("\tError: ");
	// Serial.print(error);
	// Serial.print("\tFeedback: ");
	// Serial.println(feedback);
	return feedback;
}

 

5.實際操作

 

相關文章:

Arduino (Genuino) 101 與 ScratchX 環境建置

Arduino 101 是 Intel 與 Arduino.cc 合作推出的開發板,主要特色在於使用 Intel Curie 32bit 處理器,並且板子本身就有3軸加速度計與3軸陀螺儀,還有 BLE 藍牙通訊功能。

本文將告訴您如何使用 ScratchX 來控制 Arduino 101 開發板(開發者網頁),請跟著我們一起操作吧!請看實測影片

延伸閱讀:

[開箱文] Arduino 101 / Genuino 101 – Arduino.cc 與 Intel 合作,板載藍牙 BLE 與六軸加速度計/陀螺儀

Scratch 的 Arduino 101 指令說明

Continue reading

Scratch 的 Arduino 101 指令說明

本文是Scratch 的 Arduino 101 指令說明,整理自Scratch for Arduino 101 作者的頁面,請看以下指令說明:

 

設定指定數位腳位(2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13)為高電位(on)或低電位(off)


設定支援 PWM 的數位腳位(3, 5, 6, 9),數值範圍為0 – 100(%)


指定數位腳位(2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13)符合條件(on / off)時觸發本事件。


讀取指定數位腳位(2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13)。如該腳位為高電位,回傳為 true;反之為 false。


指定類比腳位(A0, A1, A2, A3, A4, A5)符合條件時觸發本事件。


讀取類比腳位的數值(A0, A1, A2, A3, A4, A5),回傳值為0~100(%),而非 Arduino IDE 的 0~1023。


當實際搖晃板子時,觸發本事件。請注意無法決定搖晃的力道。


讀取 Arduino 板子的指向。回傳值是三軸各自的轉動角度,單位為度。方向示意圖如下:

showing the Arduino 101 tilt orientation


設定伺服機轉軸位置(非連續型),單位為度。腳位可接在2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13。可接受的數值範圍為0~180度。

CAVEDU註記:Arduino 101 支援 PWM的腳位編號為3, 5, 6 ,9,應該還是要接在這幾隻腳位才能順利控制伺服機。


讀取指定腳位上的伺服機轉軸位置,回傳單位為度 (0~180)

 

【Intel Edison】開發板製作簡易的4軸機器手臂 part 1 軟硬體介紹 – 轉載自T客邦創客基地

本文經T客邦創客基地同意之後轉載,(T客邦原文連結),後續內容將分成多篇來刊登,歡迎您跟著一起做喔!以下是原文:

 

桌上型教學機器手臂購買連結請點我

Continue reading

[套件包介紹] Grove Indoor Environment Kit for Edison 用於 Intel Edison 的室內環境感測套件

Seeed Studio 這家公司應該不用多作介紹,這家位於深圳的公司專門生產各式各樣的轉接板與周邊硬體。本文要介紹的是 用於 Intel Edison 的室內環境感測討套件

本套件可幫助您探索並與室內環境暨行各種互動。套件內的各種感測器可搭配 Intel edison 開發板來快速製作各種專案原型來拓展您的想像力。

Grove Indoor Environment Kit for Intel® Edison 搭配 Intel Edison 與 Arduino Breakout Board 讓製作室內環境偵測應用變得簡單多了。使用 Base shield 轉接板 V2,開發者最多可同時使用 11 種不同的 Grove 感測器與致動器。請參考上述連結看更多相關教學喔。

未命名

裡面有什麼呢?

  • Base Shield 轉接板 V2 x 1
  • Grove – LCD RGB 背光螢幕模組 x 1
  • Grove – 溫溼度感測器 x 1
  • Grove – 繼電器 x 1
  • Grove – 濕度感測器 x 1
  • Grove – 伺服機 x 1
  • Grove – 光感測器 x 1
  • Grove – 蜂鳴器 x 1
  • Grove – UV 感測器 x 1
  • 9V / 筒狀電源接頭 x 1
  • Grove – PIR 動態感測器 x 1
  • 26AWG Grove 排線 x 2
  • Grove – 編碼器模組 x 1
  • USB 傳輸線 x 1
  • Grove 按鈕 x 1
  • 說明手冊 x 1

最後附上 Seeed 的介紹影片

Microsoft 與 Arduino.cc 的進一步合作關係

今天看到的消息:Microsoft 與 Arduino.cc 的進一步合作關係 (本文為翻譯消息)

windowsarduino

另一方面,Windows  也發布了它們的 IoT solution。支援 Raspberry Pi、Arduino Yun, Intel Galileo (一定要的啊)與 MinnowBoard Max (沒用過)

Arduino.cc 創辦人之一 Massimo Banzi 近日宣佈了Arduino.cc 與 Microsoft 進一步合作關係:Windows 10 is in fact the world’s first Arduino certified operating system!

Arduino Certified’  的 Windows 10 讓 maker 能結合 Arduino  的硬體驅動能力以及 Windows  的各種好用軟體來開發各種有趣的智慧物件。

想像一台監控攝影機,用Arduino來驅動馬達來控制鏡頭轉動,並使用 Universal Windows Platform (UWP) 來完成使用者介面,連接攝影機到雲端來處理動態偵測甚至可加入臉孔 / 語音辨識。另外也推出了 Windows Remote Arduino 與 Windows Virtual Shields ,當然是 open source啦

remotew02

使用Windows Remote Arduino,開發者就能控制(無線) 可執行 Windows 10 的裝置,就好像真的接上一片 Arduino 擴充板一樣,直接讓 Arduino 與 Universal Windows Application 接軌。

Microsoft 希望以這樣的方式讓使用者能用熟悉的 Arduino 指令 (執行在一台無線連接的 Arduino  裝置上) )就能延伸到 Universal Windows Platform Application。有那些好處呢?包括影像處理、語音辨識、網頁解析、攝影機與 Advanced Audio pipelines,並藉由 Arduino  整合了與真實世界的互動性,創造各種嶄新的應用。專案請參考:Basic Windows Remote Arduino project。.

另一方面還有 Windows Virtual Shields,使用者可以透過無線通訊協定來強化他們的 Windows 10 裝置。例如 Nokia 的 Lumia 530 手機就具備了許多 Arduino Shield (當然是虛擬的概念不能真的插啦) 的功能,玩家可藉此來連接各種元件,例如手機上的 GPS、網路連線/解析、觸碰螢幕、語音科技等等。例如 Picture the Weather project。期待能看到更多有趣的應用喔

140622 Intel Galileo Linux 嵌入式電腦研習營

Intel-Galileo

 

線上報名請按我

Galileo是由 Intel 公司所推出的 Arduino 相容開發板,除了完全相容 Arduino 之外,還有小型的 Linux 作業系統來開機。我們可在其上編寫簡易的 Python 程式來做到更多進階的功能。一片小小的板子除了能控制諸多電子元件之外,也能做到簡易網路伺服器以及剖析 JSON 資料等等,對於嵌入式系統新手來說是很好的入門教材。在本次研習中您將可藉由Intel Galileo踏入 Linux 的世界,以及它所展現的諸多應用。

主辦單位:CAVEDU 教育團隊、翰尼斯企業有限公司

協辦單位:台灣發展研究院 智能機器人研究所、《Make》國際中文版、普特企業有限公司

時間 : 103年6月22日星期日 09:30~17:00

地點 : 翰尼斯企業有限公司 台北市中正區中華路二段165號1樓

備註: 請自行攜帶筆記型電腦,以便實際操作。來賓可以優惠價格購買 Intel Galileo 開發板。研習用的 Intel Galileo 開發板由主辦單位提供。

收費:3,000 。名額有限,請儘早報名

匯款方式:
銀行名稱 :華南商業銀行 雙園分行
戶名 :翰尼斯企業有限公司
銀行代號 :008
帳號 :122-10-015315-3

超級好禮相贈:
1. <Intel Galileo 快速上手指南>書籍乙本

活動議程:

9:30 CAVE教育團隊簡介

9:50   認識 Intel Galileo : 硬體、可做到的事情。
安裝驅動程式,接上電源開機

10:30 基礎 I/O 控制
LED、可變電阻、伺服馬達等

12:00 中餐

13:00 Telnet登入Intel Galileo
基礎Linux環境操作

13:30 Intel Galileo的網路功能與遠端控制
如何檢視本機 IP位址

14:30 Python程式介紹
如何解析 JSON 資料
Intel Galileo 作為簡易網頁伺服器.

15:30 Intel Galileo 使用 micro SD卡開機
使用 mini Wifi EXRPESS 卡進行無線網路通訊

16:50 結語、賦歸

注意:主辦單位保留修改與解釋活動之所有權利。

服務電話:02-23062900
service@cavedu.com

好康在這裡,Arduino周邊商品型錄

來來來,咱們把 Arduino 相關的開發板、擴充板、周邊以及書籍都整理成一份了,直接線上瀏覽或是點選下載


要購買相關商品請留言、寄信到 service@cavedu.com 或直接於上班時間洽詢 02 2306 2900。謝謝您~