前言
我觉得去做一些简单又好玩的案例是入门很好的选择。
在实践的过程中会碰到很多需求很多问题在解决这些需求这些问题的过程就是在学习的过程。
今天我来分享一个随机显示古诗的案例,如果对此感兴趣可以跟我一起动手实践起来。
案例效果:
拆解任务
现在我们先来拆解一下需求。
就是向一个web服务发送一个Get请求获取数据然后将数据显示在OLED屏上,为了效果更好采用分段显示。
首先我们的OLED屏需要连接到一个OLED屏,这个在教程(二)中写了。
如何输出古诗或者其他内容呢?
需要创建一个Web服务,然后随便接入一个大模型,让其输出古诗或其他内容再返回。
就算你从来没有写过Web服务也没关系,这个教程使用Python来创建一个非常简单的Web服务,小白也能实现。
在Arduino中编写代码,ESP32连接WIFI然后发送一个Get请求获取结果,将结果分段显示在OLED屏上。
搭建开发环境在教程(一)中写了。
创建Web服务
创建一个Python虚拟环境,安装一下flask与openai。
写一个app.py如下所示:
from flask import Flask from openai import OpenAI app = Flask(__name__) client = OpenAI(api_key="你的api key", base_url="https://api.siliconflow.cn/v1") @app.route('/OutputClassicalPoetry', methods=['GET']) def output_classical_poetry(): response = client.chat.completions.create( model="internlm/internlm2_5-20b-chat", messages=[ {'role': 'user', 'content': "输出一句古诗。"} ], stream=False, temperature=0.7 ) response_text = response.choices[0].message.content return response_text if __name__ == '__main__': app.run(host='0.0.0.0', debug=True)
运行之后,查看一下自己的ip地址。
打开cmd输入ipconfig:
打开浏览器,输入http://你的ip地址:5000/OutputClassicalPoetry
,即可看到如下的效果:
就说明这个简单的Web服务已经搞定了。
ESP32连接WIFI并发送Get请求
代码如下:
电脑需要连接同一个WIFI。
烧录到ESP32运行。
现在打开串口监视器查看效果:
分段显示在OLED屏
代码如下:
烧录到ESP32运行即可得到上面的效果。
// 每60秒获取数据 if (currentTime - lastFetchTime >= 60000) { lastFetchTime = currentTime; fetchTextFromServer(); }
这里可以更改获取数据的时间。