0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何在机智云平台创建智能产品

9GxC_IoTMaker 来源:CSDN技术社区 作者:程序小鹿 2022-04-14 08:14 次阅读

前言:本文主要介绍如何在机智云平台创建一个智能产品、定义功能数据点、生成MCU代码包并附上修改好的代码、生成APP代码编译附上参考代码。

需准备的硬件主要有Arduino uno R3、ESP8266

efd50388-bb05-11ec-aa7f-dac502259ad0.jpg

连线方式:A0读取模拟电压输入;Key1接到D6;Key2接到D7;LED接到D4;

efe43b64-bb05-11ec-aa7f-dac502259ad0.png

一、创建项目

1.1 创建新产品

登陆机智云AIoT开发平台 dev.gizwits.com 创建智能产品

f0138644-bb05-11ec-aa7f-dac502259ad0.png

1.2 进入项目可查看信息

什么是Product Key、Product Secret

Product Key又称产品标识码,开发者通过机智云后台创建新产品后,自动生成的一个32位字符串。在机智云的数据库中是一个唯一的号码,开发者将ProductKey写入设备主控MCU后,机智云通过此标识码对设备进行识别并自动完成注册。

设备接入机智云的前提是,需要机智云认同这个设备。Productkey是设备接入机智云的一个重要参数,该参数的基本含义是:一款设备识别码。例如某公司生产空调、热水器,空调和热水器是不同款设备,该公司设备接入机智云,至少需要两个Productkey参数。在开发MCU过程中,需要使用到该参数。

http://docs.gizwits.com/zh-cn/quickstart/noun.html

f0347278-bb05-11ec-aa7f-dac502259ad0.png

二、添加数据点

根据系统的需求添加数据点,可参考本系统数据点

什么是数据点?

数据点即设备产品的功能的抽象,用于描述产品功能及其参数。创建数据点后,设备与云端通讯的数据格式即可确定,设备、机智云可以相互识别设备与机智云互联互通的数据。

参考:http://docs.gizwits.com/zh-cn/quickstart/UseMCU.html

f0538852-bb05-11ec-aa7f-dac502259ad0.png

三、进行虚拟设备调试

3.1 创建好数据点后,进行虚拟设备调试

什么是虚拟设备?类似一款仿真器,能够模拟硬件设备。

虚拟设备是机智云云端可自动生成的一个仿真智能硬件,可模拟要开发或正在开发的智能硬件,来进行云端设备控制、手机APP控制、上报数据等需求。

开发者或企业研发人员在机智云平台开发时,如果正式的智能硬件产品产品还未完全开发完成,就可以很方便地使用该“虚拟设备”与正式产品的控制APP进行调试和验证,加快研发周期,降低研发成本。

https://baijiahao.baidu.com/s?id=1725343397578131479&wfr=spider&for=pc

f074f226-bb05-11ec-aa7f-dac502259ad0.png

3.2 在机智云APP能够观察机智云平台模拟的数据

f09943ce-bb05-11ec-aa7f-dac502259ad0.png

根据系统的需要添加或修改数据点信息

四、下载MCU代码包

4.1 在确定数据点无误后,点击MCU开发

f0b8fa84-bb05-11ec-aa7f-dac502259ad0.png

4.2 生成代码包后,把代码包导入Arduino IDE开发环境的libraries文件中,libraries是Arduino的库文件,包含自带的库文件和用户添加的外部库文件

f0d330e8-bb05-11ec-aa7f-dac502259ad0.png

把networkConfig.ino的配网代码移植到simpleTry.ino,把串口打印的代码注释起来,可参考资料分享:史上最详细的Arduino uno R3接入机智云教程

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

然后根据要求修改代码,以下仅供参考:

#include #include #include #include int con_ledPin = 13;  //成功连接网络,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;}//室内报警监测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); //设置为高电平   digitalWrite(relayPin1, HIGH); //设置为高电平   digitalWrite(relayPin2, HIGH); //设置为高电平   break;  default:   break; }}//获取温度数据int dht_11_gettemperature() { int chk = myDHT_11.read11(temhumPin); int value = myDHT_11.temperature; return value;}//获取湿度数据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); //设置为数字输入模式 pinMode(movePin, INPUT); pinMode(alarmPin, INPUT_PULLUP); pinMode(firePin, INPUT); pinMode(lightPin, INPUT); //模拟量为输入模式 pinMode(beepPin, OUTPUT); //设置为数字输出模式 pinMode(ledPin, OUTPUT); pinMode(relayPin1, OUTPUT); pinMode(relayPin2, OUTPUT); pinMode(con_ledPin, OUTPUT); digitalWrite(beepPin, HIGH); //设置为高电平 myGizwits.begin();}void wifiStatusHandle(){ if (myGizwits.wifiHasBeenSet(WIFI_CON_ROUTER)) {  digitalWrite(con_ledPin, HIGH); //设置为低电平  digitalWrite(ledPin, HIGH); //设置为高电平  digitalWrite(relayPin1, HIGH); //设置为高电平  digitalWrite(relayPin2, HIGH); //设置为高电平 }}/** 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开发代码包

5.1 在应用开发生成APP代码包

f0e74416-bb05-11ec-aa7f-dac502259ad0.png

通过Android Studio软件导入项目进行编译,因版本问题需要修改关键词,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'}

同时可参考基于机智云AIoT平台的Android开源app修改教程

使项目成功编译

原文标题:基于Arduino与机智云的家居环境远程系统设计(云平台部署)

文章出处:【微信公众号:机智云开发者】欢迎添加关注!文章转载请注明出处。

审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • mcu
    mcu
    +关注

    关注

    146

    文章

    16018

    浏览量

    343639
  • 机智云
    +关注

    关注

    2

    文章

    542

    浏览量

    26216
  • 智能产品
    +关注

    关注

    0

    文章

    84

    浏览量

    6907

原文标题:基于Arduino与机智云的家居环境远程系统设计(云平台部署)

文章出处:【微信号:IoTMaker,微信公众号:机智云开发者】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    【万元大奖】机智智能硬件创新大赛

    、有 5000 现金大奖、有关注、有机会 ......快!来机智展示你的作品,为自己“带盐”你可利用机智自助开发平台进行
    发表于 07-06 13:42

    【万元大奖】机智智能硬件创新大赛

    的作品,为自己“带盐”你可利用机智自助开发平台进行产品开发,可以借助 Gokit 或 一切硬件,产品可以是简单的
    发表于 07-12 17:32

    如何使用机智开发一款智能硬件产品

    机智平台机智物联网公司经过多年行业内的耕耘及对物联网行业的深刻理解,而推出的面向个人、企业开发者的一站式
    发表于 12-26 15:56

    机智智能家电运营管理服务平台获艾普兰智能创新奖

    服务平台,是机智为家电企业提供的一整套完整家电运营管理体系,涵盖智能家电技术开发、连接管理、设备管理、用户管理、第三方平台接入、人工
    发表于 03-13 18:30

    基于机智物联网平台智能楼宇服务机器人

    基于机智物联网平台智能楼宇服务机器人
    发表于 09-30 09:19

    机智CEO黄灼:机智5.0平台助力企业大数据分析和AI决策

    以向更加深入的领域展开洞察,致胜万物互联时代,而对服务的需求也会继续增长。机智在这个演进过程中充当送水人的作用,帮助企业快速实现产品智能
    发表于 11-08 11:34

    基于STM32和机智IoT服务平台智能花盆

    ,登陆以后创建一个新产品接着创建数据点,下面是我创建的数据点,光照强度后来没加上完成以后我们可以使用虚拟设备调试下载机智
    发表于 05-14 15:28

    基于机智iot开发平台快速创建具有商用租赁效果的硬件

    开发平台登录机智IoT开发平台,选择点击左上角“体验新版”,相当于进入了Beta版开发平台(非常适合新手使用)。3:根据需求
    发表于 01-05 18:13

    基于机智物联网平台智能厨房监测系统

    APP的自定义,要是想更省事的话,还可以使用官方提供的APP模板,以此节省了APP和云端的开发量。以下是使用机智开发平台进行云端建立的工程首先:登录dev.gizwits.com,创建
    发表于 07-20 11:25

    stm32连接机智创建

    stm32连接机智创建机智产品修改MCU代码文件给ESP8266烧写
    发表于 08-09 09:30

    机智轻网关服务,提升生产管理效率

    使用资源较少,性能较低的模组的产品,不要求断网下能够使用的产品机智轻网关模型机智轻网关开发
    发表于 06-09 19:24

    图文教程:GC211接入机智,实现智能产品、APP、后台搭建

    自助开发平台,实现智能产品+APP+运营管理后台搭建。硬件准备GC211转接板:内置4G模组ML302GoKi3第一步:创建智能
    发表于 06-22 20:02

    基于arduino和机智平台智能宠物屋设计

    伤害,设计本产品的目的是给宠物提供干净、舒适、安全的生存环境,帮助主人更加方便和更好地照料宠物。当主人上班、出差或旅游时,宠物的生存就无法得到保障,因此本文就基于Arduino和机智平台
    发表于 01-17 16:24

    机智DUT实现远程智能鱼池管理系统

    机智开发者中心(https://developer.gizwits.com),在智能产品上方点击创建,根据自己需求
    发表于 01-17 17:37

    何在机智云开发平台创建一个业务应用AEP

    本文主要讲述如何在机智云新版开发平台开通“业务应用AEP”,从而实现个性化数据运营管理。 什么是“业务应用AEP” 这其实个一个含有多种业务后台的工具,通过开通“业务应用AEP”,可以根据需要
    的头像 发表于 08-24 10:01 1524次阅读