Arduino IDE开发ESP8266-01S连接MQTT服务器 控制继电器点了LED

准备条件:

1、Arduino IDE

2、ESP-01S模块

2、MQTT服务器

3、手机热点或路由器热点

Wi-Fi芯片 默认订阅的主题是  “开关控制”

当你发送主题  “开关控制” 消息 “1”    时LED熄灭

其他消息时 LED都是亮的。

/*
基本的ESP8266 MQTT示例

*/

#include <ESP8266WiFi.h>
#include <PubSubClient.h>

const char* ssid = "XXXXXX";//手机Wi-Fi热点名
const char* password = "XXXXXX";//手机Wi-Fi热点密码
const char* mqtt_server = "192.168.4.1";//服务器地址 可以是域名

WiFiClient espClient;
PubSubClient client(espClient);
long lastMsg = 0;
char msg[50];
int value = 0;
int ledPin = 2; // GPIO2 of ESP8266

void setup_wifi() {
  delay(10);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  randomSeed(micros());
}

void callback(char* topic, byte* payload, unsigned int length) {
  Serial.print("接收消息[");Serial.print(topic);Serial.print("] ");
  for (int i = 0; i < length; i++) {
    Serial.print((char)payload[i]);
  }
  Serial.println();
  if ((char)payload[0] == ‘1‘) {          // 通过接收的信息 ‘1‘ 来控制开或关
    digitalWrite(ledPin, HIGH);
      Serial.println("HIGH");
  } else {
    digitalWrite(ledPin, LOW);
    Serial.println("LOW");
  }
}

void reconnect() {
    String clientId = "ESP-01A-";
    clientId += String(random(0xffff), HEX);
    if (client.connect(clientId.c_str())) {         //连接成功
      client.subscribe("开关控制");
      client.publish("开关控制", "0");     // 连接成功发送主题和消息
    } else {
      delay(5000);                                  // Wait 5 seconds before retrying
    }
}

void setup() {
  pinMode(ledPin, OUTPUT);
  digitalWrite(ledPin, LOW);
  Serial.begin(115200);
  setup_wifi();
  client.setServer(mqtt_server, 1883);
  client.setCallback(callback);
}

void loop() {
  if (!client.connected()) {
    reconnect();
  }
  client.loop();
}

原文地址:https://www.cnblogs.com/easyidea/p/11567275.html

时间: 2024-10-31 09:23:04

Arduino IDE开发ESP8266-01S连接MQTT服务器 控制继电器点了LED的相关文章

Arduino IDE 开发 ESP-01S/ESP-01物联网实战检测温度湿度上传MQTT服务器

一.硬件准备 USB转ESP8266两块.DHT11温度湿度传感器.ESP8266-01/ESP8266-01一块(如果学习的话多买几块,ESP-01/ESP-01S的区别) USB转ESP8266 说明:为什么要买两块 二.软件准备 Arduino.EMQX(这是mqtt服务器可以部署在本地也可以放在远程服务器上).MQTTBox(mqtt客户端程序).如果是Window系统的话 安装相关USB驱动程序. 三.安装EMQX 下面介绍的方法是部署在远程服务器上. MQTT服务器配置方法 四.安装

ESP8266开发之旅 进阶篇② 闲聊Arduino IDE For ESP8266烧录配置

1.前言 ????在学习ESP8266开发的过程中,很多初学开发者很容易出现以下几种问题: 编译代码提示缺少ESP8266WiFi库(原因之一就是选择了非ESP8266板子编译,比如Arduino UNO): ESP8266烧录失败(原因之一就是配置了错误的烧录选项,比如目标板是NodeMcu但是选择了其他板子): ESP8266烧录成功,但是显示串口乱码(原因之一也是配置了错误的烧录选项,配置错误的FlashMode): ????归根到底,就是初学者不理解各个编译选项的含义,很容易选择错误的配

【转载】(一)基于阿里云的MQTT远程控制(Android 连接MQTT服务器,ESP8266连接MQTT服务器实现远程通信控制----简单的连接通信)

如果不了解MQTT的可以看这篇文章  http://www.cnblogs.com/yangfengwu/p/7764667.html http://www.cnblogs.com/yangfengwu/p/8026014.html 关于钱的问题,其实自己是花钱买的云服务,虽然自己现在能支付的起,但是呢为了尽量减少支出,自已还有好多好多文章要写,好多好多元器件要买,所以哈会在自己的淘宝上卖源码2元价格,一元捐出,一元自己留着当亲们支付云服务的费用了 如果看不懂也没关系,跟着做就可以了,做完以后您

(转)使用eclipse Arduino IDE开发 AVR程序

小白写程序都是用eclipse的,所以学习Arduino时自然就想用eclipse,因为俺懒,这样省事.网上找了些帖子看看,感觉开发环境都比较麻烦,这样不符合俺这种懒人的风格,所以我弄了个简单点的. 第一步:下载各种东西1.JDK,这个去oracle官网下就好了(其实百度下载更快)http://download.oracle.com/otn-pub/java/jdk/8u20-b26/jdk-8u20-windows-x64.exe.2.eclipseArduinoIDE,http://ecli

android网络开发之测试机连接到服务器上面

1:本人使用Tomcat作为服务器软件,首先打开Tomcat.(可以在浏览器中输入http://www.127.0.0.1:8080/查看) 2:服务器后台使用Servelt开发,这里不再讲解. 3:打开wifi共享软件,测试机连接到局域网上面(可以在手机浏览器中输入查看).(注:IP地址不是127.0.0.1). Win+R打开命令窗口,并输入ipconfig来查看手机的IP地址. 4.在手机浏览器输入http://192.168.23.1:8080会出现Tomat服务器官网,如下: 5.连接

Arduino IDE for ESP8266教程(二) 创建WIFI AP模式

创建WIFI热点 #include <ESP8266WiFi.h> void setup() { Serial.begin ( 115200 ); Serial.println(""); // 设置内网 IPAddress softLocal(192,168,128,1); // 1 设置内网WIFI IP地址 IPAddress softGateway(192,168,128,1); IPAddress softSubnet(255,255,255,0); WiFi.so

Arduino IDE for ESP8266教程(三)HTTP客户端

整个教程就以上传Yeelink数据点为目的制作一个HTTP客户端. 1获取账号 http://www.cnblogs.com/imfanqi/p/4419915.html 2代码教程 http://www.windworkshop.cn/?p=1217 #include <ESP8266WiFi.h> #include <ESP8266HTTPClient.h> #define UKey "" // Yeelink提供的U-ApiKey String ssid

Arduino IDE for ESP8266教程(四)网页控制灯 简单页面

修改ssid和passwd,将程序烧写到8266上,等待串口返回连接成功的消息,连接成功之后可以看到返回有一个ip地址,使用浏览器方位这个ip地址就可以看到这个消息: 连接路由器后,返回IP地址 192.168.1.104 手机连上同个路由器,输入192.168.1.104,得到(下图为示意图,IP地址更换即可) 这就是handleMain中返回给浏览器的String了. 然后可以访问控制引脚的地址: 分别访问这两个地址可以看到板载的led点亮和熄灭.这个就是绑定了/pin的功能起的作用了.注意

Arduino IDE for ESP8266 项目云盒子 (1)AP直接模式

手机直接连接esp8266辐射的WIFI,通信. #include <ESP8266WiFi.h>   const char *ssid = "Charlie Testing AP"; const char *password = "12345678"; WiFiServer server(80); void setup() {   Serial.begin(115200);   Serial.println();     Serial.print(&q