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