一,MQTT协议

1、MQTT协议可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。

2、使用发布/订阅消息模式,提供一对多的消息发布,解除应用程序耦合。
对负载内容屏蔽的消息传输。
使用 TCP/IP 提供网络连接。

3、实现MQTT协议需要客户端和服务器端通讯完成,在通讯过程中,MQTT协议中有三种身份:发布者(Publish)、代理(Broker)(服务器)、订阅者(Subscribe)。其中,消息的发布者和订阅者都是客户端,消息代理是服务器,消息发布者可以同时是订阅者。
4、MQTT传输的消息分为:主题(Topic)和负载(payload)两部分:
(1)Topic,可以理解为消息的类型,订阅者订阅(Subscribe)后,就会收到该主题的消息内容(payload)。
(2)payload,可以理解为消息的内容,是指订阅者具体要使用的内容。

二、以ESP8266为例子,利用wifi控制led开关灯

1、下载好arduino与建好开发环境,下载mqttx软件

arduino网盘链接:https://pan.baidu.com/s/17JssunSXxiyJYVaCRy7Mng
提取码:qtzs
mqttx软件链接:https://pan.baidu.com/s/10OlkgaQaYIwpxcIj4abD-w
提取码:qtzs

2、确保灯是正常的:通过上传以下代码,若灯亮起则没问题。

int relayInput =LED_BUILTIN;     //D4
int led= 4;                      //定义引脚编码void setup(){pinMode(relayInput,OUTPUT);    //初始化引脚,是一个库pinMode(led,OUTPUT);           //设置了引脚的输出模式
}void loop(){digitalWrite(relayInput,LOW);  //不断重复运行
}

3、通过输出on/off来控制灯的开关

(1)上传代码

#include <ESP8266WiFi.h>
#include <PubSubClient.h>// GPIO 5 D1
//#define LED 2
uint8_t LED = 2;
//这里使用 WiFi热点,简便即打开手机热点
const char *ssid = "111"; // Enter your WiFi name(wifi名称)
const char *password = "12345678";  // Enter WiFi password(wifi密码)// MQTT Broker(连接MQTT代理)
const char *mqtt_broker = "broker.emqx.io";//1.代理名称,与MTQQX中创建的名称相同
const char *topic = "esp8266/led";//2.主题名称,与MTQQX中创建的名称相同
const char *mqtt_username = "emqx";
const char *mqtt_password = "public";
const int mqtt_port = 1883;//3.与MTQQX中创建的名称相同
//这里三项都使用了MTQQ的默认代理WiFiClient espClient;
PubSubClient client(espClient);void setup() {// 设置波特率;Serial.begin(115200);//配置引脚pinMode(LED, OUTPUT);digitalWrite(LED, HIGH);// 连接wifi网络WiFi.begin(ssid, password);while (WiFi.status() != WL_CONNECTED) {delay(500);Serial.println("Connecting to WiFi..");//窗口监视器显示wifi连接中}Serial.println("Connected to the WiFi network");//提示wifi连接成功//连接mqtt代理client.setServer(mqtt_broker, mqtt_port);client.setCallback(callback);while (!client.connected()) {String client_id = "esp8266-client-";client_id += String(WiFi.macAddress());Serial.println("Connecting to public emqx mqtt broker.....");//提示正在连接服务器if (client.connect(client_id.c_str())) {Serial.println("Public emqx mqtt broker connected");//提示成功连接到服务器} else {Serial.print("failed with state ");//提示连接失败Serial.print(client.state());delay(2000);}}// 发布订阅client.publish(topic, "hello emqx");client.subscribe(topic);
}void callback(char *topic, byte *payload, unsigned int length) {Serial.print("Message arrived in topic: ");//表示mqttx与设备订阅Serial.println(topic);Serial.print("Message:");//向代理发送信息String message;for (int i = 0; i < length; i++) {message = message + (char) payload[i];  // convert *byte to string}Serial.print(message);//判断信息内容,若为on开灯,off关灯if (message == "on") { digitalWrite(LED, LOW); }   // LED onif (message == "off") { digitalWrite(LED, HIGH); } // LED offSerial.println();Serial.println("-----------------------");
}void loop() {client.loop();
}

(2)上传后查看窜口监视器显示内容
Connected to the WiFi network :表示wifi连接成功
Public emqx mqtt broker connected :表示成功连接到服务器

(3)打开mqttx软件

首先点击“ + ”号添加网络

内容:name、Client ID任意
Host、Port与以上代码相同(通常已默认)

最后点击connet创建连接


查看窜口监视器存在“Message arrived in topic :esp8266/led (订阅的主题)”
表示mqttx控制端与服务端(代理/mqttx)订阅成功

(4)创建完成后在消息框发送on/off,则led灯会开/关

原文链接:http://blog.qmgua.com/?id=115

=========================================

http://blog.qmgua.com/ 为 “布尔博客” 唯一官方服务平台,请勿相信其他任何渠道。

ESP8266智能灯控相关推荐

  1. MQTT协议的智能灯控

    一.MQTT协议概述: MQTT,一种基于发布/订阅(piblish/subscribe)模式的"轻量级"通讯协议,该协议构建于TCP/IP协议上.它可以以极少的代码和有限的带宽, ...

  2. 蓝牙模块智能灯控应用方案

    当今是信息高速发展的时代,经济.文化的流行与传播都离不开信息.信息的传递直接影响着人们生活的方方面面,信息的传递方式又各有不同,如有线传输.无线传输等:而无线传输还可按协议不同分为:蓝牙.WIFI.z ...

  3. 基于单片机的智能灯控系统

    目录 实验四  简易路灯智能控制器 一.项目设计 1. 了解光敏电阻电气特性. 2. 学会在面包板上搭建光敏电阻电路测量环境光强度. 3. 学会使用PCF8591数模转换模块将光敏电阻两端电压转换为数 ...

  4. 优联智能灯控系统升级:NB-IoT将引领智慧照明新风潮

    随着5G布局的加快,各行各业积极布局物联网,万物互联时代加速来临,NB-IoT作为一种最新的低功耗窄带广域网通信技术能实现设备的海量连接,正成为物联网领域的一项革新性技术.NB-IoT加速了物联网的引 ...

  5. 智能灯控系统的介绍,它有什么优势

    随着智能家居行业的发展和产品的扩散,相信很多长期关注智能产业,在互联网环境下的积极消费者来说,一定都考虑过如何在现代家居中获得"解放感".而智能照明具有方便.美观.安全.节能的优点 ...

  6. 【毕业设计】基于ZigBee的智能灯控系统 -物联网 单片机 stm32

    文章目录 1 简介 2 系统结构 系统功能 相关器件 Zigbee芯片 CC2530 LED发光二极管 人体红外感应模块 光敏电阻传感器 3 实现效果 5 相关部分代码 6 最后 1 简介 Hi,大家 ...

  7. 智能灯控(基于ZigBee)

    时间:2017年12月 阶段:大二上学期 背景:单片机原理与应用课设 名称:智能灯控 摘要 本系统实现了多方式控灯功能,有按键控灯.串口指令控灯.点对点无线射频控灯.AI模式控灯.其中AI模式控灯是通 ...

  8. 【安信可LoRa模组专题②】快速搭建远程控制灯LoRa智能灯控【51单片机篇】

    本LoRa模组系列博客学习由 安信可科技 - 官方博客 技术分享,如有疑问请留言或联系邮箱. [安信可LoRa模组专题①]安信可LoRa快速入门指南 [安信可LoRa模组专题②]快速搭建远程控制灯Lo ...

  9. 发现ESP-NOW之旅——用ESP8266做灯控开关

    发现ESP-NOW 我是一名从事智能照明的工程师,今年智能照明特别火爆,远超出我的想象.而且有量就压价,客户都不是省油的灯,所以设计也不能大手大脚的,新上手的ESP8266便宜好用,过我手的就有不少项 ...

最新文章

  1. 指针小白:修改*p与p会对相应的地址的变量产生什么影响?各个变量指针的长度为多少?...
  2. AI研究过于集中狭隘,我们是不是该反思了?
  3. 独家 | 准备数据时如何避免数据泄漏
  4. 04机器学习实战之朴素贝叶斯
  5. C语言 数据结构 栈(用链表实现)
  6. CentOS系统yum源使用报错:Error: Cannot retrieve repository metadata
  7. FreeBSD下面安装PostgreSQL。
  8. 尚学堂--面向对象2
  9. 计算机游戏41,Win7玩游戏提示“无法启动此程序,计算机中丢失d3dx9-41.dll”怎么办...
  10. 蔡勒公式与Python
  11. WSDM2019|门限注意力自编码在内容感知推荐中的应用(已开源)
  12. POCO C++库学习和分析 -- 序
  13. 网络编程“惊群“问题
  14. PMP之项目风险管理---实施定量风险分析
  15. 发明专利、实用新型专利——下载步骤
  16. Nginx 对俄罗斯动手了。。。
  17. wine-linux下运行windows软件的神工具
  18. 成为你自己的新贵:如何开始低代码手机开发
  19. django框架搭建详细步骤
  20. STM32 RTC例程

热门文章

  1. 解决 ssrr端口1080占用
  2. 手机照片删除了怎么恢复
  3. 【单片机学习】共阳数码管的动态显示
  4. Android开发--仿微信语音对讲录音
  5. 将C语言宏定义转换成字符串!
  6. 妹子帮个忙!嫁给程序员好吗?
  7. 浅谈:1对1直播源码一对一视频聊天源码
  8. G120C变频器调试
  9. java编写类骑士游历_[基于Java的骑士游历问题的预见算法]骑士游历问题
  10. AcWing 1064 骑士