Mündəricat:

Nəqliyyat vasitələri üçün zərbə yazıcı: 18 addım (şəkillərlə)
Nəqliyyat vasitələri üçün zərbə yazıcı: 18 addım (şəkillərlə)

Video: Nəqliyyat vasitələri üçün zərbə yazıcı: 18 addım (şəkillərlə)

Video: Nəqliyyat vasitələri üçün zərbə yazıcı: 18 addım (şəkillərlə)
Video: 30 товаров для автомобиля с Алиэкспресс, автотовары №24 2024, Noyabr
Anonim
Nəqliyyat vasitələri üçün zərbə yazıcı
Nəqliyyat vasitələri üçün zərbə yazıcı

Impact Recorder, avtomobil idarə edərkən və ya hərəkətsiz vəziyyətdə olarkən vurulan zərbələri qeyd etmək üçün nəzərdə tutulmuşdur. Təsirlər məlumat bazasında oxunuşlar şəklində, eləcə də video/şəkil şəklində saxlanılır. Uzaqdan təsir edən istifadəçi real vaxtda yoxlanıla bilər və uzaq istifadəçi saxlanan videoya baxmaqdan və ya pi kameraya uzaqdan daxil olmaqdan və hadisələri izləməkdən daha çox edə bilər..

Addım 1: Parçalar və Aksesuarlar

(1) Raspberry Pi 3 və ya daha yaxşı: Hesablama gücü tələb olunur

(2) Raspberry pi hiss şapka

(3) Raspberry pi kamera / Usb kamera

(4) Ən son raspbian şəkli olan yaddaş kartı (Qırmızı düyünü dəstəkləməlidir, demək olar ki, hər bir son görüntü yoxdur)

(5) Ən az 2,1 A enerji təchizatı (maşında müstəqil işləmək üçün batareya bankından istifadə etmişəm)

Addım 2: Parçaların Təsviri: Sense Hat

Parçaların təsviri: Sense Hat
Parçaların təsviri: Sense Hat

Sense HAT 8 × 8 RGB LED matrisə, beş düyməli joystickə malikdir və aşağıdakı sensorlar daxildir:

  • Giroskop
  • Akselerometr
  • Maqnitometr
  • Temperatur
  • Barometrik
  • təzyiq
  • Rütubət

Hiss şapkası ilə işləmək haqqında daha çox məlumatı aşağıdakı bağlantılardan əldə etmək olar: Sense_Hat

Hiss şapkası üçün API: Sense_hat_API ünvanında yerləşdirilir

Hiss-şapka proqramlaşdırma kodu sonrakı mərhələlərdə əhatə olunacaq. Sense şapka kodu, həmçinin: Sense-hat simulyatorunda yerləşən bir simulyatorda da simulyasiya edilə bilər

Addım 3: Quraşdırma: Zərbə Kaydedici

Quraşdırma: Təsir yazıcı
Quraşdırma: Təsir yazıcı
Quraşdırma: Təsir yazıcı
Quraşdırma: Təsir yazıcı
Quraşdırma: Təsir yazıcı
Quraşdırma: Təsir yazıcı
Quraşdırma: Təsir yazıcı
Quraşdırma: Təsir yazıcı
  • Montaj daha asandır, çünki hiss şapkasının pi üzərində yığılması lazımdır (təyin olunmuş montaj cıvataları hiss şapkası ilə təmin olunur).
  • USB kamera və ya pi kamera qoşula bilər. Dərslikdə pi kamera nəzərdən keçirilir və buna görə də kodlaşdırma eyni şəkildə aparılır.
  • Yaddaş kartını daxil edin və python kodunu və node -red konfiqurasiya edin (konfiqurasiya və kod sonrakı addımlarda əhatə olunur)

Yuxarıdakı şəkil, pi lentə düz lent kabel vasitəsilə bağlanan pi-kameranı göstərir

Addım 4: Montaj: Avtomobilin İdarə Heyətinə Zərbə Kaydedici

Quraşdırma: Avtomobilin İdarə Heyətində Zərbə Kaydedici
Quraşdırma: Avtomobilin İdarə Heyətində Zərbə Kaydedici

Səsyazıcının quraşdırılması üçün iki tərəfli lentdən istifadə etmişəm, üstünlüyü, maşınınıza uyğun olan hər hansı bir mövqedə asanlıqla dəyişdirilə bilər.

Əlavə kamera göstərildiyi kimi eyni cüt tərəfli lentdən istifadə edərək şaquli olaraq quraşdırılır.

Növbəti növbədə, hazır bir İnternet bağlantısı ilə birlikdə bir enerji mənbəyi (10 000 mAH güc bankı) bağlamaqdır

MQTT tətbiqi üçün İnternet bağlantısı tələb olunacaq (MQTT üçün detallar sonrakı addımlarda əhatə olunacaq)

Addım 5: Təsir Recoder: İşləmə və Tətbiqlər

Mənası şapkadan, sürətlənmə və giroskop, xam dəyərlərin kodda müəyyən edilmiş həddi aşmadığını yoxlamaq üçün istifadə olunur.

Akselerometr: Akselerometr, hər hansı bir oxun 1G gücündən çox ölçüdə olması halında, x, y və z oxlarının hər birinə təsir edən cazibə qüvvəsinin (G qüvvəsi) miqdarını, sürətli hərəkətin aşkar oluna biləcəyindən xəbər verir. (aşağıya baxan oxun 1g dəyərinə sahib olacağını və buna görə python kodunda nəzərə alınması lazım olduğunu unutmayın).

Giroskop; Jiroskop, açısal hərəkəti ölçmək üçün istifadə olunur, yəni kəskin dönmə zamanı sensor işə düşə bilər (koddakı parametrdən asılıdır), buna görə də maşını kəskin şəkildə fırladan adam yaxalanacaq !!

Set limitinin hər hansı bir aktivləşdirilməsi də hissi şapka LED matrisində "!" sürətlənmə üçün qırmızı, jiroskopun aktivləşdirilməsi üçün yaşıl rəngdədir

Addım 6: Proqram Təsviri: Qırmızı Node

Node-RED, əvvəlcə IBM-in İnkişaf etməkdə olan Texnologiya Servicesteam tərəfindən hazırlanmış və hazırda JS Vəqfinin bir hissəsi olan axına əsaslanan bir proqramlaşdırma vasitəsidir.

Qırmızı node haqqında daha çox məlumatı aşağıdakı linkdən əldə edə bilərsiniz: node-red

Bizim vəziyyətimiz üçün, aşağıdakı fəaliyyətlər üçün node -red istifadə edərdik

(1) Kamera funksiyalarına başlamaq üçün joysticklərlə qarşılıqlı əlaqə

(2) MQTT istifadə edərək nəqliyyat vasitəsinə təsirlərin monitorinqi və məlumatların son istifadəçiyə ötürülməsi və MQTT vasitəsilə son istifadəçi əmrlərinin qəbul edilməsi və pi -də lazım olan tətbiqin işə salınması

(3) pi -nin bağlanması kimi bəzi əsas işləri yerinə yetirmək

Sonrakı addımlar node-red üzərində tətbiq olunan axın diaqramı üçün ətraflı məlumat verir

Diqqət yetirin ki, qovşaq-qırmızı axın diaqramları python kodu ilə qarşılıqlı əlaqədədir, buna görə də sonuncu hissə python kodu aspektlərini əhatə edir

Addım 7: Node-red əsasları

Qırmızı düyün əsasları
Qırmızı düyün əsasları
Qırmızı düyün əsasları
Qırmızı düyün əsasları
Qırmızı düyün əsasları
Qırmızı düyün əsasları

Bəzi əsas addımlar Node-red-ə bir anda başlamaq üçün vurgulanır, amma bəli node-red, tətbiqləri işə salmaq və işləmək üçün çox sadədir.

  • Başlanğıc Node-qırmızı: https:// localhost: 1880.
  • Pi internetə qoşulduqda Node-red-dən başlayır https:// ip address>: 1880

Addım 8: Node-red: Flow _1a

Qırmızı düyün: Axın _1a
Qırmızı düyün: Axın _1a

Flow _1a, CSV sənədindəki hər hansı bir dəyişikliyi izləyir və dəyişikliklərə əsaslanaraq, yəni təsir təsbit edildi, kamera video çəkilişi açıq rejimə qoyulur və istifadəçiyə bir təsirin baş verməsi barədə internet üzərindən məlumat verilir.

Addım 9: Qırmızı Node: Flow_1b

Qırmızı Node: Flow_1b
Qırmızı Node: Flow_1b

Sözügedən axında, video çəkiliş istənilən vaxt sadəcə joystickə basaraq başlaya bilər

Addım 10: Qırmızı Node: Flow_2a

Qırmızı Node: Flow_2a
Qırmızı Node: Flow_2a

Sözügedən axında, hər hansı bir yeni şəkil və ya video qovluğa saxlanıldıqda/yükləndikdə məlumatlar internet üzərindən qeydiyyatdan keçmiş istifadəçiyə ötürülür.

Addım 11: Qırmızı Node: Flow_2b

Qırmızı Node: Flow_2b
Qırmızı Node: Flow_2b

Bu axın əvvəlcə cihazı aşağıdakı qaydada idarə etmək üçün uzaqdan istifadəçi üçün nəzərdə tutulmuşdur

(a) bağlama cihazı

(b) şəkil çəkmək

(c) Video yazın

(d) əsas kodu işə salın (datalogger kodu təsirini hesablayan əsas koddur)

Addım 12: Qırmızı Node; Flow_3

Qırmızı Node; Flow_3
Qırmızı Node; Flow_3

Əsas kod və ya söndürmə cihazını işə salmaq üçün axın yerli giriş üçün nəzərdə tutulmuşdur

Addım 13: MQTT

MQTT (Message Queuing Telemetry Transport), yayımçı ilə abunəçinin qarşılıqlı əlaqədə olduğu bir TCP/IP protokoludur.

Bizim vəziyyətimizdə Pi nəşriyyatçıdır, halbuki moblile/PC -də quraşdırılmış tətbiq abunəçi olacaq.

Bu şəkildə hər hansı bir təsirin yaranması ilə əlaqədar məlumatlar uzaqdan istifadəçiyə ötürülür (işləyən internet bağlantısı olmalıdır)

MQTT haqqında daha çox məlumatı aşağıdakı linkdən əldə etmək olar: MQTT

MQTT istifadə etməyə başlamaq üçün əvvəlcə qeydiyyatdan keçməliyik, cloudmqtt (www.cloudmqtt.com) istifadə etdiyim dərs üçün "sevimli pişik" altında pulsuz bir plan var, hamısı budur.

Qeydiyyatdan keçdikdən sonra bir nümunə yaradın "pi" deyin, sonra aşağıdakı detalları əldə edəcəksiniz

  • Server adı
  • liman
  • istifadəçi adı
  • parol

Mobil/kompüter vasitəsilə abunə olarkən yuxarıdakılar tələb olunur

Tətbiqim üçün google play mağazasından MQTT tətbiqindən istifadə etdim (Android versiyası)

Addım 14: MQTT: Abunəçi

MQTT: Abunəçi
MQTT: Abunəçi

Mobil cihazlarda çalışan MQTT tətbiqi (Android versiyası)

Pi üzərində təsbit edilən təsir geri ötürülür

Addım 15: MQTT: Xüsusiyyətləri Node-red ilə redaktə edin

MQTT: Xüsusiyyətləri Node-red-də redaktə etmək
MQTT: Xüsusiyyətləri Node-red-də redaktə etmək

MQTT node, "Server adı" və "mövzu" qeyd edildikdən sonra node-qırmızı rəngdədir. Bu abunəçi ucunda eyni olmalıdır

Addım 16: Python Kodu:

Kodun funksionallığı əlavə edilmiş sxemə görədir

Addım 17: Son Kod

Python kodu əlavə olunur

Python skriptimizin terminaldan işləməsini təmin etmək üçün onları chmod +x datalogger.py kimi işlək hala gətirməliyik, bundan sonra kodun yuxarı hissəsində aşağıdakı "shebang" sətri #olmalıdır! /usr/bin/python3 (node-reddən funksiyaları yerinə yetirmək üçün bu tələb olunur)

#!/usr/bin/python3 // hissi_hat idxalından shebang xətti SenseHat datetime -dan datetime csv -dən datetime idxal edir yazar RPi. GPIO -u GPIO olaraq vaxt idxal yuxudan.

məna = SenseHat ()

csv idxal edin

vaxt damgası = datetime.now ()

gecikmə = 5 // gecikmə məlumatları data.csv faylında saxlamaq üçün təyin olunur red = (255, 0, 0) yaşıl = (0, 255, 0) sarı = (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 = məna.get_gyroscope_raw ()

məna_impakt.qoşulmaq (girro ["x"]) məna_impakt.ağırlama (girro ["y"]) məna_impaktı

hissi_ təsirini qaytarın

def Impact (): // təsirini aşkar etmək funksiyası #GPIO.setmode (GPIO. BCM) #GPIO.setup (4, GPIO. OUT) sürətləndirmə = sense.get_accelerometer_raw () x = sürətləndirmə ['x'] y = sürətləndirmə ['y'] z = sürətlənmə ['z'] x = abs (x) y = abs (y) z = abs (z)

cayro = məna.get_gyroscope_raw ()

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

gyrox = yuvarlaq (gyrox, 2)

gyroy = yuvarlaq (gyroy, 2) gyroz = yuvarlaq (gyroz, 2)

təsir = get_sense_impact ()

əgər x> 1.5 və ya y> 1.5 və ya z> 1.5: // faktiki yolda iterasiya edildikdən sonra dəyərlər təyin olunarsa, açıq tipli müxtəlif növlər və sürücülük bacarıqları üçün müvafiq olaraq dəyişdirilə bilər ('təsir.csv', 'w', newline = ' ') f olaraq: data_writer = yazıçı (f) data_writer.writerow ([' acc x ',' acc y ',' acc z ',' gyro x ',' gyro y ',' gyro z ']) #GPIO. çıxış (4, GPIO. HIGH) sense.clear () sense.show_letter ("!", qırmızı) data_writer.writerow (təsir)

elif gyrox> 1.5 və ya gyroy> 1.5 və ya gyroz> 1.5: // dəyərlər f: data_writer olaraq açıq ('təsir.csv', 'w', newline = '') ilə dönüşlərin başladığı sürəti nəzərə alaraq təyin edilir. = yazıçı (f) data_writer.writerow (['acc x', 'acc y', 'acc z', 'gyro x', 'gyro y', 'gyro z']) #GPIO.output (4, GPIO. YÜKSƏK) hissi.arıq () mənası.show_letter ("!", Yaşıl) data_writer.writerow (təsir)

başqa:

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

def get_sense_data (): // sensorun dəyərlərini qeyd etmək və saxlamaq funksiyası sense_data =

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

oriyentasiya = məna.get_orientasiya ()

sens_data.append (oriyentasiya ["yaw"]) sense_data.append (orientation ["pitch"]) sense_data.append (oriyentasiya ["roll"])

acc = hissi.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 = məna.get_gyroscope_raw ()

məna_datası

sense_data.append (datetime.now ())

hissi_datanı qaytarın

açıq olaraq ('data.csv', 'w', newline = '') f olaraq:

data_writer = yazıçı (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 '])

Doğru halda:

print (get_sense_data ()) for event.stick.get_events (): # Event.action == "basıldığı təqdirdə" joystickin basıldığını yoxlayın: # event.direction == "yuxarı" olduqda hansı istiqamətdə olduğunu yoxlayın: # məna.show_letter ("U") # Yuxarı ox sürətlənməsi = hissi.get_accelerometer_raw () x = sürətlənmə ['x'] y = sürətlənmə ['y'] z = sürətlənmə ['z'] x = yuvarlaq (x, 0) y = yuvarlaq (y, 0) z = yuvarlaq (z, 0)

# Eger x == -1: sens.set_rotation (90) elif y == 1: sense.set_rotation (270) elif y == -1: sense.set_rotation (180)) başqa: sense.set_rotation (0) sense.clear () t = sense.get_temperature () t = round (t, 1) message = "T:" + str (t) sense.show_message (mesaj, text_colour = qırmızı, scroll_speed = 0.09) elif event.direction == "aşağı": sürətləndirmə = sense.get_accelerometer_raw () x = sürətlənmə ['x'] y = sürətlənmə ['y'] z = sürətlənmə ['z'] x = yuvarlaq (x, 0) y = yuvarlaq (y, 0) z = yuvarlaq (z, 0)

# Eger x == -1: sens.set_rotation (90) elif y == 1: sense.set_rotation (270) elif y == -1: sense.set_rotation (180)) başqa: sense.set_rotation (0) # sense.show_letter ("D") # Aşağı ox hissi. aydın () h = hissi.get_humidity () h = yuvarlaq (h, 1) mesaj = "H:" + str (h) sense.show_message (mesaj, text_colour = yaşıl, scroll_speed = 0.09) p = sense.get_pressure () p = yuvarlaq (p, 1) mesaj = "P:" + str (p) sense.show_message (mesaj, text_colour = sarı, scroll_speed = 0.09)

# elif event.direction == "sol":

#sürətləndirmə = məna.get_accelerometer_raw () #x = sürətlənmə ['x'] #y = sürətlənmə ['y'] #z = sürətlənmə ['z'] #x = yuvarlaq (x, 0) #y = yuvarlaq (y, 0) #z = yuvarlaq (z, 0)

#Ekranın fırlanmasını hansı istiqamətə qalxdığından asılı olaraq yeniləyin // İstifadə olunmur və node -red tərəfindən idarə olunmur #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") # Sol ox # elif event.direction == "right": # sense.show_letter ("K") # Sağ ox # elif hadisə. istiqaməti == "orta": # məna. Aydın ()

təsir ()

data = get_sense_data ()

dt = data [-1] - zaman damgası əgər dt.saniyə> gecikmə: data_writer.writerow (data) timestamp = datetime.now ()

Addım 18: Canlı Videonun İzlənməsi

Video MQTT vasitəsi ilə istənilən vaxt istənilən yerdə başlaya biləcəyi üçün Təsir Kaydedici canlı videonu izləmək üçün də istifadə edilə bilər

Video axını etmək üçün VLC pleyerdən istifadə edərdik, standart olaraq VLC əvvəlcədən quraşdırılmış, başqa bir şəkildə VLC-ni quraşdırın

Şəbəkə axını haqqında daha çox məlumatı VLC Şəbəkə axını vasitəsilə əldə etmək olar

Oxuduğunuz üçün təşəkkürlər !!

Təsir yazıcının edə biləcəyi daha çox şey var.

Maneələrin xəritələşdirilməsində maqnit sahəsinin təhlili üçün növbəti məkana diqqət yetirin

Tövsiyə: