Nginx配置网站HTTPS(ssl)

下面是在Nginx配置网站HTTPS(ssl)的参数

请酌情修改使用。

注意:TLS 1.1 协议预计将2020年3月份正式“退役”,详情点击 这里
server
{
    #监听443端口、ssl、http2
    listen 443 ssl http2 ;
    
    #启用ssl
    ssl on;
    
    #证书配置
    ssl_certificate    /idzd.top.pem;
    ssl_certificate_key    /idzd.top.pem;
    
    #支持的协议
    ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
    
    #支持的加密套件
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
    
    #依赖SSLv3和TLSv1协议的服务器密码将优先于客户端密码
    ssl_prefer_server_ciphers on;
    
    #设置储存SSL会话的缓存类型和大小
    ssl_session_cache shared:SSL:10m;
    
    #客户端能够反复使用储存在缓存中的会话参数时间
    ssl_session_timeout 10m;

}

一个简单的ESP8266WiFi时钟

首先,上效果图


你可能需要的准备


连线&安装NTPClient库

安装NTPClient库

这次我们选择NTPClient库,联网获取ntp时间。

项目地址

#获取UNIX时间戳
getEpochTime();

#获取当前时间
getFormattedTime();

#获取星期,0是星期日
getDay();


连线

  • D1 --- SDA
  • D2 --- SCL
  • 3V --- VCC
  • G --- GND

2089953529.png2089953529.png


代码

#include <Arduino.h>
#include <U8g2lib.h>
#include <time.h>
#include <SPI.h>
#include <Wire.h>
#include <NTPClient.h>
// change next line to use with another board/shield
#include <ESP8266WiFi.h>
//#include <WiFi.h> // for WiFi shield
//#include <WiFi101.h> // for WiFi 101 shield or MKR1000
#include <WiFiUdp.h>

#define SDA 05 //ESP8266 D1 PIN 05
#define SCL 04 //ESP8266 D2 PIN 04



const char *ssid     = "360 N7 Pro";
const char *password = "123456780";
char *week = "";


//SSD1306,128x64,全屏缓冲模式,模拟I2C,I2C,u8g2(旋转0度,时钟,数据,重置)
U8G2_SSD1306_128X64_NONAME_1_SW_I2C u8g2(U8G2_R0, /* clock=*/ SCL, /* data=*/ SDA, /* reset=*/ U8X8_PIN_NONE); 

WiFiUDP ntpUDP;
NTPClient timeClient(ntpUDP, "ntp1.aliyun.com",60*60*8, 30*60*1000);//设置访问的ntp服务器

void setup(){
  Serial.begin(115200);
  WiFi.begin(ssid, password);

  while ( WiFi.status() != WL_CONNECTED ) {
    delay ( 500 );
    Serial.print ( "." );
  }

  timeClient.begin();
  u8g2.begin();
  u8g2.enableUTF8Print();
}

void loop() {
  timeClient.update();
  u8g2.setFont(u8g2_font_unifont_t_chinese2);
  u8g2.firstPage();  
  do {
    u8g2.setCursor(0, 15);
    u8g2.print("北京时间:="); 
    u8g2.setCursor(0, 35);
    u8g2.print(timeClient.getFormattedTime()); 
    u8g2.setCursor(75, 35);
    switch(timeClient.getDay();){
      case 0:
            week = "Sun.";
            break;
      case 1:
            week = "Mon.";
            break;
      case 2:
            week = "Tues.";
            break;
      case 3:
            week = "Wed.";
            break;
      case 4:
            week = "Thur.";
            break;
      case 5:
            week = "Fri.";
            break;
      case 6:
            week = "Sat.";
            break;    
      }
    u8g2.print(week);  
    u8g2.setCursor(0, 55);
    time_t t;  
    struct tm *p;  
    t=timeClient.getEpochTime();  
    p=gmtime(&t);  
    char s[100];  
    //strftime(s, sizeof(s), "%Y-%m-%d %H:%M:%S", p);  
    strftime(s, sizeof(s), "%Y年%m月%d日", p);  
    u8g2.print(s);  
  } while ( u8g2.nextPage() );
  Serial.println(timeClient.getEpochTime());
  delay(1000);
}

