基于树莓派3B实现智能闹钟的设计方案

描述

  背景

  我需要一个为放置在床头柜而设计的紧凑型闹钟,包含时间、日期、天气、新闻,以及唤醒我的轻松声音。

  介绍

  这是一个闹钟,但我觉得我不是唯一一个想要这样一件漂亮而简单的物品放在床头柜上的人。

  它具有有用的功能,例如柔和的唤醒(小蓝牙扬声器发出啁啾的鸟声),改变白天和黑夜,天气,新闻的信息和亮度。WiFi 在睡眠期间关闭。一切都非常好用并且功能可定制!

  它主要基于漂亮的MagicMirror项目,但在这种情况下,我用了一个小屏幕以展现出我们需要的信息,而不是将所有东西都隐藏在镜子后面。

  如果您对 MagicMirror 有一点了解,就会知道要安装不同的模块,以提供不同类型的功能。对于我的项目,我使用了:

  时钟(默认)

  MMM-AlarmClock(我们想要一个闹钟,对吧?)

  CurrentWeather(默认模块)

  WeatherForecast(也是默认值)

  新闻源(默认)

  MMM-Online-State(检查天气 WiFi 是打开还是关闭)

  MMM-Tado(如果你有智能恒温器,你可以显示环境信息)

  MMM-ModuleScheduler(可选,用于切换显示的模块)

  然后我认为cron是在白天编写一些事件的简单而正确的工具。我将在下面显示我的crontab 。

  现在让我们看看我的屏幕

  白天版本:

  

树莓派3B+

  夜间版本:

  

