玩轉(zhuǎn) ESP32 + Arduino (十一) EEPROM NTP對時 藍(lán)牙透傳

一 .EEPROM

在EPS32中已經(jīng)將EEPROM棄用。對于ESP32上的新應(yīng)用程序,建議使用NVS為首選項(xiàng)。提供EEPROM是為了向后兼容現(xiàn)有的Arduino應(yīng)用程序巢块。
Arduino core for the ESP32中的EEPROM是在flash中開辟的存儲區(qū)域;

1. 調(diào)用EEPROM

調(diào)用#include <EEPROM.h>來使用EEPROM巧号;

2. 初始化EEPROM

/*
 * 初始化EEPROM
 * 參數(shù): size:容量大小, 默認(rèn)4096, size為需要讀寫的數(shù)據(jù)字節(jié)最大地址+1族奢,取值1~4096;
 *  返回值: 設(shè)置成功否?
 */
bool EEPROMClass::begin(size_t size)
EEPROM.begin(4096);

3. 往EEPROM中寫一個字節(jié)的值

/*
 * 初始化EEPROM
 * 參數(shù): 
 *  address:地址
 *  val: 值
 *  返回值: 無
 */
void EEPROMClass::write(int address, uint8_t val)
EEPROM.write(1,'a');

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

EEPROM.write();并不能保證斷電不丟失,需要提交.

EEPROM.commit();

5. EEPROM中讀取數(shù)據(jù)

/*
 * 讀EEPROM
 * 參數(shù): 
 *  address:地址
 *  返回值: 讀取的字節(jié)
 */
uint8_t EEPROMClass::read(int address){}

通過串口往EEPROM中寫入, 按x可以讀取EEPROM中的數(shù), 給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里的數(shù)據(jù)是:");
      Serial.println(EEPROM.read(1));
    }
  }
}

二. NTP對時

1. NTP對時原理

連接網(wǎng)絡(luò), 從網(wǎng)絡(luò)中請求NTP對時數(shù)據(jù), 這里我們選取了阿里云的NTP服務(wù)器 ntp1.aliyun.com
此外,我們在東八區(qū), 所以應(yīng)該偏移時間 8小時

2. 初始化一個NTP服務(wù)客戶端

NTPClient(UDP& udp, const char* poolServerName, int timeOffset, int updateInterval);
/*
參數(shù):
1. udp  : 創(chuàng)建的UDP連接
2. poolServerName : 服務(wù)器地址, 字符串類型 默認(rèn): time.nist.gov
3. timeOffset: 偏移時間, 默認(rèn)0, 單位秒, 北京時間需要偏移 3600*8
4. milliseconds : 更新時間間隔, 單位毫秒
*/

這里注意, 需要傳入一個UPD連接, 詳見后面的例子

3. 更新時間

timeClient.update();

4. 獲取格式化的時間

timeClient.getFormattedTime();

5.獲取時間戳(格林威治時間讀秒)

timeClient.getEpochTime();

6.獲取天(從NTP服務(wù)客戶端開啟至今的天數(shù))

程序啟動當(dāng)天是1

timeClient.getDay();

7. 獲取時分秒

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

8.單獨(dú)設(shè)置時間偏移

  timeClient.setTimeOffset(3600*8);

9. 單獨(dú)設(shè)置更新頻率

  timeClient.setUpdateInterval(1000);

10. 例子

#include <Arduino.h>
#include "WiFi.h"
#include "NTPClient.h"

const char *ssid     = "anleng";
const char *password = "al77776666";

WiFiUDP ntpUDP; // 創(chuàng)建一個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);
}

三. 藍(lán)牙透傳

#include <Arduino.h>
#include "BluetoothSerial.h"

BluetoothSerial bt1;

void setup()
{
  Serial.begin(115200);
  delay(5000);
  bt1.begin("ESP32BLUE");
  Serial.println("藍(lán)牙串口透傳已經(jīng)打開");
}

void loop()
{
  if (Serial.available())
  {
    bt1.write(Serial.read());
  }
  if (bt1.available())
  {
    Serial.write(bt1.read());
  }
  delay(20);  
}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末丹鸿,一起剝皮案震驚了整個濱河市越走,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖廊敌,帶你破解...
    沈念sama閱讀 217,826評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件铜跑,死亡現(xiàn)場離奇詭異,居然都是意外死亡骡澈,警方通過查閱死者的電腦和手機(jī)锅纺,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來肋殴,“玉大人囤锉,你說我怎么就攤上這事』ご福” “怎么了官地?”我有些...
    開封第一講書人閱讀 164,234評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長蔽豺。 經(jīng)常有香客問我区丑,道長拧粪,這世上最難降的妖魔是什么修陡? 我笑而不...
    開封第一講書人閱讀 58,562評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮可霎,結(jié)果婚禮上魄鸦,老公的妹妹穿的比我還像新娘。我一直安慰自己癣朗,他們只是感情好拾因,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,611評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著旷余,像睡著了一般绢记。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上正卧,一...
    開封第一講書人閱讀 51,482評論 1 302
  • 那天蠢熄,我揣著相機(jī)與錄音,去河邊找鬼炉旷。 笑死签孔,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的窘行。 我是一名探鬼主播饥追,決...
    沈念sama閱讀 40,271評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼罐盔!你這毒婦竟也來了但绕?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,166評論 0 276
  • 序言:老撾萬榮一對情侶失蹤惶看,失蹤者是張志新(化名)和其女友劉穎壁熄,沒想到半個月后帚豪,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,608評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡草丧,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,814評論 3 336
  • 正文 我和宋清朗相戀三年狸臣,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片昌执。...
    茶點(diǎn)故事閱讀 39,926評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡烛亦,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出懂拾,到底是詐尸還是另有隱情煤禽,我是刑警寧澤,帶...
    沈念sama閱讀 35,644評論 5 346
  • 正文 年R本政府宣布岖赋,位于F島的核電站檬果,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏唐断。R本人自食惡果不足惜选脊,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,249評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望脸甘。 院中可真熱鬧恳啥,春花似錦、人聲如沸丹诀。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽铆遭。三九已至硝桩,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間枚荣,已是汗流浹背碗脊。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留棍弄,地道東北人望薄。 一個月前我還...
    沈念sama閱讀 48,063評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像呼畸,于是被迫代替她去往敵國和親痕支。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,871評論 2 354