参考资料:Control LED from web app using ESP8266 Serial WIFI module 强力推荐,单片机/Arduino 实现物联的启蒙教程,下文基本是对这篇教程的理解和翻译

开头的话:现在物联网平台很多,类似Yeelink,乐为物联,Bylnk(为microduino量身打造,更易上手),借助它们提供的APP和接口可以快速地实现在手机端接收远程硬件信息。但别人的框架总是固定的,接口也是有限的,在样式和功能上有一定局限性,没法做到完全满足需求的定制型APP。所以,我希望搭建自己的独立平台,实现远程控制硬件,类似智能家居的设计,然后就找到这篇教程,理解运用就可以达到自己的目的了。

教程项目:使用ESP8266模块和Arduino开发板在WIFI下通过网页远程控制LED开关

所需器件:1. Arduino开发板 2.LED灯 3.面包板 4.连接线 5.电脑

具体步骤

一、配置Arduino IDE环境

  • 安装ESP8266开发板软件包
    使用1.6.4及以上版本的Arduino, 打开Arduino IDE,打开 文件->首选项 在 附加开发板管理器网址 一栏写入:http://arduino.esp8266.com/package_esp8266com_index.json 添加完以后点击 
    做完这步以后重启Arduino IDE,然后依次点击 工具->开发板->开发板管理器 打开后在搜索框输入esp,然后能找到类似'esp8266 by ESP8266 Community',点击并安装。
    安装完后重启Arduino IDE,然后依次点击 工具->开发板->Generic ESP8266 Module,接着按照下面的信息在工具栏找到对应项进行配置

    • Flash Mode: DIO
    • Flash Frequency: 40 MHz
    • Upload Using: Serial
    • CPU Frequency: 80 MHz
    • Flash Size: 4M (1M SPIFFS)
    • Upload Speed: 115200
    • Port: 对应的USB 端口 (当你一将Arduino连接电脑时,在设备管理器中会冒出端口号)
    • Programmer: AVRISP mkll

    其他的设置就按照默认的选择不变

  • 安装ArduinoJSON库
    在我们的HTML网页中将使用到json数据,所以我们需要添加ArduinoJson库到我们的Arduino IDE中。打开 项目->加载库->管理库 在搜索框输入json,可能会得到类似 'ArduinoJSON by Benolt Blanchon' 点击它并安装,如果安装出现问题,可以访问如下链接: installing ArduinoJson library 在这步设置以后,你可以通过 #include<ArduinoJson.h> 在项目中添加库 了

二、配置HTML网页程序(需要有一点网页开发基础)

原教程的网页程序是用PHP+Apache配置的,如果熟悉这两种工具使用的可以访问下面链接下载运行:Controling LED using ESP8266 HTML app(这个网页应用的本质就是:在主页面上放置两个按钮,点击按钮on,会通过js显示一张灯亮的图片,同时修改light.json中的数据为{"light":"on"};点击按钮off,会通过js显示一张灯灭的图片,同时修改light.json中的数据为{"light":"off"})。但对于我来说,重点在于掌握控制原理而不在于准备网页程序,因为远程控制的形式有很多种(网页端、安卓应用、苹果应用),没必要为了完成测试把每种应用都学一遍,所以我只在自己电脑上新建一个web project,例如工程名起为wifiarduino,里面放一个light.json文件,内容为{"light":"off"},然后放到tomcat中发布(需要修改端口号为http协议默认端口号80),然后就能通过在浏览器端输入http://localhost/wifiarduino/light.json查看到了。

 三、实物连线

我们不需要使用专门的固件烧写工具,我们可以将移除了ATmega芯片的Arduino开发板做为固件烧写工具。如下图所示,移除中间的芯片。

ESP8266        Arduino

  • VCC                      3.3 V
  • GND                     GND
  • CH_PD                 3.3 V
  • TX                         TX
  • RX                         RX
  • GPIO2                   3.3 V
  • GPIO0                   GND

 给ESP8266供电:ESP8266模块是由低电压(3.3V DC)供电的,把ESP8266的VCC和CH_PD连接到Arduino的3.3V开发板上,在GPIO2和3.3V电源中间接一个1KΩ的电阻。
