Daftar Isi:

Perekam Dampak untuk Kendaraan: 18 Langkah (dengan Gambar)
Perekam Dampak untuk Kendaraan: 18 Langkah (dengan Gambar)

Video: Perekam Dampak untuk Kendaraan: 18 Langkah (dengan Gambar)

Video: Perekam Dampak untuk Kendaraan: 18 Langkah (dengan Gambar)
Video: percobaan yg mengerikan..!! 2024, November
Anonim
Perekam Dampak untuk Kendaraan
Perekam Dampak untuk Kendaraan

Perekam Dampak dirancang untuk merekam dampak berkelanjutan ke kendaraan saat mengemudi atau stasioner. Dampak disimpan dalam database dalam bentuk bacaan serta video/gambar. Setelah dampak, pengguna jarak jauh dapat diverifikasi secara real time, dan pengguna jarak jauh dapat menonton video yang disimpan atau mengambil akses jarak jauh ke kamera pi dan menonton acara yang sesuai..

Langkah 1: Suku Cadang & Aksesoris

(1) Raspberry Pi 3 atau lebih baik: Daya komputasi diperlukan

(2) Topi rasa raspberry pi

(3) kamera Raspberry pi / kamera Usb

(4) Kartu memori dengan gambar raspbian terbaru (Harus mendukung node merah, hampir setiap gambar terbaru mendukung)

(5) Catu daya minimal 2,1 A (saya telah menggunakan bank baterai untuk operasi mandiri di dalam mobil)

Langkah 2: Deskripsi Bagian: Sense Hat

Deskripsi Bagian: Sense Hat
Deskripsi Bagian: Sense Hat

Sense HAT memiliki matriks LED 8x8 RGB, joystick lima tombol dan termasuk sensor berikut:

  • Giroskop
  • Akselerometer
  • Magnetometer
  • Suhu
  • Barometrik
  • tekanan
  • Kelembaban

Informasi lebih lanjut tentang bekerja dengan topi akal dapat diperoleh dari tautan berikut: Sense_Hat

API untuk sense hat di-host di: Sense_hat_API

Kode untuk pemrograman sense-hat tercakup dalam langkah-langkah selanjutnya. Kode sense hat juga dapat disimulasikan pada simulator yang dihosting di: Sense-hat simulator

Langkah 3: Perakitan: Perekam Dampak

Perakitan: Perekam Dampak
Perakitan: Perekam Dampak
Perakitan: Perekam Dampak
Perakitan: Perekam Dampak
Perakitan: Perekam Dampak
Perakitan: Perekam Dampak
Perakitan: Perekam Dampak
Perakitan: Perekam Dampak
  • Perakitan lebih sederhana karena topi indra perlu ditumpuk di atas pi (baut pemasangan yang ditunjuk dilengkapi dengan topi indra).
  • Kamera USB atau kamera pi dapat dihubungkan. Dalam tutorial, kamera pi dipertimbangkan dan pengkodean yang sesuai dilakukan untuk hal yang sama.
  • Masukkan kartu memori dan konfigurasikan kode python dan node -red (konfigurasi & kode tercakup dalam langkah selanjutnya)

Gambar di atas menunjukkan kamera-pi terhubung melalui kabel pita datar ke pi

Langkah 4: Perakitan: Perekam Dampak di Papan Dasbor Mobil

Perakitan: Perekam Dampak di Papan Dasbor Mobil
Perakitan: Perekam Dampak di Papan Dasbor Mobil

Untuk pemasangan perekam, saya telah menggunakan selotip dua sisi, keuntungannya adalah perekam dapat dengan mudah digeser ke posisi yang berbeda, mana yang paling sesuai dengan mobil Anda.

Kamera lebih lanjut dipasang secara vertikal seperti yang ditunjukkan, menggunakan pita sisi ganda yang sama, Berikutnya adalah menghubungkan sumber daya (bank daya 10.000 mAH) bersama dengan koneksi internet yang siap

Koneksi internet diperlukan untuk aplikasi MQTT (rincian untuk MQTT tercakup dalam langkah lebih lanjut)

Langkah 5: Perekam Dampak: Bekerja & Aplikasi

Dari sense hat, akselerasi dan giroskop digunakan untuk memeriksa apakah nilai mentah berada di luar batas yang ditetapkan dalam kode.

Akselerometer: Akselerometer menunjukkan jumlah gaya gravitasi (G-force) yang bekerja pada masing-masing sumbu x, y & z, jika ada sumbu yang mengukur gaya lebih dari 1G, maka gerakan cepat dapat dideteksi. (harap perhatikan sumbu yang mengarah ke bawah akan memiliki nilai 1g dan perlu dipertimbangkan sesuai dengan kode python).

Giroskop; Giroskop digunakan untuk mengukur gerakan sudut, yaitu selama belokan tajam sensor mungkin diaktifkan (tergantung pada pengaturan dalam kode), jadi seseorang yang memutar kendaraan dengan tajam akan tertangkap!!

Setiap aktivasi batas yang ditetapkan juga ditampilkan pada matriks LED topi akal sebagai "!" merah untuk akselerasi & hijau untuk aktivasi giroskop

Langkah 6: Deskripsi Perangkat Lunak: Node Red

Node-RED adalah alat pemrograman berbasis aliran, awalnya dikembangkan oleh Tim Layanan Teknologi Berkembang IBM dan sekarang menjadi bagian dari JS Foundation.

Informasi lebih lanjut tentang node merah dapat diperoleh melalui tautan berikut: node-red

Untuk kasus kami, kami akan menggunakan node -red untuk aktivitas berikut

(1) Berinteraksi dengan joystick untuk memulai fungsi kamera

(2) Memantau dampak pada kendaraan dan menyampaikan informasi kepada pengguna akhir dengan menggunakan MQTT dan selanjutnya menerima perintah pengguna akhir melalui MQTT dan memulai aplikasi yang diperlukan pada pi

(3) Melakukan beberapa hal dasar seperti mematikan pi

Langkah selanjutnya memberikan informasi rinci untuk diagram alir yang diimplementasikan pada node-red

Harap perhatikan diagram alur simpul-merah berinteraksi dengan kode python, maka bagian terakhir mencakup aspek kode python

Langkah 7: Dasar-dasar Node-merah

Dasar-dasar Node-merah
Dasar-dasar Node-merah
Dasar-dasar Node-merah
Dasar-dasar Node-merah
Dasar-dasar Node-merah
Dasar-dasar Node-merah

Langkah-langkah Dasar tertentu disorot untuk memulai Node-red dalam sekejap, tetapi ya node-red terlalu sederhana untuk memulai dan mengerjakan aplikasi.

  • Mulai Node-red:
  • Memulai Node-red saat pi terhubung ke internet https:// ip address>:1880

Langkah 8: Node-red: Flow _1a

Node-merah: Aliran _1a
Node-merah: Aliran _1a

Flow _1a, memantau setiap perubahan dalam file CSV dan berdasarkan perubahan tersebut, yaitu dampak terdeteksi, perekaman video kamera diatur ke mode dan selanjutnya pengguna diberitahu melalui internet bahwa dampak telah terjadi

Langkah 9: Node Merah: Flow_1b

Node Merah: Flow_1b
Node Merah: Flow_1b

Dalam alur tersebut, perekaman video dapat dimulai kapan saja hanya dengan menekan joystick

Langkah 10: Node Merah: Flow_2a

Node Merah: Flow_2a
Node Merah: Flow_2a

Dalam aliran tersebut, setiap kali ada gambar atau video baru disimpan/diunggah ke direktori, informasi tersebut diteruskan ke pengguna terdaftar melalui internet

Langkah 11: Node Merah: Flow_2b

Node Merah: Flow_2b
Node Merah: Flow_2b

Aliran ini terutama dirancang untuk pengguna jarak jauh, untuk mengontrol perangkat dengan cara berikut:

(a) perangkat shutdown

(b) mengambil gambar

(c) Rekam video

(d) mulai kode utama (kode datalogger adalah kode utama yang menghitung dampak)

Langkah 12: Node Merah; Arus_3

Node Merah; Arus_3
Node Merah; Arus_3

Alur dirancang untuk akses lokal, untuk memulai kode utama atau perangkat shutdown

Langkah 13: MQTT

MQTT (Message Queuing Telemetry Transport) adalah protokol TCP/IP, di mana penerbit dan pelanggan berinteraksi.

Dalam kasus kami Pi adalah penerbit, sedangkan aplikasi yang diinstal di ponsel/PC kami adalah pelanggan.

Dengan cara ini untuk menghasilkan dampak apa pun, informasi disampaikan dari jarak jauh ke pengguna (koneksi internet yang berfungsi adalah keharusan)

Informasi lebih lanjut tentang MQTT dapat diakses dari tautan berikut: MQTT

Untuk mulai menggunakan MQTT, kita harus mendaftar terlebih dahulu, untuk tutorial saya menggunakan cloudmqtt (www.cloudmqtt.com), ada paket gratis di bawah "kucing imut", itu saja.

Setelah mendaftar, buat instance, katakan "pi" setelah itu Anda akan mendapatkan detail berikut:

  • Nama server
  • Pelabuhan
  • nama pengguna
  • kata sandi

Hal-hal di atas diperlukan saat berlangganan melalui ponsel/pc

Untuk aplikasi saya, saya telah menggunakan aplikasi MQTT dari google play store (versi Android)

Langkah 14: MQTT: Pelanggan

MQTT: Pelanggan
MQTT: Pelanggan

Aplikasi MQTT berjalan di ponsel (versi Android)

Dampak yang terdeteksi pada pi diteruskan kembali

Langkah 15: MQTT: Mengedit Properties di Node-red

MQTT: Mengedit Properti di Node-red
MQTT: Mengedit Properti di Node-red

Di simpul-merah setelah memilih simpul MQTT, "Nama server" dan "topik" akan disebutkan. Ini harus sama di ujung pelanggan

Langkah 16: Kode Python:

Fungsionalitas kode sesuai dengan diagram alur terlampir

Langkah 17: Kode Terakhir

Kode python terlampir

Untuk menjalankan skrip python dari terminal, kita perlu membuatnya dapat dieksekusi sebagai chmod +x datalogger.py, selain itu bagian atas kode harus berisi baris "shebang" berikut #! /usr/bin/python3 (ini diperlukan untuk menjalankan fungsi dari node-red)

#!/usr/bin/python3 // Shebang linefrom sense_hat impor SenseHat dari datetime impor datetime dari csv impor penulis impor RPi. GPIO sebagai GPIO dari waktu impor tidur

akal = SenseHat()

impor csv

stempel waktu = datetime.now()

delay = 5 // delay didefinisikan untuk menyimpan data dalam file data.csv red = (255, 0, 0) green = (0, 255, 0) yellow = (255, 255, 0)

#GPIO.setmode(GPIO. BCM)

#GPIO.setup(17, GPIO. OUT)

def get_sense_impact():

sense_impact = acc = sense.get_accelerometer_raw() sense_impact.append(acc["x"]) sense_impact.append(acc["y"]) sense_impact.append(acc["z"])

gyro = sense.get_gyroscope_raw()

sense_impact.append(gyro["x"]) sense_impact.append(gyro["y"]) sense_impact.append(gyro["z"])

kembalikan sense_impact

def impact(): // berfungsi untuk mendeteksi dampak #GPIO.setmode(GPIO. BCM) #GPIO.setup(4, GPIO. OUT) akselerasi = sense.get_accelerometer_raw() x = akselerasi['x'] y = akselerasi['y'] z = percepatan['z'] x=abs(x) y=abs(y) z=abs(z)

gyro = sense.get_gyroscope_raw()

gyrox = gyro["x"] gyroy = gyro["y"] gyroz = gyro["z"]

gyrox = bulat(gyrox, 2)

gyroy = bulat(gyroy, 2) gyroz = bulat(gyroy, 2)

dampak = get_sense_impact()

jika x > 1.5 atau y > 1.5 atau z > 1.5: // nilai yang ditetapkan setelah iterasi di jalan sebenarnya dapat diubah sesuai dengan tipe dan keterampilan mengemudi yang berbeda dengan open('impact.csv', 'w', newline=' ') sebagai f: data_writer = writer(f) data_writer.writerow(['acc x', 'acc y', 'acc z', 'gyro x', 'gyro y', 'gyro z']) #GPIO. output(4, GPIO. HIGH) sense.clear() sense.show_letter("!", red) data_writer.writerow(impact)

elif gyrox > 1.5 atau gyroy > 1.5 atau gyroz > 1.5: // nilai ditetapkan dengan melihat kecepatan di mana belokan dimulai dengan open('impact.csv', 'w', newline='') sebagai f: data_writer = writer(f) data_writer.writerow(['acc x', 'acc y', 'acc z', 'gyro x', 'gyro y', 'gyro z']) #GPIO.output(4, GPIO. TINGGI) sense.clear() sense.show_letter("!", hijau) data_writer.writerow(impact)

lain:

# GPIO.output(4, GPIO. LOW) sense.clear()

def get_sense_data(): // berfungsi untuk merekam dan menyimpan nilai dari sensor sense_data =

sense_data.append(sense.get_temperature()) sense_data.append(sense.get_pressure()) sense_data.append(sense.get_humidity())

orientasi = sense.get_orientation()

sense_data.append(orientasi["yaw"]) sense_data.append(orientasi["pitch"]) sense_data.append(orientasi["roll"])

acc = sense.get_accelerometer_raw()

sense_data.append(acc["x"]) sense_data.append(acc["y"]) sense_data.append(acc["z"]) mag = sense.get_compass_raw() sense_data.append(mag["x"]) sense_data.append(mag["y"]) sense_data.append(mag["z"])

gyro = sense.get_gyroscope_raw()

sense_data.append(gyro["x"]) sense_data.append(gyro["y"]) sense_data.append(gyro["z"])

sense_data.append(datetime.now())

kembalikan sense_data

dengan open('data.csv', 'w', baris baru='') sebagai f:

data_penulis = penulis(f)

data_writer.writerow(['temp', 'pres', 'hum', 'yaw', 'pitch', 'roll', 'acc x', 'acc y', 'acc z', 'mag x', ' mag y', 'mag z', 'gyro x', 'gyro y', 'gyro z', 'datetime'])

sementara Benar:

print(get_sense_data()) untuk event di sense.stick.get_events(): # Periksa apakah joystick ditekan jika event.action == "ditekan": # Periksa arah mana jika event.direction == "naik": # sense.show_letter("U") # Akselerasi panah atas = sense.get_accelerometer_raw() x = akselerasi['x'] y = akselerasi['y'] z = akselerasi['z'] x=bulat(x, 0) y =bulat(y, 0) z=bulat(z, 0)

# Perbarui rotasi tampilan tergantung ke arah mana if x == -1: sense.set_rotation(90) elif y == 1: sense.set_rotation(270) elif y == -1: sense.set_rotation(180) else: sense.set_rotation(0) sense.clear() t = sense.get_temperature() t = bulat(t, 1) pesan = "T: " + str(t) sense.show_message(pesan, teks_warna = merah, scroll_speed=0.09) elif event.direction == "turun": akselerasi = sense.get_accelerometer_raw() x = akselerasi['x'] y = akselerasi['y'] z = akselerasi['z'] x=putaran(x, 0) y=bulat(y, 0) z=bulat(z, 0)

# Perbarui rotasi tampilan tergantung ke arah mana if x == -1: sense.set_rotation(90) elif y == 1: sense.set_rotation(270) elif y == -1: sense.set_rotation(180) else: sense.set_rotation(0) # sense.show_letter("D") # Panah bawah sense.clear() h = sense.get_humidity() h = round(h, 1) message = "H: " + str(h) sense.show_message(message, text_color = hijau, scroll_speed=0,09) p = sense.get_pressure() p = round(p, 1) message = "P: " + str(p) sense.show_message(message, text_colour = kuning, scroll_speed = 0,09)

# elif event.direction == "kiri":

# akselerasi = sense.get_accelerometer_raw() # x = akselerasi['x'] #y = akselerasi['y'] #z = akselerasi['z'] #x=putaran(x, 0) #y=putaran(y, 0) #z=bulat(z, 0)

# Perbarui rotasi tampilan tergantung ke arah mana // Tidak digunakan dan dikendalikan oleh node-red #if x == -1: sense.set_rotation(90) #elif y == 1: sense.set_rotation(270) #elif y == -1: sense.set_rotation(180) #else: sense.set_rotation(0) #sense.show_letter("L") # Panah kiri # elif event.direction == "kanan": # sense.show_letter ("K") # Panah kanan # elif event.direction == "middle": # sense.clear()

dampak()

data = get_sense_data()

dt = data[-1] - timestamp jika dt.seconds > delay: data_writer.writerow(data) timestamp = datetime.now()

Langkah 18: Memantau Video Langsung

Perekam Dampak juga dapat digunakan untuk memantau video langsung, karena video dapat dimulai kapan saja di mana saja melalui MQTT

kami akan menggunakan VLC player untuk melakukan streaming video, secara default di raspbian terbaru VLC sudah diinstal sebelumnya, jika tidak instal vlc seperti di bawah

Informasi lebih lanjut tentang melihat aliran jaringan dapat diakses melalui aliran Jaringan VLC

Terima kasih telah membaca!!

Masih banyak lagi yang bisa dilakukan perekam dampak..

Perhatikan ruang selanjutnya untuk analisis medan magnet dalam melakukan pemetaan rintangan

Direkomendasikan: