通过ESP8266将STM32串口数据传输到MQTT服务器

最近在和自己的小组捣鼓怎么将STM32的串口数据传输到MQTT服务器上,由于是第一次,所有走了一些弯路。在这里分享一下自己的这次经验。在开始之前,我想对我另外的两个队员:小杨、小行,说:你们幸苦了!

在开始之前,你得要会lua语言,并且要配置ESP8266的环境,在这里我推荐一个视频 ----> 视频地址。这个视频里详细的说了怎么配置ESP8266环境,并且也介绍了lua语言,个人认为足够用了,比较适合刚刚接触这个的人。

然后接下进行第一步,STM32与ESP8266的连接,开始我也琢磨怎么连接,结果就是最简单的连接就行了,STM32上的RXD连ESP8266上的TXD,剩下的类推就行了,然后在ESP8266中写入一个串口接收程序就行了。
程序很简单:

uart.on("data",function(data)
    tmr.delay(1)
    print("从串口读取的数据:",data)
end, 0)

这里要注意的一点,这个串口接收程序不能一开始就写,否则后面写入的程序可能会报错。

接下来就是ESP8266连接WiFi了,连接WiFi的程序如下:

wifi.setmode(wifi.STATION)
wifi.sta.config("SSID","PASSWORD") //SSID WiFi名称,PASSWORD WiFi密码
wifi.sta.connect()
tmr.delay(500000)
print(wifi.sta.getip())

当看到返回了ip地址,表明连接已成功。

然后就是配置MQTT了。
配置如下:

m=mqtt.Client(Clientid,3,MqttUserName,MqttUserPassword)
m:connect(MqttServerIP, MqttServerPort, 0,
	function(client)
		print("connected")
	end
)
m:lwt("/lwt", "offline", 0, 0)
m:on("connect", function(client) print ("connected") end)
m:on("offline", function(client) print ("offline") end)

里面的一些配置需要根据自己的情况设置参数。

Clientid:mqtt客户端ID(唯一).
MqttUserName:Mqtt服务器用户名.
MqttUserPassword:Mqtt服务器用户名密码.
MqttServerIP:Mqtt服务器ip.
MqttServerPort:Mqtt服务器端口.

然后进行连接,当看到 connected 则表明连接已成功。

当到这一步,基本已经成功了。上面的都是一步步测试程序。
接下来给上init程序:

wifi.setmode(wifi.STATION)
wifi.sta.config("SSID","PASSWORD")
wifi.sta.connect()
tmr.alarm(1, 1000, 1, function()
	if wifi.sta.getip()== nil then
  		print("IP unavaiable, Waiting...")
 	else
    		tmr.stop(1)
  		print("Config done, IP is "..wifi.sta.getip())
  		m=mqtt.Client(Clientid,3,MqttUserName,MqttUserPassword)
  		m:connect(MqttServerIP, MqttServerPort, 0,
   			function(client)
    				print("connected")
   			end
  		)
  		m:lwt("/lwt", "offline", 0, 0)
  		m:on("connect", function(client) print ("connected") end)
  		m:on("offline", function(client) print ("offline") end)
  		uart.on("data",
   			function(data)
    				m:publish("demo",data,0,1,
     					function(m)
     					end
    				)
    				data = 0
   			end
  		)
 	end
 end
)

好了,到这正式结束了。其实弄懂了流程就很简单,就是开始接触时不知道往哪下手。再次提醒下,以上程序代码都是用lua语言编写的。所以一定要有lua语言基础。

然后,然后,最后再表扬下我的两个队友:小杨,小行。很棒!

猜你喜欢

转载自blog.csdn.net/qq_44323019/article/details/100620788