开源项目——寝室助手
身为计算机专业的大学生,我们会自然而然地想办法用自己已有的资源和技术去让生活自动化、智能化。寝室助手这个项目不算创新项目,但是会是一个整理得比较完备的项目。它易于搭建,成本不算高,并且功能可以大大扩展。
1. 寝室助手的功能
寝室助手目前可以实现寝室私有服务器、下载机、私有云盘、Samba文件共享、DLNA流媒体、内网开门、远程开门等功能。(语音助手或者监控功能预计以后会添加)
我来简单演示一下它的功能。
我的寝室的服务器主页(80端口 /var/www/html/index.html)域名解析为http://pi.code4world.cn (懒得写html+css+js/php,美观请谅解)
主页的Aria2和Transmission都是下载工具,可以实现外网访问和内网访问,也就是说可以进行远程下载和在寝室里下载文件到服务器。
云盘则是私有云,由后台管理员添加用户,可以进行文件的上传下载分享,通过安装插件,也可以实现代码的在线编辑、视频的在线播放、文档的在线预览以及压缩文件的在线解压等等。
Jack's Blog则是我的个人博客。
搭建好的Aria2是这样的:
使用的是Aria-Ng的Web-UI,可以下载文件到指定位置。
搭建好的Transsmission是这样的:
默认开放端口为9091,可以进行BT磁力链接和BT Torrent(种子)文件的下载。
搭建好的私有云是这样的:
具有云盘的常用功能。
搭建好的Samba文件共享如下:
可以访问服务器开放的共享文件夹,若服务器开启读写权限,则访问的电脑可以对其进行任意读写操作。
关于DLNA,我在此不阐述,因为我觉得它比较占用CPU,我把它关了。hhh。
接下来是内网开门、远程开门:
我放一些照片和视频来进行演示:
门外结构:
门内结构:
门外细节:
iOS APP实现内网开门:
http://player.youku.com/embed/XMzk2NjA1ODMzNg==
http://player.youku.com/embed/XMzk2NjA1OTc4NA==
校园卡RFID开门:
http://player.youku.com/embed/XMzk2NjA1ODk3Ng==
其实还有电脑端可执行程序开门和安卓端APP开门,这里不演示。
功能到这里就基本介绍完了。
2.寝室助手的准备工作
知识储备:
- Linux基础
- 电路基础
- Python基础
- Android开发(Java)
- iOS开发(Swift Xcode)
- 前端基础(HTML CSS JavaScript PHP)
- 计算机网络基础(TCP Socket)
硬件准备:
- 树莓派3B * 1(3B 中国 不含配件 205元)
- 闪迪16G TF卡 * 1(25元)
- 读卡器 * 1(usb2.0 3.9元,见第5条,若购买All In One硬盘盒,则此步跳过)
- 树莓派配件套餐 * 1(标配 任意颜色 35.8元)
- All In One硬盘盒 * 1(深蓝色 70元,或者易驱线 usb 2.0全套34元 + 有源USB HUB 17元,共51元)
- 二手320G 台式SATA串口机械硬盘 * 1(38元 若有老台式或笔记本的任意硬盘,可以使用,无需购买)
- Arduino Uno R3 * 1(意大利正版150元,国产版17元,推荐正版,国产版不太稳定需要自己装驱动,都送串口线)
- UPS不间断电源 * 1(12V 9V 5V 三输出,带电源11200mah 80元,经测试,一整夜都有电)
- USB延长线 * 1(玫瑰金 3m 3元)
- DC延长线 * 1(3m 16.8元)
- 杜邦线若干(大约5元)
- 蜂鸣器 * 1(0.39元包邮)
- MG996R金属舵机 * 1(360度,25元)
- MacBook任意款或者Mac * 1(开个玩笑,但如果执意要iOS端开门APP,并且资金充裕,则可以购买)
- 电脑 * 1(CSer必备,无需购买)
- 寝室具备宽带和路由器支撑,架设有UPS(若没有,则影响断点熄灯后的服务,需要额外UPS则再+40-115元,本人觉得40元的足矣,光猫和路由器的功耗比较低)
经过计算,最低成本为387.89元,不带UPS,仅在寝室没断电的环境时工作。
软件准备:
1. 树莓派的初步启动
拿到淘宝来的树莓派,是一件振奋人心的事情。你一定会迫不及待想去使用它。
目前需要准备好的是树莓派、树莓派电源、TF卡、读卡器和一台电脑,仅仅只需要这些。当然你必须保证你寝室有WIFI环境,保证你记得寝室WIFI名和密码(开个玩笑但也是实话)。
先将TF卡插入读卡器,注意插入的方向必须正确。再将读卡器插入电脑的USB口,若电脑能识别,则成功。
去树莓派官网下载官方镜像:
https://www.raspberrypi.org/downloads/raspbian/
为了避免以后下载一些包和一些常用软件,推荐下载第一个镜像
接下来怎么将镜像烧录到树莓派呢
推荐使用Win32DiskImager ,点击Download
下载
运行,按照以下顺序来操作:
提示,如果是想备份系统镜像,则:
当进度达到100时,写入系统完成,电脑中有一个叫boot的设备。
接下来让树莓派开机前配置好需要连接的WIFI(有网线并且长度够的,可以直接插网线hhh)。
由于此时不具备显示器、鼠标键盘,我们如何让树莓派首次开机就连上WIFI呢?
进入boot设备,新建wpa_supplicant.conf
文件:
country=CN
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid="你的WiFi名"
psk="你的WiFi密码" #如果没有密码,此行不要
key_mgmt=WPA-PSK #如果没有密码或者密码为WEP,则为 key_mgmt=NONE
priority=1
}
根据要求更改上面文件的参数,并将注释删掉以免bug。
重点:在boot上新建一个名为ssh的空文件,无后缀,才可默认开启ssh,此步不要跳过!
然后推出读卡器设备,拔出TF卡,按正确的方向插入树莓派。
树莓派接上电源,打开开关,当有指示灯时,说明已经开机。
到这里初步启动完成
2. 使用SSH连接树莓派终端
首先,需要得到树莓派的内网ip:
最简单的方法当然是进入路由器管理页面:
通常是192.168.1.1
或者192.168.0.1
,具体是多少,宽带师傅肯定知道。
浏览器输入并进入路由器管理界面,例如我的管理网页是192.168.1.1
,我的路由器是TP-link的
匿名主机或者叫pi的主机就是我们寻找的对象
这样我的树莓派的ip就暂时是192.168.1.107
,以下所有191.168.1.107
都应该代替为你自己树莓派的内网ip。为什么是暂时,因为还没有设置静态ip,一会儿我们再设置。
MacOS或linux直接打开Terminal
,输入ssh pi@192.168.1.107
输入初始密码raspberry
并回车,即可访问到树莓派的终端。
Windows可以用putty连接树莓派的终端:
选择SSH,
Host Name(or IP address)
栏输入树莓派的内网ip,端口默认22。点击Open
,进入ssh页面:
login as:
输入pi
,因为pi
是默认用户名
接下来输入密码raspberry
并回车,进入树莓派终端:
此时ssh连接树莓派的工作就绪。
3. 进行必要的设置
①更换国内镜像源
sudo nano /etc/apt/sources.list
用#
注释掉原本的所有内容,并添加以下两行:
deb http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ stretch main contrib non-free rpi
deb-src http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ stretch main contrib non-free rpi
Ctrl-O
保存Ctrl-X
退出,下同,(Windows中使用Putty鼠标右键既是复制也是粘贴)
这样就更换为了清华的镜像源,接下来需要更新源列表:
sudo apt-get update
然后
sudo nano /etc/apt/sources.list.d/raspi.list
用#
注释掉原本的所有内容,并添加以下两行:
deb http://mirror.tuna.tsinghua.edu.cn/raspberrypi/ stretch main ui
deb-src http://mirror.tuna.tsinghua.edu.cn/raspberrypi/ stretch main ui
再次更新源列表:
sudo apt-get update
再比较索引清单更新依赖关系:
sudo apt-get upgrade -y
②设置中文
安装中文字体:
sudo apt-get -y install ttf-wqy-zenhei
设置中文字体:
sudo raspi-config
此时进入了树莓派的系统设置界面:
上下选择到4 Localisation Options
并回车,选择I1 Change Locale
,
去掉en_GB.UTF-8 UTF-8
,勾上:en_US.UTF-8 UTF-8
、zh_CN.UTF-8 UTF-8
、zh_CN.GBK GBK
,下一屏幕默认语言选zh_CN.UTF-8
。
还有其他相关的设置,后面提到。Tab
或左右键移动到Finish
,并回车,提示立即重启,重启当即生效。
③修改密码,开启VNC,修改默认分辨率
选择第一项,进行密码的修改。
选择第五项,进入接口设置:
选择VNC
,调整为Enabled
,提VNC
是enabled
以后,就开启了VNC
。
同理,其他接口也可以按需打开。
选择第七项,选择A5 Resolution
:
选择你想要的合适的分辨率,我推荐1920x1080高清分辨率。
4. 使用VNC Viewer连接树莓派
VNC Viewer
可以在官网获得,它有各个版本。
当树莓派开启了VNC
以后,可以通过VNC Viewer
连接它,进行控制,发送消息以及文件。
树莓派VNC端口默认为5900
,连接的时候不用输入5900
,输入内网ip
即可访问。
例如我的树莓派的内网ip为192.168.1.107
:
回车,输入用户名密码,即可进入树莓派图形界面,进行操作。
此时用电脑端的SSH
以及VNC
就可以完整控制树莓派了。免去了显示屏、鼠标、键盘的成本。当然有资金的话,配置树莓派就简单多了。
对于手机端,iOS
推荐树莓派助手(pi helper)
,可以连接树莓派,对树莓派进行监控,也可以进行终端的访问以及SFTP
文件访问、自定义命令,免费。
安卓端下载任意可以ssh的终端即可。
VNC Viewer
同样有iOS
和Android
端,用手机也可以对树莓派进行图形化控制。
5. 安装Arduino IDE
下载页面在https://www.arduino.cc/en/Main/Software
由于树莓派是Linux ARM架构,所以选择Linux ARM版本,通过wget命令行下载:
sudo wget https://www.arduino.cc/download_handler.php?f=/arduino-1.8.8-linuxarm.tar.xz
sudo tar xvJf arduino-1.8.8-linuxarm.tar.xz
cd arduino-1.8.8
./install.sh
安装完毕后,将Arduino Uno R3
插入串口线,USB端插入树莓派的USB接口(推荐使用usb hub外接电源,usb hub接树莓派,再将串口线USB端插入usb hub中,以避免Uno供电不足导致的程序错误)
ls /dev/tty*
如果有/dev/ttyACM0
或者类似,则说明串口连接成功。
打开Arduino IDE
,选择开发板类型及端口:
打开实例程序Blink
点击向右的箭头就是上传代码,上传成功后,Arduino的led开始闪烁,则说明正常工作。
到这里,一切准备工作都就绪,接下来就是寝室助手的各个模块的搭建。待续...精力有限,我要睡了...