Mục lục:

Bảng Foosball Raspberry Pi IoT: 11 bước
Bảng Foosball Raspberry Pi IoT: 11 bước

Video: Bảng Foosball Raspberry Pi IoT: 11 bước

Video: Bảng Foosball Raspberry Pi IoT: 11 bước
Video: IoT Food Scale with Microsoft Azure and CircuitPython #adafruit 2024, Tháng mười một
Anonim
Bảng Foosball Raspberry Pi IoT
Bảng Foosball Raspberry Pi IoT

Chào mừng bạn đến với phiên bản bàn bi lắc bị tấn công của tôi, như một phần của dự án dành cho sinh viên về công nghệ Truyền thông và Truyền thông Mới. Về cơ bản, tôi lớn lên xung quanh các bàn bi lắc và bi-a nên tôi nghĩ sẽ thật tuyệt nếu cố gắng kết nối một trong những thiết bị này với Internet.

Thiết lập chính đang sử dụng một bảng foosball hiện có được kết nối với Raspberry Pi có thể thực hiện tất cả các tác vụ sau:

  • Sử dụng các chân GPIO để điều khiển đèn LED hồng ngoại / Bộ thu và mô-đun ma trận điểm 8x8
  • Chạy trang web Flask bằng nginx
  • Chạy cơ sở dữ liệu MySQL / MariaDB để lưu trữ dữ liệu

Để có thể tạo lại dự án này, bạn sẽ cần các kỹ năng sau:

Phụ trợ:

  • Hiểu HTML / CSS / Javascript cho khách hàng của trang web
  • Hiểu Python với Flask / Flask-SocketIO / Jinja2 cho phía máy chủ của trang web
  • Kiến thức cơ bản về MySQL
  • Biết cách chạy máy chủ web

Nguyên mẫu

  • Kiến thức cơ bản về cách đấu dây một mạch điện
  • Hàn
  • Hiểu cơ bản về cách viết script bằng Python
  • Làm việc với Linux (Raspbian)
  • Có rất nhiều sự kiên nhẫn vì sẽ có rất nhiều gỡ lỗi liên quan

Bước 1: Vật liệu

Đây là danh sách với tất cả các bộ phận cần thiết cho bảng:

  • Raspberry Pi Model 3 (có vỏ)
  • T-Cobbler để kết nối Pi với breadboard
  • Bàn Foosball (Tôi đã sử dụng một chiếc bàn rất cũ tương tự như chiếc bàn này. Phải sẵn sàng khoan lỗ trên đó)
  • MAX7219 Mô-đun ma trận điểm Arduino (2)
  • Bộ phát hồng ngoại LED (2+ vì chúng bị hỏng, tương tự như cái này)
  • Bộ thu IR (2+ vì chúng cũng bị hỏng, tương tự như bộ thu này)
  • Breadboard không hàn cơ bản
  • Rất nhiều và rất nhiều dây (phụ thuộc vào kích thước của bàn bóng đá)
  • kết nối nam (30+)
  • kết nối nữ (10+)
  • Điện trở 100-220 Ohm (4+)
  • vật liệu hàn
  • dây đai
  • Người giữ đèn LED
  • một số gỗ / đinh vít trong trường hợp bạn muốn tiếp bóng trong máng xối

Tổng chi phí của dự án này hoàn toàn phụ thuộc vào chi phí của bàn bóng bàn của bạn (đắt tiền). Bên cạnh bảng, các tài liệu sẽ được tối đa 150 euro.

Bước 2: Mạch điện

Mạch điện
Mạch điện
Mạch điện
Mạch điện
Mạch điện
Mạch điện

Trước khi bạn cố gắng hàn, hãy lắp ráp tất cả các thành phần mà tôi thực sự khuyên bạn nên thử nghiệm nó trên bảng mạch chủ trước. Việc thay thế các thành phần bị lỗi sẽ dễ dàng hơn trước khi bạn mất hàng giờ hàn chúng.

Lúc đầu, tôi đã cố gắng triển khai Ma trận LED 8x8 với thanh ghi dịch chuyển 74HC595 (hình ảnh đầu tiên) và mảng bóng bán dẫn nhưng do nhiều dây và đầu ra rất thấp, tôi đã chuyển sang Mô-đun ma trận chấm MAX7219 vì nó chỉ cần 5 dây và được điều khiển trực tiếp bởi một xe buýt SPI.

