我爱微控制器。我还喜欢远程控制硬件,比如在我家的另一个房间里。我还喜欢通过浏览器(比如从我的笔记本电脑或手机)而不是ssh控制台实现这一功能的想法。
我以前从来没有使用过https,也没有做过任何形式的网络编程。幸运的是,我发现这个项目这让我能够很快地使用Python格式的HTTPs服务器。我能够修改它,以满足我的需求,这个非常基本的项目。如果你想以任何方式重建这个项目,或者只是想创建你自己的python服务器,我建议按照上面链接的项目中的步骤创建你自己的'服务器'。pem文件。我需要添加处理HTTP GET和POST请求的支持。我能够找到一个GET和POST请求的示例项目在这里.
至于网页编程,你会发现我只做了基本的css和html类型的脚本来创建一个非常简单的网页。我将把网页开发留给更有经验的人。然而,即使从这个非常基本的例子中,您也可以看到,在微控制器上创建一个更复杂的网页和支持更多的行为是多么容易。
硬件方面:我正在使用Digilent BasysMX3,它基本上是PIC32的一个方便的小开发板。它有LED,一个RGB LED,两个Pmod端口,一个系统内的程序员和调试器,一个16x2的LCD屏幕,一个集成的h桥,按钮,四个7段显示,以及一大堆其他有趣的东西。在这个项目中,我只使用led和uart控制器。为了连接到我的python服务器,我使用Pmod ESP32。这基本上是Digilent自己的Pmod板,配备了来自espresso的ESP32。这些ESP32芯片非常棒。它们支持WiFi/蓝牙4.2/BLE连接,拥有一整套外围设备,带有免费的RTOS,几乎可以做任何事情。
项目如何运作Python服务器(simpleServer.py)在调用指定的IP地址和端口号处创建一个HTTPS服务器:
httpd = BaseHTTPServer.HTTPServer(('192.168.1.107', 4443), MyHandler)
这样你就可以通过输入"https://192.168.1.107:4443在你的浏览器里。您的浏览器可能会因为您试图访问本地托管的页面而生气,但它应该允许您访问该页面。
当您在浏览器中访问该地址时,屏幕上有三个按钮。每次按下其中一个按钮,服务器上的一个隐藏文件就会更新,然后页面就会重新加载。
在微控制器侧,ESP32已经连接到wifi网络,ESP32在上面指定的IP地址和端口上重复尝试创建SSL连接。一旦建立了SSL连接,ESP32就会为前面描述的隐藏文件提交一个HTTP GET请求。根据文件的内容,ESP32修改led的行为。
如果您想构建项目MPLabXIDE项目文件包含在“BasysESP32”中链接的github库中。X”目录。python服务器的相应文件也包含在repo中。
但是,您需要对服务器文件和MPlab文件进行一些更改,以便使其工作。修改'simpleServer.py'文件,使其在您托管服务器的IP地址上创建服务器端口。这个更改将发生在第95行。对于MPlabX文件,修改'main.c'将ESP32连接到您托管服务器的IP地址。这应该与您刚才输入到服务器代码中的IP地址相同。更改发生在第30行。
服务器应该寻找一个名为“server”的文件。在与服务器相同的目录下。我已经将其包含在存储库中,但如果您想运行自己的服务器,我建议您按照所示的说明进行操作在这里去创造你自己的。pem文件。
在运行项目之前,我已经将ESP32连接到我的wifi网络,因此,我没有明确地在软件中这样做。我建议你也这么做。通过这种方式,您可以通过ping设备的IP地址来预先测试网络连接是否有效。然而,如果你愿意,在MPLabx项目文件中有一个包含的功能,应该允许你将ESP32连接到任何wifi网络。其他实用程序在ESP32.c/.h中提供。
我还应该提到的是,我在这个项目中使用的是来自espresso的AT固件,而不是自定义应用程序。如果你从Digilent购买这个芯片,它会预装AT固件。显然,如果您想构建这个项目,您还需要设备上的AT固件。Pmod ESP32在芯片的顶部有两个按钮,叫做SPI和BOOT。当您试图运行此项目时,请确保这两个按钮都处于关闭位置。
我使用了MX3上的另一个UART端口作为串行控制台。这个uart端口直接连接到MX3的USB/ uart端口,可以提供一些关于ESP32和微控制器状态的有用信息。
构建项目的基本步骤如下:
- 修改c和simpleServer.py以便服务器是在您的计算机当前占用的IP地址上创建的
- 创建自己的“服务器”。pem文件。这方面的说明可以在上面找到
- 使用在命令集和UART控制器,将ESP32连接到所需的网络。从连接的计算机Ping设备,以确保它确实连接到wifi网络。
- 将MPlabX项目Flash到BasysMX3中。
- 从存储库目录中,键入pythonsimpleServer.py
- 在浏览器中访问https://“您的IP地址”:4443。这应该载入网页到您的浏览器。
- 运行BasysMX3,通过USB/UART串口终端观察输出(115200波特率,8位数据位,1位停止位,无奇偶校验)
- 点击网页上的按钮,可以看到led有不同的行为!
评论