首先需要通过wordpress后他安装ssl插件,这里选择realy simple ssl,安装完成后下载证书等文件到指定目录,然后执行以下命令即可
cpolar http -hostname=secure.example.com -key=/path/to/tls.key -crt=/path/to/tls.crt 80
首先需要通过wordpress后他安装ssl插件,这里选择realy simple ssl,安装完成后下载证书等文件到指定目录,然后执行以下命令即可
cpolar http -hostname=secure.example.com -key=/path/to/tls.key -crt=/path/to/tls.crt 80
树莓派的部分插件需要cURL依赖,比如ssl,目前网上提供的方式非常单一,基本如下:
wget http://curl.haxx.se/download/curl-7.80.0.tar.gz
2. tar -xzvf curl-7.80.0.tar.gz
3. cd curl-7.80.0/
4. ./configure 耗时2分钟左右
5. make
6. sudo make install
以上方式实际使用安装过程麻烦而且易出问题,现提供一个简单的方式:
sudo apt-get install php7.4-curl (我用的是php7.4,各位根据自己的版本修改即可)
安装完成后需要重启apache
sudo service apache2 restart
WordPress 是一个非常受欢迎的开源博客平台和内容管理平台(CMS)。它很容易搭建,而且还有一个活跃的开发者社区构建网站、创建主题和插件供其他人使用。
虽然通过一键式 WordPress 设置获得托管包很容易,但也可以简单地通过命令行在 Linux 服务器上设置自己的托管包,而且树莓派是一种用来尝试它并顺便学习一些东西的相当好的途径。
一个经常使用的 Web 套件的四个部分是 Linux、Apache、MySQL 和 PHP。这里是你对它们每一个需要了解的。
树莓派上运行的系统是 Raspbian,这是一个基于 Debian,为运行在树莓派硬件上而优化的很好的 Linux 发行版。你有两个选择:桌面版或是精简版。桌面版有一个熟悉的桌面还有很多教育软件和编程工具,像是 LibreOffice 套件、Mincraft,还有一个 web 浏览器。精简版本没有桌面环境,因此它只有命令行以及一些必要的软件。
这篇教程在两个版本上都可以使用,但是如果你使用的是精简版,你必须要有另外一台电脑去访问你的站点。
Apache 是一个受欢迎的 web 服务器应用,你可以安装在你的树莓派上伺服你的 web 页面。就其自身而言,Apache 可以通过 HTTP 提供静态 HTML 文件。使用额外的模块,它也可以使用像是 PHP 的脚本语言提供动态网页。
安装 Apache 非常简单。打开一个终端窗口,然后输入下面的命令:
sudo apt install apache2 -y
Apache 默认放了一个测试文件在一个 web 目录中,你可以从你的电脑或是你网络中的其他计算机进行访问。只需要打开 web 浏览器,然后输入地址 <http://localhost>
。或者(特别是你使用的是 Raspbian Lite 的话)输入你的树莓派的 IP 地址代替 localhost
。你应该会在你的浏览器窗口中看到这样的内容:
这意味着你的 Apache 已经开始工作了!
这个默认的网页仅仅是你文件系统里的一个文件。它在你本地的 /var/www/html/index/html
。你可以使用 Leafpad 文本编辑器写一些 HTML 去替换这个文件的内容。
cd /var/www/html/
sudo leafpad index.html
保存并关闭 Leafpad 然后刷新网页,查看你的更改。
MySQL(读作 “my S-Q-L” 或者 “my sequel”)是一个很受欢迎的数据库引擎。就像 PHP,它被非常广泛的应用于网页服务,这也是为什么像 WordPress 一样的项目选择了它,以及这些项目是为何如此受欢迎。
在一个终端窗口中输入以下命令安装 MySQL 服务(LCTT 译注:实际上安装的是 MySQL 分支 MariaDB):
sudo apt-get install mysql-server -y
WordPress 使用 MySQL 存储文章、页面、用户数据、还有许多其他的内容。
PHP 是一个预处理器:它是在服务器通过网络浏览器接受网页请求是运行的代码。它解决那些需要展示在网页上的内容,然后发送这些网页到浏览器上。不像静态的 HTML,PHP 能在不同的情况下展示不同的内容。PHP 是一个在 web 上非常受欢迎的语言;很多像 Facebook 和 Wikipedia 的项目都使用 PHP 编写。
安装 PHP 和 MySQL 的插件:
sudo apt-get install php php-mysql -y
删除 index.html
,然后创建 index.php
:
sudo rm index.html
sudo leafpad index.php
在里面添加以下内容:
<?php phpinfo(); ?>
保存、退出、刷新你的网页。你将会看到 PHP 状态页:
你可以使用 wget
命令从 wordpress.org 下载 WordPress。最新的 WordPress 总是使用 wordpress.org/latest.tar.gz 这个网址,所以你可以直接抓取这些文件,而无需到网页里面查看,现在的版本是 5.8.2。
确保你在 /var/www/html
目录中,然后删除里面的所有内容:
cd /var/www/html/
sudo rm *
使用 wget
下载 WordPress,然后提取里面的内容,并移动提取的 WordPress 目录中的内容移动到 html
目录下:
sudo wget http://wordpress.org/latest.tar.gz
sudo tar xzf latest.tar.gz
sudo mv wordpress/* .
现在可以删除压缩包和空的 wordpress
目录了:
sudo rm -rf wordpress latest.tar.gz
运行 ls
或者 tree -L 1
命令显示 WordPress 项目下包含的内容:
.
├── index.php
├── license.txt
├── readme.html
├── wp-activate.php
├── wp-admin
├── wp-blog-header.php
├── wp-comments-post.php
├── wp-config-sample.php
├── wp-content
├── wp-cron.php
├── wp-includes
├── wp-links-opml.php
├── wp-load.php
├── wp-login.php
├── wp-mail.php
├── wp-settings.php
├── wp-signup.php
├── wp-trackback.php
└── xmlrpc.php
3 directories, 16 files
这是 WordPress 的默认安装源。在 wp-content
目录中,你可以编辑你的自定义安装。
你现在应该把所有文件的所有权改为 Apache 的运行用户 www-data
:
sudo chown -R www-data: .
为了搭建你的 WordPress 站点,你需要一个数据库。这里使用的是 MySQL。
在终端窗口运行 MySQL 的安全安装命令:
sudo mysql_secure_installation
你将会被问到一系列的问题。这里原来没有设置密码,但是在下一步你应该设置一个。确保你记住了你输入的密码,后面你需要使用它去连接你的 WordPress。按回车确认下面的所有问题。
当它完成之后,你将会看到 “All done!” 和 “Thanks for using MariaDB!” 的信息。
在终端窗口运行 mysql
命令:
sudo mysql -uroot -p
输入你创建的 root 密码(LCTT 译注:不是 Linux 系统的 root 密码,是 MySQL 的 root 密码)。你将看到 “Welcome to the MariaDB monitor.” 的欢迎信息。在 “MariaDB [(none)] >” 提示处使用以下命令,为你 WordPress 的安装创建一个数据库:
create database wordpress;
注意声明最后的分号,如果命令执行成功,你将看到下面的提示:
Query OK, 1 row affected (0.00 sec)
把数据库权限交给 root 用户在声明的底部输入密码:
GRANT ALL PRIVILEGES ON wordpress.* TO 'root'@'localhost' IDENTIFIED BY 'YOURPASSWORD';
为了让更改生效,你需要刷新数据库权限:
FLUSH PRIVILEGES;
按 Ctrl+D
退出 MariaDB 提示符,返回到 Bash shell。
在你的 树莓派 打开网页浏览器,地址栏输入 http://localhost
。选择一个你想要在 WordPress 使用的语言,然后点击“Continue”。你将会看到 WordPress 的欢迎界面。点击 “Let’s go!” 按钮。
按照下面这样填写基本的站点信息:
Database Name: wordpress
User Name: root
Password: <YOUR PASSWORD>
Database Host: localhost
Table Prefix: wp_
点击 “Submit” 继续,然后点击 “Run the install”。
按下面的格式填写:为你的站点设置一个标题、创建一个用户名和密码、输入你的 email 地址。点击 “Install WordPress” 按钮,然后使用你刚刚创建的账号登录,你现在已经登录,而且你的站点已经设置好了,你可以在浏览器地址栏输入 http://localhost/wp-admin
查看你的网站。
更改你的永久链接设置,使得你的 URL 更加友好是一个很好的想法。
要这样做,首先登录你的 WordPress ,进入仪表盘。进入 “Settings”,“Permalinks”。选择 “Post name” 选项,然后点击 “Save Changes”。接着你需要开启 Apache 的 rewrite
模块。
sudo a2enmod rewrite
你还需要告诉虚拟托管服务,站点允许改写请求。为你的虚拟主机编辑 Apache 配置文件:
sudo leafpad /etc/apache2/sites-available/000-default.conf
在第一行后添加下面的内容:
<Directory "/var/www/html">
AllowOverride All
</Directory>
确保其中有像这样的内容 <VirtualHost *:80>
:
<VirtualHost *:80>
<Directory "/var/www/html">
AllowOverride All
</Directory>
...
保存这个文件,然后退出,重启 Apache:
sudo systemctl restart apache2
WordPress 是可以高度自定义的。在网站顶部横幅处点击你的站点名,你就会进入仪表盘。在这里你可以修改主题、添加页面和文章、编辑菜单、添加插件、以及许多其他的事情。
这里有一些你可以在树莓派的网页服务上尝试的有趣的事情:
不要忘记,树莓派是一台 Linux 电脑。你也可以使用相同的结构在运行着 Debian 或者 Ubuntu 的服务器上安装 WordPress。
以下列出的是最值得推荐的10个印制电路板(PCB)设计软件:
PCB设计软件工具比较标准
需要说明的是,这并不是一个最佳的排名列表,因为不同的任务和工作流程有不同的需要,我希望这个列表能让您了解在选择最适合您需求的设计时提供参考。
评估标准:
印制电路板(PCB)设计软件关键的特点
一个PCB设计工具要满足各种重要要求,就需要具备一定的基本特性。然而,重要的是要注意,对一个人来说很棒的功能可能对其他人来说并不相关。
以下这些是内容是我认为选择PCB设计软件需要关注的:
以下列出的是最值得推荐的10个印制电路板(PCB)设计软件的概要性的介绍:
下面,我提供了每个PCB设计软件工具的总结。我的描述集中在最佳用例和工具的主要特性上。
PCBWeb Designer是一个全方位服务的电子硬件设计和制造工具。它受欢迎的原因之一是它是免费的。这意味着对于一块板上使用的元器件数量没有限制。该软件也没有对板子大小的限制。
这个软件出现在最值得推荐的PCB设计软件列表上,因为它是免费的,且有一些很棒的功能。PCBWeb Designer易于使用的连线工具使设计多页原理图成为可能。此外,该软件允许布多层板,还支持DRC检查和敷铜。用户还可以使用材料清单管理器访问Arrow的元器件目录。
ZenitPCB出现在几乎所有最好的PCB设计软件工具列表中的一个原因是,该工具是直观的,非常容易学习,这使它成为一个优秀的程序。设计者不需要专门的培训就可以完成自己的PCB设计任务。
因为这是一个简单且实用的程序,你会注意到该工具主要是高中或大学的学生和他们的老师在使用。然而,这款软件的主要缺点是它没有自动布线器或自动布局等方便的功能。
如果您是个人或半专业用途使用这个程序,它是完全免费的,但有800pin的限制。
TinyCAD是一个用于绘制电路图(原理图)的开源程序。它支持标准元件库和支持用户创建自己的元件库。该工具还支持输出多种PCB网表,并可以生成SPICE网表。
尽管在TinyCAD中创建元件库相对容易,但这个过程非常耗时。然而,作为一个开源程序,它允许用户将他们认为对他人有用的符号上传到程序中,以便其他用户可以下载它们。
在TinyCAD网站上,您可以访问教程和其他支持材料,还可以创建和下载自定义元件库。如果您遇到了一些问题,您可以在网站上报告它们并获得帮助。
TinyCAD是一个免费的工具
Osmond PCB的开发人员承诺该工具必须具备灵活的特点。为了实现这一承诺,他们开发了允许用户使用公制或英制单位的软件。这两种单位,也可以用于相同的设计。该工具集成的元件编辑器使更改现有元件或定义新的元件变得容易。
Osmond PCB是一个优秀的程序,因为它没有任何限制。这意味着你可以设计任意大小和任意层数的PCB。一旦您完成了设计,Osmond将提供工具来帮助您检查完成的产品是否满足所有指定的设计规则。
Osmond PCB可免费使用。然而,也接受捐款以帮助支付持续支持和更新软件的费用。
缩写“BSch”代表“Basic Schematic”。 BSch3V的设计者将其定义为Windows的原理图绘制程序。由于BSch3V的功能是基础的,所以它主要适用于项目不是很复杂的PCB设计。
BSch3V的主要功能包括一个元件库编辑器,PCB网表生成器和元件列表生成器。
BSch3V可以免费使用。
ExpressPCB已经在市场上存在了20多年。因此,这是PCB设计团队的首选软件,他们想要节省从开始的一个想法到完成产品交付所花费的时间。此外,该软件多年来一直在不断改进,确保它既适合专业人士,也适合初学者。
您可以获得两个版本的ExpressPCB: ExpressPCB Classic和ExpressPCB Plus。Classic版本更适合需要易用性的团队。它的Schematic更容易上手,而它的快速设置意味着您可以尽可能快地开始工作。Plus版本是为需要灵活性的更复杂设计的团队设计的。
您可以免费使用ExpressPCB
KiCad是EDA(电子设计自动化)行业的开源软件,具有用于PCB设计的原理图、PCB布局和GERBER文件输出。该工具含有设计者希望的PCB设计软件中所有的标准功能,如软件自带的原理图符号库和内置的原理图符号编辑器等。
KiCad的最新版本5.1.10增强了一些功能,比如修复了关键bug。它还改进了3D模型库、PCB封装、原理图符号和文档。
KiCad是由包括法国格勒诺布尔大学在内的几个基金会和组织赞助的免费软件。
Fritzing是一个开源硬件项目,它借鉴Processing和Arduino平台,允许用户处理电路以进行快速原型开发,共享原型文档,并设计定制的PCB。该工具是由波茨坦应用科学大学开发的,以帮助PCB爱好者和业余爱好者。
Fritzing的最新版本0.9.6,允许通过在线数据库自动更新零件库。它还有助于关键错误的修复,高DPI显示支持,以及更容易的创建和自定义元件。
作为一个开源项目,fritzzing是一个免费的工具。
DesignSpark PCB是一个非常优秀的免费软件,它受欢迎的程度正在飙升。你会喜欢这个软件的主要因素之一是它的直观性,无论你是初学者还是有经验的专业人士,这个程序都很容易使用。该工具有助于设计PCB板和布局,原理图绘制,并进行布局改进。
将DesignSpark PCB列入最值得推荐的10个印制电路板(PCB)设计软件最重要的一个因素是,该工具无缝集成到PCB设计师已经使用的许多工具中。
DesignSpark PCB是一个免费工具。
gEDA是一个集多个开源软件包于一体的套件。它可以生成其他文件类型,如:*.ps或*.png。该软件具有自动布线功能和许多其他功能。软件即有强大的功能而且表现得很高效。特别推荐与gEDA原理图编辑器一起使用。
该工具主要面向印刷电路板设计(相对于集成电路设计),软件采取通用公共许可证(GPL)去完成电子设计。由于该项目的开放性,原理图符号、PCB封装和实用程序脚本可以在gEDA社区的一个附属网站(gedasymbols.org)上自由创建并共享。
gEDA提供丰富的库文件和专业支持社区且不收取额外费用。它是一个开源电子设计工具的集合。同时,也可以单独安装。
gEDA是免费使用的
Other PCB Design Software Tools
其他被推荐的PCB设计软件
如果您不能在这上面介绍的工具中找到满足您所有需求的PCB软件,这里还有一些其他得工具可以推荐。
下是在讨论PCB设计工具时经常遇到的两个问题:
什么是PCB设计软件?
PCB设计软件是设计工程师借助计算机来完成印刷电路板(PCB)的计算机程序。通常,该软件程序由一些软件模块工具组成,这些工具使用户能够在项目上进行协作,访问先前创建的元件库,并确定电路原理图设计的准确性等任务。
为什么需要PCB设计软件?
PCB设计软件对于PCB设计人员来说是至关重要的,因为它允许过程的自动化,否则需要很长时间才能完成。该软件还允许协作,使得将执行项目所需的所有信息放到单个文件仓库中成为可能,在该文件仓库中,所有项目相关人都可以实时看到变化。PCB设计软件对于管理质量也是至关重要的,因为它可以确定是否满足了所有的项目规格。
1、安装自己的wordpress(下载最新wordpress并解压到web目录,修改目录权限方便更新)
2、设置php(phpmyadmin)(全选),否则无法链接数据库/创建wordpress数据库
3、安装wordpress
4、安装relative插件
5、下载cpolar,所在目录执行权限不够,修改目录权限或拷贝至有权限目录
5、创建脚本并设置群辉本身的计划任务(开机启动脚本)
今天折腾群晖迷你Linux系统的时候遇到一个问题,Python写的程序基本上都会带上一些扩展包,今天在安装BeautifulSoup网页解析工具的时候遇到了麻烦。由于群晖迷你Linux系统阉割了很多功能,问题如下。
在安装BeautifulSoup网页解析包时,一般使用pip工具来安装,然而没有pip。
没有pip那就只好先安装pip工具了,要安装pip工具得先安装个epel-release,使用yum安装,提示没有yum。
安装yum提示没有rpm管理器,python缺失?
既然这些软件工具安装不了,那就只好下载yum源码编译安装,然而还是报错。
直接下载pip源码编译安装即可。
首先通过群晖套件安装python3
然后安装setuptools工具,执行如下命令下载源码
wget --no-check-certificate https://files.pythonhosted.org/packages/6a/fa/5ec0fa9095c9b72cb1c31a8175c4c6745bf5927d1045d7a70df35d54944f/setuptools-59.6.0.tar.gz
然后解压
tar -zxvf setuptools-59.6.0.tar.gz
进入解压目录
cd setuptools-59.6.0
使用python3编译
python3 setup.py build
使用python3安装
python3 setup.py install
安装pip,执行下面命令下载到当前目录
wget --no-check-certificate https://files.pythonhosted.org/packages/da/f6/c83229dcc3635cdeb51874184241a9508ada15d8baa337a41093fab58011/pip-21.3.1.tar.gz
解压
tar -zxvf pip-21.3.1.tar.gz
进入pip目录
cd pip-21.3.1
python3编译
python3 setup.py build
python3安装
python3 setup.py install
设置环境变量
export PATH="/sbin:/bin:/usr/sbin:/usr/bin:/usr/syno/sbin:/usr/syno/bin:/usr/local/sbin:/usr/local/bin:/volume1/@appstore/py3k/usr/local/bin"
由于每次关机环境变量会变化,所以大家最好一次将需要的扩展包下载完,不然以后再安装就需要再执行一下最后一句命令。
然后使用如下命令安装beautifulsoup扩展
pip3 install beautifulsoup4 datetime lxml pygame requests
安装完成后,运行python,然后执行下面代码不报错即可
from bs4 import BeautifulSoup
安装pip也可以按如下方式
执行sudo apt-get install python3-pip
若报 No module named ‘distutils.util’,执行 sudo apt-get install python3-distutils
若报E: Package python3-distutils has no installation candidate,执行: sudo apt update
再重新执行:sudo apt-get install python3-distutils
再执行:sudo apt-get install pyton3-pip
作为一个男人,跟女友逛商城时,像是梅西百货那种的,难免会走神。我就是那号人,去年一月在纽约就发生过一回。长话短说。在我闲晃时我发现一面有灯光照明的镜子。我完全能自己做一面出来,而且比这更好。我想要属于我自己的智能镜!
一回到家,我开始构想我需要的东西:一面镜子,薄的那种,一个树莓派,一些木头和油漆,还需要大量空余时间。
关于镜子
普通的镜子是不行的。镜子是要那种单面透光那种,或更加精细功能的:后面屏幕黑屏时,它是一面镜子;而信息在屏幕上显示时就该像普通玻璃窗那样。
和警察局问询室内那面镜子原理一样,当只有一间房有光时,它就像一面镜子,其他时候它就是普通玻璃窗。
我所需要的是一面观察镜。现在,请相信我,当你问买玻璃的要一面观察镜时,会被反问一些奇怪的问题。他们那些人往往有更多新奇点子……嘿嘿,肮脏的思想永远是快乐的源泉。
终于我还是得到了一块不错的观察镜。开始找乐子吧!
解决了镜子问题后,是时候为魔镜项目入手一台显示器了。
在为魔镜选择合适的显示器过程中,有一些纠结的决定。我是买一台新显示器还是捡一台呢?我需要什么尺寸?屏幕最薄会是多少?我如何移动控制按钮?屏幕是否够亮来盖过我的堂堂仪表?
因为我用显示器作为仪容之用,选择合适尺寸差不多就是选择合适的宽度(也就是镜子合适的高度)。在一些测量和尝试用胶带固定在墙上我想放置镜子的位置后,24英寸屏幕会是完美的选择。额外带来的好处是,绝大多数(便宜的)24英寸屏幕初始就带有1080P分辨率,正是我想在这个项目所使用的分辨率。
为了合适的屏幕类型和品牌,我几乎跑遍了方圆20公里内的电器铺。我敢肯定保安大叔在盯着我,而我正仔细检查所有屏幕背面和底部。
大多数品牌被立即否定了,因为它们的电源和视频连接线在背后。我需要转接线是在侧面的那种。
最后我选择了Iiyama显示器,它最接近我所希望的——价格便宜,边框窄小,简单触控按钮和正确转接器方向。
直到现在,我还是不清楚显示器外壳能否轻易被卸除,控制面板如何在显示器内部被连接上。销售人员不许我做出怪异的动作,打开显示器外壳,所以买到这台合适的显示器纯属运气。
我订购了一台24英寸Iiyama E2481HS-B1显示器。为确定显示器和镜子之间气密性良好,我拆下了外壳。在刚刚开箱就进行拆卸显示器够战战兢兢的,但……勉强成功。
这台Iiyama显示器的好处是,显示控制器(金属盒内的电子元件)为这面镜子的其他零件留下了足够的空间,而又保持了它原本的苗条外形。
实际的显示板仅有9毫米厚,而小小的边框也只是10毫米宽。加上显示控制器后,就是下列尺寸:556毫米x323毫米x46毫米(外加6毫米的镜子厚度)。这些尺寸构成了新的木头外壳尺寸。
在量度新外壳所需尺寸后,就开始享受DIY的喜悦吧。我用松木做了个结实坚固的框架,用地板地脚线固定镜子和显示器的位置,那尺寸刚刚好(30毫米宽),还有圆角边框效果。
镜子很可能会发热,那就需要通风口了。此外,在外壳的背后还加了几个既美观又结实的挂点。
小剧透:产品最终重量6.5千克,由我做的两个挂载点所推测得来。
补充一下,我在外壳的底部开了条细缝作为电源线槽。
当然,它需要进行上色。在涂抹油灰(我在打磨抛光时后悔涂太多油灰了)、一些地漆及上土层后,新外壳完工。
有个木工小步骤我要去做的:我做了4个挂在块来安装显示器与镜子。现在准备好将它们上在镜框里面。
木工部分到此结束,进入魔镜的下一环节,安装硬件。
魔镜开始成形。我订购了镜子,找到合适的显示器,完成打磨白色的外壳,是时候开始安装硬件了。
目前我手上有以下零件: 显示器 + 树莓派 + 一条HDMI线(连接树莓派和显示器) + 一条USB转micro USB转接线(用来为树莓派供电) + 一条显示器电源线
但接着我遭遇到小小挫折。在找合适的显示器时,我完全没想到看看显示器有没有一个USB口,用来驱动树莓派。我以为现在的显示器都默认装有USB口,不过我错了,它没有。
这不是不能解决的问题,但我真心希望只用一条线来驱动魔镜。所以我只能将电源分为两条线,一条给显示器,一条给240伏USB降压器。补充一点,我希望用一条普通C13电源线就能驱动智能镜。
也就是说,我要做的是中间带有USB充电器的接插电源线。在翻了我几个闲置线材抽屉后,我找到了个旧USB充电器。
拆开充电器比想象中的容易,只要一点点焊接工序,一些胶和绝缘胶布即可。我要设法做个外观高大上的电源线。
我做了试运行,确保电源线正常工作。我将所有零件连接好,插好电源线,打开显示器。树莓派启动正常,USB充电器没有发热过量。不错!
接着组装所有零件。这次没有倒霉事件:所有东西完美吻合。
另一个阶段完成了,包括所有实体部分(除了还没把两颗螺丝钉在墙上)。进入戏肉的部分:安装树莓派。
Magic Mirror: Part V – Installing the Raspberry Pi
那么,做完所有硬件之后,就轮到安装树莓派了。要达到智能镜的所有需求,树莓派就要有以下功能:
· Wifi连接 · 屏幕旋转90度,符合照镜方向 · 本地网络服务维持界面 · 在全屏幕下运行的浏览器,用于显示界面
因为Raspbian操作系统的灵活性和背后有开源社群支持,我就选了它。下载了操作系统映像后,就把它写入SD卡。
拷贝一个映像档需要很长时间,那么有三种选择:
我选了3。完成拷贝后,我启动树莓派、登入,进入命令行的sudo raspi-config开始配置向导。在这个配置中,有几件重要事项需要配置:
· 确保系统启动到桌面(取代命令行模式或调试模式)。 · 调整时区,使魔镜显示正确时间。 · 在高级选项部分,确保显存超过128MB。 如果你想做和这个一样的镜子,尽管尝试选择所有其他选项。只是记住,如果选砸了,就再泡杯咖啡重装系统吧。
我不想在智能镜上加任何多余的连接线,就选择了以Wifi连接因特网。安装Wifi接收器真的依赖频宽和种类,因此写下完全过程是多余的。有最好的替代吗?看看这个神奇的网站……
老实说,这部分安装确实很花时间。一旦装好了,就能工作正常。
智能镜在设计上是纵向肖像模式,所以我需要将屏幕顺时针旋转90度,最终显示分辨率为1080 x 1920。我曾担心这会是最大的问题,最终却很容易解决了。
树莓派的BIOS设置储存在系统启动分区中。在这分区中,有一个config.txt文件,载有所有设置。要旋转显示器,在这文件内加上以下一行代码:
display_rotate=1
要让显示器连接更加可靠,我就不解释为何加上下面允许HDMI线热插拔的代码了:
hdmi_force_hotplug=1
配置文件存盘后重启树莓派,我不禁会心一笑:这感觉真好,腰不疼颈不酸了!
要维持界面(很简单的一个网页),我需要在树莓派上Apache服务器。这在树莓派上是其中一个很常见的应用,安装过程简直行云流水。
首先我运行下列指令,确定我用的是最新系统软件。
sudo apt-get update && apt-get upgrade -y
现在是时候真的安装Apache了:
sudo apt-get install apache2 apache2-doc apache2-utils
完成了!就是所有这些。但要保证在服务器上能用到一些PHP脚本(以后会更多的),我也加上了PHP支持:
sudo apt-get install libapache2-mod-php5 php5 php-pear php5-xcache
又完成了!重启之后,网页服务器就挂载上线运行了!我在/var/www文件夹内放置了index.php文件,将浏览器首页指向树莓派的IP地址,发现成功了。
现在就是要确定树莓派能够显示我在信息模式(kioskmode)下用Chromium浏览器显示的网页。Chromium浏览器是个能在树莓派操作系统上运行的开源浏览器。
一如既往,安装很简单:
sudo apt-get install chromium x11-xserver-utils unclutter
但这一次,它需要一些额外设置,在信息模式下禁用屏幕保护和自动重启。我在/etc/xdg/lxsession/LXDE/autostart作了编辑,在前面加上了#号。
@xscreensaver -no-splash
另外我还加了以下代码:
@xset s off @xset -dpms @xset s noblank @chromium –kiosk –incognito http://localhost
这样就能完全禁用所有屏保功能,及Chromium浏览器在开机后自动启动,开启全屏模式并导向本地主页。
存盘并再一次重启,检查工作效果。树莓派并不是世界上最快的电脑,它需要花点时间,但最终测试页还是在旋转了90度的画面上显示出来。要得!
进入项目的最后部分,界面开发。
回顾一下,我买了合适的镜子、显示器,做了个新外壳,安装好硬件及配置完成树莓派,那就进入最后一步——界面开发。
我开始项目时,我发现不能通过镜子直接进行任何交互,要不然在铮亮的镜面上会抹上油脂和什么脏东西。但还有更重要的原因,还有别的更好设备可用于用户交互。我希望智能镜只是个被动信息来源。
而更更重要的是,镜子就是镜子,不应被大量(无用的)信息所填满。只有边上能用来作摘要性显示,给本帅哥留些足够自恋的空间吧。
这样我需要以下信息类别目录来满足我对信息的需求:
· 问候语 贴心问候,每日美好的开始。
· 天气 看到我穿的衬衫吗?不错吧!嗯?今天穿T恤衫不会鸡冻吧?
· 时钟和日历 现在赶时间吗?还有足够时间顾影自怜吧?
· 消息反馈 我只是担心自己形象帅不帅吗?还有别的需要上心吗?
当然,未来版本当中有大量的改进可能,现在列出的这些应该够用了。
前面提过,程序界面不是一个在树莓派桌面上神奇的应用,仅仅是一个全屏幕网页。我能用HTML、CSS和Javascript开发外,还有一个额外的好处,在我将它放入智能镜之前,能在我的苹果电脑上开发测试。
在自己写的代码基础上,我用了一些开源库文件来优化它的运行速度:
像大多数网站那样,智能镜使用Jquery来简化DOM操作方式,对我这种懒人最为适用。
它对我在时间安排操作上帮助不少,尤其是在争分夺秒时更节省不少时间。
将RSS订阅用JSON数据转成javascript的方便工具。
将iCal数据转化为JSON。可惜这个库文件并不完美,需要一些额外的优化。
以上这些库文件,加上我自己的HTML和Javascript足够使我的镜子成精了。
我的智能镜需要个酷炫设计。我本人是个严重果粉,那么在设计上要遵从苹果系的设计指标:
边框、倾角、阴影效果有时是用户界面厚重感的因素,甚至能盖过显示内容的光芒。所以,专注在内容设计,把用户交互界面摆在辅助位置上。
利用足够的实体空间,它是个重要内涵,在感官上更让人注意和易于理解。
怎么做到这一点?用Helvetica Neue字体,用天气图标对应显示天气信息。
镜子在背后没有光源时就只是一面镜子,用黑色背景是个重要设定。而为了有最好的对比度,显示内容字体应为白色,在加一些灰色阴影边缘,那灰度为50吧……
我大可以加上一些其他色彩,但目前为止我只想做到简洁的黑白界面。我可不想镜子比我的尊容还要出彩。
为了接收我想在镜子上显示的数据,我用了一些开源API和反馈代码。还有谁不太清楚什么是API,维基百科里面有详尽的解释:
“电脑操作系统(Operating system)’或‘程序库’提供给应用程序调用使用的代码。”
我心中的API就像你家的DVD播放器背后那样充满接口——如果你将其他设备连接到它的话,它就变得更加有用,这些接口本质上就是API。API让设备变得功能强大、有趣,尤其对我这种电脑狂人来说。
Openweathermap有很好的API接口,能够免费得到天气预报信息。它允许你查询区域内的信息,定义你想要的信息类别。在这里我用了两个连接,一个是当前天气,另一个是预报天气。
iCloud允许你以iCal格式分享日历。因为javascript无法做到这一点(因为多站点脚本安全问题),我需要通过PHP代理服务器来开启数据。这其实很容易,只有三行代码而已:
12 | <!--?php <br ?--> $url = "https://p01-calendarws.icloud.com/ca/subscribe/1/mysupersecreticloudhash" ; echo file_get_contents ( $url ); |
只需查询calendar.php就能将在同一个服务器内日历表在界面上显示出来。
前面说过的iCal语法分析编辑帮我把信息解析成有用信息。可是,iCloud在他们的反馈中用了一些非标准标签,我要添加额外的代码行来将代码解析为javascript文件。
新闻订阅只是用到了荷兰公共广播公司的RSS订阅功能。可是,他们不支持JSON格式数据,因此我用了FeedToJson插件来把RSS数据转为JSON格式的。
其他内容,例如当前日期与实践,还有问候语都只是一些简单的javascript语句。
你看了这篇博客这么久,应该能接受更进阶的信息了吧。那么瞪大眼看下去吧……
在开发当中,我遇到了一个很不爽的境地,就是没有键盘和鼠标连在智能镜上的问题。如果我更新界面,就没有一个简单方法在智能镜上更新页面的方法。最简单直接的方法是重启整个树莓派,但让我在调试每个更新上花时间太多了。
我用GIT分布控制系统更新文件,而每个更新版本都有本身的哈希校验提交码,我用PHP就能读取出来。这启发了我再代码行内加上一个片段,将本地页面和刚刚开发的页面进行哈希比对。如果两者不符,程序将重新载入网页,显示最新版本。
我用以下PHP代码获取当前网页上的哈希校验码:
1 | trim(`git rev-parse HEAD`))); |
对比过程在javascript主文件内完成,但只有在HTML文件有当前版本的哈希校验值前提下才能实现:
1 | var gitHash = '' ; |
现在,对比过程就很直观,每3秒进行一次:
1234567891011121314 | (function checkVersion() { $.getJSON('githash.php', {}, function(json, textStatus) { if (json) { if (json.gitHash != gitHash) { window.location.reload(); window.location.href=window.location.href; } } }); setTimeout(function() { checkVersion(); }, 3000); })(); |
所有这些神奇的操作,让更新智能镜界面变得简单。只需用SSH登入树莓派,进入合适的文件夹,然后处理一个git推送请求。
得了得了……好奇了吧?所有代码在GitHub上都有。有件事情要说一声:代码很少标注,以面条式代码填充,通篇都是TODO语句。哈,不怕晃晕菜的,尽管扎进去吧。
智能镜还能做更多的功能,这是一个陆续发展过程。如有新功能上的建议,请不吝提供。让我知道你想在界面上的创意。不过请记住,少为美。:)
开启强制HDMI输出:(很多现在的显示器在树莓派上并不能识别)
在TF卡分区,打开config.txt文件(开机后位置: /boot/config.txt),修改如下:
hdmi_safe=1
config_hdmi_boost=4
hdmi_ignore_edid=0xa5000080
hdmi_group=2
hdmi_mode=82
一些参数介绍:
项 含义
hdmi_safe=1 安全启动HDMI
config_hdmi_boost=4 开启热插拔
hdmi_group=1 CEA电视显示器
hdmi_group=2 DMT电脑显示器
hdmi_ignore_edid=0xa5000080 忽略自动探测的分辨率
输出分辨率:
hdmi_mode=4 640×480 60Hz
hdmi_mode=9 800×600 60Hz
hdmi_mode=16 1024×768 60Hz
hdmi_mode=82 1080p 60Hz
安装桌面方法
步骤一,安装Display Server。
sudo apt-get install –no-install-recommends xserver-xorg
sudo apt-get install –no-install-recommends xinit
步骤二,安装GUI桌面环境。
1,mate桌面环境
apt-get install ubuntu-mate-desktop
2,gnome桌面环境
apt-get install gnome
3,lxde桌面环境
apt-get install lxde
4,lxqt桌面环境
apt-get install lxqt
5,xubuntu桌面
apt-get install xubuntu-desktop
6,lubuntu桌面
apt-get install lubuntu-desktop
7,xfce桌面环境
apt-get install xfce4
8,cinnamon桌面环境
apt-get install cinnamon
9,bugie桌面环境
apt-get install ubuntu-budgie-desktop
这时,重启之后就完成了
1、如果是lite版,先安装界面,https://www.raspberrypi.org/forums/viewtopic.php?f=66&t=133691
参考上面界面,多种界面添加方法及比较。
2、将我们的程序拷贝到树莓派,依赖库之类的也添加好。
3、要想启动自己的图形界面,就需要启动X server,这个东西是在你登录树莓派输入用户名和密码之前启动的,所以我们可以在启动树莓派之前和启动X server之后启动自己的程序,/etc/profile 这个文件就是这两个程序的中间,我们直接更改这个配置文件就行了
sudo nano /etc/profile
在文件开头输入你程序的路径prg,再执行你的程序guiprogram,如下:
cd /home/pi/prg
./guiprogram
另一种方法是增加环境变量,程序guiprogram在/home/pi/Downloads/dist/下,直接执行即可
# /etc/profile: system-wide .profile file for the Bourne shell (sh(1))
# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).
if [ "`id -u`" -eq 0 ]; then
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
else
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games:/home/pi/.local/bin:/home/pi/Downloads/dist"
fi
export PATH
guiprogram