【终极版】ESP8266远程控制wifi透传模块带调试app
本帖最后由 ITEAD创易工作室 于 2016-1-27 11:57 编辑你好,2016!ITEAD给大家带来新年的第一帖!发财贴!
http://v.youku.com/v_show/id_XMTM3NzUxMDc4OA==.html
为什么说是发财贴呢?今天要介绍给大家的是一款成品级的wifi远程串口透传模块,各种智能家居方案唾手可得!
这是一款使用ESP8266高度集成的通用串口wifi透传模块,可以用于快速开发智能远程控制设备。只需要简单的串口通信开发,即可实数据的传输和控制。
该模块出厂已烧写好固件,配置好wifi后会自动连接到我们的亚马逊全球服务器,调试app在安卓市场搜索“酷宅云调试”即可下载安装。
接下来,开始介绍今天的教程:远程点亮arduino的LED。
硬件接线示意图如下:
硬件接线实物图如下:
uno烧写代码:
int led_pin = 11;
//定义一个10字节的整型数据变量cmd作为命令,这里可以修改为不同的数字。此处设置为10是为了有更好的兼容性。
char cmd;
//判断收到的cmd是否有内容
bool valid_cmd = false;
void setup()
{
//定义连接led的引脚为输出信号
pinMode(led_pin, OUTPUT);
Serial.begin(9600);
}
void loop()
{
/*以下部分是串口信息处理过程*/
//定义一个整数型变量i
int i;
//如果串口收到有数据
if (Serial.available() > 0)
{
//变量i最大为10
for (i = 0; i < 10; i++)
{
//清空缓存,存入cmd变量,并以\0作为结束符
cmd = '\0';
}
//此时i只能取前9位,第10位是结束符\0
for (i = 0; i < 9; i++)
{
//再次判断串口如果收到有数据,防止数据丢失
if (Serial.available() > 0)
{
//给变量cmd赋值,取串口收到的前9位字符
cmd = Serial.read();
delay(1);
}
else
{
//如果串口数据超过9位,后面的字符直接忽略,跳到下一步
break;
}
}
/*以上串口信息处理结束*/
//得到最终变量cmd的有效值
valid_cmd = true;
}
//判断变量cmd的值,开始处理
if (valid_cmd)
{
//如果变量cmd的前2位的值是on
if (0 == strncmp(cmd, "on", 2))
{
//则连接led的引脚电压被置高5V,
digitalWrite(led_pin, HIGH);
//串口打印返回值ON,表示ON的操作执行成功
Serial.println("ON");
}
else if (0 == strncmp(cmd, "off", 3)) //否则如果变量cmd的前3位的值是off
{
//则连接继电器的引脚电压被置低0V,灯的电路被断开,灯灭
digitalWrite(led_pin, LOW);
//串口打印返回值F,表示OFF的操作执行成功
Serial.println("OFF");
}
else //如果以上两个条件都不成立,前2位不是ON,或者前3位不是OFF,即不正确的命令
{
//仅串口打印返回值X,表示指令错误。
Serial.println("X");
}
//到此,变量cmd的指令被处理完毕
valid_cmd = false;
}
//延迟10毫秒,返回loop主程序继续读取新的串口指令
delay(10);
}
添加设备和发送开关命令:
模块上的绿灯长亮,表示已经连接到服务器,可以正常工作。
发送“on”即可点亮LED,发送“off”即可关闭LED。
每个伟大的工程都是从blink开始的!智能家居就这么简单,期待坛友们伟大的成功!
本帖最后由 ITEAD创易工作室 于 2016-1-27 18:00 编辑
http://v.youku.com/v_show/id_XMTQ1ODM2NjI2MA==.html
再贴个远程控制舵机正反转的代码:
#include <Servo.h>
Servo myservo;
int pos = 0;
int servo_pin = 3;
char cmd;
bool valid_cmd = false;
void setup()
{
myservo.attach(servo_pin);
Serial.begin(9600);
}
void loop(){
/*以下部分是串口信息处理过程*/
//定义一个整数型变量i
int i;
//如果串口收到有数据
if (Serial.available() > 0)
{
//变量i最大为10
for (i = 0; i < 10; i++)
{
//清空缓存,存入cmd变量,并以\0作为结束符
cmd = '\0';
}
//此时i只能取前9位,第10位是结束符\0
for (i = 0; i < 9; i++)
{
//再次判断串口如果收到有数据,防止数据丢失
if (Serial.available() > 0)
{
//给变量cmd赋值,取串口收到的前9位字符
cmd = Serial.read();
delay(1);
}
else
{
//如果串口数据超过9位,后面的字符直接
break;
}
}
/*以上串口信息处理结束*/
//得到最终变量cmd的有效值
valid_cmd = true;
}
if (valid_cmd)
{
if(0 == strncmp(cmd, "k", 2)){
for(pos = 0; pos <= 180; pos ++)
{
// 输出模拟PWM信号控制舵机
myservo.write(pos);
delay(15);
}
Serial.println("ok");
}
else if(0 == strncmp(cmd, "g", 2)){
for(pos = 180; pos >= 0; pos --)
{
// 输出模拟PWM信号控制舵机
myservo.write(pos);
delay(15);
}
Serial.println("ok");
}
valid_cmd = false;
}
delay(10);
}
很多小伙伴误以为这个产品是DIY的,其实我们使用的是商业级别的亚马逊全球服务器,稳定有保障,不只是玩玩而已。是真正的将你的设计商品化,全球化。 楼主,请问无线模块自动连接服务器是不是跟APP有关,而跟写入板子的程序无关?也就是说换一种无线透传模块也可以自动连上服务器? ITEAD创易工作室 发表于 2016-1-28 13:20
很多小伙伴误以为这个产品是DIY的,其实我们使用的是商业级别的亚马逊全球服务器,稳定有保障,不只是玩玩 ...
我想买一套自己试一下,但是 找不到卖贵公司透传模块的地方,希望楼主可以帮我一下 这个ESP8266如何和手机进行连接?? 我也说一句车不错,楼主程序可否看看
页:
[1]