步骤1:硬件。
该设计采用以下硬件:
一,WiFi套件32.
三个,3/8“金属孔塞。
三,四“长度的28awg电线。
为了组装硬件,我执行了以下步骤:
剥离并镀锡每根4“线长的末端,如图所示。
将第一根导线焊接到ESP32的针脚13(TOUCH4,或”T4“,输入)。/li》
将第二根导线焊接到ESP32的第12针(TOUCH5,或“T5”,输入)。
将第三根导线焊接到ESP32的第14针(TOUCH6,或“T6”输入)。
将三个3/8“金属孔塞中的每一个焊接到三根线长度的自由端。
步骤2:软件。
文件“Buttons.ino”是一个包含设计软件的Arduino环境文件。除此文件外,您还需要WiFi Kit32 OLED显示屏的“U8g2lib”图形库(有关此库的更多信息,请参阅https://github.com/olikraus/u8g2/wiki)。
在Arduino目录中安装U8g2lib图形库,并将“Buttons.ino”加载到Arduino环境中,编译并将软件下载到ESP32中。
下载并运行后,顶部的显示屏应显示“按钮”,显示屏的第二行显示“1 2 3”作为按钮指示。在每个1,2,3按钮指示器下方是未经过滤的触摸读取值,并且在每个按钮指示器下方是按钮按下指示器(按下“1”,未按下“0”)。从视频中可以看出(并且经过长期测试确认),软件过滤器提供可靠的按钮输入检测,没有错误触发。
步骤3:关于软件。
该软件包含三个主要代码部分; Arduino需要“setup()”和“loop()”部分,以及“Interrupts”部分。 setup()部分包含初始化OLED和中断服务所需的代码。 OLED设置功能在上面的链接中描述。中断服务设置功能如下:
“timerLoopSemaphore = xSemaphoreCreateBinary()”为“InterruptService()”(中断服务程序)创建一个信号量,以便在时间结束时通知loop()执行循环传递。
“timerInterruptService = timerBegin(0,80,true)”使用预定义为80的硬件定时器0创建一个定时器。
“timerAttachInterrupt(timerInterruptService,&InterruptService,true)”将InterruptService()附加到计时器。
“timerAlarmWrite(timerInterruptService,1000,true)”将中断服务速率设置为1000hz。
“timerAlarmEnable(timerInterruptService)”启动计时器警报,从而中断服务。
设置完成后,进入loop()并立即停在该行:
if(xSemaphoreTake(timerLoopSemaphore,portMAX_DELAY)== pdTRUE),
意味着loop()将在此时等待,直到来自InterruptService()的信号量到达。当信号量到达时,loop()代码执行,用按钮数据更新OLED显示,然后返回到顶部再次等待下一个信号量。 InterruptService()以1000hz运行且LOOP_DELAY值为30,loop()每30ms执行一次,或以33.333hz的显示更新速率执行。虽然这是大多数ESP32应用程序所需的更高的显示刷新率,但我使用此设置来说明过滤器的响应性。我测试并确定执行单个循环()传递所需的时间为20ms。
InterruptService()由setup()中创建的计时器以1000hz的速率调用。调用时,它会更新两个向下计数器,nLoopDelay和nButtonDelay。当nLoopDelay向下计数到零时,它发送信号量,允许loop()执行单次传递,然后重置nLoopDelay。当nButtonDelay向下计数到零时,它也会被重置,然后按钮“过滤”执行。
每个按钮过滤器都有一个唯一的过滤器计数器(例如nButton1Count,nButton2Count和nButton3Count)。只要分配给按钮的触摸输入值大于或等于定义的阈值(BUTTON_THRESHHOLD),分配给按钮和按钮的过滤器计数器保持为零。如果分配给按钮的触摸输入值小于定义的阈值,则分配给按钮的过滤器计数器每20ms递增一次。当过滤器计数器超过按钮过滤器值(BUTTON_FILTER)时,该按钮被视为“按下”。此方法的效果是创建一个过滤器,需要80ms(nmsutDelay * 4ms nButtonCountN,其中N是按钮数),连续触摸输入值低于定义的阈值,以考虑实际按下的按钮。任何小于80毫秒的时间都被视为“故障”并被过滤器拒绝。
鉴于此简要说明,如果您有任何疑问,请随时提出,我会尽力回答。
希望你喜欢它!
第4步:“即将推出的项目”。
即将推出的项目“Intelligrill®Pro”是一款双温度探头吸烟器监测仪,具有以下特点:
Steinhart-Hart温度探头计算(与“查找”表相对)增加准确性。
探针1的预测完成时间,包括Steinhart-Hart计算得出的提高的准确度。
第二个探头,探头2,用于监测吸烟者的温度(限制在32到399度之间)。
基于WIFI的远程监控(使用固定的IP地址,可以在任何可以连接互联网的地方监控吸烟者的进度)。
扩展温度范围(再次为32至399度)。
在Intelligrill®发射器和大多数支持WiFi的监控设备上发出声音完成警报。
温度显示为°F或°C。
时间格式为HH:MM:SS或HH:MM。
电池显示为伏特或%充电。
即将推出基于螺旋钻的吸烟者的PID输出。
“Intelligrill®Pro”正在测试成为最准确,功能最强大且基于HTML的Intelligrill®我已经设计好了。
它仍然在测试中,但是在测试过程中它正在协助准备,我已经获得了超过几磅。
再次,我希望你喜欢它!
步骤5:下一个:ESP32 NTP温度探头模拟输入与Steinhart-Hart校正
Be准备为你的代数书除尘。
-
触摸
+关注
关注
7文章
198浏览量
64214 -
ESP32
+关注
关注
18文章
971浏览量
17218
发布评论请先 登录
相关推荐
评论