https://www.jianshu.com/p/cb0274d612b5
https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1572896567081&di=850e6d2014877a76396298eb9eef2b2b&imgtype=0&src=http%3A%2F%2Flearning.grobotronics.com%2Fwp-content%2Fuploads%2F2013%2F07%2Furl_uploaded_file_135884635050fe598fa6c4e.gif
추가 그렇지, 너무 늦었다.
#INCLUDE <Arduino.h> #INCLUDE <U8g2lib.h> 사용법 #include "DHT.h" #INCLUDE <ESP8266WiFi.h> #INCLUDE <WiFiClientSecure.h> #ifdef와 U8X8_HAVE_HW_SPI #INCLUDE <SPI.h> #endif 다음 #ifdef와 U8X8_HAVE_HW_I2C #INCLUDE <Wire.h> #endif 다음 #DEFINE SCL 5 #DEFINE SDA 4 #DEFINE DHTPIN 13 #DEFINE DHTTYPE DHT11 // DHT 11 #ifndef의 STASSID의 #DEFINE의 STASSID "HJhome" #DEFINE의 STAPSK "hphj29 ++" #endif 다음 CONST 숯 *의 SSID = STASSID; CONST 숯 * 암호 = STAPSK; CONST * CHAR 호스트 = "192.168.31.203 '; CONST INT는 Httpsport = 5001; U8G2_SSD1306_128X32_UNIVISION_1_SW_I2C의 u8g2 (U8G2_R0 / 클럭 * = * / SCL / * 데이터 = * / SDA / * = * / U8X8_PIN_NONE 재설정); // 그리고 Adafruit 깃털 ESP8266 / 32u4 보드 + FeatherWing OLED // U8G2_SSD1306_128X64_NONAME_F_SW_I2C의 u8g2 (U8G2_R0 / 클럭 * = * / SCL / * 데이터 = * / SDA / * = * / U8X8_PIN_NONE 재설정); // 모든 보드 디스플레이의 재설정없이 DHT의 DHT (DHTPIN, DHTTYPE); 무효 설치 () { // 여기에 설치 코드를 넣어 한 번 실행합니다 : u8g2.begin를 (); u8g2.enableUTF8Print (); Serial.begin (115200); Serial.println (F ( "DHTxx 테스트!")); dht.begin (); Serial.print ( "연결"); Serial.println (SSID); WiFi.mode (WIFI_STA); WiFi.begin (SSID, 비밀번호); 동안 (WiFi.status ()! = WL_CONNECTED) { 지연 (500); Serial.print ( "."); } Serial.println ( ""); Serial.println ( "무선 접속은"); Serial.println ( "IP 주소 :"); Serial.println (WiFi.localIP ()); } uint8_t의 m = 24; 보이드 루프 () { 지연 (2000); // 읽기 온도 나 습도가 약 250 밀리 초 걸립니다! // 센서 판독은 최대 2 초 '이전'(그것의 매우 느린 센서) 일 수있다 ) (플로트 dht.readHumidity = H; 섭씨 (기본값)로 // 읽기 온도 플로트 t = dht.readTemperature (); 화씨로 // 읽기 온도 (isFahrenheit = TRUE) 플로트 F = dht.readTemperature (TRUE); // 어떤 실패 읽기 종료 초기 (다시 시도) 있는지 확인하십시오. 경우 (때는 isNaN (H) || 때는 isNaN (t) || 때는 isNaN (F)) { Serial.println (F ( "DHT 센서로부터 판독하는 데 실패!")); 반환; } // 화씨 (기본값)에서 계산 열 인덱스 HIF dht.computeHeatIndex = (F, H) 플로트; 섭씨 (isFahreheit = 거짓)에 // 계산 열 인덱스 HIC = dht.computeHeatIndex (t, H, 거짓) 플로트; Serial.print (F ( "습도 :")); Serial.print (1H); Serial.print (F ( "% 온도 :")); Serial.print (t); Serial.print (F ( "° C")); Serial.print (F); Serial.print (F ( "° F 열 인덱스 :")); Serial.print (HIC); Serial.println (F ( "° F")); Serial.print (F ( "° C")); Serial.print (HIF); //u8g2.setFont(u8g2_font_unifont_t_chinese1); // "你好世界"모든 글리프에 대한 chinese2를 사용 u8g2.setFont (u8g2_font_wqy16_t_gb2312b); //u8g2.setFont(u8g2_font_6x13_tn); u8g2.firstPage (); 할 { u8g2.setFontDirection (0); u8g2.clearBuffer (); u8g2.setCursor (10, 13); u8g2.print ( "-温度"+ (문자열) t + "C"); u8g2.setCursor (10, 30); u8g2.print ( "-湿度"+ (문자열) H + "%"); // 중국어에 "Hello World" u8g2.sendBuffer (); //u8g2.drawStr(0,15,"Hello 세계 ")! } 동안 (u8g2.nextPage ()); 지연 (1000); WiFiClient 클라이언트; Serial.print ( " 경우 {(client.connect (호스트는 Httpsport)!) Serial.println는 ( "연결 실패"); 반환; }는 측정 사이에 몇 초간 기다리 //. 지연 (1000); 문자열 URL = "/"; Serial.print는 ( "URL을 요청 :"); Serial.println (URL); //组拼HTTPS请求헤더的 문자열 jsonStr = 문자열 ( "") + "{\"습도 \ ":"+ H + ","+ "\"온도 \ ":"+ t + "}"; / * "{"데이터 스트림 ": [{"+ " 'ID' ''+ dataId +" ' "+ ", "데이터 포인트'[{" + " '값'"+ 데이터 + "}]}]}"; * / Serial.println (jsonStr); 문자열 getStr = 문자열 (이하 "POST") + URL + "는 HTTP / 1.1 \ R & LT \ N-"+ "호스트"+ 호스트 + "\ R & LT \ N-"+ "를 User-- 에이전트 : 아두 이노 \ R & LT \ N-"+ "연결 닫기 \의 R & LT \ N- "; client.print (getStr); // 헤더에게 머리 전송 (문자열 (client.print"을 ") + "콘텐츠 길이를 : "+ jsonStr.length () +"\ 연구 \ 없음 \ 연구 \ n "); // 헤더 헤더 전송 - 데이터 콘텐츠 길이 (참고 : \ R \ n \ r에 \에서 n이 최종)이다 client.print (jsonStr) // 전송할 데이터 JSON가 Serial.println ("요청) "전송; ; Serial.println ( "==========") Serial.println는 ( "전송은 WAS :"); Serial.println (jsonStr) 요청 데이터가 전송 // 인쇄 Serial.println를 ( "대답이었다 : "); 문자열 라인 =" "; 동안 (client.connected () || client.available ()) { 경우 (client.available ()) { 라인 client.readStringUntil = ( '\ n')에; } } Serial.println (행); Serial.println ( "=========="); }