Mục lục:

Đài phun nước không tiếp xúc: 9 bước (có hình ảnh)
Đài phun nước không tiếp xúc: 9 bước (có hình ảnh)

Video: Đài phun nước không tiếp xúc: 9 bước (có hình ảnh)

Video: Đài phun nước không tiếp xúc: 9 bước (có hình ảnh)
Video: Chụp X-Quang nguy hiểm như thế nào? Hiểu rõ trong 5 phút 2024, Tháng mười một
Anonim
Đài phun nước không tiếp xúc
Đài phun nước không tiếp xúc

Vào cuối năm đầu tiên của tôi với tư cách là một sinh viên MCT, tôi được giao nhiệm vụ thực hiện một dự án bao gồm tất cả các kỹ năng tôi đã thu thập được từ các khóa học trong suốt cả năm.

Tôi đang tìm kiếm một dự án có thể kiểm tra tất cả các yêu cầu do giáo viên của tôi đặt ra và đồng thời khiến tôi vui vẻ khi thực hiện. Khi tìm kiếm một chủ đề, tôi không thể không cảm thấy bị truyền cảm hứng bởi Covid-19 (Điều này xảy ra ngay trước khi nó bùng phát trên toàn thế giới.) Tôi đã chọn một vòi phun / máy phân phối nước ít tiếp xúc hơn, vì nó sẽ cung cấp một cách uống nước mà không chạm vào một số nút trước khi nước chảy ra.

Dự án này sử dụng cảm biến khoảng cách để phát hiện xem cốc hoặc ly thủy tinh đã được đặt dưới đầu ra của nước hay chưa, đài phun sẽ tiến hành xuất nước trong 60 giây (100ml / phút). Điều này là để làm cho nó nhất quán hơn vì việc phát hiện xem kính có bị kéo đi không được chứng minh là quá khó / chậm của một nhiệm vụ, đó là lý do tại sao bộ đếm thời gian được đưa ra. Sau khi ly của bạn đã được đổ đầy 100ml nước, bạn có thể đợi trong 5 giây và nếu ly vẫn ở phía trước cảm biến khoảng cách, nó sẽ tiến hành đổ đầy vào một thời gian khác (điều này có nghĩa là cũng có thời gian chờ 5 giây giữa hai lần đổ khác nhau). mặt hàng).

Quân nhu

Các thành phần

- 1x RaspberryPi (Tôi đã sử dụng phiên bản thứ 4 nhưng các phiên bản cũ hơn cũng có thể hoạt động) - 1x bóng bán dẫn S8050 hoặc 1x bóng bán dẫn PN2222 cũng có thể hoạt động- 1x Điện trở quang- 1x HC-SR04 (Cảm biến khoảng cách siêu âm) - 1x RFID-RC522- 3x Khác nhau màu sắc Đèn LED (xanh lam, vàng, đỏ) - 1x LCD1602- 1x Active Buzzer- 1x PCF8574- 1x MCP3008- 1x Water Pump (Đã sử dụng một máy bơm nhu động 12v, liên kết tới mục này)

- Nguồn cung cấp 1x DC (12v, 600mAh) - Nguồn 1x cục gạch với 3 điểm - 3x breadboard (bạn có thể sử dụng ít hơn) - T-cobbler cho chân GPIO RaspberryPi- Cáp T-cobbler (để kết nối giữa pi và cobbler)

Vật liệu và công cụ được sử dụng

- Một mũi khoan với các mũi khoan sau:

- 4mm (để khoan trước lỗ cho vít) - 15mm (để khoan lỗ cho cảm biến khoảng cách)

- Bất kỳ tuốc nơ vít nào- 30 vít dài 45mm- 6 vít 20mm- 2 bản lề cho cửa- Một tấm MDF khoảng 130cm x 80cm- Một vài tệp

Bước 1: Lắp ráp mạch

Lắp ráp mạch
Lắp ráp mạch
Lắp ráp mạch
Lắp ráp mạch
Lắp ráp mạch
Lắp ráp mạch