ESP8266使用I2C连接OLDE屏幕

首先,上效果图

2019-12-29_122548.png2019-12-29_122548.png


你可能需要的前期准备


连线&安装OLED驱动库

1. 安装OLED驱动库

这次我们选择U8G2库,来驱动OLED屏幕。

项目地址 | wiki | 如何安装支持库

2. 连线

  • D1 --- SDA(数据)
  • D2 --- SCL(时钟)
  • 3V --- VCC
  • G --- GND

2089953529.png2089953529.png


代码

#include <Arduino.h>
#include <U8g2lib.h>
#include <SPI.h>
#include <Wire.h>


#define SDA 05 //ESP8266 D1 PIN 05
#define SCL 04 //ESP8266 D2 PIN 04

//SSD1306,128x64,全屏缓冲模式,模拟I2C,I2C,u8g2(旋转0度,时钟,数据,重置)
U8G2_SSD1306_128X64_NONAME_F_SW_I2C u8g2(U8G2_R0, /* clock=*/ SCL, /* data=*/ SDA, /* reset=*/ U8X8_PIN_NONE);


void setup(void) {
  u8g2.begin();
  u8g2.enableUTF8Print();// 为 Arduino print() 函数启用UTF8支持
}

void loop(void) {  
  u8g2.clearBuffer();//清除当前Buffer内的像素
  u8g2.setFont(u8g2_font_ncenB08_tr);// 英文字库
  u8g2.setCursor(0, 10);
  u8g2.print("Hello World!");// 英文 "Hello World" 
  u8g2.setFont(u8g2_font_unifont_t_chinese2);// 中文支持 chinese2: Lerning Level 1-6
  u8g2.setCursor(0, 35);
  u8g2.print("你好世界!");// 中文 "Hello World" 
  u8g2.setFont(u8g2_font_b10_t_japanese2);// 日文支持 japanese1: Lerning Level 1-6
  u8g2.setCursor(0, 55);
  u8g2.print("こんにちは世界!");// 日语 "Hello World" 
  u8g2.setFont(u8g2_font_unifont_t_symbols);
  u8g2.drawUTF8(75, 35, "☀ ☁ ☂");
  u8g2.sendBuffer();//发送Buffer内容到屏上
  delay(1000); 
}

U8g2初始化(如何选择oled构造函数)

注意:U8g2不支持“无控制器”屏幕

U8g2驱动库构造函数

U8g2驱动库构造函数格式如下:

U8G2\_ 屏幕控制器型号 \_ 分辨率 \_ 显示名称 \_ 缓冲模式(1,2,F) \_ 通讯方式 u8g2( 参数 );


例如:

//SSD1306,128x64,全屏缓冲模式,模拟I2C,I2C,u8g2(旋转0度,时钟,数据,重置)
U8G2_SSD1306_128X64_NONAME_F_SW_I2C u8g2(U8G2_R0, /* clock=*/ SCL, /* data=*/ SDA, /* reset=*/ U8X8_PIN_NONE);

你可以点击这里查看已支持的显示控制器构造函数

Arduino 的ESP8266开发板库又更新了

是的,今天本来想开始做个ESP8266的wifi天气时钟。

在我打开Arduino IDE 后不久,主界面左下角弹出了万恶之源。

作为一个不更新就会死星人。

我更新它了。

是的

我带着一丝侥幸,更新了他

然后,长城宽带告诉了我什么是现实。

没错,他帮我把以前的卸载了!!

然后新的下不下来。(我就纳闷了,浏览器直连下的飞起,这玩意咋就这么费劲?

行吧,我手动更新。(需要的可以看下这里半离线安装EPS8266支持到Arduino IDE


2.6.3的离线包在这

链接:https://pan.baidu.com/s/18lLsZEBT9xXGZpxQO1l7MA
提取码:xes0

使用方法查看这里