我是靠谱客的博主 生动火,最近开发中收集的这篇文章主要介绍第一篇:如何通过串口发送给esp8266,并且通过MQTT发布出去,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

  • 前言

·   第一次写博客,这些也是参照前辈的Demo做出来的一个可以通过串口,发送给esp8266,esp8266再由通过MQTT协议发布三个主题出去。

  • 问题

我看了别人的博客,发现他们所应用的串口文件不能修改,所以我找到了对应的方法去修改nonos文件,包括改变Makefile文件,替换文件等。我已经整合在我的Demo里面,大家可以去下载。

  • 功能展示

在串口输入数据,通过外部服务器定时以“Great_XieBM”为主题发布字符串“1”,从Esp8266里面分别取出3个数据。

  • 这里是我发布数据的格式,在usart.c里面改
uart0_rx_intr_handler(void *para)
  {
	int fifo_len;
	uart_rx_intr_disable(UART0);//关闭中断
	WRITE_PERI_REG(UART_INT_CLR(UART0), UART_RXFIFO_FULL_INT_CLR);
	CLEAR_PERI_REG_MASK(UART_INT_ENA(UART0),UART_TXFIFO_EMPTY_INT_ENA);
	fifo_len=(READ_PERI_REG(UART_STATUS(UART0))>>UART_RXFIFO_CNT_S)&UART_RXFIFO_CNT;
	uint8 idx=0;
	uint8 d_tmp[20]={0};
for(idx=0;idx<fifo_len;idx++){
		d_tmp[idx]=READ_PERI_REG(UART_FIFO(UART0)) &0xFF;
	}
			for(idx=1;idx<5;idx++)
			{
				temp[idx-1]=d_tmp[idx];
			}
			for(idx=6;idx<10;idx++)
			{
				swich[idx-6]=d_tmp[idx];
			}
			for(idx=11;idx<15;idx++)
			{
				airswich[idx-11]=d_tmp[idx];
			}
		WRITE_PERI_REG(UART_INT_CLR(UART0),UART_RXFIFO_FULL_INT_CLR|UART_RXFIFO_TOUT_INT_CLR);
	uart_rx_intr_enable(UART0);
}
  • MQTT里面发布的数据
extern uint8 temp[4];
extern uint8 swich[4];
extern uint8 airswich[4];
uint8  TempBuff[4]={0};
uint8  SwichBuff[4]={0};
uint8  AirswichBuff[4]={0};
void mqttDataCb(uint32_t *args, const char* topic, uint32_t topic_len, const char *data, uint32_t data_len)
{
	MQTT_Client* client = (MQTT_Client*) args;
	uint8  TempBuff[4]={0};
	int ida=0 ;
	for (ida=0;ida<4;ida++){
		TempBuff[ida]=temp[ida];
		SwichBuff[ida]=swich[ida];
		AirswichBuff[ida]=airswich[ida];
	}
	if (data[0] == '1') {
		GPIO_OUTPUT_SET(GPIO_ID_PIN(15), 0);
				MQTT_Publish(client, "temperature", TempBuff,
						4, 0, 0);
				MQTT_Publish(client, "SwichBuff", SwichBuff,
						4, 0, 0);
				MQTT_Publish(client, "AirswichBuff", AirswichBuff,
						4, 0, 0);
	}
}
  • 一开始接入串口助手

一开始接入串口助手
在这里插入图片描述
在这里插入图片描述

  • 实验结果
  • 在这里插入图片描述

另外我用的是通讯猫所提供的MQTT服务器,大家可以自行百度。

参考链接:https://blog.csdn.net/xh870189248/article/details/78777371
我的Demo:https://download.csdn.net/download/weixin_43262746/10683079

最后

以上就是生动火为你收集整理的第一篇:如何通过串口发送给esp8266,并且通过MQTT发布出去的全部内容,希望文章能够帮你解决第一篇:如何通过串口发送给esp8266,并且通过MQTT发布出去所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(39)

评论列表共有 0 条评论

立即
投稿
返回
顶部