TShopping

 找回密碼
 註冊
搜索
查看: 2196|回復: 0

[教學] 如何用藍芽Bluetooth連線控制 Arduino

[複製鏈接]
發表於 2020-6-4 21:26:33 | 顯示全部樓層 |閱讀模式
 
Push to Facebook
學會Arduino基本操控後
一定會想學會無線遙控,如藍芽Bluetooth, Wifi
這篇說明藍芽Bluetooth操控

結果圖

藍芽,Bluetooth,連線,控制,Arduino

藍芽,Bluetooth,連線,控制,Arduino



影片


代碼:
  1. // Include necessary libraries
  2. #include <BLEDevice.h>
  3. #include <BLEServer.h>
  4. #include <BLEUtils.h>
  5. //#include <BLE2902.h>
  6. //#include <Wire.h>

  7. // 定義 UUIDs (注意要與App Inventor內容對應)
  8. #define SERVICE_UUID            "C6FBDD3C-7123-4C9E-86AB-005F1A7EDA01"
  9. #define CHARACTERISTIC_UUID_RX  "B88E098B-E464-4B54-B827-79EB2B150A9F"
  10. #define CHARACTERISTIC_UUID_TX  "D769FACF-A4DA-47BA-9253-65359EE480FB"

  11. // 定義LM35 ESP32 GPIO接腳
  12. const int analogIn = A0;
  13.   
  14. int RawValue= 0;
  15. double Voltage = 0;
  16. double tempC = 0;
  17. double tempF = 0;
  18. String BLE_Code;
  19. BLECharacteristic *pCharacteristic;
  20. bool deviceConnected = false;
  21. // Handle received and sent messages
  22. boolean ledState=false;
  23. String message = "";
  24. char incomingChar;

  25. // Temperature Sensor 與led接腳變數
  26. float temperature = 0;
  27. const int ledPin = 2;

  28. // 設定 callbacks onConnect & onDisconnect函數
  29. class MyServerCallbacks: public BLEServerCallbacks {
  30.   void onConnect(BLEServer* pServer) {
  31.     deviceConnected = true;
  32.   };
  33.   void onDisconnect(BLEServer* pServer) {
  34.     deviceConnected = false;
  35.   }
  36. };

  37. // 設定 callback function 當收到新的資訊 (from the Android application)
  38. class MyCallbacks: public BLECharacteristicCallbacks {
  39.   void onWrite(BLECharacteristic *pCharacteristic) {
  40.     std::string rxValue = pCharacteristic->getValue();
  41.     BLE_Code="";
  42.     if(rxValue.length() > 0) {
  43.       Serial.print("接收資料為 : ");
  44.       for(int i = 0; i < rxValue.length(); i++) {
  45.         BLE_Code+=rxValue[i];
  46.         Serial.print(rxValue[i]);
  47.       }
  48.       Serial.println();
  49.       BLE_Code.toUpperCase();
  50.       Serial.println(BLE_Code);
  51.       if(BLE_Code.indexOf("LED")==0)
  52.       {
  53.         ledState=!ledState;
  54.       Serial.println(ledState);
  55.       }
  56.       if(BLE_Code.indexOf("ON")==0)
  57.       {
  58.         Serial.println("LED 點亮!");
  59.         ledState=true;
  60.       }
  61.       else if(BLE_Code.indexOf("OFF")==0) {
  62.         Serial.println("LED 熄滅!");
  63.         ledState=false;
  64.       }
  65.     }
  66.   }
  67. };

  68. void setup() {
  69.   Serial.begin(115200);
  70.   pinMode(ledPin, OUTPUT);
  71.    
  72.   // 建立BLE Device
  73.   BLEDevice::init("ESP32_WeMos1");

  74.   // 建立BLE Server
  75.   BLEServer *pServer = BLEDevice::createServer();
  76.   pServer->setCallbacks(new MyServerCallbacks());

  77.   // 建立BLE Service
  78.   BLEService *pService = pServer->createService(SERVICE_UUID);

  79.   // 建立BLE Characteristic
  80.   pCharacteristic = pService->createCharacteristic(
  81.                       CHARACTERISTIC_UUID_TX,
  82.                       BLECharacteristic::PROPERTY_NOTIFY);                     
  83. //  pCharacteristic->addDescriptor(new BLE2902());
  84.   BLECharacteristic *pCharacteristic = pService->createCharacteristic(
  85.                                          CHARACTERISTIC_UUID_RX,
  86.                                          BLECharacteristic::PROPERTY_WRITE);
  87. pCharacteristic->setCallbacks(new MyCallbacks());

  88.   // 開始(起)service
  89.   pService->start();

  90.   // 開始(起)advertising
  91.   pServer->getAdvertising()->start();
  92.   Serial.println("等待BLE手機連線....");
  93.   
  94.   digitalWrite(ledPin,LOW);
  95.   delay(500);
  96.   digitalWrite(ledPin,HIGH);
  97.   delay(500);
  98.   digitalWrite(ledPin,LOW);
  99. }

  100. void loop() {
  101.   // Check received message and control output accordingly
  102.     if (ledState)
  103.         digitalWrite(ledPin, HIGH);
  104.       else
  105.         digitalWrite(ledPin, LOW);
  106.   delay(20);
  107. }
複製代碼

文章出處:網頁設計,網站架設 ,網路行銷,網頁優化,SEO - NetYea 網頁設計



 

臉書網友討論
*滑块验证:
您需要登錄後才可以回帖 登錄 | 註冊 |

本版積分規則



Archiver|手機版|小黑屋|免責聲明|TShopping

GMT+8, 2024-3-28 20:01 , Processed in 0.086030 second(s), 26 queries .

本論壇言論純屬發表者個人意見,與 TShopping綜合論壇 立場無關 如有意見侵犯了您的權益 請寫信聯絡我們。

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表