愛招飛幫助手冊 愛招飛幫助手冊
  • FastERP-1
  • Smart
  • PinToo
  • FastWeb
  • FastERP-2 企業管理系統 (opens new window)
  • 印染業ERP (opens new window)
  • 工廠終端機 (opens new window)
  • TARS
  • MARS
  • TaskRunner
  • Flying
  • FastDesk
  • HiDesk
  • HiNAT
  • FastBPM
  • 設備故障診斷 (opens new window)
  • 設備最佳運轉效益 (opens new window)
  • 企業智能助手SmeGPT (opens new window)
  • 燈號管理 (opens new window)
  • 戰情室 (opens new window)
  • 能源管理 (opens new window)
  • 人車定位 (opens new window)
  • 戰情指揮系統 (opens new window)
  • FastERP-1
  • FastWeb
  • Smart
  • PinToo
  • Flying
  • TARS
  • 通用功能

    • Report
    • Script
    • Echarts
    • Chart
    • DB Install
  • FastERP-1
  • Smart
  • PinToo
  • FastWeb
  • FastERP-2 企業管理系統 (opens new window)
  • 印染業ERP (opens new window)
  • 工廠終端機 (opens new window)
  • TARS
  • MARS
  • TaskRunner
  • Flying
  • FastDesk
  • HiDesk
  • HiNAT
  • FastBPM
  • 設備故障診斷 (opens new window)
  • 設備最佳運轉效益 (opens new window)
  • 企業智能助手SmeGPT (opens new window)
  • 燈號管理 (opens new window)
  • 戰情室 (opens new window)
  • 能源管理 (opens new window)
  • 人車定位 (opens new window)
  • 戰情指揮系統 (opens new window)
  • FastERP-1
  • FastWeb
  • Smart
  • PinToo
  • Flying
  • TARS
  • 通用功能

    • Report
    • Script
    • Echarts
    • Chart
    • DB Install
  • Smart幫助主頁
  • 學習手冊

  • 開發手冊

    • 通訊協議

      • 通訊埠

      • 藍芽Bluetooth

        • 藍芽電子秤
        • 藍芽控制LED燈
        • 藍芽讀取溫濕度
          • 1. 說明
          • 2. 零件連線圖
          • 3. 使用零件
          • 4. Arduino流程圖
          • 5. Arduino程式
          • 6. 設計模板
          • 7. 程式設計
            • 7.1. 程式初始設定
            • 7.2. 事件設定
          • 8. 運行結果
      • 無線網WIFI

      • ModbusRTU

      • ModbusTCP

      • OPC

      • MQTT

      • RestAPI

      • HTTP

    • 互動輸出

    • 媒體存取

    • 人工智慧

    • 實體運用

目录

藍芽讀取溫濕度

# Smart之藍芽讀取溫濕度

# 1. 說明

  範例採用藍芽通訊協議,讀取駁接在Arduino上的溫濕度感測器的數據。HC-06採用BC417143晶片,支援藍芽2.1+EDR標準,HC-06的主控端或者從端模式是在出廠前就設定好的不能更改,通常能夠買到的HC-06均為從端模式。

  藍芽設備(HC-06)通過杜邦線,將藍芽VCC介面接至Arduino的5V針腳,藍芽的GND介面接至Arduino GND針腳,藍芽RXD接至Arduino 10號針腳,藍芽TXD接至Arduino 11號針腳。

  溫濕度感測器DHT22,負極接至Arduino GND針腳,正極接至Arduino 5V針腳,訊號線連線Arduino 的D8針腳。

  在硬體連線完成後,將Arduino連線電源,需要先將PC端與HC-06的藍芽配對,需使用支援藍芽功能的計算機(如不支援藍芽的計算機也可以使用USB藍芽適配器等外接拓展設備使之支援藍芽功能),打開藍芽選項,可搜索到HC-06字樣的藍芽設備,預設的配對PIN碼為1234。範例使用的Arduino程式使用到的藍芽設備庫的地址:http://drho.club/2018/06/arduino-bluetooth-mobile-phone01/ (opens new window),下載該庫檔案並將其新增至Arduino程式庫。

  通過範例學習,可以掌握藍芽的基本通訊原理,並結合arduino開發板實現溫濕度模組的數據採集功能。

# 2. 零件連線圖

# 3. 使用零件

序 零件名稱 數量
1 Arduino UNO R3 開發板 1
2 HC-06藍芽模組或HC-05藍芽模組 1
3 DHT22溫濕度模組 1
4 USB數據線 1
5 麵包板 1
6 杜邦線 若干

# 4. Arduino流程圖

# 5. Arduino程式

  使用Arduino IDE 編譯並上傳以下Arduino程式。

// 使用溫濕度感測器之鏈接庫 https://github.com/adafruit/DHT-sensor-library
// http://drho.club/2018/06/arduino-bluetooth-read-sensor-value/
// https://home.gamer.com.tw/creationDetail.php?sn=3671289
#include <SoftwareSerial.h>
#include <DHT.h>
#include <Wire.h>
#define dhtPin 8                    //讀取DHT22 Data
#define dhtType DHT22               //選用DHT22 
DHT dht(dhtPin, dhtType); // Initialize DHT sensor
SoftwareSerial BT(10,11); 

void setup() {
   BT.begin(9600);
   Serial.begin(9600);              //設定通訊速率9600
   dht.begin();//啟動DHT
 }

void loop() {
  byte cmd[20];
  int strsize;
  while(true){
    if ((strsize=(BT.available()))>0){
      for (int i=0; i<strsize; i++){
        cmd[i]=char(BT.read());
      }
      Serial.println(cmd[0]);
    }
   
    if (cmd[0]=='R') {
    float h = dht.readHumidity();   //讀取濕度
    float t = dht.readTemperature(); //讀取攝氏溫度
    char hum_buf[10], tem_buf[10];
    if (!isnan(h) && !isnan(t)) {
        dtostrf(h, 3, 2, hum_buf);
        dtostrf(t, 3, 2, tem_buf);
        Serial.print("濕度: ");
        Serial.print(h);
        Serial.print("%\t");
        Serial.print("攝氏溫度: ");
        Serial.print(t);
        Serial.print("*C\n");
        //BT.write('s');
        for(int i=0; i<5; i++) {
          BT.write(hum_buf[i]);
        }
        //BT.write('w');
        for(int i=0; i<5; i++) {
          BT.write(tem_buf[i]);
        }
     }
     else {
        Serial.println("無法從DHT感測器讀取!");
        return;
     }  
    }
     delay(2000);//延時2秒
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58

# 6. 設計模板

  開啟Smart智慧控制平臺,分別加入下插圖之控制元件。或者通過點選功能表欄[檔案]-[打開專案]選擇範例專案檔案來打開該範例。

藍芽讀取溫濕度 UI佈局

  ①:TImage元件,控制元件名稱為Image1。

  ②:TShape元件,控制元件名稱為Shape1。

  ③:TPanel元件,控制元件名稱為Panel1。

  ④:TLabel元件,控制元件名稱為Label9。

  ⑤:TPanel元件,控制元件名稱為Panel2。

  ⑥:TLabel元件,控制元件名稱為Label1。

  ⑦:TLabel元件,控制元件名稱為Label2。

  ⑧:TLabel元件,控制元件名稱為Label3。

  ⑨:TWidgetLCDLabel元件,控制元件名稱為WidgetLCDLabel1。

  ⑩:TLabel元件,控制元件名稱為Label4。

  (11):TBluetooth元件,控制元件名稱為Bluetooth1。

  (12):TTimer元件,控制元件名稱為Timer1。

  (13):TSwitchButton元件,控制元件名稱為SwitchButton1。

  (14):TLabel元件,控制元件名稱為Label10。

  (15):TLabel元件,控制元件名稱為Label5。

  (16):TLabel元件,控制元件名稱為Label6。

  (17):TImage元件,控制元件名稱為ImageDevices。

  (18):TImage元件,控制元件名稱為ImageServices。

  (19):TComboBox元件,控制元件名稱為ComboBoxPaired。

  (20):TComboBox元件,控制元件名稱為ComboBoxServices。

  (21):TWidgetLCDLabel元件,控制元件名稱為WidgetLCDLabel2。

  (22):TLabel元件,控制元件名稱為Label7。

  (23):TLabel元件,控制元件名稱為Label8。

  • Main窗體屬性設定

    • Caption:主窗體標題,設定為藍芽讀取溫濕度。
    • ClientHeight:窗體客戶區高度=480。
    • ClientWidth:窗體客戶區寬度=720。
  • ①Image1屬性設定

    • Stretch:設定圖片拉伸=True。
    • Height:設定圖片高度=480。
    • Width:設定圖片寬度=720。
    • Picture:設定顯示背景圖片。點選Picture屬性右側的[...]按鈕,打開檔案上傳界面,點選[Load...]從檔案瀏覽器中選擇對應的圖片檔案上傳,返回該界面下,待顯示出圖片後點擊[OK]載入圖片。
  • ②Shape1屬性設定

    • Height:設定控制元件高度=262。
    • Shape:設定形狀=stRoundRect(圓角矩形)。
    • Width:設定控制元件寬度=544。
  • ③Panel1屬性設定

    • BevelInner:設定內斜邊樣式=bvRaised。
    • BevelKind:設定斜邊的樣式=bkSoft。
    • BorderStyle:設定邊界的樣式=bsSingle。
    • Color:設定顏色=clBtnText。
    • Height:設定控制元件高度=217。
    • Width:設定控制元件寬度=500。
  • ④Label9屬性設定

    • Caption:設定標籤文字,設定為開。
    • Font:設定字型。設定內容如下圖。
  • ⑤Panel2屬性設定

    • BevelInner:設定內斜邊樣式=bvRaised。
    • BevelKind:設定斜邊的樣式=bkSoft。
    • BorderStyle:設定邊界的樣式=bsSingle。
    • Color:設定顏色=clMenuText。
    • Height:設定控制元件高度=83。
    • Width:設定控制元件寬度=404。
  • ⑥Label1屬性設定

    • Caption:設定標籤文字,設定為通訊埠讀取溫濕度。
    • Font:設定字型。設定內容如下圖。
  • ⑦Label2屬性設定

    • Caption:設定標籤文字,設定為溫度。
    • Font:設定字型。設定內容如下圖。
  • ⑧Label3屬性設定

    • Caption:設定標籤文字,設定為Temperature。
    • Font:設定字型。設定內容如下圖。
  • ⑨WidgetLCDLabel1屬性設定

    • Caption.Format:顯示格式,設定為00.00。
    • Height:設定控制元件高度=60。
    • Width:設定控制元件寬度=209。
  • ⑩Label4屬性設定

    • Caption:設定標籤文字,設定為℃。
    • Font:設定字型。設定內容如下圖。
  • (11)Bluetooth1屬性設定

    • Bluetooth1無屬性設定。
  • (12)Timer屬性設定

    • Enabled:是否啟用計時器的功能,此處設定為False。
    • Interval:計數器計時事件觸發的時間間隔,以ms為單位,設定為2000。
  • (13)SwitchButton1屬性設定

    • IsChecked:開關狀態,設定為False。
    • SwitchOff:關閉狀態時顯示的圖片。點選SwitchOff屬性右側的[...]按鈕,打開檔案上傳界面,點選[Load...]從檔案瀏覽器中選擇對應的圖片檔案上傳,返回該界面下,待顯示出圖片後點擊[OK]載入圖片。
    • SwitchOn:打開狀態時顯示的圖片。點選SwitchOn屬性右側的[...]按鈕,打開檔案上傳界面,點選[Load...]從檔案瀏覽器中選擇對應的圖片檔案上傳,返回該界面下,待顯示出圖片後點擊[OK]載入圖片。
    • Height:設定控制元件高度=72。
    • Width:設定控制元件寬度=68。
    • Stretch:影象是否隨控制元件大小拉伸,設定為True。
  • (14)Label10屬性設定

    • Caption:設定標籤文字,設定為關。
    • Font:設定字型。設定內容如下圖。
  • (15)Label5屬性設定

    • Caption:設定標籤文字,設定為溫度。
    • Font:設定字型。設定內容如下圖。
  • (16)Label6屬性設定

    • Caption:設定標籤文字,設定為Humidity。
    • Font:設定字型。設定內容如下圖。
  • (17)ImageDevices屬性設定

    • Height:設定圖片高度=31。
    • Width:設定圖片寬度=31。
    • Name:控制元件名稱=ImageDevices。
    • Stretch:設定圖片拉伸=True。
    • Picture:設定圖片。點選Picture屬性右側的[...]按鈕,打開檔案上傳界面,點選[Load...]從檔案瀏覽器中選擇對應的圖片檔案上傳,返回該界面下,待顯示出圖片後點擊[OK]載入圖片。
  • (18)ImageServices屬性設定

    • Height:設定圖片高度=31。
    • Width:設定圖片寬度=31。
    • Name:控制元件名稱=ImageServices。
    • Stretch:設定圖片拉伸=True。
    • Picture:設定圖片。點選Picture屬性右側的[...]按鈕,打開檔案上傳界面,點選[Load...]從檔案瀏覽器中選擇對應的圖片檔案上傳,返回該界面下,待顯示出圖片後點擊[OK]載入圖片。
  • (19)ComboBoxPaired屬性設定

    • Height:設定控制元件高度=31。
    • Width:設定控制元件寬度=31。
    • Name:設定控制元件名稱=ComboBoxPaired。
    • Font:設定字型,點選右側的[...]按鈕,打開字型設定界面。
  • (20)ComboBoxServices屬性設定

    • Height:設定控制元件高度=31。
    • Width:設定控制元件寬度=31。
    • Name:設定控制元件名稱=ComboBoxServices。
    • Font:設定字型,點選右側的[...]按鈕,打開字型設定界面。
  • (21)WidgetLCDLabel2屬性設定

    • Caption.Format:顯示格式,設定為00.00。
    • Height:設定控制元件高度=60。
    • Width:設定控制元件寬度=209。
  • (22)Label7屬性設定

    • Caption:設定標籤文字,設定為%。
    • Font:設定字型。設定內容如下圖。
  • (23)Label8屬性設定

    • Caption:設定標籤文字,設定為RH。
    • Font:設定字型。設定內容如下圖。

# 7. 程式設計

# 7.1. 程式初始設定

  該程式無初始設定。

# 7.2. 事件設定

  • (13)SwitchButton1-OnSwitch事件

SwitchButton1在點選時會切換開-關狀態,即改變IsChecked屬性的值,此時會觸發OnSwitch事件,打開或者關閉計時器。

procedure TMyHandler.SwitchButton1Switch;
//開啟讀取
begin
  FThis.Timer1.Enabled := FThis.SwitchButton1.IsChecked;
end;
1
2
3
4
5
  • (12)Timer1-OnTimer事件

  定時器事件,每隔2秒讀取數據。

procedure TMyHandler.Timer1Timer;
//讀取溫濕度並顯示
var
 FData:String;
begin
  FThis.Bluetooth1.SendData('R');//發送讀取溫濕度的命令
  FThis.Bluetooth1.ReadData;  
End;
1
2
3
4
5
6
7
8
  • (17)ImageDevices-OnClick事件

ImageDevice是設備搜尋按鈕,點選載入藍芽設備列表。

procedure TMyHandler.ImageDevicesClick;
//點選載入配對設備列表
begin
  FThis.Bluetooth1.PairedDevices;
  FThis.ComboboxPaired.Items := FThis.Bluetooth1.BTPaireds;
  FThis.ComboBoxPaired.DroppedDown := True;
  FThis.ImageDevices.Enabled := False;
end;
1
2
3
4
5
6
7
8
  • (18)ImageServices-OnClick事件

ImageServices是服務搜尋按鈕,點選以載入服務列表。

procedure TMyHandler.ImageSevicesClick;
//點選載入服務列表
begin
  FThis.Bluetooth1.Services;
  FThis.ComboBoxServices.Items := FThis.Bluetooth1.BTServices;
  FThis.ComboBoxServices.DroppedDown := True;
end;
1
2
3
4
5
6
7
  • (19)ComboBoxPaired-OnChange事件

  點選切換設備時觸發事件,修改Bluetooth1的設備資訊。

procedure TMyHandler.ComboBoxPairedChange;
//切換設備
begin
  FThis.Bluetooth1.PairedDevice := FThis.ComboBoxPaired.Items[FThis.ComboBoxPaired.ItemIndex];
end;
1
2
3
4
5
  • (20)ComboBoxServices-OnChange事件

  點選切換服務,並啟動藍芽服務。

procedure TMyHandler.ComboBoxServicesChange;
//切換服務
begin
  FThis.Bluetooth1.CloseServerSocket;
  FThis.Bluetooth1.FreeClientSocket;
  FThis.Bluetooth1.ServiceUUID := FThis.ComboBoxServices.Items[FThis.ComboBoxServices.ItemIndex];
  FThis.Bluetooth1.CreateServerSocket;
end;
1
2
3
4
5
6
7
8
  • (11)Bluetooth1-OnReceiveData事件

  讀取藍芽接收的數據解析並顯示。

procedure TMyHandler.Bluetooth1ReceiveData;
//讀取並顯示數據
var
  FData: String;
begin
  FData := Trim(ReceiveData);
  if FData <> '' Then
  begin
    if length(FData)=10 Then
    begin
      //ShowMessage('濕度:'+Copy(FData,1,5)+' %, 溫度:'+Copy(FData,6,4)+' ℃');
      FThis.WidgetLCDLabel1.Caption.Value := StrToFloat(Copy(FData,6,4));
      FThis.WidgetLCDLabel2.Caption.Value := StrToFLoat(Copy(FData,1,5));
    End
    else
    begin
      //ShowMessage('返回數據:'+FData);   
    End;
  end
  else
  begin
    //ShowMessage('返回數據:無數據!');   
  end        
end;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

# 8. 運行結果

  通過工具欄儲存,將程式儲存為 sdb 專案檔案。

儲存專案

  使用滑鼠點選工具欄運行(Run),測試運行結果。首先點選藍芽圖示按鈕,右側下拉框顯示可選的藍芽設備,點選選擇HC-06,再點選下方的服務圖示按鈕,右側下拉框會顯示處可選的服務,點選Dev B系列,此時關注HC-06模組的指示,待指示燈停止閃爍變成常亮狀態則配對成功,此時將圖中的撥桿撥向「開」,數值顯示屏中的溫濕度數據每隔兩秒更新一次。

藍芽讀取溫濕度 運行結果
藍芽控制LED燈
WiFi控制LED燈

← 藍芽控制LED燈 WiFi控制LED燈→

Copyright © 2021-2025 愛招飛IsoFace | ALL Rights Reserved
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式