这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » 过程贴-软件调试篇

共5条 1/1 1 跳转至

过程贴-软件调试篇

菜鸟
2024-11-26 21:21:38     打赏

根据徐立栋老师的PPT<Let's Do 第三期 DIY一个电子测光表>和视频讲座http://v.eepw.com.cn/video/play/id/16155 

以及微信群中的软件高手们的踩坑经验总结,进行ESP32处理器编程环境的安装和调试。

---------------------------------------------------------------------------------------

1. 微处理器电路板的调试

1.1 Circuitpython的安装

  a. 通过USB TYPE数据线连接电脑与ESP32-S评估版,这里要注意的是数据线一定要有带数据通讯

功能的线,市场上很多USB 线智能充电,不能数据通讯。

  b. 按下ESP32-S评估版上的复位按键后,电脑上出现了一个硬盘,将下载的固件文件文件存入该

硬盘中,完成安装。

1.2 编译环境thonny的安装

下载后安装thonny文件,按照视频中的步骤很容易完成安装。

1.3 微处理器电路板的电路

image.png

----------------------------------------------------------------------------------------------

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") 便知晓。见下图:

image.png

按键的内部原理图如下图所示:

image.png

按键的引脚如下图所示:

image.png

连线图如下图所示,红色按键的线接D1引脚,蓝色按键的线接D2引脚

image.png

程序代码为button_led.py, 代码如下:

import time

import board

from digitalio import DigitalInOut, Direction, Pull


led = DigitalInOut(board.LED)

led.direction = Direction.OUTPUT


switch_red = DigitalInOut(board.D1)

switch_red.direction = Direction.INPUT

switch_red.pull = Pull.UP


switch_blue = DigitalInOut(board.D2)

switch_blue.direction = Direction.INPUT

switch_blue.pull = Pull.UP


while True:

    # We could also do "led.value = not switch.value"!

    if switch_blue.value:

        led.value = False

    else:

        led.value = True

    time.sleep(0.01)  # debounce delay


运行代码,效果如下:

a. 松开蓝色按键时,红色LED等灭

image.png

b. 按下蓝色按键后,LED红灯亮

image.png

-----------------------------------------------------------------------------

3. BH1750数字光传感器模块软件的调试

3.1 通过快门速度、光圈确定曝光值

参考CSDN上的文献《【超详细公式】曝光值(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(如下图):

image.png

程序可通过按钮选择光圈值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.

  其引脚接口如下图所示:

image.png

  

  分别连接SCL, SDA, 5V, GND到微处理器板的SCL, SDA, 3.3V, GND, 如下图所示:

image.png

3.3 光照度计示例代码的测试

光照度及BH1750代码的链接为:

https://github.com/adafruit/Adafruit_CircuitPython_BH1750


  1. 下载该例程,解压Adafruit_CircuitPython_BH1750-main

  2. 在Thonny编程环境下打开adafruit_bh1750.py和examples目录下的bh1750_simpletest.py

两个python文件;

  3. 将adafruit_bh1750.py文件另存到This computer X:\bin目录下,将bh1750_simpletest.py

文件另存到This computer X盘下, X为ESP32开发板映射到计算机下的硬盘。

image.png

  4. 运行bh1750_simpletest.py, shell下便显示当前环境光的照度值,用手遮挡照度计的探头,

输出的照度由400Lux+降低到40多Lux, 说明输出的为真实的照度值

image.png

  5. 将输出的照度值与速为科技的光照度计SW6013输出的照度进行比对,bh1750输出的照度为

802Lux照度时,SW6013输出的照度值为976Lux. 二者偏差10%左右,这可能是二者探头的位置

和角度存在差异造成的。

image.png

-----------------------------------------------------------------------------------------------

4. LCD显示屏的调试

按照网页 https://learn.adafruit.com/esp32-s3-reverse-tft-feather/displayio-example 中的

步骤,下载display.zip文件,解压后,按照网页的说明,将CircuitPython 9.x文件夹中的所有文件

拷贝到CIRCUITPY文件夹,运行code.py, 显示如下:

image.png

将文件code.py中的text="Hello World" 改为:text = "Hello EEPW!" 如下图

image.png

显示的界面如下:

image.png


5. WIFI的测试

从https://learn.adafruit.com/esp32-s3-reverse-tft-feather/circuitpython-internet-test 下载

 CPy_Native_WiFi_Test.zip解压后,拷贝到CIRCUITPY盘中,修改settings.toml文件中的两行,

将手机热点的名称和密码输入到文件中,运行code.py文件,执行结果如下:

image.png

说明微处理器已经通过wifi连上手机的热点。








关键词: 过程     软件     调试    

工程师
2024-11-26 21:53:30     打赏
2楼

这个扩展板不错啊


专家
2024-11-26 21:55:39     打赏
3楼

这个扩展板不错


专家
2024-11-27 08:04:42     打赏
4楼

感谢分享


院士
2024-11-27 09:25:16     打赏
5楼

这帖子内容是从哪里拷贝过来的啊


共5条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]