物联网解决方案
返回列表 发新帖

[小e体验板] 小E体验板制作氛围灯之来一发局域网控制

[复制链接]
  • TA的每日心情
    奋斗
    2018-6-22 18:32
  • 签到天数: 37 天

    [LV.5]常住居民I

    11

    主题

    59

    帖子

    1890

    积分

    意见领袖

    Rank: 6Rank: 6

    积分
    1890
    发表在  2018-4-22 17:39:50  | 显示全部楼层 | 阅读模式

    公开设备实时看 这是什么->

    15:07
    匿名用户
    通过微信控制多彩灯光
    15:07
    匿名用户
    通过微信控制多彩灯光
    15:07
    匿名用户
    通过微信控制多彩灯光
    15:07
    匿名用户
    通过微信控制多彩灯光
    14:15
    匿名用户
    通过微信控制多彩灯光
    14:15
    匿名用户
    通过微信控制多彩灯光
    14:15
    匿名用户
    通过微信控制多彩灯光
    14:15
    匿名用户
    通过微信控制多彩灯光
    14:15
    匿名用户
    通过微信控制多彩灯光
    14:15
    匿名用户
    通过微信控制多彩灯光
    14:15
    匿名用户
    通过微信控制多彩灯光
    14:15
    匿名用户
    通过微信控制多彩灯光
    14:15
    匿名用户
    通过微信控制多彩灯光
    14:15
    匿名用户
    通过微信控制多彩灯光
    14:15
    匿名用户
    通过微信控制多彩灯光
    14:15
    匿名用户
    通过微信控制多彩灯光
    14:14
    匿名用户
    通过微信控制多彩灯光
    14:14
    匿名用户
    通过微信控制多彩灯光
    14:14
    匿名用户
    通过微信控制多彩灯光
    14:10
    匿名用户
    通过微信控制多彩灯光
    14:10
    匿名用户
    通过微信控制多彩灯光
    14:10
    匿名用户
    通过微信控制多彩灯光
    14:10
    匿名用户
    通过微信控制多彩灯光
    14:10
    匿名用户
    通过微信控制多彩灯光
    14:10
    匿名用户
    通过微信控制多彩灯光
    14:10
    匿名用户
    通过微信控制多彩灯光
    14:09
    匿名用户
    通过微信控制多彩灯光
    14:09
    匿名用户
    通过微信控制多彩灯光
    14:09
    匿名用户
    通过微信控制多彩灯光
    14:09
    匿名用户
    通过微信控制多彩灯光
    14:09
    匿名用户
    通过微信控制多彩灯光
    14:09
    匿名用户
    通过微信控制多彩灯光
    14:08
    匿名用户
    通过微信控制多彩灯光
    14:08
    匿名用户
    通过微信控制多彩灯光
    14:08
    匿名用户
    通过微信控制多彩灯光
    14:08
    匿名用户
    通过微信控制多彩灯光
    21:03
    136****9548
    通过微信查询温湿度
    21:03
    136****9548
    通过微信控制多彩灯光
    21:03
    136****9548
    通过微信控制多彩灯光
    21:03
    136****9548
    通过微信控制多彩灯光
    21:03
    136****9548
    通过微信控制多彩灯光
    21:03
    136****9548
    通过微信控制多彩灯光
     

    马上注册,免费领取开发板,一周变智能硬件开发达人!

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

    x
    本帖最后由 一路上有你 于 2018-4-22 17:51 编辑

    开始联网1(TCP服务器)
    以前几个帖子把基础控制功能解决了一下
    后面将慢慢写实现联网控制……
    废话不多说,先连个网
    本着能抄就坚决不自己写的原则,
    找到ESP8266for Arduino的文档,发现了一个示例代码
    1.png
    代码很短,
    //这是esp8266库的头文件
    #include <ESP8266WiFi.h>

    void setup()
    {
    //设置串口波特率
      Serial.begin(115200);
      Serial.println();
    //重点来了,这里设置要连接的WiFi名和密码
      WiFi.begin("WiFi名", "密码");

      Serial.print("Connecting");
    //这个循环代表每500毫秒检查一次是否连接上WiFi
      while (WiFi.status() != WL_CONNECTED)
      {
        delay(500);
        Serial.print(".");
      }
      Serial.println();

      Serial.print("Connected, IP address: ");
    //串口输出ESP8266的局域网ip地址
      Serial.println(WiFi.localIP());
    }

    void loop() {}

    注意:自己的WiFi一定要开启DHCP功能,也就是动态分配ip
    不过放心,一般都是开启这个功能的
    把程序上传到体验板中,打开串口助手
    2.png
    可以看到,已经获取到了IP地址。
    这个IP地址可能每一次连接都不一样,不用记。
    这一步联网算是成功了
    但是我要实现的是创建一个TCP服务器,让它能接收到客户端传来的命令,于是乎,各种搜索。
    看一下示例代码,找到一个,它的位置在这里,
    文件>示例>ESP8266WiFi>WiFiTelentSerial
    3.png
    打开看一下,然后被我改成这个样子
    #include<ESP8266WiFi.h>
    #defineRED 15
    charssid[] = "你的WiFi名";
    charpassword[] = "你的WiFi密码";
    //创建一个服务器**的端口是8080
    WiFiServerserver(8080);
    WiFiClientclient;

    voidsetup() {
      //
      pinMode(RED, OUTPUT);
      //设置波特率
      Serial.begin(9600);
      //设置要连接的WiFi名和密码
      WiFi.begin(ssid, password);
      //等待连接上
      while (WiFi.status() != WL_CONNECTED) {
        delay(500);
        Serial.print(".");
      }
      //启动服务器
      server.begin();
      server.setNoDelay(true);
      Serial.print("\r\nConnected, IP address:");
      //输出体验板的ip地址
      Serial.println(WiFi.localIP());
    }

    voidloop() {
      uint8_t i;
      if (server.hasClient())
      {
        if (!client || !client.connected())
        {
          if(client) client.stop();
          client = server.available();
        }
        WiFiClient serverClient =server.available();
        serverClient.stop();
      }
      //如果客户端存在并且已经连接
      if (client && client.connected())
      {
        while (client.available()) {
          //读一个字节
          char temp = client.read();
          //把接受到的用串口发送出去
          Serial.write(temp);

          switch(temp){
            case 0xFF:
            digitalWrite(RED, LOW);
            break;
            case 0xFE:
            digitalWrite(RED, HIGH);
            break;
          }
        }
      }
      //如果串口有数据,就用WiFi发送给客户端
      if (Serial.available())
      {
        size_t len = Serial.available();
        uint8_t sbuf[len];
        Serial.readBytes(sbuf, len);
        if (client && client.connected())
        {
          client.write(sbuf, len);  //向客户端发送数据
          delay(1);
        }
      }
    }
    解释一下思路,首先让体验板联网(局域网),
    然后创建一个tcp服务器**8080端口,这个端口可以改成你自己的(端口号的范围从065535
    然后在死循环里不断判断有无客户端连入,如果有客户端并且客户端给服务端发数据了,那么就用串口打印出来(这是为了方便调试,不加也行),然后在switch语句中执行接受到命令相应的操作(目前我只点亮了一个红灯)。。。。这样就实现了局域网操控体验板的这么一个功能
    把程序下载进去(记得GPIO0GND才能正常下载程序
    我这里是用手机调试的(也可以用电脑,前提是电脑(手机)和体验板连接的WiFi必须是同一个)
    打开串口监视器,体验板上电(这时GPIO0不要接GND
    4.png
    看到串口监视器打印出我的体验板的ip地址是192.168.8.101
    打开APP,点击TCPClient,
    5.png
    点击增加,输入你的ip和端口号,然后点增加,然后点关闭
    6.png
    长按这个
    7.png
    点击连接
    8.png
    我随便输入点什么发送出去,看看串口监视器能不能收到
    9.png
    可以看到这里已经收到了,说明连接成功
    10.png
    这里给出个电脑版的软件设置
    11.png

    测试一下LED
    首先长按,然后点一下显示方式,切换成十六进制,
    12.png
    因为我在代码里写的
    13.png
    这是个十六进制的数值哈

    如果不切换的话,你发送FFESP8266发送的不是0xFF,而是两个字符F
    设置好之后在最下面输入FE点发送,
    就能看到红色LED灯亮了

    下面附上工具和代码
    com.fontlose.tcpudp.apk (349.52 KB, 下载次数: 0)

    NetAssist.exe (1006.5 KB, 下载次数: 0)

    __WiFi.ino (1.58 KB, 下载次数: 0)



    回复

    使用道具 举报

    发表回复

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

    本版积分规则

    关于我们
    开发快官网
    关于我们
    联系我们
    帮助中心
    开发者中心
    快速入门
    视频教程
    社区活动
    免费开发板
    开发者大赛
    关注我们
    官方微博
    官方空间
    快速回复 返回顶部 返回列表

    湘公网安备 43019002000310号