add esp32 folder

This commit is contained in:
Easy 2022-04-05 20:00:26 +08:00
parent 80c034ef44
commit c3bb7474bd
15 changed files with 58184 additions and 0 deletions

1
iot/deeresp32/.gitignore vendored Normal file
View File

@ -0,0 +1 @@
*.bin

View File

@ -0,0 +1,39 @@
<?php
/**
* This is project's console commands configuration for Robo task runner.
*
* @see http://robo.li/
*/
class RoboFile extends \Robo\Tasks
{
// define public methods as commands
public function text2hex()
{
$chars = utf8Split(file_get_contents('font.txt'));
$chars = array_unique($chars);
// sort($chars);
foreach ($chars as $char) {
if (strlen($char) > 0) {
echo '0x'.dechex(uniord($char)).',';
}
// break;
}
}
}
function utf8Split($str, $len = 1)
{
$arr = array();
$strLen = mb_strlen($str, 'UTF-8');
for ($i = 0; $i < $strLen; $i++) {
$arr[] = mb_substr($str, $i, $len, 'UTF-8');
}
return $arr;
}
function uniord($u)
{
$k = mb_convert_encoding($u, 'UCS-2LE', 'UTF-8');
$k1 = ord(substr($k, 0, 1));
$k2 = ord(substr($k, 1, 1));
return $k2 * 256 + $k1;
}

View File

