這篇文章寫到現(xiàn)在我都不記得要寫了啥了。因為平時沒事就打開寫一點。
首先是ESP32-C3只支持BLE,也就是數(shù)據(jù)是以packet出現(xiàn)的。不支持普通的藍牙,也就是數(shù)據(jù)的處理的時候是可以字符串去操作的。
還有就是任何有發(fā)送功能,就像藍牙,WIFI,NRF這些芯片的PCB都是4層板,因為要保證性能。
這個就是普通的比如ESP32這個有通用藍牙的芯片,就是調(diào)用的這個庫
另外如果是有使用外置的這些開發(fā)板
裝上面這個By ESP的
這個是這樣的
可以看到讀寫的命令很簡單
BluetoothSerial::begin(String localName=String(), bool isMaster=false)藍牙初始化方法這里寫入藍牙名稱
BluetoothSerial::connect(uint8_t remoteAddress[])連接指定藍牙的方法 參數(shù)是指定藍牙設(shè)備的MAC地址
BluetoothSerial::available()檢查藍牙接收的寄存器中是否有數(shù)據(jù) 返回值是藍牙寄存器中剩的字節(jié)數(shù)
BluetoothSerial::write()見文生意 藍牙發(fā)送數(shù)據(jù)的方法 每次只能寫入一字節(jié) 但是還有
write(const uint8_t *buffer, size_t size)不定長寫入方式
BluetoothSerial::read()一樣見文生意 讀取藍牙數(shù)據(jù)的方法 每次讀取1字節(jié) 藍牙寄存器采用的先進先出 read()每調(diào)用一次 藍牙數(shù)據(jù)寄存器的字節(jié)就-1
BluetoothSerial::register_callback()該方法用來登記回調(diào)函數(shù) 不了解回調(diào)函數(shù)的請自行百度。
????
牛逼 ,普通藍牙沒有居然是???
原來如此
有各種網(wǎng)絡(luò)拓撲
對比
服務(wù)器宣傳它的存在,因此它可以被其它設(shè)備發(fā)現(xiàn)并包含客戶端可以讀取的數(shù)據(jù)??蛻舳藪呙韪浇脑O(shè)備,當(dāng)它找到它正在尋找的服務(wù)器時,它會建立連接并監(jiān)聽傳入的數(shù)據(jù)。這稱為點對點通信。
GATT 代表通用屬性,它定義了向連接的 BLE 設(shè)備公開的分層數(shù)據(jù)結(jié)構(gòu)。這意味著 GATT 定義了兩個 BLE 設(shè)備發(fā)送和接收標(biāo)準(zhǔn)消息的方式。理解這個層次結(jié)構(gòu)很重要,因為它可以更容易地理解如何將 BLE 與 ESP32 一起使用。
Profile:針對特定用例的標(biāo)準(zhǔn)服務(wù)集合;
Service:收集相關(guān)信息,如傳感器讀數(shù)、電池電量、心率等;
Characteristic:它是實際數(shù)據(jù)保存在層次結(jié)構(gòu)(值)上的位置;
Descriptor:關(guān)于數(shù)據(jù)的元數(shù)據(jù);
Properties:描述如何與特征值交互。例如:讀、寫、通知、廣播、指示等。
這個就是UUID
里面有這個寫入時候的操作
對應(yīng)的要操作的回調(diào)函數(shù)
可以把特征值定為寫入類型, 這樣客戶端可以給我們寫入, 觸發(fā)寫入回調(diào)函數(shù)。 這段代碼定義了一個名為 MyCallbacks 的C++類,該類繼承自 BLECharacteristicCallbacks。 BLECharacteristicCallbacks 是一個用于處理BLE特征(characteristic)的回調(diào)函數(shù)的基類。 在 MyCallbacks 類中,定義了一個名為 onWrite 的回調(diào)函數(shù),該函數(shù)將在BLE特征被寫入(write)時被調(diào)用。具體來說,當(dāng)遠程設(shè)備向BLE特征寫入數(shù)據(jù)時,這個回調(diào)函數(shù)會被觸發(fā)。 以下是 onWrite 回調(diào)函數(shù)的主要功能:
voidonWrite(BLECharacteristic*pCharacteristic):
這是一個回調(diào)函數(shù)的聲明,接受一個指向 BLECharacteristic 對象的指針作為參數(shù)。該參數(shù)指向觸發(fā)寫入事件的BLE特征對象。
在函數(shù)體內(nèi)部,首先通過 pCharacteristic->getValue() 獲取到從遠程設(shè)備寫入的數(shù)據(jù),將其存儲在名為 rxValue 的字符串中。 然后,檢查 rxValue 的長度,如果長度大于0,表示接收到了有效的數(shù)據(jù)。 如果有有效數(shù)據(jù),就會通過串口(Serial)輸出一條包含接收到的數(shù)據(jù)的消息,用多個 Serial.print 語句來逐個打印接收到的字符。 后面為了有補全,我使用了PlatformIO,但是遇到了大家都遇到的問題,就是創(chuàng)建項目非常慢!
C:Userszyy18.platformiopenvScripts
把上面的路徑加到環(huán)境變量里面
首先,需要確保C:Users[你的用戶名].platformiopenvScripts這個目錄已經(jīng)在環(huán)境變量中了 并且默認的Python就是這個路徑下的python 其次,打開你的powershell,輸入如下命令 mkdir [你的工程文件夾名稱] cd [你的工程文件夾名稱] pio project init --board esp32dev # 這句是核心
我們使用命令行來生出一個新項目
具體的板子的名稱可以去官網(wǎng)看
這個就是它的名字
你可以更改一個keyword來說明要使用什么編程環(huán)境
事實上,這個東西也是有的
可以去選擇各種的功能,給IDF設(shè)置
其實慢的原因是pip的源是國外的
本來就沒有多少引腳,后面一看更沒有了,天生的遙控芯片
可以跟著這個看
USB是內(nèi)置的,但是不可以使用CDC的USB通用功能
這個是官方的開發(fā)板上面使用的按鍵
這個是原理圖的示意圖
官方的按鍵連接是有電容的
這個是jlc的一個項目,按鍵是電容的
我以前大學(xué)的時候也做過類似的東西
使用一個MOS管來當(dāng)開關(guān)
大家現(xiàn)在都喜歡MOS管,這里也是開關(guān)
本來是需要設(shè)計這個電池充電的部分的,但是現(xiàn)在為了快速就不考慮了
以下的內(nèi)容來說明,ESP32-C3不是低功耗的,而且對于電池應(yīng)用來講是不可行的。
接下來就是喜聞樂見的電池
大概就是這么大
對于隨機 CR2032(典型的 Ir 被稱為 10-40 歐姆 (10,000-40,000mOhm)??梢詫?nèi)阻視為與理想電壓源串聯(lián)的電阻。
現(xiàn)在,當(dāng)ESP32啟動時,它可以輕松拉取300mA。
即使在最好的情況下(Ir=10 歐姆),這也意味著內(nèi)阻會消耗可用 3V 電壓中的(U=I*R,0.3A*10ohm=)3V。
換句話說,當(dāng) ESP32 啟動時,它會從不良的 CR2032 中拉出大量電流,導(dǎo)致電壓完全降至零,從而ESP32 復(fù)位/崩潰。
可以看到就是到了300mA以上的電流,應(yīng)該就是峰值了
很多帖子聲稱啟動期間甚至在 RF 初始化之前就有高達 300mA 的峰值,然后在 WiFi 或 BT 啟動時出現(xiàn)額外的浪涌。處理這個問題的通常方法確實是在電源上安裝一個巨大的電容器。
研究 ESP32,所以在電源上串聯(lián)了一個 1R 電阻來檢查啟動時的電源電流。-電流是需要串流進去的。
黃色線,1 歐姆,因此 1V = 1mA。
RST——釋放復(fù)位按鈕。 1 - 它進入 arduino setup(),它做的第一件事是脈沖 GPIO(藍色跡線),以便顯示在示波器上。 4 - 頻率降低至 80MHz,這確實減少了一點電流消耗。 3 - WiFi 已啟用,因此與應(yīng)用程序無關(guān)。當(dāng)前的峰值比圖表顯示的要高得多。 在 RST 和 1 之間,你無法控制,它正在執(zhí)行引導(dǎo)加載程序和啟動代碼,并且在 250ms 內(nèi)消耗約 55mA 的電流。對于 CR2032 來說這已經(jīng)是相當(dāng)多了,令人驚訝的是它甚至能夠初始化串口并打印一些東西。電池一定是新的! 上面說的電容器有幫助嗎? i=C dv/dt,因此 C=i dt/dv。為了使輸入電壓在 dt=0.25s 期間、i=55mA 期間從 6V 降至 3.5V (dv=2.5V),C=5500μF,與電池并聯(lián)放置在電源開關(guān)之前。不完全實用,也不是很“薄和時尚”,但可行。 為了減少電流,必須破解 SDK 以插入一些在啟動時立即執(zhí)行的代碼。也許可以降低時鐘速度,或者插入一些周期性睡眠以減少平均電流消耗。當(dāng)然,無法修改 ROM 引導(dǎo)加載程序,因此如果它想在運行代碼之前讀取整個閃存以對其進行校驗和, 我不打算這樣做,但如果你真的想以 5mA 的電流運行 ESP,我想你必須重新編譯 SDK 和引導(dǎo)加載程序. 如果啟動后這種情況發(fā)生得相當(dāng)快,那么此時你也許可以將其重新配置為低功耗,并使用更小的電容器。 如果你不使用 arduino“框架”,而是使用 espressif SDK,它的行為可能會有所不同(如果啟動速度更快就好了)。 另一個潛在的罪魁禍?zhǔn)资?LDO。它是一個微功率 LDO,速度往往非常慢,并且需要很長時間才能對脈沖負載做出反應(yīng):
這個是靜態(tài)的漏電流來著
有人設(shè)計了一個這樣的板子,老外喜歡的不行
扛不住的電池,換成了鋰電池
對于低電池功耗設(shè)備,
使用 MCP1703 LDO(2μA 靜態(tài)電流)可能比使用 65μA 的 SE5218 更好。
其實一點都不低功耗
確實,人家文檔自己也說了
這里就看看沖牙器的按鍵
都是這種按壓的
這個是不清晰的圖
都是這樣的
反正都是這種按鍵,這里是我拆了幾個
Apple Watch的按鍵是這樣的
旋鈕
電源管理單元采用的是Micro-USB充電接口和一顆型號為LTH9鋰電池充放電管理芯片,并在芯片的引腳1處連接了一顆100K的電阻和10μF電容構(gòu)成一個RC吸收回路,用來抑制電路中的浪涌電壓,規(guī)避充電電壓過高的問題。
為了避免直流電機在運行過程中,電刷與轉(zhuǎn)子之間摩擦產(chǎn)生的電火花以及高頻的噪聲,這款電動沖牙器在離電刷與轉(zhuǎn)子最近的兩極側(cè),并聯(lián)了一個顆0.1μF的陶片電容,用以抑制其他因素對電機運行的影響,保證電路正常工作。
電機并聯(lián)電容的設(shè)計在很多小型的電動設(shè)備中普遍都有使用,這主要還是廠商考慮到了電容對電火花和高頻噪聲抑制效果的問題。由于電容對噪聲與電火花的抑制效果受會電容到電機的距離影響,當(dāng)電容離噪聲源越遠時,諧振頻率就會降低,消除噪聲的效果自然會變差,因此這也是為什么這顆電容放在電機兩極的原因。
本文的開發(fā)板改裝于這個,超小板子,0201封裝
哥們呢,眼神不行,就0603了。。。
記得在這里批量修改封裝
它這個的LDO漏電流很小,是下面面寫的很小封裝的LDO
這個是官方使用的LDO
使用固定輸出
老師傅才不管呢,直接10.0.1
這個是原版的LDO
超小封裝,我覺得就沒有這個必要了
右下角
原版這個的電容可以濾波一下
直接在Type-C上面取電
官方的有著完善的保護系統(tǒng)
LDO也支持最小2.7V的輸入,也就是說鋰電池OK
官方的是
UART->USB
這個是控制芯片的模式
圓弧的走線看著就是可愛
第一次見圓弧的
放大看
在這里設(shè)置
1. 最小線寬: 6mil (0.153mm) 。也就是說如果小于6mil線寬將不能生產(chǎn),如果設(shè)計條件許可,設(shè)計越大越好,線寬越大,工廠越好生產(chǎn),良率越高 一般設(shè)計常規(guī)在10mil左右。 2. 最小線距: 6mil(0.153mm).。最小線距,就是線到線,線到焊盤的距離不小于6mil 從生產(chǎn)角度出發(fā),是越大越好,一般常規(guī)在10mil,當(dāng)然設(shè)計有條件的情況下,越大越好。 3.線路到外形線間距0.508mm(20mil) 線寬原則:一般情況下,信號線寬為0.3mm(12mil),電源線寬為0.77mm(30mil)或1.27mm(50mil); 線隙原則:線與線之間和線與焊盤之間的距離大于等于0.33mm(13mil),實際應(yīng)用中,條件允許時應(yīng)考慮加大距離; 布線密度較高時,可考慮(但不建議)采用IC腳間走兩根線,線的寬度為0.254mm(10mil),線間距不小于0.254mm(10mil)。 英寸(")是美洲體系的常用規(guī)格單位,如鋼管、閥門、法蘭、彎頭、泵、三通等,如規(guī)格是10"。 英寸(inch,縮寫為in.)在荷蘭語中的本意是大拇指,一英寸就是一節(jié)大拇指的長度。當(dāng)然人的大拇指的長度也是長短不一的。14世紀(jì)時,英皇愛德華二世頒布了“標(biāo)準(zhǔn)合法英寸”。 其規(guī)定為:從大麥穗中間選擇三粒最大的麥粒并依次排成一行的長度就是一英寸。 英寸與公制的換算如下:
1"=2.54cm=25.4mm 1mil = 1/100 " = 0.254 mm
早期的設(shè)計,主打一個信號通暢
把引腳拉一些出來
對于信號傳輸來說,可以平滑阻抗,減小阻抗的急劇跳變;避免高頻信號傳輸時由于線寬突然變小而造成反射,可使走線與元件焊盤之間的連接趨于平穩(wěn)過渡化。
在工具這里設(shè)置
這個差分布線是很方便的
這個是在布局的時候,點一下讓它去下面
關(guān)鍵信號線優(yōu)先:模擬小信號、高速信號、時鐘信號和同步信號等關(guān)鍵信號優(yōu)先布線 ; 密度優(yōu)先原則:從單板上連接關(guān)系最復(fù)雜的器件著手布線。從單板上連線 最密集的區(qū)域開始布線 。 元件布局時,應(yīng)適當(dāng)考慮使用同一種電源的器件盡量放在一起,以便于將來的電源分割。 現(xiàn)在的芯片引腳越來越多,越來越密。如果集成芯片相距過于親密,就會有很大可能無法將它們的引線輕松的引出布線,往往是越到后來布線越難。因此,在布置任何元器件的時候,都需要盡可能在它們之間留下至少350mil的距離,對于引腳多的芯片,留的空間需要更大。 電解電容充當(dāng)瞬態(tài)電流的電荷儲存器,以最大程度地降低電源上的低頻噪聲,而低電感陶瓷電容用于降低高頻噪聲。另外,鐵氧體磁珠是可選的,但會增加高頻噪聲隔離和去耦。 去耦電容必須盡可能靠近器件的電源引腳放置。這些電容應(yīng)通過過孔或短走線連接到低阻抗接地平面的較大區(qū)域,以最大程度地減少附加串聯(lián)電感。 較小電容(通常為0.01μF至0.1μF)應(yīng)盡可能靠近器件的電源引腳放置。當(dāng)器件同時有多個輸出切換時,這種布置可防止運行不穩(wěn)定。電解電容(通常為10μF至100μF)距離器件的電源 引腳應(yīng)不超過1英寸。 為使實施更輕松,可以利用器件GND引腳附近的過孔通過T型連接將去耦電容連接到接地平面,而不是創(chuàng)建走線。示例參見圖。
所有的文章都稱為T型布局
通常,高性能數(shù)據(jù)收集系統(tǒng)應(yīng)有四層或更多層。 頂層通常用于數(shù)字/模擬信號,而底層用于輔助信號。 第二層(接地層)充當(dāng)阻抗控制信號的參考平面,用于減少IR壓降并屏蔽頂層中的數(shù)字信號。 最后,電源平面位于第三層。 電源和接地平面必須彼此相鄰,因為它們提供了額外的平面間電容,有助于電源的高頻去耦 信號線布在電(地)層上 在多層印制板布線時,由于在信號線層沒有布完的線剩下已經(jīng)不多,再多加層數(shù)就會造成浪費也會給生產(chǎn)增加一定的工作量,成本也相應(yīng)增加了,為解決這個矛盾,可以考慮在電(地)層上進行布線。首先應(yīng)考慮用電源層,其次才是地層。因為最好是保留地層的完整性。 小信號放大器的電源布線需要地銅皮及接地過孔隔離,避免其它EMI干擾竄入,進而惡化本級信號質(zhì)量。 為了減少線間串?dāng)_, 應(yīng)保證線間距足夠大, 當(dāng)線中心間距不少于 3 倍線寬時,則可保持 70%的電場不互相干擾, 稱為 3W 規(guī)則。如要達到 98%的電場不互相干擾,可使用 10W 的間距。 在距離PCB板邊緣1mm以內(nèi)和安裝孔周圍1mm范圍內(nèi)不允許布線; 電源線和地線應(yīng)呈放射狀排列,信號線不應(yīng)回環(huán)。
審核編輯:黃飛
-
藍牙芯片
+關(guān)注
關(guān)注
17文章
375瀏覽量
46030 -
開發(fā)板
+關(guān)注
關(guān)注
25文章
5032瀏覽量
97371 -
網(wǎng)絡(luò)拓撲
+關(guān)注
關(guān)注
0文章
101瀏覽量
11373 -
ESP32
+關(guān)注
關(guān)注
18文章
971瀏覽量
17200 -
ESP32-C3
+關(guān)注
關(guān)注
0文章
9瀏覽量
381
原文標(biāo)題:ESP32-C3設(shè)計匯總
文章出處:【微信號:TT1827652464,微信公眾號:云深之無跡】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論