Daftar Isi:

Modul Pelacakan untuk Pengendara Sepeda: 5 Langkah
Modul Pelacakan untuk Pengendara Sepeda: 5 Langkah

Video: Modul Pelacakan untuk Pengendara Sepeda: 5 Langkah

Video: Modul Pelacakan untuk Pengendara Sepeda: 5 Langkah
Video: Canggih banget! GPS yang bisa mematikan motor jarak jauh 2024, Juli
Anonim
Modul Pelacakan untuk Pengendara Sepeda
Modul Pelacakan untuk Pengendara Sepeda

Modul pelacakan untuk pengendara sepeda ini adalah modul yang secara otomatis mendeteksi tabrakan dalam balapan, dan yang mendeteksi kerusakan mekanis dengan menyentuh sensor sentuh. Ketika salah satu peristiwa ini terjadi, modul mengirimkan peristiwa tersebut ke database pada raspberry pi melalui LoRa. Acara ini akan ditampilkan di layar LCD dan di situs web. Anda juga dapat mencari di situs web untuk balapan bersepeda tertentu dengan acara tersebut, dan menambahkan balapan bersepeda atau pengendara sepeda ke database. Saya membuat proyek ini karena saya sangat tertarik dengan Bersepeda dan IoT, jadi menggabungkan kedua mata pelajaran ini sangat menarik bagi saya.

Sebelum Anda dapat membuat modul pelacakan untuk pengendara sepeda, Anda perlu mengumpulkan materi Anda. Anda dapat menemukan alat dan persediaan dalam daftar di bawah ini, atau Anda dapat mengunduh BOM (Build Of Materials).

Perlengkapan:

  • kaca plexi (56mm X 85mm)
  • 10 X 2M baut 10mm dan mur
  • 10 X 3M baut 10mm dan mur
  • 2 X 3M baut 50mm dan mur
  • PLA Filament untuk mencetak 3D casing LCD Anda
  • panas menyusut
  • Kabel Pria ke Wanita
  • PCB dasar
  • Header pria
  • Raspberry Pi 3b+
  • Kartu SD 16GB
  • LCD 4X20 yang menyenangkan
  • Sensor sentuh kapasitif
  • Sebuah bel
  • Akselero 3 sumbu + gyro meter
  • Sebuah modul GPS
  • Papan Mbili SODAQ
  • Modul LoRa WAN
  • Baterai 3.7V 1000mAh
  • Catu daya Raspberry Pi 3b+

Peralatan:

  • Timah solder
  • Besi solder
  • Penjepit
  • Obeng
  • Gergaji ukir
  • Mesin bor
  • 2.5 dan 3.5 latihan
  • Pistol udara yang lebih ringan / panas

Jika Anda perlu membeli semua perlengkapan, Anda memerlukan anggaran €541,67. Proyek ini sangat mahal karena saya menggunakan kit pengembangan cepat LoRa seharga €299 (saya berkesempatan menggunakan kit ini dari sekolah saya). Anda selalu dapat menggunakan Arduino biasa dan menghemat banyak uang, tetapi programnya akan berbeda.

Langkah 1: Skema Fritzing

Skema Fritzing
Skema Fritzing
Skema Fritzing
Skema Fritzing

Langkah pertama adalah membangun sirkuit. Untuk proyek ini kami memiliki 2 sirkuit listrik, satu dengan Raspberry Pi dan satu lagi dengan papan SADAQ Mbili. Kita akan mulai dengan rangkaian Raspberry Pi.

Skema Fritzing Raspberry Pi:

Skema Raspberry Pi cukup sederhana, satu-satunya yang kami hubungkan dengan Pi adalah layar LCD Sparkfun 4X20. Layar bekerja dengan komunikasi Serial, SPI atau I2C. Protokol komunikasi mana yang Anda gunakan terserah Anda. Saya menggunakan protokol SPI karena sangat sederhana. Jika Anda menggunakan SPI seperti saya, Anda memerlukan koneksi berikut:

  • VCC LCD VCC Raspberry Pi
  • GND LCD GND Raspberry Pi
  • SDI LCD MOSI (GPIO 10) Raspberry Pi
  • SDO LCD MISO (GPIO 9) Raspberry Pi
  • SCK LCD SCLK (GPIO 11) Raspberry Pi
  • CS LCD CS0 (GPIO 8) Raspberry Pi

Pada skema Fritzing Anda akan melihat bahwa layar LCD adalah layar 2X16. Ini karena saya tidak menemukan LCD 4X20 pada frizting. Namun, semua koneksi adalah beberapa sehingga tidak terlalu penting.

Skema Fritzing Mbili SODAQ:

Kami akan menghubungkan 4 komponen elektronik dengan papan SODAQ Mbili, sehingga skema kelistrikan ini juga sangat sederhana. Kami akan mulai dengan menghubungkan sensor sentuh Capactive. Pin OUT sensor ini akan menjadi HIGH ketika sensor disentuh, dan akan menjadi LOW jika tidak. Ini berarti OUT-pin adalah output digital yang dapat kita hubungkan dengan input digital dari papan Mbili. Sambungannya adalah sebagai berikut:

  • OUT sensor sentuh D5 Mbili
  • Sensor sentuh VCC 3.3V Mbili
  • Sensor sentuh GND GND Mbili

Komponen kedua adalah sensor Triple acces + gyro. Saya menggunakan papan GY-521 yang menggunakan protokol I2C untuk berkomunikasi dengan papan Mbili. Perhatikan bahwa AD0-pin papan GY-521 perlu dihubungkan dengan VCC papan Mbili! Ini karena papan Mbili memiliki jam dengan alamat I2C yang sama seperti GY-521. Dengan menghubungkan AD0-pin ke VCC kita mengubah alamat I2C dari GY-521. Sambungannya adalah sebagai berikut:

  • VCC GY-521 3.3V Mbili
  • GND GY-521 GND Mbili
  • SCL GY-521 SCL Mbili
  • SDA GY-521 SDA Mbili
  • AD0 GY-521 3.3V Mbili

Setelah itu kita akan menghubungkan Buzzer. Saya menggunakan buzzer standar yang mengeluarkan suara saat ada arus. Ini berarti kita cukup menghubungkan buzzer ke pin digital papan Mbili. Sambungannya adalah sebagai berikut:

  • + Buzzer D4 Mbili
  • - Buzzer GND Mbili

Last but not least, kami akan menghubungkan modul GPS. Modul GPS berkomunikasi melalui RX dan TX. Sambungannya adalah sebagai berikut:

  • VCC GPS 3.3V Mbili
  • GND GPS GND Mbili
  • TX GPS RX Mbili
  • RX GPS TX Mbili

Langkah 2: Basis Data yang Dinormalisasi

Basis Data yang Dinormalisasi
Basis Data yang Dinormalisasi

Langkah kedua adalah merancang Database yang dinormalisasi. Saya telah merancang ERD saya di Mysql. Anda akan melihat database saya ditulis dalam bahasa Belanda, saya akan menjelaskan tabel di sini.

Tabel 'ploeg':

Meja ini adalah meja untuk klub bersepeda. Ini berisi ID klub bersepeda dan nama klub bersepeda.

Tabel 'renners':

Meja ini adalah meja untuk para pengendara sepeda. Setiap pengendara sepeda memiliki LoRaID yang juga merupakan Primary Key dari tabel tersebut. Mereka juga memiliki nama keluarga, nama depan, Negara asal dan ID klub bersepeda yang terhubung ke meja klub bersepeda.

Tabel 'plaatsen':

Meja ini adalah meja yang menyimpan tempat-tempat di Belgia dimana perlombaan sepeda bisa berlangsung. Ini berisi nama kota (yang merupakan Kunci Utama) dan provinsi tempat kota itu berada.

Tabel 'wedstrijden':

Tabel ini menyimpan semua balapan sepeda. Kunci Utama tabel adalah ID. Tabel tersebut juga berisi nama lomba sepeda, kota lomba yang dihubungkan dengan tabel tempat, jarak lomba, kategori pesepeda dan tanggal lomba.

Tabel 'gebeurtenissen':

Tabel ini menyimpan semua peristiwa yang terjadi. Artinya, ketika pengendara sepeda terlibat dalam kecelakaan atau mengalami kerusakan mekanis, peristiwa tersebut akan disimpan dalam tabel ini. Kunci Utama tabel adalah ID. Tabel juga berisi tanggal waktu kejadian, Lintang posisi, Bujur posisi, LoRaID pengendara sepeda dan jenis kejadian (kecelakaan atau kerusakan mekanis).

Tabel 'weddingstrijdrenner':

Tabel ini merupakan tabel yang dibutuhkan untuk hubungan banyak ke banyak.

Langkah 3: Daftarkan Modul LoRa Anda

Daftarkan Modul LoRa Anda
Daftarkan Modul LoRa Anda

Sebelum Anda dapat memulai dengan kode, Anda harus mendaftarkan modul LoRa Anda di gateway LoRa. Saya menggunakan perusahaan telekomunikasi di Belgia bernama 'Proximus' yang mengatur komunikasi untuk modul LoRa saya. Data yang saya kirim dengan simpul LoRa saya dikumpulkan di situs web dari AllThingsTalk. Jika Anda juga ingin menggunakan AllThingsTalk API untuk mengumpulkan data Anda, Anda dapat mendaftar di sini.

Setelah Anda mendaftar di AllThingsTalk, Anda harus mendaftarkan node LoRa Anda. Untuk melakukan ini, Anda dapat mengikuti langkah-langkah ini atau Anda dapat melihat pada gambar di atas.

  1. Buka 'Perangkat' di menu utama
  2. Klik 'Perangkat Baru'
  3. Pilih simpul LoRa Anda
  4. Isi semua kunci.

Sekarang Anda selesai! Semua data yang Anda kirim dengan node LoRa Anda akan muncul di pembuat AllThingsTalk Anda. Jika Anda memiliki masalah dengan pendaftaran, Anda selalu dapat berkonsultasi dengan dokumen AllThingsTalk.

Langkah 4: Kode

Kode
Kode
Kode
Kode
Kode
Kode
Kode
Kode

Untuk proyek ini kita membutuhkan 5 bahasa pengkodean: HTML, CSS, Java Script, Python (Flask) dan bahasa Arduino. Pertama saya akan menjelaskan program Arduino.

Program Arduinonya:

Di awal program, saya mendeklarasikan beberapa Variabel Global. Anda akan melihat bahwa saya menggunakan SoftwareSerial untuk koneksi dengan GPS saya. Ini karena papan Mbili hanya memiliki 2 port serial. Anda dapat menghubungkan GPS ke Serial0, tetapi Anda tidak akan dapat menggunakan terminal Arduino untuk debugging. Ini adalah alasan mengapa saya menggunakan SoftwareSerial.

Setelah Variabel Global, saya mendeklarasikan beberapa fungsi yang memudahkan untuk membaca program. Mereka membacakan koordinat GPS, membuat bel berbunyi, mengirimkan nilai melalui LoRa, …

Blok ketiga adalah blok pengaturan. Blok ini merupakan awal dari program yang mengatur pin, komunikasi serial dan komunikasi I2C.

Setelah blok setup datang program utama. Di awal loop utama ini, saya memeriksa apakah sensor sentuh aktif. Jika demikian, saya membuat bel berbunyi, mendapatkan data GPS dan mengirimkan semua nilai melalui LoRa atau Bluetooth ke Raspberry PI. Setelah sensor sentuh, saya membacakan nilai Akselerometer. Dengan rumus saya menghitung sudut yang tepat dari sumbu X dan Y. Jika nilai-nilai ini terlalu besar, kita dapat menyimpulkan bahwa pengendara sepeda itu jatuh. Ketika terjadi crash, saya membuat buzzer berbunyi lagi, mendapatkan data GPS dan mengirim semua nilai melalui LoRa atau Bluetooth ke Raspberry PI.

Anda mungkin berpikir: 'Mengapa Anda menggunakan bluetooth dan LoRa?'. Ini karena saya mengalami masalah dengan lisensi modul LoRa yang saya gunakan. Jadi untuk membuat program bekerja untuk demo saya, saya harus menggunakan Bluetooth untuk sementara waktu.

2. Bagian belakang:

Bagian belakangnya sedikit rumit. Saya menggunakan Flask untuk rute saya yang dapat diakses untuk ujung depan, saya menggunakan socketio untuk memperbarui beberapa halaman ujung depan secara otomatis, saya menggunakan pin GPIO untuk menampilkan pesan pada layar LCD dan menerima pesan melalui Bluetooth (tidak diperlukan jika Anda menggunakan LoRa) dan saya menggunakan Threading dan Timer untuk membaca API AllThinksTalk secara teratur dan memulai server flask.

Saya juga menggunakan database SQL untuk menyimpan semua crash yang masuk, membacakan data pribadi pengendara sepeda dan data balapan. Database ini terhubung ke back-end dan juga berjalan di Raspberry Pi. Saya menggunakan kelas 'Database.py' untuk berinteraksi dengan database.

Seperti yang Anda ketahui dari skema Fritzing, lcd terhubung ke Raspberry Pi melalui protokol SPI. Untuk membuatnya sedikit lebih mudah, saya menulis kelas 'LCD_4_20_SPI.py'. Dengan kelas ini Anda dapat mengubah kontras, mengubah warna lampu latar, menulis pesan di layar, …. Jika Anda ingin menggunakan Bluetooth, Anda dapat menggunakan kelas 'SerialRaspberry.py'. Kelas ini mengatur komunikasi serial antara modul Bluetooth dan Raspberry Pi. Satu-satunya hal yang perlu Anda lakukan adalah menghubungkan modul Bluetooth ke Raspberry Pi dengan menghubungkan RX ke TX dan sebaliknya.

Rute untuk ujung depan ditulis dengan aturan @app.route. Di sini Anda dapat membuat rute kustom Anda sendiri untuk memasukkan atau mendapatkan data ke dalam atau dari database. Pastikan Anda selalu memiliki respons di akhir rute. Saya selalu mengembalikan objek JSON ke ujung depan, bahkan ketika terjadi kesalahan. Anda dapat menggunakan variabel di url dengan menempatkan di sekitar variabel.

Saya menggunakan socketio untuk halaman web dengan crash balapan. Ketika Raspberry Pi menerima crash, saya memancarkan pesan ke ujung depan melalui socketio. Ujung depan kemudian tahu bahwa mereka harus membaca database lagi karena ada kerusakan baru.

Anda akan melihat bahwa dalam kode saya, komunikasi LoRa diatur dalam perintah. Jika Anda ingin menggunakan LoRa, Anda perlu memulai timer yang berulang-ulang mengirimkan permintaan ke AllThinksTalk API. Dari API ini, Anda akan menerima nilai sensor (GPS, Time, Crash kind) yang dikirim oleh node LoRa tertentu. Anda dapat menggunakan nilai-nilai ini untuk memasukkan crash ke dalam database.

3. Ujung pelepah:

Ujung pelepah terdiri dari 3 bahasa. HTML untuk teks situs web, CSS untuk markup situs web, dan JavaScript untuk komunikasi dengan bagian belakang. Saya memiliki 4 halaman situs web untuk proyek ini:

  • Index.html tempat Anda dapat menemukan semua balapan bersepeda.
  • Halaman dengan semua kerusakan dan kerusakan mekanis untuk balapan yang menarik.
  • Halaman tempat Anda dapat menambahkan cylist ke database dan mengedit tim mereka.
  • Halaman tempat Anda dapat menambahkan balapan baru dengan semua pesertanya ke database.

Bagaimana Anda mendesainnya sepenuhnya terserah Anda. Anda bisa mendapatkan beberapa inspirasi dari situs web saya jika Anda mau. Sayangnya situs web saya dibuat dalam bahasa Belanda, saya minta maaf untuk itu.

Saya memiliki file CSS dan file JavaScript terpisah untuk setiap halaman. Setiap file JavaScript menggunakan fetch untuk mendapatkan data dari database melalui back end. Ketika skrip menerima data, html berubah secara dinamis. Di halaman tempat Anda dapat menemukan kerusakan dan kerusakan mekanis, Anda akan menemukan peta tempat semua peristiwa terjadi. Saya menggunakan selebaran untuk menunjukkan peta ini.

Anda dapat melihat semua kode saya di sini di Github saya.

Langkah 5: Bangun Konstruksi

Membangun Konstruksi
Membangun Konstruksi
Membangun Konstruksi
Membangun Konstruksi
Membangun Konstruksi
Membangun Konstruksi

Sebelum kita bisa mulai dengan konstruksi, pastikan Anda memiliki semua bahan dari BOM atau dari halaman 'Tools + Supplies'.

Raspberry Pi + LCD

Kami akan mulai dengan kasing untuk Raspberry Pi. Anda selalu dapat mencetak kasing 3D, ini juga ide pertama saya. Tetapi karena tenggat waktu saya sudah sangat dekat, saya memutuskan untuk membuat kasus sederhana. Saya mengambil kasing standar dari Raspberry Pi, dan saya mengebor lubang di kasing untuk kabel dari layar LCD saya. Untuk melakukan ini, Anda cukup mengikuti langkah-langkah sederhana ini:

  1. Bor lubang ke penutup kasing. Saya melakukan ini dengan bor 7mm di sisi penutup. Anda dapat melihat ini pada gambar di atas.
  2. Ambil kabel dari layar LCD dan geser kepala yang menyusut di atas kabel.
  3. Gunakan korek api atau hot air gun untuk membuat kepala menciut menyusut.
  4. Tarik kabel dengan kepala menyusut melalui lubang pada casing, dan sambungkan kembali pada LCD.

Sekarang setelah Anda siap dengan kasing untuk Raspberry Pi, Anda dapat mulai dengan kasing untuk layar LCD. Saya mencetak kasing 3D untuk Layar LCD saya karena saya menemukan kasing online di tautan ini. Saya hanya perlu membuat sedikit perubahan pada ketinggian kasing. Saat Anda merasa gambar Anda bagus, Anda dapat mengekspor file dan mulai mencetak. Jika Anda tidak tahu cara mencetak 3D, Anda dapat mengikuti petunjuk ini tentang cara mencetak 3D dengan fusion 360.

Konstruksi SODAQ MBili

Saya tidak benar-benar membuat kasus untuk papan SODAQ Mbili. Saya menggunakan kaca plexi untuk menempatkan komponen saya tanpa casing di sekeliling konstruksi. Jika Anda ingin melakukan ini juga, Anda dapat mengikuti langkah-langkah ini:

  1. Tandatangani plexiglass dengan dimensi papan SODAQ Mbili. Dimensinya adalah: 85mm X 56mm
  2. Potong plexiglass dengan gergaji ukir.
  3. Tempatkan komponen elektronik pada plexiglass dan tandai lubang dengan pensil.
  4. Bor lubang yang baru saja Anda tandatangani dan lubang untuk kebuntuan dengan bor 3,5 mm.
  5. Pasang semua komponen elektronik pada plexiglass dengan baut dan mur 3M 10mm.
  6. Langkah terakhir adalah memasang plexiglass di atas papan Mbili. Anda dapat melakukan ini dengan standoff, tetapi saya menggunakan dua baut 3M 50mm dan 8 mur 3M untuk memasang kaca plexiglass di atas papan.

Direkomendasikan: