0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

ESP8266-12E和Arduino入门

454398 来源:网络整理 作者:网络整理 2020-01-31 17:53 次阅读

对于任何物联网DIY)DIY项目来说,Wi-Fi都是必不可少的工具包,但是我们最喜欢的Arduino并未随附Wi-Fi,并且添加Wi-Fi防护罩可以带来总费用约为40美元。如果我告诉您有一个兼容Arduino的开发板,且内置Wi-Fi的价格不到10美元怎么办?嗯,有。

遇到了Arduino杀手:: ESP8266。将皇冠从我们亲爱的Arduino开发板的光亮的头上偷走只是时间问题。

除了俗称的ESP8266(也称为NodeMCU),最初是作为Arduino板的低成本Wi-Fi附加件销售的,直到黑客社区意识到您可以完全摆脱Arduino的困扰。

在不到一年的时间里,ESP8266迅速普及,并且得到了如此良好的支持和开发,如果您当前使用的是Arduino,您需要站起来记笔记。立即购买,然后按照本指南开始进行ESP8266编程-全部从熟悉的Arduino IDE中进行。

您当然不限于使用Arduino IDE,它们与兼容Lua也是如此(对我的新手来说,这看起来像是精简的Python),但是由于我们是从那些已经在Arduino上学到的人的角度解决这个问题的,所以今天我们将专门介绍它。

现在有很多ESP8266型号,但我将继续推荐该型号:ESP-12E(也称为NodeMCU 1.0,或者它的最新同级NodeMCU 2.0)。

它是比其他芯片贵一些(6.50美元比4美元!),但包括对芯片进行编程所需的串行驱动器,并具有内置的电源调节器以及许多IO引脚。它得到了广泛的支持,除了USB连接以外,实际上不需要任何其他程序来编程或供电,因此使用起来最简单。如果您购买任何其他种类的ESP8266开发板,则可能需要单独的3.3v电源调节器和合适的FTDI连接进行编程。

ESP8266-12E和Arduino入门

首先,为该开发板安装串行驱动程序。如果由于新的安全系统而在运行El Capitan,则可能需要禁用KEXT签名。

下一步,我们需要从Arduino IDE的开发板上启用对ESP8266的支持经理。打开“偏好设置”,然后输入以下URL,其中显示 Additional Board Manager URL :

ESP8266-12E和Arduino入门

点击确定,然后打开从工具-》主板菜单中的 Boards Manager ,搜索esp8266并安装平台。现在,您应该可以看到NodeMCU 1.0的选择。

保留CPU和上载速度,然后选择新安装的串行端口。在Mac上,它显示为 cu.SLAB_USBtoUART

作为第一个程序,我建议使用简单的Wi-Fi扫描器-从文件-》示例中找到它-》 ESP8266WiFi-》 WifiScan 。请注意,上传速度很慢,但最终会说“完成上传”,此时(不是以前,否则您将中断上传过程),您可以打开串行监视器。您应该看到类似以下内容:

成功!现在,让我们尝试连接一个。

这是用于连接到Wi-Fi网络的绝对简单的准系统代码。它不仅可以连接,还可以做其他任何事情,但是您可以稍后再添加。只需记住将YOUR_SSID和YOUR_PASSWORD更改为您的Wi-Fi详细信息即可。上传,打开串行控制台,您应该会看到它已连接。

#include

const char* ssid = “YOUR_SSID”;

const char* password = “YOUR_PASSWORD”;

WiFiClient wifiClient;

void setup() {

Serial.begin(115200);

Serial.print(“Connecting to ”);

Serial.println(ssid);

WiFi.begin(ssid, password);

while (WiFi.status() != WL_CONNECTED) {

delay(500);

Serial.print(“。”);

}

Serial.println(“”);

Serial.println(“WiFi connected”);

Serial.println(“IP address: ”);

Serial.println(WiFi.localIP());

}

void loop() {

}

难道这是如此简单吗?

在我们携带之前上面是引脚图-稍后可能会派上用场。请注意,代码中提到的引脚号是GPIO号,而不是可能写在板PCB上的D0-16。如果绝对不能肯定地确定传感器不起作用的原因,那么您可能已经混淆了引脚号。

