FireBeetle Board-ESP32试用----HttpServer&Touch IO

[复制链接]
563|1
 楼主 | 2018-3-10 14:59 | 显示全部楼层 |阅读模式
本帖最后由 BinWin 于 2018-3-10 15:00 编辑

      通常情况下会想要通过访问网页来实现对某些设备的操作和控制,在arm平台上建立httpserver,使用lwip协议栈的话开启SSI和CGI就可以比较容易的实现上述想法。那么在arduino中,同样可以创建网络服务器,一下举个例子
      需要的库就是FireBeetle Board-ESP32提供的<WiFi.h>,http使用常用80端口,接下来使用库函数来发送请求和回复应答就可以

  1. if (c == '\n') {                    // if the byte is a newline character

  2.           // if the current line is blank, you got two newline characters in a row.
  3.           // that's the end of the client HTTP request, so send a response:
  4.           if (currentLine.length() == 0) {
  5.             // HTTP headers always start with a response code (e.g. HTTP/1.1 200 OK)
  6.             // and a content-type so the client knows what's coming, then a blank line:
  7.             client.println("HTTP/1.1 200 OK");
  8.             client.println("Content-type:text/html");
  9.             client.println();

  10.             // the content of the HTTP response follows the header:
  11.             client.print("<h2 align = 'left'>LED Control</h2>");
  12.             client.print("<a href=\"/H\">Turn On The LED</a><br>");
  13.             client.print("<a href=\"/L\">Turn Off The LED</a><br>");

  14.             // The HTTP response ends with another blank line:
  15.             client.println();
  16.             // break out of the while loop:
  17.             break;
  18.           } else {    // if you got a newline, then clear currentLine:
  19.             currentLine = "";
  20.           }
  21.         } else if (c != '\r') {  // if you got anything else but a carriage return character,
  22.           currentLine += c;      // add it to the end of the currentLine
  23.         }
复制代码
    以上实现了发送http头和内容,假如要控制一个led,还需要发送点亮或者关闭的请求,然后解析后执行IO动作。
     以下就是对应的IO操作,2端口就是D9,连接到板载的LED.
  1. // Check to see if the client request was "GET /H" or "GET /L":
  2.         if (currentLine.endsWith("GET /H")) {
  3.           digitalWrite(2, HIGH);               // GET /H turns the LED on
  4.         }
  5.         if (currentLine.endsWith("GET /L")) {
  6.           digitalWrite(2, LOW);                // GET /L turns the LED off
  7.         }
复制代码
      无线开启后搜索程序中制定的AP并连接,然后我们可以访问模块在路由器中获得的IP地址,调试程序在串口也会输出这些信息。
      
       点击链接就可以操作模块上的LED了,这就是实现网页控制的基本原型。除此之外,还有值得一提的地方是FireBeetle Board-ESP32 提供了多达 10 个电容式传感器 GPIO,能够探测由手指或其他物品直接接触或 接近而产生的电容差异。这种低噪声特性和电路的高灵敏度设计适用于较小的触摸板,可以直接用于触摸开关。
       接下来测试一下是否如实。
        查找库文件,简单书写下面代码

  1. //触摸IO测试

  2. void setup() {   
  3.   Serial.begin(115200);   
  4.   delay(1000); // give me time to bring up serial monitor   
  5.   Serial.println("FireBeetle Board-ESP32 Touch Test");  
  6. }

  7. //10 个具有触摸传感器的IO,D0-D9,即T0-T9
  8. void loop(){  
  9.   //读取IO 状态
  10.   Serial.println(touchRead(T2));  // get value using T0->D9   
  11.   delay(1000);
  12. }
复制代码
        然后直接用手去触摸IO,通过串口监视器看到如下,在有手指触摸的时候会变为高电平
         
        这样的功能可以的确可以尝试作为电容触摸按键了。后续准备还是回到C环境下了,不过不否定Arduino是很好用的


本帖子中包含更多资源

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

x
| 2018-3-15 17:13 | 显示全部楼层
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式
我要创建版块 申请成为版主

论坛热帖

关闭

热门推荐上一条 /6 下一条

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