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

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

3天内不再提示

云平台部署:基于Arduino与机智云的家居环境远程系统设计

机智云 2022-07-27 10:19 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

基于Arduino机智云的家居环境远程监控系统具备协议简单、成本低、功耗低、组网容易等优势。在智慧家居实现的同时,可以根据其它控制领域的需要,进行需求的移植,具有很强的延伸性和可移植性,提高开发效率。同时当前环境也存在这样的需求也有硬件基础保障。通过该项目的制作,也让我了解到远程家电控制并不是什么神奇的东西的,只要每一个人肯去尝试,肯去面对不同的困难,并通过自己的思考和向他人请求帮助,每一个过程都是很奇妙的,往往在这个过程中,你会获得许多意想不到的收获。

本项目分成三部分——工程实施、云平台部署、APP开发,本次分享云平台部署部分。

一、创建项目

1.1 登陆机智云开发者中心dev.gizwits.com,创建新产品

680dd5b2-0d1a-11ed-9ade-dac502259ad0.png

1.2 进入项目,查看产品的基本信息

683e35ea-0d1a-11ed-9ade-dac502259ad0.png

二、添加数据点

2.1 根据产品功能定义数据点

6849b9a6-0d1a-11ed-9ade-dac502259ad0.png

三、进行虚拟设备调试

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

687b83c8-0d1a-11ed-9ade-dac502259ad0.png

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

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

68873a7e-0d1a-11ed-9ade-dac502259ad0.png

四、下载MCU代码包

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

68af15bc-0d1a-11ed-9ade-dac502259ad0.png

4.2 添加库文件,进行代码移植

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

68ba9a40-0d1a-11ed-9ade-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代码包

68cb6f28-0d1a-11ed-9ade-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修改教程”https://www.sohu.com/a/476083681_486728

使项目成功编译

