2480| 0
|
[项目] MicroBlocks 编程案例: 在 ESP32 里运行网站 |
本帖最后由 种瓜 于 2022-11-19 21:06 编辑 原文地址: MicroBlocks 编程案例: 在 ESP32 里运行网站 上周六在 CodeLab 候车群 里提到:
心急等不到下周,周六下午去实务学堂上完课,从小洲村回到公司,取了一块 ESP32 板子回家做实验,由于 microblocks 提供了强大的沉浸式编程体验(类似 Smalltalk,放大心智的力量),一会儿就搞出了原型。 视频 :https://adapter.codelab.club/video/1641644601520772.mp4 视频的后半段,十分有趣, 当我在浏览器里请求 之后,我有个想法,考虑到这个太阳能驱动的网站,可能因太阳暴晒导致芯片温度升高,于是想构建一个自动降温装置: 当温度太高时,打开风扇 视频 https://adapter.codelab.club/video/d394a5677121477a7fe76600511f54.mp4 通过 microblocks 的通用实时图表功能,可以很快看出代码中的临界参数应该选什么值(当温度超过预设的临界值,就打开风扇)。大多数编译型编程环境,是"闭着眼睛排列代码/积木"。 家庭作坊,就地取材,为了压住风扇不乱跑,用的是橘子, 为了模拟阳光暴晒,用的是电吹风 :) 技术细节代码简洁清晰,无需过多解释。 来看看 microblocks 的 HTTP server 库, 有一处值得注意,在每次循环中, 公网访问由于 ESP32 连接到局域网 WIFI, 我打算使用 ngrok(也可使用 frp 之类的工具) 将其 web 服务端口映射到公网上。如果你直接在 ESP32 上接了网线,且有公网地址,则不需要使用 ngrok。 正好桌面上有一个树莓派,我将 首先需要获得 ESP32 的 IP 地址,这简单,microblocks 的 WIFI 库有对应积木,交互式地查看它即可,我们之前提到 microblocks 交互式的环境可以充当硬件的“屏幕”! 不像许多数编译式的环境,代码一旦烧录,就不懂它在内部干嘛了,随然串口输出有用,但你需要事先知道该输出什么调试信息,这是很讽刺的,因为意外的问题,正好是你事先不知道的,好的环境应该允许你与系统进行深层次的实时交互,让你不断解决意外的问题,并加深对它的理解,所有这些都发生在行进过程中。正如 Alan Kay 喜欢说的: 在飞行中改进系统。 拿到 ESP32 的地址后(如 页面信息当你访问映射出的公网地址时,会看到如下页面。 你可以修改前边的代码,写任何你喜欢的 html 代码,我喜欢 markdown,所以采用 markdown 来写页面,这是从 Yoshiki Ohshima 那儿学来的。
你也可以把 html 文件和其他静态文件永久托管在 ESP32 ESP32 能存几 MB 的文件!使用 microblocks 提供的文件库即可。 太阳能电池我目前使用移动电源驱动网站。 由于 ESP32 的低功耗, 意味着可以使用太阳能来驱动它。最近广州阴雨天,太阳能电池还没到, 以后有时间再测试。 如果你有兴趣来做,电路方面可以参考这篇文章 聊天服务器在 ESP32 里构建聊天服务器完全没有问题,由于 ESP32 带有文件系统,可以在服务器端保留消息,为离线用户存储历史消息。 我之前想使用 websocket 来构建聊天服务器,目前 microblocks 作者没写 websocket 的用例,我还没摸索出用法。之后有空再折腾,我本来还打算使用 htmx 构建客户端。 你也可以使用 HTTP server 库构建聊天服务器,应该很简单。 后记下班之前运行的网站,12小时之后,依然稳定运行。 参考 |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed