首页 > 其他分享 >使用ESP32做一个MQTT协议的公网对讲机

使用ESP32做一个MQTT协议的公网对讲机

时间:2024-12-10 15:23:36浏览次数:7  
标签:协议 python ESP32 对讲机 MQTT 公网 服务器

此篇文章在2022年8月14日被记录

使用MQTT做一个公网对讲机

上一篇博客中,使用ESP32与ESP-NOW协议做了一个短距离对讲机(链接),发布了一个视频在B站

<iframe allowfullscreen="allowfullscreen" frameborder="0" height="500" sandbox="allow-top-navigation allow-same-origin allow-forms allow-scripts" scrolling="no" src="//player.bilibili.com/player.html?aid=471734170&bvid=BV1qT411L7WX&cid=795253129&page=1&high_quality=1&danmaku=1" width="100%"></iframe>

评论区中,很多B友希望可以实现无限距离对讲,这样的话需要服务器转发,刚开始我想使用python写一个TCP或者UDP的转发功能,但是考虑到很多小白没有公网服务器,并且也不会使用python,于是我想到了互联网中的MQTT协议,MQTT协议天生为转发而生;MQTT协议是TCP协议的应用,是一个基于客户端-服务器的消息发布/订阅传输协议,MQTT使用的发布/订阅消息模式,提供了一对多的消息分发机制,从而实现与应用程序的解耦。这是一种消息传递模式,消息不是直接从发送器发送到接收器(即点对点),而是由MQTT server(或称为 MQTT Broker)分发的。

我曾经也有一篇文章简单的叙述了MQTT的工作原理与搭建过程(但是在搬运博客内容到cnblogs后,被丢弃了,因为那篇文章太水了),MQTT可以运行在几乎所有的设备上,例如公网服务器(Linux、Windows系统等)、树莓派、局域网电脑等,当然,如果MQTT服务运行在局域网中,那就只能实现局域网的消息转发。如果你没有公网服务器,可以使用我的MQTT地址,我的MQTT服务器将会免费开放到2025年。我使用的MQTT Broker为EMQ免费开源版,并且修改了cfg文件,将速率与可接入设备限制调高。

如果你只想实现无限对讲,不想关注MQTT,那就看下面的代码吧,代码git链接放在文章最后!

首先需要在Arduino中安装pubsubclient库,这个库是可以运行在ESP上的MQTT库,源码也非常简单,非常值得学习。
代码上基于上个视频的硬件与代码,硬件连接完全相同,软件只进行了通信协议的修改。(重点:)代码中需要修改的只有两个地方,第一个地方是WIFI账号与密码(2.4G),第二个地方是修改角色,发送端或者接收端,具体位于AudioMqtt.h中的SENDER宏定义,你需要将该项设置为1,编译烧录给带有麦克风的设备,再将该项设置为0,编译烧录给带有扬声器的设备。烧录给两个设备,按下发射端的板载按钮说话,你应该就可以听到扬声器中你的声音了。

我们已经了解了MQTT协议的工作原理,我们也可以在电脑上写一段python脚本订阅发布的音频数据并且播放出来,python需要的库为paho-mqtt与pyaudio,代码也在git中,是audiotest.py。

git地址:点击我

标签:协议,python,ESP32,对讲机,MQTT,公网,服务器
From: https://www.cnblogs.com/shumei52/p/18597437

相关文章

  • ESP32-CAM 上传图像数据到网络
    此篇文章在2022年8月29日被记录ESP32-CAM上传图像数据到Python上位机预防踩坑放在前面:目前安信可官方版的CAM模块已经停售,库存货比较贵,市面上的都是仿制的,质量良莠不齐,给开发带来了很多困扰,经过实际测试,发现山寨货主要有以下几个坑:1、发热严重,不加散热片长时间运行几乎到了烫......
  • 国标GB28181软件LiteGBS国标GB28181公网平台,浏览器登录后不能下载录像怎么办?
    用户在浏览器登录LiteGBS平台后遇到无法下载录像的问题时,这可能会影响到视频监控数据的追溯和证据保存,从而对整个监控系统的完整性和可靠性造成影响。这种情况可能由多种因素引起,包括但不限于用户权限设置、网络连接问题、平台配置错误或软件兼容性问题。解决这些问题,确保用户能够......
  • 使用ESP32做一个实时语音对讲系统
    此篇文章在2022年8月5日被记录最近突发奇想,制作一个数字式的音频通信系统,顺便学习一下I2S与ESP-NOW协议刚开始查阅资料,发现油管上的已经有人做过了,但是使用的C++,并用了数据流的处理流程,比较晦涩难懂,代码量也很大,属于是炫技的作品,我这篇文章使用C重新写一遍,并且代码量大大降低,......
  • Linux下Mosquitto MQTT代理的安装与配置指南
    1.引言MQTT(MessageQueuingTelemetryTransport)是一种轻量级的、基于发布/订阅模式的消息传输协议,广泛应用于物联网(IoT)领域。Mosquitto是一个开源的MQTT代理,它支持MQTT协议3.1和3.1.1,适用于各种设备和平台。本文将详细介绍如何在Linux系统下安装和配置MosquittoMQTT代理。......
  • 话说MQTTX工具
    MQTTX是一个强大的跨平台MQTT客户端工具。开发公司EMQ也是非常具有实力的研发公司。以前有关mqtt调试工具都是自己写的程序,近日也试用了一下行业明灯MQTTX,使用时有些问题1、既然支持多标签页的主题订阅和发送,为社么不把每个主题的发送数和接收数显示出来,而是只写这个连接的......
  • 【保姆级教程】教你从零开始在飞牛云fnOS搭建WordPress网站并实现公网访问
    文章目录前言1.Docker下载源设置2.Docker下载WordPress3.Docker部署Mysql数据库4.WordPress参数设置5.飞牛云安装Cpolar工具6.固定Cpolar公网地址7.修改WordPress配置文件8.公网域名访问WordPress前言在数字化浪潮中,网站搭建已成为个人和企业在推广自身品......
  • Linux基础——创建本地yum源目录及同步公网yum源repo目录到本地
    一、检查同步在线yum源repo源所有rpm包的占用大小yumrepolistAppStream-v 二、下载带目录bclinux/el8.2/,下载目录下除iso及index的目录及文件wget-r-np-nH-Riso,index.html*https://mirrors.cmecloud.cn/bclinux/el8.2/不带目录结构下载wget-nd-r-l1-A.rpm......
  • 使用esp32与LVGL实现一个每日一句
    此篇文章在2022年3月13日被记录硬件主控:esp32屏幕:ili9341@40Mhz软件开发环境:esp32-idfUI界面:LVGL实现方式:1、在天行数据网申请应用,会得到一个key,在浏览器访问这个特定的网址与key,浏览器会返回一串json数据,其中包含我们所需要的显示的数据。2、使用esp32中的httpclie......
  • 国标GB28181公网直播LiteGBS国标GB28181-2022平台网络摄像机怎么进行时间同步?
    随着视频技术的不断进步,视频监控、直播、执法记录仪等多种视频资源的应用场景愈发广泛且多样化。这些视频资源不仅在数量上快速增长,更在质量、格式及编码标准等方面展现出极高的多样性。因此,为了实现对这些资源的有效整合和统一管理输出,信息化项目中对于视频综合接入能力的需求愈......
  • 解释下内网IP和公网IP是什么?
    内网IP和公网IP是两种不同类型的IP地址,用于在不同范围内标识和定位网络设备。它们就像家庭住址和邮寄地址一样,用于在不同层级上找到你。内网IP(IntranetIP):私有地址:内网IP是私有地址,只能在局域网(LAN)内部使用,例如家庭网络、公司网络或学校网络。不同的设备在同一个局域......