无线电爱好网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

树莓派与EthernetHat:用ChatGPT实现的MQTT智能家居项目!

2025-6-4 09:09| 发布者: 闪电| 查看: 15| 评论: 0

摘要: 我们使用Pico、WIZnetW5100S 和 PicoBricks 开发板开发了MQTT RGB灯,通过ChatGPT 4.0生成和优化代码。项目所需组件硬件组件PicoBricks 扩展板 x 1WIZnet W5100S-EVB-Pico x 1WIZnet W5500-EVB-PicoWIZnet以太网HAT ...

提示3:每1秒读取一次值,并在按钮和电位器值与前一次不同时打印变化的值。

提示4:存在一个漏洞,即在没有任何按钮操作的情况下,当电位器值变化时,RGB值会自动改变。请修复这个问题。

并且使用[time.sleep(1)]来实现时间延迟。但这并不是最好的方法。

如果你想为相同的结果应用不同的逻辑,请提供一个逻辑示例并请求其应用。

提示5:设置定时器,每1秒读取一次值。使用'get_time'格式而不是'sleep'。current_pot_value = pot_value_scaled() 如果 current_pot_value != prev_pot_value:打印 f"亮度值已更改为: {current_pot_value:.2f}" prev_pot_value = current_pot_value

提示6:将定时器减少到500毫秒。

4. OLED

我已经为OLED创建了一个类,现在我将添加一个新函数,该函数可以在每一行上显示不同的内容。

由于有多个打印函数,函数名变得不太易读。我请求进行修改。

提示1:请在下面的类中添加一个名为'oled'的函数,该函数允许在5行的每一行中输入不同的内容。

提示2:如果某一行没有输入内容,请确保不调用self.oled.text(line5, 5, 48)(或类似针对该行的文本显示调用)。

提示3:请重命名该函数

使用在按钮和电位器中创建的变量,在OLED上显示当前的颜色和亮度值。

由于之前有提示编写历史,因此无需输入额外的变量信息。

提示1:参考下面的函数,请创建一个函数,该函数在OLED的第一行上打印'Color: {rgb}',在第二行上打印'Brightness: {current_pot_value}%',使用提供的cur_rgb和current_pot_value值。

提示2:当值发生变化时,我希望在更改“亮度”时同时更新“颜色”显示,在更改“颜色”时也同时更新“亮度”显示。我希望两者能同时显示,并且只更新发生变化的值。

我们还将使用生成的值创建一个JSON编码函数。

5.灯具控制

创建一个灯具控制设备

首先,我们将使用虚拟数据来生成JSON消息。

利用之前创建的类和函数,根据JSON消息在OLED上显示数据,并控制RGB LED灯。

提示1:这是一个用于解析JSON消息的函数。当“颜色(color)”和“亮度(brightness)”与它们之前的值不同时,创建一个函数来控制Neopixel灯带。请参考Neopixel类。

我已经进行了测试,效果良好。

现在,各个设备的单独功能已经完成,让我们来完善MQTT控制部分。

我将输入两个已完成的代码,并请求将它们合并。

如前所述,与其一开始就要求完整的代码,不如为每个功能编写代码,然后再请求合并,这样更有效率。这种方法可以确保详细功能得到良好实现,并减少尝试次数。

我们还将更改函数名以匹配其功能。

运行代码后,如果出现错误,只需请求修改即可。

提示1:将两个代码合并。

提示2:在调用'update_oled_display'函数时,也使用与'update_oled_display'相同的参数调用'generate_json_message'函数。此外,使用'generate_json_message'返回的消息来执行'publish()'函数。

提示3:修改'update_oled_display'的函数名,以反映其更新后的功能。

提示4:NameError: name 'mqtt' isn't defined(名称错误:未定义名称'mqtt')

对于控制设备,我们将功能分类为MQTT发布、按钮、电位器和OLED。对于灯具设备,我们将功能分类为MQTT订阅、OLED和受控的RGB LED。

由于这是一个简单的任务,我直接编写了代码。

我将与你分享我在项目开发过程中使用的编写提示的过程。

我所有工作的历史记录,请参考这里的chatgpt日志。其中记录了许多尝试和失败。

项目现已完成。这是一个简单的项目,不是吗?

尽管这是一个小项目,但我们完全使用chatGPT进行了开发。

就像编码一样,练习得越多,水平就越高,使用提示似乎也是如此。

虽然体验大型项目的部分开发过程至关重要,但完成小型项目的从始至终也同样重要。

我经常使用chatGPT,但这是我第一次完全使用提示从开始到结束进行开发,我感觉自己比以前更得心应手了。

虽然这是我第一次尝试,还有些生疏,但我会继续更多地使用它。如果将来有更好的项目,我会带着另一个项目回来。

代码

https://github.com/wiznetmaker/RP2040-PicoBricks-HAT-Micropython/tree/main/example/AI_Lamp

原文地址:

https://www.hackster.io/wizscarlet5986/mqtt-project-with-pico-and-ethernethat-using-chatgpt-prompts-0c44eb

12

路过

雷人

握手

鲜花

鸡蛋

QQ|关于本站|小黑屋|Archiver|手机版|无线电爱好网 ( 粤ICP备15040352号 )

粤公网安备 44030702001224号

GMT+8, 2025-6-4 09:14 , Processed in 0.156000 second(s), 17 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

返回顶部