Isi kandungan:
- Langkah 1: Bahan
- Langkah 2: Litar Elektrik
- Langkah 3: Pengekodan Sensor
- Langkah 4: Menyiapkan dan Meletakkan Sensor
- Langkah 5: Menyiapkan dan Meletakkan Modul Matriks
- Langkah 6: Menjadikannya sebagai IoT
- Langkah 7: Menyambungkan Raspberry Pi
- Langkah 8: Menyiapkan Pangkalan Data
- Langkah 9: Membuat Laman Web
- Langkah 10: Menyambung ke World Wide Web
- Langkah 11: Selesai
Video: Jadual Foosball Raspberry Pi IoT: 11 Langkah
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:11
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
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
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):
- Kelas Matlamat (pautan) -Fail ini memulakan semua komponen yang berasingan, yang dapat dipanggil dengan memasukkan peranti SPI / nombor dan nombor pin yang betul
- Kelas Matrik (pautan) -Ini adalah kelas utama untuk menghidupkan modul MAX7219
- 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
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:
- Pastikan anda mengukur jumlah wayar yang diperlukan dari lokasi RPi / papan roti ke lokasi sensor
- Pateri pin penerima IR ke satu hujung wayar (COM / GND / V +)
- Memateri kepingan penyambung lelaki di hujung wayar yang lain
Sekarang kita akan menyediakan jadual:
- Buat lukisan asas (berdasarkan gambar) tempat menggerudi. Sangat penting bahawa 2 lubang itu saling sejajar kerana ini akan menjadi lokasi balok.
- Bor lubang
- Sekiranya anda mempunyai beberapa pemegang LED (pautan) anda boleh meletakkannya di dalam lubang untuk menjadikannya lebih kukuh
- Masukkan + pita penerima LED + di kedua-dua belah pihak
- Tali wayar + pita pada kayu supaya tidak melintang terlalu banyak
- Masukkan pin lelaki di papan roti mengikut litar yang telah disediakan sebelumnya
Langkah 5: 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:
- Ukur wayar dari papan roti ke bahagian atas meja
- Pateri beberapa penyambung wanita ke hujung wayar pertama
- Pateri beberapa penyambung lelaki ke hujung wayar yang lain
Meletakkan matriks:
- Keluarkan matriks melalui lubang di bahagian atas
- Tali + pita wayar di dalam kayu untuk mengelakkan melintasi
- 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
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
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
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
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:
Cara Membuat dan Memasukkan Jadual dan Menambah Lajur Tambahan dan / atau Baris ke Jadual Itu di Microsoft Office Word 2007: 11 Langkah
Cara Membuat dan Memasukkan Jadual dan Menambah Lajur Tambahan dan / atau Baris ke Jadual Itu di Microsoft Office Word 2007: Pernahkah anda mempunyai banyak data yang anda gunakan dan fikirkan sendiri … " bagaimana saya dapat membuat semua data ini kelihatan lebih baik dan lebih mudah difahami? " Sekiranya demikian, maka jadual di Microsoft Office Word 2007 mungkin adalah jawapan anda
Jadual Jadual: Pembantu Produktiviti Maya Anda: 6 Langkah (dengan Gambar)
Jadual Jadual: Pembantu Produktiviti Maya Anda: Saya seorang penunda profesional! Penguncian ini membuat saya berada dalam lingkaran masa, di mana setiap hari hanya terbang tanpa kerja yang produktif. Untuk mengatasi penundaan saya, saya telah membuat jam ringkas dan pantas ini, yang menjadualkan kerja saya. Sekarang saya hanya boleh berpegang pada
Jadual Permainan MAME Dengan Raspberry Pi: 5 Langkah
Meja Permainan MAME Dengan Raspberry Pi: Diilhamkan oleh projek serupa dalam talian, saya telah bekerjasama dengan jiran untuk membina sepasang meja permainan retro berasaskan permainan MAME. Yang lebih padat adalah milik saya; yang lebih besar dengan dua set kawalan adalah miliknya. Foto kedua-duanya digunakan dalam instrumen ini
WebFoos - Jadual Foosball Pintar: 6 Langkah
WebFoos - Jadual Foosball Pintar: Untuk projek sekolah saya pada tahun pertama saya di Howest, saya memutuskan untuk membuat jadual Foosball pintar. Jadual mencatatkan gol dan menyimpan perlawanan yang dimainkan, statistik perlawanan dan statistik pengguna / pasukan ke laman web dalam talian
Jadual Foosball Autonomi: 5 Langkah (dengan Gambar)
Jadual Foosball Autonomi: Matlamat projek utama adalah untuk menyelesaikan prototaip yang berfungsi untuk Meja Foosball Autonomi (AFT), di mana pemain manusia menghadapi lawan robotik. Dari perspektif manusia permainan, meja foosball sangat mirip dengan meja biasa. Permainan