Mục lục:

Chụp hộp: 8 bước
Chụp hộp: 8 bước

Video: Chụp hộp: 8 bước

Video: Chụp hộp: 8 bước
Video: HƯỚNG DẪN NHIẾP ẢNH: ISO, KHẨU ĐỘ, TỐC ĐỘ MÀN TRẬP 2024, Tháng mười một
Anonim
Chụp hộp
Chụp hộp
Chụp hộp
Chụp hộp

Capture The Box là một trò chơi teambuilding mà bạn có thể chơi với bạn bè trong khu phố của mình.

Mục tiêu là chiếm được chiếc hộp và giữ nó thuộc quyền sở hữu của bạn càng lâu càng tốt trong khi những người chơi khác cố gắng đi và lẻn nó ra khỏi hiên nhà hoặc khu vườn phía trước của bạn.

Trò chơi này sử dụng GPS để xác định vị trí hộp và thẻ RFID để xác định người chơi. Một LDR tùy chọn có thể được thêm vào để phù hợp với cường độ của màn hình ma trận điểm với phần trăm ánh sáng trong khu vực.

Quân nhu

Bộ vi điều khiển và máy tính

  • Raspberry Pi
  • Arduino (Mega) Tôi đã chọn Arduino Mega thay vì Uno bình thường, vì nó có nhiều chân hơn. Điều này là cần thiết vì chúng ta đang sử dụng lá chắn Dragino LoRa, tấm chắn này sẽ khiến chúng ta có quá ít chân số khi sử dụng UNO. MẸO: Tốt nhất bạn nên sử dụng hàng chính hãng vì không phải lúc nào hàng nhái của Trung Quốc cũng hoạt động như mong đợi.

Cảm biến và mô-đun

  • 4 Mô-đun ma trận chấm MAX7219 Kết nối DOUT với DIN, CS với CS, CLK với CLK…
  • Điện trở phụ thuộc ánh sáng (10K) + Điện trở (10K)
  • Mô-đun GPS NEO-7M (hoặc tương tự) Tôi đang sử dụng VMA430 của Velleman
  • Mô-đun RFID RC522 + một số huy hiệu / thẻ RFID

Để sử dụng LoRa (công nghệ không dây)

Dragino Lora Shield

Các cảm biến và mô-đun tùy chọn

Màn hình LCD Để hiển thị địa chỉ IP của Raspberry Pi

Để thiết lập thử nghiệm

Một breadboard và Cáp Dupont (Nam-Nam

Tùy chọn (cách viết hoa)

  • Hàn sắt
  • Một hộp đựng dụng cụ cũ
  • Vật liệu để in 3D
  • Một số tấm ván gỗ mỏng
  • Một số bu lông và đai ốc (có thể lắp trong các lỗ Arduino). Vít của tôi có đường kính khoảng 3mm.

Giá ước tính có thể được tìm thấy trong BOM (Bill of Materials), bao gồm bên dưới.

Bước 1: Thiết lập Raspberry Pi

Raspberry Pi là trung tâm của Dự án.

Nó sẽ chạy giao diện người dùng, phụ trợ và cơ sở dữ liệu. Nó cũng sẽ chịu trách nhiệm giao tiếp giữa phụ trợ và Arduino.

Để sử dụng Raspberry Pi, chúng ta cần thực hiện những việc sau:

Phần 1: Cài đặt Raspbian trên Raspberry Pi

Bạn có thể tìm thấy hướng dẫn về cách làm điều đó tại đây:

Phần 2: Cài đặt Raspbian trên Raspberry Pi Thiết lập WiFi gia đình của bạn.

Điều này có thể được thực hiện bằng cách sử dụng wpa_passphrase "YourNetwork" "YourSSID" >> /etc/wpa_supplicant/wpa_supplicant.conf

Khởi động lại Pi và bạn sẽ thấy địa chỉ IP khi nhập ifconfig

Phần 3: Cài đặt máy chủ web và cơ sở dữ liệu

Khi bạn đã thiết lập và chạy Pi, tốt nhất bạn nên thay đổi mật khẩu của mình. Điều này có thể được thực hiện bằng lệnh passwd.

Sau khi hoàn tất, hãy tiếp tục và cài đặt Apache, PHP, MariaDB và PHPMyAdmin.

Apache, PHP sudo apt install apache2 -y sudo apt install php libapache2-mod-php -y

MariaDB sudo apt install mariadb-server mariadb-client -y sudo apt install php-mysql -y sudo systemctl khởi động lại apache2.service

PHPMyAdminsudo apt cài đặt phpmyadmin -y

Đừng quên đặt mật khẩu MySQL an toàn.

Phần 4: Cài đặt các thư viện Python cần thiết

Đối với phần phụ trợ, chúng tôi sẽ cần một số thư viện. Chúng có thể được cài đặt bằng lệnh pip3.

pip3 cài đặt mysql-connector-python

pip3 cài đặt flask-socketio

pip3 cài đặt cors bình

pip3 cài đặt geventpip3 cài đặt gevent-websocket

pip3 cài đặt ttn

Bước 2: Bố trí các thiết bị điện tử

Bố trí các thiết bị điện tử
Bố trí các thiết bị điện tử
Bố trí các thiết bị điện tử
Bố trí các thiết bị điện tử

Để làm cho Dự án này hoạt động, chúng tôi cần kết nối tất cả các thiết bị điện tử.

Có thể dễ dàng đặt lá chắn LoRa vào vị trí. Chỉ cần căn chỉnh các chân với các chân trên Arduino của bạn.

Các kết nối khác được mô tả trong sơ đồ Fritzing của tôi. Có thể tải xuống tại đây:

Bước 3: Thiết kế cơ sở dữ liệu

Thiết kế cơ sở dữ liệu
Thiết kế cơ sở dữ liệu

Để có thể lưu trữ tất cả dữ liệu trò chơi và cảm biến, tôi đã lập một vài bảng:

meting và cảm biến Các phép đo từ cảm biến, được tìm thấy trong bảng cảm biến. Nó chứa tham chiếu đến cảm biến, giá trị của phép đo (ví dụ: coördinates: 51.123456; 3.123456) và id trò chơi tùy chọn (nếu trò chơi đang hoạt động trong quá trình đo).

speler Tên người chơi và UID của huy hiệu RFID của họ. Người kiểm duyệt trường tùy chọn được thêm vào, người này có thể sửa đổi trò chơi (ví dụ: dừng trò chơi trước thời gian).

spelThông tin trò chơi (thời gian bắt đầu và kết thúc).

spel_has_speler Mối quan hệ giữa spel và speler. Đây là nơi người chơi được chỉ định vào một trò chơi.

bezit Trong bảng này, điểm số được lưu. Nó chứa id trò chơi, id người chơi, thời gian anh ta lấy trộm hộp và thời gian anh ta đánh mất nó (khi người khác lấy trộm nó hoặc khi trò chơi kết thúc). Bằng cách trừ thời gian bắt đầu cho thời gian kết thúc, bạn có thể tính điểm anh ta nhận được từ lần chụp đó.

Xuất cơ sở dữ liệu có thể được tìm thấy trên GitHub của tôi (https://github.com/BoussonKarel/CaptureTheBox)

Mở sql trong PHPMyAdmin / MySQL Workbench và chạy nó. Cơ sở dữ liệu bây giờ sẽ được nhập.

Bước 4: Thiết lập tài khoản trên TTN

Bước 1: Đăng ký tài khoản trên TTN và tạo đơn đăng ký

Đăng ký tài khoản trên TheThingsNetwork, sau đó chuyển đến Bảng điều khiển> Thêm ứng dụng.

Chọn tên cho ứng dụng của bạn và nhấp vào Thêm ứng dụng.

Bước 2: Đăng ký thiết bị

Khi bạn đã tạo xong ứng dụng của mình, hãy chuyển đến Đăng ký thiết bị.

Chọn một id thiết bị, đây có thể là bất cứ thứ gì bạn muốn (miễn là nó có hình con rắn) và nhấp vào Đăng ký.

Nhấp vào biểu tượng Tạo bên dưới EUI của Thiết bị, để TTN sẽ tạo một cái cho bạn.

Bước 3: Viết ra thông tin đăng nhập của bạn

Bây giờ, hãy chuyển đến Thiết bị của bạn và nhấp vào biểu tượng Mã bên cạnh EUI Thiết bị, Ứng dụng EUI và Khóa ứng dụng. Bây giờ nó sẽ xuất hiện dưới dạng một mảng byte.

Trước khi bạn sao chép, hãy nhấp vào nút Chuyển đổi và đảm bảo EUI Dev và EUI Ứng dụng của bạn là LSB FIRST.

Khóa ứng dụng của bạn phải ở MSB FIRST (không thay đổi điều đó).

Bạn sẽ cần các phím này trong bước tiếp theo: Thiết lập Arduino.

Bước 4: Viết ra khóa Ứng dụng của bạn

Bây giờ chúng ta sẽ cần một khóa nữa để thiết lập MQTT trên Raspberry Pi của mình.

Đi tới Ứng dụng của bạn và cuộn xuống Phím Acces.

Bạn sẽ cần điều này trong bước Phụ trợ.

Bước 5: Thiết lập Arduino

Mã Arduino cũng có thể được tìm thấy trên GitHub của tôi, trong Arduino (https://github.com/BoussonKarel/CaptureTheBox)

Mã này được chia thành nhiều tab để giữ cho nó có tổ chức.

main.ino Mã chính: khai báo pin, setup () và loop ()

0_LoRa.ino Mã này xử lý giao tiếp bằng LoRa.

Nó đặt dữ liệu của các thẻ LDR, GPS và RFID trong một mảng 13 byte và gửi dữ liệu này đến TheThingsNetwork.

1_LDR.ino Sử dụng analogRead (), nó đo lượng điện áp trên Điện trở phụ thuộc ánh sáng.

Sau đó, giá trị này được chuyển đổi thành phần trăm ánh sáng (0 là không có gì, 100 là đèn pin điện thoại di động).

2_GPS.inoThis sử dụng giao tiếp nối tiếp bằng TX1 và RX1 (Serial1).

Nó sử dụng thông báo NMEA (chính xác là thông báo $ GPRMC) để tìm vĩ độ và kinh độ của ô.

3_RFID.ino Sử dụng thư viện MFRC522, mã này quét các thẻ RFID mới. Bất cứ khi nào có thẻ, nó sẽ lưu trữ dưới dạng RFID_lastUID.

4_DotMatrix.ino Mã này được sử dụng để khởi tạo và thiết lập hiển thị ma trận điểm. Nó chứa các định nghĩa cho hoạt ảnh đang tải, v.v.

Đang thiết lập nó

Trước khi có thể tải mã này lên Arduino của mình, bạn cần cài đặt một vài thư viện.

Thư viện Arduino-LMIC của matthijskooijman (https://github.com/matthijskooijman/arduino-lmic)

Thư viện MFRC522 cho trình đọc RFID (https://github.com/miguelbalboa/rfid)

Bây giờ, hãy truy cập main.ino và thay đổi DEVEUI, APPEUI và APPKEY thành những cái bạn đã sao chép ở bước trước.

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

Phần phụ trợ cho Dự án này có thể được tìm thấy trên GitHub của tôi, trong RPI> Phần phụ trợ (https://github.com/BoussonKarel/CaptureTheBox).

Làm thế nào nó hoạt động?

  1. Cứ sau 10 giây, mã sẽ tìm kiếm một trò chơi đang hoạt động, nếu tìm thấy một trò chơi, nó sẽ được lưu trong một biến gọi là huidigSpel (currentGame)
  2. Nếu chế độ được đặt thành Nối tiếp, một cáp được sử dụng giữa Arduino và Pi. Pi sẽ thăm dò các giá trị của LDR và GPS. Arduino phản hồi với định dạng JSON. Thẻ RFID được gửi bất cứ khi nào chúng được hiển thị. Chế độ này chỉ được sử dụng cho mục đích phát triển và không thực sự cần thiết nữa.
  3. Nếu chế độ được đặt thành LoRa, một ứng dụng khách MQTT sẽ được tạo để kích hoạt gọi lại bất cứ khi nào TTN nhận được dữ liệu LoRa. Điều này chứa dữ liệu LDR, GPS và RFID.
  4. Giao diện người dùng có thể truy xuất dữ liệu bằng cách sử dụng các điểm cuối API. Hầu hết dữ liệu được truy xuất bằng cách sử dụng huidigSpel.id. Data được trả về ở định dạng JSON bằng cách sử dụng jsonify ()

Sửa đổi cài đặt Truy cập secret.py và điền vào tên của ứng dụng LoRa và Acces Key của bạn (bạn đã viết trước đó).

Truy cập config.py và điền thông tin đăng nhập Cơ sở dữ liệu của bạn (chẳng hạn như mật khẩu, người dùng…)

Thiết lập nó làm dịch vụ Hãy thử chạy app.py, sau khi bạn xác nhận rằng điều này đang hoạt động, chúng tôi có thể sử dụng nó như một dịch vụ. Điều này sẽ tự động bắt đầu mã trong nền khi bạn khởi động pi của mình.

Để thực hiện việc này, hãy sao chép ctb_service.service vào /etc/systemd/system/ctb_service.service. sudo cp ctb_service.service /etc/systemd/system/ctb_service.service

Bây giờ hãy kích hoạt nó bằng cách sử dụng systemctl enable ctb_service.service

Nếu bạn cần thực hiện một số thay đổi đối với mã, bạn có thể dễ dàng dừng nó bằng cách sử dụng systemctl stop (điều này sẽ khởi động lại khi khởi động lại) hoặc tắt là (ngăn nó tự động khởi động) bằng cách sử dụng systemctl disable.

Nếu bạn cần tham khảo các bản ghi (vì lỗi), bạn có thể sử dụng journalctl -u ctb_service.service.

Có thể tìm thấy thêm thông tin về các dịch vụ tại đây: https://www.raspberrypi.org/documentation/linux/us..

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

Như thường lệ, giao diện người dùng có thể được tìm thấy trên GitHub của tôi, trong RPI> Giao diện người dùng (https://github.com/BoussonKarel/CaptureTheBox)

Dán tệp này vào thư mục / var / html của Raspberry Pi của bạn.

Điều này chứa tất cả các trang web cần thiết cho trò chơi.

Nó cũng chứa một tập lệnh để giao tiếp với phần phụ trợ (cả thời gian thực và sử dụng các điểm cuối API).

Bước 8: Thêm vỏ

Thêm một vỏ bọc
Thêm một vỏ bọc
Thêm một vỏ bọc
Thêm một vỏ bọc

Đối với trường hợp, tôi đã sử dụng một hộp công cụ cũ, cùng với các vật liệu / kỹ thuật sau:

  • in 3d
  • Bọt để giữ pin vào đúng vị trí
  • Ván gỗ tái chế
  • Keo nóng
  • Vít và đai ốc

Những gì bạn làm với trường hợp của bạn là sự lựa chọn của bạn! Tôi sẽ cho bạn tự do nghệ thuật.

Để có cảm hứng, tôi đã thêm một số ảnh về chiếc ốp lưng (đã hoàn thành) của mình.

Đề xuất: