一、MQTT服务器(emqx)搭建

连接:安装 | EMQ X 文档

根据文档进行安装,文档里面包含各种系统安装方式,可以根据服务器系统进行选择,因为我这边用的是阿里云的centos系统服务器,所以具体安装方式如下:

1.安装所需要的依赖包

$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2

2.使用以下命令设置稳定存储库,以 CentOS 7 为例

$ sudo yum-config-manager --add-repo https://repos.emqx.io/emqx-ce/redhat/centos/7/emqx-ce.repo

3.安装最新版本的 EMQ X Broker

$ sudo yum install emqx

如果提示接受 GPG 密钥,请确认密钥符合 fc84 1ba6 3775 5ca8 487b 1e3c c0b4 0946 3e64 0d53,并接受该指纹。

4.启动 EMQ X Broker

$ emqx start

到这一步,我们的emqx服务就已经启动了,下面我们尝试访问EMQ X Dashboard

首先要确保你的服务器要开放18083和1883端口,这两个端口一个是用于访问EMQ X Dashboard,另一个是用于MQTT连接,我这边是在阿里云配置规则里面进行操作

端口开放好后 我们尝试访问http://你的服务器公网ip:18083

默认账号密码是 admin,public

现在我们的mqtt服务器就搭建成功了。

二:电路连接

准备硬件:树莓派一块、2路继电器一块

我这边选用的是树草莓4B和5V继电器模块

接线:

树莓派5V引脚接继电器电源正极,树莓派GND引脚接继电器电源负极

(由于我选用的是5V继电器与树莓派的电压相同,所以树莓派可以直接给继电器供电)

树莓派GPIO14接继电器IN1,GPIO15接继电器IN2

(树莓派的引脚定义不必多说了吧,不清楚的话可以使用命令gpio readall 查看)

三:编写控制程序

参考连接:在树莓派上使用 MQTT | EMQ

#subscriber.py
import paho.mqtt.client as mqtt
import RPi.GPIO
import time
IN1 = 14  #继电器IN1引脚连接到树莓派BCM编码的14引脚
IN2 = 15  #继电器IN1引脚连接到树莓派BCM编码的15引脚
RPi.GPIO.setwarnings(False)
RPi.GPIO.setmode(RPi.GPIO.BCM)
RPi.GPIO.setup(IN1,RPi.GPIO.OUT)  #IN1设为输出
RPi.GPIO.setup(IN2,RPi.GPIO.OUT)  #IN2设为输出def  on_connect(client,userdata,flags,rc):# 订阅,需要放在 on_connect 里# 如果与 broker 失去连接后重连,仍然会继续订阅 raspberry/topic 主题print("Connected with result code"+str(rc))client.subscribe("raspberry/topic")
# 回调函数,当收到消息时,触发该函数
def on_message(client,userdata,msg):
# 如果收到的消息为"p1" 打开继电器1if msg.payload == 'p1':RPi.GPIO.output(IN1,1)RPi.GPIO.output(IN2,0)
# 如果收到的消息为"p2" 打开继电器2elif msg.payload == "p2":RPi.GPIO.output(IN1,0)RPi.GPIO.output(IN2,1)
# 如果收到的消息为"stop" 关闭所有继电器elif msg.payload == "stop":RPi.GPIO.output(IN1,0)RPi.GPIO.output(IN2,0)print(str(msg.payload))client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_messageclient.will_set('raspberry/status', b'{"status": "Off"}')
client.connect("你的服务器公网ip",1883,60)
client.loop_forever()

四.测试

1.在树莓派上打开终端,运行python代码,监听消息

python subscriber.py

2.下载mqttfx 客户端工具

3.使用mqttfx 客户端与mqtt服务器建立连接,并向 raspberry/topic 发送消息

使用 MQTT.FX客户端工具的Publish 想raspberry/topic发送消息 p1

此刻可以听到继电器1路的打开声音。

可以继续尝试发送p2,可以看到继电器1路关闭,继电器2路打开,发送stop 可以看到继电器全部关闭。

继电器可以接入直流电机控制电机正转反转以及停止,除此之外还可以接入其他负载。

使用MQTT远程控制树莓派继电器开关相关推荐

  1. 树莓派控制4路5v继电器开关

    树莓派控制4路5v继电器开关 准备材料 wiringPi库 安装wiringPi库 查看引脚编号表格 wiringPi API 硬件初始化函数wiringPiSetup GPIO控制函数pinMode ...

  2. 树莓派/继电器DIY朴素的远程空调遥控器

    这篇文章是事后所作,由于今天下午老婆和小小已经回来,所以我便不再需要远程空调遥控了,但不管怎样,我假装我仍然需要这个东西,毕竟这是我在她们回来之前亲自做出来的,并且真的可用.   当她们刚回到家里的时 ...

  3. 航模遥控继电器单通道控制2路继电器开关实现原理解析

    航模遥控继电器单通道控制2路继电器开关实现原理解析 航模遥控继电器 硬件解析 两路型号为: SRD-05VDC-SL-C 继电器 2个PC817光耦 3个S4,1N5819WS肖特基二极管 2个S80 ...

  4. 花 1 小时,开源设计 LoRa 继电器开关

    提示1:锐米所有 LoRa 产品严格遵循国际标准的 LoRaWAN 协议. 提示2:您可以免费复制,修改和商用本项目,请注明锐米原创. 提示3:如果您有其他 LoRa 需求或建议,欢迎联系锐米 sup ...

  5. 【微信小程序控制硬件 第13篇】安信可B站直播学习总结,微信小程序MQTT远程控制ESP8266 NodeMCU,谈谈微信生态那些事;

    [微信小程序控制硬件第1篇 ] 全网首发,借助 emq 消息服务器带你如何搭建微信小程序的mqtt服务器,轻松控制智能硬件! [微信小程序控制硬件第2篇 ] 开始微信小程序之旅,导入小程序Mqtt客户 ...

  6. 基于I-MX287A的mqtt远程控制ARM板上LED灯小项目总结

    最近在学linux嵌入式技术,自己做了一个在周立功的I-MX287A开发板上实现的,基于MQTT远程控制的小项目,其中用到了一些比较好玩和有趣的技术,在这里自己记录分享一下. 额,让我想想该从和处开始 ...

  7. 《树莓派开发实战(第2版)》——2.8 利用VNC远程控制树莓派

    本节书摘来异步社区<树莓派开发实战(第2版)>一书中的第2章,第2.8节,作者:[英]Simon Monk(蒙克),更多章节内容可以访问云栖社区"异步社区"公众号查看. ...

  8. 《树莓派开发实战(第2版)》——2.9 利用RDP远程控制树莓派

    本节书摘来自异步社区<树莓派开发实战第2版>一书中的第2章第2.9节作者[英]Simon Monk蒙克韩波 译更多章节内容可以访问云栖社区"异步社区"公众号查看. 2. ...

  9. 用Arduino远程控制车库门开关

    "我用一个以太网插板负载到Arduino上.如此我便实现了打开我的车库门--就是这样! 我也安装了一个磁传感器,门是开着的或者封闭的都可以让我知道.所有都通过Telnet实现. 我修改了来自 ...

最新文章

  1. Arcgis桌面开发,Python引用GDAL库的方法
  2. 百度地图同时显示多个路书
  3. 小白自学深度学习——目录
  4. 基于FPGA的ADC和DAC设计
  5. idea的setting界面怎么进_电脑怎么备份系统
  6. 安装教程rtx2080ti_点云深度学习环境配置指南(一)Ubuntu16.04+RTX2080ti
  7. swift 怎样查看xcode 版本对应的swift版本和 iOS 等其他系统版本
  8. 王者荣耀显示聊天服务器异常,王者荣耀功能存在异常暂时关闭怎么回事 解决办法...
  9. mysql表utf-8 字符串入库编码异常
  10. 23篇大数据系列(三)sql基础知识(史上最全,建议收藏)
  11. 知网免费下载期刊文献
  12. vue mand-mobile ui加class不起作用的问题 css权重问题
  13. vs 2013 必须先停止生成方可关闭解决方案
  14. 深度学习之父Geoffrey Hinton:我的五十年深度学习生涯与研究心得
  15. IT职场人生系列之二十三:知识体系(专家与杂家)
  16. c/c++进阶之爱恨交织的临时对象: 二、天使与魔鬼
  17. yarn computed integrity doesn‘t match our records 错误
  18. 【新版发布】ComponentOne 新增 .NET 6 和 Blazor 平台控件支持
  19. 深度:震惊世间的惊人代码(附完整代码)
  20. aspose win/linux WORD转PDF(及其解决乱码方式)

热门文章

  1. 形容计算机科学与技术的句子,关于描写未来科技的句子33条
  2. SpringBoot  启动出现Cannot determine embedded database driver class for database type NONE
  3. matlab 儒略历 函数,儒略日(儒略日 在线计算器)
  4. python:大球吃小球
  5. 100%基于深度强化学习的对冲基金
  6. C# 输入一个三位数的字符串,输出为三位数的整数,并输出百位、十位、和个位
  7. JsonProperty.Access.READ_ONLY 导致查询字段为null
  8. 【计算机网络】DNS域名系统
  9. H5网页头部的声明应该是用 lang=zh 还是 lang=zh-cn?
  10. python3.7安装numpy库和matplotlib库_详解Python中的Numpy、SciPy、MatPlotLib安装与配置