[作品提交] 【2024 DigiKey 创意大赛】基于AI的室内环境自适应调节系统(离线大模型)【作品提...

cpsiot   2024-11-6 19:49 楼主

 

基于AI的室内环境自适应调节系统

                                                                                                                                                                                    作者:eric        

1.作品简介


         广州连续三个多月的雨季,给人民生产生活带来及其不便,加上回南天的影响,造成居室多处发霉,衣服无法晾晒,改善居住环境,降低潮湿环境对人类健康的影响迫在眉睫。

        本项目集成离线语音唤醒+离线语音识别+离线AI大模型+离线TTS文字转语音+自动化控制+天气预测,将树莓派5(2G)性能压榨到极致!

        系统基于树莓派5控制器,接入温湿度,气压传感器,485继电器模块等,基于天气预测模型算法,对未来30分钟天气状况实时预测,配合模糊控制算法,对室内环境进行自动化调节,创造舒适居家环境。

项目背景:

  1. 南方雨季长达3个月以上,给人民生活带来极大的不便;
  2. 回南天家中湿度可以超过90%以上,如不做预防和干预,家中电器等物品极易损坏和发霉;
  3. 南方经常下雨,衣物晾干及其不易;
  4. 人体长期生活在湿热环境中,极易引发风湿等疾病;
  5. 室内空气流通差,容易滋生细菌。

实现目标:

  1. 室内环境自动调节,无需人工干预;
  2. 可以语音控制各个设备;
  3. 可以预测未来30分钟天气;
  4. 可以实现语音互动;
  5. 无需网络也可工作;
  6. 可接入AI大模型;
  7. 方便扩展多种传感器和执行设备。

 

 

作品照片:

测试DEMO全家福

image-20241106194324-16.jpeg  

 

485继电器模块

image-20241106194324-17.jpeg  

USB麦克风+喇叭

image-20241106194324-18.jpeg  

 

树莓派5+无风扇金属外壳

image-20241106194324-19.jpeg  

IIC扩展转接板

image-20241106194324-20.jpeg  

 

功能介绍:

  1. 室内环境自动调节,无需人工干预;
  2. 可以语音控制各个设备;
  3. 可以预测未来30分钟天气;
  4. 可以实现语音大模型AI互动;
  5. 可接入不同AI大模型;
  6. 方便扩展多种传感器和执行设备;
  7. 系统无需联网,离线运行;
  8. 纯离线运行,安全隐私保障;
  9. 永久免费,无后期调用语音识别AI等接口费用。

 

技术路线:

  • 使用树莓派5开发板,接入温湿度气压传感器,配合天气预测模型算法,完成未来30分钟天气预测;
  • 通过树莓派5连接USB485转换器,使用模糊控制算法,对接继电器模块,配合温湿度、气压传感器,完成风扇,加湿器,除湿机,暖风机等设备的自动化控制,实现无人值守自动化运行,将室内环境实时调节到最佳状态。
  • 使用USB麦克风+喇叭模块,通过部署离线语音唤醒,完成树莓派的语音唤醒功能;
  • 通过部署离线大模型,完成AI人机对话功能;
  • 通过文字转语音TTS功能,完成AI输出转语音功能;
  • 综合以上设备硬件及软件,完成系统的完整功能。

 

 

  • 系统框图

系统整体架构图:

image-20241106194324-21.png  

 

硬件原理框图:

 

image-20241106194324-22.png  

 

 

 

 

开发流程图:

image-20241106194324-23.png  

 

 

三、各部分功能说明(图文结合)

(各部分实现的功能说明及讲解,以图文结合的展示。)

电源:

电源采用树莓派5带PD的5V5A 27W国产替代电源;继电器供电采用24V电源;

控制器:

控制器使用树莓派5(2G)版本,建议使用8G内存版本;

image-20241106194324-24.png  

image-20241106194324-25.png   image-20241106194324-26.png  

传感器使用SHT31+BMP180:

 

image-20241106194324-27.png   image-20241106194324-28.png  

 

 

 

控制风扇,热风机,除湿机,加湿器采用485继电器模块:

image-20241106194324-29.jpeg  

麦克风喇叭使用USB接口:

image-20241106194324-30.jpeg  

 

 

 

 

四、作品源码

 

https://github.com/omaday/homeai

 

#############################################

运行语音大模型程序 python homeai.py

#############################################

运行自动控制程序 python fuzz.py

##############################################

安装依赖库

修改swap分区配置(树莓派2G版本,其他版本可以忽略) sudo nano /etc/dphys-swapfile 想设置4GiB的swap分区,可以设置“CONF_SWAPSIZE=4096 sudo /etc/init.d/dphys-swapfile restart free -h

配置USB声卡 aplay -l 找到设备号2(USB声卡) sudo nano /usr/share/alsa/alsa.conf 修改为2 defaults.ctl.card 2 defaults.pcm.card 2

sudo nano ~/.asoundrc pcm.!default { type hw card 2 }

ctl.!default { type hw card 2 }

使用图形界面,可以右键点击任务栏上的音量图标,选择“音频输出设备”,并选择USB音频设备。

重启测试声卡

安装TTS pip install coqui-tts # from PyPI

error: can't find Rust compiler curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

pip install coqui-tts[zh]

测试(中文一定要加句号,不然会拖拉音) tts --text "首次运行时的模型加载可能比较耗时。可以在初始化时预加载模型,以减少实际合成时的等待时间,尤其在需要连续使用的应用中效果明显。"
--model_name "tts_models/zh-CN/baker/tacotron2-DDC-GST"
--out_path output.wav

最新版本的Snowboy软件下载到Raspberry Pi上,运行以下命令来解压它。

请确认你位于Pi用户的主目录中。( /home/pi 或 ~)

snowboy编译出Makefile:73: recipe for target ‘_snowboydetect.so‘ failed

jack_control start

2.2 安装PyAudio,这个在requirements.txt里面要求了。

PyAudio 提供了 PortAudio 的 Python 语言版本,所以上面要安装portaudio。

sudo pip install pyaudio 2.3 安装其它依赖包

sudo apt-get install swig sox libpcre3 libpcre3-dev libatlas-base-dev 3 安装Python2版本

cd snowboy/swig/Python make 生成 _snowboydetect.so 就编译成功了 4 常见错误

…/…/lib/ubuntu64/libsnowboy-detect.a:error adding symbols: File in wrong format 此错误是Makefile中没有使用正确版本的libsnowboy-detect.a

在snowboy/lib下一共有

aarch64-ubuntu1604/ --对应arm64 ubuntu1604,经验证ubuntu1804也可以使用 android/ --对应android系统 ios/ --对应ios系统 node/ osx/ --对应macos rpi/ --对应树莓派32位arm ubuntu64/ --对应PC Ubuntu64

其它系统,查询电脑类型就可以知道用上面哪个了

uname -m 因此按下面修改Makefile就可以解决这个问题了

SNOWBOYDETECTLIBFILE = (TOPDIR)/lib/ubuntu64/libsnowboy−detect.aifneq(,(findstring arm,$(shell uname -m))) SNOWBOYDETECTLIBFILE = $(TOPDIR)/lib/rpi/libsnowboy-detect.a ifeq ($(findstring fc,$(shell uname -r)), fc) #fedora25-armv7这个没看到 SNOWBOYDETECTLIBFILE = $(TOPDIR)/lib/fedora25-armv7/libsnowboy-detect.a LDLIBS := -L/usr/lib/atlas -lm -ldl -lsatlas endif endif

#以下修改内容请根据系统选择,这里环境为ubuntu1804 ifneq (,$(findstring aarch64,$(shell uname -m))) SNOWBOYDETECTLIBFILE = $(TOPDIR)/lib/aarch64-ubuntu1604/libsnowboy-detect.a endif

或者前面全部注释,用下面这句 SNOWBOYDETECTLIBFILE = $(TOPDIR)/lib/aarch64-ubuntu1604/libsnowboy-detect.a 5 测试

