【DFRobot FireBeetle ESP32微控制器试用体验】HTTP LCD1602

  • bluebanboom
  • LV4工程师
  • |      2017-08-22 11:01:25
  • 浏览量 790
  • 回复:0
FireBeetle ESP32完全兼容Arduino,可以直接使用Arduino的库来驱动LCD1602,而且也有Wi-Fi功能,注意正确的使用Wi-Fi请参考上一篇帖子《【DFRobot FireBeetle ESP32微控制器试用体验】正确使用Wi-Fi指南》,确保官方例子编译通过。 我手上的LCD1602是I2C接口,直接用这个库(https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library),FireBeetle ESP32的I2C接口如下所示,将其连接至LCD1602。 因为要通过http来控制1602的显示,我们需要定义显示接口。一般来说,我们提供接口都会在URL后面加一些参数,比如http://abc.com/user?age=16&name=bill,其中的age和name就是我们要传递的参数。但是考虑到这样的参数解析还有点复杂,而且,我们LinkIt 7697提供的功能有限,我们来简化一下,比如我们希望屏幕第一行显示Hello第二行显示world,那就访问网址如下http://esp32/msg/Hello/world,msg后的第一个斜杠表示第一行文字,第二个斜杠表示第二行文字。这样就简单多了,我们只要分割斜杠就可以了。 一个http请求收到后,客户端会发生一些数据,一般来说,数据大概如下所示: GET /index.html HTTP/1.1 Host: www.baidu.com Connection: keep-alive Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 ... Accept: text/html,... 我们只要关心第一行的GET与HTTP/1.1中间的部分就行了。以之前提到的访问网址为例,第一行应该是这样的 GET /msg/Hello/world HTTP/1.1 因为我们的请求是固定的,那处理起来就简单了,首先我们先检查一下第一行的前9个字符是不是“GET /msg/” 如果是,那就从第9个字符开始找到空格,也就是HTTP/1.1,这两者之间就是我们要显示的文字了。然后我们再找到斜杠把第一行和第一行区分开来就行了。 先来看http请求数据读取函数readRequest,这个是直接根据例子改的,注意http的请求头是以一行空白结束的,代码对结束的处理利用了这一点。 再来看一下请求解析的函数parseRequest, 基本上按照之前讲解的步骤实现的。 解析显示文字的函数parsePath如下所示: 在显示完之后我们还要返回客户端数据,函数如下所示: 整个代码不算太难,主要是解析URL,运行效果如下所示: 一开始会显示ESP32的IP地址,访问ESP32后就会展示我们想要展示的数据了。 注意在使用代码的时候要注意修改32、33行的Wi-Fi的ssid和密码。 论坛附件上传不了了。发个外链。 链接: https://pan.baidu.com/s/1boOf3FT 密码: a5q4
  • 0
  • 收藏
  • 举报
  • 分享
我来回复

登录后可评论,请 登录注册

所有回答 数量:0
x
收藏成功!点击 我的收藏 查看收藏的全部帖子