@ -0,0 +1,369 @@
// USER DEFINED SETTINGS
// Set driver type, fonts to be loaded, pins used and SPI control method etc
//
// See the User_Setup_Select.h file if you wish to be able to define multiple
// setups and then easily select which setup file is used by the compiler.
//
// If this file is edited correctly then all the library example sketches should
// run without the need to make any more changes for a particular hardware setup!
// Note that some sketches are designed for a particular TFT pixel width/height
// ##################################################################################
//
// Section 1. Call up the right driver file and any options for it
//
// ##################################################################################
// Define STM32 to invoke optimised processor support (only for STM32)
//#define STM32
// Defining the STM32 board allows the library to optimise the performance
// for UNO compatible "MCUfriend" style shields
//#define NUCLEO_64_TFT
//#define NUCLEO_144_TFT
// STM32 8 bit parallel only:
// If STN32 Port A or B pins 0-7 are used for 8 bit parallel data bus bits 0-7
// then this will improve rendering performance by a factor of ~8x
//#define STM_PORTA_DATA_BUS
//#define STM_PORTB_DATA_BUS
// Tell the library to use 8 bit parallel mode (otherwise SPI is assumed)
//#define TFT_PARALLEL_8_BIT
// Display type - only define if RPi display
//#define RPI_DISPLAY_TYPE // 20MHz maximum SPI
// Only define one driver, the other ones must be commented out
// #define ILI9341_DRIVER // Generic driver for common displays
//#define ILI9341_2_DRIVER // Alternative ILI9341 driver, see https://github.com/Bodmer/TFT_eSPI/issues/1172
#define ST7735_DRIVER // Define additional parameters below for this display
//#define ILI9163_DRIVER // Define additional parameters below for this display
//#define S6D02A1_DRIVER
//#define RPI_ILI9486_DRIVER // 20MHz maximum SPI
//#define HX8357D_DRIVER
//#define ILI9481_DRIVER
//#define ILI9486_DRIVER
//#define ILI9488_DRIVER // WARNING: Do not connect ILI9488 display SDO to MISO if other devices share the SPI bus (TFT SDO does NOT tristate when CS is high)
//#define ST7789_DRIVER // Full configuration option, define additional parameters below for this display
//#define ST7789_2_DRIVER // Minimal configuration option, define additional parameters below for this display
//#define R61581_DRIVER
//#define RM68140_DRIVER
//#define ST7796_DRIVER
//#define SSD1351_DRIVER
//#define SSD1963_480_DRIVER
//#define SSD1963_800_DRIVER
//#define SSD1963_800ALT_DRIVER
//#define ILI9225_DRIVER
//#define GC9A01_DRIVER
// Some displays support SPI reads via the MISO pin, other displays have a single
// bi-directional SDA pin and the library will try to read this via the MOSI line.
// To use the SDA line for reading data from the TFT uncomment the following line:
// #define TFT_SDA_READ // This option is for ESP32 ONLY, tested with ST7789 and GC9A01 display only
// For ST7735, ST7789 and ILI9341 ONLY, define the colour order IF the blue and red are swapped on your display
// Try ONE option at a time to find the correct colour order for your display
// #define TFT_RGB_ORDER TFT_RGB // Colour order Red-Green-Blue
#define TFT_RGB_ORDER TFT_BGR // Colour order Blue-Green-Red
// For M5Stack ESP32 module with integrated ILI9341 display ONLY, remove // in line below
// #define M5STACK
// For ST7789, ST7735, ILI9163 and GC9A01 ONLY, define the pixel width and height in portrait orientation
// #define TFT_WIDTH 80
#define TFT_WIDTH 128
// #define TFT_WIDTH 240 // ST7789 240 x 240 and 240 x 320
// #define TFT_HEIGHT 160
#define TFT_HEIGHT 128
// #define TFT_HEIGHT 240 // ST7789 240 x 240
// #define TFT_HEIGHT 320 // ST7789 240 x 320
// #define TFT_HEIGHT 240 // GC9A01 240 x 240
// For ST7735 ONLY, define the type of display, originally this was based on the
// colour of the tab on the screen protector film but this is not always true, so try
// out the different options below if the screen does not display graphics correctly,
// e.g. colours wrong, mirror images, or stray pixels at the edges.
// Comment out ALL BUT ONE of these options for a ST7735 display driver, save this
// this User_Setup file, then rebuild and upload the sketch to the board again:
// #define ST7735_INITB
//#define ST7735_GREENTAB
// #define ST7735_GREENTAB2
#define ST7735_GREENTAB3
// #define ST7735_GREENTAB128 // For 128 x 128 display
// #define ST7735_GREENTAB160x80 // For 160 x 80 display (BGR, inverted, 26 offset)
// #define ST7735_REDTAB
// #define ST7735_BLACKTAB
// #define ST7735_REDTAB160x80 // For 160 x 80 display with 24 pixel offset
// If colours are inverted (white shows as black) then uncomment one of the next
// 2 lines try both options, one of the options should correct the inversion.
// #define TFT_INVERSION_ON
// #define TFT_INVERSION_OFF
// ##################################################################################
//
// Section 2. Define the pins that are used to interface with the display here
//
// ##################################################################################
// If a backlight control signal is available then define the TFT_BL pin in Section 2
// below. The backlight will be turned ON when tft.begin() is called, but the library
// needs to know if the LEDs are ON with the pin HIGH or LOW. If the LEDs are to be
// driven with a PWM signal or turned OFF/ON then this must be handled by the user
// sketch. e.g. with digitalWrite(TFT_BL, LOW);
// #define TFT_BL 32 // LED back-light control pin
// #define TFT_BACKLIGHT_ON HIGH // Level to turn ON back-light (HIGH or LOW)
// We must use hardware SPI, a minimum of 3 GPIO pins is needed.
// Typical setup for ESP8266 NodeMCU ESP-12 is :
//
// Display SDO/MISO to NodeMCU pin D6 (or leave disconnected if not reading TFT)
// Display LED to NodeMCU pin VIN (or 5V, see below)
// Display SCK to NodeMCU pin D5
// Display SDI/MOSI to NodeMCU pin D7
// Display DC (RS/AO)to NodeMCU pin D3
// Display RESET to NodeMCU pin D4 (or RST, see below)
// Display CS to NodeMCU pin D8 (or GND, see below)
// Display GND to NodeMCU pin GND (0V)
// Display VCC to NodeMCU 5V or 3.3V
//
// The TFT RESET pin can be connected to the NodeMCU RST pin or 3.3V to free up a control pin
//
// The DC (Data Command) pin may be labelled AO or RS (Register Select)
//
// With some displays such as the ILI9341 the TFT CS pin can be connected to GND if no more
// SPI devices (e.g. an SD Card) are connected, in this case comment out the #define TFT_CS
// line below so it is NOT defined. Other displays such at the ST7735 require the TFT CS pin
// to be toggled during setup, so in these cases the TFT_CS line must be defined and connected.
//
// The NodeMCU D0 pin can be used for RST
//
//
// Note: only some versions of the NodeMCU provide the USB 5V on the VIN pin
// If 5V is not available at a pin you can use 3.3V but backlight brightness
// will be lower.
// ###### EDIT THE PIN NUMBERS IN THE LINES FOLLOWING TO SUIT YOUR ESP8266 SETUP ######
// #define TFT_MOSI PIN_D7
// #define TFT_SCLK PIN_D5
// #define TFT_CS PIN_D1
// #define TFT_DC PIN_D3
// #define TFT_RST PIN_D2
// For NodeMCU - use pin numbers in the form PIN_Dx where Dx is the NodeMCU pin designation
// #define TFT_CS 5 // Chip select control pin D8
// #define TFT_DC 0 // Data Command control pin
// #define TFT_RST 4 // Reset pin (could connect to NodeMCU RST, see next line)
// #define TFT_RST -1 // Set TFT_RST to -1 if the display RESET is connected to NodeMCU RST or 3.3V
// #define TFT_MOSI 13
// #define TFT_SCLK 14
//#define TFT_BL PIN_D1 // LED back-light (only for ST7789 with backlight control pin)
//#define TOUCH_CS PIN_D2 // Chip select pin (T_CS) of touch screen
//#define TFT_WR PIN_D2 // Write strobe for modified Raspberry Pi TFT only
// ###### FOR ESP8266 OVERLAP MODE EDIT THE PIN NUMBERS IN THE FOLLOWING LINES ######
// Overlap mode shares the ESP8266 FLASH SPI bus with the TFT so has a performance impact
// but saves pins for other functions. It is best not to connect MISO as some displays
// do not tristate that line when chip select is high!
// Note: Only one SPI device can share the FLASH SPI lines, so a SPI touch controller
// cannot be connected as well to the same SPI signals.
// On NodeMCU 1.0 SD0=MISO, SD1=MOSI, CLK=SCLK to connect to TFT in overlap mode
// On NodeMCU V3 S0 =MISO, S1 =MOSI, S2 =SCLK
// In ESP8266 overlap mode the following must be defined
//#define TFT_SPI_OVERLAP
// In ESP8266 overlap mode the TFT chip select MUST connect to pin D3
//#define TFT_CS PIN_D3
//#define TFT_DC PIN_D5 // Data Command control pin
//#define TFT_RST PIN_D4 // Reset pin (could connect to NodeMCU RST, see next line)
//#define TFT_RST -1 // Set TFT_RST to -1 if the display RESET is connected to NodeMCU RST or 3.3V
// ###### EDIT THE PIN NUMBERS IN THE LINES FOLLOWING TO SUIT YOUR ESP32 SETUP ######
// For ESP32 Dev board (only tested with ILI9341 display)
// The hardware SPI can be mapped to any pins
#define TFT_MOSI 13
#define TFT_SCLK 14
//#define TFT_CS 15 // Chip select control pin
#define TFT_DC 2 // Data Command control pin
#define TFT_RST 4 // Reset pin (could connect to RST pin)
// For ESP32 Dev board (only tested with GC9A01 display)
// The hardware SPI can be mapped to any pins
//#define TFT_MOSI 15 // In some display driver board, it might be written as "SDA" and so on.
//#define TFT_SCLK 14
//#define TFT_CS 5 // Chip select control pin
//#define TFT_DC 27 // Data Command control pin
//#define TFT_RST 33 // Reset pin (could connect to Arduino RESET pin)
//#define TFT_BL 22 // LED back-light
//#define TOUCH_CS 21 // Chip select pin (T_CS) of touch screen
//#define TFT_WR 22 // Write strobe for modified Raspberry Pi TFT only
// For the M5Stack module use these #define lines
//#define TFT_MISO 19
//#define TFT_MOSI 23
//#define TFT_SCLK 18
//#define TFT_CS 14 // Chip select control pin
//#define TFT_DC 27 // Data Command control pin
//#define TFT_RST 33 // Reset pin (could connect to Arduino RESET pin)
//#define TFT_BL 32 // LED back-light (required for M5Stack)
// ###### EDIT THE PINs BELOW TO SUIT YOUR ESP32 PARALLEL TFT SETUP ######
// The library supports 8 bit parallel TFTs with the ESP32, the pin
// selection below is compatible with ESP32 boards in UNO format.
// Wemos D32 boards need to be modified, see diagram in Tools folder.
// Only ILI9481 and ILI9341 based displays have been tested!
// Parallel bus is only supported for the STM32 and ESP32
// Example below is for ESP32 Parallel interface with UNO displays
// Tell the library to use 8 bit parallel mode (otherwise SPI is assumed)
//#define TFT_PARALLEL_8_BIT
// The ESP32 and TFT the pins used for testing are:
//#define TFT_CS 33 // Chip select control pin (library pulls permanently low
//#define TFT_DC 15 // Data Command control pin - must use a pin in the range 0-31
//#define TFT_RST 32 // Reset pin, toggles on startup
//#define TFT_WR 4 // Write strobe control pin - must use a pin in the range 0-31
//#define TFT_RD 2 // Read strobe control pin
//#define TFT_D0 12 // Must use pins in the range 0-31 for the data bus
//#define TFT_D1 13 // so a single register write sets/clears all bits.
//#define TFT_D2 26 // Pins can be randomly assigned, this does not affect
//#define TFT_D3 25 // TFT screen update performance.
//#define TFT_D4 17
//#define TFT_D5 16
//#define TFT_D6 27
//#define TFT_D7 14
// ###### EDIT THE PINs BELOW TO SUIT YOUR STM32 SPI TFT SETUP ######
// The TFT can be connected to SPI port 1 or 2
//#define TFT_SPI_PORT 1 // SPI port 1 maximum clock rate is 55MHz
//#define TFT_MOSI PA7
//#define TFT_MISO PA6
//#define TFT_SCLK PA5
//#define TFT_SPI_PORT 2 // SPI port 2 maximum clock rate is 27MHz
//#define TFT_MOSI PB15
//#define TFT_MISO PB14
//#define TFT_SCLK PB13
// Can use Ardiuno pin references, arbitrary allocation, TFT_eSPI controls chip select
//#define TFT_CS D5 // Chip select control pin to TFT CS
//#define TFT_DC D6 // Data Command control pin to TFT DC (may be labelled RS = Register Select)
//#define TFT_RST D7 // Reset pin to TFT RST (or RESET)
// OR alternatively, we can use STM32 port reference names PXnn
//#define TFT_CS PE11 // Nucleo-F767ZI equivalent of D5
//#define TFT_DC PE9 // Nucleo-F767ZI equivalent of D6
//#define TFT_RST PF13 // Nucleo-F767ZI equivalent of D7
//#define TFT_RST -1 // Set TFT_RST to -1 if the display RESET is connected to processor reset
// Use an Arduino pin for initial testing as connecting to processor reset
// may not work (pulse too short at power up?)
// ##################################################################################
//
// Section 3. Define the fonts that are to be used here
//
// ##################################################################################
// Comment out the #defines below with // to stop that font being loaded
// The ESP8366 and ESP32 have plenty of memory so commenting out fonts is not
// normally necessary. If all fonts are loaded the extra FLASH space required is
// about 17Kbytes. To save FLASH space only enable the fonts you need!
#define LOAD_GLCD // Font 1. Original Adafruit 8 pixel font needs ~1820 bytes in FLASH
#define LOAD_FONT2 // Font 2. Small 16 pixel high font, needs ~3534 bytes in FLASH, 96 characters
#define LOAD_FONT4 // Font 4. Medium 26 pixel high font, needs ~5848 bytes in FLASH, 96 characters
#define LOAD_FONT6 // Font 6. Large 48 pixel font, needs ~2666 bytes in FLASH, only characters 1234567890:-.apm
#define LOAD_FONT7 // Font 7. 7 segment 48 pixel font, needs ~2438 bytes in FLASH, only characters 1234567890:-.
#define LOAD_FONT8 // Font 8. Large 75 pixel font needs ~3256 bytes in FLASH, only characters 1234567890:-.
//#define LOAD_FONT8N // Font 8. Alternative to Font 8 above, slightly narrower, so 3 digits fit a 160 pixel TFT
#define LOAD_GFXFF // FreeFonts. Include access to the 48 Adafruit_GFX free fonts FF1 to FF48 and custom fonts
// Comment out the #define below to stop the SPIFFS filing system and smooth font code being loaded
// this will save ~20kbytes of FLASH
#define SMOOTH_FONT
// ##################################################################################
//
// Section 4. Other options
//
// ##################################################################################
// For RP2040 processor and SPI displays, uncomment the following line to use the PIO interface.
//#define RP2040_PIO_SPI // Leave commented out to use standard RP2040 SPI port interface
// For the RP2040 processor define the SPI port channel used (default 0 if undefined)
//#define TFT_SPI_PORT 1 // Set to 0 if SPI0 pins are used, or 1 if spi1 pins used
// For the STM32 processor define the SPI port channel used (default 1 if undefined)
//#define TFT_SPI_PORT 2 // Set to 1 for SPI port 1, or 2 for SPI port 2
// Define the SPI clock frequency, this affects the graphics rendering speed. Too
// fast and the TFT driver will not keep up and display corruption appears.
// With an ILI9341 display 40MHz works OK, 80MHz sometimes fails
// With a ST7735 display more than 27MHz may not work (spurious pixels and lines)
// With an ILI9163 display 27 MHz works OK.
// #define SPI_FREQUENCY 1000000
// #define SPI_FREQUENCY 5000000
// #define SPI_FREQUENCY 10000000
// #define SPI_FREQUENCY 20000000
#define SPI_FREQUENCY 27000000
// #define SPI_FREQUENCY 40000000
// #define SPI_FREQUENCY 55000000 // STM32 SPI1 only (SPI2 maximum is 27MHz)
// #define SPI_FREQUENCY 80000000
// Optional reduced SPI frequency for reading TFT
#define SPI_READ_FREQUENCY 20000000
// The XPT2046 requires a lower SPI clock rate of 2.5MHz so we define that here:
#define SPI_TOUCH_FREQUENCY 2500000
// The ESP32 has 2 free SPI ports i.e. VSPI and HSPI, the VSPI is the default.
// If the VSPI port is in use and pins are not accessible (e.g. TTGO T-Beam)
// then uncomment the following line:
//#define USE_HSPI_PORT
// Comment out the following #define if "SPI Transactions" do not need to be
// supported. When commented out the code size will be smaller and sketches will
// run slightly faster, so leave it commented out unless you need it!
// Transaction support is needed to work with SD library but not needed with TFT_SdFat
// Transaction support is required if other SPI devices are connected.
// Transactions are automatically enabled by the library for an ESP32 (to use HAL mutex)
// so changing it here has no effect
// #define SUPPORT_TRANSACTIONS