连接TX/RX引脚:TX/RX是 用于编程模块,串口I/O以及调试。将ESP8266的TX与Arduino板上的TX,ESP8266的RX与Arduino上的RX对应连接起来。
将ESP8266设定为FLASH(烧写)模式:当GPIO0(上图紫色线)接地线时,ESP8266是以bootloader模式(编程模式)启动的,这也就是你可以烧写ESP8266(将Arduino上的代码转移到ESP8266上)的时候。在Arduino代码加载完毕时,你将看到Arduino IDE底部提示“上传结束”的信息,然后代码就会开始运行了。
程序上传结束后,将紫色线移除:当你不想将ESP8266一直设定为烧写模式时,将紫色线移除即可,程序将会一直在ESP8266上执行。

四、编写Arduino代码

原理:下面我们将用到<ESP8266WiFi.h>以及<ArduinoJson.h>头文件,实质上就是通过ESP去访问我们的light.json文件,如果json文件中light的值是on的话,就点亮LED;如果light的值是off的话,就关闭LED(你可以在本地编辑json文件中light的值,来控制LED的开关)。下面是示例代码:

#include <ESP8266WiFi.h>
#include <ArduinoJson.h>
const char* ssid     = "mywifi"; //修改成你可访问的wifi名称
const char* password = "mywifipassword";  // 修改成wifi密码
const char* host     = "192.168.1.10"; // 你的网点域名或IP
String path          = "/wifiarduino/light.json"; // 文件路径
const int pin        = 2;
void setup() {pinMode(pin, OUTPUT);pinMode(pin, HIGH);Serial.begin(115200);delay(10);Serial.print("Connecting to ");Serial.println(ssid);WiFi.begin(ssid, password);int wifi_ctr = 0;while (WiFi.status() != WL_CONNECTED) {delay(500);Serial.print(".");}Serial.println("WiFi connected");Serial.println("IP address: " + WiFi.localIP());
}
void loop() {Serial.print("connecting to ");Serial.println(host);WiFiClient client;const int httpPort = 80;if (!client.connect(host, httpPort)) {Serial.println("connection failed");return;}client.print(String("GET ") + path + " HTTP/1.1\r\n" +               "Host: " + host + "\r\n" +                "Connection: keep-alive\r\n\r\n");delay(500); // wait for server to respond// read response
String section="header";while(client.available()){String line = client.readStringUntil('\r');// Serial.print(line);    // we’ll parse the HTML body hereif (section=="header") { // headers..Serial.print(".");if (line=="\n") { // skips the empty space at the beginningsection="json";}}else if (section=="json") {  // print the good stuffsection="ignore";String result = line.substring(1);      // Parse JSONint size = result.length() + 1;char json[size];result.toCharArray(json, size);StaticJsonBuffer<200> jsonBuffer;JsonObject& json_parsed = jsonBuffer.parseObject(json);if (!json_parsed.success()){Serial.println("parseObject() failed");return;}// Make the decision to turn off or on the LEDif (strcmp(json_parsed["light"], "on") == 0) {digitalWrite(pin, HIGH);Serial.println("LED ON");}else {digitalWrite(pin, LOW);Serial.println("led off");}}}Serial.print("closing connection. ");
}

 五、最后需要做的事

我们打开Arduino IDE中 工具->串口监视器,并将右下角的波特率设定为115200,然后它将会显示你是否连上了WiFi,如果你看到ESP8266上有红灯亮起,且有蓝灯闪烁时,说明你的无线模块准备完毕。最后可以移除RX/TX引脚连线,通过3.3V的锂电池给ESP8266供电(如下图所示)。感谢阅读,祝编程愉快!

转载于:https://www.cnblogs.com/ticktack/p/8043344.html

Arduino结合ESP8266 Serial WIFI模块访问远程服务器相关推荐

  1. 用Arduino和esp8266检测WIFI信号强度

    用Arduino和esp8266检测WIFI信号强度 用Arduino和esp8266检测WIFI信号强度 本文章是记录我个人在做 ESP8266和arduino之间的通信的过程和心得,我将其分享给大 ...

  2. ESP8266串口wifi模块 NodeMCU Lua V3物联网开发板 CH340上传程序不显示

    买的ESP8266串口wifi模块 NodeMCU Lua V3物联网开发板 CH340在上传店家提供的示例程序可以上传成功,但屏幕不显示,如下图. 方法:选择开发板时,选择"LOLIN(W ...

  3. ESP8266串口WiFi模块

    参考和学习<ESP8266串口WIFI模块的基本使用>点击打开链接 ESP8266是一款超低功耗的UART-WiFi 透传模块,可将用户的物理设备连接到Wi-Fi 无线网络上,进行互联网或 ...

  4. 远程PLC监控调试,PLC通用中转服务器,多客户端tcp中转服务器源代码,socket多线程并发通讯,对接多路plc串口WIFI模块实现远程调试程序

    远程PLC监控调试,PLC通用中转服务器,多客户端tcp中转服务器源代码,socket多线程并发通讯,对接多路plc串口WIFI模块实现远程调试程序. 支持各种串口服务器以及tcp以太网转发器硬件. ...

  5. arm服务器获取文件路径中文,ssh 访问远程服务器文件路径

    ssh 访问远程服务器文件路径 内容精选 换一换 在IntelliJ上选择"项目",找到".idea"文件夹,单击右键选择"新建>文件" ...

  6. 远程服务器的url怎么配置文件,Linux常用命令(5)--SSH访问远程服务器、SCP服务器间文件拷贝...

    一.使用"ssh"命令,登录访问远程服务器 Linux是一个支持多用户操作的系统,在同一时刻允许多个用户同时访问系统,共享系统提供的服务.那么用户如何从不同的机器上访问同一台Lin ...

  7. 使用nodejs和Java访问远程服务器的服务

    既然这篇文章用的是nodejs和Java访问远程服务器的服务,那么咱们先用另一门编程语言,SAP的ABAP(我日常工作使用得最多的编程语言)来开发一个服务吧. 这是我用ABAP编程语言实现服务的类:Z ...

  8. java访问服务器中的文件,java 访问远程服务器文件

    java 访问远程服务器文件 内容精选 换一换 已成功登录Java性能分析.待安装Guardian的服务器已开启sshd.待安装Guardian的服务器已安装JRE,JRE版本要求为Huawei JD ...

  9. ssh查看服务器上的文件,ssh 访问远程服务器文件路径

    ssh 访问远程服务器文件路径 内容精选 换一换 在IntelliJ上选择"项目",找到".idea"文件夹,单击右键选择"新建>文件" ...

最新文章

  1. 《笨方法学python》_《笨办法学Python》 第46课手记
  2. linux java执行_linux下运行java
  3. mysql编译安装原理_MySQL编译安装全过程
  4. 关闭windows 2008的自动播放
  5. inux中tail命令---用于查看文件内容
  6. 数据结构之二叉查找树介绍
  7. 国家开放大学2021春1062文学英语赏析题目
  8. Linux根目录简介
  9. Go: 模拟一张银行卡存、取、查的功能(综合练习)
  10. java apache类库_java-类库-Apache Commons补充
  11. android多媒体视频,android多媒体(视频播放器)
  12. QT css样式 详解
  13. 移芯平台EC616上按键唤醒
  14. PHP环境安装到U盘,Windows To Go辅助工具一键把Win10系统安装到U盘 | 麦田一棵葱
  15. 游戏二次元场景插画教程,常见的6种构图方法分享
  16. 合肥工业大学——java(最新版)——第二次作业
  17. 网狐棋牌数据库配置问题
  18. springboot+旅游网站 毕业设计-附源码211713
  19. AI代码协作训练人工智能代码管理——阿吉特
  20. Undefined symbols for architecture i386和”_OBJC_CLASS_$_xx文件名, referenced from:

热门文章

  1. 迁移confluence
  2. 北京地铁线路图(最新-非常实用)
  3. 【51 Nod 1326】遥远的旅途
  4. 塔望 · ​食界​人物|红牛饮料背后的两个企业家
  5. 蓝桥杯 逗志芃的危机
  6. 如何让你的 Python 代码在腾讯云 Linux 中一直运行着
  7. 使用nginx分流虎牙爱奇艺同时直播
  8. Java地位被撼动?Java与JavaScript的趣事连载
  9. 无泪的眼神---上海街头真实的一幕!(转自 燕南社区)
  10. HTML超链接文字加粗,Markdown语法之--标题/注释/超链接/下划线/图片/代码/贯穿线/斜体加粗/列表,使你的文本更丰富...