You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
137 lines
3.5 KiB
137 lines
3.5 KiB
/*
|
|
* Blink
|
|
* Turns on an LED on for one second,
|
|
* then off for one second, repeatedly.
|
|
*/
|
|
|
|
#include <Arduino.h>
|
|
#include <WiFi.h>
|
|
#include <WiFiMulti.h>
|
|
|
|
#include <Wire.h>
|
|
#include <SPI.h>
|
|
|
|
#include <GxEPD2_BW.h>
|
|
#include <Fonts/FreeMonoBold9pt7b.h>
|
|
#include "bitmaps/Bitmaps128x250.h"
|
|
#include <Adafruit_GFX.h>
|
|
|
|
#include <Adafruit_Sensor.h>
|
|
#include "Adafruit_BME680.h"
|
|
|
|
#include "XD0OTA.h"
|
|
#include "XD0MQTT.h"
|
|
|
|
static const char* TAG = "MAIN";
|
|
|
|
WiFiMulti wifiMulti;
|
|
GxEPD2_BW<GxEPD2_213_B72, GxEPD2_213_B72::HEIGHT> display(GxEPD2_213_B72(/*CS=SS*/ TFT_CS, /*DC=*/ TFT_DC, /*RST=*/ TFT_RST, /*BUSY=*/ -1)); // GDEH0213B72
|
|
Adafruit_BME680 bme; // I2C (also available: hardware SPI
|
|
|
|
XD0MQTT mqtt;
|
|
|
|
|
|
void helloWorld()
|
|
{
|
|
const char HelloWorld[] = "Hello World!";
|
|
//Serial.println("helloWorld");
|
|
display.setRotation(1);
|
|
display.setFont(&FreeMonoBold9pt7b);
|
|
display.setTextColor(GxEPD_BLACK);
|
|
int16_t tbx, tby; uint16_t tbw, tbh;
|
|
display.getTextBounds(HelloWorld, 0, 0, &tbx, &tby, &tbw, &tbh);
|
|
// center bounding box by transposition of origin:
|
|
uint16_t x = ((display.width() - tbw) / 2) - tbx;
|
|
uint16_t y = ((display.height() - tbh) / 2) - tby;
|
|
display.setFullWindow();
|
|
display.firstPage();
|
|
do
|
|
{
|
|
display.fillScreen(GxEPD_WHITE);
|
|
display.setCursor(x, y);
|
|
display.print(HelloWorld);
|
|
}
|
|
while (display.nextPage());
|
|
//Serial.println("helloWorld done");
|
|
}
|
|
|
|
|
|
void setup()
|
|
{
|
|
Serial.begin(115200);
|
|
|
|
// initialize LED digital pin as an output.
|
|
pinMode(LED_BUILTIN, OUTPUT);
|
|
|
|
Serial.println("setup");
|
|
|
|
// initialize e-paper display
|
|
SPI.begin(18, 19, 23, TFT_CS);
|
|
display.init();
|
|
Serial.println("display init done"); Serial.flush();
|
|
|
|
display.clearScreen();
|
|
display.refresh();
|
|
|
|
helloWorld();
|
|
display.powerOff();
|
|
|
|
if (!bme.begin()) {
|
|
ESP_LOGE(TAG, "Could not find a valid BME680 sensor, check wiring!");
|
|
}
|
|
/*
|
|
// Set up oversampling and filter initialization
|
|
bme.setTemperatureOversampling(BME680_OS_8X);
|
|
bme.setHumidityOversampling(BME680_OS_2X);
|
|
bme.setPressureOversampling(BME680_OS_4X);
|
|
bme.setIIRFilterSize(BME680_FILTER_SIZE_3);
|
|
bme.setGasHeater(320, 150); // 320*C for 150 ms
|
|
*/
|
|
wifiMulti.addAP(WIFI_SSID, WIFI_PASSWD);
|
|
wifiMulti.addAP(WIFI_SSID2, WIFI_PASSWD2);
|
|
|
|
Serial.println("Connecting Wifi...");
|
|
if(wifiMulti.run() == WL_CONNECTED) {
|
|
Serial.println("");
|
|
Serial.println("WiFi connected");
|
|
Serial.println("IP address: ");
|
|
Serial.println(WiFi.localIP());
|
|
}
|
|
/*
|
|
XD0OTA ota("esp32-weatherstation");
|
|
ota.update();
|
|
|
|
mqtt.begin();
|
|
*/
|
|
}
|
|
|
|
void loop()
|
|
{
|
|
Serial.println("loop");
|
|
/*
|
|
unsigned long endTime = bme.beginReading();
|
|
if (! bme.performReading()) {
|
|
ESP_LOGE(TAG, "BME680: Failed to perform reading :(");
|
|
return;
|
|
}
|
|
|
|
Serial.print("Temperature = "); Serial.print(bme.temperature); Serial.println(" *C");
|
|
display.print("Temperature: "); display.print(bme.temperature); display.println(" *C");
|
|
|
|
Serial.print("Pressure = "); Serial.print(bme.pressure / 100.0); Serial.println(" hPa");
|
|
display.print("Pressure: "); display.print(bme.pressure / 100); display.println(" hPa");
|
|
|
|
Serial.print("Humidity = "); Serial.print(bme.humidity); Serial.println(" %");
|
|
display.print("Humidity: "); display.print(bme.humidity); display.println(" %");
|
|
|
|
Serial.print("Gas = "); Serial.print(bme.gas_resistance / 1000.0); Serial.println(" KOhms");
|
|
display.print("Gas: "); display.print(bme.gas_resistance / 1000.0); display.println(" KOhms");
|
|
*/
|
|
|
|
if(wifiMulti.run() != WL_CONNECTED) {
|
|
Serial.println("WiFi not connected!");
|
|
delay(1000);
|
|
}
|
|
|
|
delay(2000);
|
|
}
|
|
|