DDZZ669

  • 2024-05-18
  • 发表了主题帖: 【2023 DigiKey大赛参与奖】开箱帖 舵机云台+RGB8x8+RP2040板子

    参与奖换了3样: 舵机云台x2,RGB8x8,RP2040板子   这个是舵机云台,散件,需要自己组装,有说明书 这个是RGB8x8点阵,需要搭配树莓派使用 这个是RP2040主控的一个板子 舵机云台组装好之后的样子 点阵屏和树莓派组装到一起的样子 以后有时间再玩    

  • 2024-01-31
  • 回复了主题帖: 【年终总结颁奖】2024,让我们保持热爱,奔赴下一场山海!

    已确认个人信息无误

  • 2024-01-19
  • 回复了主题帖: EEWorld 社区 2023年度人物颁奖

     个人信息无误。感谢EE论坛。

  • 2024-01-14
  • 回复了主题帖: “年终总结” 我会是个努力奔跑的人

    lugl4313820 发表于 2024-1-14 20:51 大佬什么时候再来一个满分试用项目呀,你的帖子那真是太优秀了。 谢谢,有机会再参与

  • 发表了主题帖: “年终总结” 我会是个努力奔跑的人

    时间如白驹过隙,转眼已到了2024,抽出时间,总结下2023。 **2015**年加入EE大家庭 23年总共发表了**25**篇帖子 **2023年个人总结**: ①**完成了多少的目标?** 2023没有专门制订详细目标,只在运动健康APP上设置了一个跑步目标,超额完成。 2024打算简单罗列一下生活学习上的目标,看看会不会有什么神奇的效果。 ②**学到了哪些新的知识?** 学习了UML与状态机的一些知识(如帖子分享)。 学习使用了RSIC-V架构的Linux嵌入式系统的应用开发(如帖子分享)。 学习使用了STM32MP157系列运行Linux的开发使用(如帖子分享)。 ③**工作和生活有了什么样的变化?** 工作上,仍然正常进行,项目有序推进。 生活上,来杭漂泊已多年,整体上一如既往;2023终于不再受疫情影响,自由出行回归正常,很好。 ④**谁给了我帮助,有谁鼓励了我,有谁给我留下了深刻的印象?** 这里表扬下敬业的EEworld的管理员,本年能参与两个论坛活动,都是EE管理员单独发消息通知。 **2024整装出发**: ①**给自己设立的目标是什么?** 目标就是尽量实现2024设置的目标,具体的目标暂不展开描述,总体上,在工作、学习、生活上还要努力奔跑。 2024,除了专业知识的学习,可能更多会偏向于提高自身的其它技能,如社交。 ②**对自己的工作、生活有哪些规划?** 工作:提高专业技能,做好产品。 生活:而立之年,期遇良缘。 2024,一起加油~

  • 回复了主题帖: 基于STM32MP157D-DK1的智慧家居控制器

    作品源码显示已审核,但还是点不开,管理员帮忙看下什么情况哈 @lightxixi 资源名称:基于STM32MP157D-DK1的智慧家居控制器-项目源码 链接:https://download.eeworld.com.cn/detail/DDZZ669/630690 这里没有显示在审核: 点击进入又显示审核中: 消息通知中显示已审核: “点击此处查看详情”是这个界面:    

  • 2024-01-09
  • 回复了主题帖: 基于STM32MP157D-DK1的智慧家居控制器

    qiao--- 发表于 2024-1-9 21:35 大佬 资源链接无效,麻烦大佬更新一下 显示还在审核中,审核完链接应该会自动生效

  • 2024-01-08
  • 回复了主题帖: 基于STM32MP157D-DK1的智慧家居控制器

    秦天qintian0303 发表于 2024-1-8 17:29 杭州没有暖气,这屋内只有16度,这的多么冷啊   还好,还好

  • 2024-01-07
  • 发表了主题帖: 基于STM32MP157D-DK1的智慧家居控制器

    本帖最后由 DDZZ669 于 2024-1-7 23:09 编辑   基于STM32MP157D-DK1的智慧家居控制器   作者:码农爱学习(DDZZ669)    一、作品简介 本项目为基于STM32MP157D-DK1的智慧家居控制器,用到的板卡为ST的STM32MP157D-DK1开发板,其芯片为STM32MP157,具有2个A7内核和1个M4内核。作品的实物照片如下: 图 1 作品照片 智慧家居控制器的界面拟采用Qt设置,外接HDMI显示器作为交互屏幕,再外接温湿度传感器(或通过无线节点接收温湿度数据)、摄像头等外设,实现如网络天气展示、室内温湿度展示、家中电器控制、安防监控、音乐视频播放娱乐等功能。   二、系统框图 本项目的系统结构如下: 图 2 系统结构图 主控为STM32MP157,内含两个A7核和一个M1核。A7核运行Linux系统,实现Qt界面程序的运行,摄像头数据的采集等,与无线节点进行TCP通信灯;M4核运行裸机系统或RTOS系统,可用于外接传感器以及外接家中电器的控制开关;A7核与M4核采用OpenAMP通信框架实现异核通信。 此外,STM32MP15D-DK1板块通过插入网线可连接互联网,实现互联网信息(网络天气、网络时间等)的获取;通过家中的路由器,又可与其它无线节点进行通信,例如与温湿度节点通信,可获取温湿度数据,与灯、风扇灯无线节点通信,可控制其开关。   三、各部分功能说明 本项目的功能,主要通过屏幕上的操作界面来呈现,目前可展示的功能包括: 网络天气信息的展示(展示当前城市当天的天气、未来7天的天气等) 家中温湿度的展示(当前温度湿度、历史数据曲线图) 家中电器的控制(灯的控制、风扇的控制) RGB氛围灯的颜色调节控制 摄像头监控(USB摄像头) 音乐播放(播放本地音乐、歌词展示灯) 视频播放(播放本地视频) 时间显示(时钟形式) 图 3 主操作界面 3.1城市天气显示 STM32MP157D-DK1插入网线,可以连接互联网来实现对网络天气信息的获取。 通过http协议获取指定城市的天气数据,包括今天的天气类型,最高最低温度,以及最近7天的天气等。原始数据是json格式的,需要从json数据中解析出天气、温度等信息,然后将这些信息显示到屏幕中。 最终的Qt天气界面如下,点击主界面的天气图标即可进入到如下的天气界面。 上半部分为今天的天气,下半部分为近7天的天气(通过左右滑动可查看后面的天气),通过左上角的返回按钮可回到主界面。 图 4 天气信息界面 3.2室内温湿度显示 除了显示不同城市的天气数据,家庭环境中的温湿度也值得我们关注,考虑有两种方案实现温湿度数据的采集: 方案一:M4核通过IIC接口外接DHT11温湿度传感器采集数据,再通过OpenAMP通信机制将数据发给A7核,最终在Qt界面展示温湿度数据。 方案二:通过无线节点(如ESP8266)外接DHT11温湿度传感器,将数据通过无线TCP直接发送给A7核,最终在Qt界面展示温湿度数据。 由于开发时间紧张,OpenAMP通信机制还在学习中,而方案二的无线方式也更新灵活,本项目目前采用方案二的无线通信方式。 温湿度数据展示的Qt界面如下,STM32MP157D在连接到ESP8266无线节点获取到实时的温湿度数据后,可以显示实时的温度和湿度,如下: 图 5 温湿度信息界面 另外,温湿度的历史数据,可以通过曲线图展示变化趋势,这是温度曲线: 图 6 实时温度曲线图 这是湿度曲线(人为触摸温湿度传感器制造变化数据): 图 7 实时湿度曲线图 3.3家居电器控制 家居电器的控制界面设计如下,目前设计了灯的控制和风扇的控制:           图 8 家中电器控制界面 家中电器的控制,与刚才介绍的温度度传感器类似,也可以考虑两种方案: 方案一:家中电器的控制开关与STM32MP157的M核所控制的引脚相连,A核上运行的Qt操作指令通过异核通信将执行发给M核来控制电器开关。 方案二:家中电器与无线节点(如ESP8266)相连接,Qt操作指令通过无线通信将指令发给无线节点来控制电器开关。 除了简单的开关控制,家中可能还会有RGB氛围灯需要控制,这里也设置了颜色调节操作界面,如下:   图 9 RGB氛围灯颜色调节界面 3.4视频监控 智能家居系统中,视频监控的功能也是必不可少的,本项目通过外接USB摄像头,实现视频监控功能,可以实时查看摄像头的画面。 设计的Qt显示界面和实际的演示效果如下: 图 10 视频监控界面 3.5音乐&视频娱乐 设计了音乐播放器和视频播放器,用于智慧家居中的娱乐功能。音乐播放器的界面如下,具有基础的音乐播放、上一首下一首切换、歌词展示等。 图 11 音乐播放器界面 右下角可展开音乐列表子界面: 图 12 音乐列表 下面是设计的视频播放器的界面: 图 13 视频播放器界面 3.6时钟 设计了一个钟表形状的时钟,通过获取Linux系统实际,可展示当前的时间: 图 14 时钟界面 四、作品源码 源码已上传EEWord下载中心,资源名称: 链接:https://download.eeworld.com.cn/detail/DDZZ669/630690 源码结构   主体代码采用Qt编程,运行在STM32MP157的A7核的Linux系统中,源码位于01-stm32mp157_qt目录中。 该Qt程序内含多个功能,通过子文件夹分类存放: App/QtUi/Skin/MyApp.pro:主体框架部分 Weather:网络天气功能代码 DHT11:温湿度功能代码 LEDFan:电器控制功能代码 RGBLed:RGB氛围灯代码 USBCamera:USB摄像头代码 MusicPlayer:音乐播放器代码 VideoPlayer:视频播放器代码 Clock:时钟代码 ESP8266作为无线节点,外接DHT11温湿度传感器采集数据,通过TCP发送给STM32MP157。 ESP8266采用Arduino编程,源码位于02-dth11tcp目录中。   五、作品功能演示视频 演示视频:基于STM32MP157D-DK1的智慧家居控制器 视频链接1:https://training.eeworld.com.cn/video/38948 视频链接2:https://www.bilibili.com/video/BV1V94y1u7EK 六、项目总结 本项目为基于STM32MP157D-DK1的智慧家居控制器,通过外接HDMI显示器作为操作屏幕,通过编写Qt程序实现智能家居的整体界面,外接摄像头、传感器、与无线节点通信等,实现具体的数据获取与各种控制功能、信息服务功能等。 在整个项目开发中,学习了STM32MP157这款芯片的使用。STM32MP157D-DK1具有ARM A7和Cortex M4双核架构,A7的开发过程中,首先学习了固件烧录,为了进行Qt开发,重新编译了具有Qt功能的系统源码和SDK,从而继续实现Qt程序的开发。M4核的开发过程中,学习了STM32CubeIDE的使用与基础的点灯程序编写,关于A7核与M4核的通信还在学习中。 在开发学习中,将一些开发经验通过文章的形式分享,链接如下: 【DigiKey创意大赛】STM32MP157D-DK1开箱 【DigiKey创意大赛】STM32MP157D固件烧录 【DigiKey创意大赛】STM32MP157D构建Qt镜像 【DigiKey创意大赛】STM32MP157D Qt程序编译运行 【DigiKey创意大赛】STM32MP157D M核程序开发 七、其他 文档下载:  

  • 加入了学习《基于STM32MP157D-DK1的智慧家居控制器》,观看 基于STM32MP157D-DK1的智慧家居控制器

  • 上传了资料: 基于STM32MP157D-DK1的智慧家居控制器-项目源码

  • 发表了主题帖: 【DigiKey创意大赛】STM32MP157D M核程序开发

    之前的文章,都是在A核上进行Linux开发,本篇介绍M核程序的开发。 # 1 新建工程 文件,新建,STM32工程 在搜索框输入STM32MP157D后,选STM32MP157DAC1: 点Next之后,设置工程的名称,例如01_LED: 然后来到这个界面: # 2 配置引脚 使用板子上的LD7来测试,其对应的是PH7引脚: 将PH7引脚设置为Output模式,并右键设置Pin Reserved,选择Cortex-M4 FW 点击左边的System Core,再点到GPIO,可以进行GPIO配置,如上下拉、速率等: 然后时钟可以不用再配置。 项目管理这里,注意勾选如下两项: 最后Ctrl+S保存,会提示要生成代码,点Yes即可。 # 3 修改代码并编译 在main.cpp中,添加控制LED亮灭逻辑代码: ```c HAL_GPIO_WritePin(LD7_GPIO_Port,LD7_Pin,GPIO_PIN_SET); HAL_Delay(500); HAL_GPIO_WritePin(LD7_GPIO_Port,LD7_Pin,GPIO_PIN_RESET); HAL_Delay(500); ``` 点击小锤子图标编译。 # 4 烧录程序 将开发板的BOOT配置BOOT0=OFF,BOOT1=ON。 然后板子的ST-LINK接口连接板子到电脑,配置ST-Link 菜单中Run中选择Debug Configurations... 切换到调试器窗口,选择thru JTAG/SWD link: 然后点击 Aply,Debug 开始调试。 全速运行后,可以看到LD7的橘色灯会循环亮灭:

  • 2024-01-01
  • 回复了主题帖: 【DigiKey创意大赛】STM32MP157D Qt程序编译运行

    Jacktang 发表于 2023-12-30 22:21 执行成功后,会生成sdk目录,怎么判断是成功呢 sdk目录会出现一些文件,最后编译qt程序时也能正常编译

  • 2023-12-30
  • 发表了主题帖: 【DigiKey创意大赛】STM32MP157D Qt程序编译运行

    本帖最后由 DDZZ669 于 2023-12-30 20:50 编辑 # 1 编译安装SDK 编译SDK,在Ubuntu中执行如下指令: ```sh bitbake st-example-image-qtwayland -c populate_sdk ``` 执行成功后,会生成sdk目录,如下: 执行sdk中的脚本,来安装SDK到指定目录: ```sh ./tmp-glibc/deploy/sdk/st-example-image-qtwayland-openstlinux-weston-stm32mp1-x86_64-toolchain-4.2.1-snapshot.sh -y -d /home/xxpcb/myTest/STM32MP157/STM32MPU-Ecosystem-v5.0.0/Developer-Package/SDK ``` # 2 交叉编译Qt 例如编译examples例程中的analogclock程序: ```sh cd ~/myTest/STM32MP157/STM32MPU-Ecosystem-v5.0.0/Developer-Package/SDK/sysroots/cortexa7t2hf-neon-vfpv4-ostl-linux-gnueabi/usr/share/examples/gui . ~/myTest/STM32MP157/STM32MPU-Ecosystem-v5.0.0/Developer-Package/SDK/environment-setup-cortexa7t2hf-neon-vfpv4-ostl-linux-gnueabi qmake && make ``` 最后编译生成analogclock文件 # 3 在板子中运行Qt 将analogclock文件拷贝到板子中运行,效果如下:

  • 2023-12-24
  • 发表了主题帖: 【DigiKey创意大赛】STM32MP157D构建Qt镜像

    本篇来介绍Qt环境配置,需要重新编译带有Qt环境的镜像 # 1 Distribution包的构建 ## 1.1 repo初始化 ```sh cd ~/myTest/STM32MP157/STM32MPU-Ecosystem-v5.0.0/Distribution-Package #repo init python3 ~/bin/repo init -u https://github.com/STMicroelectronics/oe-manifest.git -b refs/tags/openstlinux-6.1-yocto-mickledore-mp1-v23.06.21 #使用国内镜像源 export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo' #repo sync python3 ~/bin/repo sync ``` 初始化完成后,会有一个layers文件夹 ## 1.2 构建系统初始化 首先初始化OpenEmbedded构建环境 ```sh DISTRO=openstlinux-weston MACHINE=stm32mp1 source layers/meta-st/scripts/envsetup.sh ``` 可能需要安装一些依赖: ```sh sudo apt-get update sudo apt-get install build-essential chrpath diffstat gawk gcc-multilib libegl1-mesa libmpc-dev libsdl1.2-dev libssl-dev pylint python3-git python3-jinja2 python3-pip socat texinfo xterm zstd ``` 然后再执行bitbake构建系统 ```sh bitbake st-example-image-qtwayland ``` 构建成功后,可以在deploy/image/stm32mp1目录下看到生成的镜像和相关文件 # 2 烧录 使用这个FlashLayout_sdcard_stm32mp157d-dk1-optee.tsv烧录脚本 与上一篇介绍的烧录方式一样,进行烧录到SD卡。 烧录完成后,搜索板子里qt相关文件。 可以看到搜出需要qt相关的文件,说明是支持qt的系统。

  • 2023-12-10
  • 回复了主题帖: 【DigiKey创意大赛】STM32MP157D-DK1开箱

    秦天qintian0303 发表于 2023-12-10 09:20 需要一个屏      可以接HDMI显示屏

  • 发表了主题帖: 【DigiKey创意大赛】STM32MP157D固件烧录

    本篇介绍STM32MP157D-DK1开发板如何烧录官方固件。 #  1 烧录准备工作 ## 1.1 安装STM32CubeProgrammer 需要安装在Ubuntu虚拟机中。 先下载STM32CubeProgrammer软件:https://www.st.com/en/development-tools/stm32cubeprog.html#get-software 解压安装,安装时会有界面形式的安装提示: ```sh unzip en.stm32cubeprg-lin-v2-15-0.zip ls ./SetupSTM32CubeProgrammer-2.15.0.linux ``` 安装完成后,设置环境变量 ```sh export PATH=/home/xxpcb/myTest/STM32MP157/tool/cubeprog/bin:$PATH ``` ## 1.2 安装USB serial link for flashing 安装命令: ```sh sudo apt-get install libusb-1.0-0 ``` 然后将一些文件拷贝到/etc/udev/rules.d中: ```sh cd ~/myTest/STM32MP157/tool/cubeprog/Drivers/rules sudo cp *.* /etc/udev/rules.d/ ``` ## 1.3 下载镜像 下载STM32MP1 Starter Package镜像,地址https://www.st.com/en/embedded-software/stm32mp1starter.html#get-software 然后拷贝到Ubuntu中并解压: ```sh cd /home/xxpcb/myTest/STM32MP157/STM32MPU-Ecosystem-v5.0.0/Starter-Package tar xvf en.flash-stm32mp1-openstlinux-6.1-yocto-mickledore-mp1-v23.06.21.tar.gz ``` 二进制文件和 Flash 布局文件位于stm32mp1目录中: # 2 烧录 ## 2.1 连接板子与电脑 板子插入SD卡,BOOT拨码开关都拨到0,连接电源线,连接Type-C数据线,按下复位键,Type-C数据线是烧录线,连接Ubintu虚拟机,选DFU这个: ## 2.2 命令行烧录 进入到下载的固件目录 ```sh cd ~/myTest/STM32MP157/STM32MPU-Ecosystem-v5.0.0/Starter-Package/stm32mp1-openstlinux-6.1-yocto-mickledore-mp1-v23.06.21/images/stm32mp1 ``` 查看烧录工具的版本和板子连接信息: ```sh STM32_Programmer_CLI --h STM32_Programmer_CLI -l usb ``` 使用如下命令进行烧录: ```sh STM32_Programmer_CLI -c port=usb1 -w flashlayout_st-image-weston/optee/FlashLayout_sdcard_stm32mp157d-dk1-optee.tsv ``` 烧录成功后的打印信息如下: BOOT拨码恢复到之前的从SD卡启动的状态,连接HMDI显示器查看效果: # 3 总结 本篇介绍了STM32MP157D-DK1开发板烧录官方固件的详细过程,并演示烧录后的效果。

  • 2023-12-09
  • 发表了主题帖: 【DigiKey创意大赛】STM32MP157D-DK1开箱

    本帖最后由 DDZZ669 于 2023-12-9 18:25 编辑 收到STM32MP157D-DK1开发板了,本篇进行开箱测评。 STM32MP157D-DK1套件利用了STM32MP157产品线中频率更高的800 MHz微处理器功能,支持用户使用STM32 MPU OpenSTLinux Distribution软件(用于主处理器,A7核,Linux系统)和STM32CubeMP1软件(用于协同处理器,M4核,单片机)轻松开发应用程序。 # 1 开箱 板子和配件如下,包括: - STM32MP157D-DK1开发板 - 双头Type-C电源线 - 16GB MicroSD卡 - 板子介绍说明卡 板子介绍说明卡上,有此开发板对应资料的网址说明: # 2 板子测评 ## 2.1 正面 板子正面主要功能元件包括: - STM32MP157芯片,采用TFBGA361封装 - DSI屏幕接口 - 5V/3A Type-C电源接口 - 网线接口 - 耳机接口 - 复位按键、用户按键 - ST-LINK接口(兼具串口功能) - HDMI屏幕接口 - USB-Type-C接口 - USB接口x4 - 树莓派类型的排针接口 ## 2.2 反面 板子反面主要功能元件包括: - BOOT拨码开关 - Arduino类型的排座接口 - Micro SD卡插槽 ## 2.3 板子资源 - 基于STM32MP157 Arm®的双Cortex®- A7 800 MHz 32位+ Cortex®- M4 32位MPU,采用TFBGA361封装 - ST PMIC STPMIC1 - 4-Gb DDR3L,16位,533 MHz - 符合IEEE-802.3ab标准的1-Gbit/s以太网 (RGMII) - USB OTG HS - 音频编解码器 - 1个唤醒按钮,1个复位按钮,2个用户按钮 - 4个用户LED - 5 V / 3 A USB Type-C 电源输入 - 具有USB重新枚举功能的板上ST-LINK/V2-1调试器/编程器:虚拟COM端口和调试端口 - 板连接器:   - 以太网 RJ45   - 4个USB主机Type-A   - USB Type-C DRP   - MIPI DSI   - HDMI   - 立体声耳机插孔,包括模拟麦克风输入   - microSD卡   - GPIO扩展连接器(Raspberry Pi接口)   - ARDUINO Uno V3扩展连接器 # 3 资料 板子的配套资料,可以到ST的官方查看和下载。 这个是STM32MP157D-DK1开发板的资料链接: https://www.st.com/zh/evaluation-tools/stm32mp157d-dk1.html 这个是在线说明文档链接: https://wiki.stmicroelectronics.cn/stm32mpu/wiki/Category:STM32_MPU_boards # 4 总结 本篇进行了STM32MP157D-DK1开发板的开箱测评,介绍了开发板的基础硬件功能,以及官网的资料与文档链接。

  • 2023-12-06
  • 发表了主题帖: 【玄铁杯第三届RISC-V应用创新大赛】基于LicheePi 4A的智能网联汽车控制器

    本帖最后由 DDZZ669 于 2023-12-6 00:24 编辑 基于LicheePi 4A的智能网联汽车控制器 作者:码农爱学习 项目背景 近年来,随着人工智能、芯片技术、通信网络等的不断发展,安全辅助驾驶、自动驾驶也在一步步走进我们的生活,如何借助科技的进步,来提高驾驶的安全性与舒适体验性,是我们追求的目标。RISC-V作为比肩ARM的架构,近年来在不断发展,探索使用RISC-V架构的SoC作为智能汽车的控制器,提高驾驶的安全与舒适性,是一个值得研究的方向。 作品简介 本项目“基于LicheePi 4A的智能网联汽车控制器”,主要尝试实现两方面内容: 一是实现驾驶的舒适性,包括提供车载娱乐(车载音乐播放、视频播放),提高车内乐趣;提供天气查询服务,提前了解行程规划中天气信息;提供地图导航;提供车内温湿度监控与空调控制,使车内环境保持舒适;提供智能语音助手,解放双手,实现语音控制等功能,另外,控制器还可兼具行车记录仪功能。 二是实现驾驶的安全性,借助视觉与AI算法,发挥LicheePi 4A的算力,实现如车道线检测,实时监测汽车是否偏离车道;交通标志与路牌检测,辅助提醒道路信息;行人与车辆检测,对可能出现的突发情况进行预警与安全干预。此外,当多个车辆都安装了智能控制器,通过车联网,进行车辆行驶状况等信息实时共享与安全干预,可极大避免如连环追尾等事故的发生;对于路况的共享,可提前预警需谨慎驾驶的路段以及规划最优路线等。 基于上述设想,在过去这些天对LicheePi 4A的学习与开发,已实现了设想中的部分功能,最终的作品实物图如下:   图 1 作品照片 目前主要实现的功能包括: 音乐播放器功能 视频播放器功能 时间展示功能 天气服务功能 车内温湿度显示功能 车前路径显示功能 地图服务功能 车辆信息展示功能 此外,对于行人和车辆的AI识别,已经车道线检测,进行了单独的功能测试,后期有时间再集成到整个项目中。 系统框图 本项目的整体硬件结构如下:主体为LicheePi4A主控制器,外接摄像头获取图像,外接音箱播放声音,外接屏幕(项目中时间使用的远程登录虚拟屏幕)实现与人交互,与ESP8266节点进行TCP通信,获取温湿度传感器的数据。 图 2 项目硬件结构 对于功能的展示,使用python中的Qt功能设计界面,主要代码也是通过python实现。为了便于展示各个功能的使用,设计一个汽车中控屏的主界面,主界面上有各个子功能的图标按钮,按下对应的图标,即可进入到对应的子功能界面中。在每个子界面的右上角,通过返回按钮或返回图标,可以再回到主界面,如下图所示。 图 3 Qt界面主体框架 主框架的细节可参考之前的测评笔记:LicheePi 4A pyQt简易汽车中控UI框架 各部分功能说明 4.1音乐播放器功能 音乐播放器功能,可以提供车内的娱乐功能。 界面主要包括三部分: 音乐文件列表 播放进度条 播放操作按钮 设计的界面如下,初始会读取默认位置的音乐文件,展示音乐列表,还可通过右下角文件夹选择按钮,指定音乐文件夹。播放功能方向,可以进行基础的音乐播放功能,如开始、暂停、继续,上一曲、下一曲等。 音乐文件,支持中文文件名的展示。后期还可继续完善,增加如歌词展示,播放顺序选择,音乐收藏,网络音乐的获取与播放等。 图 4 音乐播放器界面 软件实现方面,使用Qt自带的媒体播放器QMediaPlayer进行音乐播放。QMediaPlayer的主要使用方法: player = QMediaPlayer() 创建一个播放器 player.setMedia(QMediaContent(media_file)) 设置要播放的音乐 player.play() 开始播放 player.pause() 暂停播放 音乐播放器的具体实现细节,还可参考之前的试用报告:【玄铁杯第三届RISC-V应用创新大赛】LicheePi 4A pyQt音乐播放器与中文名问题解决 4.2视频播放器功能 视频播放器功能,一是可以提供车内的娱乐功能,二是可以作为播放器,播放如行车记录仪中的录制的视频。 视频播放器的界面设计与软件实现,与音乐播放器基本类似,也是使用QMediaPlayer进行媒体播放。   图 5 视频播放器界面 在板子中实际播放时,会有卡顿的现象,具体原因还不清楚。 视频播放器的具体实现细节,还可参考之前的试用报告:【玄铁杯第三届RISC-V应用创新大赛】LicheePi 4A pyQt视频播放器与遇到问题 4.3时间展示功能 时间展示功能,可以为提供车内人员时间信息。 为了更全面的呈现时间,设计了圆盘钟表形式的时钟,和现代电子表形式的时间展示两种形式。 圆形表盘的设计,通过Qt中的QPainter依次绘制圆形表盘,短直线的刻度,三角形的表针实现。获取LicheePi 4A已联网的系统的时间,再结合QTime的定时器功能,每秒更新一下时间的显示。 电子表的设计,通过QtWidgets中的QLCDNumber组件实现,通过设置显示格式,设置为时分秒的展示形式。获取与更新时间的机制与圆形表盘类似。   图 6 时间展示界面 4.4天气服务功能 天气服务功能,可以为驾驶员提供当地的天气信息,以及目的地的天气信息,为行车环境提供天气服务信息。 天气界面,通过Qt Creadtor进行图形化的界面设置:左边是今天的天气,右边是后3天的天气,天气类型通过对应的天气图标展示。 通过地址下拉选择框,可以选择展示不同城市的天气信息。   图 7 天气服务界面设计 天气的具体数据,是联网获取的,可以使用python中的requests模块,获取网络天气服务,通过指定地区码,可获取指定城市的天气,比如101210101就是杭州的地区码。获取到的数据为json格式,可解析获取需要的字段。   图 8 联网获取天气的代码 获取到的具体数据,格式化显示出来如下:   图 9 天气数据 选择不同的城市,实际展示效果如下:   图 10 不同城市天气展示 天气服务功能,还可参考之前的试用报告:【玄铁杯第三届RISC-V应用创新大赛】LicheePi 4A pyQt天气服务与车内温湿度 4.5车内温湿度显示功能 车内温湿度显示功能,提供车内实时的温湿度信息。 通过ESP8266无线节点,将DHT11温湿度传感器的数据,通过TCP socket的方式,发送给LicheePi 4A板子进行数据展示。 ESP8266部分,采用Arduino IDE编程,实现DHT11温湿度数的获取和数据发送。 后期还可继续完善,增加如根据温湿度,自动调节车内空调系统等。   图 11 车内温湿度界面 温湿度功能,还可参考之前的试用报告:【玄铁杯第三届RISC-V应用创新大赛】LicheePi 4A pyQt天气服务与车内温湿度 4.6车前路况显示功能 车前路况显示功能,主要是通过摄像头,实时展示车前的路况,类似于行车记记录仪。此外,后期如果增加了AI识别功能,可为AI识别提供实时的视频图像。 目前摄像头使用OpenCV接口获取USB摄像头图像,并结合Qt界面展示出来。   图 12 车前路况显示界面 关于摄像头的使用,还可参考之前的试用报告:【玄铁杯第三届RISC-V应用创新大赛】LicheePi 4A YOLOX初体验与USB摄像头测试 4.7地图服务功能 地图服务功能,可以为驾驶员提供位置信息,以及行程的导航信息。 地图的展示,使用的是python中的地理可视化工具包folium,使用folium.folium.Map可以实现地图创建,使用folium.Circle或folium.CircleMarker可以进行地图标记,另外还有其它接口可实现路径规划等。 Qt中的WebEngine模块提供了一个Web浏览器引擎,可以将地图嵌入在Qt界面中展示,支持地图的放大缩小等基础显示功能。 在LicheePi 4A上测试运行时,可能是RISC-V的python包还未支持,未能在板子中成功安装Qt WebEngine,目前只是显示了一张地图的图片:   图 13 地图服务界面 关于地图功能的实验细节,可参考之前的试用报告:【玄铁杯第三届RISC-V应用创新大赛】LicheePi 4A pyQt地图服务与遇到问题 4.8车辆信息展示功能 车辆信息展示功能,可以为驾驶员提供当前车辆的各种信息,如车速、例程、电量、胎压、各种传感器的状态等等。 由于时间有限,目前只开发了汽车仪表盘的展示,可模拟展示汽车时速。 汽车仪表盘的设计,与时钟功能的设计类似,也是使用Qt中的QPainter依次绘制圆形表盘,短直线的刻度,四边形的表针实现。   图 14 车辆信息展示界面 4.9车辆与行人检测 车辆与行人检测,可以为汽车安全辅助驾驶提供保障,及时发现潜在危险。 目前的检测,使用的是例程中的YOLOX目标检测,在此例程中,学习到了AI模型的相关知识,以及HHB-onnxuruntime环境的基础使用。 实测测试的一张汽车与行人图片的AI识别结果如下,可以准确的识别:   图 15 车辆与行人检测 后续还测试了Yolov5n与MobilenertV2等框架的AI识别。 关于AI物品检测的相关实践,可参考之前的试用报告: 【玄铁杯第三届RISC-V应用创新大赛】LicheePi 4A YOLOX初体验与USB摄像头测试 【玄铁杯第三届RISC-V应用创新大赛】LicheePi 4A Yolov5n的HHB编译问题记录 【玄铁杯第三届RISC-V应用创新大赛】LicheePi 4A Yolov5n编译问题解决与demo测试 【玄铁杯第三届RISC-V应用创新大赛】LicheePi 4A HHB工具使用基础与MobilenertV2测试 4.10车道线检测 车道线检测,可以在驾驶过程中,为汽车偏离车道提供实时的安全纠正信息,提高驾驶的安全性。 目前使用python和OpenCV编程,通过二值化处理、图像阈值调整、Sobel特征提取等,提取车道线特征,检测到当前行车的车道线。特征提取示意如下:   图 16 车道线特征提取 在LicheePi 4A板子中,使用测试用的路况视频,来检测视频中的车道信息,并将检测到的当前车道通过绿色掩膜画出。实测效果如下:   图 17 车道线视频检测测试效果 视频演示 简介 基于LicheePi 4A的智能网联汽车控制器,视频内容包括: 作品硬件实物简介 作品软件环境简介 各项子功能的演示,包括: 音乐播放器功能:展示音乐播放,下一曲切换等 视频播放器功能:展示视频播放(还有点问题) 时间展示功能:圆盘时钟和电子表形式的时间展示 天气服务功能:不同城市的今天及近三天的天气信息展示 车内温湿度显示功能:与ESP8266无线节点连接,获取温湿度数据展示 车前路径显示功能:USB摄像头显示实时画面 地图服务功能:展示地图信息(暂无法在板子中运行) 车辆信息展示功能:显示汽车仪表盘等信息 行人车辆检测:AI识别行人和车辆 车道线检测:检测当前的车道线 视频链接 https://www.bilibili.com/video/BV1qN4y1e7RC/ 图 18 演示视频封面图[localvideo]ec4085f53a60dc9e91e5980a897791e1[/localvideo] 项目源码 本项目源码分享至gitee代码仓库:https://gitee.com/xxpcb/licheepi4a 图 19 源码结构 其中主体代码在1_pyQt文件目录中,包括pyQt设计的中控屏主界面和各个子功能模块的源码: 图 20 主体代码 发布的博文 试用期间分享了12篇笔记,平头哥论坛发布链接: 1.【玄铁杯第三届RISC-V应用创新大赛】LicheePi 4A 开箱测评与上电运行 2.【玄铁杯第三届RISC-V应用创新大赛】LicheePi 4A 烧录最新系统与VNC登录 3.【玄铁杯第三届RISC-V应用创新大赛】LicheePi 4A 编程环境与系统扩容测试 4.【玄铁杯第三届RISC-V应用创新大赛】LicheePi 4A pyQt音乐播放器与中文名问题解决 5.【玄铁杯第三届RISC-V应用创新大赛】LicheePi 4A pyQt视频播放器与遇到问题 6.【玄铁杯第三届RISC-V应用创新大赛】LicheePi 4A YOLOX初体验与USB摄像头测试 7.【玄铁杯第三届RISC-V应用创新大赛】LicheePi 4A Yolov5n的HHB编译问题记录 8.【玄铁杯第三届RISC-V应用创新大赛】LicheePi 4A Yolov5n编译问题解决与demo测试 9.【玄铁杯第三届RISC-V应用创新大赛】LicheePi 4A HHB工具使用基础与MobilenertV2测试 10.【玄铁杯第三届RISC-V应用创新大赛】LicheePi 4A pyQt地图服务与遇到问题 11.【玄铁杯第三届RISC-V应用创新大赛】LicheePi 4A pyQt简易汽车中控UI框架 12.【玄铁杯第三届RISC-V应用创新大赛】LicheePi 4A pyQt天气服务与车内温湿度 项目总结 本项目基于LicheePi 4A开发板,设计了一款智能网联汽车控制器,意在提高驾驶的舒适性和安全性,通过汽车中控屏的形式展示实现的功能。在驾驶舒适性方面,实现了基础的车载娱乐(音乐播放器、视频播放器)、网络信息服务(网络时间、网络天气、地图服务)、车辆信息(车内温湿度、车前影像、当前车速)等功能;在驾驶安全行方面,探索实践了使用AI框架进行行人和车辆的检测,通过图像特征检测车道线功能。后期可再继续完善优化,结合识别到的信息,进行安全辅助驾驶。 从拿到开发板,逐步熟悉系统的烧录与基础功能使用,到搭建开发环境,参考官方文档熟悉RISC-V架构的Linux系统的应用开发,对RISC-V架构的嵌入式开发板有了更深刻的感受,并初次接触了平头哥的HHB开发工具,熟悉了基础使用方法,并对应学习了Yolov5n模型与MobilenertV2模型在LicheePi 4A板子中的运行。 在学习探索的过程中,不断分享记录在开发中实际遇到的问题就解决记录,并学习其他网友的分享笔记,最终将实践过的各个子功能模块整合为目前的智能网联汽车控制器综合项目,并分享源代码供大家交流学习。 八、其他   word排版在这里显示的不太美观,可以看下PDF文档:  

  • 2023-11-27
  • 发表了主题帖: 【玄铁杯第三届RISC-V应用创新大赛】LicheePi 4A pyQt天气服务与车内温湿度

    本篇来实现天气服务和车内温湿度检测的基本功能。 主要实现的就是如下图主界面中的第4个和第5个按钮图标按下后的功能。 ![](https://xxpcb-1259761082.cos.ap-shanghai.myqcloud.com/pic2/LiPi4A/12/1.png) # 1 天气服务 天气服务和实现联网获取最近的天气情况。 ## 1.1 界面 设计的天气界面如下,左边是今天的天气,右边是后3天的天气: ![](https://xxpcb-1259761082.cos.ap-shanghai.myqcloud.com/pic2/LiPi4A/12/2.png) 这次通过Qt Creadtor进行图形化的界面设置: ![](https://xxpcb-1259761082.cos.ap-shanghai.myqcloud.com/pic2/LiPi4A/12/3.png) ## 1.2 联网获取天气 联网获取天气,可以使用python中的requests模块,获取网络天气服务,通过指定地区码,可获取指定城市的天气,比如101210101就是杭州的地区码。 ```python def getTemp():     try:         # 连接超时,6秒,下载文件超时,7秒         r = requests.get('http://t.weather.itboy.net/api/weather/city/101210101',timeout=(6,7))         print(r.json())         tempList = [         (r.json()['cityInfo']['city']),             #城市         (r.json()['data']['forecast'][0]['low']),   #今日低温         (r.json()['data']['forecast'][0]['high']),  #今日高温         (r.json()['data']['forecast'][0]['type']),  #今日天气         (r.json()['data']['forecast'][1]['low']),   #明日低温         (r.json()['data']['forecast'][1]['high']),  #明日高温         (r.json()['data']['forecast'][1]['type']),  #明日天气         (r.json()['data']['forecast'][2]['low']),   #后日低温         (r.json()['data']['forecast'][2]['high']),  #后日高温         (r.json()['data']['forecast'][2]['type']),  #后日天气         (r.json()['data']['forecast'][3]['low']),   #大后日低温         (r.json()['data']['forecast'][3]['high']),  #大后日高温         (r.json()['data']['forecast'][3]['type']),  #大后日天气         (r.json()['data']['forecast'][0]['fx']),  #今日风向13         (r.json()['data']['forecast'][0]['fl']),           (r.json()['data']['forecast'][1]['fx']),  #明日风向15         (r.json()['data']['forecast'][1]['fl']),           (r.json()['data']['forecast'][2]['fx']),  #后日风向17         (r.json()['data']['forecast'][2]['fl']),           (r.json()['data']['forecast'][3]['fx']),  #大后日风向19         (r.json()['data']['forecast'][3]['fl']),           (r.json()['cityInfo']['updateTime'])        #更新时间21         ]     except:         tempList = ["---"]*22         return tempList     else:         return tempList ``` 获取到数据,是json格式的,需注意的是,在python中打印出来,实际是python字典的形式(单引号),而标准的json是双引号表示字段,这种格式的数据,可在如下网站中进行格式显示: ``` //格式化查看:https://www.xhcode.com/pythonformat/ {     'message': 'success感谢又拍云(upyun.com)提供CDN赞助',     'status': 200,     'date': '20231127',     'time': '2023-11-27 22:06:21',     'cityInfo':     {         'city': '杭州市',         'citykey': '101210101',         'parent': '浙江',         'updateTime': '18:16'     },     'data':     {         'shidu': '53%',         'pm25': 23.0,         'pm10': 58.0,         'quality': '良',         'wendu': '14',         'ganmao': '极少数敏感人群应减少户外活动',         'forecast': [         {             'date': '27',             'high': '高温 20℃',             'low': '低温 8℃',             'ymd': '2023-11-27',             'week': '星期一',             'sunrise': '06:35',             'sunset': '16:59',             'aqi': 44,             'fx': '西北风',             'fl': '1级',             'type': '晴',             'notice': '愿你拥有比阳光明媚的心情'         },         {             'date': '28',             'high': '高温 17℃',             'low': '低温 4℃',             'ymd': '2023-11-28',             'week': '星期二',             'sunrise': '06:36',             'sunset': '16:58',             'aqi': 38,             'fx': '东北风',             'fl': '2级',             'type': '晴',             'notice': '愿你拥有比阳光明媚的心情'         },         {             'date': '29',             'high': '高温 16℃',             'low': '低温 8℃',             'ymd': '2023-11-29',             'week': '星期三',             'sunrise': '06:36',             'sunset': '16:58',             'aqi': 41,             'fx': '北风',             'fl': '2级',             'type': '多云',             'notice': '阴晴之间,谨防紫外线侵扰'         },         {             'date': '30',             'high': '高温 12℃',             'low': '低温 6℃',             'ymd': '2023-11-30',             'week': '星期四',             'sunrise': '06:37',             'sunset': '16:58',             'aqi': 60,             'fx': '北风',             'fl': '2级',             'type': '阴',             'notice': '不要被阴云遮挡住好心情'         },         {             'date': '01',             'high': '高温 12℃',             'low': '低温 8℃',             'ymd': '2023-12-01',             'week': '星期五',             'sunrise': '06:38',             'sunset': '16:58',             'aqi': 57,             'fx': '北风',             'fl': '2级',             'type': '阴',             'notice': '不要被阴云遮挡住好心情'         },         {             'date': '02',             'high': '高温 15℃',             'low': '低温 5℃',             'ymd': '2023-12-02',             'week': '星期六',             'sunrise': '06:39',             'sunset': '16:58',             'aqi': 52,             'fx': '西南风',             'fl': '1级',             'type': '多云',             'notice': '阴晴之间,谨防紫外线侵扰'         },         {             'date': '03',             'high': '高温 17℃',             'low': '低温 7℃',             'ymd': '2023-12-03',             'week': '星期日',             'sunrise': '06:40',             'sunset': '16:58',             'aqi': 48,             'fx': '东风',             'fl': '1级',             'type': '多云',             'notice': '阴晴之间,谨防紫外线侵扰'         },         {             'date': '04',             'high': '高温 15℃',             'low': '低温 7℃',             'ymd': '2023-12-04',             'week': '星期一',             'sunrise': '06:40',             'sunset': '16:58',             'aqi': 48,             'fx': '西风',             'fl': '1级',             'type': '阴',             'notice': '不要被阴云遮挡住好心情'         },         {             'date': '05',             'high': '高温 17℃',             'low': '低温 7℃',             'ymd': '2023-12-05',             'week': '星期二',             'sunrise': '06:41',             'sunset': '16:58',             'aqi': 45,             'fx': '东北风',             'fl': '1级',             'type': '小雨',             'notice': '雨虽小,注意保暖别感冒'         },         {             'date': '06',             'high': '高温 16℃',             'low': '低温 8℃',             'ymd': '2023-12-06',             'week': '星期三',             'sunrise': '06:42',             'sunset': '16:58',             'aqi': 43,             'fx': '北风',             'fl': '2级',             'type': '小雨',             'notice': '雨虽小,注意保暖别感冒'         },         {             'date': '07',             'high': '高温 14℃',             'low': '低温 7℃',             'ymd': '2023-12-07',             'week': '星期四',             'sunrise': '06:43',             'sunset': '16:58',             'aqi': 47,             'fx': '西风',             'fl': '2级',             'type': '晴',             'notice': '愿你拥有比阳光明媚的心情'         },         {             'date': '08',             'high': '高温 17℃',             'low': '低温 7℃',             'ymd': '2023-12-08',             'week': '星期五',             'sunrise': '06:43',             'sunset': '16:58',             'aqi': 48,             'fx': '西南风',             'fl': '2级',             'type': '晴',             'notice': '愿你拥有比阳光明媚的心情'         },         {             'date': '09',             'high': '高温 18℃',             'low': '低温 4℃',             'ymd': '2023-12-09',             'week': '星期六',             'sunrise': '06:44',             'sunset': '16:59',             'aqi': 45,             'fx': '南风',             'fl': '1级',             'type': '阴',             'notice': '不要被阴云遮挡住好心情'         },         {             'date': '10',             'high': '高温 16℃',             'low': '低温 12℃',             'ymd': '2023-12-10',             'week': '星期日',             'sunrise': '06:45',             'sunset': '16:59',             'aqi': 44,             'fx': '西风',             'fl': '1级',             'type': '阴',             'notice': '不要被阴云遮挡住好心情'         },         {             'date': '11',             'high': '高温 18℃',             'low': '低温 12℃',             'ymd': '2023-12-11',             'week': '星期一',             'sunrise': '06:45',             'sunset': '16:59',             'aqi': 45,             'fx': '西南风',             'fl': '1级',             'type': '晴',             'notice': '愿你拥有比阳光明媚的心情'         }],         'yesterday':         {             'date': '26',             'high': '高温 17℃',             'low': '低温 9℃',             'ymd': '2023-11-26',             'week': '星期日',             'sunrise': '06:34',             'sunset': '16:59',             'aqi': 60,             'fx': '西北风',             'fl': '1级',             'type': '多云',             'notice': '阴晴之间,谨防紫外线侵扰'         }     } } ``` 这里可以获取到从昨天到后续15天的天气情况,包括温度、日出日落时间、风力等详细数据,可以根据自己的需要进行展示。 # 2 车内温湿度 车内温湿度,用于获取车内实时的温度和湿度数据,进行展示,后续还可以增加功能如:根据温湿度和设置阈值,自动开启空调和通风系统等。 ## 2.1 界面 目前设计的界面比较简单,只是显示温度和湿度的数值: ![](https://xxpcb-1259761082.cos.ap-shanghai.myqcloud.com/pic2/LiPi4A/12/4.png) python代码如下: ```python from PyQt5.QtWidgets import QWidget,QHBoxLayout,QVBoxLayout,QPushButton, QLabel, QApplication, QLineEdit from PyQt5.QtCore import Qt from PyQt5.QtGui import QIcon, QPixmap, QPalette, QBrush import os, time, sys from uiDef import * class DHT11Widget(QWidget):     def __init__(self):         super().__init__()         #返回主界面         self.homeBtn = QPushButton(self)         self.homeBtn.setStyleSheet("QPushButton{border-image: url(resource/ic_home.png)}")         self.homeBtn.setFixedSize(30, 30)         self.headerLabel = QLabel(self)         self.headerLabel.setText("车内温湿度")         self.headerLabel.setStyleSheet("color:white")         self.hBoxHeader = QHBoxLayout()         self.hBoxHeader.addStretch(1)         self.hBoxHeader.addWidget(self.headerLabel)         self.hBoxHeader.addStretch(1)         self.hBoxHeader.addWidget(self.homeBtn)                  self.tempLabel = QLabel(self)         self.tempLabel.setText("温度:")         self.tempLabel.setStyleSheet("font-size:50px; color:white")         self.tempVal = QLineEdit("18℃")         self.tempVal.setStyleSheet("font-size:50px")         self.hboxTemp = QHBoxLayout()         self.hboxTemp.addStretch(1)         self.hboxTemp.addWidget(self.tempLabel)         self.hboxTemp.addWidget(self.tempVal)         self.hboxTemp.addStretch(1)         self.humiLabel = QLabel(self)         self.humiLabel.setText("湿度:")         self.humiLabel.setStyleSheet("font-size:50px; color:white")         self.humiVal = QLineEdit("55%")         self.humiVal.setStyleSheet("font-size:50px")         self.hboxHumi = QHBoxLayout()         self.hboxHumi.addStretch(1)         self.hboxHumi.addWidget(self.humiLabel)         self.hboxHumi.addWidget(self.humiVal)         self.hboxHumi.addStretch(1)         self.vboxTempHumi = QVBoxLayout()         self.vboxTempHumi.addLayout(self.hboxTemp)         self.vboxTempHumi.addLayout(self.hboxHumi)         #整体布局         self.vboxMain = QVBoxLayout()         self.vboxMain.addLayout(self.hBoxHeader)         self.vboxMain.addStretch(1)         self.vboxMain.addLayout(self.vboxTempHumi)         self.vboxMain.addStretch(1)         self.setLayout(self.vboxMain)                  #信号与槽         self.homeBtn.clicked.connect(self.returnHome)         self.homeBtn.clicked.connect(self.close)                  self.initUI()     # 初始化界面     def initUI(self):         self.resize(WIN_WIDTH, WIN_HEIGHT)         self.setWindowTitle('温湿度')         self.show()              def paintEvent(self, event):         palette = QPalette()         pix = QPixmap("resource/dht11Bg/bg.png").scaled(self.width(),self.height())         palette.setBrush(QPalette.Background,QBrush(pix))         self.setPalette(palette)              # 返回主页     def returnHome(self):         print("return home")         from homeUI import mainWindow         self.homeWindow = mainWindow()         self.homeWindow.show() if __name__ =='__main__':     import sys     app = QApplication(sys.argv)     my_widget = DHT11Widget()     my_widget.show()     sys.exit(app.exec()) ``` ## 2.2 获取实时温湿度 对于车内实时温湿度的获取,这部分还没来及做。 打算使用ESP8266微控制器外接DHT11温湿度传感器,作为一个节点,获取温湿度,并通过wifi将温湿度数据发送给LicheePi4A。 # 3 在板子中运行 以上介绍的程序,可以先在Window中调试,然后可以放到LicheePi4A板子中运行。 实际在板子中运行效果如下,这是天气服务的运行效果,可能是天气的图片是中文名称支持不太好,或是路径不对,天气图标还没显示出来,后续继续调试。 ![](https://xxpcb-1259761082.cos.ap-shanghai.myqcloud.com/pic2/LiPi4A/12/5.png) 这是温湿度界面的运行效果: ![](https://xxpcb-1259761082.cos.ap-shanghai.myqcloud.com/pic2/LiPi4A/12/6.png) # 4 总结 本篇实现了汽车中控中天气服务和车内温湿度检测的基础功能,后续有时间继续优化具体功能。

统计信息

已有619人来访过

  • 芯积分:1810
  • 好友:2
  • 主题:130
  • 回复:151

留言

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


现在还没有留言