根据徐立栋老师的PPT<Let's Do 第三期 DIY一个电子测光表>和视频讲座http://v.eepw.com.cn/video/play/id/16155
以及微信群中的软件高手们的踩坑经验总结,进行ESP32处理器编程环境的安装和调试。
-----------------------------------------------------------------------------
微处理器电路板的调试
1.1 编译环境thonny的安装
通过USB TYPE数据线连接电脑与ESP32-S评估版,这里要注意的是数据线一定要有带数据通讯功能的线,市场上很多USB 线智能充电,不能数据通讯。
按下ESP32-S评估版上的复位按键后,电脑上出现了一个硬盘,将下载的固件文件文件存入该硬盘中,完成安装。
1.2 Circuitpython的安装下载后安装thonny文件,按照视频中的步骤很容易完成安装。
1.3 微处理器电路板的电路
-------------------------------------------------------------------------------------------------
2. 按钮信号的读取
2.1如何将库文件存入lib文件夹?
开始以为程序中的语句: import time import board from digitalio import DigitalInOut, Direction, Pull需要往lib文件夹中放这些库文件,但运行CircuitPython_Digital_In_Out (https://github.com/adafruit/Adafruit_Learning_System_Guides/tree/main/CircuitPython_Essentials/CircuitPython_Digital_In_Out)时,无需找到time, board, digitalio这三个库,程序依然可以正常运行。
后来通过阅读文档《Adafruit ESP32-S3 TFT Feather》,知道这三个库是被集成到处理器的固件中的,无需安装。要知道那些库被集成到固件中,可以在thonny界面的shell窗口输入:help("modules") 便知晓。
2.2 按键的内部原理图如下图所示: 按键的引脚如下图所示:连线图如下图所示,红色按键的线接D1引脚,蓝色按键的线接D2引脚
-------------------------------------------------------------------------------------------------
3. BH1750数字光传感器模块软件的调试
3.1 通过快门速度、光圈确定曝光值参考文献《【超详细公式】曝光值(EV)、光圈(AV)、快门(TV)、感光度(SV)、照度(Lux)》:https://blog.csdn.net/ymzhu385/article/details/140961944?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522d6b4629647dc9b9f34e90575065b5868%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=d6b4629647dc9b9f34e90575065b5868&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-1-140961944-null-null.142^v100^pc_search_result_base2&utm_term=%E5%85%89%E5%9C%88%20%E6%9B%9D%E5%85%89%E6%97%B6%E9%97%B4%20%E5%85%89%E7%85%A7%E5%BA%A6%20LUX%20%E4%B9%8B%E9%97%B4%E7%9A%84%E8%AE%A1%E7%AE%97%E5%85%AC%E5%BC%8F&spm=1018.2226.3001.4187介绍了曝光值EV, 光圈AV, 快门TV,感光度SV和照度LUX之间的关系,对比徐立栋老师的PPT,可理解其log的底应该是2(如下图):程序可通过按钮选择光圈值F(1,1.4,2,2.8,4,5.6, 8, ......., 22, 32)和开门速度(1, 1/2, ),通过右边的公式的到曝光值EV,再通过左边的公式的到光照度值LUX的阈值,当环境光的照度超过LUX阈值后,控制舵机旋转,按动按钮。光圈值F的取值为:1,1.4,2,2.8,4, 5.6,8,11,,16,22,32快门速度T的取值为:1, 1/2, 1/4,1/8,1/16, 1/30,1/60, 1/125,1/250, 1/500, 1/1000曝光值EV的取值为:0,1,2,3,4,5,6,7,8,9,10照度值LUX阈值的取值范围为:2.5, 5,10,20,40,80,160,320,640,1280,2560
3.2 光照度计连线
我所采购的光照度计的型号是BH1750FVI-TR,是4个引脚的I2C接口,检测的照度范围是1-65535LUX,灵敏度峰值波长为560nm, 工作电压,电流为: <5V@143uA. 内部AD转换器精度16bit. 其引脚接口如下图所示: 分别连接SCL, SDA, 5V, GND到微处理器板的SCL, SDA, 3.3V, GND, 如下图所示:
3.3 光照度计示例代码的测试
光照度及BH1750代码的链接为:https://github.com/adafruit/Adafruit_CircuitPython_BH1750下载该例程,解压Adafruit_CircuitPython_BH1750-main
在Thonny编程环境下打开adafruit_bh1750.py和examples目录下的bh1750_simpletest.py两个python文件;
将adafruit_bh1750.py文件另存到This computer X:\bin目录下,将bh1750_simpletest.py文件另存到This computer X盘下, X为ESP32开发板映射到计算机下的硬盘。
运行bh1750_simpletest.py, shell下便显示当前环境光的照度值,用手遮挡照度计的探头,输出的照度由400Lux+降低到40多Lux, 说明输出的为真实的照度值
将输出的照度值与速为科技的光照度计SW6013输出的照度进行比对,bh1750输出的照度为802Lux照度时,SW6013输出的照度值为976Lux. 二者偏差10%左右,这可能是二者探头的位置和角度存在差异造成的。
-----------------------------------------------------------------------------------------------
4. LCD显示屏的调试
按照网页 https://learn.adafruit.com/esp32-s3-reverse-tft-feather/displayio-example 中的步骤,下载display.zip文件,解压后,按照网页的说明,将CircuitPython 9.x文件夹中的所有文件拷贝到CIRCUITPY文件夹,运行code.py, 显示如下:将文件code.py中的text="Hello World" 改为:text = "Hello EEPW!" 如下图显示的界面如下:-------------------------------------------------------------------------------------------
5. WIFI的测试
从https://learn.adafruit.com/esp32-s3-reverse-tft-feather/circuitpython-internet-test下载 CPy_Native_WiFi_Test.zip解压后,拷贝到CIRCUITPY盘中,修改settings.toml文件中的两行,将手机热点的名称和密码输入到文件中,运行code.py文件,执行结果如下:说明微处理器已经通过wifi连上手机的热点。----------------------------------------------------------------------------------------
6. 舵机软件的调试
舵机的参数舵机采用的时DFRobot DF9GMS 360 Degree Micro Servo. 有三根引线引出,分别是电源、地和信号S. 其参数如下: 舵机的例程舵机的例程的链接在https://github.com/adafruit/Adafruit_Learning_System_Guides/tree/main/CircuitPython_Essentials/CircuitPython_Servo该例程使用电路板的A2引脚作为Servo的PWM控制引脚,因此需要将伺服舵机的橘黄色色线连接到A2引脚,如下图所示:将例程servo.py的代码拷入文件夹并运行,显示错误,找不到库文件adafruit_motor. 如下图:网上找了该adafruit_motor库文件,还是没有找到。问了微信群里的朋友,还是没有结果。由于伺服电机不是必选项目,因此先不用着急找这个文件.