依然存在稳定性问题

机智云官网——机智云

一个比较详细的教程——esp8266

一开始采用的是esp12f   可是他太不稳定,总是掉线,机智云的固件我也是刷了无数遍,哎太难了。

我比较懒,走过了太多的弯路。太迷茫又太累。博客很少写教程,只是做个笔记记述一下心路历程。

 /**
************************************************************
***********************************************************/
#include <Gizwits.h>
#include <Wire.h>
#include <SoftwareSerial.h>
//#include <PinChangeInt.h> //外部中断
SoftwareSerial mySerial(A2, A3); // A2 -> RX, A3 -> TX
bool varR_open = ;
Gizwits 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
const int TrigPin = ;
const int EchoPin = ;
float cm;
unsigned long Last_KeyTime = ;
unsigned long gokit_time_s(void)
{
return millis() / ;
}
char gokit_key1down(void)
{
unsigned long keep_time = ;
if (digitalRead(KEY1) == LOW)
{
delay();
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;
}
}
if ((gokit_time_s() - Last_KeyTime) > KEY_LONG_TIMER)
{
return KEY1_SHORT_PRESS;
}
return ;
}
return ;
}
return ;
}
char gokit_key2down(void)
{
int unsigned long keep_time = ;
if (digitalRead(KEY2) == LOW)
{
delay();
if (digitalRead(KEY2) == LOW)
{
keep_time = gokit_time_s();
while (digitalRead(KEY2) == LOW)
{ 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 ;
}
return ;
}
return ;
}
char gokit_keydown(void)
{
char ret = ;
ret |= gokit_key2down();
ret |= gokit_key1down();
return ret;
}
/**
* KEY_Handle
* @param none
* @return none
*/
void KEY_Handle(void)
{
/* Press for over than 3 second is Long Press */
switch (gokit_keydown())
{
case KEY1_SHORT_PRESS:
// mySerial.println(F("KEY1_SHORT_PRESS , Production Test Mode "));
myGizwits.setBindMode(WIFI_PRODUCTION_TEST);
break;
case KEY1_LONG_PRESS:
// mySerial.println(F("KEY1_LONG_PRESS ,Wifi Reset"));
myGizwits.setBindMode(WIFI_RESET_MODE);
break;
case KEY2_SHORT_PRESS:
// mySerial.println(F("KEY2_SHORT_PRESS Soft AP mode"));
myGizwits.setBindMode(WIFI_SOFTAP_MODE);
//Soft AP mode
break;
case KEY2_LONG_PRESS:
// mySerial.println(F("KEY2_LONG_PRESS ,AirLink mode"));
myGizwits.setBindMode(WIFI_AIRLINK_MODE);
digitalWrite(,HIGH);
//AirLink mode
break;
default:
break;
}
}
void ceju()
{
digitalWrite(TrigPin, LOW);
delayMicroseconds();
digitalWrite(TrigPin, HIGH);
delayMicroseconds();
digitalWrite(TrigPin, LOW);
cm = pulseIn(EchoPin, HIGH) / 58.0; //算成厘米
cm = (int(cm * 100.0)) / 100.0; //保留两位小数
mySerial.println(cm);
//Serial.print(cm);
if(cm<)
{
digitalWrite(,LOW);
digitalWrite(,HIGH);
} //Serial.print("cm");
//Serial.println();
}
/**
* Serial Init , Gizwits Init
* @param none
* @return none
*/
void setup() {
// put your setup code here, to run once:
mySerial.begin();
pinMode(KEY1, INPUT_PULLUP);
pinMode(KEY2, INPUT_PULLUP);
pinMode(,OUTPUT);// led
pinMode(,OUTPUT);
pinMode(,INPUT);
//pinMode (10,INPUT); pinMode(,OUTPUT);
pinMode (,OUTPUT);
digitalWrite(,HIGH);
digitalWrite(,HIGH);
digitalWrite(,HIGH);
digitalWrite(,HIGH);
digitalWrite(,HIGH);
pinMode(TrigPin, OUTPUT);
pinMode(EchoPin, INPUT); myGizwits.begin();
// mySerial.println("GoKit init OK \n");
//attachPinChangeInterrupt(4,xianwei, CHANGE); //开启外部中断
//attachInterrupt(0,xianwei,FALLING);
}
void xianwei()
{
digitalWrite(,HIGH);
digitalWrite(,LOW);
delay();
digitalWrite(,HIGH);
digitalWrite(,HIGH);
}
/**
* Wifi status printf
* @param none
* @return none
*/
void wifiStatusHandle()
{
if(myGizwits.wifiHasBeenSet(WIFI_SOFTAP))
{
// mySerial.println(F("WIFI_SOFTAP!"));
} if(myGizwits.wifiHasBeenSet(WIFI_AIRLINK))
{
// mySerial.println(F("WIFI_AIRLINK!"));
} if(myGizwits.wifiHasBeenSet(WIFI_STATION))
{
// mySerial.println(F("WIFI_STATION!"));
} if(myGizwits.wifiHasBeenSet(WIFI_CON_ROUTER))
{
//mySerial.println(F("WIFI_CON_ROUTER!"));
} if(myGizwits.wifiHasBeenSet(WIFI_DISCON_ROUTER))
{
// mySerial.println(F("WIFI_DISCON_ROUTER!"));
} if(myGizwits.wifiHasBeenSet(WIFI_CON_M2M))
{
// mySerial.println(F("WIFI_CON_M2M!"));
} if(myGizwits.wifiHasBeenSet(WIFI_DISCON_M2M))
{
// mySerial.println(F("WIFI_DISCON_M2M!"));
}
}
/**
* Arduino loop
* @param none
* @return none
*/
void loop() {
ceju();
if(digitalRead()==LOW)
{
xianwei();
}
bool varR_open = ;
if(myGizwits.hasBeenSet(EVENT_open))
{
myGizwits.read(EVENT_open,&varR_open);
if(varR_open ==){
digitalWrite(,LOW);
digitalWrite(,HIGH); }
else
{
digitalWrite(,HIGH);
digitalWrite(,HIGH);
}
}
bool varR_test = ;
if(myGizwits.hasBeenSet(EVENT_test))
{
myGizwits.read(EVENT_test,&varR_test);
if(varR_test ==){
digitalWrite(,LOW);
}
else
{
digitalWrite(,HIGH);
}
} KEY_Handle();
wifiStatusHandle();
myGizwits.process();
}

智能家居esp8266对接机智云的更多相关文章

  1. 为智能硬件提供一站式解决方案——机智云GoKit评测

    为智能硬件提供一站式解决方案——机智云GoKit评测 2014年12月24日 作者: ladouyu 3 17,414+ 4 EMW3162GoKit开发板STM32F103智能硬件机智云2.0 从物 ...

  2. 国内物联网平台(5):机智云IoT物联网云服务平台及智能硬件自助开发平台

    国内物联网平台(5)——机智云IoT物联网云服务平台及智能硬件自助开发平台 马智 平台定位 机智云平台是致力于物联网.智能硬件云服务的开放平台.平台提供了从定义产品.设备端开发调试.应用开发.产测.运 ...

  3. 国内物联网平台初探(五) ——机智云IoT物联网云服务平台及智能硬件自助开发平台

    平台定位 机智云平台是致力于物联网.智能硬件云服务的开放平台.平台提供了从定义产品.设备端开发调试.应用开发.产测.运营管理等覆盖智能硬件接入到运营管理全生命周期服务的能力. 机智云平台为开发者提供了 ...

  4. Android开发SDK接入机智云,智能家居实现APP远程控制多设备

    代码地址如下:http://www.demodashi.com/demo/12847.html 一.前言. 此框架只用了一周星期做了出来,因为对机智云的框架比较熟悉了 !期间SDK初始化出了问题,去咨 ...

  5. 用机智云做PWM占空比控制电机,物联网智能家居应用

      因为是新申请的博客,所以申请了总想往里面加点东西,所以把我之前在机智云写的帖子复制了过来 (各位抱歉,由于之前上传的文件可能有错误,之前上传的文件PWM不能用,那么我又重新上传了一个文件,这个文件 ...

  6. ESP8266 智能家居简单实现

    本文转自CSDN,地址 https://blog.csdn.net/jsagacity/article/details/78531819 全文如下 : 前段时间,公司利用 ESP8266 这个WiFi ...

  7. esp8266烧写机智云固件方法

    转:http://blog.csdn.net/k7arm/article/details/51925941 =====================以下为我转载的文章================ ...

  8. Diy智能家居-1.基于esp8266的语音控制系统(开篇)

    目录Diy智能家居-1.基于esp8266的语音控制系统(开篇) https://blog.csdn.net/arno1988/article/details/82628589 Diy智能家居-2.基 ...

  9. 智能家居入门DIY——【一、ESP8266之软串口HTTP请求】

    前段时间做了一个激光雕刻,玩的不亦乐乎.对Arduino大感兴趣,于是又入手一块20大洋版,配上买学习套件时的诸多零件——红外发射管.一体化红外接收头.DHT11温湿度传感器.ESP8266等,以及某 ...

随机推荐

  1. 【转载】mysql binlog日志自动清理及手动删除

    说明:当开启mysql数据库主从时,会产生大量如mysql-bin.00000* log的文件,这会大量耗费您的硬盘空间.mysql-bin.000001mysql-bin.000002mysql-b ...

  2. ElasticSearch 集群监控

    要监控哪些 ElasticSearch metrics? Elasticsearch 提供了大量的 Metric,可以帮助您检测到问题的迹象,在遇到节点不可用.out-of-memory.long g ...

  3. React Native随笔——组件TextInput

    一.实例 先看一下我要做的搜索框的样子 需要一个Image,和一个TextInput 去掉默认下划线 underlineColorAndroid='transparent' 设置光标颜色 select ...

  4. 更换HomeBrew源

    比较少用brew,只有之前安装Opencv的时候用过一次,后面有人问我怎么装,于是帮他研究了一下.MacOS的brew其实就是通过两个git仓库(brew和homebrew-core)来实现的源更新机 ...

  5. BZOJ 1293: [SCOI2009]生日礼物【单调队列】

    1293: [SCOI2009]生日礼物 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 2534  Solved: 1383[Submit][Stat ...

  6. Android扫码二维码、美女瀑布流、知乎网易音乐、动画源码等

    Android精选源码 QRCode 扫描二维码.扫描条形码.相册获取图片后识别.生...   一个简洁好看的loading弹窗   Android用瀑布流展示美女图片源码   Android知乎阅读 ...

  7. 部署Asp.net Core 项目发生502.5 或者500 没有其他提示信息

    最近将公司原来.NetCore 1.6的项目升级到.net Core 2.0首先发生 502.5的错误,包括IIS日志,Windows应用程序日志都没有记录问题始终解决不了,首先看看官网给出的解决方案 ...

  8. visual studio添加lib库

    方法1: 通过设置工程配置来添加lib库. A.添加工程的头文件目录:工程---属性---配置属性---c/c++---常规---附加包含目录:加上头文件存放目录. B.添加文件引用的lib静态库路径 ...

  9. [国嵌攻略][098][Linux内核简介]

    Linux系统架构 1.用户空间:应用程序.C函数库 2.内核空间:系统调用接口.内核.体系结构相关代码 Linux系统利用处理器不同的工作模式,使用其中的两个级别分别来运行Linux内核与应用程序, ...

  10. PHP网站常见安全漏洞,及相应防范措施总结

    目前,基于PHP的网站开发已经成为目前网站开发的主流,本文笔者重点从PHP网站攻击与安全防范方面进行探究,旨在减少网站漏洞,希望对大家有所帮助! 一.常见PHP网站安全漏洞 对于PHP的漏洞,目前常见 ...