Mục lục:

Keysorter: 6 bước
Keysorter: 6 bước

Video: Keysorter: 6 bước

Video: Keysorter: 6 bước
Video: Maintaining Your Prusa 3D Printer: STEP BY STEP! 2024, Tháng bảy
Anonim
Keysorter
Keysorter
Keysorter
Keysorter

Tôi hiện đang học NMCT tại Howest. Đối với học kỳ cuối cùng của chúng tôi, chúng tôi phải thực hiện một dự án. Vì vậy, tôi đã làm một Keysorter.

Nó làm gì?

Chúng tôi có rất nhiều chìa khóa ô tô tại nhà và chúng đều giống nhau. Vì vậy, tôi đã tạo một Keysorter để giải quyết vấn đề này.

Nó phải quét một khóa thông qua RFID và cho nó một vị trí trong hộp. Nếu tôi quét lại cùng một khóa, nó sẽ hiển thị vị trí đã được chỉ định trước đó của anh ta. Ngoài ra còn có một nút để hiển thị chiếc xe đã rửa gần đây nhất.

Điều này sẽ chạy trên Raspberry Pi cũng có tùy chọn để thêm trang web qua Flask.

Trên trang này, tôi có thể xem tất cả các khóa, thêm tên cho một khóa và xóa khóa.

Bước 1: Bước 1: Tôi sẽ cần gì?

Bước 1: Tôi sẽ cần gì?
Bước 1: Tôi sẽ cần gì?
Bước 1: Tôi sẽ cần gì?
Bước 1: Tôi sẽ cần gì?

Tôi bắt đầu bằng cách lập một danh sách các thành phần mà tôi sẽ cần để làm cho thứ này hoạt động.

Các thành phần:

  • Raspberry pi
  • 2 x thanh ghi Shift (74hc595)
  • 3 x nút
  • 9 x màu xanh lá cây dẫn
  • Máy quét RFID (MFRC522)
  • 12 x điện trở 220 ohm

Sau đó, tôi đưa tất cả những điều này vào sơ đồ điên cuồng của tôi.

Một khi tôi đã hoàn thành việc này, tôi đã thực hiện nó trong cuộc sống thực.

Bước 2: Bước 2: Lập sơ đồ cơ sở dữ liệu

Bước 2: Lập sơ đồ cơ sở dữ liệu
Bước 2: Lập sơ đồ cơ sở dữ liệu

Để tiết kiệm dữ liệu của tôi, tôi phải tạo một cơ sở dữ liệu có thể chạy trên Pi của tôi.

Tôi đã thực hiện nó trong Mysql.

Xe bàn:

  • ID ô tô
  • Tên người dùng
  • Brand (thương hiệu xe hơi)
  • Kiểu
  • Lần giặt cuối cùng
  • Chìa khóa
  • RFID_ID

Bước 3: Bước 3: Mã hóa

Bước 3: Mã hóa
Bước 3: Mã hóa

Khi tất cả điều này đã sẵn sàng, tôi có thể bắt đầu viết mã.

Tôi bắt đầu bằng cách tạo mã cho cảm biến của mình bằng Python 3.5.

Để tải mã bấm vào đây.

Sử dụng liên kết để sao chép dự án.

Bước 4: Bước 4: Đặt mã Al trên Raspberry Pi của tôi

Cài đặt các gói

Đầu tiên, tôi đã cài đặt các gói tôi cần để làm cho nó hoạt động.

me @ my-rpi: ~ $ sudo apt cập nhật

me @ my-rpi: ~ $ sudo apt install -y python3-venv python3-pip python3-mysqldb mysql-server uwsgi nginx uwsgi-plugin-python3

Môi trường ảo

me @ my-rpi: ~ $ python3 -m pip install - nâng cấp pip setuptools wheel virtualenvme @ my-rpi: ~ $ mkdir project1 && cd project1 me @ my-rpi: ~ / project1 $ python3 -m venv --system- site-package env me @ my-rpi: ~ / project1 $ source env / bin / active (env) me @ my-rpi: ~ / project1 $ python -m pip install mysql-connector-python argon2-cffi Flask Flask-HTTPAuth Flask-MySQL mysql-connector-python passlib

Tải dự án lên Pi của bạn bằng pycharm

Mở Pycharm và đi tới VCS> Nhập từ Kiểm soát phiên bản> Github và sao chép tệp github của tôi.

Đặt cấu hình triển khai vào thư mục bạn vừa tạo. (/ home / me / project1). Nhấn áp dụng!

Đi tới cài đặt thông dịch viên và chọn môi trường ảo bạn vừa tạo. (/ home / me / project1 / env / bin / pyhon)

Kiểm tra xem ánh xạ đường dẫn có chính xác không.

Bây giờ bạn có thể tải mã lên thư mục của mình bằng Pycharm.

Cơ sở dữ liệu

Kiểm tra xem cơ sở dữ liệu có đang chạy hay không. Bạn sẽ nhận được một cái gì đó như sau:

me @ my-rpi: ~ $ sudo systemctl status mysql ● mariadb.service - Máy chủ cơ sở dữ liệu MariaDB Đã tải: đã tải (/lib/systemd/system/mariadb.service; đã kích hoạt; giá trị đặt trước của nhà cung cấp: đã kích hoạt) Hoạt động: hoạt động (đang chạy) kể từ Sun 2018-06-03 09:41:18 CEST; 1 ngày 4 giờ trước Main PID: 781 (mysqld) Trạng thái: "Đang thực hiện các yêu cầu SQL của bạn …" Nhiệm vụ: 28 (giới hạn: 4915) CGroup: /system.slice/mariadb.service └─781 / usr / sbin / mysqld

03 tháng 6 09:41:13 my-rpi systemd [1]: Khởi động máy chủ cơ sở dữ liệu MariaDB… 03-06 09:41:15 my-rpi mysqld [781]: 2018-06-03 9:41:15 4144859136 [Lưu ý] / usr / sbin / mysqld (mysqld 10.1.26-MariaDB-0 + deb9u1) 03 Tháng 6 09:41:18 my-rpi systemd [1]: Khởi động máy chủ cơ sở dữ liệu MariaDB.

me @ my-rpi: ~ $ ss -lt | grep mysql LISTEN 0 80 127.0.0.1:mysql *: *

Tạo người dùng và thêm cơ sở dữ liệu

tôi @ my-rpi: ~ $ sudo mariadb

khi bạn đang ở trong cơ sở dữ liệu, hãy làm điều này.

TẠO NGƯỜI DÙNG 'project1-admin' @ 'localhost' ĐƯỢC XÁC NHẬN BỞI 'adminpassword'; TẠO NGƯỜI DÙNG 'project1-web' @ 'localhost' ĐƯỢC XÁC NHẬN BỞI 'webpassword'; TẠO NGƯỜI DÙNG 'project1-sensor' @ 'localhost' ĐƯỢC XÁC ĐỊNH BẰNG 'sensorpassword';

TẠO CƠ SỞ DỮ LIỆU dự án1;

CẤP TẤT CẢ CÁC QUYỀN RIÊNG TƯ TRÊN project1. * Thành 'project1-admin' @ 'localhost' VỚI TÙY CHỌN CẤP; CẤP CHỌN, CHÈN, CẬP NHẬT, XÓA TRÊN project1. * TO 'project1-web' @ 'localhost'; CẤP CHỌN, CHÈN, CẬP NHẬT, XÓA TRÊN project1. * TO 'project1-sensor' @ 'localhost'; QUYỀN RIÊNG TƯ CỦA FLUSH;

TẠO BẢNG `user` (` idUser` int (11) NOT NULL, `Password` varchar (45) DEFAULT NULL, PRIMARY KEY (` idUser`)) ENGINE = InnoDB DEFAULT CHARSET = utf8

TẠO BẢNG `car` (` idCar` int (11) NOT NULL AUTO_INCREMENT, `idUser` int (11) NOT NULL,` Brand` varchar (45) DEFAULT NULL, `Type` varchar (45) DEFAULT NULL,` LastWashed` datetime DEFAULT NULL, `RFID_Number` varchar (15) DEFAULT NULL,` Key` varchar (5) DEFAULT NULL, PRIMARY KEY (`idCar`,` idUser`), KEY `fk_Car_User1_idx` (` idUser`), CONSTRAINTU `fk_Car_Car TỪ KHÓA NGOẠI LỆ (`idUser`) TÀI LIỆU THAM KHẢO` người dùng` (`idUser`) BẬT XÓA KHÔNG CÓ HÀNH ĐỘNG KHI CẬP NHẬT KHÔNG CÓ HÀNH ĐỘNG) ENGINE = InnoDB AUTO_INCREMENT = 4 DEFAULT CHARSET = utf8

Kết nối cơ sở dữ liệu của bạn với Pycharm

Nhấp vào tab cơ sở dữ liệu ở phía bên phải. Nếu bạn không mở tab, hãy thực hiện việc này: Xem> Công cụ Windows> Cơ sở dữ liệu.

Nhấp vào thêm kết nối. Chọn Nguồn dữ liệu> MySQL (Nếu có nút tải xuống trình điều khiển, hãy nhấn vào đó.)

Đi tới SSH / SSL và kiểm tra SSH. Điền thông tin đăng nhập Raspberry pi của bạn (máy chủ / người dùng / mật khẩu). Cổng phải là 22 và đừng quên kiểm tra mật khẩu.

Quay lại General. Máy chủ lưu trữ phải là localhost và cơ sở dữ liệu phải là dự án1. Điền thông tin đăng nhập từ project1-admin để kiểm tra kết nối.

Nếu kết nối là OK, hãy chuyển đến tab Schemas và đảm bảo rằng project1 đã được chọn.

Kiểm tra xem cơ sở dữ liệu có đúng không

me @ my-rpi: ~ $ echo 'hiển thị bảng;' | mysql project1 -t -u project1-admin -pNhập mật khẩu: + --------------------------- + | Tables_in_project1 | + --------------------------- + | cảm biến | | người dùng | + --------------------------- +

Tệp cấu hình

Trong thư mục conf bạn sẽ tìm thấy 4 tệp. Bạn nên thay đổi tên người dùng thành tên người dùng của mình.

Systemd

Để bắt đầu mọi thứ, bạn nên thực hiện các lệnh này.

me @ my-rpi: ~ / project1 $ sudo cp conf / project1 - *. service / etc / systemd / system /

me @ my-rpi: ~ / project1 $ sudo systemctl daemon-reload me @ my-rpi: ~ / project1 $ sudo systemctl start project1- * me @ my-rpi: ~ / project1 $ sudo systemctl status project1- * ● project1- flask.service - phiên bản uWSGI để phục vụ giao diện web project1 Đã tải: đã tải (/etc/systemd/system/project1-flask.service; bị vô hiệu hóa; giá trị đặt trước của nhà cung cấp: đã bật) Hoạt động: hoạt động (đang chạy) kể từ Thứ Hai 2018-06-04 13: 14:56 CEST; 1 giây trước PID chính: 6618 (uwsgi) Nhiệm vụ: 6 (giới hạn: 4915) CGroup: /system.slice/project1-flask.service ├─6618 / usr / bin / uwsgi --ini / home / me / project1 / conf / uwsgi-flask.ini ├─6620 / usr / bin / uwsgi --ini /home/me/project1/conf/uwsgi-flask.ini ├─6621 / usr / bin / uwsgi --ini / home / me / project1 / conf / uwsgi-flask.ini ├─6622 / usr / bin / uwsgi --ini /home/me/project1/conf/uwsgi-flask.ini ├─6623 / usr / bin / uwsgi --ini / home / me / project1 / conf / uwsgi-flask.ini └─6624 / usr / bin / uwsgi --ini /home/me/project1/conf/uwsgi-flask.ini

04 tháng 6 13:14:56 my-rpi uwsgi [6618]: được ánh xạ 383928 byte (374 KB) cho 5 lõi. 04 tháng 6 13:14:56 my-rpi uwsgi [6618]: ***

● project1-sensor.service - Dịch vụ cảm biến dự án 1 Đã tải: đã tải (/etc/systemd/system/project1-sensor.service; bị vô hiệu hóa; cài đặt trước của nhà cung cấp: đã bật) Hoạt động: hoạt động (đang chạy) kể từ Thứ Hai 2018-06-04 13: 16:49 CEST; 5 giây trước PID chính: 6826 (python) Nhiệm vụ: 1 (giới hạn: 4915) CGroup: /system.slice/project1-sensor.service └─6826 / home / me / project1 / env / bin / python / home / me / project1 /sensor/sensor.py

04 tháng 6 13:16:49 my-rpi systemd [1]: Bắt đầu dịch vụ cảm biến Project 1. Ngày 04 tháng 6 13:16:49 trăn my-rpi [6826]: GỢI Ý: _ main _: Đã lưu process_count của cảm biến = b'217 / n 'vào cơ sở dữ liệu ngày 04 tháng 6 13:16:55 my-rpi python [6826]: GỠ LỖI: _ main_: Đã lưu cảm biến process_count = b'218 / n 'vào cơ sở dữ liệu

nginx

me @ my-rpi: ~ / project1 $ ls -l / etc / nginx / sites- *

/ etc / nginx / sites-available: total 4 -rw-r - r-- 1 root root 2416 Jul 12 2017 default

/ etc / nginx / sites-enable: total 0 lrwxrwxrwx 1 root root 34 Jan 18 13:25 default -> / etc / nginx / sites-available / default

Để làm cho mọi thứ mặc định, hãy thực hiện các lệnh này.

me @ my-rpi: ~ / project1 $ sudo cp conf / nginx / etc / nginx / sites-available / project1me @ my-rpi: ~ / project1 $ sudo rm / etc / nginx / sites-enable / default me @ my- rpi: ~ / project1 $ sudo ln -s / etc / nginx / sites-available / project1 / etc / nginx / sites-enable / project1 me @ my-rpi: ~ / project1 $ sudo systemctl khởi động lại nginx.service

Tự động bắt đầu

Hãy đảm bảo rằng mọi thứ bắt đầu tự động.

Vào thư mục conf và thực hiện các lệnh cuối cùng này và bạn đã hoàn tất!

me @ my-rpi: ~ / project1 $ sudo systemctl kích hoạt project1- *

Nếu bạn khởi động lại Pi của mình, nó sẽ tự động bắt đầu.

Bước 5: Bước 5: Làm nhà ở

Bước 5: Làm nhà ở
Bước 5: Làm nhà ở
Bước 5: Làm nhà ở
Bước 5: Làm nhà ở
Bước 5: Làm nhà ở
Bước 5: Làm nhà ở
Bước 5: Làm nhà ở
Bước 5: Làm nhà ở

Tái chế

Để làm chỗ ở của mình, tôi đã sử dụng một chiếc tủ cũ mà mẹ tôi sẽ vứt đi.

cơ sở

Tôi đã cưa 4 tấm ván (34 cm x 26 cm). (vì vậy nó là một khối lập phương từ 34 x 34 x 26).

Ở phía dưới, tôi thêm một miếng gỗ mỏng làm đáy.

Hội đồng quản trị với đèn led

Ở giữa, tôi đặt 2 miếng gỗ nhỏ mỗi bên cách đỉnh 9 cm. Điều này giữ bảng nơi dẫn đầu sẽ ngồi.

Bảng có đèn led là một bảng nhỏ (32 cm x 32 cm).

Tôi đã khoan 9 lỗ để đèn led thoát ra ngoài.

phân công

Tôi thực hiện sự phân chia với cùng một vật liệu như đáy và bảng với đèn led.

4 miếng, mỗi miếng có đường rạch 10,3 cm (9 cm x 31 cm). Bây giờ tôi có thể kết hợp chúng lại với nhau.

Các nút và đầu đọc RFID

Tôi đã tạo một lỗ trên đế để đặt đầu đọc RFID và các nút của mình vào. Đối với RFID, tôi đặt một tấm bảng mỏng phía trước để làm cho nó trông sạch sẽ hơn.

Bước 6: Bước 6: Đưa mọi thứ vào nhà ở

Điều này phụ thuộc vào cách bạn muốn làm điều đó. Cá nhân tôi đã sử dụng rất nhiều loại cáp mà không cần hàn vì tôi muốn có thể sử dụng lại Raspberry Pi của mình.

Tôi dán đèn led vào vị trí và dán đầu đọc RFID và bảng mạch vào vỏ.

Và đó là cách bạn tạo ra một Keysorter!

Đề xuất: