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

这是一篇发布于 6年 前的文章,其中的信息可能已经有所发展或是发生改变,请了解。


4 评论

  1. 请问RFID读取的是单个拿出的衣服上的标签还是箱子里的所有衣服的标签?
    那个RC522 RFID读卡器一次能读多个标签吗?另外想了解一下读的最大距离。
    谢谢

  2. 我是服装行业从业人员,正在了解物联网在未来服装行业会带来什么,有机会想跟各位技术大咖交流 V:bysube

发表评论

你的邮件地址不会公开


*