【DIY】Linux智能家居
【DIY】Linux智能家居
本文最后更新于291 天前,其中的信息可能已经过时,如有错误请发送邮件到273925452@qq.com
Avatar
放暑假了!这是学习一个多月Linux驱动和应用后做的一个成果验证项目😊
有许多没有完善的地方,希望大家提出来。😀
如果需要教程的人多的话,小鹿就写一篇详细教程
开源链接在底部😊

视频展示


项目介绍

项目名称: 基于 IMX6ULL PRO 的智能家居控制系统

项目概述:本项目开发一套简易智能家居控制系统,利用 IMX6ULL PRO 开发板作为核心硬件平台,搭载 Linux 实时操作系统。项目通过移植和开发各类驱动及应用程序,实现了对家居环境的有效监测与智能控制。

关键技术与实现:

  • 驱动开发与设备树配置:
    • 成功移植并实现了 DHT11 温湿度传感器、SR501 红外人体感应器、AP3216C 环境光与接近传感器以及 SG90 伺服电机控制器等外设的 Linux 驱动程序。
    • 通过对设备树(Device Tree)的精确配置,确保了硬件资源的有效管理和外设的正确识别。
  • QT 图形界面移植与开发:
    • 使用 Qt 框架开发了用于设备控制和状态显示的图形用户界面,并成功移植到 ARM 架构的开发板上运行。
  • MQTT 协议栈移植:
    • 移植了 MQTT 协议栈到 ARM 开发板上,确保设备与阿里云服务器之间的稳定数据传输。
  • GPIO、I2C、PWM 和中断管理:
    • 利用 GPIO(通用输入输出接口)、I2C(串行总线协议)、PWM(脉宽调制)等接口的管理,为外设提供了灵活的控制手段。
    • 利用高效的中断处理机制,保证了系统可靠性。
  • LCD 显示与 Input 子系统:
    • 利用 LCD 显示屏,支持显示图形界面和其他相关信息。
    • 开发板集成了 Input 子系统,用于处理来自触摸屏或其他输入设备的用户输入。
  • Pinctrl 子系统与同步机制:
    • 应用了 Pinctrl(引脚控制)子系统来动态配置引脚功能,提高了系统的灵活性。
    • 实现了多任务间的同步与互斥机制,确保了多线程操作的一致性和稳定性。

系统架构与功能:

  • 通过集成开发板内置的 Wi-Fi 模块,实现了设备与互联网的无缝连接。
  • 移植 MQTT 协议栈,确保了与阿里云服务器之间的高效数据交换。
  • 开发了网页端交互界面,支持远程控制家居自动化模块,使得用户可以通过任何联网设备轻松管理家庭环境。

关键技术:驱动开发、应用开发,设备树配置、QT移植与应用开发、MQTT移植,gpio、i2c、pwm、Interrupt, lcd,Input子系统,Pinctrl子系统,同步与互斥


环境

开发板:IMX6ULL_PRO
屏幕:7寸LCD触摸屏;
内核版本:Linux-4.9.88
QT版本: 5.12.9
Qt Creator: 4.12.2
编译器:arm-buildroot-linux-gnueabihf-gcc
MQTT版本:5.12.9

文件说明

|-- 基于 IMX6ULL PRO 的智能家居控制系统
    |-- 01_QT程序
        |-- build-SmartHome-Heiweilu-Debug09 (qt编译后的文件)
        |-- SmartHome (qt工程)
    |-- 02_驱动程序
        |-- 01_模块驱动合集
            |-- 8723bu.ko
            |-- ap3216c_drv.c
            |-- dht11_drv.c
            |-- led_drv.c
            |-- sg90_drv.c
            |-- sr501_drv.c
        |-- rcS (驱动安装脚本)
    |-- 03_设备树文件
        |-- 100ask_imx6ull-14x14.dtb
    |-- 04_小鹿自己的远程测试网站

模块引脚

LEDpin-131(GPIO5_3)
舵机-SG90pin-115(GPIO4_19)
温湿度模块-DHT11pin-116(GPIO4_23)
红外感应模块-SR501pin-117(GPIO4_21)
AP3216CI2C1-SCL DATE

说明

网页端app:https://a120wkbjrqvdpkkg.vapp.cloudhost.link/page/1338196?token=97cd6ec4d0db9a2b7b046f199d8e4b9d

先单独测试各个模块是否可用,详细参考小鹿之前的模块文章;

LCD驱动是开发板自带,使用前先设置环境变量

export QT_QPA_GENERIC_PLUGINS=tslib:/dev/input/event1 export QT_QPA_PLATFORM=linuxfb:fb=/dev/fb0 export QT_QPA_FONTDIR=/usr/lib/fonts/

wifi模块也是开发板自带,使用前也需要先配置环境,有点麻烦,可以外接wifi模块,如果需要我在出教程;

启动Qt:/root/SmartHome


gitee开源地址

基于 IMX6ULL PRO 的智能家居控制系统 · Heiweilu/Linux项目 – 码云 – 开源中国 (gitee.com)
💡商业转载请联系作者获得授权,非商业转载请注明出处。
协议(License):署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)。
使用这些免费资源的时候应遵守版权意识,切勿非法利用,售卖,尊重原创内容知识产权。未经允许严禁转载。

评论

  1. wjy
    Windows
    10 月前
    2024-9-03 17:11:46

    请问你的dht11驱动程序是自己写的吗还是韦老师的哪个?如果是韦老师的,请问具体是哪个视频的哪一节呢?因为我在使用《应用开发入门实验班》里的驱动程序时出现了问题,存在中断丢失的情况,因此想问问up是用的哪个?

    • 博主
      wjy
      Windows
      9 月前
      2024-9-06 13:38:51

      我是参考韦老师然后自己修改的,因为买的模块规格可能不一样,用韦老师的有问题,就自己修改了时序

  2. Leehao
    Windows
    9 月前
    2024-9-23 16:51:29

    我想问一下up,韦老师的实验班用的QT里面,怎么移植的MQTT的库啊,就差最后一步很难受啊!!

    • 博主
      Leehao
      Windows
      9 月前
      2024-9-24 15:39:16

      后面跟新的视频我还没有看,韦老师没有讲吗?我看后面出一篇教程吧

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