本网页已闲置超过3分钟,按键盘任意键或点击空白处,即可回到网页

基于树莓派的带有触摸控制面板的智能家居系统

发布时间:2021-12-24
分享到:

基于树莓派的带有触摸控制面板的智能家居系统

发布时间:2021-12-24
分享到:

该项目是一个使用 Raspberry Pi 和 7" 触摸屏与 nymea:core 和 nymea:app 构建带有触摸控制面板的智能家居系统。

一段时间以来,我使用 nymea 作为我的智能家居解决方案,在 Raspberry Pi 上使用 nymea:core,在手机上使用 nymea:app。最初我想壁挂电话或平板电脑,但结果不是很好。手机是为口袋而设计的,在不同的环境中使用时会导致许多小问题。一个例子是唤醒屏幕:手机的侧面通常有一个硬件按钮来打开屏幕,如果东西粘在墙上,这将是一个真正的挑战。接下来是移动操作系统不喜欢应用程序一直在信息亭模式下运行,是的,Android 具有将应用程序锁定到前台的功能,但仍有一些情况下它不会做正确的事情。我在尝试时遇到了更多这样的问题。虽然有可能让 Android 设备满足用例的需求,但似乎对操作系统进行了大量摆弄。所以最终我决定寻找替代品,最终选择了带有 7 英寸触摸屏面板的 Raspberry Pi。

设置
在我的地方,我使用带有 nymea:core 的 Raspberry Pi,它通过蓝牙覆盖了我家的大部分(包括阳台),因此传感器在可及范围内。但是,控制面板应放置在易于触及和使用的不同位置。出于这个原因,我现在设置了 2 个 Raspberry Pi,一个用于核心,另一个用于触摸面板前端。如果您也想构建它,可以使用 nymea:core 与 nymea:app 在同一树莓派上运行的方式创建它。为了简化这篇文章,我将继续描述一个单 RPi 系统。如果您想将多个触摸面板连接到同一个 nymea:core 或更喜欢像我这样的分布式,只需在不同的 Raspberry Pi 上按照 :core 或 :app 步骤操作,并根据需要重复。

对于连接的东西,我主要使用飞利浦 Hue 灯泡(还有一些其他的,但这是一个全新的黑客主题:)),有一些小米花卉护理传感器以防止我的柠檬树变干,将我的 Kodi 媒体中心连接到它(以在我看电影时调暗灯光)并在设置中包含一系列在线服务,例如推送通知、天气服务等等。鉴于本文侧重于触摸屏控制面板,我不会详细介绍我的一般 nymea 设置,而是继续设置显示器。以下是一些屏幕截图,可以提供一些见解:

组装硬件
像我一样组装 Raspberry Pi 并在那个特殊情况下显示并不难,但有点繁琐。事实证明,如果您首先将 Raspberry Pi 安装在显示器的背面,然后尝试将其放入外壳中,那么在不使用太大力的情况下将其装入会变得非常棘手。相反,我发现首先插入电缆要容易得多,然后将 RPi 放入外壳中的最终位置,最后插入显示器。然后拧紧所有螺钉。但是,请注意,使用此外壳后,无法在安装后添加/移除 SD 卡。因此,我建议首先使用不带外壳的 Raspberry Pi 在 SD 卡上设置基本系统,如果您手头有显示器,甚至可以在 HDMI 端口上使用常规显示器。7" 触摸屏也应该这样做,但是,现在把它放在树莓派旁边的桌子上。一旦您确信 SD 卡上的系统运行良好并且可以通过 SSH 访问(稍后会详细介绍),就该将案例放在一起了。

安装软件
第 1 步:准备树莓派 SD 卡

从nymea wiki下载 nymea:core 图像。准备 SD 卡取决于您的操作系统,但有很多关于如何写入 SD 卡映像的说明。我倾向于dd按照下载链接下方的 nymea wiki 中的描述使用,但如果您更喜欢用户友好且可在所有主要操作系统上使用的东西,Etcher 也应该可以正常工作。完成后,将 SD 卡插入 Raspberry Pi并启动它。如果您想使用以太网电缆,请立即插入。如果您想使用 WiFi,您可以在 iOS 或 Android 手机上安装 nymea:app 并从那里设置 WiFi 凭据,而无需将键盘插入 Raspberry Pi。为此,请使用应用程序加载屏幕中的“无线设置”菜单项。

第 2 步:安装 nymea:app

树莓派的 nymea:core 映像仅预装了 nymea:core。此时它应该已经可以在您的手机上运行了。你可以玩一会儿,看看情况。但是,我们有兴趣在触摸屏上运行应用程序,不是吗?:) Ubuntu Core Snap 商店中有一个nymea:app 桌面快照包。它是作为 GNU/Linux 桌面应用程序构建的,但由于有可用的 armhf 构建,它也可以安装在 Raspberry Pi 上。但是,默认情况下它只会安装开始菜单条目。我们需要做一些调整才能在 kiosk 模式下实际启动它,而无需整个桌面。nymea:core 映像预装并启用了 SSH。使用手机上的 nymea:app 发现网络中的树莓派并获取 IP 地址。找到后,使用 SSH 登录 Raspberry Pi(将192.168.0.100替换为您的 Raspberry Pi 的 IP):

关闭显示器而不是将其消隐:

现在,这是最棘手的调整,但它将是最后需要的调整,我保证:)

默认情况下,树莓派在空闲时只会使屏幕空白。这对于普通显示器来说是有意义的,但同样,对于这种触摸屏模型没有多大意义。我们希望屏幕在空闲时完全关闭,而不是被点亮并只是将其涂黑。屏幕的电源可以通过 sysfs 文件打开和关闭,即/sys/class/backlight/rpi_backlight/bl_power. 我们可以通过写入0或写入此文件来手动打开和关闭它1。为了在屏幕空白/取消空白时自动执行此操作,让我们安装 xscreensaver 并将其执行包装在挂钩到适当位置的脚本中:

现在创建一个包含内容的文件/usr/local/bin/xscreensaver-wrapper.sh:

#!/bin/bash
bl_on() {
  sudo /usr/local/bin/screenon.sh
}
bl_off() {
  sudo /usr/local/bin/screenoff.sh
}
process() {
  while read line; do
    case "$line" in
      UNBLANK*)
        bl_on
        ;;
      BLANK*)
        bl_off
        ;;
      RUN*)
        bl_off
        ;;
    esac  done
}
/usr/bin/xscreensaver &
/usr/bin/xscreensaver-command -watch | process

再次编辑 ~/.config/openbox/autostart 并在开头插入这一行,以便与 nymea:app 一起调用 xscreensaver。

第 5 步:完成

重新启动!

如果您对此项目有任何想法、意见或问题,请在下方留言。

原文链接丨以上内容来源网络,如涉及侵权可联系删除。

加入微信技术交流群

技术交流,职业进阶

关注与非网服务号

获取电子工程师福利

加入电路城 QQ 交流群

与技术大牛交朋友

讨论