None

如何使用 ESP32 获取 ADC 模拟量

由于 K210 没有 ADC 读取模拟量的功能,所以该功能只能从 ESP32 、ESP82XX 等硬件上获取,ADC 最基础的用途就是实现一个可触摸的按键触点。

ESP32 示例代码

# Uasge see readme.md
# from network_esp32 import wifi

import time, network
from Maix import GPIO
from fpioa_manager import fm

class wifi():
    # IO map for ESP32 on Maixduino
    fm.register(25,fm.fpioa.GPIOHS10)#cs
    fm.register(8,fm.fpioa.GPIOHS11)#rst
    fm.register(9,fm.fpioa.GPIOHS12)#rdy
    print("Use Hareware SPI for other maixduino")
    fm.register(28,fm.fpioa.SPI1_D0, force=True)#mosi
    fm.register(26,fm.fpioa.SPI1_D1, force=True)#miso
    fm.register(27,fm.fpioa.SPI1_SCLK, force=True)#sclk
    nic = network.ESP32_SPI(cs=fm.fpioa.GPIOHS10, rst=fm.fpioa.GPIOHS11, rdy=fm.fpioa.GPIOHS12, spi=1)

print("ESP32_SPI firmware version:", wifi.nic.version())

# get ADC0 ADC1 ADC2
adc = wifi.nic.adc((0,1,2))
print(adc)

while True:
    try:
        # get ADC0~5
        adc = wifi.nic.adc()
    except Exception as e:
        print(e)
        continue
    for v in adc:
        print("%04d" %(v), end=" ")
    print(' : adc')

'''
    MicroPython v0.5.1-136-g039f72b6c-dirty on 2020-11-18; Sipeed_M1 with kendryte-k210
    Type "help()" for more information.
    >>>
    raw REPL; CTRL-B to exit
    >OK
    (2370, 3102, 3071)
    2017 2753 0977 2709 0963 0855  : adc
    0617 0757 0150 0095 0133 0153  : adc
    1319 1478 0955 0939 0698 0619  : adc
    2403 3231 3299 3298 1483 0779  : adc
    1119 1815 1274 1315 0230 0255  : adc
    0951 0951 0295 0283 0319 0399  : adc
    2175 2769 2576 2579 1487 1104  : adc
    1995 2846 2647 2699 0839 0441  : adc
'''

OSError: Get version fail

重试就行,通常是 esp32 还未初始化成功。

Traceback (most recent call last):
  File "<stdin>", line 15, in <module>
  File "<stdin>", line 24, in wifi
OSError: Get version fail
>

ESP82XX 实现思路

文档对该部分内容不做解释。

通过 AT+SYSADC 查询 ADC 值,在乐鑫的 ESP82XX AT 固件中默认为GPIO12 引脚。

直接读取值即可使用。