cd snowboy/examples/Python python demo.py ../resources/models/snowboy.umdl 对着话筒说snowboy,如果出现以下提示,并听到叮的一声,就表示成功了。

INFO:snowboy:Keyword 1 detected at time: 2020-09-18 11:47:32 测试如果出现--问题1

Cannot connect to server socket err = No such file or directory Cannot connect to server request channel jack server is not running or cannot be started 请安装jackd2

apt-get install -y jackd2

#pulseaudio --kill关闭 --start启动 jack_control start #启动 status查看状态 exit退出 安装jackd2后重启一下,否则可能出现--问题2

Cannot lock down 82274202 byte memory area (Cannot allocate memory) python3版本可能出现问题3

from . import snowboydetect ImportError: attempted relative import with no known parent package 在目录example/Python3中添加空的__init__.py,另外在snowboydecoder.py

#!/usr/bin/env python 改为 #!/usr/bin/env python3

from . import snowboydetect 改为 import snowboydetect 问题3

出现了IOError: [Errno -9996] Invalid output device (no default output device)

原因是系统没有音频输出设备(喇叭、音箱)或者没有配置好。因为检测到唤醒词后会播放Ding.wav的声音。另外给两个关键词almixer和aplay。

安装Whisper(语音识别) pip install -U openai-whisper

升级 pip install --upgrade --no-deps --force-reinstall git+https://github.com/openai/whisper.git

安装必备库 sudo apt update && sudo apt install ffmpeg

whisper test.wav --model tiny --language zh

import whisper

model = whisper.load_model("tiny") result = model.transcribe("test.mp3", fp16=False) print(result["text"])

简体繁体不区分问题: prompt='以下是普通话的句子' result = model.transcribe(audioFile, task='translate',language='zh',verbose=True,initial_prompt=prompt)

pip install opencc

import opencc cc = opencc.OpenCC(“t2s”) simplified_result = cc.convert('漢字')
print(“简体格式:”, simplified_result) #输出结果为 简体格式:汉字

安装本地大模型,推荐qwen0.5b

然后安装 pip3 install ollama 测试不要用ollama.py命名

天气预测依赖库 pip install pandas scikit-learn statsmodels

自动化模糊控制依赖库 import numpy as np import skfuzzy as fuzz from skfuzzy import control as ctrl

 

五、作品功能演示视频

    视频记录了系统完整的使用过程,感谢大家支持!  演示视频

 

六、项目总结

        原本打算使用国产工业互联网平台进行无代码开发,由于平台近期维护升级,无奈选用B方案,使用PYTHON进行编程,部署环境花费了1周时间,库模块之间的依赖相互冲突,导致树莓派系统重做了好几次,几经周折才将所有的库模块安装测试完成,又花费了一周时间调试测试,最终累计花费2周时间完成,将树莓派5(2G)性能压榨到极致!集成离线语音唤醒+离线语音识别+离线AI大模型+离线TTS文字转语音+自动化控制+天气预测,CPU负荷4核100%!内存使用超100%!

        作为一个原型项目基本上实现了预定的目标,通过简单的DEMO测试,系统暂时运行良好。由于时间关系,只完成了核心功能。后期有时间会加入更多传感器和执行器、针对智能家居做一个完整案例。

 

        帖子分享链接汇总:

    https://bbs.eeworld.com.cn/thread-1294865-1-1.html

    https://bbs.eeworld.com.cn/thread-1295485-1-1.html

 

七、其他


        感谢得捷电子和EEWORLD举办这次物联网大赛,同时提供了研发资助。感谢大家对本项目的关注。祝愿这次比赛圆满成功。祝各位参赛选手都能取得优异的成绩!

 

基于AI的室内环境自适应调节系统作品文档提交.pdf (1.2 MB)
(下载次数: 6, 2024-11-6 19:47 上传)

 

 

本帖最后由 cpsiot 于 2024-11-8 17:28 编辑

回复评论

暂无评论,赶紧抢沙发吧
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复