2017-02-06 43 views
0

我是这个领域的初学者。我开发了一个android应用程序,通过它我可以控制连接到ESP Wi-Fi模块的GPIO引脚的LED。该应用已连接到Firebase以保存按钮的状态。一切正常。ESP手册Android应用程序LED关闭状态更新

现在我想实现如下:

  1. 我想,如果我手动关掉通过移除各LED的GPIO引脚的LED,即状态“灯灭”应我的应用程序更新。
  2. 我要添加风扇速度控制器

对于第一点,我应该用火力吗?

请建议教程和我可以达到的方式。

+0

我的一些设备有一个控制网页api(我只是使用邮递员,没有写一个应用程序),他们报告在网页上和/或Thingspeak。我使用SPIFFS将设置保存在设备上的设备中。 – leetibbett

+0

您的Firebase正在从应用更新,现在您必须点击API(服务器端编码,它将更新您的Firebase),当任何节点从手动流更新时,您必须在您的应用中实施监听器来监听更改。 – Rahul

回答

0

数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#和01024的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的光隔离是这种便宜方法的一个很好的特点。

如果您有一个现有的商用多速风扇(如吊扇或箱式风扇),您可以用继电器替换风扇的开关/旋钮,以模拟人类选择开关位置。您必须对不同选择下的哪条导线进行反向工程“热门”。这是交流电,所以千万小心这样做...

+0

感谢您的回答,但您为我的第一个问题回答了一个问题,我知道我需要添加电阻器并监视LED的状态,但我希望将LED的状态更新到我的Android应用的Firebase帐户。那可能吗? – ra22

+0

您应该可以使用它们的http api和ESP的HTTPClient库来推送来自ESP的数据。如果他们没有简单的API,只需用node.js制作一个简单的API;从ESP到节点以及从节点到Firebase的谈话。 – dandavis

+0

你能发表一个片段吗? – ra22

相关问题