zjbdiy 发表于 2015-8-25 21:55:57

esp8266 串口wifi 套件


个人主页,目前在建中 http://www.zjbdiy.com
可实现控制开关,可保留墙壁实体开关,市电接入

目前只是实现内网udp数据控制开关,本人会持续更新程序和教程
上传的附件中没有使用库,大家可以学习一下
另外 ,本人打包的资料地址http://pan.baidu.com/s/1kTxNvoV


想要套件的 话 请进入我的个人主页,点击淘宝连接即可

目前已经录制4集视频,大家可以进入网盘观看高清视频
1.开发环境搭建   arduino ide 1.7.4sublime text 3 stino

2.套件简介

3.程序算法

4.遥控程序设置



欢迎大家购买我的套件,我会竭尽全力解决遇到的问题

程序可实现udp控制,可串口显示模块ip地址
#include <EEPROM.h>
int wifi_start_led=13;
int relay=11;
int sr_index;
String sr="";
int address=0;
void setup()
{       
        Serial.begin(115200,SERIAL_8N1);
        pinMode(wifi_start_led, OUTPUT);
        pinMode(relay,OUTPUT);
        digitalWrite(wifi_start_led,LOW);      
        digitalWrite(relay,EEPROM.read(address));
        esp8266_start();
}       
void loop()
{
        sr=read_string(1);
        sr_index=sr.indexOf(":");
        if(sr_index>0){
          if(sr.substring(sr_index+1)=="lamp_1"){
                  EEPROM.write(address,!digitalRead(relay));       
                  digitalWrite(relay,!digitalRead(relay));          
          }
        }
        sr="";
}
void esp8266_start(void){
        Serial.println("AT+RST");
        delay(500);
        Serial.println("AT+CWMODE=3");
        delay(500);
        Serial.println("AT+CWJAP=\"zjb_hl\",\"hl900610\"");
        delay(5000);
        Serial.println("AT+CIPMUX=1");
        delay(500);
        Serial.println("AT+CIPSTART=0,\"UDP\",\"192.168.2.255\",1000,8080,1");
        delay(500);
        WIFI_showIP();
        digitalWrite(wifi_start_led,HIGH);
}

String read_string(bool s_read){
        String r_s;
        while(Serial.available()) {
                if(s_read){
                  r_s+=char(Serial.read());
                }
                else{
                        Serial.read();
                }
                delay(2);
        }
        return r_s;
}
void WIFI_showIP(void)
{
        read_string(0);
    String data;
    unsigned long start;
        for(int a=0; a<3;a++)
        {
        Serial.println("AT+CIFSR");
        start = millis();
        while (millis()-start<3000) {
   while(Serial.available()>0)
   {
   char a =Serial.read();
   data=data+a;
   }
   if (data.indexOf("AT+CIFSR")!=-1)
   {
         break;
   }
        }
        if(data.indexOf(".") != -1)
        {
                break;
        }
        data = "";
}      
    data.replace("AT+CIFSR","");
    data.replace("+CIFSR:","");
    Serial.println(data);
    read_string(0);
}

asdfcgdc 发表于 2015-8-26 07:00:07

不错哟:lol

tom_hsh 发表于 2015-8-26 11:38:06

其实用esp8266--12直接控制继电器,led,电机等更方便

1415926 发表于 2015-8-26 16:48:28

1、arduino uno 太大,放到墙上的开关盒里很难
2、arduino uno 只有一个硬串口,和esp8266连接需要串口。用硬串口连接会造成调试困难,连接pc需要硬串口。使用软串口会遭遇波特率不同和缓存不足的麻烦。不适合刚入门的

esp8266直接连继电器做开关,成本低,个头小...
楼主你这个方案需要改进

zjbdiy 发表于 2015-8-26 20:45:45

这是一个学习套件,目的不是制作产品,而是学习技术,你们说的当然可以实现,选择这个方案的原因是资料多,操作简单,关于串口的问题其实不大上面的程序可以读到ip返回值然后打印出来   

zjbdiy 发表于 2015-8-26 23:15:18

页: [1]
查看完整版本: esp8266 串口wifi 套件