[经验] 无需带钥匙开门(手机互联网控制arduino wifi D1板子)手机开门3.0版本————小和

[复制链接]

技术员

发表于 2016-7-31 17:00:31   1379 查看 7 回复 显示全部楼层 倒序浏览
分享
在这个版本上原理一样,替换了原来的板子
(手机开门1.0)http://bbs.elecfans.com/jishu_920776_1_1.html
之所以这个叫3.0是因为在这个之前用的W5100来控制的,然后又用D1板子来获取网络,除了头文件定义和连接,后面写法完全一样,所以直接移植过来, W5100就没写了。毕竟WIFI不用网线连接到处移动都可以 只需要电源就ok


材料:
      1)D1  ESP8266 12F*1(用arduino开发)
      2)电路自己设计(在1.0板子链接里面有电路)
上个图D1正反面
d1.png 的.png

这个就是W5100啦
d2.png
还是先说说大概原理:
      手机或电脑提交给网页一个信息,D1wifi板子一直获取网页的信息,来判断是否控制IO口;

中途遇到了那些情况:
    引脚,先用w5100测试好了的代码,直接改到D1板子上面,(除了连接和头文件基本不用该代码),先用led来代替IO的电路,发现就2个正常的 其他的 都不对,发现板子后面还有个引脚定义,才换了位置IO还好刚刚够。(毕竟是8266 12F IO口没那么多)。
    然后在公司里的笔记本用5v光耦隔离继电器的时候  低电平和高电平都没什么问题(电压低电平好像2v左右),
但是回家了用低电平触发继电器,还没触发继电器就滴答滴答(很快的节奏反复闭合),然后改用高电平触发试试,结果就正常了,其他暂时没什么问题了 。


    代码修改过几次隔了2天没什么问题了,之前有隔一段时间,接收的数据为空(可能打开网页太频繁),网也打开一直出错,然后一直这样下去 所以修改了以下几点:
     1加入隔随机秒数访问时间
     2增加了确定执行后,再给网页提交一个信息 确定成功

#include <ESP8266WiFi.h>
#include <stdlib.h>//修改1  加入随机数函数访问网页 以免造成黑名单
// 由于时间没多少 功能暂时实现了后面再优化 16-7-28
const int dg=16;//大门关   //修改2 接线优化位置
const int dk=5;//大门开
const int dt=4;//大门停
const int jy=12;//家音响
const int jfm=13;//家FM
const int jm=0;//门
const int mm=2;//总开关
int a=0;
String c="";//用来判断 控制输出
const char *ssid     = "QQqun";//这里是连接你需要的wifi名字
const char *password = "272392941";//你要连接的wifi密码
const char *host = "www.xiaohe520.cn";//修改为你需要打开的域名 不能带目录
WiFiClient client;//初始化
String zifu="";//可以和变量c用一个 接收数据
int miao=1000;//定时访问
char www[]="www.xiaohe520.cn";
unsigned long newtime=0;//暂时没写 后面写
void setup()
{


pinMode(dg,OUTPUT);
pinMode(dk,OUTPUT);
pinMode(dt,OUTPUT);


pinMode(jy,OUTPUT);
pinMode(jfm,OUTPUT);
pinMode(jm,OUTPUT);
pinMode(mm,OUTPUT);
digitalWrite(jy,HIGH);
digitalWrite(jfm,HIGH);
digitalWrite(jm,HIGH);
digitalWrite(dg,HIGH);
digitalWrite(dt,HIGH);
digitalWrite(dk,HIGH);
digitalWrite(mm,HIGH);
   
    Serial.begin(115200);   
    Serial.println();
    Serial.print("Connecting to ");//写几句提示,哈哈
    Serial.println(ssid);

    WiFi.begin(ssid, password);
     while (WiFi.status() != WL_CONNECTED)//WiFi.status() ,这个函数是wifi连接状态,返回wifi链接状态
{
        delay(500);
        Serial.print(".");
    }//如果没有连通向串口发送....
    Serial.println("");
    Serial.println("WiFi connected");
    Serial.println("IP address: ");
    Serial.println(WiFi.localIP());//WiFi.localIP()返回8266获得的ip地址
      http();//一定先访问一次不然导致后面获取不到数据
}
void loop()
{


    while(client.available()>0)//available()同ARDUINO,不解释了
    {
        char val = client.read();//read()同arduino
        zifu=zifu+val;        
    }
    //下面一段是找查最后一行的数据 提取出来
    if(zifu.lastIndexOf('\n')!=(-1))
    {
      zifu=zifu.substring(zifu.lastIndexOf('\n')+1);
      }
         c=zifu;
         iopd();


  if(zifu!="")
   {
    Serial.println(c);
     zifu="";
     http();
    }
    else {Serial.println(zifu);
    Serial.println("dengdaishujulianjie.....");
    a++;
    if(a>5){http();a=0;}
  }
  
  if (!client.connected())//几个非连接的异常处理
   {
      client.stop();
      Serial.println("meilianjie....");
    }
    else
    {Serial.println("client.connected.......");
    miao=random(800,1300);//修改1  随机数函数
    Serial.print(miao);
       delay(miao);
       }
        
}




