我是这个领域的初学者。我开发了一个android应用程序,通过它我可以控制连接到ESP Wi-Fi模块的GPIO引脚的LED。该应用已连接到Firebase以保存按钮的状态。一切正常。ESP手册Android应用程序LED关闭状态更新
现在我想实现如下:
- 我想,如果我手动关掉通过移除各LED的GPIO引脚的LED,即状态“灯灭”应我的应用程序更新。
- 我要添加风扇速度控制器
对于第一点,我应该用火力吗?
请建议教程和我可以达到的方式。
我是这个领域的初学者。我开发了一个android应用程序,通过它我可以控制连接到ESP Wi-Fi模块的GPIO引脚的LED。该应用已连接到Firebase以保存按钮的状态。一切正常。ESP手册Android应用程序LED关闭状态更新
现在我想实现如下:
对于第一点,我应该用火力吗?
请建议教程和我可以达到的方式。
数1:
上ESP8266
您无法读取,当你在飞行中改变pinMode
写相同的引脚无闪烁的灯光下看书数字输出状态。最简单的方法是连接另一个GPIO作为LED的阴极,并将该引脚的pinMode
设置为INPUT
。那么您可以通过digitalRead来确定LED是否存在和(1
)或不存在(0
)。
虽然这只适用于红色低功率LED,因为GPIO只能正式处理12ma。您可能想要使用NPN晶体管之类的器件来传输VCC,在这种情况下,您可以通过5-10k电阻将LED输入引脚连接至LED阳极,并将LED阴极连接至GND。
就推动更新状态而言,您可以每隔几百毫秒轮询一次,检查每个读取值与最后一个值是否相同,并在发现时将更改发送到sparkfun。将状态存储在全局中并与读取进行比较。
您也可以使用中断而不是轮询。这些性能更高且更复杂,因此对于LED状态等非常低频率的事件,轮询足够了,可以说从头开始编码更容易。尽管最终研究了中断,但它们在单线程设备上功能强大。
数2:
控制风扇转速与ESP8266
你需要一个PWM电路来控制直流电机的风扇转速。有许多相对简单的电路使用mosfet非常快速地连接和断开风扇接地,从而将其使用的功率平均为最大功率的比率。该比率是使用analogWrite
使用pin#和0
到1024
的int设置的。
请注意,如果写入值小于350,则风扇可能不会旋转;在这些低值时没有足够的电压。另外,我建议使用analogWriteFreq(16000);
的setup()
将PWM频率提升到超音速水平以避免风扇噪音。如果你能得到一个12v直流4线PC散热风扇,你实际上可以将pwm输入线连接到控制GPIO,而不必连接任何电路。
如果你的风扇运行在交流电上,它会变得更加复杂和危险。最简单的电路使用IGBT晶体管来实现交流信号的“PWM”,但如果您管理自己的交叉时序,则双向三端双向可控硅开关和随机交叉固态继电器可以很好地工作。确保你也处理电机阻抗。复杂?你打赌。
我发现修改现有的廉价风扇控制器如this one,拆除大电位器并替换为LDR更加经济和便宜。电位器用作可变电阻器,而不是分压器,因此很容易模仿。然后,您可以将LED带到LDR,将LED挂接到GPIO输出,然后使用analogWrite()
来控制AC输出。尝试使用LED电阻值来最大限度地提高精度和线性度,但对于风扇,即使只有三个可用的水平也是一个改进。从ESP到main的光隔离是这种便宜方法的一个很好的特点。
如果您有一个现有的商用多速风扇(如吊扇或箱式风扇),您可以用继电器替换风扇的开关/旋钮,以模拟人类选择开关位置。您必须对不同选择下的哪条导线进行反向工程“热门”。这是交流电,所以千万小心这样做...
我的一些设备有一个控制网页api(我只是使用邮递员,没有写一个应用程序),他们报告在网页上和/或Thingspeak。我使用SPIFFS将设置保存在设备上的设备中。 – leetibbett
您的Firebase正在从应用更新,现在您必须点击API(服务器端编码,它将更新您的Firebase),当任何节点从手动流更新时,您必须在您的应用中实施监听器来监听更改。 – Rahul