โค้ต
ในคอมผม เปลี่ยน ssid pass token แล้วครับ
/*
-OLED-
VCC - 3v3
GND - GND
D1 - SCL
D2 - SDA
-PMS7003-
VCC - 5V
GND - GND
RX - D6
TX - D7
*/
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include "PMS.h"
#include <SoftwareSerial.h>
SoftwareSerial pmsSerial(D6, D7); //RX,TX
PMS pms(pmsSerial);
PMS::DATA data;
#define BLYNK_PRINT Serial
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
// Declaration for an SSD1306 display connected to I2C (SDA, SCL pins)
#define OLED_RESET -1 // Reset pin # (or -1 if sharing Arduino reset pin)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
char ssid[] = "wifi_ssid";
char pass[] = "wifi_password";
char auth[] = "xxxxxxxxxxxxxxxxxxxxxx"; //Auth Token from Blynk
void setup() {
Serial.begin(115200);
pmsSerial.begin(9600);
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
Blynk.begin(auth, ssid, pass);
}
void loop() {
Blynk.run();
if (pms.read(data)) {
display_update();
}
}
void display_update() {
//------Update OLED------
display.clearDisplay(); display.setTextColor(WHITE);
display.drawRoundRect(0, 0, 127, 40, 3, WHITE); display.drawRoundRect(0, 40, 60, 23, 3, WHITE); display.drawRoundRect(60, 40, 66, 23, 3, WHITE);
display.setCursor(85, 10); display.setTextSize(1); display.println("PM2.5"); display.setCursor(85, 25); display.println("ug/m"); display.setCursor(108, 22); display.println("3");
display.setCursor(20, 10); display.setTextSize(3); display.print(data.PM_AE_UG_2_5);
display.setCursor(4, 47); display.setTextSize(1); display.print("PM1 : "); display.print(data.PM_AE_UG_1_0);
display.setCursor(64, 47); display.setTextSize(1); display.print("PM10 : "); display.print(data.PM_AE_UG_10_0);
display.display();
//------sent data to blynk------
Blynk.virtualWrite(V1, data.PM_AE_UG_1_0);
Blynk.virtualWrite(V2, data.PM_AE_UG_2_5);
Blynk.virtualWrite(V3, data.PM_AE_UG_10_0);
//------print on serial moniter------
Serial.print("PM 1.0 (ug/m3): ");
Serial.println(data.PM_AE_UG_1_0);
Serial.print("PM 2.5 (ug/m3): ");
Serial.println(data.PM_AE_UG_2_5);
Serial.print("PM 10.0 (ug/m3): ");
Serial.println(data.PM_AE_UG_10_0);
}
Remy_Martin (Permpol Thanapunnamas) May 16, 2020, 9:36am #2
ขอดูโค้ตที่ใช้ด้วยครับ
MiNiSize (เซฟ 'คับ) May 17, 2020, 11:40pm #3
ในคอมผม เปลี่ยน ssid pass token แล้วครับ
/*
-OLED-
VCC - 3v3
GND - GND
D1 - SCL
D2 - SDA
-PMS7003-
VCC - 5V
GND - GND
RX - D6
TX - D7
*/
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include "PMS.h"
#include <SoftwareSerial.h>
SoftwareSerial pmsSerial(D6, D7); //RX,TX
PMS pms(pmsSerial);
PMS::DATA data;
#define BLYNK_PRINT Serial
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
// Declaration for an SSD1306 display connected to I2C (SDA, SCL pins)
#define OLED_RESET -1 // Reset pin # (or -1 if sharing Arduino reset pin)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
char ssid[] = "wifi_ssid";
char pass[] = "wifi_password";
char auth[] = "xxxxxxxxxxxxxxxxxxxxxx"; //Auth Token from Blynk
void setup() {
Serial.begin(115200);
pmsSerial.begin(9600);
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
Blynk.begin(auth, ssid, pass);
}
void loop() {
Blynk.run();
if (pms.read(data)) {
display_update();
}
}
void display_update() {
//------Update OLED------
display.clearDisplay(); display.setTextColor(WHITE);
display.drawRoundRect(0, 0, 127, 40, 3, WHITE); display.drawRoundRect(0, 40, 60, 23, 3, WHITE); display.drawRoundRect(60, 40, 66, 23, 3, WHITE);
display.setCursor(85, 10); display.setTextSize(1); display.println("PM2.5"); display.setCursor(85, 25); display.println("ug/m"); display.setCursor(108, 22); display.println("3");
display.setCursor(20, 10); display.setTextSize(3); display.print(data.PM_AE_UG_2_5);
display.setCursor(4, 47); display.setTextSize(1); display.print("PM1 : "); display.print(data.PM_AE_UG_1_0);
display.setCursor(64, 47); display.setTextSize(1); display.print("PM10 : "); display.print(data.PM_AE_UG_10_0);
display.display();
//------sent data to blynk------
Blynk.virtualWrite(V1, data.PM_AE_UG_1_0);
Blynk.virtualWrite(V2, data.PM_AE_UG_2_5);
Blynk.virtualWrite(V3, data.PM_AE_UG_10_0);
//------print on serial moniter------
Serial.print("PM 1.0 (ug/m3): ");
Serial.println(data.PM_AE_UG_1_0);
Serial.print("PM 2.5 (ug/m3): ");
Serial.println(data.PM_AE_UG_2_5);
Serial.print("PM 10.0 (ug/m3): ");
Serial.println(data.PM_AE_UG_10_0);
}
PUYIOT May 31, 2020, 4:26am #4
ลองดู Library ตัวนี้ดูครับ (แค่แนะเป็นแนวทาง)
ESP8266 and ESP32 OLED driver for SSD1306 displays
I2C display driver for SSD1306 OLED displays connected to ESP8266, ESP32, Mbed-OS
#include "SSD1306.h"
SSD1306Wire display(0x3c, D1, D2);
voild setup{
display.init();
display.flipScreenVertically();
display.setFont(ArialMT_Plain_16);
display.setTextAlignment(TEXT_ALIGN_LEFT);
}
voild loop{
display.display();
display.clear();
display.setFont(ArialMT_Plain_10);
display.drawString(15, 0, " SSID >> ");
display.setFont(ArialMT_Plain_10);
display.drawString(0, 15, " BBBBB "));
display.setFont(ArialMT_Plain_10);
display.drawString(15, 30, " IP >> ");
display.setFont(ArialMT_Plain_16);
display.drawString(0, 45, "AAAAAA");
delay (1000);
}