Isi kandungan:

Jadual Foosball Raspberry Pi IoT: 11 Langkah
Jadual Foosball Raspberry Pi IoT: 11 Langkah

Video: Jadual Foosball Raspberry Pi IoT: 11 Langkah

Video: Jadual Foosball Raspberry Pi IoT: 11 Langkah
Video: ЭКСПЕРИМЕНТ! Что произойдет, если вы добавите двигатель на настольный футбол? #сделай сам #наука 2024, Disember
Anonim
Meja Foosball Raspberry Pi IoT
Meja Foosball Raspberry Pi IoT

Selamat datang ke versi meja foosball yang saya hack, sebagai sebahagian daripada projek pelajar untuk teknologi Media dan Komunikasi Baru. Pada asasnya saya dibesarkan di sekitar meja foosball dan pool jadi saya fikir akan lebih baik untuk mencuba menghubungkan salah satu peranti ini ke internet.

Penyediaan utama menggunakan meja foosball yang ada yang disambungkan ke Raspberry Pi yang dapat melakukan semua tugas berikut:

  • Menggunakan pin GPIO untuk menggerakkan IR LED / Receiver dan modul matriks 8x8 dot
  • Menjalankan laman web Flask menggunakan nginx
  • Menjalankan pangkalan data MySQL / MariaDB untuk penyimpanan data

Untuk membuat semula projek ini, anda memerlukan kemahiran berikut:

Latar Belakang:

  • Memahami HTML / CSS / Javascript untuk pelanggan laman web
  • Memahami Python dengan Flask / Flask-SocketIO / Jinja2 untuk bahagian pelayan laman web
  • Pengetahuan asas mengenai MySQL
  • Ketahui cara menjalankan pelayan laman web

Prototaip

  • Pengetahuan asas mengenai cara memasang litar elektrik
  • Pematerian
  • Pemahaman asas mengenai cara menulis skrip di Python
  • Bekerja dengan Linux (Raspbian)
  • Mempunyai banyak kesabaran kerana akan banyak debug yang terlibat

Langkah 1: Bahan

Berikut adalah senarai dengan semua bahagian yang diperlukan untuk jadual:

  • Raspberry Pi Model 3 (dengan selongsong)
  • T-Cobbler untuk menghubungkan Pi ke papan roti
  • Meja Foosball (saya menggunakan meja yang sangat lama yang serupa dengan meja ini. Mesti bersedia untuk mengebor lubang di dalamnya)
  • MAX7219 Arduino Dot Matrix Module (2)
  • Pemancar LED IR (2+ kerana pecah, serupa dengan yang ini)
  • Penerima IR (2+ kerana mereka juga pecah, serupa dengan yang ini)
  • Papan roti asas tanpa pateri
  • Banyak dan banyak wayar (bergantung pada ukuran meja foosball)
  • penyambung lelaki (30+)
  • penyambung wanita (10+)
  • Perintang 100-220 Ohm (4+)
  • bahan pematerian
  • tali dawai
  • Pemegang LED
  • sebilangan kayu / skru sekiranya anda mahu melepaskan bola ke dalam selokan

Kos keseluruhan projek ini bergantung sepenuhnya pada kos meja foosball anda (mahal). Selain meja, bahannya akan maksimum 150 euro.

Langkah 2: Litar Elektrik

Litar Elektrik
Litar Elektrik
Litar Elektrik
Litar Elektrik
Litar Elektrik
Litar Elektrik

Sebelum anda mencuba solder, pasang semua komponen yang sangat saya sarankan untuk mencubanya di papan roti terlebih dahulu. Lebih mudah untuk mengganti komponen yang rosak sebelum anda menghabiskan berjam-jam untuk menyoldernya.

Pada mulanya saya cuba menerapkan Matriks LED 8x8 dengan register pergeseran 74HC595 (gambar pertama) dan array transistor tetapi kerana banyak wayar dan output yang sangat rendah, saya beralih ke Modul Dot Matrix MAX7219 kerana hanya memerlukan 5 wayar dan secara langsung didorong oleh bas SPI.

Litar yang akhirnya saya gunakan dilukis dengan Fritzing. Harap maklum bahawa LED LED dan Penerima boleh disambungkan ke mana-mana Pin GPIO percuma anda.

Penerima IR dan LED harus berada tepat di antara satu sama lain dan bahagian atas LED harus dihalakan ke arah penerima. Kerana kita ingin mensimulasikan pancaran langsung yang dapat dipatahkan oleh gerakan bola, di mana akan terjadi perubahan keadaan garis DATA penerima dari 0 hingga 1.

Langkah 3: Pengekodan Sensor

Mengekodkan Sensor
Mengekodkan Sensor

Saya telah mengkodkan sebahagian besar projek ini menggunakan Pycharm kerana ia membolehkan penggunaan SSH yang mudah ke Raspberry Pi anda menggunakan jurubahasa jarak jauh. Saya tidak akan menjelaskan secara terperinci bagaimana program ini berfungsi tetapi banyak maklumat terdapat di laman web pycharm.

Saya masih menjalankan projek ini tetapi setelah semuanya selesai, keseluruhan projek akan tersedia di profil github saya

Kod untuk sensor terdiri daripada 3 kelas yang dijalankan dalam thread latar belakang pada pelayan Flask saya (yang akan dijelaskan kemudian):

  1. Kelas Matlamat (pautan) -Fail ini memulakan semua komponen yang berasingan, yang dapat dipanggil dengan memasukkan peranti SPI / nombor dan nombor pin yang betul
  2. Kelas Matrik (pautan) -Ini adalah kelas utama untuk menghidupkan modul MAX7219
  3. Kelas LED dan Penerima (pautan) - Ini adalah kelas utama untuk menyalakan pemancaran inframerah menggunakan Threads terpisah untuk mengurangkan beban CPU RPi

Kedua-dua LED dan penerima berfungsi pada frekuensi 38kHz dan penerima sentiasa mengharapkan nadi turun 50% dan 50% berfungsi dengan baik.

Langkah 4: Menyiapkan dan Meletakkan Sensor

Menyiapkan dan Meletakkan Sensor
Menyiapkan dan Meletakkan Sensor
Menyiapkan dan Meletakkan Sensor
Menyiapkan dan Meletakkan Sensor
Menyiapkan dan Meletakkan Sensor
Menyiapkan dan Meletakkan Sensor

Sekarang kita akan menyiapkan IR dan penerima IR. Dalam gambar jadual, anda dapat mencari lokasi di mana RPi dan sensor harus ditempatkan.

Tetapi pertama-tama kita perlu menyiapkan pendawaian:

  1. Pastikan anda mengukur jumlah wayar yang diperlukan dari lokasi RPi / papan roti ke lokasi sensor
  2. Pateri pin penerima IR ke satu hujung wayar (COM / GND / V +)
  3. Memateri kepingan penyambung lelaki di hujung wayar yang lain

Sekarang kita akan menyediakan jadual:

  1. Buat lukisan asas (berdasarkan gambar) tempat menggerudi. Sangat penting bahawa 2 lubang itu saling sejajar kerana ini akan menjadi lokasi balok.
  2. Bor lubang
  3. Sekiranya anda mempunyai beberapa pemegang LED (pautan) anda boleh meletakkannya di dalam lubang untuk menjadikannya lebih kukuh
  4. Masukkan + pita penerima LED + di kedua-dua belah pihak
  5. Tali wayar + pita pada kayu supaya tidak melintang terlalu banyak
  6. Masukkan pin lelaki di papan roti mengikut litar yang telah disediakan sebelumnya

Langkah 5: Menyiapkan dan Meletakkan Modul Matriks

Menyiapkan dan Meletakkan Modul Matriks
Menyiapkan dan Meletakkan Modul Matriks

Selanjutnya kita akan menyambungkan 2 modul matrik LED

Catatan:

Kerana saya menggunakan meja foosball lama sudah ada lubang yang menuju ke bahagian atas kerana pemegang rokok. Sekiranya anda tidak mempunyai ini, anda perlu membuatnya.

Untuk menyediakan wayar:

  1. Ukur wayar dari papan roti ke bahagian atas meja
  2. Pateri beberapa penyambung wanita ke hujung wayar pertama
  3. Pateri beberapa penyambung lelaki ke hujung wayar yang lain

Meletakkan matriks:

  1. Keluarkan matriks melalui lubang di bahagian atas
  2. Tali + pita wayar di dalam kayu untuk mengelakkan melintasi
  3. Masukkan pin lelaki di papan roti mengikut circui yang telah disediakan sebelumnya

Pada satu ketika saya akan menambahkan langkah DIY kecil untuk menambahkan casing untuk modul matriks, tetapi buat masa ini mereka telanjang.

Langkah 6: Menjadikannya sebagai IoT

Menjadikannya IoT
Menjadikannya IoT

Sekiranya anda hanya mahu mendaftarkan dan memaparkan skor, anda boleh menyelesaikan projek dengan menulis skrip python kecil yang melambung sehingga salah satu skor mencapai 9 dan kemudian ditetapkan semula.

Walau bagaimanapun, jika anda ingin menyambungkan meja anda ke internet, beberapa langkah seterusnya mesti sampai ke lorong anda.

Dalam beberapa langkah seterusnya, kita akan menangani perkara berikut:

  • Mengkonfigurasi Pi Raspberry
  • Membuat pangkalan data untuk penyimpanan
  • Membuat laman web
  • Meletakkannya dalam talian

Pada ketika ini, jika anda sudah biasa dengan git, saya sarankan anda membuat repositori di GitHub / GitLab untuk memantau fail anda. Sekiranya tidak, anda boleh membuat folder dengan struktur yang sama seperti dalam gambar.

Projek lengkap akan tersedia tidak lama lagi di GitHub. Walau bagaimanapun, fail rar sementara dengan semua fail yang diperlukan tersedia.

Langkah 7: Menyambungkan Raspberry Pi

Selanjutnya kita akan mengatur persekitaran raspberry pi, untuk melakukan ini, anda perlu melakukan langkah-langkah berikut:

  • Sambungkan melalui SSH ke Rasberry Pi anda (anda boleh menggunakan PuTTY)
  • Buat folder (contoh projek mkdir) dan pindahkan ke folder ini menggunakan perintah cd
  • Buat persekitaran Python maya dalam folder ini menggunakan arahan python3 -m venv - system-site-package env
  • Aktifkan jurubahasa maya dengan arahan sumber / env / bin / activate
  • Pasang pakej dari requirements.txt dengan perintah python -m pip pasang nama-nama
  • Pindahkan fail dari fail project_example.rar yang disediakan sebelumnya melalui SSH di folder projek anda

Sekarang anda seharusnya dapat menjalankan projek penuh pada Raspberry Pi anda. Saya menasihati anda untuk menggunakan Python IDE seperti PyCharm yang membolehkan anda menggunakan anda untuk membuat debug dari jurubahasa jarak jauh anda melalui SSH dan memuat naik perubahan secara langsung jika perlu.

Langkah 8: Menyiapkan Pangkalan Data

Menyiapkan Pangkalan Data
Menyiapkan Pangkalan Data

Sekarang anda perlu menyediakan pangkalan data yang sangat asas, berdasarkan model ini.

Cara termudah untuk menggunakan ini adalah dengan membuat pangkalan data anda di meja kerja MySQL di mana anda juga boleh melakukan beberapa ujian.

Setelah selesai, anda boleh mengeksport dump pangkalan data anda dan memuat naiknya pada RPi anda dan kemudian melaksanakannya dengan sudo mariadb <pathtofile / file.sql

Langkah 9: Membuat Laman Web

Membuat Laman Web
Membuat Laman Web
Membuat Laman Web
Membuat Laman Web
Membuat Laman Web
Membuat Laman Web

Seterusnya anda boleh menganalisis (dan menggunakan) kod yang disediakan dalam fail project_example.rar.

Fail utama adalah Flask.py yang merupakan roti dan mentega projek ini:

  • Menjalankan aplikasi Flask-SocketIO yang mengendalikan bahagian belakang laman web
  • Membuat hubungan antara pangkalan data dan Flask
  • Menyediakan pengesahan masuk dan pendaftaran pengguna
  • Menyediakan kod yang diperlukan mengenai cara bermain permainan menggunakan socketio untuk mengemas kini laman web secara realtime semasa permainan
  • Menempatkan hasil permainan ke dalam pangkalan data

Dalam folder statik dan templat anda boleh menemui HTML / CSS / JS yang menyediakan bahagian depan laman web. Jangan ragu untuk mengubahnya mengikut keinginan anda sendiri.

Langkah 10: Menyambung ke World Wide Web

Untuk menghubungkan laman web kami ke web kami akan menggunakan nginx dan uwsgi. Dalam contoh projek, anda boleh mencari fail yang diperlukan dalam folder conf.

Pertama sekali anda perlu mengemas kini perkara berikut dalam fail ini:

  • Di uwsgi-flask.ini anda perlu menukar jalan parameter virtualenv ke jurubahasa anda
  • Dalam projek1-flask.service anda perlu mengemas kini bahagian [Perkhidmatan] fail dengan bukti kelayakan dan laluan anda ke fail yang berkaitan
  • Dalam fail nginx anda perlu mengemas kini pelayan dan lokasi / jalan ke soket yang berkaitan

Seterusnya anda perlu mengganti fail pelayan web nginx lalai dengan lokasi fail konfigurasi nginx anda, di bawah ini adalah contoh arahan linux untuk melakukan ini

  • saya @ my-rpi: ~ / projek1 $ sudo cp conf / nginx / etc / nginx / sites-available / project1
  • saya @ my-rpi: ~ / projek1 $ sudo rm / etc / nginx / sites-enabled / defaul t
  • saya @ my-rpi: ~ / project1 $ sudo ln -s / etc / nginx / sites-available / project1 / etc / nginx / sites-enabled / project1
  • saya @ my-rpi: ~ / project1 $ sudo systemctl mulakan semula nginx.service

Akhirnya anda perlu menambahkan perkhidmatan khusus ke folder systemd anda, ini adalah contoh bagaimana melakukannya:

  • saya @ my-rpi: ~ / project1 $ sudo cp conf / project1 - *. service / etc / systemd / system /
  • saya @ my-rpi: ~ / project1 $ sudo systemctl daemon-reload
  • saya @ my-rpi: ~ / projek1 $ sudo systemctl memulakan projek1- *
  • saya @ my-rpi: ~ / project1 $ sudo systemctl status projek1- *

Sekiranya anda mahu pelayan web memulakan boot raspberry pi anda, anda perlu menggunakan sudo systemctl mengaktifkan arahan projek1 - *.

Sekiranya dilakukan dengan betul, selepas sistem reboot, laman web anda harus berjalan di alamat IP anda. Sekiranya anda ingin mengedit salah satu file konfigurasi ini, Anda selalu perlu menghentikan perkhidmatan, memuat semula fail dan menggunakan perintah daemon-reload diikuti dengan permulaan, jika tidak, perubahan tidak akan efektif.

Langkah 11: Selesai

Selesai Mati
Selesai Mati

Semasa mengetik bahagian akhir dari arahan ini, projek sekolah kecil ini masih dalam proses.

Saya telah menghabiskan berjam-jam untuk menyelesaikannya dalam 2.5 minggu. Walaupun semuanya tergendala sedikit, saya tetap bangga dengan apa yang telah saya capai. Semasa fasa pemasangan, saya telah menemui bug / ralat / sensor yang tidak terkira banyaknya, jadi jangan terlalu putus asa jika semuanya tidak berfungsi pada percubaan pertama.

Perkara terbaik yang boleh anda lakukan ialah meminta atau mencari pertolongan di internet, terdapat banyak orang dengan pengetahuan yang jauh lebih baik yang sangat ingin membantu anda.

Akhir sekali saya ingin mengucapkan terima kasih kepada guru-guru saya dari Teknologi Media dan Komunikasi Baru kerana banyak memberi nasihat dan membantu saya menyelesaikan projek ini.

Disyorkan: