MAKER的衣柜:树莓派+RFID实现智能衣柜

MAKER:dar_sissau/译:趣无尽 Cherry(转载请注明出处)

懒是人类文明进步的驱动力,本期的 MAKER 正因为懒于每次一件件翻遍衣柜,才有动手制作这个项目的动力。

这是一个基于RFID的存储系统的衣柜,可以方便地记录衣物的使用情况,方便地通过终端查看柜子里面的衣物列表!请看下面的短片。

该项目的制作者 dar_sissau 表示:一切源于我在打包行李箱时的手足无措。我不得不回宿舍整理,但我根本不记得还有多少件T恤或袜子。所以我决定通过制作一个基于RFID的存储系统让我的生活变得更轻松,该系统可以追踪衣柜里所有衣服的位置。

我们的项目是基于树莓派或Arduino的,通过传感器收集数据并将其存储在MySQL数据库中。 在这个教程中,我将指导你完成每个步骤,你完全可以按照教程自己制作一个一摸一样甚至更完美的衣柜!

材料清单

树莓派3B × 1

电源5V/2.5A × 1

16 GB microSD卡 × 1

排针电源转接口2×20 公 × 1

RC522 rfid读写器 × 1

RFID 电子标签 频率125 Khz × 若干

LCD液晶屏 1602A-5V × 1

T型GPIO扩展板 × 1

电缆连接器 × 1

洞洞板 × 1

无源蜂鸣器 × 1

十字螺丝 × 若干

魔术贴条(可选) × 若干

烙铁 × 1

十字螺丝刀 × 1

剪刀 × 1

3D打印机 × 1

该项目的操作步骤简单但琐碎,请各位 MAKERS 多一些的耐心。看看究竟如何改变这个世界多一点。干货来啦!

准备工作

下载并安装 Raspbian 系统。

将安装好系统的SD卡放入电脑,进入下一个步骤。

启用SSH

要远程访问你的树莓派,我们必须启用SSH然后用PUTTY连接到树莓派。下面到方法是众多方法中的一种,当然你可以访问树莓派实验室的新手开箱教程了解其他类似的方法,总之能通过SSH登录到树莓派就行。

在计算机上打开文件资源管理器,查找名为“boot(E:)”或其他字母命名(如上图所示)的microSD卡。

使用记事本打开文件“cmdline.txt”。将“ip = 169.254.10.1”添加到当前内容。注意一切都必须码在一条线上!保存文件,如上图所示。

在你的树莓派上启动ssh,只需在“boot(E:)”中添加一个空文件,命名为“ssh”,不带扩展名。然后安全地移除microSD并将其放回树莓派中。

使用网线连接计算机和树莓派。现在为你的树莓派供电并等待几分钟确保它通电。

安装Putty

现在可以通过ssh访问你的树莓派了。

在你的计算机上安装putty。打开putty并与树莓派建立ssh连接。用于连接树莓派的ip与我们填写cmdline.txt(169.254.10.1)的IP相同。端口是22(如图所示)。

一旦你点击打开,在第一次连接时会收到警告。你可以忽略它,只需单击是。

使用以下凭证立即登录:

用户名:pi

密码:raspberry

如果一切正确,你应该看到终端(如图所示)。

注意:如果你想在终端中使用数字键盘,请在putty配置类别终端中选择“特性”并选中“Disable application keypad mode”禁用应用键盘模式,然后在单选按钮上选择“Empty string”(如图所示)。

更改你的密码和主机名

在终端中执行以下步骤:

在终端输入 sudo raspi-config。

转到选项1(更改用户密码)并输入新密码。最好记在你的小本本上。

转到选项3(Boot选项)并设置:

在Desktop / CLI,选择第一个选项“Console”。

禁用“开机时等待网络”。

选择“启动界面”并禁用此选项。

转到选项4(本地化选项)和:

设置正确的时区。

选择你所在国家/地区的WiFi。

关闭raspi-config。在终端中使用此命令更改主机名 sudo nano /etc/hostname。在文件中将名称更改为唯一的名称。写在小本本上哦!

用ctrl-x保存文件,并按y键确认。最后,使用 sudo reboot 命令重新启动树莓派。

网络配置

我们在“cmdline.txt”中添加的IP地址,现在将其设置为静态IP。但是,我们喜欢模仿Windows的操作。我更喜欢DHCP,只有在DHCP不可用时才配置APIPA地址。

终端输入 sudo nano /etc/dhcpcd.conf。

添加以下内容(其中大部分应该已经位于最底层,您只需将其从注释中删除并更改IP地址。):

# define static profile profile static_eth0 static ip_address=169.254.10.1/16 # fallback to static profile on eth0 interface eth0 fallback static_eth0

用ctrl-x保存文件,并按y键确认。

使用命令 sudo nano /boot/cmdline.txt 现在删除 /boot/cmdline.txt 中的静态IP并保存文件。

现在重启网络服务。

将树莓派连接到Wifi

通过以太网端口,我们现在可以连接到树莓派,但我们还没有上网。为此,我们现在将树莓派连接到WiFi网络。 Raspbian使用wpa_supplicant来管理WiFi连接。

命令 sudo -i 暂时变为root,将prompt更改为root @ host#。

现在我们可以使用以下命令添加网络(填写密码和wifi的SSID)

echo “password” | wpa_passphrase “SSID” >> /etc/wpa_supplicant/wpa_supplicant.conf

并验证网络是否已添加成功。仔细检查并确保设置了正确的国家/地区(COUNTRY=你的国家/地区的初始状态),并可选择删除带有密码的注释行并保存文件。

输入以下指令:

sudo wpa_cli scan scan_results list_networks reconfigure status quit

检查 ip addr show dev wlan0,是否是可用的IP地址,并最终使用 wget google.com 测试网络连接。

Bonjour

现在我们已连接到无线网络,如果我们可以通过它建立SSH连接,而不常常使用UTP电缆连接树莓派,那将非常有用。但是,有时候会遇到了问题,我们不知道通过DHCP分配树莓派的IP地址。幸运的是我们有 Bonjour。

Bonjour过去可以单独从Apple下载,但最新版本仅作为iTunes的一部分提供。但是,我们可以通过一个技巧来实现:如果你没有启动iTunes安装文件,而是将其作为ZIP存档打开(例如使用7-zip),你会发现Bonjour有一个单独的文件。解压缩此文件并通过双击安装它。

然后,您应该能够通过在后面添加.local来连接到树莓派的主机名。这就是为什么在raspi-config中设置一个唯一的主机名的重要性。

注意:你必须与APIPA一样在同一个网络上才能开始使用Bonjour!

建立自己的用户

创建一个你所需的用户名的变量:

user=me

将用户添加到特定组:

groups=$(id pi -Gn | sed ‘s/^pi //g’ | sed ‘s/ /,/g’) sudo useradd ${user} -s /bin/bash -m -G ${groups} sudo sed “s/^pi/${user}/” /etc/sudoers.d/010_pi-nopasswd | sudo tee “/etc/sudoers.d/011_${user}-nopasswd” sudo passwd ${user}

现在登录:

su – me

安装Pycharm

现在,在您的计算机上下载并安装pycharm。

准备工作

安装包

sudo apt update sudo apt install -y python3-venv python3-pip python3-mysqldb mariadb-server uwsgi nginx uwsgi-plugin-python3

虚拟环境

python3 -m pip install –upgrade pip setuptools wheel virtualenv mkdir project1 && cd project1 python3 -m venv –system-site-packages env source env/bin/activate python -m pip install mysql-connector-python argon2-cffi Flask Flask-HTTPAuth Flask-MySQL mysql-connector-python passlib spidev RPi.GPIO

下载项目代码

打开pycharm

转到VCS>从版本控制导入> GitHub并克隆启动项目。或者在本项目的文件库下载部署。

为创建的目录设置目录,例如/home/me/project1。单击“应用”

转到解析器设置并配置/选择刚刚创建的虚拟环境,例如 /home/me/project1/env/bin/python。

检查解析器下是否填写了路径映射字段,并引用了正确的目录。

现在将整个内容从PyCharm上传到树莓派并验证。如上图所示。

创建用户+数据库和分配权限

因为当前没有SQL用户,所以必须以sudo mariadb为用户启动客户端一次。

sudo mariadb sudo mariadb < sql/wardrobe.sql 注意:如果您想要标准化数据库的模型,你可以看上图中我包含的文件。 通过Pycharm连接 单击右侧的“数据库”选项卡(no tab? Menu View > Tool Windows > Database),然后单击绿色+添加连接。

选择数据源> MySQL,然后单击下面的下载驱动程序链接(如果可用)。

首先转到SSH / SSL选项卡并检查SSH。完成你日常使用的PuTTY的数据(主机/用户/密码)。如果尚未输入端口,则必须输入22.检查记住密码。

返回“常规”选项卡并完成数据库的数据:

主机仍为localhost(因为通过SSH连接)。

此示例中的数据库是衣柜。使用project1-admin凭证并单击“测试连接”。

如果连接正常,请转到Schemas选项并确保正确,检查一下衣柜。你可能需要先刷新。

最后,将名称更改为更符合实际情况的内容,例如project1 @ rpi-ssh,然后单击OK。

配置文件

在目录conf中,你要首先找到需要调整的4个文件,然后放在正确的位置(通过pycharm执行此操作)。你必须将4个文件中任何位置出现的用户名和相应的主目录都进行更改。

uWSGI

参数模块引用Flask应用程序。之前:表述文件名,后面则是对象的名称。在示例中,你将在web.py行中找到 app = Flask(),因此 module = web:app。

Virtualenv能够对它进行说明。

剩下的如果正确的,文件可以保持原样。

Systemd

这两个.service文件是systemd的单元文件。除了描述之外,你还必须根据你的实际情况调整[Service]下的4个参数。请注意,使用正确的Python解析器(在virtualenv中)并始终使用绝对路径(starting from /)。

注意:在继续之前,请务必将这些更改上传到树莓派。

将所有内容复制到正确的位置

cd project1 sudo cp/conf/project1-flask.service /etc/systemd/system sudo cp/conf/project1-sensor.service /etc/systemd/system sudo systemctl daemon-reload sudo systemctl start project1-flask.service sudo systemctl start project1-sensor.service sudo systemctl status project1-flask.service sudo systemctl statusproject1-sensor.service

如图所示,输出的格式是这样的。

nginx

sudo cp conf/nginx /etc/nginx/sites-available/project1 sudo rm /etc/nginx/sites-enabled/default sudo ln -s /etc/nginx/sites-available/project1 /etc/nginx/sites-enabled/project1 sudo systemctl restart nginx.service sudo systemctl status nginx.service wget -qO – localhost

如果一切正常,你应该回到html。

自动启动

MariaDB和nginx自动启动,你自己的服务尚未启动。

sudo systemctl enable project1-flask.service sudo systemctl enable project1-sensor.service

电路图

如图所示连接电线。或者将元件焊接到PCB上。

液晶屏:

2 * 16 LCD可以显示Web服务器的IP地址。或者它显示进入或退出系统的rfid标签。

VSS – > GND

VDD – > 5V

V0 – >电位计

RS – > GPIO 22

RW – > GND

E – > GPIO 27

D4 – > GPIO 5

D5 – > GPIO 6

D6 – > GPIO 13

D7 – > GPIO 19

A – > 5V

K – > GND

RFID-RC522:

用于标注服装进出的RFID阅读器。

SDA – > GPIO 8

SCK – > GPIO 11

MOSI – > GPIO 10

MISO – > GPIO 9

IRQ – > GPIO 24

GND – > GND

RST – > GPIO 25

3.3V – > 3V3

无源蜂鸣器:

检测到RFID标签时发出声音。

正极 – > GPIO 21

负极 – > GND

3D打印盒子

打印我们项目所需的盒子。文件中包含了我所使用的3D模型。盒子上的字母N,我用一张纸和一些胶水。

将所有东西安装在一起

拿起螺丝刀,用螺钉和螺栓将这些零件安装在一起。按照下面的说明进行操作。

1、屏幕正面。

2、盒子前面的Rfid阅读器。

3、带屏幕的树莓派(不要忘记在电源关闭的情况下将电源线放入树莓派中)。

4、盖上前面的壳子。

现在将它安装到您的衣柜,你可以选择使用螺丝还是魔术贴。我在这里选择用魔术贴。

现在你已经完成了所有的步骤,你的原型应该也能正常运行。只需打开电源,等到ip地址在液晶屏上显示并上网。

MAKER 趣无尽页面:http://make.quwj.com/project/62

via