树莓派可以这么玩:聚合信息,方便出行

2017-08-23 22:00:00 818点赞 4121收藏 552评论

本篇需要一点点技术背景,不用太多,一般理工科尤其是计算机学科的都能胜任,虽然涉及树莓派的文章评论区大都是“不明觉厉”,但本文教程部分尽量做到通俗易懂,目的明确,避免出现大脑成浆糊状的情况。

前言

一直长草树莓派,去年做项目需要快速出个原型,就趁机申请买了两个树莓派,后来由于需要屏幕,又购入了一个官方的7寸屏和一个第三方的10寸屏。等项目做完了,树莓派也闲置了,闲下来不是暴殄天物吗,于是我怀着一片好心把它带回了家,继续发挥余热。

树莓派其实就是一个小小的卡片电脑,运行linux操作系统,只不过增加了一些IO端口,可以更方便地和一些嵌入式模块比如一些传感器交互。不同的人有不同的玩法,你可以用树莓派控制家里的智能家居,也可以用来做简单的服务器,当然也可以脑洞大开,做一些新奇特别的玩意。而树莓派这么火的原因我想最主要的是有成熟的社区支持以及完善的生态圈,在用户使用的过程中,绝大部分问题都可以搜索到答案。

但有一点不可否认,要发挥树莓派的能力,需要很多基础知识,毕竟树莓派是个比较小众的东西,在极客手里能发挥出无穷想象,而在一般普罗大众手里还是吃灰的多。本人不敢自称技术达人,但为了不让树莓派吃灰,我决定充分利用手里现有的资源做点什么出来。

本来初衷可能是做一点智能家居,现在HomeAssistant和Homebridge在树莓派上的应用都已经成熟了,但想想手上一个iPhone都没有,各种智能家居套件也没有,控制什么?虽说再投入一点,技术上完全可以实现,但只有我一个人在折腾,后期维护成本也高,应用还是单一,而且对家人来讲还是太复杂,并不能使他们受益。后来有一天晚上睡觉抹黑拿手机看时间时,突然有了想法,于是经过一系列的摸索折腾,有了下面这个东东。

树莓派可以这么玩:聚合信息,方便出行

简单来说,就是用官方7寸屏实现了一个信息中心,包括时钟,天气预报和空气质量。最近又增加了一屏实时公交信息,计划以后增加一屏放一些ESP8266在家里各个角落收集传感器信息。

一开始开发时我是放在书桌上的:

树莓派可以这么玩:聚合信息,方便出行

后来搬到床头柜上了:

树莓派可以这么玩:聚合信息,方便出行

最后,直接上墙了:

树莓派可以这么玩:聚合信息,方便出行

目前已经稳定运行了半年以上,带给全家不少的便利。

准备工作

完成这个可能需要一些知识和技能,我也是一边弄一边摸索,具体来讲,需要如下技能:

  1. 一点点电路基础

  2. 编程基础

  3. Linux基础

  4. 一点点泥瓦工基础

  5. 一点点木工基础

  6. 一点点油漆工基础

然后需要准备如下材料:

1. 树莓派3B

树莓派3_淘宝搜索树莓派3s.taobao.com去看看

2. 官方7寸触摸屏

树莓派官方7寸触摸屏_淘宝搜索官方7寸触摸屏s.taobao.com去看看

3. 官方屏外壳(可选)

树莓派官方7寸触摸屏外壳_淘宝搜索树莓派官方7寸触摸屏外壳s.taobao.com去看看

4. 导线若干,有机玻璃板

5. DC-DC可调降压电源模块

DC-DC可调降压电源模块_淘宝搜索DC-DC可调降压电源模块s.taobao.com去看看

6. 万用表电烙铁螺丝刀,锤子,凿子,手枪钻,锯子,黑胶布

7. 3M魔力扣

8. 涂料一桶

是不是被吓到了?其实不难,照着我这个教程做的话,敲不了几行命令,毕竟我已经把代码写好了,只需要下载下来运行一下即可。而且如果不需要上墙,放在桌子上用的话,仅仅需要前三项就可以了。

教程

准备树莓派

先把树莓派和屏幕合体。虽然有国产屏,但官方的屏幕做工精美,美观大方,不像国产的有比较浓郁的寨感,建议还是入官方屏。

树莓派可以这么玩:聚合信息,方便出行

树莓派可以这么玩:聚合信息,方便出行

树莓派可以这么玩:聚合信息,方便出行

接上软排线,线比较软,不要使蛮力,然后接上电源线,注意正负,别接反了,屏幕驱动板上标明了5V和GND,树莓派上面我接了2脚正5V,6脚接地。具体的GPIO可参考下图:

树莓派可以这么玩:聚合信息,方便出行

如果像我一样,最后把它安到墙上去,可以不用买外壳,省下一百多块,或者淘宝也有亚克力底座,20块的样子。装好官方外壳是这样的:

树莓派可以这么玩:聚合信息,方便出行

树莓派可以这么玩:聚合信息,方便出行

安装raspbian操作系统

为树莓派安装系统是第一步,网上教程非常多,过程也很简单。准备一张TF卡,容量不用太大,8G或16G就可以了,从官网下载镜像文件

用相应的工具比如Win32 DiskImager将镜像写入TF卡中,然后将TF卡插入,再接入5V2A的电源给树莓派,屏幕就亮起来啦,第一次进入系统是这样的:

树莓派可以这么玩:聚合信息,方便出行

先期需要做的配置就是连上WIFI,由于自带屏幕了,插入鼠标键盘完全可以在小屏幕上操作。

初步运行

其实只需两行命令,即可运行起来。左上角是开始菜单,然后依次是浏览器,文件管理器,终端。先点击终端,敲入如下命令:

git clone https://github.com/szwchao/pi-info

解释:git是软件版本管理工具,目前raspbian里已经自带git,无需安装。这一步是从我的github上拉取代码,放在用户目录下

继续敲入第二行命令:

chromium-browser -kiosk ~/pi-info/index.html

解释:新版raspbian自带谷歌的chromium浏览器,chromium是chrome的开发板。这一步是用chromium打开刚才下载的网页,-kiosk让浏览器运行在全屏模式

一切顺利的话,已经可以看到屏幕变成了这样:

树莓派可以这么玩:聚合信息,方便出行

原理

别急,现在还没有数据,在继续之前先解释一下原理。其实原理非常简单,就是用树莓派来展示一个静态网页而已。这个网页会每秒更新一下时间,然后10分钟一次从网上提取天气数据。数据源选用的是和风天气的API,通过json直接读取当前的天气和未来三天的天气,同时也提供了PM2.5的数值。

然而思路很简单,做起来还是很难。对于前端大神来说,可能分分钟搞定,对于我这个搞嵌入式的来讲,写前端代码实在太痛苦,JavaScript还好,调整UI实在搞得精疲力尽,都是从网上找别人的资源修修改改,这方面没有基础,现在流行的前端框架react,vue什么的也不会,最后的效果都是靠调整html,css试出来的,走了相当多的弯路。最终的代码尽管能用,然而写得真是不专业,而且不是响应式的,只能适配固定的分辨率,有前端的同学能帮忙重构优化一下就好了。

获取数据

