极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 15140|回复: 5

esp8266 串口wifi 套件

[复制链接]
发表于 2015-8-25 21:55:57 | 显示全部楼层 |阅读模式

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

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


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

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

2.套件简介

3.程序算法

4.遥控程序设置



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

程序可实现udp控制,可串口显示模块ip地址
  1. #include <EEPROM.h>
  2. int wifi_start_led=13;
  3. int relay=11;
  4. int sr_index;
  5. String sr="";
  6. int address=0;
  7. void setup()
  8. {       
  9.         Serial.begin(115200,SERIAL_8N1);
  10.         pinMode(wifi_start_led, OUTPUT);
  11.         pinMode(relay,OUTPUT);
  12.         digitalWrite(wifi_start_led,LOW);        
  13.         digitalWrite(relay,EEPROM.read(address));
  14.         esp8266_start();
  15. }       
  16. void loop()
  17. {
  18.         sr=read_string(1);
  19.         sr_index=sr.indexOf(":");
  20.         if(sr_index>0){
  21.             if(sr.substring(sr_index+1)=="lamp_1"){
  22.                     EEPROM.write(address,!digitalRead(relay));       
  23.                     digitalWrite(relay,!digitalRead(relay));          
  24.             }
  25.         }
  26.         sr="";
  27. }
  28. void esp8266_start(void){
  29.         Serial.println("AT+RST");
  30.         delay(500);
  31.         Serial.println("AT+CWMODE=3");
  32.         delay(500);
  33.         Serial.println("AT+CWJAP="zjb_hl","hl900610"");
  34.         delay(5000);
  35.         Serial.println("AT+CIPMUX=1");
  36.         delay(500);
  37.         Serial.println("AT+CIPSTART=0,"UDP","192.168.2.255",1000,8080,1");
  38.         delay(500);
  39.         WIFI_showIP();
  40.         digitalWrite(wifi_start_led,HIGH);
  41. }

  42. String read_string(bool s_read){
  43.         String r_s;
  44.         while(Serial.available()) {
  45.                 if(s_read){
  46.                     r_s+=char(Serial.read());
  47.                 }
  48.                 else{
  49.                         Serial.read();
  50.                 }
  51.                 delay(2);
  52.         }
  53.         return r_s;
  54. }
  55. void WIFI_showIP(void)
  56. {
  57.         read_string(0);
  58.     String data;
  59.     unsigned long start;
  60.         for(int a=0; a<3;a++)
  61.         {
  62.         Serial.println("AT+CIFSR");  
  63.         start = millis();
  64.         while (millis()-start<3000) {
  65.      while(Serial.available()>0)
  66.      {
  67.      char a =Serial.read();
  68.      data=data+a;
  69.      }
  70.      if (data.indexOf("AT+CIFSR")!=-1)
  71.      {
  72.          break;
  73.      }
  74.         }
  75.         if(data.indexOf(".") != -1)
  76.         {
  77.                 break;
  78.         }
  79.         data = "";
  80.   }      
  81.     data.replace("AT+CIFSR","");
  82.     data.replace("+CIFSR:","");  
  83.     Serial.println(data);
  84.     read_string(0);
  85. }
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2015-8-26 07:00:07 | 显示全部楼层
不错哟
回复 支持 反对

使用道具 举报

发表于 2015-8-26 11:38:06 | 显示全部楼层
其实用esp8266--12直接控制继电器,led,电机等更方便
回复 支持 反对

使用道具 举报

发表于 2015-8-26 16:48:28 | 显示全部楼层
1、arduino uno 太大,放到墙上的开关盒里很难
2、arduino uno 只有一个硬串口,和esp8266连接需要串口。用硬串口连接会造成调试困难,连接pc需要硬串口。使用软串口会遭遇波特率不同和缓存不足的麻烦。不适合刚入门的

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

使用道具 举报

 楼主| 发表于 2015-8-26 20:45:45 | 显示全部楼层
这是一个学习套件,目的不是制作产品,而是学习技术,你们说的当然可以实现,选择这个方案的原因是资料多,操作简单,关于串口的问题  其实不大  上面的程序可以读到ip返回值然后打印出来   
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-8-26 23:15:18 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-16 23:19 , Processed in 0.038749 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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