开源项目——寝室助手

开源项目——寝室助手

身为计算机专业的大学生,我们会自然而然地想办法用自己已有的资源和技术去让生活自动化、智能化。寝室助手这个项目不算创新项目,但是会是一个整理得比较完备的项目。它易于搭建,成本不算高,并且功能可以大大扩展。

1. 寝室助手的功能

寝室助手目前可以实现寝室私有服务器、下载机、私有云盘、Samba文件共享、DLNA流媒体、内网开门、远程开门等功能。(语音助手或者监控功能预计以后会添加)

我来简单演示一下它的功能。

我的寝室的服务器主页(80端口 /var/www/html/index.html)域名解析为http://pi.code4world.cn (懒得写html+css+js/php,美观请谅解)

主页的Aria2和Transmission都是下载工具,可以实现外网访问和内网访问,也就是说可以进行远程下载和在寝室里下载文件到服务器。

云盘则是私有云,由后台管理员添加用户,可以进行文件的上传下载分享,通过安装插件,也可以实现代码的在线编辑、视频的在线播放、文档的在线预览以及压缩文件的在线解压等等。

Jack’s Blog则是我的个人博客。

搭建好的Aria2是这样的:

FadqaT.png

使用的是Aria-Ng的Web-UI,可以下载文件到指定位置。

搭建好的Transsmission是这样的:

FawSMR.png

默认开放端口为9091,可以进行BT磁力链接和BT Torrent(种子)文件的下载。

搭建好的私有云是这样的:

FaBUaV.png

FaBDxJ.png

具有云盘的常用功能。

搭建好的Samba文件共享如下:

FaBRIK.png

可以访问服务器开放的共享文件夹,若服务器开启读写权限,则访问的电脑可以对其进行任意读写操作。

关于DLNA,我在此不阐述,因为我觉得它比较占用CPU,我把它关了。hhh。

接下来是内网开门、远程开门:

我放一些照片和视频来进行演示:

门外结构:

FarWge.jpg

门内结构:

Farc4K.jpg

门外细节:

Far29O.jpg

iOS APP实现内网开门:

http://player.youku.com/embed/XMzk2NjA1ODMzNg==

http://player.youku.com/embed/XMzk2NjA1OTc4NA==

校园卡RFID开门:

http://player.youku.com/embed/XMzk2NjA1ODk3Ng==

其实还有电脑端可执行程序开门、电脑端Wox插件开门和安卓端APP开门、web端开门,这里不演示。

功能到这里就基本介绍完了。

2. 寝室助手的准备工作

知识储备:

  1. Linux基础
  2. 电路基础
  3. Python基础
  4. Android开发(Java Android Studio)
  5. iOS开发(Swift Xcode)
  6. 前端基础(HTML CSS JavaScript PHP)
  7. 计算机网络基础(TCP Socket)

硬件准备:

  1. 树莓派3B * 1(3B 中国 不含配件 205元)
  2. 闪迪16G TF卡 * 1(25元)
  3. 读卡器 * 1(usb2.0 3.9元,见第5条,若购买All In One硬盘盒,则此步跳过)
  4. 树莓派配件套餐 * 1(标配 任意颜色 35.8元)
  5. All In One硬盘盒 * 1(深蓝色 70元,或者易驱线 usb 2.0全套34元 + 有源USB HUB 17元,共51元)
  6. 二手320G 台式SATA串口机械硬盘 * 1(38元 若有老台式或笔记本的任意硬盘,可以使用,无需购买)
  7. Arduino Uno R3 * 1(意大利正版150元,国产版17元,推荐正版,国产版不太稳定需要自己装驱动,都送串口线)
  8. UPS不间断电源 * 1(12V 9V 5V 三输出,带电源11200mah 80元,经测试,一整夜都有电)
  9. USB延长线 * 1(玫瑰金 3m 3元)
  10. DC延长线 * 1(3m 16.8元)
  11. 杜邦线若干(大约5元)
  12. 蜂鸣器 * 1(0.39元包邮)
  13. MG996R金属舵机 * 1(360度,25元)
  14. RC522射频模块 * 1 (11元包邮)
  15. 电焊 * 1 (8.6元包邮)
  16. MacBook任意款或者Mac * 1(开个玩笑,但如果执意要iOS端开门APP,并且资金充裕,则可以购买)
  17. 电脑 * 1(CSer必备,无需购买)
  18. 寝室具备宽带和路由器支撑,架设有UPS(若没有,则影响断点熄灯后的服务,需要额外UPS则再+40-115元,本人觉得40元的足矣,光猫和路由器的功耗比较低)

经过计算,最低成本为400元左右,不带UPS,仅在寝室没断电的环境时工作。

如果只实现刷卡开门,不带UPS,使用闲置充电宝供电,70元左右即可。

标准成本应该在500元左右,带有UPS,使用硬盘盒。

软件准备:

1. 树莓派的初步启动

拿到淘宝来的树莓派,是一件振奋人心的事情。你一定会迫不及待想去使用它。

目前需要准备好的是树莓派、树莓派电源、TF卡、读卡器和一台电脑,仅仅只需要这些。当然你必须保证你寝室有WIFI环境,保证你记得寝室WIFI名和密码(开个玩笑但也是实话)。

先将TF卡插入读卡器,注意插入的方向必须正确。再将读卡器插入电脑的USB口,若电脑能识别,则成功。

树莓派官网下载官方镜像:

https://www.raspberrypi.org/downloads/raspbian/

FagMeH.png

为了避免以后下载一些包和一些常用软件,推荐下载第一个镜像

接下来怎么将镜像烧录到树莓派呢

推荐使用Win32DiskImager ,点击Download下载

运行,按照以下顺序来操作:

FagWm4.png

提示,如果是想备份系统镜像,则:

Fag7p6.png

当进度达到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的

FafABD.png

匿名主机或者叫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,

FafyE4.png

Host Name(or IP address)栏输入树莓派的内网ip,端口默认22。点击Open,进入ssh页面:

Faf4KK.png

login as:输入pi,因为pi是默认用户名

接下来输入密码raspberry并回车,进入树莓派终端:

Faf7UH.png

此时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

此时进入了树莓派的系统设置界面:

Fa46pR.png

上下选择到4 Localisation Options并回车,选择I1 Change Locale

去掉en_GB.UTF-8 UTF-8,勾上:en_US.UTF-8 UTF-8zh_CN.UTF-8 UTF-8zh_CN.GBK GBK,下一屏幕默认语言选zh_CN.UTF-8

还有其他相关的设置,后面提到。Tab或左右键移动到Finish,并回车,提示立即重启,重启当即生效。

③修改密码,开启VNC,修改默认分辨率

Fa46pR.png

选择第一项,进行密码的修改。

选择第五项,进入接口设置:

Fa5BKP.png

选择VNC,调整为Enabled,提VNCenabled以后,就开启了VNC

同理,其他接口也可以按需打开。

选择第七项,选择A5 Resolution

选择你想要的合适的分辨率,我推荐1920x1080高清分辨率。

4. 使用VNC Viewer连接树莓派

VNC Viewer可以在官网获得,它有各个版本。

当树莓派开启了VNC以后,可以通过VNC Viewer连接它,进行控制,发送消息以及文件。

树莓派VNC端口默认为5900,连接的时候不用输入5900,输入内网ip即可访问。

例如我的树莓派的内网ip为192.168.1.107

FaIpVO.png

回车,输入用户名密码,即可进入树莓派图形界面,进行操作。

FaIaoF.png

此时用电脑端的SSH以及VNC就可以完整控制树莓派了。免去了显示屏、鼠标、键盘的成本。当然有资金的话,配置树莓派就简单多了。

对于手机端,iOS推荐树莓派助手(pi helper),可以连接树莓派,对树莓派进行监控,也可以进行终端的访问以及SFTP文件访问、自定义命令,免费。

安卓端下载任意可以ssh的终端即可。

VNC Viewer同样有iOSAndroid端,用手机也可以对树莓派进行图形化控制。

5. 为树莓派设定静态ip

为什么不用终端设定静态ip,因为图形化操作简单!

鼠标右键WiFi图标:

FdmTc4.png

选择interface->wlan0,如果连接网线,则选择interface->eth0

Fdm7jJ.png

根据自己树莓派的ip填写,如果有ipv6也可以填。

Router是网关,也就是路由器的访问地址,我的是192.168.1.1

DNS地址可以在路由器管理网址里查看:

FdnS3D.png

填写完以后点击应用,此时我的树莓派的静态ip为192.168.1.107

只有设定了静态ip,每当树莓派重启的时候,它才不会被动态分配ip地址。

6. 安装Arduino IDE

忠告:不要通过sudo apt-get install arduino的方式进行安装,那是很老的版本。

下载页面在https://www.arduino.cc/en/Main/Software

由于树莓派是Linux ARM架构,所以选择Linux ARM版本,通过wget命令行下载:

想下载最新版,访问上面的网站,用最新版的链接,用下面类似的方法完成安装(文件夹的名字会不同,解压完后记得ls一下再cd进入目录进行安装)

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,选择开发板类型及端口:

FaoVfJ.png

FaoEY4.png

打开实例程序Blink

FaoPmV.png

Faopyq.png

点击向右的箭头就是上传代码,上传成功后,Arduino的led开始闪烁,则说明正常工作。

7. SFTP文件访问

Windows中使用WinSCP,MacOS或Linux可用FileZilla

只需要知道树莓派内网ip,用户名和密码即可访问树莓派并进行文件控制,操作简单,在此不多叙述。

8. 域名的购买与解析

本人使用腾讯云,关于域名购买,渠道很多,我只谈解析。

我们只需要了解CNAME解析:

例如腾讯云的:我的域名买的code4world.cn

FwCE0U.png

这样解析,就可以将pi.code4world.cn解析到frp.kerwin.cn从而实现frp内网穿透,关于frp内网穿透,后面会提到。

3. 寝室助手的模块搭建

1. Apache2 或者 Nginx 来搭建Web服务器

Apache2和Nginx都可以,两者搭建起来也比较类似。

两者二选一,不要都安装,因为功能相同,默认都开放80端口,都安装的意义不大并且会冲突。

①Apache2的搭建

安装Apache2:

sudo apt-get install apache2

此时访问http://树莓派内网ip,应该出现Apache2的欢迎界面,提示it works

这是因为Apache2默认监听80端口,80端口网站位置默认为/var/www/html,默认页面则是/var/www/html/index.html。所以安装完访问树莓派内网ip就可以看到效果。

接下来讲述如何自定义添加端口监听,并设定对应网站的位置。

Apache2的主目录在 /etc/apache2apache2.conf是它的配置文件,但是apache2.conf也是用过引用模块来配置的,如果要配置Apache2,流程应该是先在ports.conf中添加端口监听:

sudo nano /etc/apache2/ports.conf
# If you just change the port or add more ports here, you will likely also
# have to change the VirtualHost statement in
# /etc/apache2/sites-enabled/000-default.conf

Listen 80

<IfModule ssl_module>
        Listen 443
</IfModule>

<IfModule mod_gnutls.c>
        Listen 443
</IfModule>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

可见目前默认监听80端口,如果想监听其他端口,则在Listen 80这一行下面加一行Listen 端口号即可

其实安装完Apache2,它默认监听80端口,而80端口映射的位置在/etc/apache2/sites-available/000-default.conf中定义了:

sudo nano /etc/apache2/sites-available/000-default.conf

内容为:

<VirtualHost *:80>
        # The ServerName directive sets the request scheme, hostname and port that
        # the server uses to identify itself. This is used when creating
        # redirection URLs. In the context of virtual hosts, the ServerName
        # specifies what hostname must appear in the request's Host: header to
        # match this virtual host. For the default virtual host (this file) this
        # value is not decisive as it is used as a last resort host regardless.
        # However, you must set it for any further virtual host explicitly.
        #ServerName www.example.com

        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html

        # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
        # error, crit, alert, emerg.
        # It is also possible to configure the loglevel for particular
        # modules, e.g.
        #LogLevel info ssl:warn

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

        # For most configuration files from conf-available/, which are
        # enabled or disabled at a global level, it is possible to
        # include a line for only one particular virtual host. For example the
        # following line enables the CGI configuration for this host only
        # after it has been globally disabled with "a2disconf".
        #Include conf-available/serve-cgi-bin.conf
</VirtualHost>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

可见,这是80端口的设置,大致格式应该如下:

<VirtualHost *:80> #端口号为80
        ServerName www.example.com #服务器域名为www.example.com,没有域名无需设置,用#注释
        ServerAdmin webmaster@localhost #服务器管理员邮箱为webmaster@localhost
        DocumentRoot /var/www/html #服务器位置为/var/www/html
</VirtualHost>

ports.conf中添加了端口监听,000-default.conf中添加了网站配置,接下来重启apache2服务即可:

sudo 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值