为了显示准确的数据,需要去和风天气(https://console.heweather.com/register)注册一下,然后进入控制台可以看到个人的key,和风天气提供每天4000次的查询次数,绝对够用了,而且不需要进一步的开发者实名认证,用邮箱注册个帐号就能用了,非常简单。

树莓派可以这么玩:聚合信息,方便出行

终端里敲入如下命令:

nano ~/pi-info/static/js/clockweather.js

将key填入第一行,并将城市改成你所在的城市名,中文即可。然后再次用chromium打开网页,应该有完整的页面了吧。

后续配置

虽然已经看到了最终成果,但为了更好地使用,还有一些配置需要做。

第一步,开机自动运行网页

mkdir ~/.config/autostart

解释:新建autostart目录,在此目录下的命令会随开机自动启动,相当于windows下开始菜单里的启动文件夹

新建一个desktop文件

nano ~/.config/autostart/browserAuto.desktop

填入如下内容

[Desktop Entry]

Type=Application

Exec=/usr/bin/chromium-browser --kiosk ~/pi-info/index.html

Hidden=false

X-GNOME-Autostart-enabled=true

Name=AutoBrowser

解释:新建一个快捷方式,开机自动启动chromium打开网页

第二步,禁用sleep模式,否则一会儿就黑屏了

sudo nano /etc/lightdm/lightdm.conf

在[SeatDefaults]里加入

xserver-command=X -s 0 dpms

第三步,全屏时隐藏鼠标

sudo apt-get install unclutter

新建一个desktop文件

nano ~/.config/autostart/unclutterAuto.desktop

填入如下内容

[Desktop Entry]

Type=Application

Exec=unclutter -idle 0.1

解释:安装unclutter软件,该软件支持在运行在全屏时隐藏鼠标指针,配置成开机自动启动

好了,到这里已经大功告成了。但,chromium虽说蛮好的,可有时候会弹出错误信息或直接崩溃掉,推荐用firefox替代。

安装firefox

sudo apt-get install iceweasel

解释:iceweasel是Mozilla Firefox浏览器的Debian再发布版

firefox并不支持命令行全屏运行,需要安装一个扩展。用firefox打开扩展管理,并安装如图所示扩展:

树莓派可以这么玩:聚合信息,方便出行

并修改browserAuto.desktop文件里的运行命令为:

Exec=firefox /home/pi/pi-info/index.html

最后,firefox仍有很低的频率会崩溃掉,我们可以再加一个定时任务

sudo crontab -e

在最后面添加:

1 3 */3 * * killall firefox-esr

2 3 */3 * * export DISPLAY=:0 && firefox /home/pi/pi-info/index.html

解释:每过三天半夜三点零一关掉所有firefox进程,然后过一分钟重新运行firefox

有了这些配置,到目前为止,树莓派已经稳定地运行了半年以上,一直在默默显示时间,天气,放在门口墙上为全家出行提供了便利。

上墙

背景是这样的:房子是精装的,门禁是开发商装好的,然而从第一天起就没工作过,门禁系统长期不用,成了摆设。另外,树莓派放床头柜用只能方便房间里看,想着把门禁换成树莓派,这样可以方便全家人。而且,门禁不是自家供电的,用的物业的电,省钱!

本来的门禁是这样的:

树莓派可以这么玩:聚合信息,方便出行

fermax 3737_淘宝搜索弗曼科斯,价格不便宜s.taobao.com去看看

用的卡扣安装的,往上一推,面板就可以卸下来了,底板是这样的,在继续拆之前先用万用表按连接头上的标识找出正负极,测得电压为直流12V。

树莓派可以这么玩:聚合信息,方便出行

底板是通过四个膨胀螺丝固定在墙上的,进一步把底板卸下来,留好正负极两根电线,其它用黑胶布裹好。量了尺寸大概70mm宽,树莓派宽度满足,可以看见墙洞里是水泥块,要把树莓派塞进去需要加深,泥瓦工附体,拿起锤子凿子一顿敲,敲掉不少水泥块后终于能塞进去了。

树莓派可以这么玩:聚合信息,方便出行


淘宝几块钱购入DC-DC电压转换模块,输入端接入原有接线正负极,调整旋钮使得输出端输出直流5V的电压。

树莓派可以这么玩:聚合信息,方便出行

输出的5V接入树莓派,看GPIO图可以看出树莓派4脚可作为+5v输入,再找个地接上,我这里接了34脚。最终IO口需要接四根线,2脚接屏幕+5v,4脚接电源+5v,6脚接屏幕地,34脚接电源地。在电源线上最好加个开关方便一点。

树莓派可以这么玩:聚合信息,方便出行

为了固定在墙上,本来的想法是利用原来的膨胀螺丝,但经试验发现并不好操作,木工技能太差,不管用木板还是有机玻璃板,做出来的连接板都太差了,孔位开不准,而且露在外面,实在太丑,像这样的:

树莓派可以这么玩:聚合信息,方便出行

后来发现了这款神器,3M 高曼系列魔力扣,贴在墙上超薄无痕。

【京东超市】3M 高曼系列魔力扣超值装 无痕无缝墙面挂钩 魔力扣经济装 照片墙配件36.9元京东去购买

于是重新做了两块有机玻璃板,利用原来的螺丝固定在后面。

树莓派可以这么玩:聚合信息,方便出行

再贴上魔力扣,先把对应的另外两片魔力扣都贴上。

树莓派可以这么玩:聚合信息,方便出行

撕掉后面的贴纸露出3M胶,保持水平对准位置贴到墙面上,屏幕后面的四个铜柱正好能塞进墙上的洞里。

树莓派可以这么玩:聚合信息,方便出行

看一下正面,Perfect!!魔力扣承重3kg,这块屏也就四五百克,完全够用,内部可以栓根绳,防止万一哪天真掉下来。

树莓派可以这么玩:聚合信息,方便出行

从侧面看也很薄,远处看毫无违和感。

树莓派可以这么玩:聚合信息,方便出行

然后,需要把四个膨胀螺孔填充一下,重新刷墙,当油漆工的过程按下不表,总之一鼻子灰。最后的定妆照就是这样的:

树莓派可以这么玩:聚合信息,方便出行

下一步的计划

前面也说到了,后来又加了一屏,显示实时公交信息。小区门口有个公交站台,平时去坐公交时都是先拿出手机打开相应的App查询公交车位置。将其集成到网页里,可以在屏幕上手指往左一划,自动查询指定公交线路,距离小区外的站点还有多少站。就像这样:

树莓派可以这么玩:聚合信息,方便出行

目前已经基本完成了,然而这部分并没有相应的网站提供API,各个城市也不一样,套路不同不能通用,就不分享源码了。这里可以说一下大体思路,用Python加了个后端,用来抓取特定网站上的电子站牌信息,当手指划过屏幕便发起查询,计算出站点信息填充到页面上。做这个还是困扰于UI,废了无数脑细胞,才把界面调整好,做完后深深吐槽前端工作。

后面计划引入一些ESP8266这类的外部MCU,以树莓派为中心,再加一屏显示并控制一些外围设备。

后记

做这个小东西也耗了不少时间,做的过程中发现有很多坑要填,比如 ,一开始有亮度的问题,我写了个python脚本自动控制亮度,半夜时亮度很低,不影响睡眠。其实折腾的过程比结果意义更大,对于手里有树莓派的人来说,我建议,不管是模仿前人已有的项目还是有一些新奇的点子, 不管你基础如何,只要有颗折腾的心,不畏艰难,喜欢孜孜不倦去发现问题解决问题,那么树莓派就能给你带来乐趣。也欢迎同学们多多交流,一起折腾。

有兴趣的话后面再写一篇,介绍一下另一个树莓派配合10寸屏是怎么用来同步展示家里所有人手机里的照片的。

展开 收起
552评论

  • 精彩
  • 最新
  • 楼主把原来的门禁系统搞掉了,但是装上新的怎么跟门禁系统对接却好像没说

    校验提示文案

    提交
    不对接了,原来的门禁就是个摆设

    校验提示文案

    提交
    收起所有回复
  • 我家的门禁跟你家之前的一样fermax的,这个东西可直接当做门禁来用吗? 视频声音什么都正常的吗? 触摸式开门吗?

    校验提示文案

    提交
    主要就是和楼底门口通话开门的

    校验提示文案

    提交
    收起所有回复
  • 门禁拆了没得用了?

    校验提示文案

    提交
    本来就不起作用的

    校验提示文案

    提交
    收起所有回复
  • 苏州园区的?我也想做一个!不懂的地方上门请教怎么样? [期待]

    校验提示文案

    提交
    可以,多多交流

    校验提示文案

    提交
    收起所有回复
  • 嗯,可以拿手机实现吗?

    校验提示文案

    提交
    可以的,手机浏览器打开一样的,但屏幕可能不适配,要修改一下

    校验提示文案

    提交
    收起所有回复
  • 决定 整一个。。。。。请多指教

    校验提示文案

    提交
    不敢,一起研究

    校验提示文案

    提交
    可不可以 整室内温度?

    校验提示文案

    提交
    还有1条回复
    收起所有回复
  • 搞得好牛。。挂门口了?出门前看看?

    校验提示文案

    提交
    是啊,挂门口最方便,特别是公交

    校验提示文案

    提交
    收起所有回复
  • 也想安装,不过五线小城市,没公交路线这些的怎么办

    校验提示文案

    提交
    还可以显示点别的,比如待办事项,只要有想法都可以去折腾

    校验提示文案

    提交
    收起所有回复
  • 支持技术贴,成本大概多少

    校验提示文案

    提交
    主要是树莓派200多,屏幕400多两块

    校验提示文案

    提交
    收起所有回复
  • 新房要装修了,原来想搞一台旧平板上去,现在感觉,可以改一个这个,话说用香橙派成本能不能更低一些?

    校验提示文案

    提交
    香橙派可以的,毕竟号称兼容树莓派,不过只能用HDMI接屏幕了,不像我这个是软排线的,所以你要考虑走线美观的问题,新房我推荐可以像电视墙那样墙里装个暗管隐藏线

    校验提示文案

    提交
    收起所有回复
  • 亮度其实很简单啊。7:00pm之后就亮度最低。早上6:00之后亮度最高。

    校验提示文案

    提交
    是的,可以很精确的用脚本控制

    校验提示文案

    提交
    收起所有回复
  • 能否用ipad改

    校验提示文案

    提交
    可以,理论上能看网页的设备都可以,不过要改动一下适配屏幕分辨率。Ipad读取本机的html文件不是个好办法,可以用路由器或nas部署个web服务器,然后ipad浏览器去访问服务器地址。不过我觉得ipad,Android之类的平板可能会有一些坑要填,不像linux这么自由

    校验提示文案

    提交
    收起所有回复
  • 还有其他派么??

    校验提示文案

    提交
    香橙派 荔枝派 nanopi 香蕉派等等

    校验提示文案

    提交
    橙子香蕉的都有 [嘿嘿]

    校验提示文案

    提交
    收起所有回复
  • 很厉害啊。。问下。。能整上温度湿度PM2.5吗?能触摸控制比如灯啥的吗?能定时控制电动窗帘啥的吗?

    校验提示文案

    提交
    可以做到,继续安装HomeAssistant或Homebridge配套市面上一些已有的智能套件,或者自己搞些传感器继电器,具体看我另外的评论

    校验提示文案

    提交
    收起所有回复
  • 弄个Pad挂墙上,扩展性更好 [观察]

    校验提示文案

    提交
    Pad是扩展性更好,但linux更自由一些

    校验提示文案

    提交
    嗯,适合喜欢折腾的,其实我也喜欢折腾,还鼓捣过一阵单片机,不知是不是年龄大了,就懒了。

    校验提示文案

    提交
    收起所有回复
  • 楼主滑动切换界面用的是js?

    校验提示文案

    提交
    是的,谷歌 Pages Slider With JavaScript And CSS

    校验提示文案

    提交
    看起來像轮播

    校验提示文案

    提交
    收起所有回复
  • 楼主,你说能不能用坏掉的安卓平板的屏幕,当然屏幕是完好的,直接不买官方屏幕?

    校验提示文案

    提交
    网上教程有用kindle keyboard做屏幕的,e-ink屏幕看起来更加高大上。

    校验提示文案

    提交
    要看屏的接口和屏上带不带驱动板,然后树莓派系统里有没有驱动,估计不乐观

    校验提示文案

    提交
    还有5条回复
    收起所有回复
  • 楼主,如果只是实现这个功能的话,买个zero是否就足够了?

    校验提示文案

    提交
    zero性能上估计差不多够,但好像只能hdmi输出,不适用于这块屏,你再搜搜看

    校验提示文案

    提交
    收起所有回复
  • 楼主是景城的吗?

    校验提示文案

    提交
    离得不远,一条线上的

    校验提示文案

    提交
    收起所有回复
  • 求站牌ui代码

    校验提示文案

    提交
    过几天我在代码里放个branch

    校验提示文案

    提交
    收起所有回复
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
4.1K
扫一下,分享更方便,购买更轻松