1. 如何使用 ESP32 获取 ADC 模拟量
由于 K210 没有 ADC 读取模拟量的功能,所以该功能只能从 ESP32 、ESP82XX 等硬件上获取,ADC 最基础的用途就是实现一个可触摸的按键触点。
1.1. 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
'''
1.2. 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
>
1.3. ESP82XX 实现思路
文档对该部分内容不做解释。
通过 AT+SYSADC 查询 ADC 值,在乐鑫的 ESP82XX AT 固件中默认为GPIO12 引脚。
直接读取值即可使用。
|