明珠的个人博客

是谁告诉你,你是赤裸的?

0%

网络客户端简介

在我们上网过程中,经常使用网页浏览器来浏览网站信息。在这一场景中,我们的网站浏览器就是一个网络客户端。网络客户端的主要功能就是向服务器发送网络请求。服务器在接收到客户端请求后会将请求的信息回复给客户端。

接下来我们使用ESP8266-NodeMCU开发板扮演网络客户端的角色,从而向网络服务器发送HTTP请求以获取服务器响应信息。

ESP8266-Arduino库中有两个库用于控制ESP8266与网络服务器进行通讯。他们是WiFiClient库和ESP8266HTTPClient库。

这两个库虽然功能相似,但是他们却是截然不同的两个库。ESP8266HTTPClient库相对简单易用。该库的库函数可以自动生成客户端请求信息并解析服务器响应信息。但正是由于该库的库函数为我们做了所有底层工作,这就导致该库不如WiFiclient库灵活。假如我们需要用ESP8266建立自定义客户端请求信息时,就要用WiFiClient库来实现了。另外WiFiClient库在解析服务器响应信息时可以使用丰富的STREAM类函数,这也为我们提供了很多便利。

因此,在我们使用ESP8266开发项目时,更多的时候是使用WiFiClient库来实现物联网通讯功能。换句话说,我个人认为WiFiClient库的重要性和实用性要高于ESP8266HTTPClient库。

以上描述有些抽象,接下来我们看两个简单示例。这两个示例的功能是相同的。都是通过ESP8266通过互联网向网络服务器发送请求并且将将网站服务器响应的信息输出在屏幕中。不同的是,示例一使用了ESP8266HTTPClient库来实现这一操作,示例二使用了WiFiClient库实现。

阅读全文 »

参考了大神的做法

今天用Markdown工具,需要实现一个点连接下载文件的功能,看起来很简单我也没多想就直接写了,并且单个页面测试的时候也挺正常,就发布了,但是发布后使用的时候发现问题了,浏览器中直接点击链接没反应,但是点右键选择下载是可以下载成功的,没想到还有这么个坑。

查了下资料看到大神给出的解决办法如下:

一般Markdown超链接的语法就是下面两种格式:

1
2
3
4
5
//行内式的链接:
[超链接名](超链接地址 "超链接title")
//参考式的链接:
[超链接名][id]
[id]: http://example.com/ "Optional Title Here"

改成直接写html并且要加上target=”_blank”属性,才可以正常下载,也就是代码变成了:

1
<a href="annex/附件1.docx" target="_blank">附件1</a>

测试:
附件1
附件1

所以实际代码变成了:

1
<a href="http://www.taichi-maker.com/wp-content/uploads/2020/04/config.zip" target="_blank">附件1</a>

了解JSON

JSON(JavaScript Object Notation),即JS对象简谱 , 是一种轻量级的数据交换格式。
实现客户端与服务器之间的数据交换,以前通用的数据交换语言是XML,但是Douglas crockford觉得xml的生成和解析都太麻烦,所以他提出了一种简化格式,也就是json。
相对而言,JSON 简单的语法格式和清晰的层次结构明显要比 XML 容易阅读,并且在数据交换方面,由于 JSON 所使用的字符要比 XML 少得多,可以大大得节约传输数据所占用得带宽。

JSON对象格式

举个栗子!试着用不同的语言描述一本书(对象):书名+内容,能够看出JSON在轻量级这块的优势。

  • Java

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Public class Test {
    public static void main() {
    Book b = new Book();
    b.setName(“金苹果”);
    b.setInfo(“种苹果好辛苦”);
    }
    }
    class Book {
    private String name;
    private String info;
    构造方法;
    get/set方法...
    }
  • JavaScript

阅读全文 »

JSON(JavaScript Object Notation)

JSON(JavaScript Object Notation) 是一种通用的轻量级数据交换文本格式。它很容易阅读和编写,也便于机器进行解析和生成。它使用JavaScript语法来存储和描述数据对象,但是JSON完全独立于JavaScript。JSON可适用于多种流行编程语言。这些特性使JSON成为理想的数据交换格式。

JSON重点概念

数据 对象 数组

JSON语法规则要点

  • 数据以“名”“值”对呈现
  • 数据“名”和“值”之间由
阅读全文 »

工作上感受到压力一定是获取到的信息不足,这时候要找同事、领导、老板去沟通获取足够的信息,才可以更好的去辅助解决问题,来减小去除压力。于生活也是一样,迷茫时多读书。STM32的开发板总算到手了,不过,物联网的心知天气还没做好,加油