原文地址:https://blog.csdn.net/a6662580/category_11596658.html

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

    关注

    191

    文章

    6533

    浏览量

    197622
  • 机智云
    +关注

    关注

    3

    文章

    653

    浏览量

    27857
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    机智物联网平台设备接入完整实操教程

    机智是物联网设备云端服务平台,提供设备管理、数据处理等全套解决方案。本教程详解硬件接入平台全流程,结合FreeRTOS实现多任务处理与高效通信,帮助开发者快速掌握设备上
    的头像 发表于 05-19 18:04 44次阅读
    <b class='flag-5'>机智</b><b class='flag-5'>云</b>物联网<b class='flag-5'>平台</b>设备接入完整实操教程

    基于STM32与机智的智能家居系统(完整项目)

    物联网与嵌入式技术推动智能家居成为主流,传统家居存在功能单一、监测不全、控制繁琐等缺陷。本文设计基于STM32F103C8T6与机智平台
    的头像 发表于 05-15 18:04 113次阅读
    基于STM32与<b class='flag-5'>机智</b><b class='flag-5'>云</b>的智能<b class='flag-5'>家居</b><b class='flag-5'>系统</b>(完整项目)

    平台远程抄表系统简析

    众所周知,平台远程抄表系统早已不是新鲜事物,而是工业能源数字化管控的“核心基建”,靠精准采集、智能分析的硬实力,成为企业能耗管控的刚需配置。下面我们来了解一下这套
    的头像 发表于 01-22 10:05 333次阅读
    <b class='flag-5'>云</b><b class='flag-5'>平台</b><b class='flag-5'>远程</b>抄表<b class='flag-5'>系统</b>简析

    STM32快速上实战指南:手把手带你入门机智

    本项目基于STM32F103C8T6最小系统板,采用HAL库开发方式,结合ESP01sWi-Fi模块,实现将各类传感器数据快速上传至机智平台。通过移植
    的头像 发表于 12-10 18:04 1542次阅读
    STM32快速上<b class='flag-5'>云</b>实战指南:手把手带你入门<b class='flag-5'>机智</b><b class='flag-5'>云</b>

    如何快速在服务器上部署Web环境

    如何快速在服务器上部署Web环境
    的头像 发表于 10-14 14:16 948次阅读

    基于机智平台的新疆农田气候检测系统设计与实现

    本文设计了一种基于平台的新疆农田气候检测系统,用于实时监测风速、温湿度和PM2.5等环境参数,提升农业生产智能化水平。系统采用STM32单
    的头像 发表于 09-23 18:45 994次阅读
    基于<b class='flag-5'>机智</b><b class='flag-5'>云</b><b class='flag-5'>平台</b>的新疆农田气候检测<b class='flag-5'>系统</b>设计与实现

    汉威科技空气质量传感器助力家居环境安全监测

    家居环境是人类的“第一空间”,是人们安身立命、享受生活的地方,然而现代社会的家居环境往往暗藏危险,尤其是甲醛这种看不见摸不着的有害物质。
    的头像 发表于 08-22 17:51 1444次阅读

    STM32项目分享:智能家居(机智)升级版

    01—项目简介1.功能详解STM32智能家居(机智)升级版功能如下:检测功能:监测环境温湿度、烟雾浓度、一氧化碳、空气质量、光照强
    的头像 发表于 07-02 18:04 1124次阅读
    STM32项目分享:智能<b class='flag-5'>家居</b>(<b class='flag-5'>机智</b><b class='flag-5'>云</b>)升级版

    物联网智能家居方案-基于Nucleo-STM32L073&amp;机智实例项目打包下载

    物联网智能家居方案-基于Nucleo-STM32L073&机智实例项目打包,推荐下载!
    发表于 05-29 21:50

    物联网智能家居方案-基于Nucleo-STM32L073&amp;机智 项目实例

    物联网智能家居方案-基于Nucleo-STM32L073&机智 项目实例下载! 纯分享帖,需要者可点击附件免费获取完整资料~~~【免责声明】本文系网络转载,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问
    发表于 05-23 21:01

    STM32与机智连接实现步骤与技巧(下篇):机智代码移植与优化

    在《STM32与机智连接实现步骤与技巧(上篇)》中,我们介绍了硬件连接和通信协议配置。本篇将重点讲解如何将机智相关代码移植到STM32,完成数据上传和设备控制。我们将介绍如何在ST
    的头像 发表于 05-23 18:10 1432次阅读
    STM32与<b class='flag-5'>机智</b><b class='flag-5'>云</b>连接实现步骤与技巧(下篇):<b class='flag-5'>机智</b><b class='flag-5'>云</b>代码移植与优化

    STM32与机智连接实现步骤与技巧(上篇)

    通过STM32与机智的连接,开发者可以实现设备的远程控制和数据管理,提升物联网应用的智能化水平。本文将介绍STM32与机智连接的具体步骤
    的头像 发表于 05-23 18:10 1462次阅读
    STM32与<b class='flag-5'>机智</b><b class='flag-5'>云</b>连接实现步骤与技巧(上篇)

    HarmonyOS5服务技术分享--函数预加载文章整理

    ​​嗨,亲爱的开发者朋友们!​​? 今天咱们来聊聊如何使用​​端一体化方式开发函数​​,尤其针对华为的预加载服务。整个过程会手把手带你从零开始,涵盖创建工程、编写代码、调试到部署,帮你轻松掌握
    发表于 05-22 20:33

    HarmonyOS5服务技术分享--Serverless抽奖模板部署

    活动。不用写复杂代码,跟着步骤走就能搞定,文末还有部署避坑指南哦~ 一、前期准备 1️⃣ ​​注册账号+创建项目​​ 先到华为开发者平台注册账号 创建新项目时记得勾选\"开发
    发表于 05-22 20:25

    HarmonyOS5服务技术分享--ArkTS开发Node环境

    服务。例如: 用户身份验证 数据实时处理(如订单状态更新) 第三方服务集成(如支付回调) ?️ 二、手把手开发流程:从配置到部署 1️⃣ ​​环境准备​​ ​​工具链​​:安装DevEco
    发表于 05-22 17:21