Đối với mạch chúng ta có 2 cảm biến, một cảm biến khoảng cách và một điện trở quang. Cảm biến khoảng cách được sử dụng để phát hiện xem một chiếc cốc đã được đặt trong phạm vi của đài phun nước hay chưa và tùy chọn tôi đã thêm một điện trở quang, cảm biến này được sử dụng để phát hiện xem chiếc cốc có bị mở bởi bất kỳ ai không được phép mở nó hay không. Trên hết, chúng tôi có một đầu đọc RFID, đầu đọc này có thể được sử dụng để xác thực một thợ cơ khí cần mở vỏ để đổ đầy bình chứa nước hoặc cho một số vấn đề cơ học khác.

Đối với các phần tử đang hoạt động, chúng tôi có LCD1602, bộ rung hoạt động và một máy bơm nhu động, màn hình LCD được sử dụng để hiển thị trạng thái như trường hợp đang mở hoặc máy bơm đang chạy cũng như địa chỉ IP của thiết bị sẽ được hiển thị, bộ rung được sử dụng để phát ra âm thanh báo động khi thùng máy đã được mở mà không có người cho phép.

Tôi đã thêm breadboard và các chế độ xem sơ đồ của mạch bên dưới.

Bước 2: Thiết lập RaspberryPi của chúng tôi

Để thiết lập RaspberryPi của chúng tôi, chúng tôi sẽ tải xuống phần mềm hình ảnh từ trang Raspberry, với phần mềm này, bạn có thể tải xuống phiên bản Raspbian bạn muốn và hình ảnh SDCARD của bạn cho bạn. Sau khi công cụ này hoàn thành công việc, bạn có thể mở SDCARD trong Windows Explorer, bạn sẽ có thể thấy phân vùng khởi động của RaspberryPi. Tại đây, chúng ta sẽ tìm thấy một tệp có tên là cmdline.txt (không mở tệp này bằng notepad, hãy mở tệp này bằng Notepad ++ hoặc bất kỳ IDE nào khác). Chúng tôi sẽ thêm ip = 169.254.10.1 vào cuối tệp này để đảm bảo chúng tôi có thể kết nối với thiết bị của mình qua ethernet (đảm bảo bạn không thêm bất kỳ ENTERS nào vào cuối tệp của mình nếu không bạn sẽ gặp sự cố).

Bây giờ bạn có thể đặt SDCARD của mình vào RaspberryPi và khởi động nó, kết nối Pi với máy tính của bạn và sử dụng Putty để kết nối với Pi của bạn qua SSH. Tôi sử dụng lệnh sau để kết nối với Pi của mình thay vì sử dụng Putty. "ssh [email protected]" có thể hết thời gian chờ, vì vậy hãy kiên nhẫn và đợi Pi khởi động. Sau khi được nhắc nhập mật khẩu, chúng tôi sẽ điền mật khẩu mặc định là "raspberry". Đảm bảo thay đổi mật khẩu này sau khi đăng nhập để ngăn bất kỳ ai có ý định xấu truy cập vào Raspberry Pi của bạn.

Bây giờ chúng ta sẽ cấu hình Pi của mình để cung cấp các chức năng cần thiết cho mã của chúng ta. Sử dụng "sudo raspi-config" để mở menu cấu hình và tại đây chúng ta sẽ chuyển đến Tùy chọn giao diện.

Dưới đây, chúng tôi sẽ BẬT các tùy chọn sau: - SPI- I2C

Làm theo hướng dẫn này để thiết lập kết nối internet không dây trên Pi của bạn, sau khi bạn thực hiện thành công việc này, chúng tôi có thể cài đặt các gói yêu cầu của chúng tôi.

Các gói: (chạy các lệnh theo thứ tự như chúng được lưu ý ở đây)

Sau đây để nhận các bản cập nhật mới nhất cho bản cập nhật Pi- sudo apt && apt nâng cấp của chúng tôi -y

Cài đặt máy chủ MySQL và máy chủ web của chúng tôi- sudo apt install mariadb-server apache2

Tôi sẽ sử dụng MySQL Workbench để thiết lập cơ sở dữ liệu ở phần sau của hướng dẫn này, nếu bạn không sử dụng cái này và thích phpmyadmin, bạn có thể cài đặt cái này bằng lệnh sau, bạn có thể sử dụng bất kỳ MySQL Client nào khác miễn là bạn. 'có thể nhập cơ sở dữ liệu đúng cách. - sudo apt install phpmyadmin

Sau khi bạn đã thực hiện tất cả những điều trên, chúng tôi cần tạo một người dùng cho cơ sở dữ liệu của mình. Sử dụng "sudo mysql -u root" để đăng nhập vào máy chủ MySQL của bạn, tại đây chúng tôi sẽ tạo một người dùng có tên là db_admin với mật khẩu tương ứng của nó, hãy giữ mật khẩu này được ghi chú ở đâu đó sau này trong hướng dẫn. TẤT CẢ CÁC QUYỀN RIÊNG TƯ ĐƯỢC BẬT *. * ĐẾN "db_admin" @ "%" ĐƯỢC XÁC ĐỊNH BỞI "yourPasswordHere" VỚI TÙY CHỌN CẤP;

Sử dụng lệnh "\ q" để thoát ra khỏi MySQL terminal.

Gói Python: Chúng tôi vẫn cần cài đặt một số gói python trước khi tiếp tục, hãy chạy lệnh dưới đây để đảm bảo mọi thứ đều ở đó để có trải nghiệm hoàn hảo.

sudo pip3 install Flask Flask-Cors Flask-SocketIO gevent gevent-websocket greenlet spi SPI-Pyspidev

Cũng như các gói python kết nối MySQL sau đây apt cài đặt python3-mysql.connector -y

Nếu mọi việc ổn thỏa, bây giờ bạn có thể truy cập Pi trên trình duyệt web của mình bằng địa chỉ sau

Bước 3: Thiết lập chương trình phụ trợ

Thiết lập chương trình phụ trợ
Thiết lập chương trình phụ trợ

Ở đây tôi sẽ giải thích cách bạn có thể tự thiết lập chương trình phụ trợ, trước tiên hãy tải xuống tệp rar từ bên dưới, giải nén nó vào một thư mục tạm thời nào đó. Kết nối với RaspberryPi của bạn bằng FileZilla hoặc WinSCP bằng các thông tin đăng nhập sau:

IP: 169.254.10.1User: piPassword: raspberry (nếu bạn đã thay đổi mật khẩu, hãy làm điều đó ở đây)

Sau đó, bạn có thể tiến hành chuyển các tệp bạn đã giải nén vào bất kỳ thư mục nào bạn muốn trong thư mục chính của người dùng pi. Vì lợi ích đơn giản, chúng tôi sẽ giả định trong thiết lập này rằng chúng tôi đã tải lên tất cả các tệp của mình trong thư mục tài liệu.

Giữ chương trình FTP của bạn luôn mở cho bước tiếp theo!

Bây giờ, hãy mở lại dấu nhắc lệnh bằng kết nối SSH của bạn vì chúng ta sẽ cần thực hiện một số thay đổi đối với máy chủ web để giao diện người dùng có thể giao tiếp với phụ trợ. Chúng ta sẽ mở tệp cấu hình Apache2 mặc định và sửa đổi nó một chút: sudo nano /etc/apache2/sites-available/000-default.conf

Thêm các dòng sau vào bên dưới DocumentRoot trong tệp cấu hình mà chúng tôi vừa mở: ProxyPass / api / https://127.0.0.1:5000/api/ProxyPassReverse / api /

Bạn có thể xem hình ảnh đính kèm để làm ví dụ.

Bước 4: Thiết lập giao diện người dùng

Trước khi chuyển các tệp của mình, chúng tôi sẽ phải thực hiện một số việc trước khi có thể bắt đầu chuyển các tệp giao diện người dùng."

Sau đó, chúng ta có thể thay đổi mật khẩu của người dùng root bằng lệnh sau: "passwd" Lệnh này sẽ yêu cầu bạn nhập một mật khẩu mới, sau khi thực hiện xong, bạn có thể quay lại chương trình FTP và đăng nhập bằng thông tin đăng nhập gốc của mình:

IP: 169.254.10.1 Người dùng: rootPassword:

Tải xuống tệp rar từ bên dưới và giải nén nó trong một thư mục tạm thời, bạn có thể di chuyển các tệp này sang RaspberryPi của mình vào thư mục sau / var / www / html /, sau khi hoàn tất, bạn có thể truy cập giao diện người dùng trên http: / /169.254.10.1, bạn chưa thể tương tác vì chương trình phụ trợ chưa chạy, tôi sẽ chỉ cho bạn cách thực hiện việc này ở phần sau.

Bước 5: Nhập cơ sở dữ liệu cho dự án của chúng tôi

Nhập cơ sở dữ liệu cho dự án của chúng tôi
Nhập cơ sở dữ liệu cho dự án của chúng tôi
Nhập cơ sở dữ liệu cho dự án của chúng tôi
Nhập cơ sở dữ liệu cho dự án của chúng tôi

Mở chương trình quản lý máy chủ MySQL yêu thích của bạn và kết nối với Raspberry Pi của bạn bằng thông tin đăng nhập mà chúng tôi đã tạo ở Bước 2.

Tải xuống kết xuất cơ sở dữ liệu từ bên dưới và nhập nó như bình thường, bàn làm việc MySQL bạn sẽ đi tới Tệp> Mở SQL Script và chọn kết xuất cơ sở dữ liệu bạn đã tải xuống. Sau đó nhấn CTRL + SHIFT + ENTER và tập lệnh SQL sẽ được chạy và cấu trúc cho cơ sở dữ liệu nên được tạo.

Tôi đã thêm thông tin đăng nhập mà tôi đã sử dụng cho RaspberryPi của mình làm ví dụ bên dưới cũng như một số hình ảnh về cấu trúc Cơ sở dữ liệu, bạn có thể xem qua nó và thử và có được ý tưởng chung về cách mọi thứ hoạt động.

Bước 6: Bắt đầu dự án của chúng tôi

Bắt đầu dự án của chúng tôi
Bắt đầu dự án của chúng tôi
Bắt đầu dự án của chúng tôi
Bắt đầu dự án của chúng tôi

Trước khi chúng tôi có thể khởi động dự án của mình, chúng tôi cần thay đổi thông tin đăng nhập cơ sở dữ liệu trong tệp config.py, nếu bạn đã làm theo các hướng dẫn chính xác như hướng dẫn này thì bạn có thể tìm thấy các thông tin này trong /home/pi/Documents/Backend/src/config.py ở đây bạn cần thay đổi thông tin đăng nhập của biến db_config để khớp với những thông tin chúng tôi đã tạo trước đó cho cơ sở dữ liệu của mình. Tôi đã thêm một ví dụ về những gì bạn sẽ thấy trong tệp này bên dưới.

Sau đó, chúng tôi sẽ thêm một tệp.service tệp này sẽ đảm bảo dự án của chúng tôi bắt đầu khi RaspberryPi khởi động, hãy đảm bảo rằng bạn thay đổi thư mục một cách thích hợp nơi bạn đã cài đặt các tệp phụ trợ. Sử dụng lệnh sau để tạo tệp dịch vụ: sudo nano /etc/systemd/system/dispenser.service Thao tác này sẽ tạo tệp dịch vụ và sao chép, dán đoạn mã bên dưới vào tệp này.

[Unit] Description = Water DispenserAfter = mysql.service

[Dịch vụ] Type = simpleRestart = alwaysRestartSec = 1User = piExecStart = / usr / bin / python3 /home/pi/Documents/Backend/index.py

[Cài đặt] WantedBy = multi-user.target

Sửa đổi dòng có nội dung /home/pi/Documents/Backend/index.py thành nơi bạn đã cài đặt các tệp phụ trợ của mình, nếu bạn không làm đúng, dự án sẽ không được khởi động chính xác! Tôi sẽ thêm một tệp ví dụ bên dưới.

Sau khi bạn thực hiện xong và thoát khỏi trình soạn thảo văn bản, chúng ta có thể kích hoạt dịch vụ bằng các lệnh sau: - sudo systemctl daemon-reload- sudo systemctl enable dispenser- sudo systemctl start dispenser

Ngoài ra, chúng tôi có thể chạy thêm: trình phân phối trạng thái sudo systemctl Điều này sẽ hiển thị một số thông tin xung quanh dịch vụ của chúng tôi, nếu nó đang hoạt động hay không,…

Bước 7: Trường hợp

Trường hợp
Trường hợp
Trường hợp
Trường hợp
Trường hợp
Trường hợp
Trường hợp
Trường hợp

Chúc mừng chúng ta sắp hoàn thành, tôi sẽ thêm một số hình ảnh sẽ hiển thị chính xác kích thước tôi đã sử dụng cho dự án của mình, tôi đã sử dụng tấm MDF dày 18mm, bạn có thể tùy ý sử dụng độ dày khác nhau. Vỏ bọc của tôi có thể được sử dụng như kim chỉ nam để thiết kế của bạn hoặc bạn có thể tạo lại những gì tôi đã làm. (Nếu bạn sử dụng độ dày khác của MDF, bản vẽ của tôi sẽ không cho phép bạn tạo thiết kế của tôi nữa, hãy đảm bảo điều chỉnh nó!) Các tấm tôi đã làm: - 2 tấm 32cm x 42cm (tấm bên) - 1 tấm 24cm x 32cm (tấm dưới) - 2 tấm 16cm x 24cm (tấm trước để LCD và tấm lân cận) - 1 tấm 28cm x 24cm (tấm giữa nhìn từ mặt trước) - 1 tấm 30cm x 24cm (tấm trên)

Bước 8: Chiêm ngưỡng sản phẩm cuối cùng

Chiêm ngưỡng sản phẩm cuối cùng
Chiêm ngưỡng sản phẩm cuối cùng
Chiêm ngưỡng sản phẩm cuối cùng
Chiêm ngưỡng sản phẩm cuối cùng

Bạn đã đi đến cuối cùng và bây giờ hy vọng có thể biến toàn bộ sự việc thành hiện thực. Nếu bạn chỉ là một người qua đường đọc qua, cũng xin chào mừng bạn, tôi cảm ơn bạn đã đọc đến bước cuối cùng!

Tôi đã dành rất nhiều máu, mồ hôi và nước mắt cho dự án này vì vậy tôi sẽ đánh giá cao nó nếu bạn để lại nhận xét, mọi lời phê bình về việc cải thiện nó đều được hoan nghênh!

Bước 9: Các vấn đề

Tôi sẽ đặt dự án ở trạng thái hiện tại như một nguyên mẫu đang hoạt động có thể thấy nhiều cải tiến hơn.

Cơ sở mã của chương trình phụ trợ được cấu trúc theo cách mà một quan hệ nô lệ chính có thể được thực hiện một cách hoàn hảo trong đó một đài phun sẽ hoạt động như giao diện người dùng chính và tất cả các đài khác sẽ đẩy dữ liệu và thay đổi qua api REST của chính. Cũng có những phần còn lại của hệ thống mã thông báo API trong mã vì điều này dự định được triển khai nhưng bị cắt sau đó do hạn chế về thời gian.

Tôi đã tải mã của mình lên máy chủ Gitlab của mình và ở đó bạn có thể xem toàn bộ mã:

Đề xuất: