如何配置ESP32 Web flash,允許設(shè)置任何字符串變量
你可以在Github頁(yè)面上自己嘗試一下。向?qū)?簡(jiǎn)單的UI,一步一步解釋)和高級(jí)(更多的調(diào)試和信息)
在市場(chǎng)上制作基于ESP32的產(chǎn)品(或基本上任何嵌入式產(chǎn)品)都面臨一些挑戰(zhàn)。一個(gè)是讓最終用戶將其配置到他們的wifi,他們的環(huán)境另一個(gè)問(wèn)題是,你希望用戶能夠在需要修復(fù)bug或添加功能時(shí)更新它。
當(dāng)你在制作一款大規(guī)模生產(chǎn)的產(chǎn)品(100,000 +)時(shí),你的公司當(dāng)然應(yīng)該有足夠的資金和時(shí)間去制作一個(gè)用于更新和配置的應(yīng)用程序,允許usb驅(qū)動(dòng)器更新作為備份,并允許使用第三方應(yīng)用程序(例如谷歌Home)來(lái)配置設(shè)備。但很多ESP32創(chuàng)業(yè)公司都處于中間地帶,他們可能會(huì)生產(chǎn)數(shù)萬(wàn)種到數(shù)千種產(chǎn)品。即使只是“原型”較小的數(shù)字,給你的客戶/客戶一個(gè)快速更新它的方法是很好的,而不必安裝vs code, platformio, arduino或下載和安裝包;這在他們“公司保護(hù)”的筆記本電腦上甚至是不可能的。
webserial協(xié)議得到了一些關(guān)注;這是esptools-js;pressif微控制器的“avrdude”(Arduino flash)將被移植到j(luò)avascript。
使用這個(gè)系統(tǒng)的好處是,您可以擁有如下代碼:
這導(dǎo)致以\0字符結(jié)尾的字符串有很大的“區(qū)域”,這很好,因?yàn)檫@使得字符串的長(zhǎng)度也是可變的。\0終止符也是一種眾所周知的結(jié)束字符串的方式,因此大多數(shù)庫(kù)都支持它。
你只需要配置一個(gè)JSON對(duì)象來(lái)捕獲和替換這些字符串;UI將被正確的變量填充;javascript將‘CTRL-F’并替換變量添加\0,直到它覆蓋相同的空間/字節(jié)。然后根據(jù)固件映像格式替換校驗(yàn)和和SHA256以匹配新的二進(jìn)制內(nèi)容。
下面是如何在UI中顯示的;這些值存儲(chǔ)在localstorage中;因此,它們應(yīng)該基于‘firmware_name’進(jìn)行持久化,以防您稍后想要重新刷新。
本文編譯自hackster.io





