【终极版】ESP8266远程控制wifi透传模块带调试app-Arduino中文社区 - Powered by Discuz! Archiver

ITEAD创易工作室 发表于 2016-1-27 11:54

【终极版】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 12:08

本帖最后由 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);
}


ITEAD创易工作室 发表于 2016-1-28 13:20

很多小伙伴误以为这个产品是DIY的,其实我们使用的是商业级别的亚马逊全球服务器,稳定有保障,不只是玩玩而已。是真正的将你的设计商品化,全球化。

PARKZHOU 发表于 2016-7-6 16:57

楼主,请问无线模块自动连接服务器是不是跟APP有关,而跟写入板子的程序无关?也就是说换一种无线透传模块也可以自动连上服务器?

PARKZHOU 发表于 2016-7-7 14:57

ITEAD创易工作室 发表于 2016-1-28 13:20
很多小伙伴误以为这个产品是DIY的,其实我们使用的是商业级别的亚马逊全球服务器,稳定有保障,不只是玩玩 ...

我想买一套自己试一下,但是 找不到卖贵公司透传模块的地方,希望楼主可以帮我一下

初学者及爱好者 发表于 2016-7-8 16:42

这个ESP8266如何和手机进行连接??

ClearingSky 发表于 2018-4-2 22:48

我也说一句车不错,楼主程序可否看看
页: [1]
查看完整版本: 【终极版】ESP8266远程控制wifi透传模块带调试app