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

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 18476|回复: 6

【终极版】ESP8266远程控制wifi透传模块带调试app

[复制链接]
发表于 2016-1-27 11:54 | 显示全部楼层 |阅读模式
本帖最后由 ITEAD创易工作室 于 2016-1-27 11:57 编辑

你好,2016!ITEAD给大家带来新年的第一帖!发财贴!

为什么说是发财贴呢?今天要介绍给大家的是一款成品级的wifi远程串口透传模块,各种智能家居方案唾手可得!

ITDB05_r2_c1.jpg


这是一款使用ESP8266高度集成的通用串口wifi透传模块,可以用于快速开发智能远程控制设备。只需要简单的串口通信开发,即可实数据的传输和控制。


ITDB05_r1_c1.jpg

ITDB05_r12_c1.jpg



该模块出厂已烧写好固件,配置好wifi后会自动连接到我们的亚马逊全球服务器,调试app在安卓市场搜索“酷宅云调试”即可下载安装。


ITDB05_r13_c1.jpg



接下来,开始介绍今天的教程:远程点亮arduino的LED。

硬件接线示意图如下:

ITDB05_r14_c1.jpg


硬件接线实物图如下:


调试3.jpg


uno烧写代码:

[mw_shl_code=bash,true]int led_pin = 11;
//定义一个10字节的整型数据变量cmd作为命令,这里可以修改为不同的数字。此处设置为10是为了有更好的兼容性。
char cmd[10];
//判断收到的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);

}[/mw_shl_code]


添加设备和发送开关命令:

ITDB05_r17_c1.jpg

模块上的绿灯长亮,表示已经连接到服务器,可以正常工作。



调试1.jpg


发送“on”即可点亮LED,发送“off”即可关闭LED。
调试2.jpg


每个伟大的工程都是从blink开始的!智能家居就这么简单,期待坛友们伟大的成功!



 楼主| 发表于 2016-1-27 12:08 | 显示全部楼层
本帖最后由 ITEAD创易工作室 于 2016-1-27 18:00 编辑



再贴个远程控制舵机正反转的代码:

[mw_shl_code=bash,true]
#include <Servo.h>
Servo myservo;
int pos = 0;
int servo_pin = 3;
char cmd[10];
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);
}
[/mw_shl_code]

 楼主| 发表于 2016-1-28 13:20 | 显示全部楼层
很多小伙伴误以为这个产品是DIY的,其实我们使用的是商业级别的亚马逊全球服务器,稳定有保障,不只是玩玩而已。是真正的将你的设计商品化,全球化。
发表于 2016-7-6 16:57 | 显示全部楼层
楼主,请问无线模块自动连接服务器是不是跟APP有关,而跟写入板子的程序无关?也就是说换一种无线透传模块也可以自动连上服务器?
发表于 2016-7-7 14:57 | 显示全部楼层
ITEAD创易工作室 发表于 2016-1-28 13:20
很多小伙伴误以为这个产品是DIY的,其实我们使用的是商业级别的亚马逊全球服务器,稳定有保障,不只是玩玩 ...

我想买一套自己试一下,但是 找不到卖贵公司透传模块的地方,希望楼主可以帮我一下
发表于 2016-7-8 16:42 | 显示全部楼层
这个ESP8266如何和手机进行连接??
发表于 2018-4-2 22:48 来自手机 | 显示全部楼层
我也说一句车不错,楼主程序可否看看
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 00:47 , Processed in 0.102653 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表