Mục lục:
- Quân nhu
- Bước 1: Chuẩn bị Rasperry Pi
- Bước 2: Thiết lập mã Visual Studio và MySQL Workbench
- Bước 3: Fritzing Sơ đồ
- Bước 4: Viết mã trên Github
- Bước 5: Cấu trúc cơ sở dữ liệu chuẩn hóa
- Bước 6: Trường hợp cho Nhà phân phối thẻ
- Bước 7: Lập trình như một dịch vụ
Video: Nhà phân phối thẻ tự động: 7 bước
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:31
Tôi đã chọn một nhà phân phối thẻ thông minh làm dự án đầu tiên của mình vì tôi thích chơi một trò chơi bài. Điều tôi không thích nhất là chia bài. Bạn phải nhớ mỗi trò chơi mỗi người nhận được bao nhiêu thẻ. Điều đó trở nên khó hiểu khi bạn biết rất nhiều trò chơi bài. Dự án của tôi cũng sẽ giúp những người gặp khó khăn với việc phân phát thẻ như người lớn tuổi và những người đang bị Parkinson.
Quân nhu
- 1 Raspberry Pi (Tôi đã sử dụng Raspberry Pi 4)
- Thẻ SD (khuyên dùng 16GB)
- 1 mảnh bánh mì cho Raspberry Pi (mảnh chữ T)
- 2 breadboards
- 1 Mô-đun cấp nguồn cho breadboard, 5V và 3V3
- 1 màn hình LCD
- 1 chiết áp
- 1 MPU6050 (gia tốc kế và con quay hồi chuyển)
- 1 bóng bán dẫn NPN
- 1 bộ mở rộng I / O PCF8574N
- 1 động cơ bước
- 1 bảng đột phá ULN2003 để điều khiển động cơ bước
- 1 cảm biến siêu âm HC-SR04
- 1 động cơ DC 5V
- 1 điốt
- 6 điện trở 470 Ohm
- 4 điện trở 10K Ohm
- Dây điện để kết nối mọi thứ
Hữu ích cần có trong khi thực hiện:
- Hàn sắt
- Hàn
- Dremel hoặc máy cưa lọng (thứ để cắt gỗ và nhựa abs)
Phần mềm:
- Bột trét
- Bàn làm việc MySQL
- Win32 Disk Imager
- Trình chỉnh sửa mã (tôi khuyên bạn nên dùng Visual Studio Code)
- WinSCP
- Hình ảnh Raspbian
Bước 1: Chuẩn bị Rasperry Pi
Đầu tiên, chúng ta cần chuẩn bị Raspberry Pi trước khi làm bất cứ điều gì khác. Bởi vì mọi thứ sẽ được vận hành bởi Pi nên đây là một trong những phần quan trọng nhất của nhà phân phối thẻ.
Cài đặt:
Tải xuống hình ảnh Raspbian từ
- Tải xuống tệp ZIP
- Giải nén tệp ZIP ở nơi bạn có thể tìm thấy nó một cách dễ dàng
- Mở Win32 Disk Imager và chọn hình ảnh đã trích xuất
- Chọn thẻ SD trong menu thả xuống và nhấp vào ghi
- Sau khi quá trình ghi hoàn tất, bạn có thể đóng Win32 Disk Imager
Bây giờ chúng ta cần làm thêm một số việc nữa trước khi có thể kết nối với Pi
- Điều hướng đến thư mục khởi động trên thẻ SD
- Mở tệp cmdline.txt
- Thêm 'ip = 169.254.10.1' vào cuối dòng được phân tách bằng dấu cách
- Lưu và thoát khỏi tệp
- Tạo trong cùng thư mục một tệp có tên ssh và xóa phần mở rộng (điều này sẽ bật ssh trong lần khởi động đầu tiên để chúng tôi có thể kết nối với Pi)
- Tháo thẻ SD một cách an toàn và đặt nó vào Pi
Bây giờ chúng ta có thể kết nối với Pi:
- Lấy cáp ethernet và cắm một đầu vào Pi và đầu kia vào máy tính của bạn
- Mở Putty
- Nhập 169.254.10.1 vào trường Tên máy chủ
- Đảm bảo SSH được chọn và cổng là 22
- Bấm mở
- Nếu bạn nhận được cảnh báo, bạn có thể tiếp tục và bỏ qua nó
- Tên người dùng là pi và mật khẩu là mâm xôi
Cấu hình và cài đặt phần mềm:
Mở raspi-config bằng lệnh sau:
sudo raspi-config
Chọn tùy chọn thứ 5: Tùy chọn giao diện
Bật SPI và I2C
Tắt những điều sau trong tùy chọn thứ 3: Tùy chọn khởi động:
- Màn hình giật gân
- Chọn cli để khởi động chứ không phải máy tính để bàn
Thiết lập Wi-Fi:
Wifi hữu ích để dễ dàng điều hướng đến trang web. Đảm bảo rằng bạn đã đóng thông tin đăng nhập wifi của mình.
Để thiết lập wifi, chúng ta cần một số thứ:
Thêm wifi của bạn bằng cách sử dụng lệnh này và thay đổi SSID và MẬT KHẨU thành thông tin của bạn:
sudo wpa_passphrase "SSID" "MẬT KHẨU" >> /etc/wpa_supplicant/wpa_supplicant.conf
Thực hiện lệnh này để cấu hình lại wifi của bạn:
sudo wpa_cli
Chọn đúng giao diện:
giao diện wlan0
Cấu hình lại giao diện:
cấu hình lại
Kiểm tra xem cấu hình lại đã thành công chưa bằng lệnh này:
ip a
Nếu bạn thấy địa chỉ IP trên giao diện wlan0 thì mọi thứ đã được thiết lập.
Cập nhật hệ điều hành
Cập nhật hệ điều hành bằng 2 lệnh sau:
cập nhật apt sudo
sudo apt nâng cấp đầy đủ
Thiết lập MariaDB:
Cài đặt Máy chủ web Apache:
sudo apt install apache2 -y
Cài đặt máy chủ MariaDB:
sudo apt install mariadb-server -y
Bây giờ chúng ta cần khởi động lại:
khởi động lại sudo
Bạn nên bảo mật cài đặt MariaDB. Bạn có thể làm điều đó bằng cách chạy lệnh này:
sudo mysql_secure_installation
Trước tiên, bạn sẽ được yêu cầu nhập mật khẩu gốc hiện tại nhưng cài đặt mặc định không có mật khẩu nên hãy nhấn enter.
Tiếp theo, bạn sẽ được hỏi xem bạn có muốn đặt mật khẩu gốc hay không, hãy nhập y. Hãy chắc chắn rằng bạn có thể nhớ mật khẩu!
- Nhập y để xóa người dùng ẩn danh
- Nhập y để tắt đăng nhập root từ xa
- Nhập y để xóa cơ sở dữ liệu thử nghiệm và truy cập vào nó
- Nhập y để tải lại các đặc quyền
Cài đặt MariaDB của bạn phải được bảo mật!
Bây giờ chúng ta có thể tạo một người dùng mới:
Nhập shell mysql bằng lệnh này:
sudo mysql
Tạo người dùng với tên người dùng mysql và mật khẩu (your_password) theo các lệnh sau:
tạo user mysql @ localhost được xác định bởi 'your_password';
cấp tất cả các đặc quyền trên *. * cho mysql @ localhost;
QUYỀN RIÊNG TƯ CỦA FLUSH;
Thoát khỏi trình bao mysql bằng lệnh này:
lối ra;
Các gói Python:
Python nên đã được cài đặt trừ khi bạn chọn phiên bản Lite:
sudo apt cài đặt python3-pip
Chúng tôi cần một lượng lớn các gói Python, bạn có thể cài đặt tất cả chúng bằng lệnh sau:
pip3 install mysql-connector-python flask-socketio flask-cors gevent gevent-websocket
Bây giờ chúng ta cần khởi động lại một lần nữa
khởi động lại sudo
Bước 2: Thiết lập mã Visual Studio và MySQL Workbench
Kết nối với Pi bằng MySQL Workbench:
Mở MySQL Workbench
Tạo kết nối mới với Pi bằng thông tin sau:
- Tên kết nối: Raspi
- Phương thức kết nối: TCP / IP chuẩn qua SSH
- Tên máy chủ SSH: Địa chỉ IP của Pi
Bạn có thể lấy địa chỉ IP bằng lệnh này:
ip a
- Tên người dùng SSH: pi
- Tên máy chủ MySQL: 127.0.0.1
- Cổng máy chủ MySQL: 3306
- Tên người dùng: mysql
Nhấp vào ok và nhập mật khẩu cho người dùng pi và sau đó nhập mật khẩu cho người dùng mysql.
Thiết lập mã Visual Studio:
Mở mã Visual Studio
Cài đặt 2 tiện ích mở rộng này:
- Điều khiển từ xa - SSH
- Từ xa - SSH: Chỉnh sửa tệp cấu hình
Nhấn trong Visual Studio Code F1 và nhập ssh
Chọn SSH từ xa: Thêm máy chủ SSH mới
Điền vào ssh pi @ IP-address
Trong bước tiếp theo, nhấn enter
Kết nối hiện đã được thực hiện với Pi. Bạn có thể kết nối với Pi bằng cách nhấn F1 và chọn kết nối với Máy chủ từ xa.
Nhập mật khẩu để Visual Studio Code có quyền truy cập vào Pi.
Một điều nữa: Cài đặt phần mở rộng Python trên máy từ xa để bạn có thể dễ dàng chạy và gỡ lỗi mã.
Bước 3: Fritzing Sơ đồ
Trong bước này tôi sẽ giải thích mạch.
Các sơ đồ trên được thực hiện với Fritzing.
Động cơ DC:
Kết nối GPIO 18 với chân đế của bộ thu, chân giữa trên bóng bán dẫn npn. Nối đất của động cơ với bộ thu từ bóng bán dẫn và công suất của động cơ là 5V. Nối đất của bóng bán dẫn với đường dây nối đất. Kết nối diode trong rào cản trên động cơ để nó chặn dòng chảy trực tiếp đến bóng bán dẫn.
Động cơ bước:
Kết nối động cơ bước với bảng điều khiển. Trên bảng điều khiển có ở một bên chân để kết nối 5V và nối đất. Các chân khác là chân điều khiển. Các chân này điều khiển các nam châm bên trong động cơ để nó có thể quay. Kết nối các chân này với GPIO 12, 16, 20 và 21 trên Raspberry Pi.
Siêu âm HC-SR04:
Cảm biến này có thể đo khoảng cách đến khoảng 4,5 mét bằng cách sử dụng âm thanh.
Nối chân VCC với chân 5V, chân kích hoạt với GPIO 25, chân echo với điện trở 470 Ohm với GPIO 24 và nối đất với điện trở 470 Ohm xuống đất.
MPU6050:
Kết nối chân VCC với 3V3, nối đất với đất, scl với scl trên Pi và sda với sda trên Pi. Đối với cảm biến này, tôi sử dụng I2C để điều khiển nó. Bạn có thể đọc thêm về nó ở đây. Đây là một lời giải thích cơ bản: Pi là chính và MPU6050 là nô lệ. Thông qua dòng scl, Pi điều khiển thời gian và dòng sda được sử dụng để gửi dữ liệu từ master đến slave hoặc từ slave tới master. Chỉ chủ mới có thể bắt đầu truyền dữ liệu.
Điện trở phụ thuộc ánh sáng:
Để có được số đọc chính xác từ LDR, tôi sử dụng chip MCP3008. Điều này đảm bảo rằng các kết quả đọc từ ldr được ổn định và chính xác được chuyển đổi từ tín hiệu tương tự sang tín hiệu kỹ thuật số.
Nối 3V3 vào một bên của ldr với điện trở 10K Ohm giữa nó. Giữa ldr và điện trở kết nối một dây với kênh 0 của MCP3008. Sau đó kết nối mặt còn lại của ldr với mặt đất.
Màn hình LCD:
Bạn có thể sử dụng màn hình LCD mà không có PCF8574 nhưng vì chân GPIO trên Pi bị hạn chế nên tôi sử dụng PCF8574 để tiết kiệm một số chân GPIO. Bạn cũng có thể sử dụng sổ đăng ký ca nhưng tôi thích PCF8574 hơn. Bạn có thể điều khiển PCF8574 bằng giao thức SMbus nhưng tôi đã viết lớp riêng để điều khiển nó. Chiết áp kiểm soát độ tương phản.
Chân màn hình LCD:
- VSS xuống đất
- VDD đến 5V
- V0 đến chân biến đổi của chiết áp
- RS đến GPIO 13
- R / W nối đất vì tôi chỉ ghi vào màn hình chứ không đọc
- E đến GPIO 19
- DB0 đến P0 của PCF
- DB1 đến P1
- DB2 đến P2
- DB3 đến P3
- DB4 đến P4
- DB5 đến P5
- DB6 đến P6
- DB7 đến P7
- LED + đến 5V
- LED- nối đất
PCF8574 chân:
- A0 xuống đất
- A1 đến mặt đất
- A2 xuống đất
- Tiếp đất
- VCC đến 5V
- SDA đến GPIO 27
- SCL đến GPIO 22 với điện trở 330 Ohm
Bạn có thể không có LED + và LED- tùy thuộc vào loại màn hình bạn có. LED + và LED- là đèn nền.
Nối cực dương của chiết áp vào 5V và nối đất với đất.
Hãy chắc chắn rằng bạn sử dụng điện trở kéo lên!
Bước 4: Viết mã trên Github
Bạn có thể tìm thấy tất cả các mã cần thiết trên Github của tôi.
Dự án thư mục1:
Thư mục này chứa tất cả mã cho chương trình phụ trợ. Trong thư mục Klasses là tất cả các lớp để điều khiển phần cứng.
Kho thư mục chứa 2 tệp: Database.py và DataRepository.py. Database.py duy trì kết nối với cơ sở dữ liệu và xử lý các truy vấn. DataRepository.py chứa tất cả các truy vấn cần thiết cho trang web.
App.py là tệp chính của chương trình phụ trợ. Tệp này tự động khởi động khi Pi khởi động.
Config.py chứa một số cài đặt để kết nối với cơ sở dữ liệu. Đảm bảo rằng bạn điền vào các tệp này bằng thông tin của riêng bạn.
Bạn có thể đặt thư mục này ở bất kỳ đâu trong thư mục chính của mình.
Thư mục html:
Thư mục này chứa tất cả các tệp cho trang web, giao diện người dùng.
- Thư mục chứa các tệp cho bố cục của trang web.
- Phông chữ chứa các phông chữ được sử dụng trên trang web.
- Tập lệnh chứa tất cả các tệp Javascript để làm cho trang web động
Thư mục này phải nằm trong thư mục / var / www / html
Bạn có thể sao chép một tệp hoặc thư mục bằng lệnh này:
sudo mv / path / to / current / directory / path / to / destination / directory
Để điều hướng đến loại trang web trong trình duyệt của bạn, địa chỉ IP được hiển thị trên màn hình LCD.
Bước 5: Cấu trúc cơ sở dữ liệu chuẩn hóa
Trong bước này, chúng tôi sẽ nhập cơ sở dữ liệu.
- Kết nối với Raspberry Pi của bạn bằng MySQL Workbench
- Nhấp vào Máy chủ -> Nhập dữ liệu
- Chọn Nhập tệp độc lập
- Trong thư mục Cơ sở dữ liệu-xuất từ Github có một tệp sql có tên là dump_project1.sql
- Duyệt đến tệp này và nhấp vào bắt đầu nhập
Đó là nó. Pi bây giờ có thể truy cập cơ sở dữ liệu nếu nó có thông tin chính xác.
Bước 6: Trường hợp cho Nhà phân phối thẻ
Trong bước này, tôi sẽ giải thích những gì tôi đã sử dụng cho trường hợp và cách tôi gắn kết mọi thứ.
Đối với trường hợp tôi sử dụng 2 hộp ABS:
- 265 x 185 x 95 mm
- 171 x 121 x 80 mm
Các lỗ tôi đã tạo trong các hộp
Một lỗ cho màn hình LCD, 3 lỗ cho cáp nguồn, một lỗ cho dây dẫn từ động cơ bước, động cơ DC và cảm biến siêu âm.
Trong hộp nhỏ nhất, tôi tạo một lỗ cho dây dẫn từ các thành phần và một lỗ để thẻ đi qua. Ở trên cùng, tôi đã tạo một lỗ lớn nhất để bạn có thể đặt thẻ chơi vào thiết bị.
Tôi đã lắp động cơ DC bằng một giá đỡ và một số băng dính hai mặt. Tôi làm một tấm ván gỗ để đặt các quân bài trên đó có lỗ để bánh xe bắn quân bài.
Tôi đã chọn nhựa ABS vì nó nhẹ nên động cơ bước có thể quay dễ dàng. Gỗ có thể rất nặng và động cơ bước có thể gặp vấn đề với điều này. Để cắt các lỗ, tôi sử dụng một mũi khoan với các mũi khoan được thiết kế cho kim loại và một Dremel. Cắt các lỗ lớn hơn mất nhiều công hơn và cưa đồ gá sẽ tốt hơn.
Bước 7: Lập trình như một dịch vụ
Nó thực sự hữu ích để bắt đầu mã sau khi Pi được khởi động. Vì điều đó, chúng tôi sẽ thực hiện một dịch vụ.
Tạo một tệp mới có tên là smartcard.service bằng lệnh sau:
sudo nano /etc/systemd/system/smartcard.service
Điều này phải đi vào tệp:
[Đơn vị]
Description = Smart card backend After = network.target [Service] ExecStart = / usr / bin / python3 -u app.py WorkingDirectory = / home / pi / project1 StandardOutput = inherit StandardError = inherit Khởi động lại = always User = pi [Install] WantedBy = multi-user.target WorkingDirectory là đường dẫn đến thư mục chứa chương trình
Bây giờ bạn đã có Thẻ thông minh của riêng mình!
Đề xuất:
Máy phân phối rượu dạng gel tự động với Esp32: 9 bước
Máy rút rượu gel tự động với Esp32: Trong hướng dẫn, chúng ta sẽ xem cách tạo một nguyên mẫu hoàn chỉnh, để lắp ráp máy phân phối rượu gel tự động với esp32, nó sẽ bao gồm lắp ráp từng bước, mạch điện tử và mã nguồn được giải thích tất cả từng bước bươc chân
Độ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
Làm thế nào để tạo ra một máy phân phối thuốc tự động: 6 bước
Làm thế nào để tạo ra một máy phân phối thuốc tự động: Đây là máy phân phối thuốc tự động của tôi. Tôi thực hiện điều này cho một dự án trong trường học của tôi. Lý do tại sao tôi đưa ra là vì bà của bạn trai tôi phải uống rất nhiều thuốc, và rất khó để cô ấy biết mình phải uống loại nào vào thời điểm đó
Hệ thống giám sát và phân phối điện từ xa của nhà máy điện năng lượng mặt trời: 10 bước
Hệ thống giám sát và phân phối điện từ xa của nhà máy điện mặt trời: Mục đích của dự án này là giám sát và phân phối điện năng trong hệ thống điện (hệ thống điện mặt trời). Thiết kế của hệ thống này được giải thích trong phần tóm tắt như sau. Hệ thống chứa nhiều lưới với khoảng 2 tấm pin mặt trời trong
Làm thế nào để phơi bày phần chết (nội dung) của một CPU cũ: 4 bước
Làm thế nào để phơi bày Die (nội dung) của một CPU cũ: Đây là hướng dẫn đầu tiên của tôi, vì vậy không có nhiều bước liên quan. Tôi chỉ mới làm quen với trang web! Mọi ý kiến đều được hoan nghênh. Hầu hết chúng ta đã từng nhìn thấy ảnh của một con chip silicon, thường được phóng đại. Trong nhiều loại chip đó, đặc biệt là loại lớn nhất