Mục lục:
- Quân nhu
- Bước 1: Bước 1: Cài đặt hệ điều hành RPi, định cấu hình SSH và truy cập Internet
- Bước 2: Bước 2: Cài đặt phần mềm trên RPi
- Bước 3: Bước 3: Kết nối với Cơ sở dữ liệu MySQL, Tạo Cơ sở dữ liệu
- Bước 4: Bước 4: Filezilla
- Bước 5: Bước 5: Tạo trang web
- Bước 6: Bước 6: Tạo chương trình phụ trợ (Bình)
- Bước 7: Bước 7: Phần cứng
- Bước 8: Bước 8: Giải thích mã
- Bước 9: Bước 9: Tạo trường hợp
- Bước 10: Các bước cuối cùng
Video: ColorPicker: 10 bước
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:31
Mục tiêu của dự án này là đo màu và chuyển chúng sang các hệ màu khác. Chỉ sử dụng các giá trị RGB do cảm biến cung cấp, bạn có thể dịch sang HSL, CYMK, HEX và cả mã RAL gần nhất (tiêu chuẩn được sử dụng cho sơn). Dự án này yêu cầu kiến thức cơ bản về Python, MySQL, Linux và Javascript.
Nếu bạn cũng đã quen với khung công tác Flask và SocketIO, thì mã cho dự án này sẽ dễ hiểu đối với bạn.
Dự án này có thể được sử dụng bởi các họa sĩ, nhà thiết kế nội thất hoặc chỉ cho bất kỳ ai cần đo màu sắc.
Dự án này không quá đắt và chi phí ước tính khoảng _ euro, chưa bao gồm phí vận chuyển.
Quân nhu
Chúng ta có thể chia phần này thành hai phần:
- Phần cứng
- Phần mềm
Phần cứng
Chúng tôi sử dụng các thành phần sau
- HC04: Cảm biến khoảng cách, chúng ta đang đo bao xa từ vật thể
- Màn hình LCD 2x16
- Mô-đun LCD I2C (HW061)
- TCS34725 Mô-đun cảm biến màu (Adafruit)
- LED trắng
- Raspberry Pi 3 (Bất kỳ Raspberry Pi nào cũng nên hoạt động)
- Điện trở 5x 1k Ohm
- Điện trở 1x 220 hoặc 330 Ohm
- Thẻ SD 16GB (14,4GB)
Phần mềm
- Python IDE, như Mã trực quan hoặc Pycharm (Pycharm được sử dụng ở đây)
- MySQL Workbench
- Putty (Tải xuống Putty)
- Rufus hoặc bất kỳ đầu ghi thẻ SD nào khác (Tải xuống Rufus)
Định giá
Dự án này khá rẻ, nếu bạn đã có Rapsberry Pi.
- HC04: Bắt đầu khoảng € 2,5 euro (Trung Quốc) và lên đến € 6 cho nhiều cửa hàng địa phương hơn.
- LCD: Khoảng 6-8 euro.
- Mô-đun I2C: Rẻ dưới € 1 (Trung Quốc), nhưng lên đến € 4 cho nhiều cửa hàng địa phương hơn.
- TCS34725: Khoảng € 9-12 €. Phần đắt nhất (Không bao gồm RPi)
- Đèn LED trắng: Mua với số lượng lớn, 20 LEDS với giá thấp nhất là € 1
- Raspberry Pi: Tùy thuộc vào phiên bản nào, khoảng € 40 €
- Điện trở: € 0,10 cho một điện trở
- Thẻ SD: khoảng € 8
Bộ chuyển đổi nguồn cho Raspberry Pi được loại trừ trong giá thành, vì bộ chuyển đổi này khá phổ biến.
Phạm vi giá tổng quát: khoảng 70 €, nếu bạn đã bao gồm Raspberry Pi và vỏ cho dự án.
Để chế tạo vỏ máy, tôi đã sử dụng gỗ mỏng nhẹ. Tôi đã tái chế gỗ này từ đồ nội thất. Vật liệu cho trường hợp là tùy thuộc vào bạn.
Bước 1: Bước 1: Cài đặt hệ điều hành RPi, định cấu hình SSH và truy cập Internet
Bước 1.1: Cài đặt hình ảnh
Tải xuống hình ảnh từ trang web chính thức của Raspberry Pi. Nó không thực sự quan trọng bạn cài đặt hình ảnh nào. Đối với dự án này, GUI là không cần thiết, vì chúng tôi sẽ chỉ kết nối bằng SSH.
Ghi hình ảnh vào thẻ SD (trống) (Tất cả các tệp trên thẻ sẽ bị xóa).
Để ghi mọi thứ vào thẻ SD, chúng tôi sẽ sử dụng một công cụ có tên là 'Rufus'. Sau khi tải xuống hình ảnh, mở Rufus và chọn tệp hình ảnh. Chọn ổ đĩa đích và ghi hình ảnh vào ổ đĩa. Điều này có thể mất một thời gian.
> Rufus
Bước 1.2: Cài đặt SSH
Bước tiếp theo là tạo kết nối với thẻ SD. Để làm được điều đó, chúng ta cần bật SSH.
Để làm điều đó mà không cần sử dụng màn hình, hãy mở trình khám phá tệp của bạn và mở phân vùng khởi động của thẻ SD. Tạo một tệp trống có tên "ssh", không có phần mở rộng tệp.
Ngoài ra, hãy mở "cmdline.txt"
Thêm "169.254.10.1" vào cuối tệp và lưu nó.
Rút thẻ SD và lắp vào Raspberry Pi.
Bây giờ chúng ta có thể kết nối Raspberry Pi với nguồn điện và khởi động và kết nối bằng SSH.
Để kết nối bằng SSH, chúng tôi sử dụng chương trình "Putty". Kết nối RPi và PC của bạn bằng cáp ehternet trước khi thực hiện việc đó. Mở Putty và chuyển đến tab SSH và điền vào IP này: 169.254.10.1. Nhấp vào 'kết nối' và bạn sẽ được kết nối.
> Bột trét
Thông tin đăng nhập mặc định được Raspberry Pi sử dụng là 'pi' làm tên người dùng và 'raspberry' cho mật khẩu.
Bước 1.3: Kết nối không dây
Raspberry Pi của bạn hiện đã được bật.
Chúng tôi cũng muốn kết nối với RPi bằng Wifi, theo cách đó chúng tôi không cần cáp ethernet nữa.
Thực hiện dòng sau:
'sudo nano /etc/wpa_supplicant/wpa_supplicant.conf'
Thao tác này sẽ mở trình soạn thảo văn bản 'nano' với các quyền nâng cao.
Thêm các dòng sau vào tệp:
mạng = {
ssid = "SSID"
psk = "Mật khẩu"
}
Thay thế "SSID" bằng SSID của mạng Wifi của bạn
Thay thế "Mật khẩu" bằng mật khẩu của bạn.
Sau đó, thực hiện Ctrl + X và chọn tùy chọn 'có'. Tập tin bây giờ sẽ được lưu.
Bây giờ chúng ta cần khởi động lại dịch vụ mạng
Thực hiện các lệnh sau:
- 'sudo -i'
- 'sudo systemctl khởi động lại mạng'
Bạn có thể kiểm tra kết nối internet của mình bằng lệnh wget.
Ví dụ: 'wget google.com'
> Lệnh Wget
Bước 2: Bước 2: Cài đặt phần mềm trên RPi
Đối với dự án này, chúng tôi cần cài đặt một vài thư viện.
- Mariadb: Cơ sở dữ liệu MySQL (sudo apt-get install mariadb-server)
- Thư viện Adafruit cho cảm biến màu: Đo màu (pip3 install adafruit-circuitpython-tcs34725)
- PHPmyAdmin: ('sudo apt install phpmyadmin', chọn máy chủ web apache)
Cũng cài đặt các thư viện pip sau:
- flask_socketio
- bình giữ nhiệt
- flask_cors
- bảng
- busio
- netifaces
Bước 3: Bước 3: Kết nối với Cơ sở dữ liệu MySQL, Tạo Cơ sở dữ liệu
Bước tiếp theo, là kết nối với cơ sở dữ liệu MySQL bằng bàn làm việc MySQL.
> IP a
Thực hiện lệnh 'ip a', như được hiển thị trong hình trên (Nhấp vào liên kết)
Trong hầu hết các tình huống, sẽ có 3 mục được hiển thị. Chúng tôi cần mục nhập 'wlan0'. Sao chép IP bên cạnh 'inet' hoặc trong ví dụ này là '192.168.1.44'
. >> Tạo kết nối mới
Như được hiển thị trong hình trên, hãy tạo một kết nối mới với các tham số sau (Hình ảnh bên dưới cho các tham số)
> Thông số kết nối
Nhấp đúp vào kết nối mới được tạo để kết nối.
Nếu có lời nhắc xuất hiện, hãy nhấp vào 'Có'.
Đây vẫn là một cơ sở dữ liệu trống, vì vậy hãy thêm một số bảng.
Đầu tiên, hãy tạo một lược đồ, để làm điều đó, ở phía bên trái, 'nhấp chuột phải' và chọn 'tạo lược đồ'.
Đặt tên cho lược đồ và xác nhận.
Bây giờ chúng ta cần thêm bảng. Mở rộng lược đồ và 'nhấp chuột phải', 'bảng'.
Tạo lược đồ sau:
> Bảng 1: Màu sắc
> Bảng 2: Các loại cảm biến
> Bảng 3: Các phép đo (Trong hình, 'metingen' được sử dụng, tiếng Hà Lan để đo)
> Bảng 4: Dữ liệu trang web || Bảng 4 dưới cùng
MySQL là một hệ thống cơ sở dữ liệu quan hệ, có nghĩa là chúng ta có thể tạo quan hệ giữa các bảng.
Mối quan hệ đầu tiên mà chúng tôi phải tạo là giữa 'loại_cảm biến' và "phép đo".
Như trong hình, liên kết hai phím.
> Chỉnh sửa bảng và các phím liên kết
Đừng quên lưu các thay đổi bằng cách nhấp vào 'Áp dụng' ở góc dưới cùng.
Đồng thời chỉnh sửa bảng 'website_data' và liên kết 'MetingID'.
Bây giờ chúng ta đã hoàn tất việc tạo các bảng và tạo các mối quan hệ.
Thêm dữ liệu:
Bảng RALcolors là một bảng cố định, nơi các giá trị sẽ không bao giờ thay đổi. Chúng tôi có thể thêm các giá trị này
rất dễ dàng.
> Tải xuống tệp Excel
Tải xuống tệp excel ở trên và chọn tất cả dữ liệu và 'sao chép'. Làm như trong hình ảnh
> Hiển thị bảng
'nhấp chuột phải' vào bảng và chọn 'Dán các hàng'. 'nhấp vào' 'áp dụng' ở góc dưới cùng để thêm dữ liệu.
Bây giờ tất cả các màu RAL được lưu trong cơ sở dữ liệu.
Bây giờ chúng ta chỉ cần thêm sensor_type vào cơ sở dữ liệu.
> Dữ liệu loại cảm biến
Lưu ý: Mô tả của cảm biến bằng 'tiếng Hà Lan'
Bước 4: Bước 4: Filezilla
Để dễ dàng kết nối với Raspberry Pi và chuyển các tập tin, chúng ta có thể sử dụng Filezilla.
> Tải xuống Filezilla
Nộp thông tin chi tiết về kết nối và kết nối. Ở phía bên phải, giờ đây bạn có thể chuyển tệp bằng cách kéo chúng vào.
> Nguồn github
Tải xuống các tệp từ nguồn github ở trên.
Bước 5: Bước 5: Tạo trang web
Để lưu trữ trang web, chúng tôi sử dụng PHPmyAdmin và Apache2.
Máy chủ web trên Raspberry Pi sử dụng thư mục '/ var / www / html' làm thư mục gốc.
Nếu bạn đặt tệp của mình ở đó, chúng sẽ được lưu trữ trên IP của Raspberry Pi. (IP = xem 'ip a')
Bạn có thể tải xuống các tệp cần thiết từ repo github của tôi (bước trước)
Trong '/ var / www / html /', dán tất cả các tệp từ thư mục 'Giao diện người dùng'.
> / var / www / html /
Bước 6: Bước 6: Tạo chương trình phụ trợ (Bình)
Phần phụ trợ của trang web dựa trên Flask.
Tất cả các tệp có thể được tìm thấy tại github repo.
Sao chép tất cả các tệp vào bất kỳ thư mục nào trên Raspberry Pi.
Ví dụ: '/ home / pi / colorpicker.
Để tạo một thư mục, hãy điều hướng đến thư mục đích bằng cách sử dụng 'cd', sau đó thực thi 'mkdir'.
Đó là tất cả cho bây giờ. Mã sẽ được giải thích trong các bước tiếp theo.
Bước 7: Bước 7: Phần cứng
> Tải xuống lược đồ
Tạo lược đồ như được hiển thị trong tài liệu ở trên.
LƯU Ý: Cũng thêm một đèn LED màu trắng, với một điện trở (220 hoặc 330 Ohms).
Giải thích phần cứng
HC04
Cảm biến HC04 phát ra sóng, sóng phản xạ và được cảm biến thu lại.
Bằng cách tính toán khoảng thời gian giữa phát và nhận, chúng ta có thể tính được khoảng cách.
Khoảng cách = ((Timestamp_recieve - Timestamp_emit) / tốc độ âm thanh) / 2
Chúng ta chia cho hai vì sóng phản xạ, nghĩa là nó đi được quãng đường hai lần.
LCD
Chúng tôi sử dụng màn hình LCD để hiển thị RGB và HEX, cũng như kết nối IP khi chương trình bắt đầu.
Đối với màn hình LCD này, tôi đã mua một mô-đun I2C. Bây giờ chúng ta chỉ cần 4 dây. SDA, SCL, GND, VCC
Để sử dụng màn hình LCD này, tôi đã viết một lớp Python để dễ sử dụng hơn.
TCS34725
Cảm biến này cho phép bạn đo màu sắc. Chúng tôi sử dụng một thư viện để đo giá trị RGB.
Bước 8: Bước 8: Giải thích mã
Giao diện người dùng
Giao diện người dùng tồn tại trong ba phần chính.
Đầu tiên là các tệp html, tạo cấu trúc trang web của chúng tôi, nhưng không chứa hoặc bố cục tối thiểu.
Thứ hai, chúng tôi có các tệp css, hoặc tệp kiểu, tạo kiểu và bố cục trang web của chúng tôi.
Cả hai đều khá dễ đọc và dễ hiểu, đó là lý do tại sao tôi sẽ không giải thích chúng.
Cuối cùng, chúng tôi có Javascript, với hai thư viện.
Hai thư viện được sử dụng là SocketIO và URLSearchParams.
SocketIO cho phép bạn gửi tin nhắn từ backend đến frontend và ngược lại.
Tin nhắn có thể được gửi cho một khách hàng, nhưng cũng có thể gửi cho nhiều khách hàng (Phát sóng)
> Socket IO Javascript
> Ổ cắm IO Python
Trong các hình ảnh trên, bạn có thể thấy một trong các kết nối Socket được thực hiện trong dự án này.
Lệnh gửi tin nhắn là 'phát ra', việc nhận được thực hiện bởi 'bật'.
URLSearchParms cho phép bạn nhận các giá trị từ một chuỗi truy vấn một cách dễ dàng.
Chuỗi truy vấn mẫu: example.com/index.html?id=1
URLSearchParams sẽ trả lại cho bạn: {'id' = '1'}
> Ví dụ về URLSearchParams
Chương trình phụ trợ
Phần phụ trợ được viết hoàn toàn bằng Python, với một loạt các thư viện.
Thư viện đầu tiên chúng tôi nhập là 'Flask'. Thư viện này là cần thiết để tạo một API, để thực hiện tất cả các hành động CRUD cho cơ sở dữ liệu MySQL. CRUD là viết tắt của Create Read Update Delete.
> Bình
Hình ảnh trên cho thấy một vài 'tuyến đường' của Flask. Bằng cách lướt đến một tuyến đường, bạn sẽ tự động thực hiện phương thức 'GET', mã sẽ thực thi và bạn sẽ nhận được giá trị từ phương thức trả về. Ngoài ra còn có các phương pháp khác, như 'ĐĂNG' và 'XÓA'. Để kiểm tra các phương pháp như vậy, bạn sẽ cần một chương trình như Postman.
Thư viện nhập tiếp theo là SocketIO, mà tôi đã giải thích trong phần giao diện người dùng.
Tiếp theo là GPIO.
Điều này cho phép bạn điều khiển các chân GPIO của Rapsberry Pi.
Các lệnh quan trọng nhất là:
- GPIO.setmode (GPIO. BCM) Chọn cấu hình của các chân.
- GPIO.output (, GPIO. LOW hoặc GPIO. HIGH) Ghi giá trị THẤP hoặc CAO vào một chốt.
- GPIO.setup (,) Xác định mã PIN làm đầu vào hoặc đầu ra hoặc kéo xuống hoặc kéo lên
Tiếp theo chúng ta có phân luồng.
Các lệnh duy nhất chúng tôi sử dụng là:
- Chủ đề (target =)
- .bắt đầu()
Sử dụng các luồng, chúng ta có thể chạy nhiều trường hợp mã cùng một lúc. Bằng cách này, chúng tôi có thể đo khoảng cách và đồng thời, nghe các tin nhắn socket io đến.
Lệnh đầu tiên Thread (target =) sẽ tạo một lớp Thread, ngay khi bắt đầu sử dụng 'start ()', sẽ chạy hàm trong từ khóa 'target', được cung cấp khi tạo lớp.
Tiếp theo, chúng ta có thư viện của bộ tạo màu, khá thẳng về phía trước. Tôi sẽ không giải thích thư viện này, bởi vì các phương pháp rất rõ ràng và được giải thích trong mã.
Cuối cùng chúng tôi có các giao diện mạng. Điều này cho phép chúng tôi truy xuất địa chỉ IP mà chúng tôi sử dụng cho kết nối Không dây và Có dây.
Cuối cùng, tôi đã tự mình thực hiện một số lớp học cho cảm biến khoảng cách, đèn LED và màn hình LCD.
Tôi sẽ không giải thích chúng hoạt động như thế nào.
Bước 9: Bước 9: Tạo trường hợp
Đối với dự án này, tôi đã tạo một vỏ gỗ.
Gỗ nhẹ, mỏng và giá thành không cao.
Như các thứ nguyên tôi đã sử dụng:
- Chiều cao: 5 cm
- Chiều rộng: 10,5cm
- Chiều dài: 12,5cm
Đối với các cảm biến, bạn cần thêm 2 lỗ và đặt chúng cạnh nhau.
Sau khi tạo vỏ, hãy lắp các cảm biến, đèn LED và màn hình LCD.
Bước 10: Các bước cuối cùng
Mọi thứ về cơ bản đã xong.
Bây giờ chúng tôi chỉ phải đảm bảo rằng mã của chúng tôi bắt đầu, thời điểm chúng tôi cắm vào nguồn điện.
Có rất nhiều phương pháp để làm điều này.
> Ví dụ
Chúng tôi sẽ sử dụng phương pháp đầu tiên:
Thực thi dòng này: 'sudo nano /etc/rc.local'
Thêm lệnh của bạn để chạy mã: 'sudo python3'
Lưu tệp bằng Ctrl-X.
Nếu bạn gặp vấn đề khi chỉnh sửa. Thực hiện lại bước này, nhưng trước tiên hãy thực thi 'sudo -i'.
Đề 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