本网页已闲置超过3分钟,按键盘任意键或点击空白处,即可回到网页

基于 ESP8266 的智能按钮专业版

发布时间:2021-12-27
分享到:

基于 ESP8266 的智能按钮专业版

发布时间:2021-12-27
分享到:

我决定开始我的功能项目,有用的物联网设备,一个智能按钮。目标是创建一个可以触发程序操作的无线按钮,例如:

  • 紧急按钮!向亲友发送即时通知、短信、电子邮件。
  • 门铃。按下按钮时,会在手机上收到通知。
  • 医生准备好了。或者其他任何需要在准备好时通知某人的人。
  • 号召性用语:按 -> 通知您的电脑
  • 连接到 Pushbullet 以发送即时通知或触发 IFTTT 操作。
  • 使用 API 连接到 Twitter、Instagram、Facebook、Whatsapp 或任何其他社交媒体。
  • 在世界任何地方打开和关闭灯。
  • 打开任何互联网控制的设备,无论它在哪里。
  • 开门
  • 叫出租车
  • 找到你的手机
  • 晚餐准备好了
  • 请给我打电话
  • 我在这里
  • 等等


当然,这不是一个新想法,因此我已经开始寻找类似的项目。

然后我遇到了来自 Noel Portugal 和其他相关项目的 IFTTT Smart Button 项目,但它们都不是真正“完整的”,要么没有完全工作,要么对我来说不够满意,因此我决定从每个项目中取最好的,建立我自己的增强版。

然后我从 Madhouse那里得到了好主意:

  • 将chipID添加到SSID
  • 添加了 customurl 字段以让您输入并保存另一个 IFTTT 网址
  • customurl 保存在文件中
  • 添加了 URL 解码和解析
  • 删除了 AP 扫描和填充下拉菜单

由于它不适用于原始原理图或更新的原理图(需要按住按钮),我重新从头开始使用原理图和使用GPIO0代替GPIO02到断电模块,并留下了GPIO02和二极管(不明白的作用和necesity)

接着受到了 Peter Jennings 的好主意的启发:

  • 使用 RGB LED 和 GPIO12、GPIO13、GPIO14 来显示状态(红色代表开机,蓝色代表 WiFi 连接,绿色代表成功发送)
  • 最重要的是:使用 LED 按钮来放置按钮

因此,我已经开始为我的按钮准备外壳,使用这个 1$ LED 按钮。

我最喜欢的 ESP 型号是 07 和 12E,因为它们小到可以放在任何地方,集成了天线和足够的 GPIO 来连接 RGB LED 灯和其他灯。

这是原理图

由于我使用的是 NodeMCU,因此了解映射的 GPIO 索引很有用:

我已经将 GPIO12、13 和 14 用于 RGB LED,以便为每个步骤显示不同的颜色。

GPIO0 为模块供电和控制。

GPIO02 供电,GPIO15 接地以启动 ESP。

然后开始编码。这是逻辑:

  • 将 GPIO00 设置为高(链接到 CH_PD) - 按下按钮后保持模块启用
  • 启用RGB LED并点亮红色,进入ON状态
  • 检查文件 customurl.txt 是否存在(已配置)并加载 URL
  • 尝试连接到 Wi-Fi
  • 启动一个计时器,如果10秒内没有设置IP,则关机(这意味着WiFi不可用,因此您可以稍后尝试)
  • 如果你一直按下按钮,删除文件 customurl.txt 并关闭(这样,配置被删除)
  • 如果不存在配置(customurl.txt 不存在),则将 Wi-Fi 模式更改为名称为“SmartButton”的接入点加上唯一的 ChipID
  • 在 IP 192.168.1.1 上启动 Web 服务器和用于输入 SSID 名称、密码和自定义 URL 的表单
  • 提交时,将文件 customurl.txt 保存到内存中,然后重新启动模块。
  • 一旦连接并且 IP 可用,将 LED 从红色更改为蓝色(已连接)
  • 创建 TCP 连接并发送自定义 URL
  • 发送后,LED 颜色从蓝色变为绿色(成功)
  • 等待 3 秒(确认状态)
  • 关闭 LED(所有颜色)
  • 将 GPIO0 设置为低电平,这会将 CH_PD 设置为低电平并且模块被禁用
  • - 启动计时器 3 秒并重置/清除配置设置(这意味着如果模块仍处于开机状态,则意味着该按钮仍被按下,因此您可以重置配置并在接入点模式下重新启动。

由于一切正常,我开始焊接并将所有东西放在一起。

我还保留了串行连接的接线:GND、TX 和 RX,以便我之后可以轻松更新软件(连接要安装在 USB 到串行中)

因此,可以使用您想要的任何消息或图片更改和自定义白皮书。仍然可以在后面看到 LED。

我不得不在按钮顶部添加一块额外的塑料(实际上是从胶枪棒上切下来的)以便于按下。

最后是我定制的:

我还在代码中添加了一个新功能:计算点击次数并将数字存储在文件中。统计很有趣。

我相信我的按钮具有很棒的功能,可以在任何 ESP8266 项目中重复使用,而且我学到了很多东西。

本文中所用到的一些代码

如果您对此项目有任何想法、意见或问题,请在下方留言。

原文链接丨以上内容来源网络,如涉及侵权可联系删除。

加入微信技术交流群

技术交流,职业进阶

关注与非网服务号

获取电子工程师福利

加入电路城 QQ 交流群

与技术大牛交朋友

讨论