這篇文章來源于DevicePlus.com英語網站的翻譯稿。
本項目的目的是開發一種能夠檢測出操作員的手和手指方位的設備,以實現機器人的控制。我們將介紹有關電阻和分壓器的基礎知識。另外,我們還將了解如何通過 I2C 總線從陀螺儀和加速度計獲取測量值,以及如何建立 Arduino–PC藍牙連接。該設備在集成到 Arduino藍牙手套中之后將會發揮出它的作用。
? Arduino UNO
? 面包板
? 電位計 0-10kOhm
? 電阻 10 kOhm
? IMU 傳感器
? 電線
? Arduino 無線擴展板
? Xbee USB 適配器
? Bluetooth Bee
? PC 藍牙適配器
? USB A-B 數據線
? 微型 USB 數據線
軟件
? Arduino IDE 1.6.7
? LabVIEW
工具
? 萬用表
圖1: Arduino藍牙手套項目的基本示意圖
基于Arduino的采集系統配置在用戶的每只手上。Arduino開發板通過測量每個電位計的電阻來獲取手指彎曲(手指彎折)的信息。在處理了來自慣性測量單元(IMU)的數據后,可以識別出用戶手的方位,該單元包括陀螺儀和加速度計。電池和無線數據傳輸模式使基于 Arduino的采集系統可用作一個可穿戴智能手套。例如,它可以用作手動控制機器人手臂的通用輸入設備。
旋轉測量
當旋轉從手指傳遞到電位器手柄時,可以通過測量每個電位計的電阻來識別手指的彎曲。可使用分壓器來測量電位計電阻。如果想要降低電壓并獲得某些固定值,可以在電路中使用分壓器,由兩個或多個電阻組成。
圖2:分壓器電路圖
V 是來自Arduino 5V電源的電壓; I 是 流經電路的電流; R1是具有固定電阻值的電阻; R2 是具有可變電阻的電位計; V1和V2是電壓表。
電壓在電阻R1和R2處均產生壓降。V1和V2之和為V的值。根據歐姆定律:
用Arduino模擬輸入代替V2電壓表,以測量電位計的電阻。
圖3:分壓器電路示意圖
圖4:安裝在面包板上的分壓器電路
int sensorValue; void setup() { Serial.begin(9600);// initialize serial communication at 9600 bits per second } void loop() { sensorValue = analogRead(A0);// read the input on analog pin 0 Serial.println(sensorValue);// print out the value you read delay(100); // delay in between reads for stability }
定向測量
慣性測量單元(IMU)是一種可以測量人體比力和角速度的電子設備。通過對角速度的連續積分,我們可以獲得安裝有IMU傳感器的物體的當前方向。
得益于MEMS技術,IMU傳感器開始流行并被廣泛使用。大多數MEMS IMU傳感器利用 I2C協議作為將測量結果發送到控制器的主要方式。
您必須為芯片提供電源(V和G),并將數據和時鐘引腳(D和C)連接到相應的數字引腳(SDA和SCL),如圖5所示:
圖5:IMU傳感器連接
圖6:連接到Arduino開發板的IMU傳感器
通常,來自不同制造商的IMU傳感器都會具有相同的結構,即所有的MEMS芯片都連接到 I2C 總線。因此,要從陀螺儀、加速度計和磁力計獲取測量值,您將僅使用這兩個引腳。
我們這里使用的IMU傳感器包含 STMicroelectronics芯片( L3G4200D和 LIS331DLH )。如果您使用包含不同MEMS芯片的IMU傳感器,可以更改源代碼中的地址使其工作。
現在,讓我們進行測試程序吧!
您需要下載安裝 IMU 庫 (點擊Github上的“View Raw”來下載 IMU_Sensor.zip )。
將.ZIP Library 添加到 Arduino IDE( Sketch >> Include Library >> Add .ZIP Library…)
圖7: Arduino IDE上添加.ZIP Library
您將會在 Arduino libraries文件夾中看到 IMU_Sensor庫(圖8)。現在,我們將使用“#include ”測試IMU傳感器。
圖8:Arduino libraries文件夾中出現的 IMU_Sensor庫
#include // Library for I2C #include // Library for working with IMU modules Gyroscope gyro; // Create an object to work with Gyroscope Accelerometer accel; // Create an object to work with Accelerometer void setup () { Serial.begin (9600); // Open the serial port Serial.println ("Begin init ..."); // Display a message on the beginning of the initialization gyro.begin (); // Initialize the gyroscope accel.begin (); // Initialization of accelerometers Serial.println ("Init completed"); // Display a message about the successful initialization Serial.println ("GyroscopetttAccelerometer"); } void loop () { Serial.print (gyro.readX_DegPerSec ()); // Output angular velocity around the axis X Serial.print ("t"); Serial.print (gyro.readY_DegPerSec ()); // Output of the angular velocity around the Y axis Serial.print ("t"); Serial.print (gyro.readZ_DegPerSec ()); // Output of the angular velocity about the Z axis Serial.print ("tt"); Serial.print (accel.readX_G ()); // Output of the direction and magnitude of acceleration along the X axis Serial.print ("t"); Serial.print (accel.readY_G ()); // Output of the direction and magnitude of acceleration along the Y-axis Serial.print ("t"); Serial.print (accel.readZ_G ()); // Output of the direction and magnitude of acceleration along the Z axis Serial.print ("tt"); Serial.println (""); delay (300); }
圖9:IMU傳感器輸出
無線數據傳輸
可以使用 Bluetooth Bee(無線藍牙BT模塊)來建立無線連接。 Bluetooth Bee模塊帶有板載天線。它的作用就像一個透明串行端口,可與各種藍牙適配器和藍牙手機配合使用。
為了檢查藍牙模塊配置,請將開關置于AT模式。當模塊處于AT模式時,用戶或主機微控制器可以通過經串行端口發送預定義的AT指令來對其進行配置。在AT模式下,您可以從BT模塊獲取服務數據并更改某些設置(名稱,波特率,奇偶校驗和停止位)。
圖10:開關置于AT模式的 Bluetooth Bee
將BT模塊和 Xbee適配器堆疊在一起,然后通過微型USB電纜將 Xbee適配器連接到PC。LED燈必須處于打開狀態。
圖11: Bluetooth Bee 放置于 Xbee適配器上
啟動Arduino IDE,從 Tools >> Serial Port菜單中選擇與 Xbee適配器對應的COM端口。
打開 Arduino的串行監視器( Tools >> Serial Monitor或者Ctrl+Shift+M )。如果COM端口沒有正常顯示,請安裝 Xbee USB適配器驅動程序。從相應的選項欄中選擇“Both NL & CR”、“38400”來更改PC的串行設置,以讀取來自 Xbee適配器的信息,或寫入需要輸入到 Xbee 適配器中的信息。
發送“AT”并接收到“OK”。
發送“AT+UART?”并接收串行設置,如“9600,0,0”。
如果您接收到的串行設置不是“9600,0,0”,那么發送“AT+UART=9600,0,0”指令并接收到“OK”。
關閉串行監視器,斷開 Xbee適配器與微型 USB數據線和BT模塊的連接。不要忘記向左旋轉開關來關閉AT模式。
將 Bluetooth Bee放置在 Arduino無線擴展板上,將 Arduino與USB A-B數據線連接,如圖12所示。
圖12:在 Arduino無線擴展板上的 Bluetooth Bee
完成此步驟后,您將可以使用默認的“我的藍牙設備”窗口找到您的 Bluetooth Bee。將您的 Bluetooth Bee與默認密碼“1234”配對。請注意連接到您的設備的是哪個COM端口,在下一步草圖中選擇該COM端口。
這是用于測試藍牙連接的 Arduino草圖。(請注意,當將 Bluetooth Bee 安裝到 Arduino無線擴展板上時,您將無法啟用草圖)。
#define LED 13 int pause = 0; // variable to store sent value void setup() { pinMode(LED, OUTPUT); Serial.begin(9600); // open the serial port } void loop() { if (Serial.available() > 0) { // read incoming serial data: String inStr = Serial.readString(); Serial.println("Get Message:"+inStr); pause = inStr.toInt(); } digitalWrite(LED, HIGH); // turn the LED on (HIGH is the voltage level) delay(pause); // wait for a second digitalWrite(LED, LOW); // turn the LED off by making the voltage LOW delay(pause); // wait for a second }
圖13:測試 Bluetooth Bee連接
如果您有任何意見或疑問,請在 Google + 上給我們留言。請在該主頁繼續關注我們,我們將會盡快發布更多資訊。
審核編輯黃宇
-
藍牙
+關注
關注
114文章
5771瀏覽量
169830 -
Arduino
+關注
關注
187文章
6464瀏覽量
186661
發布評論請先 登錄
相關推薦
評論