智能家居esp8266对接机智云
依然存在稳定性问题
机智云官网——机智云
一个比较详细的教程——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对接机智云的更多相关文章
- 为智能硬件提供一站式解决方案——机智云GoKit评测
为智能硬件提供一站式解决方案——机智云GoKit评测 2014年12月24日 作者: ladouyu 3 17,414+ 4 EMW3162GoKit开发板STM32F103智能硬件机智云2.0 从物 ...
- 国内物联网平台(5):机智云IoT物联网云服务平台及智能硬件自助开发平台
国内物联网平台(5)——机智云IoT物联网云服务平台及智能硬件自助开发平台 马智 平台定位 机智云平台是致力于物联网.智能硬件云服务的开放平台.平台提供了从定义产品.设备端开发调试.应用开发.产测.运 ...
- 国内物联网平台初探(五) ——机智云IoT物联网云服务平台及智能硬件自助开发平台
平台定位 机智云平台是致力于物联网.智能硬件云服务的开放平台.平台提供了从定义产品.设备端开发调试.应用开发.产测.运营管理等覆盖智能硬件接入到运营管理全生命周期服务的能力. 机智云平台为开发者提供了 ...
- Android开发SDK接入机智云,智能家居实现APP远程控制多设备
代码地址如下:http://www.demodashi.com/demo/12847.html 一.前言. 此框架只用了一周星期做了出来,因为对机智云的框架比较熟悉了 !期间SDK初始化出了问题,去咨 ...
- 用机智云做PWM占空比控制电机,物联网智能家居应用
因为是新申请的博客,所以申请了总想往里面加点东西,所以把我之前在机智云写的帖子复制了过来 (各位抱歉,由于之前上传的文件可能有错误,之前上传的文件PWM不能用,那么我又重新上传了一个文件,这个文件 ...
- ESP8266 智能家居简单实现
本文转自CSDN,地址 https://blog.csdn.net/jsagacity/article/details/78531819 全文如下 : 前段时间,公司利用 ESP8266 这个WiFi ...
- esp8266烧写机智云固件方法
转:http://blog.csdn.net/k7arm/article/details/51925941 =====================以下为我转载的文章================ ...
- Diy智能家居-1.基于esp8266的语音控制系统(开篇)
目录Diy智能家居-1.基于esp8266的语音控制系统(开篇) https://blog.csdn.net/arno1988/article/details/82628589 Diy智能家居-2.基 ...
- 智能家居入门DIY——【一、ESP8266之软串口HTTP请求】
前段时间做了一个激光雕刻,玩的不亦乐乎.对Arduino大感兴趣,于是又入手一块20大洋版,配上买学习套件时的诸多零件——红外发射管.一体化红外接收头.DHT11温湿度传感器.ESP8266等,以及某 ...
随机推荐
- 第十四章:Python の Web开发基础(一) HTML与CSS
本課主題 HTML 介绍 CSS 介绍 HTML 介绍 HTML 的头部份,重点: 定义HTML 的编码:<meta charset="UTF-8"/> 定义标题: & ...
- navicat for sqlite 11.1.12 patch 永久试用 不报毒
因为最近需要用这个但是网上都是注册机没有成功注册,所以就自己动手使用ollydbg开刀, 修改成了永久试用版本. 着急用所以没仔细分析,暂时先这样吧. 这个下载版本 http://dlsw.ba ...
- 常见的DBCP连接池配置
项目中使用mybatis出现一个问题,项目刚启动时,查询项目列表是ok的,过上一段时间之后,再次查询项目列表,查询失败,初步判断是因为mysql的连接问题,最后查阅资料,发现是连接池中的连接失效,导致 ...
- JavaScript(五)语句
js 的语句有 表达式语句, 复合语句{}, 空语句, 声明语句 if 默认不写大括号 可以执行 紧接着的一行 do-while do{}while() while for(初始化:判断:更新){执 ...
- 五分钟学习React(三):纯HTML代码搭建React应用
上一期我们使用了React官方的脚手架运行React应用.大家可能会觉得这种方法很繁琐,需要配置各种第三方插件.JQuery时代的前端真是让人怀念.这一期,我就带领大家创建一个"怀旧版&qu ...
- git 删除分支操作
删除分支时自己不能够在要删除的分支上 删除本地的某个分支 git branch -d branchname # 交互式删除分支 git branch -D branchname # 强制删除分支 删除 ...
- 关于 AutomationProperties.Name 的一些总结
在 XAML 代码中,我们偶尔会看到 AutomationProperies 的代码,如 AutomationProperties.Name="xxxxx", Automation ...
- Java中组合 设计技巧 实例
关于组合 和 集成 先放两篇文章:这两篇文章写的太好了. http://blog.csdn.net/u013905744/article/details/51752044 Java的组合(持有对 ...
- MacBook安装Win10
// 这是一篇导入进来的旧博客,可能有时效性问题. (一) 确认你的机型 以下机型支持: ü 安装64 位版本Win10 ü 不使用U盘安装Windows l MacBook(Retina 显 ...
- Java与算法之(9) - 直接插入排序
直接插入排序是最简单的排序算法,也比较符合人的思维习惯.想像一下玩扑克牌抓牌的过程.第一张抓到5,放在手里:第二张抓到3,习惯性的会把它放在5的前面:第三张抓到7,放在5的后面:第四张抓到4,那么我们 ...