812浏览
查看: 812|回复: 1

[ESP8266/ESP32] 基于FireBeetle 2 ESP32-S3的物联网点灯

[复制链接]
木子说,试用报告不能写得太水,其他我第一篇打算写开箱报告并实现点亮板载灯,既然木子说了不能太水,那箱就不开了,直接使用FireBeetle 2 ESP32-S3完成一个物联网点灯的小项目。
话说点灯是开发板永远的话题,就像学编程第一个程序一定是打印Hello World。仔爸在之前已经写过一篇《
基于esp32-c3的物联网点灯》,我就在此基础上再进行一次迭代修改,增加一些内容——这就是所谓的创新吧,哇哈哈哈哈……
一、物联网服务器的选择和使用
本项目不再用行空板上的SIOT2.0,为什么不选择呢?因为仔爸没有搞定后面的根据发送信息生成二维码,所以采用的是Siot 1.3,请允许我自降版本。去gitee上下载吧(下载地址:https://gitee.com/vvlink/SIoT/tree/master/software/),虽然github上也有,但可能也许大概率会访问不了。
好了,下载后解压,然后双击“SIoT.exe"启动物联网服务器(仔爸使用的是For win版本)

基于FireBeetle 2 ESP32-S3的物联网点灯图2
然后我们会发现弹出一个终端窗口,里面显示物联网服务器的两个地址,请复制第一个192开头的服务器地址备用。
基于FireBeetle 2 ESP32-S3的物联网点灯图3
接下来,打开任意一款浏览器,在地址输入192.168.10.136:8080(请根据你所看到的IP地址进行替换),第一次登录需输入用户名和密码(用户名siot,密码dfrobot)

基于FireBeetle 2 ESP32-S3的物联网点灯图4
然后我们会看到已经存在的设备名称,当然我们可以新建一个,但仔爸瞪大了眼睛查了很久也没有发现创建、新建之类的按钮。惯性思维限制了我前进的道理,直到我发现是不是可以凭空发送一个消息就可以创建了呢?果然如此。单击”发送消息“标签,在”主题(项目ID/设备名)"下面的文本框中输入一个用斜杠分隔的字符串(项目ID和设备名称请随意命名),如下图。
基于FireBeetle 2 ESP32-S3的物联网点灯图5

然后我们就会发现已经在”设备列表“中显示刚才新建的主题了。

二、无线网络
物联网程序离不开网络,我们需要将使用的电脑,以及ESP32-S3保持连接在同一网段(一般是局域网,只要连接同一个路由器即可)。然后通过MicroPython对esp32-s3进行编程实现联网。可以直接抄一段MicroPython官网中提供的样例代码。
  1. def WIFIconnect(): #无线链接
  2.     import network
  3.     ssid='shufang'  #无线名称
  4.     password='25222214'  #无线密码
  5.     station=network.WLAN(network.STA_IF)
  6.     if station.isconnected() == True:
  7.         print("WiFi already connected")
  8.         print(station.ifconfig())
  9.         return
  10.     station.active(True)
  11.     station.connect(ssid,password)
  12.     while station.isconnected() == False:
  13.         pass
  14.     print("Connection successful")
  15.     print(station.ifconfig())
复制代码

三、编写esp32-s3上的主程序
主程序的主要功能是,实现连接局域网,然后循环侦听物联网服务器发送过来的消息,如果收到消息为1则点亮板载灯,如果收到0,则熄灭板载灯。关于采用Thonny来编写MicroPython的基础操作,可以查看仔爸上一篇"Beetle ESP32 C3 物联网亮板载灯"。其实两者的代码基本是一样的。
  1. import time
  2. from machine import Pin
  3. import siot #导入同目录下的siot.py
  4. led=Pin(21,Pin.OUT)
  5. SERVER="192.168.10.136"  #siot服务器地址
  6. CLIENT_ID=""
  7. IOT_pubTopic='siot/light_sitch'
  8. IOT_UserName='siot'
  9. IOT_PassWord='dfrobot'
  10. siot.init(CLIENT_ID,SERVER,user=IOT_UserName,password=IOT_PassWord)
  11. def WIFIconnect(): #无线链接
  12.     import network
  13.     ssid='shufang'  #无线名称
  14.     password='25222214'  #修改为无线密码
  15.     station=network.WLAN(network.STA_IF)
  16.     if station.isconnected() == True:
  17.         print("WiFi already connected")
  18.         print(station.ifconfig())
  19.         return
  20.     station.active(True)
  21.     station.connect(ssid,password)
  22.     while station.isconnected() == False:
  23.         pass
  24.     print("Connection successful")
  25.     print(station.ifconfig())
  26. def sub_cp(topic,msg):
  27.     #print((topic,msg))
  28.     s=msg.decode()  #对接收到的信息解码
  29.     print(s)   
  30.     if s=='1':  #接收的消息1就亮灯
  31.         led.value(1)
  32.     else:
  33.         led.value(0)
  34. WIFIconnect()
  35. siot.connect()
  36. siot.set_callback(sub_cp)
  37. siot.subscribe(IOT_pubTopic,sub_cp)
  38. #siot.loop()
  39. while True:
  40.     time.sleep(1)
  41.     siot.check_msg()
复制代码

四、开始点灯
首先运行esp32-s3上的主程序,并保持等待状态。然后在刚才打开的浏览器界面,通过手工发送消息1和0,我们会发现随着我们发送1,则板载灯点亮,发送0则熄灭。物联网就是这么神奇,大家脑补一下,把点灯改为其他各类操作是不是马上想通了?比如启动马达,比如各类传感器。
等一下,每次点灯要打开网页并手工发送消息,这不是我们该提倡的,能否用手机来操作呢?显然手机最方便的就是扫码,我扫,我扫,我扫扫扫。这时候仔爸凭着N年前学过编写网页的经验,要把GET和POST用上了。也就是手工发送1是不是可以变成一个访问的网址,如果这样,我们把这个网址转换成二维码就行了。网址可不好找,但还是被细心的仔爸找到了。还记得启动Siot服务器时弹出的终端窗口吧,当我们发送消息时,会滚动一些信息,奥秘就在里面。观察下图红框中的一串字符,就是发送的真实地址,最前面的斜杠左侧再加上服务器地址即可,也就是192.168这个开头的物联网地址。
基于FireBeetle 2 ESP32-S3的物联网点灯图6
试着把拼接的真实发送地址粘贴到浏览器,然后按下回车键,试试能不能开关灯。
192.168.10.136:8080/publish?iname=siot&ipwd=dfrobot&topic=siot%2Flight_sitch&msg=1&_=1693839667888
接下来,我们将这两个开关灯的网址转换成二维码。在Thonny中切换到本地python环境(不要选择esp32-s3上的解释器),然后单击”工具>管理包",搜索并安装qrcode。
然后在本地电脑上编写下面的生成二维码程序。
  1. import qrcode
  2. # 生成亮灯二维码
  3. data='http://192.168.10.136:8080/publish?iname=siot&ipwd=dfrobot&topic=siot%2Flight_sitch&msg=1&_=1693841071912'
  4. img = qrcode.make(data)
  5. print(type(img))
  6. img.save('light_on.png')
  7. #生成灭灯二维码
  8. data='http://192.168.10.136:8080/publish?iname=siot&ipwd=dfrobot&topic=siot%2Flight_sitch&msg=0&_=1693841071912'
  9. img = qrcode.make(data)
  10. print(type(img))
  11. img.save('light_off.png')
复制代码

将该程序保存并运行,我们发现同一目录下会生成二个图片文件,把这两个二维码图片插入到Word中并做好标志(当然你也可以打印出来)。然后我们用手机扫一扫的功能尝试一下,板载灯会实现开灯和关灯的效果了。
基于FireBeetle 2 ESP32-S3的物联网点灯图1
仔爸还有一个想法,就是使用行空板上的Siot服务器,并把二维码动态生成在行空板上的屏幕上,但目前还没有成功,交稿迫在眉睫,只能将就一下了。


麦壳maikemaker  初级技师

发表于 2023-9-6 12:30:08

支持http访问被你这么发现了真是太厉害了,siot1.X版本的wiki里面有关于http访问的内容。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail