`
hanbaohong
  • 浏览: 405403 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

用ESP8266NodeMCU开发物联应用

阅读更多

因为开发板可能会在不同的WIFI环境中便用,所以不能把Wifi名和密码写入代码,可利用BGWiFiConfig库把开发板设置成AP模式,用手机或电脑连接开发板热点,填写Wifi名和密码,自动写入开发板的FLASH闪存中,即可完成开发板的配网设置。重启开发板,自动连接WIFI、连接MQTT服务器,即可控制物联网设备。

 

另外,下面的代码,利用开发板上FLASH按钮D3,可清除配网信息,重启开发板后,进行配网模式AP。

 

#include <BGWiFiConfig.h>
#include <PubSubClient.h>
BGWiFiConfig wifipw;

const char* mqttServer = "test.ranye-iot.net"; // 免费MQTT服务器地址

WiFiClient wifiClient;
PubSubClient mqttClient(wifiClient);

void setup(){
   Serial.begin(115200);
   pinMode(D4, OUTPUT);     // LED灯,也可用LED_BUILTIN
   pinMode(D3, INPUT);      // 设置板载的FLASH按钮为输入模式
   
   mblink(D4,500);
   wifipw.begin();   //开始联网

   // 设置MQTT服务器和端口号
   mqttClient.setServer(mqttServer, 1883);
   mqttClient.setCallback(receiveCallback);
}

void loop() {
  wifipw.Loop();
  if (!digitalRead(D3)){
    mblink(D4,100);
    Serial.println("开始清除配网信息...");
    wifipw.clearWiFi();
    Serial.println("配网信息清除成功,请重启开发板!");
    mblink(D4,100);
    delay(3000);
  }
  
  if (mqttClient.connected()) {
    // 保持客户端心跳
    mqttClient.loop();          
  } else {
    // 尝试连接服务器
    connectMQTTServer();
  }
}

void connectMQTTServer(){
  // 避免与其它ESP8266设备重名 需要修改-----------
  String clientId = "connect_all_esp8266_mqtt_led_client" + WiFi.macAddress();
  // 连接MQTT服务器
  if (mqttClient.connect(clientId.c_str())) { 
    Serial.println("MQTT服务器连接成功!");
    Serial.println();
    // 订阅指定主题
    subscribeTopic();
  } else {
    Serial.print("MQTT服务器连接失败. Client State:");
    Serial.println(mqttClient.state());
    delay(3000);
  }   
}

// 收到信息
void receiveCallback(char* topic, byte* payload, unsigned int length) {
  Serial.print("Message Received [");
  Serial.print(topic);
  Serial.print("] ");
  
  if ((char)payload[0] == '1') {
    digitalWrite(D4, LOW);  // 则点亮LED。
    Serial.println("LED ON");
  } else if ((char)payload[0] == '0') {                           
    digitalWrite(D4, HIGH); // 否则熄灭LED。
    Serial.println("LED OFF");
  }else {
    Serial.println((char)payload[0]);
  }
}

// 订阅指定主题
void subscribeTopic(){
  // topicString与前端代码中发送topic一致 需要修改---------------
  String topicString = "connect_all_esp8266_mqtt_led_topic";
  char subTopic[topicString.length() + 1];  
  strcpy(subTopic, topicString.c_str());
  
  // 通过串口监视器输出是否成功订阅主题以及订阅的主题名称
  if(mqttClient.subscribe(subTopic)){
    Serial.println("Subscrib Topic:");
    Serial.println(subTopic);
  } else {
    Serial.print("Subscribe Fail...");
  }  
}

void mblink(int pin,int shijian) {
  int i;
  for (i = 0; i <= 3; i++) {
    digitalWrite(pin, HIGH);
    delay(shijian);
    digitalWrite(pin, LOW);
    delay(shijian);
  }
}

 

相关资料分享:https://pan.baidu.com/s/1J18qAifp53qLXUrqbof4dg?pwd=r75t 

 

免费的在线 MQTT服务器介绍https://www.emqx.com/zh/mqtt/public-mqtt5-broker

接入信息如下:

Broker:broker-cn.emqx.io

TCP 端口:1883

Websocket 端口:8083

TCP/TLS 端口:8883

Websocket/TLS 端口:8084

CA 证书文件:broker.emqx.io-ca.crt

 

分享到:
评论

相关推荐

    ESP8266Nodemcu原理图.pdf

    ESP8266 NodeMCU 的设计使得开发者能够轻松地利用其强大的无线连接和处理能力,构建各种 IoT 应用,如智能家居、远程传感器监控等。通过了解原理图,开发者可以更好地理解硬件工作方式,从而更有效地利用 ESP8266 ...

    ESP8266 Nodemcu V3-340原理图.pdf

    ESP8266 Nodemcu V3-340是一款基于ESP8266 Wi-Fi芯片的开发板,广泛应用于物联网(IoT)项目中。它集成了微控制器和Wi-Fi功能,使得开发者能够快速构建连接互联网的应用程序。本章节将详细介绍该开发板的原理图及相关...

    esp8266 NodeMcu chm中文说明书

    中文版资料详细介绍从固件烧写,NODEMCU开发的接口API,Node,file,wifi,timer,GPIO,PWM,net模块,lua 开发说明,目前最全面的NODEMCU技术宝典!

    ESP8266NodeMCU固件源码.7z

    ESP8266NodeMCU固件源码 NodeMCU,是一个开源的物联网平台。 它使用Lua脚本语言编程。该平台基于eLua开源项目,底层使用ESP8266 sdk 0.9.5版本。该平台使用了很多开源项目, 例如 lua-cjson, spiffs. NodeMCU包含了...

    NodeMCU-ESP8266原理图.pdf

    NodeMCU-ESP8266是一款基于ESP8266芯片的开源物联网开发平台,广泛应用于智能家居、工业自动化等领域。该原理图详细展示了NodeMCU-ESP8266的核心电路设计与外围接口连接方式,对于理解和优化硬件结构具有重要意义。 ...

    esp8266nodemcu+blynk程序源码.zip

    《ESP8266 NodeMCU与Blynk平台整合实现物联网应用》 在当今的物联网(IoT)世界中,ESP8266 NodeMCU因其强大的功能和低廉的价格,已经成为众多DIY爱好者和开发者青睐的微控制器之一。本项目以"esp8266nodemcu+blynk...

    esp8266-NodeMCU-API中文说明

    NodeMCU是基于ESP8266的开源项目,它提供了基于Lua的脚本语言环境,使得开发者可以快速进行原型设计和应用开发。这个"esp8266-NodeMCU-API中文说明"文档,对于那些英语不是第一语言或对英文文档理解困难的开发者来说...

    ESP8266最新nodemcu固件

    ESP8266最新nodemcu固件,生产日期2021-07-20-16-03-31,含Adc模块

    ESP8266 Nodemcu lua固件20170209

    ESP8266 Nodemcu lua固件包含模块adc, enduser_setup, file, gpio, http, i2c, net, node, pwm, spi, tmr, u8g, uart, websocket, wifi

    ESP8266 nodemcu主要模块固件

    ESP8266 nodmcu 固件,包含的模块有: adc, dht, ds18b20, file, gpio, net, node, sjson, tmr, uart, wifi。有整数版和浮点数版两种。

    ESP12(ESP8266)Wi-Fi 模块NodeMCU DEVKIT开发板altium设计硬件原理图+PCB文件.zip

    ESP12(ESP8266)Wi-Fi 模块NodeMCU DEVKIT开发板altium设计硬件原理图+PCB文件,硬件采用2层板设计,大小为25*48mm,包括AD设计的完整原理图及PCB文件,可供学校及开发设计参考。 硬件主要器件: CP2102 CP2102 ESP_...

    一键生成ESP8266 Nodemcu固件虚拟机默认开启SmartConfig

    分享虚拟机,可以一键构建Nodemcu lua固件,只需要两步就可以生成固件,固件默认是现在nodemcu-firmware 3.0-master_20190907 教程链接:https://blog.csdn.net/u011993802/article/details/105623137

    使用ESP8266/NodeMCU控制TB6600驱动57步进电机

    MCU:NodeMCU/ ESP-12F/ESP-12E (ESP8266EX) 通过COM口输入命令,控制TB6600,调节步进电机的正转、反转和停转; 内含TB6600与电机接线的DOC文档,完整的VS代码和工程,也可以直接用Arduino IDE打开ino文件。 /* ...

    ESP8266-01S NodeMCU开发(含开发工具和源代码)

    在本教程中,我们将深入探讨ESP8266-01S NodeMCU的开发过程,包括所需的开发工具、固件安装以及应用实例。 首先,"ESP8266-天猫精灵.rar"可能是一个关于如何将ESP8266与阿里巴巴的智能音箱天猫精灵进行集成的教程。...

    nodemcu下载工具ESP8266Flasher.zip

    其中,NodeMCU是基于ESP8266的开源固件,提供了丰富的API和Lua脚本环境,方便用户快速开发物联网应用。然而,在实际操作中,我们需要将固件烧录到ESP8266芯片上,这时就需要借助如“nodemcu-flasher”这样的工具。...

    NodeMCU Arduino esp8266开发板程序直接安装包

    NodeMCU基于乐鑫的ESP8266芯片,提供了一种易于编程和扩展的环境,尤其适合于智能家居、远程控制等应用。在本文中,我们将详细探讨如何使用NodeMCU Arduino开发板以及如何更方便地安装和下载程序。 首先,NodeMCU并...

    Esp8266(NodeMCU)物联网芯片的基本简介

    Esp8266(NodeMCU)是一款集成了Wifi功能的MCU开发板,可以直接连接wifi,开发环境多元化,也是表较受欢迎的物联网芯片。 首先来张实物图: 原创文章 16获赞 7访问量 323 关注 私信 展开阅读全文 作者:青烨慕容

    ESP8266NodeMCU 米思奇软件教程画面.docx

    米思奇软件在本上下文中未给出具体定义,但根据常见的物联网项目开发工具推测,此处可能指的是用于ESP8266/NodeMCU编程和调试的集成开发环境(IDE)或相关工具。例如,Arduino IDE是广泛应用于ESP8266开发的一款软件...

    NodeMCU-ESP8266开发(VSCODE+PlatformIO+Arduino框架):第一篇--工程模版的建立-template

    本文将详细介绍如何使用Visual Studio Code (VSCODE)集成开发环境,配合PlatformIO插件,以及Arduino框架,来构建一个NodeMCU-ESP8266的开发工程模板。 首先,我们要理解`template`这个压缩包文件的作用。它通常...

    Flash-ESP8266-NodeMCU-master_html5_nodemcu_esp8266_

    标题“Flash-ESP8266-NodeMCU-master_html5_nodemcu_esp8266_”表明这是一个关于使用HTML5技术与ESP8266上的NodeMCU固件进行交互的项目。这个项目的重点是将ESP8266开发板(通常配备NodeMCU固件)与基于Web的HTML5...

Global site tag (gtag.js) - Google Analytics