eew_dy9f48

  • 2024-10-27
  • 发表了主题帖: 【2024 DigiKey 创意大赛】移植openHASP项目,实现家庭物联网控制中心

    本帖最后由 eew_dy9f48 于 2024-10-27 14:49 编辑 一、作品简介 openHASP是一个适配于homeassistant的显示面板,底层代码是基于lvgl编写的,特别对esp32-s3进行了优化。但比较遗憾的是目前这个项目并不支持ESP32-S3-LCD-EV-BOARD这块开发板。由于这块板子上的480*480屏幕,非常适合作为86面板嵌入在墙上,作为家庭物联网的控制中心,因此我想把openHASP这个项目移植到ESP32-S3-LCD-EV-BOARD开发板上。 移植完成后,我会用它来制作一个小型家庭灯光控制面板。同时用ESP32-S3-DEVKITC-1-N8R8开发板作为被控的灯光设备,来演示控制过程。 二、系统框图 项目分为三个部分完成。 第一部分是openhasp的移植,让它可以运行在ESP32-S3-LCD-EV-BOARD开发板上。 第二部分是openhasp的配置,在上面完成一个灯光控制的页面设计。 第三部分是使用ESP32-S3-DEVKITC-1-N8R8制作一个灯光控制器,作为openhasp的被控端来使用。   三、各部分功能说明 第一部分,移植openhasp: 先去OpenHASP仓库拿到所有源代码: Git clone https://github.com/HASwitchPlate/openHASP 打开项目后,可以发现项目是使用platformio编写的,这对我们后续移植提供了很大的便利。 开发板的配置文件都存放在user_setups中。先找一个类似的配置文件,这里主要指的是通过并口驱动电容触摸屏的开发板。可以选择user_setups\esp32s3\esp32-s3-4848S040.ini。复制创建一个新的,然后可以开始修改。 主要的修改是几块,第一块是把文件内所有的开发板名称都修改,比如我改成了esp32-s3-4848s040_16MB-ev 。以此避免命名冲突。第二块是修改屏幕驱动,把原本的ST7701去掉,换成-D GC9503V_DRIVER=1。第三块是修改触摸驱动。我们开发板使用的触摸驱动是FT5X06,虽然openhasp项目中集成了这款驱动,但是如果想使用还需要下载额外的库,比较麻烦。经过实测FT6336的驱动也可以完美工作,因此我们只需要对应修改-D TOUCH_DRIVER=0x6336,并对应修改-D I2C_TOUCH_ADDRESS=0x38就可以了。最后一块是pin的修改,把LCD和触摸驱动引脚一一对应修改好就可以。这里特别需要注意一点,由于开发板默认的SPI配置引脚使用的是IO拓展器拓展出来的,因此我们需要修改一下硬件部分,让这三个引脚直接使用ESP32S3的引脚。具体修改要改动R92,93,94   按照我下面的方法把三个电阻移动一下位置就可以。   创建好配置修改好电路后,我们更改一下编译配置文件,就可以开始上传了。注意这时候不要动他原本的platformio.ini,而应该复制一份新的platformio_override-template.ini,然后重命名成platformio_override.ini,并在里面修改extra_configs = user_setups/esp32s3/*.ini以及extra_default_envs = esp32-s3-4848s040_16MB-ev。完成后编译上传,看到屏幕有了下面显示,就说明以及成功移植了openhasp项目。     第二部分,配置openhasp并绘制GUI: 首先会看到屏幕上显示一个二维码,用手机按照指示连接对应的热点并扫二维码进去配置wifi,完成后重启,设备就可以连上网络:   重启后默认当设备连上网后,会弹出设备IP地址。我们输入这个ip,就可以进入配置页面。在这个地方就可以完成对GUI的编写。 先进入configuration里的MQTT Settings配置一下MQTT服务器的设置。MQTT可以在自己电脑上搭建,也可以使用公共的。这里就不再赘述。   接着返回主页,进入File Editor,就可以开始编写GUI。       GUI的编写全部都在pages.jsonl这一个文件中完成。这里我只创建了一个组件,是一个按键矩阵。可以非常方便的使用配置语言在这里添加各种各样的组件。       写完后点击右上角的Reload Pages,就可以看到创建好的页面。     第三部分,灯光控制器制作。 现在开始用第二块开发板,ESP32-S3-DEVKITC-1-N8R8来进行开发。 这里为了方便快捷,我使用circuitpython进行开发。去到官方固件下载页面,可以直接使用open installer按钮进行固件刷新。 https://circuitpython.org/board/espressif_esp32s3_devkitc_1_n8r8/   接着参考官方MQTT示例和neopixel,稍作修改,当收到对应的MQTT指令后点亮对应的灯就可以。关键的回调函数逻辑如下: def message(client, topic, message):     global state     # This method is called when a topic the client is subscribed to     # has a new message.     print(f"New message on topic {topic}: {message}")     payload = json.loads(message)     if payload["event"] != "up":         return     if payload["text"] == "RED":         state["red"] = (not state["red"]) * 255     elif payload["text"] == "GREEN":         state["green"] = (not state["green"]) * 255     elif payload["text"] == "BLUE":         state["blue"] = (not state["blue"]) * 255     elif payload["text"] == "ALL":         if state["red"] + state["green"] + state["blue"]:             state["red"] = 0             state["green"] = 0             state["blue"] = 0         else :             state["red"] = 255             state["green"] = 255             state["blue"] = 255     pixels[0] = (state["red"], state["green"], state["blue"]) 四、作品源码     五、作品功能演示视频   [localvideo]92ba9e453aaf69831e782251d6a180b7[/localvideo]     六、项目总结 这个项目使用了一块非常强大的触屏开发板,可以用它作为家庭物联网人机交互中枢来控制所有家电。通过这个项目我成功移植了openhasp,可以大大简化后续实际使用的复杂度。

  • 2024-10-06
  • 发表了主题帖: 【2024 DigiKey 创意大赛】得捷物料开箱贴

    这次活动的物料选择很好,有我心心念念的ESP32-S3-LCD开发板,终于可以尝试下移植openHASP项目,实现家庭物联网控制中心   为了完成这个项目,我一共购买了两个物料。多买的S3模块会作为传感器和控制节点来测试控制中心的显示情况: 由于收到物料的时间比较晚,留给项目完成的时间也不多了。希望可以按时完成。

最近访客

< 1/2 >

统计信息

已有23人来访过

  • 芯积分:139
  • 好友:--
  • 主题:18
  • 回复:2

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言