形象生动的理解软、硬件层面的通信协议

众所周知通信协议就是一种数据传输的协议规范,从软硬件层面可以分为硬件层通信协议和软件层通信协议。

为了更加形象的理解软硬件层面的通信协议,我们将通信比作交通,通信的硬件层协议比作各国的公路标准,各国的公路标准类似于不同的硬件层协议标准;通信的软件层协议比作各国的交通规则,各国的交通规则类似于不同的软件层协议标准。

图1生动的对上述描述进行了解释。

通讯硬件层协议(解决逻辑传输的方式)

利用设备1向设备2传输0xA3(1010 0011)这样一组数据,从硬件层面将1010 0011这组数据定义为1为高电平,0为

阅读全文 »

(Ajax)控制LED引脚并将A0引脚读数实时显示于网页中

栗:(注意先将附件通过arduino小工具上传到闪存里,再进行程序烧录)

阅读全文 »

ESP8266闪存文件系统基本操作

写完程序后用arduino上传就可以实现控制了,不过,程序传到哪里了?

每一个ESP8266都配有一个闪存,这个闪存很像是一个小硬盘,我们上传的文件就被存放在这个闪存里。这个闪存的全称是Serial Peripheral Interface Flash File System(SPIFFS)。

除了可以存放上传的程序以外,我们还可以将网页文件或者系统配置文件存放在ESP8266的闪存中。本次我们将利用程序对闪存文件系统(SPIFFS)进行文件读取和修改。

先上例子

通过程序向闪存文件系统写入信息

阅读全文 »

通过网页服务实现将开发板引脚状态显示在网页中

和51单片机一样,我们先点灯,然后按键。

本次我们将使用D3引脚作为演示。选择D3引脚是因为它已经与开发板上的FLASH按键开关连接好了。

我们通过NodeMCU开发板上的FLASH按键控制D3引脚的电平。没有按下该按键时,D3引脚将会保持高电平状态。当按下该按键后,D3引脚会变为低电平。

上栗子:

阅读全文 »

通过网页服务实现NodeMCU开发板基本控制

NodeMCU作为物联网开发板,我们是需要通过网络对它实现控制的。本文将利用NodeMCU建立网络服务。通过浏览器可以访问NodeMCU所建立的网页。通过该网页,可实现对NodeMCU的控制。不知道有没有说清楚,哈哈!
后续每次连接WIFI后都要ping一下,防止连接错WIFI,造成错误浪费时间排查。

阅读全文 »

ESP8266生成网页-来自ESP8266的hello

网络服务器有很多种类型,它们的功能也十分丰富。通常承担网络服务器工作的设备都是运算能力比较强大的电脑。ESP866-NodeMCU虽然也能实现网络服务器的一些功能,但是毕竟它的运算能力是无法与那些昂贵的服务器电脑相媲美的,因此ESP8266-NodeMCU只能实现一些基本的网络服务功能。不过这些基本的网络服务功能已经足够我们开发物联网项目了。接下来我们看下如何让ESP8266-NodeMCU来实现网络服务功能(网络服务中的网页服务功能)。

所谓网页服务就是专门用于网页浏览的服务。这个操作我相信所有看到本文的朋友们都使用过,因为您现在正阅读的这篇文章就是通过网页服务传输到您面前的。

为了便于理解,我们一起回忆一下在打开这篇文章时曾经历了什么过程。首先,要想访问网站就要在浏览器地址栏输入对应的网站地址如: www.bilibili.com。当输入完地址并按下回车以后,浏览器会通过DNS服务查到B站网站服务器的IP地址。假设B站服务器地址为12.34.56.78。接下来浏览器就会向IP地址12.34.56.78的服务器发送http请求。当网站服务器收到了请求后,会把被请求的网页信息传输给浏览器,然后浏览器就会把收到的网页信息转换成网页显示在浏览器中。

为了能够应付来自全世界的粉丝朋友们大量访问,B站网站服务器是一台运算能力很强的计算机。假如

阅读全文 »

无线终端模式(Wireless Station)

连接WiFI

插队:仔细想想,用arduino就是调用现成的库函数就可以实现功能,不需要去看底层或者原理。程序内容及命名也简单明了,适合快速上手。

如下图所示,ESP8266可通过WiFi连接无线路由器。这与用手机通过WiFi连接无线路由器的模式相同。

以下示例程序用于演示如何使用NodeMCU以无线终端模式通过WiFi连接无线路由器。

阅读全文 »