【開源項(xiàng)目】基于ESP32的Web示波器ESP32_oscilloscope
項(xiàng)目概述
ESP32_oscilloscope是一個(gè)基于ESP32微控制器的示波器項(xiàng)目,它具備直觀的網(wǎng)頁界面,可以顯示采集到的信號(hào)。這個(gè)項(xiàng)目最初是為了展示ESP32多任務(wù)功能而設(shè)計(jì)的,但現(xiàn)在它已經(jīng)發(fā)展成為一個(gè)自成體系的示波器解決方案。
這款示波器能夠在屏幕上顯示多達(dá)736個(gè)樣本。然而,采樣率可能并不總是穩(wěn)定的,因?yàn)镋SP32還要處理其他的任務(wù)。這意味著,在不同的使用場(chǎng)景下,ESP32未必能夠始終保持理想的采樣頻率。
Demo效果
ESP32 oscilloscope界面效果請(qǐng)移動(dòng)到 http://jurca.dyn.ts.si/oscilloscope.html
復(fù)刻指南
請(qǐng)到https://github.com/BojanJurca/Esp32_oscilloscope,(此地址慢,如果沒梯子,還可能打不開網(wǎng)頁), git clone項(xiàng)目
我已經(jīng)clone到了gitee,可以到https://gitee.com/lojam/Esp32_oscilloscope, 縱享絲滑。
編譯準(zhǔn)備
安裝ESP IDF5.x開發(fā)環(huán)境,搭建開發(fā)環(huán)境,請(qǐng)參閱:ESP_IDF windows開發(fā)環(huán)境搭建入門教程簡單明了(比官方的)-谷動(dòng)谷力 (sunsili.com),如果舊版本的IDF,請(qǐng)升級(jí)到最近的版本的IDF.
安裝好Arduino IDE
編譯說明
為了啟動(dòng)ESP32_oscilloscope項(xiàng)目,用戶需要按照以下步驟進(jìn)行設(shè)置:
1. 將本項(xiàng)目中的所有文件復(fù)制到Esp32_oscilloscope目錄。
2. 使用Arduino IDE打開Esp32_oscilloscope.ino文件。
3. 在Esp32_servers_config.h文件中,將YOUR-STA-SSID和YOUR-STA-PASSWORD替換為您自己的WiFi SSID和密碼。
4. 選擇一個(gè)SPIFFS分區(qū)模式(在“工具”菜單中選擇“分區(qū)方案”)。
5. 如果您的ESP32板沒有閃存,則需注釋掉#define FILE_SYSTEM FILE_SYSTEM_LITTLEFS行,這樣示波器將使用程序存儲(chǔ)器代替文件系統(tǒng)來存儲(chǔ)oscilloscope.html文件。
6. 編譯并首次運(yùn)行該草圖,ESP32的閃存將被格式化,注意,這將清除閃存中的所有信息。
7. 使用FTP上傳相關(guān)的圖像和html文件到ESP32的/var/www/html目錄中。
8. 在瀏覽器中打開http://ESP32板的IP/oscilloscope.html來訪問示波器界面。
C:\esp32_oscilloscope>ftp YOUR-ESP32-IP
Connected to 10.0.0.3.
220-ESP32 FTP server - everyone is allowed to login
User (10.0.0.3:(none)):
331 enter password
Password:
230 logged on, use "/" to refer to your home directory "/"
ftp> put android-192-osc.png /var/www/html/android-192.png
226 /var/www/html/android-192-osc.png transfer complete
ftp> put apple-180-osc.png /var/www/html/apple-180.png
226 /var/www/html/apple-180-osc.png transfer complete
ftp> put oscilloscope.html /var/www/html/oscilloscope.html
226 /var/www/html/oscilloscope.html transfer complete
ftp>
示波器的工作原理
ESP32_oscilloscope通過處理和展示從輸入引腳獲得的數(shù)字或模擬信號(hào),讓用戶能夠看到其真實(shí)的波形。輸入信號(hào)的數(shù)字值范圍為0和1,模擬值則從0到4095,代表0V到3.3V的電壓范圍。
用戶可以通過修改oscilloscope.html文件來適配自己的需求,比如指定使用哪些GPIO作為數(shù)字輸入,哪些作為模擬輸入,這樣能更合理地監(jiān)測(cè)信號(hào)。
處理反向信號(hào)
在某些ESP32板上,您可能會(huì)遇到反向模擬信號(hào)的問題。這時(shí),可以通過在oscilloscope.h中注釋或取消注釋INVERT_ADC1_GET_RAW和/或INVERT_I2S_READ編譯指令來解決。如果您的ESP32板支持I2S接口(如ESP32 DevKitC或NodeMCU-32S),您還可以選擇是否使用此接口。使用I2S接口可以提高采樣頻率和單個(gè)模擬信號(hào)的質(zhì)量,但缺點(diǎn)是無法同時(shí)使用多個(gè)模擬示波器。
關(guān)于模擬讀取的注意事項(xiàng)
ESP32內(nèi)部有兩個(gè)成功逼近寄存器(SAR),其中只有ADC1可以用于示波器的模擬讀取。這些GPIO引腳包括36、37、38、39、32、33、34、35。而ADC2引腳(GPIO4、0、2、15、13、12、14、27、25、26)只能在WiFi不工作的情況下才可以進(jìn)行模擬讀取,因此在使用ESP32_oscilloscope時(shí),這些ADC2引腳是不可用的。
結(jié)論
ESP32_oscilloscope為用戶提供了一種簡單而高效的方式來實(shí)時(shí)監(jiān)測(cè)信號(hào)。通過Web界面,用戶不僅能輕松訪問示波器,還能根據(jù)自己的需要進(jìn)行自定義設(shè)置。無論是愛好者還是專業(yè)工程師,這款ESP32示波器都能夠在日常工作、實(shí)驗(yàn)和學(xué)習(xí)中發(fā)揮重要的作用。