树莓派3B+

  看到区别了吗?如果我凌晨 3 点起床,我不需要太多信息:时钟就足够了!并且 WiFi 打开/关闭的指示也可以(例如,我将打开标志设置为黄色,将关闭标志设置为蓝色)。所以,如果你喜欢它那就去做吧!

  硬件设置

  设置非常简单:

  1)首先,如果您有机箱,请将带有 microSD 卡的 Raspberry Pi(版本 2、3 或 4 都可以)插入其中(确保相关引脚/连接器仍然可以访问到连接屏幕);

  2)然后只需将屏幕(无论您想使用哪个)连接到Raspberry Pi;我会推荐一个小的(如列表中的 3.5“),但您也可以使用官方的Raspberry Pi Touch Display或另一个;触摸功能将很有用(但不是 100% 必须)来关闭警报钟;

  3)然后,如果您使用的是蓝牙音箱,直接从树莓派 USB 为其供电/充电可能很实用,因此只需将其连接到任何 USB 端口即可;

  4) 最后接上电源插头。完毕!

  软件安装

  现在是时候进行软件安装了:

  1)我假设您在(小容量,例如 8GB)microSD 卡上安装了标准的Raspberry Pi OS ,带有桌面。

  2) MagicMirror 安装:所谓的“手动安装”就是复制粘贴几条命令一样简单,所以我推荐它。

  3) MagicMirror(附加的,第 3 方)模块。以下每个模块都有单独的安装,快速简单(再次简单复制和粘贴),只需按照链接获取说明:首先MMM-AlarmClock ,我们将使用它在早上播放音乐或大自然的声音;MMM-Online-State ,我发现这对于确保夜间关闭 WiFi 很有用;可选,如果您有 Tado 恒温器,MMM-Tado ,显示当前和设置的温度、湿度等;Netatmo 的等效模块也可用:MMM-Netatmo 。我最近决定尝试MMM-ModuleScheduler并且再也没有回来!在白天/晚上的不同时间安排不同模块的显示很容易。

  4)我们将使用的其他模块是默认模块,因此不需要进一步安装。

  配置

  有一个主要的配置文件需要编辑,另外您可能想要或需要调整一些其他文件,以优化可视化并获得可能的最佳结果。

  让我们从 MagicMirror配置文件开始:您会在 MagicMirror/config 文件夹中找到一个示例文件。我还提供了我的配置文件,您可以将其用作起点。在下面找到它。

  如果您想进行昼夜配置,我建议您像我一样创建一个 config_day.js 和 config_night.js。然后我们将使用cron命令切换它们(这里是晚上 11 点和早上 6 点):

  》 crontab -e

  # For more information see the manual pages of crontab(5) and cron(8)

  # m h dom mon dow command

  01 23 * * * cp /home/pi/MagicMirror/config/config_night.js /home/pi/MagicMirror/config/config.js

  00 06 * * * cp /home/pi/MagicMirror/config/config_day.js /home/pi/MagicMirror/config/config.js

  或者,您可以使用MMM-ModuleScheduler ,它允许在不同时间显示或隐藏不同的模块,非常棒!您将使用下面的 ModuleScheduler 找到我的配置文件。

  最后,您可能想要或需要检查配置页面顶部链接的 Raspberry 特定配置。特别是启用自动启动和鼠标指针自动隐藏。

  屏幕亮度

  这是一个比较重要的条件,因为我们知道在我们试图入睡时明亮的屏幕会带来多大的干扰。另一方面,我们想要在日光条件下清晰可读的屏幕。对于某些显示器,您可以控制背光照明,这适用于我拥有的 PiTFT 屏幕。我制作了一个小脚本来使用cron命令(再次)改变亮度:

  const raspi = require(‘raspi’);

  const pwm = require(‘raspi-pwm’);

  var myArgs = process.argv.slice(2);

  var lumi = myArgs[0]/1000.0

  raspi.init(() =》 {

  const led = new pwm.PWM(‘GPIO18’);

  led.write(lumi); // 1-1000 duty Cycle, aka brightness

  });

  这将由以下命令执行:

  》 sudo crontab -e

  # For more information see the manual pages of crontab(5) and cron(8)

  # m h dom mon dow command

  @reboot /bin/sh -c ‘echo ”0“ 》 /sys/class/backlight/soc\:backlight/brightness’

  @reboot /usr/bin/node /home/pi/screen_lumi.js 500

  00 23 * * * /usr/bin/node /home/pi/screen_lumi.js 1

  00 07 * * * /usr/bin/node /home/pi/screen_lumi.js 100

  00 08 * * * /usr/bin/node /home/pi/screen_lumi.js 1000

  00 19 * * * /usr/bin/node /home/pi/screen_lumi.js 800

  该screen_lumi.js脚本必须以 root 权限运行,因此屏幕亮度将由root crontab处理。

  Wi-Fi开关(主要是涉及到辐射)

  我相信这个功能会让你睡得更好。我不想让 Wi-Fi 设备每晚在距离我头部几厘米的地方持续发射无线信号。所以我介绍了 Wi-Fi 开关,这要感谢cron再次运行的rfkill命令:

  》 crontab -e

  # For more information see the manual pages of crontab(5) and cron(8)

  # m h dom mon dow command

  @reboot /usr/sbin/rfkill unblock wlan

  00 23 * * * /usr/sbin/rfkill block wlan

  00 7 * * * /usr/sbin/rfkill unblock wlan

  这将在夜间关闭 Wi-Fi,并在早上再次打开(当您应该起床时!)。同样的命令也可以关闭蓝牙,但我发现有些蓝牙音箱可能不喜欢它,并且难以及时重新连接以进行早晨闹钟。此外,蓝牙的辐射功率比 Wi-Fi 低很多,而且不是连续传输。最后说明:在测试“ block wlan ”命令时,请确保您没有通过 Wi-Fi配置闹钟!

  扬声器

  在我的项目中,我使用了蓝牙扬声器(从 Raspberry Pi USB 端口供电/充电)。这可以在 Raspbian UI 中轻松配置:首先您需要从蓝牙菜单中找到并配对扬声器,然后您可以从音频菜单中选择扬声器作为音频输出设备(请参见下面的步骤)。当然,您也可以简单地插入一个 3.5” 插孔扬声器(但在我的情况下,Raspberry Pi PWM 时钟正忙于调暗屏幕背光!)。

  

树莓派3B+

  唤醒声音

  快速检查一下我们希望如何醒来:在下面的示例中,闹钟将在每周日早上 7 点播放我喜欢的 mp3 文件 3 分钟。确保您选择柔和悦耳的声音,就像森林中的啁啾鸟!这是我的首选(免费下载):森林中的鸟类。

  {

  module: ‘MMM-AlarmClock’,

  position: ‘top_left’,

  config: {

  alarms: [

  {time: “7:00”,

  days: [1,2,3,4,5],

  title: “Wake-up!”,

  message: “It is 7.00am!”,

  sound: “birds-in-the-forest.mp3”},

  ],

  format: ‘dddd @ H:mm’,

  touch: ‘true’,

  volume: 0.50,

  timer: 180 * 1000

  }

  },

  最终成果:

  

树莓派3B+
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分