快速智能家居传感器使用MQTT和DHT11

这是一个实际示例,您可以立即使用它来监视您的房屋。我们将添加DHT11温度和湿度传感器,然后使用MQTT协议通过Wi-Fi网络报告这些值,在我的情况下,该报告将报告给OpenHAB DIY家庭自动化系统(如果没有,您可能需要阅读我们的初学者指南使OpenHAB在Raspberry Pi上启动并运行,以及第2部分,专门讨论安装MQTT服务器。

在接线侧,将DHT传感器连接到 GND , 3.3v 和〜D4 (或GPIO 2)。这就是我们现在所需要的。

下载这些MQTT和DHT库。 即使您已经拥有了它们,也仍然可以下载这些文件,备份所拥有的文件并用它们覆盖。Adafruit的最新DHT11库使用自动算法来确定从数据库中读取数据的速度。传感器,但是它在ESP8266上存在故障,并且90%的时间导致读取失败。

使用下载中包含的旧版库1.0,您可以手动更改计时:11种方法最适合这些ESP2866开发板。我还遍历了MQTT库的许多副本,试图找到一个好的 callback 函数,最后找到了其中的一个。替换掉它们后,您需要重新启动Arduino IDE。

这是项目的完整代码。顶部是您需要更改的所有变量,包括Wi-Fi详细信息,MQTT服务器(虽然没有身份验证,但如果使用云服务器,则可以使用URL代替URL,)以及发布数据的渠道。

这是它的工作方式和一些注意事项:

首先我们连接到Wi-Fi,然后连接到MQTT服务器,然后开始主循环()。

在循环中,我们每60秒轮询DHT传感器并将读数发布到相关的MQTT通道。同样,如果您发现大多数读数都导致失败消息,则说明DHT库的版本错误–降级至v1.0。

client.loop()将控制权传递给MQTT库,使其能够对传入消息做出反应。

我们有一个 messageReceived()函数用于处理传入消息–只需执行简单的if语句来比较有效载荷以及您期望的消息。例如,您可以使用它来激活继电器。

运行了几天后,我发现它们会随机停止工作–我认为这是某种内存泄漏,但是鉴于我没有我没有编码技能来解决这个问题,而且可能与核心库有关,所以我每天都选择asimple软复位。传感器节点首次激活后的正好一天,它们将自行重启。

从3.3v为这些廉价DHT11模块供电时,湿度值远远低于其应有的水平。我已经通过简单的乘法解决了这一问题,并针对商用传感器进行了校准。我建议您在阅读之前,也请先根据自己的已知来源进行确认。或者,用5V为它们供电–但是您必须在数据引脚和ESP8266之间放置一个5v-3.3v逻辑电平转换器,否则会损坏它。。

如果一切顺利,您现在应该在MQTT代理中接收传感器读数,并且可以按照我们的初学者指南第2部分中的详细说明将它们连接到OpenHAB,在这里我还向您展示了如何绘制数据图。

告别Arduino,我们如此爱你。只是开个玩笑:我家的每个地方甚至都没有Wi-Fi,因此对于那些地点,我仍然需要带有Arduino和RF接收器的网状网络。

要进行有趣的项目,请查看如何制作一个ESP8266的Wi-Fi按钮。

责任编辑:wv

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Arduino
    +关注

    关注

    185

    文章

    6434

    浏览量

    185100
  • ESP8266
    +关注

    关注

    50

    文章

    950

    浏览量

    44092
收藏 人收藏

    评论

    相关推荐

    esp8266microPython如何调用Arduino库?

    esp8266microPython如何简单的调用Arduino库,本人C++不是太熟练,想把ATmega328p的一个LCD屏驱动移植到esp8266 microPython 上,不知如何实现
    发表于 10-30 07:42

    nodemcu和esp8266是什么关系?

    是芯片在esp8266芯片加上4MB spi flash变成esp-12模块;再在esp-12模块加上底板,加上USB转串口就变成NodeMCU。 百科给出的解释是,NodeMCU,是一个开源的物联网平台。 它使用Lua脚本语言
    的头像 发表于 10-20 14:53 2572次阅读
    nodemcu和<b class='flag-5'>esp8266</b>是什么关系?

    带有Blynk和IR的Arduino ESP8266控制继电器

    电子发烧友网站提供《带有Blynk和IR的Arduino ESP8266控制继电器.zip》资料免费下载
    发表于 06-30 10:31 0次下载
    带有Blynk和IR的<b class='flag-5'>Arduino</b> <b class='flag-5'>ESP8266</b>控制继电器

    如何使用Arduino IDE编程ESP8266-12E

    电子发烧友网站提供《如何使用Arduino IDE编程ESP8266-12E.zip》资料免费下载
    发表于 06-27 11:39 0次下载
    如何使用<b class='flag-5'>Arduino</b> IDE编程<b class='flag-5'>ESP8266-12E</b>

    使用FTDI电缆使用ArduinoESP8266 ESP-12E进行编程

    电子发烧友网站提供《使用FTDI电缆使用ArduinoESP8266 ESP-12E进行编程.zip》资料免费下载
    发表于 06-19 15:16 0次下载
    使用FTDI电缆使用<b class='flag-5'>Arduino</b>对<b class='flag-5'>ESP8266</b> <b class='flag-5'>ESP-12</b>E进行编程

    ESP8266 WEB配网 掉电记忆

    之前有使用W600实现该功能,但现在考虑到使用的方便性,遂决定使用 Arduinoesp8266来实现
    的头像 发表于 06-14 10:47 960次阅读
    <b class='flag-5'>ESP8266</b> WEB配网 掉电记忆

    求助,如何刷入ESP

    ESP-world 很陌生。 我以前成功使用过 NodeMCU,它有一个很好的 USB 连接器,但我正在努力设置 ESP8266-12E。 我将 Arduino 1.8.10 与通用
    发表于 06-07 08:27

    esp-12s是如何闪光的?

    我是 esp8266 的新手,我试着刷一个 esp-12S。 我有一个带有 esp-12e 的 nodemcuv3: 我已经破解了这个板,以便在我的 ESP12-S 上上传一个
    发表于 06-06 10:22

    ESP8266连接到了Arduino Mega,ESP8266蓝色LED不亮无反应怎么解决?

    我将我的 ESP8266 连接到了 Arduino Mega。连接是: ESP8266 | Arduino Mega TX --> RX(引脚 19) RX --> TX
    发表于 06-02 07:17

    ESP8266初次如何实现无线通信(基于电脑与ESP8266)

    一.需要的软件及硬件 1.软件 2.硬件 二.ESP8266的使用 .ESP8266的介绍 2.ESP8266进行初始AT指令的配置步骤 三.所用软件安装分享 ESP8266
    发表于 05-30 09:53 20次下载
    <b class='flag-5'>ESP8266</b>初次如何实现无线通信(基于电脑与<b class='flag-5'>ESP8266</b>)

    无法编程或闪存ESP8266怎么解决?

    大家好, 我已经开始使用带有 NodeMCU 的 ESP8266。现在我切换到单个 ESP8266 E12 模块。 我现在的问题是,我无法在芯片上写入数据。我使用“CP2102”模块作为 USB 到
    发表于 05-30 07:07

    如何检查我的ESP8266-12E是否正常工作?

    我有 Hysiry 的 ESP8266-12E 谁能告诉我如何测试它是否有效?
    发表于 05-29 08:01

    求分享ArduinoESP8266-12E的连接图和Arduino发送号码到网页的代码?

    我想将我的 Arduino uno 与 ESP8266-12E 连接,以将数字从 Arduino uno 发送到网页。 谁能给我ArduinoES
    发表于 05-29 07:00

    使用esp8266制作PCB它不起作用的原因?

    使用 esp8266 制作 PCB 它不起作用它在更新后给我重置原因 3 firebase 上的代码 我检查了 esp8266-12E 所需的连接,发现我们需要五个电阻才能正常工作 上 拉电阻到 GPIO0
    发表于 05-25 09:03

    esp8266触摸arduino上的一个按钮,点亮一个LED距离,它将连接到另一个没有arduinoesp8266可能吗?

    大家好!我想用esp8266触摸arduino上的一个按钮,点亮一个LED距离,它将连接到另一个没有arduinoesp8266。这可能吗?
    发表于 05-23 07:44