File diff suppressed because it is too large Load Diff

20131
iot/deeresp32/cubic_12.h Normal file

File diff suppressed because it is too large Load Diff

Binary file not shown.

BIN
iot/deeresp32/data/deer.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

BIN
iot/deeresp32/data/wifi.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

207
iot/deeresp32/deeresp32.ino Normal file
View File

@ -0,0 +1,207 @@
#define WIFI_SSID ""
#define WIFI_PASSWORD ""
#define MQTT_CLIENT_NAME "DeerEsp-001234354x32" // 多个同名设备连接同一台服务器会导致其他下线,所以起一个唯一的名字吧
#define MQTT_TOPIC "LB2312" // 这里填PushDeer的Key
#define MQTT_IP "broker.emqx.io"
#define MQTT_USER ""
#define MQTT_PASSWORD ""
#define MQTT_PORT 1883
// ====== 以下不用修改 ===============
#define DOWNLOADED_IMG "/download.jpg"
#define AA_FONT_CUBIC "Cubic1112"
#include <EspMQTTClient.h>
EspMQTTClient mclient(
WIFI_SSID,
WIFI_PASSWORD,
MQTT_IP,
MQTT_USER,
MQTT_PASSWORD,
MQTT_CLIENT_NAME,
MQTT_PORT
);
// #include "cubic_12.h"
// #include "SPI.h"
#include <TFT_eSPI.h>
TFT_eSPI tft = TFT_eSPI();
#ifdef ESP8266
#include <ESP8266HTTPClient.h>
#define BEEP_PIN D8
#define IMG_SCALE 2
#define TXT_SCALE 2
#else
#include "SPIFFS.h" // Required for ESP32 only
#define IMG_SCALE 2
#define TXT_SCALE 2
#define BEEP_PIN 22
#include <HTTPClient.h>
#endif
#include <TJpg_Decoder.h>
void setup() {
Serial.begin(115200);
mclient.enableDebuggingMessages();
tft.begin();
pinMode(19, OUTPUT);
digitalWrite(19, HIGH);
// tft.setRotation(1); // 屏幕方向
tft.fillScreen(TFT_BLACK);
tft.setTextColor(0xFFFF,0x0000);tft.setCursor(0, 0, 1);tft.setTextSize(TXT_SCALE);tft.println("Init ...");
Serial.println("tft init");
if (!SPIFFS.begin()) {
Serial.println("SPIFFS initialisation failed!");
while (1) yield(); // Stay here twiddling thumbs waiting
}
Serial.println("SPIFFS init");
TJpgDec.setJpgScale(IMG_SCALE);
TJpgDec.setSwapBytes(true);
TJpgDec.setCallback(tft_output);
Serial.println("TJpgDec init");
}
void onConnectionEstablished()
{
Serial.println("connected");
tft.setTextColor(0xFFFF,0x0000);tft.setCursor(0, 0, 1);tft.println("Waiting for messages ...");
mclient.subscribe(String(MQTT_TOPIC)+"_text", [] (const String &payload)
{
Serial.println(payload);
if (SPIFFS.exists(DOWNLOADED_IMG) == true) TJpgDec.drawFsJpg(0, 0, DOWNLOADED_IMG);
else tft.fillScreen( TFT_BLACK );
tft.loadFont(AA_FONT_CUBIC);
// tft.loadFont(cubic_11);
if( payload.length() > 80 ) tft.setTextSize(TXT_SCALE/2);
else tft.setTextSize(TXT_SCALE);
char *found;
short line = 0;
int base = 5;
int now_base = 0;
char * payloads = const_cast<char*> ( payload.c_str() );
while( (found = strsep( &payloads , "\n" ) ) != NULL )
{
now_base = base + line*14;
tft.setTextColor(0x0000);tft.setCursor(base+1, now_base+1);tft.println(found);
tft.setTextColor(0xFFFF);tft.setCursor(base, now_base);tft.println(found);
line++;
}
tft.unloadFont();
#ifdef BEEP_PIN
if(payload.indexOf("") >= 0) tone(BEEP_PIN, 1000, 100);
#endif
});
mclient.subscribe(String(MQTT_TOPIC)+"_bg_url", [] (const String &payload)
{
Serial.println(payload);
bool ret = file_put_contents(payload, DOWNLOADED_IMG);
if (SPIFFS.exists(DOWNLOADED_IMG) == true) {
TJpgDec.drawFsJpg(0, 0, DOWNLOADED_IMG);
}
});
}
void loop() {
mclient.loop();
}
bool file_put_contents(String url, String filename) {
Serial.println("Downloading " + filename + " from " + url);
// Check WiFi connection
if (WiFi.status() == WL_CONNECTED) {
Serial.print("[HTTP] begin...\n");
WiFiClient client;
HTTPClient http;
http.setFollowRedirects(HTTPC_STRICT_FOLLOW_REDIRECTS);
http.begin(client, url);
Serial.print("[HTTP] GET...\n");
int httpCode = http.GET();
if (httpCode > 0) {
fs::File f = SPIFFS.open(filename, "w+");
if (!f) {
Serial.println("file open failed");
return 0;
}
Serial.printf("[HTTP] GET... code: %d\n", httpCode);
if (httpCode == HTTP_CODE_OK) {
int total = http.getSize();
int len = total;
uint8_t buff[128] = { 0 };
WiFiClient * stream = http.getStreamPtr();
while (http.connected() && (len > 0 || len == -1)) {
size_t size = stream->available();
if (size) {
int c = stream->readBytes(buff, ((size > sizeof(buff)) ? sizeof(buff) : size));
f.write(buff, c);
if (len > 0) {
len -= c;
}
}
yield();
}
Serial.println();
Serial.print("[HTTP] connection closed or file end.\n");
}
f.close();
}
else {
Serial.printf("[HTTP] GET... failed, error: %s\n", http.errorToString(httpCode).c_str());
Serial.print(httpCode);
}
http.end();
}
return 1;
}
bool tft_output(int16_t x, int16_t y, uint16_t w, uint16_t h, uint16_t* bitmap)
{
if ( y >= tft.height() ) return 0;
tft.pushImage(x, y, w, h, bitmap);
return 1;
}
#ifdef ESP32
void tone(byte pin, int freq, int timeout) {
ledcSetup(0, 2000, 8); // setup beeper
ledcAttachPin(pin, 0); // attach beeper
ledcWriteTone(0, freq); // play tone
delay(timeout);
ledcWriteTone(0, 0);
}
#endif

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