void http(){
  if(client.connect(www,80))
  {
    Serial.println("opening....");
  
    client.println("POST /find/xiaohe2 HTTP/1.1");//提交的网页
    client.println("HOST:www.xiaohe520.cn");//提交的服务器
    client.println();
   
    }
else{
  Serial.println("open html error");//如果打开失败
     }
}
void iopd()
{
  if(c=="m"){
    digitalWrite(jm,LOW);
    delay(500);
    digitalWrite(jm,HIGH);ok();
  }
  if(c=="y"){
    digitalWrite(jy,LOW);
    delay(500);
    digitalWrite(jy,HIGH);ok();
  }
  if(c=="f"){
    digitalWrite(jfm,LOW);
    delay(500);
    digitalWrite(jfm,HIGH);ok();
  }  
  if(c=="t"){
    digitalWrite(dt,LOW);
    delay(500);
    digitalWrite(dt,HIGH);ok();
  }  
  if(c=="k"){
    digitalWrite(dk,LOW);
    delay(500);
    digitalWrite(dk,HIGH);ok();
  }  
  if(c=="g"){
    digitalWrite(dg,LOW);
    delay(500);
    digitalWrite(dg,HIGH);
    ok();
  }  
   if(c=="on"){
    digitalWrite(mm,LOW);
    Serial.print("open...");
  }
  if(c=="off")
  {
    digitalWrite(mm,HIGH);
    Serial.print("colse...");
  }
  }
//串口发送以后
  void ok(){
  if(client.connect(www,80))
  {
    Serial.println("wait...");
   String t="POST /find/xiaohe/content/";
   
    String t2=" HTTP/1.1";
    client.print(t);
    client.print(zifu);
    client.print("ok..");
    client.println(t2);
   
   //client.println("POST /find/xiaohe/content/hehe HTTP/1.1");//第二种方法提交
     //client.println("POST /find/xiaohe2 HTTP/1.1");//第二种方法提交
    client.println("HOST:www.xiaohe520.cn");
    client.println();
   
    }
else{
  Serial.println("open html error");//如果打开失败
     }
}





如果有遗漏或不全的地方可以留言。毕竟一下子写全 是不太可能的,个人认为开发的人员 语言逻辑有点混乱的赶脚!




手机app截图 153407b0blmblfgm6efflf.jpg
暂时差不多了,下班许久了 。。。






评分

参与人数 1积分 +10 收起 理由
A670521546 + 10 您的帖子很精彩,期待您分享的下一个帖子!.

查看全部评分

标签:python arduino wifi D1

技术员

发表于 2016-8-3 14:58:59    楼主|
华强PCB打样
终于发现 之前板子不稳定的原因了,出现一下的原因是,供电不足  (近期想弄个8266-01用AT命令打开网页 直接给串口源码。发现帖子里面提到供电不足,俺特的用一个供电不行的移动电源,电足的时候正常 ,不足的时候就果真和原来出问题的串口信息一样的 。)
=================================
ets Jan  8 2013,rst cause:4, boot mode:(3,6)

wdt reset
load 0x4010f000, len 1264, room 16
tail 0
chksum 0x0f
csum 0x0f
回复

点赞

实习生

发表于 2016-9-13 20:22:42  
用Arduino uno 加wifi模块可以实现吗?
回复

点赞

发表于 2017-1-23 13:05:21  
去年一直想做,可惜却不知如何做起,现在好了,参考参考
回复

点赞

发表于 2017-3-12 09:42:17  
楼主做了我一直想做的东西呀!赞赞赞!
回复

点赞

技术员

发表于 2017-3-15 21:08:06    楼主|
我只做自己需要的   ,我需要的大伙可能都需要
回复

点赞

技术员

发表于 2017-3-15 21:08:41    楼主|
虞言绍午 发表于 2016-9-13 20:22
用Arduino uno 加wifi模块可以实现吗?

也可以  干嘛不直接用wifi模块来呢  多不了几个钱  
回复

点赞

技术员

发表于 2017-3-17 09:05:36  
厉害了楼主,实践出来了
回复

点赞

高级模式
您需要登录后才可以回帖 登录 | 注册

专家问答 查看更多>>
关闭

站长推荐 上一条 /6 下一条

小黑屋|手机版|Archiver| 电子发烧友 ( 粤ICP备14022951号-2 )     

GMT+8, 2017-3-30 14:49 , Processed in 0.078098 second(s), 15 queries , Memcache On.

微信扫描
快速回复 返回顶部 返回列表
-

推荐专区

技术干货集中营

专家问答

用户帮助┃咨询与建议┃版主议事

我的提问

工程师杂谈

工程师创意

工程师职场

论坛电子赛事

社区活动专版

发烧友活动

-

嵌入式论坛

单片机论坛

FPGA|CPLD|ASIC论坛

DSP论坛

嵌入式系统论坛

-

电源技术论坛

电源技术论坛

-

硬件设计论坛

电路设计论坛

电子元器件论坛

控制|传感

总线技术|接口技术

-

测试测量论坛

LabVIEW论坛

Matlab论坛

测试测量技术专区

仪器仪表技术专区

-

EDA设计论坛

multisim论坛

PCB设计论坛

proteus论坛|仿真论坛

EasyEDA-中国人自已的EDA工具

-

综合技术与应用

电机控制

智能电网

光电及显示

参考设计中心

汽车电子技术论坛

医疗电子论坛

-

开源硬件

树莓派论坛

智能硬件论坛

开发快智能硬件开发平台

Intel物联网开发者专区

Waveshare

乐美客SBC专区

Arduino论坛

BeagleBone论坛

机器人论坛

创客神器NanoPi

小钢炮CANNON

比派科技banana pi专区

-

无线通信论坛

无线通信技术专区

天线|RF射频|微波|雷达技术

-

IC设计论坛

芯片测试与失效分析

Mixed Signal/SOC[数模混合芯片设计]

Analog/RF IC设计

设计与制造封装测试

-

个人版区

阿东Verilog技术专版

直流马达驱动电路设计

LabVIEW英雄联盟

特权同学FPGA专区

-

厂商专区

灵动微电子 MM32

盈鹏飞嵌入式

TI论坛

TI Deyisupport社区

芯灵思嵌入式论坛

Tisan

米尔科技

庆科社区

WIZnet技术专区

Cypress技术论坛

飞凌嵌入式

Qualcomm技术论坛

英创嵌入式

机智云GoKit论坛

-

检测技术与质量

电磁兼容(EMC)设计与整改

安规知识论坛

检测与认证

-

消费电子论坛

手机技术论坛

平板电脑/mid论坛

音视/视频/机顶盒论坛

-

电子论坛综合区

聚丰众筹官方社区

新人报道区

聚丰供应链

-

论坛服务区

-

供求信息发布

供需广告

招聘┃求职发布区

电子展览展会专区