博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
raspberry ssh_使用Raspberry Pi SSH进入您的圣诞树
阅读量:2531 次
发布时间:2019-05-11

本文共 2573 字,大约阅读时间需要 8 分钟。

raspberry ssh

今年早些时候,我写了一篇关于通过名为开源项目的 。 我的小圣诞树灯光秀非常受欢迎,以至于我受邀为北卡罗来纳州的一群中学孩子进行演示。

这使我进入了今年的圣诞节。 我一直想在户外进行灯光秀,但是由于生活的原因,我最终没有足够的时间(或动力)来实现这一目标。 但是,我确实花了一些时间来改善去年的设置。

我有八个通道运行800灯,而不是五个通道运行500灯。 我还修改了LightShowPi的配置以自定义更多灯光。 我在四个频道中运行所有歌曲,并镜像其他四个频道。 在某些歌曲期间,未使用频道的停电更少,这使灯光变得更加有趣。

我的配置现在也没有头(即没有监视器),并且在Raspberry Pi 2上运行。无头配置非常好,因为我不再需要树下的空间来放置监视器。 Raspberry Pi 2(而不是B +)并没有太大的区别,因为LightShowPi在这两个版本中的性能都很好。 使用WiFi加密狗,我可以通过手机通过SSH进入Pi,并在需要时随时启动/停止灯光和音乐。

最后,今年我还对歌曲选择进行了更多思考,试图在播放列表中添加更多变奏曲和有趣的歌曲。

Christmas playlist screenshot

这是今年树的示例:

在圣诞树点亮并“跳舞”之后,一个问题立即变得显而易见:我的妻子和孩子们想要一种简单的方法来在“固定”和“跳舞”模式之间切换。

因此,我浏览了并决定尝试使用其随附的按钮来解决这个有趣的问题。

为了帮助我设置按钮,我使用了 。 这是结果。

LightShowPi wiring

然后,我不得不编写一些代码来使这项工作生效。 最初,我的代码基于上面链接到的YouTube视频,但我不喜欢它有如此多的循环。 因此,我做了更多的阅读,并且能够编写出更好的代码。 当然,我敢肯定代码可以进行很多改进,但是对于小型个人项目/概念验证来说已经足够了。

#!/usr/bin/env python     
import RPi.GPIO as gpio
import os
import time
gpio.setmode(gpio.BCM)
gpio.setup(4, gpio.IN, pull_up_down=gpio.PUD_UP)
gpio.setup(17, gpio.IN, pull_up_down=gpio.PUD_UP)
lights = 0
while True:
    b1 = gpio.input(4)
    b2 = gpio.input(17)
    #button 1 (solid lights)
    if (b1 == False):
       if lights == 0:
           os.system("export SYNCHRONIZED_LIGHTS_HOME=/home/pi/lightshowpi; sudo python /home/pi/lightshowpi/py/hardware_controller.py --state=on")
           lights = 1
       elif lights == 1:
           os.system("export SYNCHRONIZED_LIGHTS_HOME=/home/pi/lightshowpi; sudo python /home/pi/lightshowpi/py/hardware_controller.py --state=off")
           lights = 0
    #button 2 (dancing mode)
    if (b2 == False):
       if lights == 0:
           os.system("export SYNCHRONIZED_LIGHTS_HOME=/home/pi/lightshowpi; sudo lightshowpi/bin/start_music_and_lights")
           lights = 1
       elif lights == 1:
           os.system("export SYNCHRONIZED_LIGHTS_HOME=/home/pi/lightshowpi; sudo lightshowpi/bin/stop_music_and_lights")
           lights = 0
    # trying not to waste cycles on the pi
    time.sleep(0.2)

上面的代码基本上使用python RPi python库与我用于按钮的两个GPIO引脚(引脚4和17)进行交互,如果按下了按钮并且指示灯已经熄灭,则将其打开,反之亦然。

最后,这花了我一段时间,我不得不修改$SYNCHRONIZED_LIGHTS_HOME/bin/stop_music_and_lights附带的$SYNCHRONIZED_LIGHTS_HOME/bin/stop_music_and_lights脚本,因为它上面有一个sudo killall python ,它将杀死我的Python脚本。

因此,我将该行修改为:

sudo kill $(ps aux | grep 'synchronized_lights.py' | awk '{print $2}')

而已! 看一下最终结果:

翻译自:

raspberry ssh

转载地址:http://ivnzd.baihongyu.com/

你可能感兴趣的文章
网站地址信息
查看>>
产品经理 - 登录 注册
查看>>
阶段3 2.Spring_01.Spring框架简介_03.spring概述
查看>>
阶段3 2.Spring_02.程序间耦合_1 编写jdbc的工程代码用于分析程序的耦合
查看>>
阶段3 2.Spring_01.Spring框架简介_04.spring发展历程
查看>>
阶段3 2.Spring_02.程序间耦合_3 程序的耦合和解耦的思路分析1
查看>>
阶段3 2.Spring_02.程序间耦合_5 编写工厂类和配置文件
查看>>
阶段3 2.Spring_01.Spring框架简介_05.spring的优势
查看>>
阶段3 2.Spring_02.程序间耦合_7 分析工厂模式中的问题并改造
查看>>
阶段3 2.Spring_02.程序间耦合_4 曾经代码中的问题分析
查看>>
阶段3 2.Spring_03.Spring的 IOC 和 DI_2 spring中的Ioc前期准备
查看>>
阶段3 2.Spring_03.Spring的 IOC 和 DI_4 ApplicationContext的三个实现类
查看>>
阶段3 2.Spring_02.程序间耦合_8 工厂模式解耦的升级版
查看>>
阶段3 2.Spring_03.Spring的 IOC 和 DI_6 spring中bean的细节之三种创建Bean对象的方式
查看>>
阶段3 2.Spring_03.Spring的 IOC 和 DI_3 spring基于XML的IOC环境搭建和入门
查看>>
阶段3 2.Spring_04.Spring的常用注解_3 用于创建的Component注解
查看>>
阶段3 2.Spring_04.Spring的常用注解_2 常用IOC注解按照作用分类
查看>>
阶段3 2.Spring_04.Spring的常用注解_5 自动按照类型注入
查看>>
阶段3 2.Spring_04.Spring的常用注解_7 改变作用范围以及和生命周期相关的注解
查看>>
阶段3 2.Spring_05.基于XML的IOC的案例1_3 测试基于XML的IOC案例
查看>>