ESP822芯片是一款既可以当做服务器又可以被当做客户端的开发板。当选择ESP8266作为客户端时,可以连接WIFI进行网络请求。当网络配置好以后可以使用https请求,对相关的API进行请求。

先展示一下结果:

如上图显示即为12月15日22时41分

第一步:驱动数码管

1.八位数码管是通过两片595芯片级联控制的共阳极数码管,电路图如下。

八位数码管对应八位,当每一位写入高电平时,就相当于选择了对应的数码管点亮。当速度足够快时,人的肉眼就不会分辨出闪烁的效果。比如说 0000 0001 就是选择最右边的数码管显示数字。当选中位选以后再进行八位的段选,也就是说控制数码管显示什么数字。每位数码管实质是由八个led灯组成。因为是共阳极数码管,因此写入低电平时led会点亮。比如说:写入 1001 1111 数码管就会显示数字 “1”。当写入 0000 0001 1001 1111 时就会出现最右边数码管点亮且显示数字“1”的现象。至于数码管到底是怎么工作的以及数码管怎么显示对应的数字,并不是本文章的重点,建议百度可以知道的更加详细。

代码如下:

//595数码管模块
void DTSMG(u16 buff)
{int i;digitalWrite(4,LOW);//拉低电平for(i=0;i<=15;i++) //循环将16位二进制数写入两片级联的595中{digitalWrite(5,LOW);//拉低电平if(((buff>>i)&0x0001)==0) { digitalWrite(16,LOW);}//DIO 待扫描引脚为低电平else if(((buff>>i)&0x0001)==1) { digitalWrite(16,HIGH);}//待扫描引脚为高电平for(int j=0;j<1000;j++);digitalWrite(5,HIGH);//将二进制信息移位送入595}for(int j=0;j<1000;j++);digitalWrite(4,HIGH);//将16位二进制信息通过595持续输出
}

以上便为数码管控制代码。

以下即为ESP8266作为客户端访问API的代码

#include <ESP8266WiFi.h>
#include <WiFiClientSecure.h>
#include <ESP8266WebServer.h>#define ssid     "12345678"       //这里的12345678改为自己的WiFi名称
#define password "12345678"       //这里的12345678改为自己的WiFi密码
//测试HTTPS通讯的网站
const char *host = "***********";  //这里更换为需要访问的域名
const int httpsPort = 443;  //HTTPS请求的端口443
char *ch3;/ /用于存放时间数据数据
int ad[8];
int x;
int h=0;//数码管数据即 0,1,2,3,4,5,6,7,8,9
u16 shujubao[16]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x19};void setup() {Serial.begin(9600);    //设置波特率WiFi.mode(WIFI_STA);    //设置ESP8266为无线终端工作模式WiFi.begin(ssid, password); //连接目标WiFiSerial.println("");Serial.println("Connecting"); Serial.println("");// 等待连接while (WiFi.status() != WL_CONNECTED) {   //WiFi.status() != WL_CONNECTED判断是否连接成功delay(500);   //延时Serial.print(".");  //没连接成功时循环输出“.”}Serial.println("");Serial.print("Connected to ");Serial.println(ssid);Serial.print("IP address: ");Serial.println(WiFi.localIP()); //成功连接后通过串口监视器显示WiFi名称以及ESP8266的IP地址。//此处为配置ESP8266相关的三个引脚pinMode(4,OUTPUT);//D2   RCLpinMode(5,OUTPUT);//D1   SCLpinMode(16,OUTPUT);//D0
}//{"sysTime2":"2021-12-26 13:58:02","sysTime1":"20211226135802"}
//以上为实际请求回来的数据,需要提取的有效信息为第50位至第57位void fang()
{https_connect(); // 实现HTTPS访问通讯for(int i=50;i<=57;i++)//循环使用switch语句实现类型转换,将有用信息转换为int类型{
switch(ch3[i])
{
case '0' : ad[i-50]=0;break;
case '1' : ad[i-50]=1;break;
case '2' : ad[i-50]=2;break;
case '3' : ad[i-50]=3;break;
case '4' : ad[i-50]=4;break;
case '5' : ad[i-50]=5;break;
case '6' : ad[i-50]=6;break;
case '7' : ad[i-50]=7;break;
case '8' : ad[i-50]=8;break;
case '9' : ad[i-50]=9;break;
}} }//此处为一直循环显示数码管的部分
void loop()
{if(h==9999){//调用请求函数fang();h=0;}h++;//1  0000 0001  1001 1111 DTSMG((0x01<<8)+shujubao[ad[0]]);for(int j=0;j<1000;j++);//此处为延时//2  0000 0010  0010 0101DTSMG((0x02<<8)+shujubao[ad[1]]);for(int j=0;j<1000;j++);//3  0000 0100  0000 1101DTSMG((0x04<<8)+shujubao[ad[2]]);for(int j=0;j<1000;j++);//4  0000 1000  1001 1001DTSMG((0x08<<8)+shujubao[ad[3]]);for(int j=0;j<1000;j++);//5  0001 0000  0100 1001DTSMG((0x10<<8)+shujubao[ad[4]]);for(int j=0;j<1000;j++);//6  0010 0000  0100 0001DTSMG((0x20<<8)+shujubao[ad[5]]);for(int j=0;j<1000;j++);//7  0100 0000  0001 1111DTSMG((0x40<<8)+shujubao[ad[6]]);for(int j=0;j<1000;j++);//8  1000 0000  0000 0001DTSMG((0x80<<8)+shujubao[ad[7]]);for(int j=0;j<1000;j++);}//数码管模块
void DTSMG(u16 buff)
{int i;digitalWrite(4,LOW);for(i=0;i<=15;i++){digitalWrite(5,LOW);if(((buff>>i)&0x0001)==0) { digitalWrite(16,LOW);}//DIOelse if(((buff>>i)&0x0001)==1) { digitalWrite(16,HIGH);}for(int j=0;j<1000;j++);digitalWrite(5,HIGH);}for(int j=0;j<1000;j++);digitalWrite(4,HIGH);
}//网络调取API函数
void https_connect()
{//建立WiFiClientSecure对象WiFiClientSecure httpsClient;//串口监视器显示域名    Serial.println(host);//无验证方式连接     httpsClient.setInsecure();//用来判断是否连接超时httpsClient.setTimeout(15000);  delay(1000);    //延时Serial.println("HTTPS Connecting");Serial.println("");int r=0;  while((!httpsClient.connect(host,httpsPort)) && (r < 300)){ // 尝试连接服务器并等待delay(100);         //httpsClient.connect(host,httpsPort)用于连接到服务器Serial.print(".");r++;}if(r==30){        // 连接超时后输出"连接失败"信息并返回Serial.println("Connection failed");Serial.println(httpsClient.getLastSSLError());return;} else { Serial.println("Connected...");// 连接成功则输出“连接成功”信息}// 建立HTTPS请求信息字符串//此处的************应更换为自己需要访问的API地址String request =  String("GET ")+"************"+" HTTP/1.1\r\n" +  //请求行"Host: " + host + "\r\n" +   //请求头"connection: close\r\n"+"\r\n";//  向服务器发送请求httpsClient.print(request); Serial.println("request sent");// 告知用户当前ESP8266已经成功接收服务器响应头信息。while (httpsClient.connected()){// 检查服务器响应信息。一旦查到响应头结束字符,则通过串口监视器告知ESP8266已经成功接收服务器响应头信息。String line = httpsClient.readStringUntil('\n'); //获取响应头信息//串口监视器显示响应头信息if (line == "\r"){   //判断头是否结束Serial.println("headers received");break;}}// 通过串口监视器输出服务器响应体信息(服务器报文)Serial.println("响应体:");String body;while(httpsClient.available()){        body= httpsClient.readStringUntil('}');    //获取响应体信息//此处为强制类型转换char *ch2 = const_cast<char*>(body.c_str());Serial.println(body);ch3= ch2;}httpsClient.stop(); //操作结束,断开服务器连接Serial.println("closing connection");
}

以上代码中有一些需要注意的地方

1、首先要更更改WiFi名称与wifi密码

2、需要更改域名地址

3、需要更改api请求地址

具体网络中可以请求的有关时间请求的网络API可以百度搜索

本文使用的有关esp8266作为客户端https请求的知识学习自“太极创客”。第一次写博客,不是很会,望各位大佬雅正。

ESP8266及数码管的网络时钟相关推荐

  1. ESP8266与STC8H8K单片机联动——天气时钟

    基于ESP8266与STC单片机的天气时钟(包括DS18B20.TFT.串口.外部中断.ESP8266.STC.API等) 文章目录 基于ESP8266与STC单片机的天气时钟(包括DS18B20.T ...

  2. 校园网络时钟系统(标准化考场)建设方案

    校园网络时钟系统(标准化考场)建设方案 校园网络时钟系统(标准化考场)建设方案 [摘要]时钟系统是一个大型标准计时系统,随着网络的普及,许多校园都建了自己的校园专网,使用的网络设备和服务器也日益增多, ...

  3. Esp8266 进阶之路21 【高级篇】浅谈 esp8266 如何在本地局域网网络情况下实现最大效率地和前端实现数据交互。(附带Demo)

    本系列博客学习由非官方人员 半颗心脏 潜心所力所写,不做开发板.仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 序号 SDK版本 内容 链接 1 nonos2.0 搭建 ...

  4. 单片机课程设计--网络时钟

    单片机课程设计–网络时钟 测控1902 孙楷亮 文章目录 单片机课程设计--网络时钟 作品功能 目标功能 典型应用场景 总体计划 代码计划 时间规划 开发资源 开发环境 硬件资源 软件资源 文档资料 ...

  5. NTP网络时钟源(时钟系统)在标准化考场中应用

    NTP网络时钟源(时钟系统)在标准化考场中应用 NTP网络时钟源(时钟系统)在标准化考场中应用 [摘要]时钟系统是一个大型标准计时系统,随着网络的普及,许多校园都建了自己的校园专网,使用的网络设备和服 ...

  6. linux系统下ntp网络时钟服务器(NTP服务器)的搭建和使用

    linux系统下ntp网络时钟服务器(NTP服务器)的搭建和使用 linux系统下ntp网络时钟服务器(NTP服务器)的搭建和使用 安徽京准科技开发的NTP网络时间源设备 参考 ahjzsz.com  ...

  7. RT-Thread Studio 项目实战教程 | 快速打造一个桌面mini网络时钟

    寻求更清爽的阅读体验,请移步:Mculover666的个人博客. 项目效果视频 花半小时打造的桌面mini网络时钟(自动网络对时.温度显示.湿度显示) 1. RT-Thread Studio RT-T ...

  8. NTP网络时钟同步协议对计算机网络数据的重要性

    NTP网络时钟同步协议对计算机网络数据的重要性 概述:电脑时间走时不准是出了名的.它一般是以廉价的振荡电路或石英钟为基础,每天的误差可达数秒,经过一段时间的累积就会出现较大的误差.随着不断增加的分散式 ...

  9. 分布式数据库服务器时钟同步(NTP网络时钟同步)北斗卫星同步时钟起到关键性作用

    分布式数据库服务器时钟同步(NTP网络时钟同步)北斗卫星同步时钟起到关键性作用 分布式数据库服务器时钟同步(NTP网络时钟同步)北斗卫星同步时钟起到关键性作用 文章由安徽京准科技公司提供请勿转载 时间 ...

最新文章

  1. 将域名绑定到ip上,并实现访问不同二级子域名对应不同目录
  2. python读取二进制文件_如何用python读取二进制文件?
  3. 计算机图形学颜色表示,计算机图形学 颜色表示模型.ppt
  4. bash type php,Linux Bash Shell 寻找PHP(网站)挂马,后门
  5. Android系统性能优化(66)---APK启动加速
  6. Android开发笔记(三十)SQLite数据库基础操作
  7. Wannafly交流赛1: B. 白兔的式子(组合数)
  8. Php的入栈,PHP实现的栈数据结构示例【入栈、出栈、遍历栈】
  9. mysql 升级 乱码_mysql3升级到mysql5解决乱码心得
  10. 计算机三四级网络技术,全国计算机等级考试四级网络技术论述题真题(2-3)
  11. 1206、0805、0603、0402、0201、01005、008004,你手工焊接过的最小的封装是哪个
  12. 智能DNS之DNS原理与解析
  13. 手机上怎么访问电脑html页面,手机UC浏览器怎么访问电脑版 访问电脑页面方法...
  14. dbus-glib编程2:d-feet的使用
  15. CTSC2018 APIO2018 颓废 + 打铁记
  16. 云主机-本地内网通信OPEN-V
  17. 前端登录界面通用模版
  18. PostgreSQL函数——数值函数
  19. 安卓系统导航测试软件,安卓战GPS 凯立德导航软件实测解析
  20. Ubuntu20.04配置好文

热门文章

  1. 【老生谈算法】标准粒子群算法(PSO)及其Matlab程序和常见改进算法——粒子群算法
  2. Java记账本小项目二(图解超详细)
  3. Java学习篇之一(第一个程序——温度换算)
  4. JIO学习(一)输入流综述
  5. ros操作系统打开rviz,显示joint state publisher插件
  6. 有源标签方案SI24R2H单发射2.4G内置单片机+125KHz低频唤醒芯片分享
  7. 如何查找自己笔记本的产品密钥
  8. 百万级别网站架构思路
  9. 13安卓版 ilauncher_iOS13苹果桌面
  10. word文件是加密过的怎么解决