Mạch cuối cùng tôi sử dụng được vẽ bằng Fritzing. Xin lưu ý rằng IR LEDS và Bộ thu có thể được kết nối với bất kỳ Ghim GPIO miễn phí nào của bạn.

Bộ thu IR và đèn LED phải đối diện trực tiếp với nhau và đỉnh của đèn LED phải hướng về phía bộ thu. Bởi vì chúng tôi muốn mô phỏng một chùm tia trực tiếp có thể bị phá vỡ bởi chuyển động của quả bóng, trong trường hợp đó sẽ có sự thay đổi trạng thái của đường DATA của máy thu từ 0 thành 1.

Bước 3: Mã hóa các cảm biến

Mã hóa các cảm biến
Mã hóa các cảm biến

Tôi đã viết mã hầu hết dự án này bằng Pycharm vì nó cho phép dễ dàng triển khai SSH tới Raspberry Pi của bạn bằng trình thông dịch từ xa. Tôi sẽ không đi chi tiết như cách chương trình này hoạt động nhưng có rất nhiều thông tin có thể được tìm thấy trên trang web pycharm.

Tôi hiện vẫn đang thực hiện dự án nhưng sau khi mọi thứ hoàn tất, toàn bộ dự án sẽ có trên hồ sơ github của tôi

Mã cho các cảm biến bao gồm 3 lớp được chạy trong một chuỗi nền trên máy chủ Flask của tôi (sẽ được giải thích sau):

  1. Lớp Mục tiêu (liên kết) -Tệp này khởi tạo tất cả các thành phần riêng biệt, có thể được gọi bằng cách chèn đúng thiết bị / bus SPI và số pin
  2. Lớp Ma trận (liên kết) -Đây là lớp chính để tăng sức mạnh cho mô-đun MAX7219
  3. Lớp LED và Lớp thu (liên kết) - Đây là lớp chính để tăng sức mạnh cho chùm tia hồng ngoại bằng cách sử dụng các Chủ đề riêng biệt để giảm tải CPU của RPi

Đèn LED và bộ thu đều hoạt động trên tần số 38kHz và bộ thu luôn mong đợi xung tăng 50% và xung giảm 50% để hoạt động bình thường.

Bước 4: Chuẩn bị và Đặt các Cảm biến

Chuẩn bị và Đặt các Cảm biến
Chuẩn bị và Đặt các Cảm biến
Chuẩn bị và Đặt các Cảm biến
Chuẩn bị và Đặt các Cảm biến
Chuẩn bị và Đặt các Cảm biến
Chuẩn bị và Đặt các Cảm biến

Bây giờ chúng ta sẽ chuẩn bị đèn LED hồng ngoại và bộ thu. Trong hình ảnh của bảng, bạn có thể tìm thấy vị trí đặt RPi và cảm biến.

Nhưng trước tiên chúng ta cần chuẩn bị hệ thống dây điện:

  1. Đảm bảo bạn đo lượng dây cần thiết từ vị trí RPi / breadboard đến vị trí cảm biến
  2. Hàn các chân của bộ thu IR vào một đầu của dây (COM / GND / V +)
  3. Hàn các miếng đầu nối nam vào đầu kia của dây

Bây giờ chúng ta sẽ chuẩn bị bàn:

  1. Lập bản vẽ cơ bản (dựa trên hình) về vị trí cần khoan. Điều rất quan trọng là 2 lỗ phải thẳng hàng với nhau vì đây sẽ là vị trí của chùm tia.
  2. Khoan lỗ
  3. Nếu bạn có một số giá đỡ (liên kết) LED, bạn có thể đặt chúng vào bên trong lỗ để làm cho nó cứng cáp hơn
  4. Chèn + dán đầu thu + đèn LED vào cả hai mặt
  5. Quấn dây + dán băng dính trên gỗ để chúng không bắt chéo quá nhiều
  6. Chèn các chân đực trên breadboard theo mạch đã cung cấp trước đó

Bước 5: Chuẩn bị và đặt mô-đun ma trận

Chuẩn bị và Đặt Mô-đun Ma trận
Chuẩn bị và Đặt Mô-đun Ma trận

Tiếp theo, chúng ta sẽ kết nối 2 mô-đun ma trận LED

Ghi chú:

Bởi vì tôi đã sử dụng một bàn chơi bóng cũ nên đã có những lỗ đi lên phía trên vì những người giữ thuốc lá. Nếu bạn không có những thứ này, bạn sẽ cần phải tạo chúng.

Để chuẩn bị dây:

  1. Đo dây từ breadboard về phía phần trên cùng của bảng
  2. Hàn một số đầu nối cái vào đầu dây đầu tiên
  3. Hàn một số đầu nối đực vào đầu kia của dây

Đặt ma trận:

  1. Đưa ma trận ra qua lỗ trên đầu
  2. Quấn + băng các dây bên trong lên gỗ để tránh dây chéo
  3. Chèn các chốt nam trên breadboard theo vòng tròn đã cung cấp trước đó

Tại một số thời điểm, tôi sẽ thêm một bước DIY nhỏ để thêm vỏ bọc cho mô-đun ma trận, nhưng hiện tại chúng đang ở dạng trần trụi.

Bước 6: Làm cho nó trở thành IoT

Làm cho nó trở thành IoT
Làm cho nó trở thành IoT

Nếu bạn chỉ muốn đăng ký và hiển thị điểm số, bạn có thể kết thúc dự án bằng cách viết một đoạn script python nhỏ đang chạy lặp lại cho đến khi một trong số điểm đạt đến 9 và sau đó đặt lại.

Tuy nhiên, nếu bạn muốn kết nối bàn của mình với internet, một vài bước tiếp theo sẽ đến ngay con hẻm của bạn.

Trong vài bước tiếp theo, chúng tôi sẽ giải quyết những vấn đề sau:

  • Định cấu hình Raspberry Pi
  • Tạo cơ sở dữ liệu để lưu trữ
  • Tạo trang web
  • Đưa nó lên mạng

Tại thời điểm này, nếu bạn đã quen với git, tôi khuyên bạn nên tạo một kho lưu trữ trên GitHub / GitLab để theo dõi các tệp của bạn. Nếu không, bạn có thể tạo một thư mục có cấu trúc giống như trong hình.

Dự án đầy đủ sẽ sớm có trên GitHub. Tuy nhiên, một tệp rar tạm thời với tất cả các tệp cần thiết có sẵn.

Bước 7: Kết nối Raspberry Pi

Tiếp theo, chúng ta sẽ thiết lập môi trường raspberry pi, để thực hiện việc này, bạn cần thực hiện các bước sau:

  • Kết nối qua SSH với Rasberry Pi của bạn (bạn có thể sử dụng PuTTY)
  • Tạo một thư mục (ví dụ dự án mkdir) và di chuyển đến thư mục này bằng lệnh cd
  • Tạo môi trường Python ảo trong thư mục này bằng cách sử dụng lệnh python3 -m venv --system-site-pack env
  • Kích hoạt trình thông dịch ảo bằng lệnh source / env / bin / active
  • Cài đặt các gói từ tệp tin request.txt bằng python -m pip, lệnh cài đặt gói tên gói
  • Chuyển các tệp từ tệp project_example.rar đã cung cấp trước đó qua SSH trong thư mục dự án của bạn

Bây giờ bạn sẽ có thể chạy toàn bộ dự án trên Raspberry Pi của mình. Tôi khuyên bạn nên sử dụng một IDE Python như PyCharm cho phép bạn sử dụng để gỡ lỗi từ trình thông dịch từ xa của bạn qua SSH và trực tiếp tải lên các thay đổi nếu cần.

Bước 8: Thiết lập cơ sở dữ liệu

Thiết lập cơ sở dữ liệu
Thiết lập cơ sở dữ liệu

Bây giờ bạn cần thiết lập một cơ sở dữ liệu rất cơ bản, dựa trên mô hình này.

Cách dễ nhất để thực hiện điều này là tạo cơ sở dữ liệu của bạn trong bàn làm việc MySQL, nơi bạn cũng có thể thực hiện một số thử nghiệm.

Sau khi hoàn tất, bạn có thể xuất một kết xuất cơ sở dữ liệu của mình và tải nó lên RPi của bạn và sau đó thực thi nó với sudo mariadb <pathtofile / file.sql

Bước 9: Tạo trang web

Tạo trang web
Tạo trang web
Tạo trang web
Tạo trang web
Tạo trang web
Tạo trang web

Tiếp theo, bạn có thể phân tích (và sử dụng) mã được cung cấp trong tệp project_example.rar.

Tệp chính là Flask.py là bánh mì và bơ của dự án này:

  • Chạy ứng dụng Flask-SocketIO xử lý phần phụ trợ của trang web
  • Tạo kết nối giữa cơ sở dữ liệu và Flask
  • Cung cấp xác thực đăng nhập và đăng ký người dùng
  • Cung cấp mã cần thiết về cách chơi trò chơi, sử dụng socketio để cập nhật trang web theo thời gian thực trong khi chơi trò chơi
  • Đưa kết quả trò chơi vào cơ sở dữ liệu

Trong thư mục tĩnh và thư mục mẫu, bạn có thể tìm thấy HTML / CSS / JS cung cấp phần giao diện người dùng của trang web. Hãy tự do sửa đổi những điều này theo ý thích của riêng bạn.

Bước 10: Kết nối với World Wide Web

Để kết nối trang web của chúng tôi với web, chúng tôi sẽ sử dụng nginx và uwsgi. Trong ví dụ dự án, bạn có thể tìm thấy các tệp cần thiết trong thư mục conf.

Trước hết, bạn cần cập nhật những điều sau trong các tệp này:

  • Trong uwsgi-flask.ini, bạn cần thay đổi đường dẫn của tham số virtualenv tới trình thông dịch của bạn
  • Trong project1-flask.service, bạn cần cập nhật phần [Dịch vụ] của tệp bằng thông tin đăng nhập và đường dẫn của bạn đến các tệp được liên kết
  • Trong tệp nginx, bạn cần cập nhật máy chủ và vị trí / đường dẫn đến ổ cắm được liên kết của bạn

Tiếp theo, bạn cần thay thế tệp máy chủ web nginx mặc định bằng vị trí của tệp cấu hình nginx của bạn, dưới đây là ví dụ về các lệnh linux để thực hiện việc này

  • me @ my-rpi: ~ / project1 $ sudo cp conf / nginx / etc / nginx / sites-available / project1
  • me @ my-rpi: ~ / project1 $ sudo rm / etc / nginx / sites-enable / defaul t
  • 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

Cuối cùng, bạn cần thêm các dịch vụ tùy chỉnh vào thư mục systemd của mình, đây là ví dụ về cách thực hiện:

  • me @ my-rpi: ~ / project1 $ sudo cp conf / project1 - *. service / etc / systemd / system /
  • me @ my-rpi: ~ / project1 $ sudo systemctl daemon-tải lại
  • me @ my-rpi: ~ / project1 $ sudo systemctl start project1- *
  • me @ my-rpi: ~ / project1 $ sudo systemctl status project1- *

Nếu bạn muốn máy chủ web khởi động khi khởi động raspberry pi, bạn cần sử dụng lệnh sudo systemctl enable project1 - *. Service.

Nếu được thực hiện đúng, sau khi khởi động lại hệ thống, trang web của bạn sẽ chạy trên địa chỉ IP của bạn. Nếu bạn muốn chỉnh sửa một trong các tệp cấu hình này, bạn cần phải dừng dịch vụ, tải lại tệp và sử dụng lệnh daemon-reload sau đó bắt đầu, nếu không các thay đổi sẽ không có hiệu lực.

Bước 11: Hoàn thành Tắt

Kết thúc
Kết thúc

Trong khi gõ phần cuối cùng của tài liệu hướng dẫn này, dự án trường học nhỏ này vẫn đang trong quá trình hoàn thiện.

Tôi đã dành vô số giờ để hoàn thành việc này trong 2,5 tuần. Mặc dù mọi thứ có hơi gấp gáp một chút nhưng tôi vẫn tự hào về những gì mình đã đạt được. Trong giai đoạn lắp ráp, tôi đã gặp vô số lỗi / lỗi / cảm biến bị lỗi vì vậy đừng quá nản lòng nếu mọi thứ không hoạt động trong lần thử đầu tiên.

Điều tốt nhất bạn có thể làm là hỏi hoặc tìm kiếm sự giúp đỡ trên internet, có rất nhiều người có kiến thức tốt hơn rất nhiều rất mong muốn được giúp đỡ bạn.

Cuối cùng nhưng không kém phần quan trọng, tôi muốn gửi lời cảm ơn đến các thầy cô từ Công nghệ Truyền thông và Truyền thông Mới đã cho tôi rất nhiều lời khuyên và giúp tôi hoàn thành dự án này.

Đề xuất: