RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于Arduino與機(jī)智云的家居環(huán)境遠(yuǎn)程監(jiān)控系統(tǒng)

9GxC_IoTMaker ? 來源:csdn ? 作者:csdn ? 2022-07-26 11:22 ? 次閱讀

基于Arduino機(jī)智云的家居環(huán)境遠(yuǎn)程監(jiān)控系統(tǒng)具備協(xié)議簡(jiǎn)單、成本低、功耗低、組網(wǎng)容易等優(yōu)勢(shì)。在智慧家居實(shí)現(xiàn)的同時(shí),可以根據(jù)其它控制領(lǐng)域的需要,進(jìn)行需求的移植,具有很強(qiáng)的延伸性和可移植性,提高開發(fā)效率。同時(shí)當(dāng)前環(huán)境也存在這樣的需求也有硬件基礎(chǔ)保障。通過該項(xiàng)目的制作,也讓我了解到遠(yuǎn)程家電控制并不是什么神奇的東西的,只要每一個(gè)人肯去嘗試,肯去面對(duì)不同的困難,并通過自己的思考和向他人請(qǐng)求幫助,每一個(gè)過程都是很奇妙的,往往在這個(gè)過程中,你會(huì)獲得許多意想不到的收獲。

本項(xiàng)目分成三部分——工程實(shí)施、云平臺(tái)部署、APP開發(fā),本次分享云平臺(tái)部署部分。

一、創(chuàng)建項(xiàng)目

1.1 登陸機(jī)智云開發(fā)者中心dev.gizwits.com,創(chuàng)建新產(chǎn)品

c9c36a0e-0c90-11ed-ba43-dac502259ad0.png

1.2 進(jìn)入項(xiàng)目,查看產(chǎn)品的基本信息

ca134c0e-0c90-11ed-ba43-dac502259ad0.png

二、添加數(shù)據(jù)點(diǎn)

2.1 根據(jù)產(chǎn)品功能定義數(shù)據(jù)點(diǎn)

ca419b18-0c90-11ed-ba43-dac502259ad0.png

三、進(jìn)行虛擬設(shè)備調(diào)試

3.1 創(chuàng)建好數(shù)據(jù)點(diǎn)后,進(jìn)行虛擬設(shè)備調(diào)試

ca71fefc-0c90-11ed-ba43-dac502259ad0.png

3.2 在機(jī)智云APP能夠觀察機(jī)智云平臺(tái)模擬的數(shù)據(jù)

根據(jù)系統(tǒng)的需要添加或修改數(shù)據(jù)點(diǎn)信息

ca970fc6-0c90-11ed-ba43-dac502259ad0.png

四、下載MCU代碼包

4.1 在確定數(shù)據(jù)點(diǎn)無誤后,點(diǎn)擊MCU開發(fā)

cabacd58-0c90-11ed-ba43-dac502259ad0.png

4.2 添加庫(kù)文件,進(jìn)行代碼移植

生成代碼包后,把代碼包導(dǎo)入Arduino IDE開發(fā)環(huán)境的libraries文件中,libraries是Arduino的庫(kù)文件,包含自帶的庫(kù)文件和用戶添加的外部庫(kù)文件

cadc65bc-0c90-11ed-ba43-dac502259ad0.png

把networkConfig.ino的配網(wǎng)代碼移植到simpleTry.ino,把串口打印的代碼注釋起來,可參考“史上最詳細(xì)的Arduino uno R3接入機(jī)智云教程

https://club.gizwits.com/thread-6728-1-1.html

然后根據(jù)要求修改代碼,以下僅供參考:


#include #include #include #include int con_ledPin = 13;    //成功連接網(wǎng)絡(luò),13引腳低電平int smokePin = 2;int movePin = 3;int alarmPin = 4;int ledPin = 5;int relayPin1 = 8;int relayPin2 = 9;int firePin = A0;int lightPin = A1;int beepPin = 10;int temhumPin = 11;bool alarmflag = 0;dht myDHT_11;SoftwareSerial mySerial(A2, A3); // A2 -> RX, A3 -> TXGizwits myGizwits;#define   KEY1              6#define   KEY2              7#define   KEY1_SHORT_PRESS  1#define   KEY1_LONG_PRESS   2#define   KEY2_SHORT_PRESS  4#define   KEY2_LONG_PRESS   8#define   NO_KEY            0#define   KEY_LONG_TIMER    3#define   ALARM_SHORT_PRESS 16#define   ALARM_LONG_PRESS  32unsigned long Last_KeyTime = 0;
unsigned long gokit_time_s(void){  return millis() / 1000;}char gokit_key1down(void){  unsigned long keep_time = 0;  if (digitalRead(KEY1) == LOW)  {    delay(100);    if (digitalRead(KEY1) == LOW)    {      keep_time = gokit_time_s();      while (digitalRead(KEY1) == LOW)      {        if ((gokit_time_s() - keep_time) > KEY_LONG_TIMER)        {          Last_KeyTime = gokit_time_s();          return KEY1_LONG_PRESS;        }      } //until open the key      if ((gokit_time_s() - Last_KeyTime) > KEY_LONG_TIMER)      {        return KEY1_SHORT_PRESS;      }      return 0;    }    return 0;  }  return 0;}char gokit_key2down(void){  unsigned long keep_time = 0;  if (digitalRead(KEY2) == LOW)  {    delay(100);    if (digitalRead(KEY2) == LOW)    {    delay(100);    if (digitalRead(KEY2) == LOW)    {      keep_time = gokit_time_s();      while (digitalRead(KEY2) == LOW) //until open the key      {        if ((gokit_time_s() - keep_time) > KEY_LONG_TIMER)        {          Last_KeyTime = gokit_time_s();          return KEY2_LONG_PRESS;        }      }      if ((gokit_time_s() - Last_KeyTime) > KEY_LONG_TIMER)      {        return KEY2_SHORT_PRESS;      }      return 0;    }    return 0;  }  return 0;}//室內(nèi)報(bào)警監(jiān)測(cè)char gokit_alarmdown(void){  unsigned long keep_time = 0;  if (digitalRead(alarmPin) == LOW)  {    delay(100);    if (digitalRead(alarmPin) == LOW)    {      keep_time = gokit_time_s();      while (digitalRead(alarmPin) == LOW) //until open the key      {        if ((gokit_time_s() - keep_time) > KEY_LONG_TIMER)        {          Last_KeyTime = gokit_time_s();          return ALARM_LONG_PRESS;        }      }      if ((gokit_time_s() - Last_KeyTime) > KEY_LONG_TIMER)      {        return ALARM_SHORT_PRESS;      }      return 0;    }    return 0;  }  return 0;}char gokit_keydown(void){  char ret = 0;  ret |= gokit_alarmdown();  ret |= gokit_key2down();  ret |= gokit_key1down();  return ret;}void KEY_Handle(void){  /*  Press for over than 3 second is Long Press  */  switch (gokit_keydown())  {    case KEY1_SHORT_PRESS:      myGizwits.setBindMode(WIFI_PRODUCTION_TEST);      break;    case KEY1_LONG_PRESS:      myGizwits.setBindMode(WIFI_RESET_MODE);      break;    case KEY2_SHORT_PRESS:      myGizwits.setBindMode(WIFI_SOFTAP_MODE);      //Soft AP mode      break;    case KEY2_LONG_PRESS:      myGizwits.setBindMode(WIFI_AIRLINK_MODE);      //AirLink mode      break;    case ALARM_SHORT_PRESS:      alarmflag = ((alarmflag == 0) ? 1 : 0);      if (alarmflag)      {        digitalWrite(beepPin, LOW);      }      else      {        digitalWrite(beepPin, HIGH);      }      break;    case ALARM_LONG_PRESS:      digitalWrite(ledPin, HIGH); //設(shè)置為高電平      digitalWrite(relayPin1, HIGH); //設(shè)置為高電平      digitalWrite(relayPin2, HIGH); //設(shè)置為高電平      break;    default:      break;  }}//獲取溫度數(shù)據(jù)int dht_11_gettemperature() {  int chk = myDHT_11.read11(temhumPin);  int value = myDHT_11.temperature;  return value;}//獲取濕度數(shù)據(jù)int dht_11_gethumidity() {  int chk = myDHT_11.read11(temhumPin);  int value = myDHT_11.humidity;  return value;}/**  Serial Init , Gizwits Init  @param none  @return none*/void setup() {  // put your setup code here, to run once:  mySerial.begin(115200);  pinMode(KEY1, INPUT_PULLUP);  pinMode(KEY2, INPUT_PULLUP);  pinMode(smokePin, INPUT);  //設(shè)置為數(shù)字輸入模式  pinMode(movePin, INPUT);  pinMode(alarmPin, INPUT_PULLUP);  pinMode(firePin, INPUT);  pinMode(lightPin, INPUT); //模擬量為輸入模式  pinMode(beepPin, OUTPUT); //設(shè)置為數(shù)字輸出模式  pinMode(ledPin, OUTPUT);  pinMode(relayPin1, OUTPUT);  pinMode(relayPin2, OUTPUT);  pinMode(con_ledPin, OUTPUT);  digitalWrite(beepPin, HIGH); //設(shè)置為高電平  myGizwits.begin();}void wifiStatusHandle(){  if (myGizwits.wifiHasBeenSet(WIFI_CON_ROUTER))  {    digitalWrite(con_ledPin, HIGH); //設(shè)置為低電平    digitalWrite(ledPin, HIGH); //設(shè)置為高電平    digitalWrite(relayPin1, HIGH); //設(shè)置為高電平    digitalWrite(relayPin2, HIGH); //設(shè)置為高電平  }}/**  Arduino loop  @param none  @return none*/void loop() {  //Configure network  //if(XXX) //Trigger Condition  //myGizwits.setBindMode(0x02);  //0x01:Enter AP Mode;0x02:Enter Airlink Mode  bool varW_Alarm = alarmflag;//Add Sensor Data Collection  myGizwits.write(VALUE_Alarm, varW_Alarm);  unsigned long varW_fire = analogRead(firePin);//Add Sensor Data Collection  myGizwits.write(VALUE_fire, varW_fire);  unsigned long varW_Move_Test = digitalRead(movePin);//Add Sensor Data Collection  myGizwits.write(VALUE_Move_Test, varW_Move_Test);  unsigned long varW_Tem = dht_11_gettemperature();//Add Sensor Data Collection  myGizwits.write(VALUE_Tem, varW_Tem);  unsigned long varW_Hum = dht_11_gethumidity();//Add Sensor Data Collection  myGizwits.write(VALUE_Hum, varW_Hum);  unsigned long varW_Light = analogRead(lightPin);//Add Sensor Data Collection  myGizwits.write(VALUE_Light, varW_Light);  bool varR_LED_OnOff = 0;  if (myGizwits.hasBeenSet(EVENT_LED_OnOff))  {    myGizwits.read(EVENT_LED_OnOff, &varR_LED_OnOff); //Address for storing data    if (varR_LED_OnOff == 0)    {      digitalWrite(ledPin, HIGH);    }    else    {      digitalWrite(ledPin, LOW);    }  }  bool varR_Relay_1 = 0;  if (myGizwits.hasBeenSet(EVENT_Relay_1))  {    myGizwits.read(EVENT_Relay_1, &varR_Relay_1); //Address for storing data    if (varR_Relay_1 == 0)    {      digitalWrite(relayPin1, HIGH);    }    else    {      digitalWrite(relayPin1, LOW);    }  }  bool varR_Relay_2 = 0;  if (myGizwits.hasBeenSet(EVENT_Relay_2))  {    myGizwits.read(EVENT_Relay_2, &varR_Relay_2); //Address for storing data    if (varR_Relay_2 == 0)    {      digitalWrite(relayPin2, HIGH);    }    else    {      digitalWrite(relayPin2, LOW);    }  }  bool varR_beep = 0;  if (myGizwits.hasBeenSet(EVENT_beep))  {    myGizwits.read(EVENT_beep, &varR_beep); //Address for storing data    if (varR_beep == 0 )    {      digitalWrite(beepPin, HIGH);    }    else    {      digitalWrite(beepPin, LOW);    }  }  KEY_Handle();  wifiStatusHandle();  myGizwits.process();}
 
五、下載Android開發(fā)代碼包

5.1 在應(yīng)用開發(fā)生成APP代碼包

caf35aa6-0c90-11ed-ba43-dac502259ad0.png

通過Android Studio軟件導(dǎo)入項(xiàng)目進(jìn)行編譯,因版本問題需要修改關(guān)鍵詞,compile 均替換為implementation,testcompile均替換為testimplementation,可參考以下代碼:


apply plugin: 'com.android.application'
android {    compileSdkVersion 25    buildToolsVersion '28.0.2'    useLibrary 'org.apache.http.legacy'    defaultConfig {        applicationId "com.gizwits.opensource.appkit"        minSdkVersion 16        targetSdkVersion 25        versionCode 1        versionName "2.5.1.072715"        multiDexEnabled true    }    buildTypes {        release {            minifyEnabled false            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'        }    }}
dependencies {    implementation fileTree(dir: 'libs', include: ['*.jar'])    implementation 'com.android.support.constraint1.1.0'    testImplementation 'junit4.12'    implementation 'com.android.support24.2.1'    implementation files('libs/BLEasyConfig.jar')    implementation files('libs/easylink2.0.jar')    implementation files('libs/GizWifiSDK.jar')    implementation files('libs/jpush-android-2.1.5.jar')    implementation files('libs/Lark7618SDK_noudp1606031910_0101.jar')    implementation files('libs/libammsdk.jar')    implementation files('libs/libForEElink.jar')    implementation files('libs/LSFSK_1.0.jar')    implementation files('libs/ltlink2.jar')    implementation files('libs/mta-sdk-1.6.2.jar')    implementation files('libs/OneShotConfig.jar')    implementation files('libs/open_sdk_r5756.jar')    implementation files('libs/pushservice-5.6.0.30.jar')    implementation files('libs/simpleconfigwizardlib.jar')    implementation files('libs/xUtils-2.6.14.jar')    implementation files('libs/zxing.jar')    implementation 'com.android.support25.3.0'    implementation 'com.yanzhenjie1.0.5'}

同時(shí)可參考“基于機(jī)智云AIoT平臺(tái)的Android開源app修改教程”https://www.sohu.com/a/476083681_486728

使項(xiàng)目成功編譯

審核編輯 :李倩


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 監(jiān)控系統(tǒng)

    關(guān)注

    21

    文章

    3904

    瀏覽量

    174402
  • Arduino
    +關(guān)注

    關(guān)注

    188

    文章

    6468

    瀏覽量

    186952
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    STM32項(xiàng)目分享:機(jī)智智慧農(nóng)業(yè)系統(tǒng)

    01—項(xiàng)目簡(jiǎn)介1.功能詳解基于STM32的機(jī)智智慧農(nóng)業(yè)系統(tǒng)。功能如下:溫濕度采集:使用DHT11溫濕度傳感器采集環(huán)境溫濕度土壤濕度
    的頭像 發(fā)表于 12-19 18:40 ?88次閱讀
    STM32項(xiàng)目分享:<b class='flag-5'>機(jī)智</b><b class='flag-5'>云</b>智慧農(nóng)業(yè)<b class='flag-5'>系統(tǒng)</b>

    stm32單片機(jī)畢業(yè)設(shè)計(jì)——物聯(lián)網(wǎng)智能家居源代碼原理圖

    機(jī)智平臺(tái)的通信,用戶可通過手機(jī)APP進(jìn)行遠(yuǎn)程監(jiān)控和管理。系統(tǒng)具有網(wǎng)絡(luò)化、數(shù)字化和智能化的特點(diǎn),能夠?qū)崿F(xiàn)對(duì)
    的頭像 發(fā)表于 11-30 01:03 ?583次閱讀
    stm32單片機(jī)畢業(yè)設(shè)計(jì)——物聯(lián)網(wǎng)智能<b class='flag-5'>家居</b>源代碼原理圖

    機(jī)智智能家居網(wǎng)關(guān)方案的組網(wǎng)方式與通訊協(xié)議解析

    組網(wǎng)方式和通訊協(xié)議在智能家居領(lǐng)域,組網(wǎng)方式和通訊協(xié)議的選擇至關(guān)重要,它們直接影響到設(shè)備和網(wǎng)關(guān)之間的互通。機(jī)智作為智能家居領(lǐng)域的領(lǐng)先企業(yè),采用了多種組網(wǎng)方式以滿足不同場(chǎng)景的需求。組網(wǎng)方
    的頭像 發(fā)表于 11-23 01:02 ?327次閱讀
    <b class='flag-5'>機(jī)智</b><b class='flag-5'>云</b>智能<b class='flag-5'>家居</b>網(wǎng)關(guān)方案的組網(wǎng)方式與通訊協(xié)議解析

    機(jī)智智能家居網(wǎng)關(guān)方案的組網(wǎng)方式與通訊協(xié)議解析

    在智能家居領(lǐng)域,組網(wǎng)方式和通訊協(xié)議的選擇至關(guān)重要,它們直接影響到設(shè)備和網(wǎng)關(guān)之間的互通。機(jī)智作為智能家居領(lǐng)域的領(lǐng)先企業(yè),采用了多種組網(wǎng)方式以滿足不同場(chǎng)景的需求。
    的頭像 發(fā)表于 11-22 18:01 ?251次閱讀

    機(jī)智入門必備》手把手教你燒錄GAgent固件

    云中主要用于實(shí)現(xiàn)物聯(lián)網(wǎng)設(shè)備的聯(lián)網(wǎng)功能。它通過Wi-Fi連接到互聯(lián)網(wǎng),使設(shè)備能夠與機(jī)智平臺(tái)進(jìn)行數(shù)據(jù)交換,實(shí)現(xiàn)遠(yuǎn)程控制和監(jiān)控。我們可以知道ESP8266在
    的頭像 發(fā)表于 09-12 08:04 ?364次閱讀
    《<b class='flag-5'>機(jī)智</b><b class='flag-5'>云</b>入門必備》手把手教你燒錄GAgent固件

    空調(diào)遠(yuǎn)程監(jiān)控的意義與功能

    。 空調(diào)遠(yuǎn)程監(jiān)控的意義 空調(diào)作為現(xiàn)代家庭重要的電器之一,其運(yùn)行狀態(tài)直接影響到家居環(huán)境的舒適度和能源消耗。傳統(tǒng)空調(diào)的使用往往需要用戶手動(dòng)調(diào)節(jié),不僅操作繁瑣,還難以做到準(zhǔn)確控制,往往導(dǎo)致能源浪費(fèi)。而智能空調(diào)控制器
    的頭像 發(fā)表于 08-28 14:00 ?238次閱讀

    水產(chǎn)養(yǎng)殖環(huán)境遠(yuǎn)程監(jiān)控系統(tǒng)

    、系統(tǒng)概述 水產(chǎn)養(yǎng)殖環(huán)境遠(yuǎn)程監(jiān)控系統(tǒng),通過現(xiàn)代信息技術(shù)手段,對(duì)水產(chǎn)養(yǎng)殖環(huán)境進(jìn)行實(shí)時(shí)監(jiān)測(cè)、數(shù)據(jù)收集
    的頭像 發(fā)表于 08-20 16:36 ?250次閱讀

    STM32項(xiàng)目分享:智能家居機(jī)智系統(tǒng)

    STM32項(xiàng)目分享:智能家居機(jī)智系統(tǒng)
    的頭像 發(fā)表于 07-28 08:10 ?1832次閱讀
    STM32項(xiàng)目分享:智能<b class='flag-5'>家居</b>(<b class='flag-5'>機(jī)智</b><b class='flag-5'>云</b>)<b class='flag-5'>系統(tǒng)</b>

    農(nóng)作物生長(zhǎng)環(huán)境遠(yuǎn)程監(jiān)控與智能調(diào)控

    、大數(shù)據(jù)、計(jì)算以及人工智能等前沿科技,實(shí)現(xiàn)了對(duì)作物生長(zhǎng)環(huán)境的全方位、實(shí)時(shí)監(jiān)測(cè)與高效管理,不僅提升了農(nóng)業(yè)生產(chǎn)效率與作物品質(zhì),還顯著增強(qiáng)了農(nóng)業(yè)對(duì)環(huán)境變化的適應(yīng)能力,促進(jìn)了資源的可持續(xù)利用。 一、
    的頭像 發(fā)表于 07-04 17:44 ?541次閱讀
    農(nóng)作物生長(zhǎng)<b class='flag-5'>環(huán)境</b>的<b class='flag-5'>遠(yuǎn)程</b><b class='flag-5'>監(jiān)控</b>與智能調(diào)控

    基于機(jī)智物聯(lián)網(wǎng)的智能花卉栽培系統(tǒng)

    WiFi傳輸實(shí)現(xiàn)信息交互,并在機(jī)智物聯(lián)網(wǎng)平臺(tái)實(shí)現(xiàn)實(shí)時(shí)監(jiān)測(cè)和遠(yuǎn)程操控。種植者可遠(yuǎn)程監(jiān)測(cè)土壤溫濕度、環(huán)境溫濕度、CO2濃度、光照強(qiáng)度,并通過A
    的頭像 發(fā)表于 05-15 08:10 ?1355次閱讀
    基于<b class='flag-5'>機(jī)智</b><b class='flag-5'>云</b>物聯(lián)網(wǎng)的智能花卉栽培<b class='flag-5'>系統(tǒng)</b>

    發(fā)那科數(shù)控機(jī)床遠(yuǎn)程監(jiān)控數(shù)據(jù)上

    發(fā)那科數(shù)控機(jī)床遠(yuǎn)程監(jiān)控數(shù)據(jù)上 在當(dāng)今數(shù)字化、網(wǎng)絡(luò)化的工業(yè)生產(chǎn)環(huán)境中,發(fā)那科數(shù)控機(jī)床作為全球領(lǐng)先的高端制造設(shè)備之一,其遠(yuǎn)程
    的頭像 發(fā)表于 05-13 17:03 ?453次閱讀
    發(fā)那科數(shù)控機(jī)床<b class='flag-5'>遠(yuǎn)程</b><b class='flag-5'>監(jiān)控</b>數(shù)據(jù)上<b class='flag-5'>云</b>

    基于機(jī)智物聯(lián)網(wǎng)智能家居系統(tǒng)

    目錄1、功能實(shí)現(xiàn)2、軟、硬件系統(tǒng)設(shè)計(jì)3、結(jié)論1功能實(shí)現(xiàn)采用機(jī)智APP實(shí)現(xiàn)全球控制,利用無線網(wǎng)絡(luò)技術(shù)連接家居設(shè)備到終端,實(shí)現(xiàn)智能操作。智能家居
    的頭像 發(fā)表于 03-30 08:09 ?878次閱讀
    基于<b class='flag-5'>機(jī)智</b><b class='flag-5'>云</b>物聯(lián)網(wǎng)智能<b class='flag-5'>家居</b><b class='flag-5'>系統(tǒng)</b>

    深入探討機(jī)智物聯(lián)網(wǎng)智能家居系統(tǒng)的優(yōu)化方案

    隨著經(jīng)濟(jì)發(fā)展和人民生活水平提高,對(duì)家居環(huán)境的需求不斷增加,智能家居變得至關(guān)重要。涵蓋家電控制、智能照明、安全監(jiān)控等領(lǐng)域,智能家居通過手機(jī)、電腦等連接網(wǎng)絡(luò),實(shí)現(xiàn)
    發(fā)表于 03-29 12:35

    基于機(jī)智物聯(lián)網(wǎng)的PCR溫度控制

    本文設(shè)計(jì)了基于物聯(lián)網(wǎng)的PCR溫度控制系統(tǒng),能夠?qū)崿F(xiàn)快速、準(zhǔn)確的溫度控制。通過將檢測(cè)設(shè)備端接入機(jī)智平臺(tái),使檢測(cè)人員能夠遠(yuǎn)程監(jiān)控PCR儀的運(yùn)行
    的頭像 發(fā)表于 03-07 08:09 ?767次閱讀
    基于<b class='flag-5'>機(jī)智</b><b class='flag-5'>云</b>物聯(lián)網(wǎng)的PCR溫度控制

    遠(yuǎn)程監(jiān)控平臺(tái),讓你的數(shù)據(jù)無處可藏!

    領(lǐng)域,平臺(tái)遠(yuǎn)程監(jiān)控可以應(yīng)用于各種設(shè)備,例如智能家居設(shè)備、工業(yè)設(shè)備、環(huán)境監(jiān)測(cè)設(shè)備等。通過平臺(tái),
    的頭像 發(fā)表于 01-05 17:00 ?547次閱讀
    RM新时代网站-首页