450
iot/deeresp32/font.txt Normal file
View File

@ -0,0 +1,450 @@
啊阿埃挨哎唉哀皑癌蔼矮艾碍爱隘
鞍氨安俺按暗岸胺案肮昂盎凹敖熬翱
袄傲奥懊澳芭捌扒叭吧笆八疤巴拔跋
靶把耙坝霸罢爸白柏百摆佰败拜稗斑
班搬扳般颁板版扮拌伴瓣半办绊邦帮
梆榜膀绑棒磅蚌镑傍谤苞胞包褒剥
薄雹保堡饱宝抱报暴豹鲍爆杯碑悲
卑北辈背贝钡倍狈备惫焙被奔苯本笨
崩绷甭泵蹦迸逼鼻比鄙笔彼碧蓖蔽毕
毙毖币庇痹闭敝弊必辟壁臂避陛鞭边
编贬扁便变卞辨辩辫遍标彪膘表鳖憋
别瘪彬斌濒滨宾摈兵冰柄丙秉饼炳
病并玻菠播拨钵波博勃搏铂箔伯帛
舶脖膊渤泊驳捕卜哺补埠不布步簿部
怖擦猜裁材才财睬踩采彩菜蔡餐参蚕
残惭惨灿苍舱仓沧藏操糙槽曹草厕策
侧册测层蹭插叉茬茶查碴搽察岔差诧
拆柴豺搀掺蝉馋谗缠铲产阐颤昌猖
场尝常长偿肠厂敞畅唱倡超抄钞朝
嘲潮巢吵炒车扯撤掣彻澈郴臣辰尘晨
忱沉陈趁衬撑称城橙成呈乘程惩澄诚
承逞骋秤吃痴持匙池迟弛驰耻齿侈尺
赤翅斥炽充冲虫崇宠抽酬畴踌稠愁筹
仇绸瞅丑臭初出橱厨躇锄雏滁除楚
础储矗搐触处揣川穿椽传船喘串疮
窗幢床闯创吹炊捶锤垂春椿醇唇淳纯
蠢戳绰疵茨磁雌辞慈瓷词此刺赐次聪
葱囱匆从丛凑粗醋簇促蹿篡窜摧崔催
脆瘁粹淬翠村存寸磋撮搓措挫错搭达
答瘩打大呆歹傣戴带殆代贷袋待逮
怠耽担丹单郸掸胆旦氮但惮淡诞弹
蛋当挡党荡档刀捣蹈倒岛祷导到稻悼
道盗德得的蹬灯登等瞪凳邓堤低滴迪
敌笛狄涤翟嫡抵底地蒂第帝弟递缔颠
掂滇碘点典靛垫电佃甸店惦奠淀殿碉
叼雕凋刁掉吊钓调跌爹碟蝶迭谍叠
丁盯叮钉顶鼎锭定订丢东冬董懂动
栋侗恫冻洞兜抖斗陡豆逗痘都督毒犊
独读堵睹赌杜镀肚度渡妒端短锻段断
缎堆兑队对墩吨蹲敦顿囤钝盾遁掇哆
多夺垛躲朵跺舵剁惰堕蛾峨鹅俄额讹
娥恶厄扼遏鄂饿恩而儿耳尔饵洱二
贰发罚筏伐乏阀法珐藩帆番翻樊矾
钒繁凡烦反返范贩犯饭泛坊芳方肪房
防妨仿访纺放菲非啡飞肥匪诽吠肺废
沸费芬酚吩氛分纷坟焚汾粉奋份忿愤
粪丰封枫蜂峰锋风疯烽逢冯缝讽奉凤
佛否夫敷肤孵扶拂辐幅氟符伏俘服
浮涪福袱弗甫抚辅俯釜斧脯腑府腐
赴副覆赋复傅付阜父腹负富讣附妇缚
咐噶嘎该改概钙盖溉干甘杆柑竿肝赶
感秆敢赣冈刚钢缸肛纲岗港杠篙皋高
膏羔糕搞镐稿告哥歌搁戈鸽胳疙割革
葛格蛤阁隔铬个各给根跟耕更庚羹
埂耿梗工攻功恭龚供躬公宫弓巩汞
拱贡共钩勾沟苟狗垢构购够辜菇咕箍
估沽孤姑鼓古蛊骨谷股故顾固雇刮瓜
剐寡挂褂乖拐怪棺关官冠观管馆罐惯
灌贯光广逛瑰规圭硅归龟闺轨鬼诡癸
桂柜跪贵刽辊滚棍锅郭国果裹过哈
骸孩海氦亥害骇酣憨邯韩含涵寒函
喊罕翰撼捍旱憾悍焊汗汉夯杭航壕嚎
豪毫郝好耗号浩呵喝荷菏核禾和何合
盒貉阂河涸赫褐鹤贺嘿黑痕很狠恨哼
亨横衡恒轰哄烘虹鸿洪宏弘红喉侯猴
吼厚候后呼乎忽瑚壶葫胡蝴狐糊湖
弧虎唬护互沪户花哗华猾滑画划化
话槐徊怀淮坏欢环桓还缓换患唤痪豢
焕涣宦幻荒慌黄磺蝗簧皇凰惶煌晃幌
恍谎灰挥辉徽恢蛔回毁悔慧卉惠晦贿
秽会烩汇讳诲绘荤昏婚魂浑混豁活伙
火获或惑霍货祸击圾基机畸稽积箕
肌饥迹激讥鸡姬绩缉吉极棘辑籍集
及急疾汲即嫉级挤几脊己蓟技冀季伎
祭剂悸济寄寂计记既忌际妓继纪嘉枷
夹佳家加荚颊贾甲钾假稼价架驾嫁歼
监坚尖笺间煎兼肩艰奸缄茧检柬碱硷
拣捡简俭剪减荐槛鉴践贱见键箭件
健舰剑饯渐溅涧建僵姜将浆江疆蒋
桨奖讲匠酱降蕉椒礁焦胶交郊浇骄娇
嚼搅铰矫侥脚狡角饺缴绞剿教酵轿较
叫窖揭接皆秸街阶截劫节桔杰捷睫竭
洁结解姐戒藉芥界借介疥诫届巾筋斤
金今津襟紧锦仅谨进靳晋禁近烬浸
尽劲荆兢茎睛晶鲸京惊精粳经井警
景颈静境敬镜径痉靖竟竞净炯窘揪究
纠玖韭久灸九酒厩救旧臼舅咎就疚鞠
拘狙疽居驹菊局咀矩举沮聚拒据巨具
距踞锯俱句惧炬剧捐鹃娟倦眷卷绢撅
攫抉掘倔爵觉决诀绝均菌钧军君峻
俊竣浚郡骏喀咖卡咯开揩楷凯慨刊
堪勘坎砍看康慷糠扛抗亢炕考拷烤靠
坷苛柯棵磕颗科壳咳可渴克刻客课肯
啃垦恳坑吭空恐孔控抠口扣寇枯哭窟
苦酷库裤夸垮挎跨胯块筷侩快宽款匡
筐狂框矿眶旷况亏盔岿窥葵奎魁傀
馈愧溃坤昆捆困括扩廓阔垃拉喇蜡
腊辣啦莱来赖蓝婪栏拦篮阑兰澜谰揽
览懒缆烂滥琅榔狼廊郎朗浪捞劳牢老
佬姥酪烙涝勒乐雷镭蕾磊累儡垒擂肋
类泪棱楞冷厘梨犁黎篱狸离漓理李里
鲤礼莉荔吏栗丽厉励砾历利傈例俐
痢立粒沥隶力璃哩俩联莲连镰廉怜
涟帘敛脸链恋炼练粮凉梁粱良两辆量
晾亮谅撩聊僚疗燎寥辽潦了撂镣廖料
列裂烈劣猎琳林磷霖临邻鳞淋凛赁吝
拎玲菱零龄铃伶羚凌灵陵岭领另令溜
琉榴硫馏留刘瘤流柳六龙聋咙笼窿
隆垄拢陇楼娄搂篓漏陋芦卢颅庐炉
掳卤虏鲁麓碌露路赂鹿潞禄录陆戮驴
吕铝侣旅履屡缕虑氯律率滤绿峦挛孪
滦卵乱掠略抡轮伦仑沦纶论萝螺罗逻
锣箩骡裸落洛骆络妈麻玛码蚂马骂嘛
吗埋买麦卖迈脉瞒馒蛮满蔓曼慢漫
谩芒茫盲氓忙莽猫茅锚毛矛铆卯茂
冒帽貌贸么玫枚梅酶霉煤没眉媒镁每
美昧寐妹媚门闷们萌蒙檬盟锰猛梦孟
眯醚靡糜迷谜弥米秘觅泌蜜密幂棉眠
绵冕免勉娩缅面苗描瞄藐秒渺庙妙蔑
灭民抿皿敏悯闽明螟鸣铭名命谬摸
摹蘑模膜磨摩魔抹末莫墨默沫漠寞
陌谋牟某拇牡亩姆母墓暮幕募慕木目
睦牧穆拿哪呐钠那娜纳氖乃奶耐奈南
男难囊挠脑恼闹淖呢馁内嫩能妮霓倪
泥尼拟你匿腻逆溺蔫拈年碾撵捻念娘
酿鸟尿捏聂孽啮镊镍涅您柠狞凝宁
拧泞牛扭钮纽脓浓农弄奴努怒女暖
虐疟挪懦糯诺哦欧鸥殴藕呕偶沤啪趴
爬帕怕琶拍排牌徘湃派攀潘盘磐盼畔
判叛乓庞旁耪胖抛咆刨炮袍跑泡呸胚
培裴赔陪配佩沛喷盆砰抨烹澎彭蓬棚
硼篷膨朋鹏捧碰坯砒霹批披劈琵毗
啤脾疲皮匹痞僻屁譬篇偏片骗飘漂
瓢票撇瞥拼频贫品聘乒坪苹萍平凭瓶
评屏坡泼颇婆破魄迫粕剖扑铺仆莆葡
菩蒲埔朴圃普浦谱曝瀑期欺栖戚妻七
凄漆柒沏其棋奇歧畦崎脐齐旗祈祁骑
起岂乞企启契砌器气迄弃汽泣讫掐
恰洽牵扦钎铅千迁签仟谦乾黔钱钳
前潜遣浅谴堑嵌欠歉枪呛腔羌墙蔷强
抢橇锹敲悄桥瞧乔侨巧鞘撬翘峭俏窍
切茄且怯窃钦侵亲秦琴勤芹擒禽寝沁
青轻氢倾卿清擎晴氰情顷请庆琼穷秋
丘邱球求囚酋泅趋区蛆曲躯屈驱渠
取娶龋趣去圈颧权醛泉全痊拳犬券
劝缺炔瘸却鹊榷确雀裙群然燃冉染瓤
壤攘嚷让饶扰绕惹热壬仁人忍韧任认
刃妊纫扔仍日戎茸蓉荣融熔溶容绒冗
揉柔肉茹蠕儒孺如辱乳汝入褥软阮蕊
瑞锐闰润若弱撒洒萨腮鳃塞赛三叁
伞散桑嗓丧搔骚扫嫂瑟色涩森僧莎
砂杀刹沙纱傻啥煞筛晒珊苫杉山删煽
衫闪陕擅赡膳善汕扇缮墒伤商赏晌上
尚裳梢捎稍烧芍勺韶少哨邵绍奢赊蛇
舌舍赦摄射慑涉社设砷申呻伸身深娠
绅神沈审婶甚肾慎渗声生甥牲升绳
省盛剩胜圣师失狮施湿诗尸虱十石
拾时什食蚀实识史矢使屎驶始式示士
世柿事拭誓逝势是嗜噬适仕侍释饰氏
市恃室视试收手首守寿授售受瘦兽蔬
枢梳殊抒输叔舒淑疏书赎孰熟薯暑曙
署蜀黍鼠属术述树束戍竖墅庶数漱
恕刷耍摔衰甩帅栓拴霜双爽谁水睡
税吮瞬顺舜说硕朔烁斯撕嘶思私司丝
死肆寺嗣四伺似饲巳松耸怂颂送宋讼
诵搜艘擞嗽苏酥俗素速粟僳塑溯宿诉
肃酸蒜算虽隋随绥髓碎岁穗遂隧祟孙
损笋蓑梭唆缩琐索锁所塌他它她塔
獭挞蹋踏胎苔抬台泰酞太态汰坍摊
贪瘫滩坛檀痰潭谭谈坦毯袒碳探叹炭
汤塘搪堂棠膛唐糖倘躺淌趟烫掏涛滔
绦萄桃逃淘陶讨套特藤腾疼誊梯剔踢
锑提题蹄啼体替嚏惕涕剃屉天添填田
甜恬舔腆挑条迢眺跳贴铁帖厅听烃
汀廷停亭庭挺艇通桐酮瞳同铜彤童
桶捅筒统痛偷投头透凸秃突图徒途涂
屠土吐兔湍团推颓腿蜕褪退吞屯臀拖
托脱鸵陀驮驼椭妥拓唾挖哇蛙洼娃瓦
袜歪外豌弯湾玩顽丸烷完碗挽晚皖惋
宛婉万腕汪王亡枉网往旺望忘妄威
巍微危韦违桅围唯惟为潍维苇萎委
伟伪尾纬未蔚味畏胃喂魏位渭谓尉慰
卫瘟温蚊文闻纹吻稳紊问嗡翁瓮挝蜗
涡窝我斡卧握沃巫呜钨乌污诬屋无芜
梧吾吴毋武五捂午舞伍侮坞戊雾晤物
勿务悟误昔熙析西硒矽晰嘻吸锡牺
稀息希悉膝夕惜熄烯溪汐犀檄袭席
习媳喜铣洗系隙戏细瞎虾匣霞辖暇峡
侠狭下厦夏吓掀锨先仙鲜纤咸贤衔舷
闲涎弦嫌显险现献县腺馅羡宪陷限线
相厢镶香箱襄湘乡翔祥详想响享项巷
橡像向象萧硝霄削哮嚣销消宵淆晓
小孝校肖啸笑效楔些歇蝎鞋协挟携
邪斜胁谐写械卸蟹懈泄泻谢屑薪芯锌
欣辛新忻心信衅星腥猩惺兴刑型形邢
行醒幸杏性姓兄凶胸匈汹雄熊休修羞
朽嗅锈秀袖绣墟戌需虚嘘须徐许蓄酗
叙旭序畜恤絮婿绪续轩喧宣悬旋玄
选癣眩绚靴薛学穴雪血勋熏循旬询
寻驯巡殉汛训讯逊迅压押鸦鸭呀丫芽
牙蚜崖衙涯雅哑亚讶焉咽阉烟淹盐严
研蜒岩延言颜阎炎沿奄掩眼衍演艳堰
燕厌砚雁唁彦焰宴谚验殃央鸯秧杨扬
佯疡羊洋阳氧仰痒养样漾邀腰妖瑶
摇尧遥窑谣姚咬舀药要耀椰噎耶爷
野冶也页掖业叶曳腋夜液一壹医揖铱
依伊衣颐夷遗移仪胰疑沂宜姨彝椅蚁
倚已乙矣以艺抑易邑屹亿役臆逸肄疫
亦裔意毅忆义益溢诣议谊译异翼翌绎
茵荫因殷音阴姻吟银淫寅饮尹引隐
印英樱婴鹰应缨莹萤营荧蝇迎赢盈
影颖硬映哟拥佣臃痈庸雍踊蛹咏泳涌
永恿勇用幽优悠忧尤由邮铀犹油游酉
有友右佑釉诱又幼迂淤于盂榆虞愚舆
余俞逾鱼愉渝渔隅予娱雨与屿禹宇语
羽玉域芋郁吁遇喻峪御愈欲狱育誉
浴寓裕预豫驭鸳渊冤元垣袁原援辕
园员圆猿源缘远苑愿怨院曰约越跃钥
岳粤月悦阅耘云郧匀陨允运蕴酝晕韵
孕匝砸杂栽哉灾宰载再在咱攒暂赞赃
脏葬遭糟凿藻枣早澡蚤躁噪造皂灶燥
责择则泽贼怎增憎曾赠扎喳渣札轧
铡闸眨栅榨咋乍炸诈摘斋宅窄债寨
瞻毡詹粘沾盏斩辗崭展蘸栈占战站湛
绽樟章彰漳张掌涨杖丈帐账仗胀瘴障
招昭找沼赵照罩兆肇召遮折哲蛰辙者
锗蔗这浙珍斟真甄砧臻贞针侦枕疹诊
震振镇阵蒸挣睁征狰争怔整拯正政
帧症郑证芝枝支吱蜘知肢脂汁之织
职直植殖执值侄址指止趾只旨纸志挚
掷至致置帜峙制智秩稚质炙痔滞治窒
中盅忠钟衷终种肿重仲众舟周州洲诌
粥轴肘帚咒皱宙昼骤珠株蛛朱猪诸诛
逐竹烛煮拄瞩嘱主著柱助蛀贮铸筑
住注祝驻抓爪拽专砖转撰赚篆桩庄
装妆撞壮状椎锥追赘坠缀谆准捉拙卓
桌琢茁酌啄着灼浊兹咨资姿滋淄孜紫
仔籽滓子自渍字鬃棕踪宗综总纵邹走
奏揍租足卒族祖诅阻组钻纂嘴醉最罪
尊遵昨左佐柞做作坐座
亍丌兀丐廿卅丕亘丞鬲孬噩丨禺丿
匕乇夭爻卮氐囟胤馗毓睾鼗丶亟鼐乜
乩亓芈孛啬嘏仄厍厝厣厥厮靥赝匚叵
匦匮匾赜卦卣刂刈刎刭刳刿剀剌剞剡
剜蒯剽劂劁劐劓冂罔亻仃仉仂仨仡仫
仞伛仳伢佤仵伥伧伉伫佞佧攸佚佝
佟佗伲伽佶佴侑侉侃侏佾佻侪佼侬
侔俦俨俪俅俚俣俜俑俟俸倩偌俳倬倏
倮倭俾倜倌倥倨偾偃偕偈偎偬偻傥傧
傩傺僖儆僭僬僦僮儇儋仝氽佘佥俎龠
汆籴兮巽黉馘冁夔勹匍訇匐凫夙兕亠
兖亳衮袤亵脔裒禀嬴蠃羸冫冱冽冼
凇冖冢冥讠讦讧讪讴讵讷诂诃诋诏
诎诒诓诔诖诘诙诜诟诠诤诨诩诮诰诳
诶诹诼诿谀谂谄谇谌谏谑谒谔谕谖谙
谛谘谝谟谠谡谥谧谪谫谮谯谲谳谵谶
卩卺阝阢阡阱阪阽阼陂陉陔陟陧陬陲
陴隈隍隗隰邗邛邝邙邬邡邴邳邶邺
邸邰郏郅邾郐郄郇郓郦郢郜郗郛郫
郯郾鄄鄢鄞鄣鄱鄯鄹酃酆刍奂劢劬劭
劾哿勐勖勰叟燮矍廴凵凼鬯厶弁畚巯
坌垩垡塾墼壅壑圩圬圪圳圹圮圯坜圻
坂坩垅坫垆坼坻坨坭坶坳垭垤垌垲埏
垧垴垓垠埕埘埚埙埒垸埴埯埸埤埝
堋堍埽埭堀堞堙塄堠塥塬墁墉墚墀
馨鼙懿艹艽艿芏芊芨芄芎芑芗芙芫芸
芾芰苈苊苣芘芷芮苋苌苁芩芴芡芪芟
苄苎芤苡茉苷苤茏茇苜苴苒苘茌苻苓
茑茚茆茔茕苠苕茜荑荛荜茈莒茼茴茱
莛荞茯荏荇荃荟荀茗荠茭茺茳荦荥
荨茛荩荬荪荭荮莰荸莳莴莠莪莓莜
莅荼莶莩荽莸荻莘莞莨莺莼菁萁菥菘
堇萘萋菝菽菖萜萸萑萆菔菟萏萃菸菹
菪菅菀萦菰菡葜葑葚葙葳蒇蒈葺蒉葸
萼葆葩葶蒌蒎萱葭蓁蓍蓐蓦蒽蓓蓊蒿
蒺蓠蒡蒹蒴蒗蓥蓣蔌甍蔸蓰蔹蔟蔺
蕖蔻蓿蓼蕙蕈蕨蕤蕞蕺瞢蕃蕲蕻薤
薨薇薏蕹薮薜薅薹薷薰藓藁藜藿蘧蘅
蘩蘖蘼廾弈夼奁耷奕奚奘匏尢尥尬尴
扌扪抟抻拊拚拗拮挢拶挹捋捃掭揶捱
捺掎掴捭掬掊捩掮掼揲揸揠揿揄揞揎
摒揆掾摅摁搋搛搠搌搦搡摞撄摭撖
摺撷撸撙撺擀擐擗擤擢攉攥攮弋忒
甙弑卟叱叽叩叨叻吒吖吆呋呒呓呔呖
呃吡呗呙吣吲咂咔呷呱呤咚咛咄呶呦
咝哐咭哂咴哒咧咦哓哔呲咣哕咻咿哌
哙哚哜咩咪咤哝哏哞唛哧唠哽唔哳唢
唣唏唑唧唪啧喏喵啉啭啁啕唿啐唼
唷啖啵啶啷唳唰啜喋嗒喃喱喹喈喁
喟啾嗖喑啻嗟喽喾喔喙嗪嗷嗉嘟嗑嗫
嗬嗔嗦嗝嗄嗯嗥嗲嗳嗌嗍嗨嗵嗤辔嘞
嘈嘌嘁嘤嘣嗾嘀嘧嘭噘嘹噗嘬噍噢噙
噜噌噔嚆噤噱噫噻噼嚅嚓嚯囔囗囝囡
囵囫囹囿圄圊圉圜帏帙帔帑帱帻帼
帷幄幔幛幞幡岌屺岍岐岖岈岘岙岑
岚岜岵岢岽岬岫岱岣峁岷峄峒峤峋峥
崂崃崧崦崮崤崞崆崛嵘崾崴崽嵬嵛嵯
嵝嵫嵋嵊嵩嵴嶂嶙嶝豳嶷巅彳彷徂徇
徉後徕徙徜徨徭徵徼衢彡犭犰犴犷犸
狃狁狎狍狒狨狯狩狲狴狷猁狳猃狺
狻猗猓猡猊猞猝猕猢猹猥猬猸猱獐
獍獗獠獬獯獾舛夥飧夤夂饣饧饨饩饪
饫饬饴饷饽馀馄馇馊馍馐馑馓馔馕庀
庑庋庖庥庠庹庵庾庳赓廒廑廛廨廪膺
忄忉忖忏怃忮怄忡忤忾怅怆忪忭忸怙
怵怦怛怏怍怩怫怊怿怡恸恹恻恺恂
恪恽悖悚悭悝悃悒悌悛惬悻悱惝惘
惆惚悴愠愦愕愣惴愀愎愫慊慵憬憔憧
憷懔懵忝隳闩闫闱闳闵闶闼闾阃阄阆
阈阊阋阌阍阏阒阕阖阗阙阚丬爿戕氵
汔汜汊沣沅沐沔沌汨汩汴汶沆沩泐泔
沭泷泸泱泗沲泠泖泺泫泮沱泓泯泾
洹洧洌浃浈洇洄洙洎洫浍洮洵洚浏
浒浔洳涑浯涞涠浞涓涔浜浠浼浣渚淇
淅淞渎涿淠渑淦淝淙渖涫渌涮渫湮湎
湫溲湟溆湓湔渲渥湄滟溱溘滠漭滢溥
溧溽溻溷滗溴滏溏滂溟潢潆潇漤漕滹
漯漶潋潴漪漉漩澉澍澌潸潲潼潺濑
濉澧澹澶濂濡濮濞濠濯瀚瀣瀛瀹瀵
灏灞宀宄宕宓宥宸甯骞搴寤寮褰寰蹇
謇辶迓迕迥迮迤迩迦迳迨逅逄逋逦逑
逍逖逡逵逶逭逯遄遑遒遐遨遘遢遛暹
遴遽邂邈邃邋彐彗彖彘尻咫屐屙孱屣
屦羼弪弩弭艴弼鬻屮妁妃妍妩妪妣
妗姊妫妞妤姒妲妯姗妾娅娆姝娈姣
姘姹娌娉娲娴娑娣娓婀婧婊婕娼婢婵
胬媪媛婷婺媾嫫媲嫒嫔媸嫠嫣嫱嫖嫦
嫘嫜嬉嬗嬖嬲嬷孀尕尜孚孥孳孑孓孢
驵驷驸驺驿驽骀骁骅骈骊骐骒骓骖骘
骛骜骝骟骠骢骣骥骧纟纡纣纥纨纩
纭纰纾绀绁绂绉绋绌绐绔绗绛绠绡
绨绫绮绯绱绲缍绶绺绻绾缁缂缃缇缈
缋缌缏缑缒缗缙缜缛缟缡缢缣缤缥缦
缧缪缫缬缭缯缰缱缲缳缵幺畿巛甾邕
玎玑玮玢玟珏珂珑玷玳珀珉珈珥珙顼
琊珩珧珞玺珲琏琪瑛琦琥琨琰琮琬
琛琚瑁瑜瑗瑕瑙瑷瑭瑾璜璎璀璁璇
璋璞璨璩璐璧瓒璺韪韫韬杌杓杞杈杩
枥枇杪杳枘枧杵枨枞枭枋杷杼柰栉柘
栊柩枰栌柙枵柚枳柝栀柃枸柢栎柁柽
栲栳桠桡桎桢桄桤梃栝桕桦桁桧桀栾
桊桉栩梵梏桴桷梓桫棂楮棼椟椠棹
椤棰椋椁楗棣椐楱椹楠楂楝榄楫榀
榘楸椴槌榇榈槎榉楦楣楹榛榧榻榫榭
槔榱槁槊槟榕槠榍槿樯槭樗樘橥槲橄
樾檠橐橛樵檎橹樽樨橘橼檑檐檩檗檫
猷獒殁殂殇殄殒殓殍殚殛殡殪轫轭轱
轲轳轵轶轸轷轹轺轼轾辁辂辄辇辋
辍辎辏辘辚軎戋戗戛戟戢戡戥戤戬
臧瓯瓴瓿甏甑甓攴旮旯旰昊昙杲昃昕
昀炅曷昝昴昱昶昵耆晟晔晁晏晖晡晗
晷暄暌暧暝暾曛曜曦曩贲贳贶贻贽赀
赅赆赈赉赇赍赕赙觇觊觋觌觎觏觐觑
牮犟牝牦牯牾牿犄犋犍犏犒挈挲掰
搿擘耄毪毳毽毵毹氅氇氆氍氕氘氙
氚氡氩氤氪氲攵敕敫牍牒牖爰虢刖肟
肜肓肼朊肽肱肫肭肴肷胧胨胩胪胛胂
胄胙胍胗朐胝胫胱胴胭脍脎胲胼朕脒
豚脶脞脬脘脲腈腌腓腴腙腚腱腠腩腼
腽腭腧塍媵膈膂膑滕膣膪臌朦臊膻
臁膦欤欷欹歃歆歙飑飒飓飕飙飚殳
彀毂觳斐齑斓於旆旄旃旌旎旒旖炀炜
炖炝炻烀炷炫炱烨烊焐焓焖焯焱煳煜
煨煅煲煊煸煺熘熳熵熨熠燠燔燧燹爝
爨灬焘煦熹戾戽扃扈扉礻祀祆祉祛祜
祓祚祢祗祠祯祧祺禅禊禚禧禳忑忐
怼恝恚恧恁恙恣悫愆愍慝憩憝懋懑
戆肀聿沓泶淼矶矸砀砉砗砘砑斫砭砜
砝砹砺砻砟砼砥砬砣砩硎硭硖硗砦硐
硇硌硪碛碓碚碇碜碡碣碲碹碥磔磙磉
磬磲礅磴礓礤礞礴龛黹黻黼盱眄眍盹
眇眈眚眢眙眭眦眵眸睐睑睇睃睚睨
睢睥睿瞍睽瞀瞌瞑瞟瞠瞰瞵瞽町畀
畎畋畈畛畲畹疃罘罡罟詈罨罴罱罹羁
罾盍盥蠲钅钆钇钋钊钌钍钏钐钔钗钕
钚钛钜钣钤钫钪钭钬钯钰钲钴钶钷钸
钹钺钼钽钿铄铈铉铊铋铌铍铎铐铑铒
铕铖铗铙铘铛铞铟铠铢铤铥铧铨铪
铩铫铮铯铳铴铵铷铹铼铽铿锃锂锆
锇锉锊锍锎锏锒锓锔锕锖锘锛锝锞锟
锢锪锫锩锬锱锲锴锶锷锸锼锾锿镂锵
镄镅镆镉镌镎镏镒镓镔镖镗镘镙镛镞
镟镝镡镢镤镥镦镧镨镩镪镫镬镯镱镲
镳锺矧矬雉秕秭秣秫稆嵇稃稂稞稔
稹稷穑黏馥穰皈皎皓皙皤瓞瓠甬鸠
鸢鸨鸩鸪鸫鸬鸲鸱鸶鸸鸷鸹鸺鸾鹁鹂
鹄鹆鹇鹈鹉鹋鹌鹎鹑鹕鹗鹚鹛鹜鹞鹣
鹦鹧鹨鹩鹪鹫鹬鹱鹭鹳疒疔疖疠疝疬
疣疳疴疸痄疱疰痃痂痖痍痣痨痦痤痫
痧瘃痱痼痿瘐瘀瘅瘌瘗瘊瘥瘘瘕瘙
瘛瘼瘢瘠癀瘭瘰瘿瘵癃瘾瘳癍癞癔
癜癖癫癯翊竦穸穹窀窆窈窕窦窠窬窨
窭窳衤衩衲衽衿袂袢裆袷袼裉裢裎裣
裥裱褚裼裨裾裰褡褙褓褛褊褴褫褶襁
襦襻疋胥皲皴矜耒耔耖耜耠耢耥耦耧
耩耨耱耋耵聃聆聍聒聩聱覃顸颀颃
颉颌颍颏颔颚颛颞颟颡颢颥颦虍虔
虬虮虿虺虼虻蚨蚍蚋蚬蚝蚧蚣蚪蚓蚩
蚶蛄蚵蛎蚰蚺蚱蚯蛉蛏蚴蛩蛱蛲蛭蛳
蛐蜓蛞蛴蛟蛘蛑蜃蜇蛸蜈蜊蜍蜉蜣蜻
蜞蜥蜮蜚蜾蝈蜴蜱蜩蜷蜿螂蜢蝽蝾蝻
蝠蝰蝌蝮螋蝓蝣蝼蝤蝙蝥螓螯螨蟒
蟆螈螅螭螗螃螫蟥螬螵螳蟋蟓螽蟑
蟀蟊蟛蟪蟠蟮蠖蠓蟾蠊蠛蠡蠹蠼缶罂
罄罅舐竺竽笈笃笄笕笊笫笏筇笸笪笙
笮笱笠笥笤笳笾笞筘筚筅筵筌筝筠筮
筻筢筲筱箐箦箧箸箬箝箨箅箪箜箢箫
箴篑篁篌篝篚篥篦篪簌篾篼簏簖簋
簟簪簦簸籁籀臾舁舂舄臬衄舡舢舣
舭舯舨舫舸舻舳舴舾艄艉艋艏艚艟艨
衾袅袈裘裟襞羝羟羧羯羰羲籼敉粑粝
粜粞粢粲粼粽糁糇糌糍糈糅糗糨艮暨
羿翎翕翥翡翦翩翮翳糸絷綦綮繇纛麸
麴赳趄趔趑趱赧赭豇豉酊酐酎酏酤
酢酡酰酩酯酽酾酲酴酹醌醅醐醍醑
醢醣醪醭醮醯醵醴醺豕鹾趸跫踅蹙蹩
趵趿趼趺跄跖跗跚跞跎跏跛跆跬跷跸
跣跹跻跤踉跽踔踝踟踬踮踣踯踺蹀踹
踵踽踱蹉蹁蹂蹑蹒蹊蹰蹶蹼蹯蹴躅躏
躔躐躜躞豸貂貊貅貘貔斛觖觞觚觜
觥觫觯訾謦靓雩雳雯霆霁霈霏霎霪
霭霰霾龀龃龅龆龇龈龉龊龌黾鼋鼍隹
隼隽雎雒瞿雠銎銮鋈錾鍪鏊鎏鐾鑫鱿
鲂鲅鲆鲇鲈稣鲋鲎鲐鲑鲒鲔鲕鲚鲛鲞
鲟鲠鲡鲢鲣鲥鲦鲧鲨鲩鲫鲭鲮鲰鲱鲲
鲳鲴鲵鲶鲷鲺鲻鲼鲽鳄鳅鳆鳇鳊鳋
鳌鳍鳎鳏鳐鳓鳔鳕鳗鳘鳙鳜鳝鳟鳢
靼鞅鞑鞒鞔鞯鞫鞣鞲鞴骱骰骷鹘骶骺
骼髁髀髅髂髋髌髑魅魃魇魉魈魍魑飨
餍餮饕饔髟髡髦髯髫髻髭髹鬈鬏鬓鬟
鬣麽麾縻麂麇麈麋麒鏖麝麟黛黜黝黠
黟黢黩黧黥黪黯鼢鼬鼯鼹鼷鼽鼾齄
1234567890-=@#¥%……&*()~:"{}[]|\?/<>,.;'+abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ、。・ˉˇ¨〃々―‖…
“”〔〕〈〉《》「」『』〖〗【】
±×÷∶∧∨∑∏∪∩∈∷√⊥∥∠
⌒⊙∫∮≡≌≈∽∝≠≮≯≤≥∞∵
∴♂♀°′″℃$¤¢£‰§№☆★
○●◎◇◆□■△▲※→←↑↓〓
⒈⒉⒊⒋⒌⒍⒎⒏⒐⒑⒒⒓⒔⒕⒖
⒗⒘⒙⒚⒛⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾
⑿⒀⒁⒂⒃⒄⒅⒆⒇①②③④⑤⑥⑦
⑧⑨⑩㈠㈡㈢㈣㈤㈥㈦㈧㈨㈩
ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫ
!"#¥%&'()*+,-./
_
pqrstuvwxyz{|} ̄

View File

@ -0,0 +1,36 @@
.dash-box
{
width:256px;
height:256px!important;
}
.dash-box .dash-item
{
max-width:100%!important;
max-height:100%!important;
width:calc( 100% - 10px );
height: calc( 100% - 10px );
justify-content: center;
background-color: hsla(0,0%,100%,.0);
}
.dash-box .dash-item .title
{
font-size:24px;
font-family:"Cubic 11";
font-weight:bold;
position: absolute;
bottom: 10px;
right:10px;
color:white;
text-shadow:2px 2px black;
}
.dash-box .dash-item .value
{
font-size:48px;
color:white;
text-shadow:2px 2px black;
padding-top:80px;
}

19
iot/screen/screen.ino Normal file
View File

@ -0,0 +1,19 @@
#include <TFT_eSPI.h>
TFT_eSPI tft = TFT_eSPI();
void setup() {
Serial.begin(115200);
Serial.print("hello world\n");
// Set up LCD
tft.begin();
tft.fillScreen(TFT_BLUE);
pinMode(19, OUTPUT);
digitalWrite(19, HIGH);
}
void loop() {
// put your main code here, to run repeatedly:
}