Mục lục:
- Bước 1: Bước 1: Tôi sẽ cần gì?
- Bước 2: Bước 2: Lập sơ đồ cơ sở dữ liệu
- Bước 3: Bước 3: Mã hóa
- Bước 4: Bước 4: Đặt mã Al trên Raspberry Pi của tôi
- Bước 5: Bước 5: Làm nhà ở
- Bước 6: Bước 6: Đưa mọi thứ vào nhà ở
Video: Keysorter: 6 bước
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:34
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ì?
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
Để 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
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à ở
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:
Động cơ bước Điều khiển động cơ bước Không cần vi điều khiển !: 6 bước
Động cơ bước Điều khiển động cơ bước Không cần vi điều khiển !: Trong phần Hướng dẫn nhanh này, chúng tôi sẽ tạo một bộ điều khiển động cơ bước đơn giản bằng cách sử dụng động cơ bước. Dự án này không yêu cầu mạch phức tạp hoặc vi điều khiển. Vì vậy, không cần thêm ado, chúng ta hãy bắt đầu
Động cơ bước được điều khiển Động cơ bước không có vi điều khiển (V2): 9 bước (có hình ảnh)
Động cơ bước được điều khiển bằng động cơ bước Không cần vi điều khiển (V2): Trong một trong những Hướng dẫn trước đây của tôi, tôi đã chỉ cho bạn cách điều khiển động cơ bước bằng cách sử dụng động cơ bước mà không cần vi điều khiển. Đó là một dự án nhanh chóng và thú vị nhưng nó đi kèm với hai vấn đề sẽ được giải quyết trong Có thể hướng dẫn này. Vì vậy, hóm hỉnh
Đầu máy mô hình điều khiển động cơ bước - Động cơ bước như một bộ mã hóa quay: 11 bước (có hình ảnh)
Đầu máy mô hình điều khiển động cơ bước | Động cơ bước làm bộ mã hóa quay: Trong một trong những phần Hướng dẫn trước, chúng ta đã học cách sử dụng động cơ bước làm bộ mã hóa quay. Trong dự án này, bây giờ chúng ta sẽ sử dụng bộ mã hóa quay động cơ bước đó để điều khiển đầu máy mô hình bằng vi điều khiển Arduino. Vì vậy, không có fu
Âm thanh bay bổng với Arduino Uno Từng bước (8 bước): 8 bước
Acoustic Levitation With Arduino Uno Step-by-by-by (8 bước): bộ chuyển đổi âm thanh siêu âm L298N Dc cấp nguồn cho bộ chuyển đổi âm thanh nữ với chân cắm một chiều nam Arduino UNOBreadboard Cách hoạt động: Đầu tiên, bạn tải mã lên Arduino Uno (nó là một vi điều khiển được trang bị kỹ thuật số và các cổng tương tự để chuyển đổi mã (C ++)
Động cơ bước Điều khiển động cơ bước Động cơ bước - Động cơ bước như một bộ mã hóa quay: 11 bước (có hình ảnh)
Động cơ bước Điều khiển động cơ bước Động cơ bước | Động cơ bước như một bộ mã hóa quay: Có một vài động cơ bước nằm xung quanh và muốn làm điều gì đó? Trong Có thể hướng dẫn này, hãy sử dụng động cơ bước làm bộ mã hóa quay để điều khiển vị trí của động cơ bước khác bằng vi điều khiển Arduino. Vì vậy, không cần phải quảng cáo thêm, chúng ta hãy