admin管理员组文章数量:1630202
开源项目——寝室助手
身为计算机专业的大学生,我们会自然而然地想办法用自己已有的资源和技术去让生活自动化、智能化。寝室助手这个项目不算创新项目,但是会是一个整理得比较完备的项目。它易于搭建,成本不算高,并且功能可以大大扩展。
文章目录
- 开源项目——寝室助手
-
- 1. 寝室助手的功能
- 2. 寝室助手的准备工作
-
- 知识储备:
- 硬件准备:
- 软件准备:
-
- 1. 树莓派的初步启动
- 2. 使用SSH连接树莓派终端
- 3. 进行必要的设置
-
- ①更换国内镜像源
- ②设置中文
- ③修改密码,开启VNC,修改默认分辨率
- 4. 使用VNC Viewer连接树莓派
- 5. 为树莓派设定静态ip
- 6. 安装Arduino IDE
- 7. SFTP文件访问
- 8. 域名的购买与解析
- 3. 寝室助手的模块搭建
-
- 1. Apache2 或者 Nginx 来搭建Web服务器
-
- ①Apache2的搭建
- ②Nginx的搭建
- ③设置网站的logo
- ④更多
- 2. 搭建花生壳平台,进行外网ssh和外网vnc
- 3. 搭建frp,进行更多的内网穿透
- 4. 硬盘的挂载
- 5. Aria2 和 Transmission的搭建,实现下载机
-
- ①Aria2 和 Aria-Ng Web-UI
- ②Transmission
- 6. 私有云的搭建
- 7. Samba的搭建
- 8. miniDLNA的搭建
- 9. 寝室开门助手
-
- ①Arduino+蜂鸣器+舵机+RC522实现校园卡开门
-
- 对于`RFID-RC522`模块:
- 对于蜂鸣器:
- 对于金属舵机:
- ②树莓派+python的serial库、socket库实现多端开门
-
- 如何使用树莓派中的python脚本控制Arduino?
- 如何让别的设备也能实现开门?
-
- Windows端:
- 安卓端:
- Mac、Linux端:
- iOS端:
1. 寝室助手的功能
寝室助手目前可以实现寝室私有服务器、下载机、私有云盘、Samba文件共享、DLNA流媒体、内网开门、远程开门等功能。(语音助手或者监控功能预计以后会添加)
我来简单演示一下它的功能。
我的寝室的服务器主页(80端口 /var/www/html/index.html)域名解析为http://pi.code4world (懒得写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/embed/XMzk2NjA1ODMzNg==
http://player.youku/embed/XMzk2NjA1OTc4NA==
校园卡RFID开门:
http://player.youku/embed/XMzk2NjA1ODk3Ng==
其实还有电脑端可执行程序开门、电脑端Wox插件开门和安卓端APP开门、web端开门,这里不演示。
功能到这里就基本介绍完了。
2. 寝室助手的准备工作
知识储备:
- Linux基础
- 电路基础
- Python基础
- Android开发(Java Android Studio)
- 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元)
- RC522射频模块 * 1 (11元包邮)
- 电焊 * 1 (8.6元包邮)
- MacBook任意款或者Mac * 1(开个玩笑,但如果执意要iOS端开门APP,并且资金充裕,则可以购买)
- 电脑 * 1(CSer必备,无需购买)
- 寝室具备宽带和路由器支撑,架设有UPS(若没有,则影响断点熄灯后的服务,需要额外UPS则再+40-115元,本人觉得40元的足矣,光猫和路由器的功耗比较低)
经过计算,最低成本为400元左右,不带UPS,仅在寝室没断电的环境时工作。
如果只实现刷卡开门,不带UPS,使用闲置充电宝供电,70元左右即可。
标准成本应该在500元左右,带有UPS,使用硬盘盒。
软件准备:
1. 树莓派的初步启动
拿到淘宝来的树莓派,是一件振奋人心的事情。你一定会迫不及待想去使用它。
目前需要准备好的是树莓派、树莓派电源、TF卡、读卡器和一台电脑,仅仅只需要这些。当然你必须保证你寝室有WIFI环境,保证你记得寝室WIFI名和密码(开个玩笑但也是实话)。
先将TF卡插入读卡器,注意插入的方向必须正确。再将读卡器插入电脑的USB口,若电脑能识别,则成功。
去树莓派官网下载官方镜像:
https://www.raspberrypi/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={
ss
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/raspbian/raspbian/ stretch main contrib non-free rpi
deb-src http://mirrors.tuna.tsinghua.edu/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/raspberrypi/ stretch main ui
deb-src http://mirror.tuna.tsinghua.edu/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. 为树莓派设定静态ip
为什么不用终端设定静态ip,因为图形化操作简单!
鼠标右键WiFi图标:
选择interface->wlan0
,如果连接网线,则选择interface->eth0
根据自己树莓派的ip填写,如果有ipv6也可以填。
Router
是网关,也就是路由器的访问地址,我的是192.168.1.1
DNS
地址可以在路由器管理网址里查看:
填写完以后点击应用
,此时我的树莓派的静态ip为192.168.1.107
。
只有设定了静态ip,每当树莓派重启的时候,它才不会被动态分配ip地址。
6. 安装Arduino IDE
忠告:不要通过sudo apt-get install arduino
的方式进行安装,那是很老的版本。
下载页面在https://www.arduino/en/Main/Software
由于树莓派是Linux ARM架构,所以选择Linux ARM版本,通过wget命令行下载:
想下载最新版,访问上面的网站,用最新版的链接,用下面类似的方法完成安装(文件夹的名字会不同,解压完后记得ls
一下再cd
进入目录进行安装)
sudo wget https://www.arduino/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开始闪烁,则说明正常工作。
7. SFTP文件访问
Windows中使用WinSCP
,MacOS或Linux可用FileZilla
只需要知道树莓派内网ip,用户名和密码即可访问树莓派并进行文件控制,操作简单,在此不多叙述。
8. 域名的购买与解析
本人使用腾讯云,关于域名购买,渠道很多,我只谈解析。
我们只需要了解CNAME解析:
例如腾讯云的:我的域名买的code4world
这样解析,就可以将pi.code4world解析到frp.kerwin从而实现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/apache2
,apache2.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
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 #服务器域名为www.example,没有域名无需设置,用#注释
ServerAdmin webmaster@localhost #服务器管理员邮箱为webmaster@localhost
DocumentRoot /var/www/html #服务器位置为/var/www/html
</VirtualHost>
ports.conf
中添加了端口监听,000-default.conf
中添加了网站配置,接下来重启apache2服务即可:
sudo
版权声明:本文标题:开源项目——寝室助手 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/xitong/1729027634a1183434.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论