11.EEPROM NTP对时 蓝牙透传

一 .EEPROM

在EPS32中已经将EEPROM弃用。对于ESP32上的新应用程序,建议使用NVS为首选项。提供EEPROM是为了向后兼容现有的Arduino应用程序。
Arduino core for the ESP32中的EEPROM是在flash中开辟的存储区域;
1. 调用EEPROM
调用#include <EEPROM.h>来使用EEPROM;

2. 初始化EEPROM
/*
 * 初始化EEPROM
 * 参数: size:容量大小, 默认4096, size为需要读写的数据字节最大地址+1,取值1~4096;
 *  返回值: 设置成功否?
 */
bool EEPROMClass::begin(size_t size)
EEPROM.begin(4096);
3. 往EEPROM中写一个字节的值
/*
 * 初始化EEPROM
 * 参数: 
 *  address:地址
 *  val: 值
 *  返回值: 无
 */
void EEPROMClass::write(int address, uint8_t val)
EEPROM.write(1,'a');


4. 真正的提交到EEPROM中保存

EEPROM.write();并不能保证断电不丢失,需要提交.
EEPROM.commit();


5. EEPROM中读取数据

/*
 * 读EEPROM
 * 参数: 
 *  address:地址
 *  返回值: 读取的字节
 */
uint8_t EEPROMClass::read(int address){}

通过串口往EEPROM中写入, 按x可以读取EEPROM中的数, 给ESP32断一次电,再上电读取
#include <Arduino.h>
#include <EEPROM.h>
 
bool flag = false;
 
void setup()
{
  Serial.begin(115200);
  EEPROM.begin(4096);
}
 
void loop()
{
  if (Serial.available())
  {
    char temp = Serial.read();
    if (temp != 'x')
    {
      EEPROM.write(1, temp);
      EEPROM.commit();
      Serial.print("写入EEPROM:");
      Serial.println(EEPROM.read(1));
    }
    else
    {
      Serial.print("EEPROM里的数据是:");
      Serial.println(EEPROM.read(1));
    }
  }
}

二. NTP对时

1. NTP对时原理
连接网络, 从网络中请求NTP对时数据, 这里我们选取了阿里云的NTP服务器 ntp1.aliyun.com
此外,我们在东八区, 所以应该偏移时间 8小时

2. 初始化一个NTP服务客户端
NTPClient(UDP& udp, const char* poolServerName, int timeOffset, int updateInterval);
/*
参数:
1. udp  : 创建的UDP连接
2. poolServerName : 服务器地址, 字符串类型 默认: time.nist.gov
3. timeOffset: 偏移时间, 默认0, 单位秒, 北京时间需要偏移 3600*8
4. milliseconds : 更新时间间隔, 单位毫秒
*/
这里注意, 需要传入一个UPD连接, 详见后面的例子

3. 更新时间
timeClient.update();


4. 获取格式化的时间

timeClient.getFormattedTime();


5.获取时间戳(格林威治时间读秒)

timeClient.getEpochTime();


6.获取天(从NTP服务客户端开启至今的天数)

程序启动当天是1
timeClient.getDay();


7. 获取时分秒

Serial.println(timeClient.getHours());
  Serial.println(timeClient.getMinutes());
  Serial.println(timeClient.getSeconds());


8.单独设置时间偏移

timeClient.setTimeOffset(3600*8);


9. 单独设置更新频率

timeClient.setUpdateInterval(1000);


10. 例子

#include <Arduino.h>
#include "WiFi.h"
#include "NTPClient.h"
 
const char *ssid     = "anleng";
const char *password = "al77776666";
 
WiFiUDP ntpUDP; // 创建一个WIFI UDP连接
 
NTPClient timeClient(ntpUDP, "ntp1.aliyun.com", 60*60*8, 30*60*1000);
 
void setup(){
  Serial.begin(115200);
 
  WiFi.begin(ssid, password);
 
  while ( WiFi.status() != WL_CONNECTED ) {
    delay ( 500 );
    Serial.print ( "." );
  }
  timeClient.begin();
}
 
void loop() {
  timeClient.update();
 
  Serial.println(timeClient.getFormattedTime());
 
  delay(1000);
}


三. 蓝牙透传

#include <Arduino.h>
#include "BluetoothSerial.h"
 
BluetoothSerial bt1;
 
void setup()
{
  Serial.begin(115200);
  delay(5000);
  bt1.begin("ESP32BLUE");
  Serial.println("蓝牙串口透传已经打开");
}
 
void loop()
{
  if (Serial.available())
  {
    bt1.write(Serial.read());
  }
  if (bt1.available())
  {
    Serial.write(bt1.read());
  }
  delay(20);  
}

————————————————
链接:https://blog.csdn.net/finedayforu/article/details/108485477

 


评论:
相关文章
ESP-Hosted 入门介绍 &使用指南

ESP-Hosted 解决方案提供了将 ESP 板用作 Wi-Fi 和 Bluetooth/BLE 连接的通信处理器的方法。


设备上云太麻烦?ESP-Hosted一站触达!

ESP-Hosted 提供了一种将ESP芯片和模组用作通信协处理器的解决方案,该解决方案为主机微处理器或微控制器提供无线连接,使主机能够与其他设备通信。简单来说为网卡方案。


ESP32 + Arduino使用TFT_eSPI库

Arduino+ESP32上使用TFT_eSPI库快速点亮这个屏幕,驱动芯片ST7789


ESP32 利用 SPI 连通 TFT 彩屏

本文给出了一个ESP32与SPI 接口TFT显示屏接线的详细说明,供大家参考。


在Micropython下使用ESPNow功能进行数据传输

本文讲解如何在Micropython环境下使用ESP32的ESPNow功能进行数据传输。


用 ESP32-S3 打造多功能 USB Dongle

ESP-Dongle 是一款基于 ESP32-S3 芯片开发的多功能 USB Device 解决方案。它不仅外形小巧,功能齐全,更集成了无线 U 盘、SD 卡读取以及 USB 无线网卡等多项功能。


利用 ESP32-S3 和 CSI 技术打造智能家居

ESP32 系列芯片可以利用 CSI 数据实现动作检测和存在检测。无论是自动调节灯光、风扇,还是节能控制,CSI 技术为智能家居带来了新的可能性。随着 CSI 技术的发展,未来的智能家居将能够更精确地感知和响应我们的行为,实现更高效、更人性化的控制。


ESP32-FreeRTOS:大量FreeRTOS实例,供参考学习

ESP32-FreeRTOS项目提供了丰富的示例,帮助开发者快速掌握ESP32的硬件功能和FreeRTOS实时操作系统。


物联网项目开发实战-第3章-自动浇花项目迭代3

本节我们在迭代二的基础上使用四位数码管和OLED显示屏显示相关交互信息。


物联网项目开发实战-第3章-自动浇花项目迭代2

本节我们在迭代一的基础上增加采集土壤湿度数据,并根据湿度数据来决定是否自动进行浇水动作。

玩转 ESP32 + Arduino

作者:finedayforu@CSDN   共24讲

玩转 ESP32 + Arduino