Tento článek ukazuje, jak číst analogové vstupy s ESP32 pomocí Arduino IDE. Analogové čtení je užitečné pro čtení hodnot z proměnných rezistorů, jako jsou potenciometry nebo analogové senzory.
Čtení analogových vstupů s ESP32 je stejně snadné jako používání analogRead(GPIO) funkce, která přijímá jako argument, GPIO, kterou chcete číst.
Máme také další návody, jak používat analogové piny s ESP rady:
- ESP8266 ADC – Čtení Analogových Hodnot s Arduino IDE, MicroPython a Lua
- ESP32 Analogové Hodnoty s MicroPython
podívejte se na Video
můžete se dívat na video tutorial nebo čtení této stránce pro písemné pokyny.
Analogové Vstupy (ADC)
Čtení analogové hodnoty s ESP32 znamená, že můžete měřit různé úrovně napětí mezi 0 V a 3.3 V.
měřené napětí je pak přiřazeno hodnotě mezi 0 a 4095, ve které 0 v odpovídá 0 a 3,3 V odpovídá 4095. Každé napětí mezi 0 V a 3,3 V bude mít odpovídající hodnotu mezi nimi.
ADC je Non-lineární
v Ideálním případě, měli byste očekávat, že lineární chování při použití ESP32 ADC piny. To se však nestane. To, co získáte, je chování, jak je znázorněno na následujícím grafu:
toto chování znamená, že váš ESP32 není schopen rozlišit 3.3 v od 3.2 V. získáte stejnou hodnotu pro obě napětí: 4095.
totéž platí pro velmi nízké hodnoty napětí: pro 0 V a 0,1 v získáte stejnou hodnotu: 0. Při používání pinů ADC ESP32 to musíte mít na paměti.
na Githubu se o tomto tématu diskutuje.
analogRead() Funkce
Čtení analogového vstupu s ESP32 pomocí Arduino IDE je jednoduché jako pomocí analogRead() funkce. Přijímá jako argument GPIO, které chcete číst:
analogRead(GPIO);
ESP32 podporuje měření v 18 různých kanálech. Na desce DEVKIT V1 doit je k dispozici pouze 15 (verze s 30 GPIO).
uchopte pinout desky ESP32 a vyhledejte kolíky ADC. Ty jsou zvýrazněny červeným okrajem na obrázku níže.
další informace o ESP32 GPIO: ESP32 Pinout Reference.
tyto analogové vstupní piny mají 12bitové rozlišení. To znamená, že když čtete analogový vstup, jeho rozsah se může lišit od 0 do 4095.
Poznámka: Při použití Wi-Fi nelze použít piny ADC2. Pokud tedy používáte Wi-Fi a máte potíže se získáním hodnoty z ADC2 GPIO, můžete místo toho zvážit použití ADC1 GPIO, které by mělo vyřešit váš problém.
další užitečné funkce
existují další pokročilejší funkce pro použití s piny ADC, které mohou být užitečné v jiných projektech.
- analogReadResolution (rozlišení): nastavte ukázkové bity a rozlišení. Může to být hodnota mezi 9 (0 – 511) a 12 bity (0-4095). Výchozí je 12bitové rozlišení.
- analogSetWidth(width): nastavte ukázkové bity a rozlišení. Může to být hodnota mezi 9 (0 – 511) a 12 bity (0-4095). Výchozí je 12bitové rozlišení.
- analogSetCycles (cykly): nastavte počet cyklů na vzorek. Výchozí hodnota je 8. Rozsah: 1 až 255.
- analogovévzorky (vzorky): nastavte počet vzorků v rozsahu. Výchozí hodnota je 1 vzorek. Má za následek zvýšení citlivosti.
- analogSetClockDiv (útlum): nastavte dělič pro hodiny ADC. Výchozí hodnota je 1. Rozsah: 1 až 255.
- analogSetAttenuation( útlum): nastaví vstupní útlum pro všechny ADC piny. Výchozí hodnota je ADC_11db. Přijaté hodnoty:
- ADC_0db: nastaví Žádný útlum. ADC může měřit až přibližně 800 mV (1V vstup = ADC čtení 1088).
- ADC_2_5db: vstupní napětí ADC bude oslabené, rozšiřuje rozsah měření až na přibl. 1100 mV. (1V vstup = ADC čtení 3722).
- ADC_6db: vstupní napětí ADC bude oslabené, rozšiřuje rozsah měření až na přibl. 1350 mV. (1V vstup = ADC čtení 3033).
- ADC_11db: vstupní napětí ADC bude oslabené, rozšiřuje rozsah měření až na přibl. 2600 mV. (1V vstup = ADC čtení z 1575).
- analogSetPinAttenuation (pin, útlum): nastaví vstupní útlum pro zadaný pin. Výchozí hodnota je ADC_11db. Hodnoty útlumu jsou stejné jako u předchozí funkce.
- adcAttachPin (pin): Připojte pin k ADC (vymaže také jakýkoli jiný analogový režim, který by mohl být zapnutý). Vrátí pravdivý nebo nepravdivý výsledek.
- adcStart(pin), adcBusy(pin) a resultadcEnd(pin): spustí ADC konverze na přiložený pin je autobus. Zkontrolujte, zda je aktuálně spuštěna konverze na sběrnici ADC pin (vrací TRUE nebo FALSE). Získejte výsledek převodu: vrátí 16bitové celé číslo.
existuje velmi dobré video vysvětlující tyto funkce, které můžete sledovat zde.
Přečtěte si Analogové hodnoty z potenciometru s ESP32
abychom viděli, jak se vše spojuje, uděláme jednoduchý příklad pro čtení analogové hodnoty z potenciometru.
pro tento příklad potřebujete následující části:
- ESP32 DOIT DEVKIT V1 Rady (přečtěte si Nejlepší ESP32 rozvoj desky)
- Potenciometr
- Prkénko
- Propojovací vodiče
můžete použít předchozí odkazy, nebo jít přímo do MakerAdvisor.com/tools najít všechny díly pro vaše projekty za nejlepší cenu!
schéma
Připojte potenciometr k vašemu ESP32. Střední kolík potenciometru by měl být připojen k GPIO 34. Jako odkaz můžete použít následující schematický diagram.
Kód
Budeme program ESP32 pomocí Arduino IDE, takže ujistěte se, že máte ESP32 add-on nainstalován před pokračováním:
- Windows podle pokynů – ESP32 Rady v Arduino IDE
- Mac a Linux pokyny – ESP32 Rady v Arduino IDE
Otevřít svůj Arduino IDE a zkopírujte následující kód.
// Potentiometer is connected to GPIO 34 (Analog ADC1_CH6) const int potPin = 34;// variable for storing the potentiometer valueint potValue = 0;void setup() { Serial.begin(115200); delay(1000);}void loop() { // Reading potentiometer value potValue = analogRead(potPin); Serial.println(potValue); delay(500);}
Zobrazit surový kód
tento kód jednoduše přečte hodnoty z potenciometru a vytiskne tyto hodnoty do sériového monitoru.
v kódu začnete definováním GPIO, ke kterému je potenciometr připojen. V tomto příkladu GPIO 34.
const int potPin = 34;
v nastavení () inicializujte sériovou komunikaci při přenosové rychlosti 115200.
Serial.begin(115200);
ve smyčce () použijte funkci analogRead()pro čtení analogového vstupu z potpinu.
potValue = analogRead(potPin);
nakonec vytiskněte hodnoty odečtené z potenciometru na sériovém monitoru.
Serial.println(potValue);
Nahrajte poskytnutý kód do vašeho ESP32. Ujistěte se, že máte v nabídce Nástroje vybranou správnou desku a port COM.
testování příkladu
po nahrání kódu a stisknutí tlačítka RESET ESP32 otevřete Sériový Monitor přenosovou rychlostí 115200. Otočte potenciometr a uvidíte, jak se hodnoty mění.
maximální hodnotu, kterou dostanete, je 4095 a minimální hodnota je 0.
balíme
V tomto článku jste se naučili, jak číst analogové vstupy pomocí ESP32 s Arduino IDE. V souhrnu:
- deska ESP32 DEVKIT V1 doit (verze s 30 kolíky) má 15 pinů ADC, které můžete použít ke čtení analogových vstupů.
- tyto piny mají rozlišení 12 bitů, což znamená, že můžete získat hodnoty od 0 do 4095.
- Chcete-li číst hodnotu v Arduino IDE, jednoduše použijte funkci analogRead ().
- špendlíky ADC ESP32 nemají lineární chování. Pravděpodobně nebudete schopni rozlišit mezi 0 A 0.1 V, nebo mezi 3.2 A 3.3 V. při používání pinů ADC to musíte mít na paměti.
doufáme, že vám tento krátký průvodce bude užitečný. Pokud se chcete dozvědět více o ESP32, přihlaste se do našeho kurzu: Naučte se ESP32 s Arduino IDE.
další návody ESP32, které se vám mohou také líbit:
- ESP32 OLED Displej s Arduino IDE
- ESP32 s DHT Čidlo Teploty a Vlhkosti pomocí Arduino IDE
- ESP32 Webový Server s DHT hodnoty
- 20+ ESP32 Projekty a Kurzy
Díky za čtení.