# ESP32
**Repository Path**: kid-kid/esp32
## Basic Information
- **Project Name**: ESP32
- **Description**: esp32相关Code和代码
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2022-07-14
- **Last Updated**: 2024-12-24
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# ESP32_Code
**1.PinSet : 引脚定义概览**

**2.Code 工程代码**
- **1.ESP32_Touch**
ESP32的触摸引脚实验以及中断实验
- **2.ESP32_Timer_PWM**
ESP32的产生PWM波形
- **3.ESP32_WiFi_JSON**
ESP32的WiFI连接到Bilibili并获得粉丝数等
- **4.ESP32_BLE**
- **5.ESP32_BlueTooth**
经典蓝牙,通过手机App实现ESP32的通信收发数据
注意事项:采用手机热点成功后再用Wifi,不知道是不是我的wifi设置哪里有问题导致的连不上,可能是wifi名称不规范字符太多,后面再试。
- **6.ESP32_PlatformIODoc**
- **7.MiniProgram**
- **8.ESP32_DS18B20(温度传感器实验)**
通过platformIO的library添加**DallasTemperature**库进行DS18B20驱动。
注意事项:一定要在VCC和信号线之间加上上拉电阻,否则驱动失败会一直显示-127°

- **9.ESP32_DHT11(温湿度传感器实验)**
通过platformIO的library搜索**DHT sensor library**库进行DHT11驱动。

注意事项:如果没有驱动失败在代码没问题的条件下考虑加一下在信号线和VCC上加拉电阻
- **10.ESP32_BH1750(光照强度传感器实验)**
通过platformIO的library搜索**BH1750**库进行**BH1750**驱动。
/lib.PNG)
- **11.ESP32_HC_SR04 (超声波测距实验)**
通过platformIO的library搜索**SR04**库进行HC_SR04驱动。
注意事项:代码里添加了DS18B20提供温度补偿,不加的话默认19.037℃下声波速度340m/s。

- **12.ESP32_SG90(舵机驱动实验)**
通过platformIO的library搜索**ESP32Servo**库进行舵机驱动。

库官方代码里用了5个舵机驱动引脚,我们实际驱动舵机只需要一个引脚就可以了。这里选用的Pin13,根据pinout显示其为RTC_GPIO14,查找PWM驱动里定义14通道为定时器3,所以我们使能一个定时器3即可。
- **13.ESP32_SSD1306(0.96寸OLED)**
通过platformIO的library搜索SSD1306库进行OLED驱动。

另外,库目录下有各种example例程直接全部拷贝到main.cpp然后选择对应的IIC或者SPI接口即可。
- **14.ESP32_TFTLCD(st7789)**
通过platformIO的library搜索st7789库进行LCD驱动。
/lib.PNG)
将示例代码Copy到main.c后需要修改下面五个地方:
① main.c里的屏幕分辨率
```C
// Size of sprite image for the scrolling text, this requires ~14 Kbytes of RAM
#define IWIDTH 240
#define IHEIGHT 320
```
②User_Setup.h里选择显示IC
```C++
#define ST7789_DRIVER //选择自己的板子对应的显示IC
```
③User_Setup.h里根据自己板子定义引脚
```C++
#define TFT_MOSI 23 // In some display driver board, it might be written as "SDA" and so on.
#define TFT_SCLK 18
#define TFT_CS 19 // Chip select control pin
#define TFT_DC 2 // Data Command control pin
#define TFT_RST 4 // Reset pin (could connect to Arduino RESET pin)
#define TFT_BL 5 // LED back-light
```
④User_Setup.h里设置SPI速度,默认写spi27M
```C++
// #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
```
⑤ main.c 拷贝过来的代码应该会报错,因为下面用到的函数没有定义就是用
```C++
void build_banner(String msg, int xpos);
void numberBox(int num, int x, int y);
unsigned int rainbow(byte value);
```
另外,对应的TFT_eSPI的example路径如下:
```c
\.pio\libdeps\esp32dev\TFT_eSPI\examples
```
/ex.PNG)
里面各个例子的文件格式为.ino,打开后将里面的代码拷贝到main.c即可进行测试,比如DMA test里面的例子有如下说明,开不开DMA对比都有列出来。每个例子都有详细的说明,非常的好。
```C++
// Define to use DMA for Sprite transfer to SPI TFT, comment out to use no DMA
// (Tested with Nucleo 64 STM32F446RE and Nucleo 144 STM32F767ZI)
// STM32F767 27MHz SPI 50% processor load: Non DMA 52 fps, with DMA 101 fps
// STM32F767 27MHz SPI 0% processor load: Non DMA 97 fps, with DMA 102 fps
// ESP32 27MHz SPI 0% processor load: Non DMA 90 fps, with DMA 101 fps
// ESP32 40MHz SPI 0% processor load: Non DMA 127 fps, with DMA 145 fps
// NOTE: FOR SPI DISPLAYS ONLY
```
测试结果如下:
/DMAtest.gif)
**15.ESP32_LVGL(ST7789)**
在实验14的基础上进行搜索LVGL库.。
/lib.PNG)
- **Next 持续更新中.......**
**3.Software**
- ① Everything :文件搜索软件
- ②SerialBT:蓝牙串口调试app