İçindekiler:
- Adım 1: Parçalar ve Aksesuarlar
- Adım 2: Parça Açıklaması: Sense Hat
- Adım 3: Montaj: Darbe Kaydedici
- Adım 4: Montaj: Arabanın Gösterge Panosundaki Darbe Kaydedici
- Adım 5: Impact Recoder: Çalışma ve Uygulamalar
- Adım 6: Yazılım Açıklaması: Kırmızı Düğüm
- 7. Adım: Düğüm Kırmızısı Temelleri
- Adım 8: Düğüm kırmızısı: Akış _1a
- 9. Adım: Kırmızı Düğüm: Flow_1b
- Adım 10: Kırmızı Düğüm: Flow_2a
- Adım 11: Kırmızı Düğüm: Flow_2b
- Adım 12: Kırmızı Düğüm; Akış_3
- Adım 13: MQTT
- Adım 14: MQTT: Abone
- Adım 15: MQTT: Özellikleri Düğüm Kırmızısında Düzenleme
- Adım 16: Python Kodu:
- Adım 17: Son Kod
- Adım 18: Canlı Videoyu İzleme
Video: Araçlar için Darbe Kaydedici: 18 Adım (Resimlerle)
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:19
Darbe Kaydedici, sürüş veya hareket halindeyken araca verilen darbeyi kaydetmek için tasarlanmıştır. Etkiler, video/resimlerin yanı sıra okumalar şeklinde veritabanında saklanır. Etki üzerine, uzaktaki kullanıcı gerçek zamanlı olarak doğrulanabilir ve uzaktaki kullanıcı, kaydedilen videoyu izlemekten veya pi kameraya uzaktan erişim sağlayarak olayları buna göre izleyebilir..
Adım 1: Parçalar ve Aksesuarlar
(1) Raspberry Pi 3 veya daha iyisi: Hesaplama gücü gerekli
(2) Ahududu pi duyu şapkası
(3) Raspberry pi kamera / Usb kamera
(4) En son raspbian görüntüsüne sahip hafıza kartı (Düğüm kırmızısını desteklemesi gerekir, hemen hemen her son görüntü bunu yapar)
(5) Güç kaynağı en az 2,1 A (arabada bağımsız çalışma için pil bankasını kullandım)
Adım 2: Parça Açıklaması: Sense Hat
Sense HAT, 8×8 RGB LED matrisine, beş düğmeli bir joystick'e sahiptir ve aşağıdaki sensörleri içerir:
- Jiroskop
- ivmeölçer
- manyetometre
- Sıcaklık
- Barometrik
- baskı yapmak
- Nem
Sense şapka ile çalışma hakkında daha fazla bilgi aşağıdaki bağlantılardan elde edilebilir: Sense_Hat
Sense şapka API'si şu adreste barındırılmaktadır: Sense_hat_API
Sense-hat programlama kodu sonraki adımlarda ele alınmıştır. Sense hat kodu, şu adreste barındırılan bir simülatörde de simüle edilebilir: Sense-hat simulator
Adım 3: Montaj: Darbe Kaydedici
- Duyu şapkasının pi üzerine istiflenmesi gerektiğinden montajı daha kolaydır (belirlenen montaj cıvataları duyu şapkasıyla birlikte verilir).
- USB kamera veya pi kamera bağlanabilir. Öğreticide pi kamera ele alınıyor ve buna göre kodlama yapılıyor.
- Bellek kartını takın ve python kodunu ve -red düğümünü yapılandırın (yapılandırma ve kod sonraki adımlarda ele alınacaktır)
Yukarıdaki resim, düz şerit kabloyla pi'ye bağlı pi-kamerayı göstermektedir.
Adım 4: Montaj: Arabanın Gösterge Panosundaki Darbe Kaydedici
Kayıt cihazını monte etmek için çift taraflı bant kullandım, avantajı kayıt cihazının farklı pozisyonlarda kolayca kaydırılabilmesi, hangisi arabanıza en uygunsa.
Diğer kamera, aynı çift taraflı bant kullanılarak gösterildiği gibi dikey olarak monte edilir, Sırada, hazır bir internet bağlantısıyla birlikte bir güç kaynağı (10.000 mAH güç bankası) bağlamak var
MQTT başvurusu için internet bağlantısı gerekli olacaktır (MQTT ile ilgili ayrıntılar daha sonraki adımlarda ele alınacaktır)
Adım 5: Impact Recoder: Çalışma ve Uygulamalar
Sense hat, ivme ve jiroskoptan ham değerlerin kodda belirlenen limitin ötesinde olup olmadığını kontrol etmek için kullanılır.
İvmeölçer: İvmeölçer, x, y ve z eksenlerinin her birine etki eden yerçekimi kuvvetinin (G-kuvveti) miktarını söyler, eğer herhangi bir eksen 1G'den fazla kuvvet ölçerse, hızlı hareket algılanabilir. (lütfen aşağıyı gösteren eksenin 1g değerine sahip olacağını ve python kodunda buna göre değerlendirilmesi gerektiğini unutmayın).
Jiroskop; Jiroskop, açısal hareketi ölçmek için kullanılır, yani keskin dönüş sırasında sensör devreye girebilir (koddaki ayara bağlıdır), bu nedenle aracı keskin bir şekilde döndüren bir kişi yakalanabilir!
Ayarlanan limitin herhangi bir aktivasyonu, algılama şapka LED matrisinde de "!" olarak görüntülenir. hızlanma için kırmızı ve jiroskop aktivasyonu için yeşil
Adım 6: Yazılım Açıklaması: Kırmızı Düğüm
Node-RED, başlangıçta IBM'in Gelişen Teknoloji Hizmetleri ekibi tarafından geliştirilen ve şimdi JS Foundation'ın bir parçası olan akış tabanlı bir programlama aracıdır.
Kırmızı düğüm hakkında daha fazla bilgi aşağıdaki bağlantıdan edinilebilir: düğüm-kırmızı
Bizim durumumuz için, aşağıdaki faaliyetler için node -red kullanıyor olacağız
(1) Kamera işlevlerini başlatmak için joysticklerle etkileşim kurma
(2) Araç üzerindeki etkilerin izlenmesi ve MQTT kullanılarak bilgilerin son kullanıcıya iletilmesi ve ayrıca MQTT üzerinden son kullanıcı komutlarının kabul edilmesi ve pi üzerinde gerekli uygulamanın başlatılması
(3) Pi'nin kapatılması gibi bazı temel işlemleri gerçekleştirmek
Sonraki adımlar, düğüm kırmızısında uygulanan akış şeması için ayrıntılı bilgi verir.
Lütfen düğüm kırmızısı akış şemalarının python koduyla etkileşime girdiğine dikkat edin, bu nedenle son kısım python kodunun özelliklerini kapsar
7. Adım: Düğüm Kırmızısı Temelleri
Düğüm kırmızısını bir anda başlatmak için belirli Temel adımlar vurgulanmıştır, ancak evet, düğüm kırmızısı uygulamaları başlatmak ve çalıştırmak için çok basittir.
- Düğüm kırmızısını başlatma:
- Pi internete bağlandığında Düğüm-red'i başlatma https:// ip adresi>:1880
Adım 8: Düğüm kırmızısı: Akış _1a
Akış _1a, CSV dosyasındaki tüm değişiklikleri izler ve değişikliklere, yani algılanan etkiye göre, kamera video kaydı açık moduna ayarlanır ve ayrıca kullanıcı, bir etkinin meydana geldiği konusunda internet üzerinden bilgilendirilir.
9. Adım: Kırmızı Düğüm: Flow_1b
Söz konusu akışta sadece joystick'e basılarak herhangi bir noktada video kaydı başlatılabilir.
Adım 10: Kırmızı Düğüm: Flow_2a
Söz konusu akışta dizine her yeni resim veya video kaydedildiğinde/yüklendiğinde bilgiler kayıtlı kullanıcıya internet üzerinden iletilir.
Adım 11: Kırmızı Düğüm: Flow_2b
Bu akış, cihazı aşağıdaki şekilde kontrol etmek için öncelikle uzak kullanıcı için tasarlanmıştır.
(a) kapatma cihazı
(b) fotoğraf çekmek
(c) Videoları kaydedin
(d) ana kodu başlat (veri kaydedici kodu, etkiyi hesaplayan ana koddur)
Adım 12: Kırmızı Düğüm; Akış_3
Akış, ana kodu veya kapatma cihazını başlatmak için yerel erişim için tasarlanmıştır.
Adım 13: MQTT
MQTT (Message Queuing Telemetri Transport), yayıncı ve abonenin etkileşimde bulunduğu bir TCP/IP protokolüdür.
Bizim durumumuzda Pi yayıncı, mobil/PC'mizde yüklü uygulama abone olacaktır.
Bu sayede herhangi bir etkinin oluşması üzerine bilgi kullanıcıya uzaktan iletilir (çalışan bir internet bağlantısı şarttır)
MQTT hakkında daha fazla bilgiye aşağıdaki bağlantıdan erişilebilir: MQTT
MQTT'yi kullanmaya başlamak için önce kayıt olmamız gerekiyor, cloudmqtt (www.cloudmqtt.com) kullandığım eğitim için, "sevimli kedi" altında ücretsiz bir plan var, hepsi bu.
Kaydolduktan sonra bir örnek oluşturun "pi" deyin, ardından aşağıdaki ayrıntıları alacaksınız
- Sunucu adı
- Liman
- Kullanıcı adı
- parola
Mobil/PC üzerinden abone olurken yukarıdakiler gereklidir.
Uygulamam için google play store'dan MQTT uygulamasını kullandım (Android versiyonu)
Adım 14: MQTT: Abone
Mobilde çalışan MQTT uygulaması (Android versiyonu)
Pi üzerinde algılanan etki geri iletilir
Adım 15: MQTT: Özellikleri Düğüm Kırmızısında Düzenleme
MQTT düğümü seçildikten sonra node-red'de "Sunucu adı" ve "konu" yazılmalıdır. Bu, abone tarafında aynı olmalıdır.
Adım 16: Python Kodu:
Kod işlevi, ekteki akış şemasına göredir
Adım 17: Son Kod
piton kodu ektedir
Python betiğimizi terminalden çalıştırmak için, onları chmod +x datalogger.py olarak çalıştırılabilir hale getirmemiz gerekiyor, ayrıca kodun üst kısmında aşağıdaki "shebang" satırını içermesi gerekir #! /usr/bin/python3 (bu, kırmızı düğümden işlevleri yürütmek için gereklidir)
#!/usr/bin/python3 // sens_hat'tan shebang satırı içe aktar datetime'dan SenseHat'ı içe aktar csv'den tarihsaati içe aktar yazıcıyı içe aktar RPi. GPIO'yu zamandan GPIO olarak içe aktar uykudan içe aktar
sense = SenseHat()
csv'yi içe aktar
zaman damgası = tarihsaat.now()
gecikme = 5 // gecikme, data.csv dosyasında veri depolamak için tanımlanır kırmızı = (255, 0, 0) yeşil = (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 = sense.get_gyroscope_raw()
sense_impact.append(gyro["x"]) sense_impact.append(gyro["y"]) sense_impact.append(gyro["z"])
dönüş sense_impact
def etki(): // etkiyi algılama işlevi #GPIO.setmode(GPIO. BCM) #GPIO.setup(4, GPIO. OUT) hızlanma = sense.get_accelerometer_raw() x = hızlanma['x'] y = hızlanma['y'] z = hızlanma['z'] x=abs(x) y=abs(y) z=abs(z)
gyro = sense.get_gyroscope_raw()
gyrox = cayro["x"] cayroy = cayro["y"] gyroz = cayro["z"]
gyrox = yuvarlak(gyrox, 2)
gyroy = yuvarlak(gyroy, 2) gyroz = yuvarlak(gyroz, 2)
etki = get_sense_impact()
x > 1.5 veya y > 1.5 veya z > 1.5 ise: // değerler, gerçek yolda yinelemeden sonra ayarlanır, open('impact.csv', 'w', newline=' ile farklı türler ve sürüş becerileri için uygun şekilde değiştirilebilir. ') f: data_writer = yazar(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("!", kırmızı) data_writer.writerow(etki)
elif gyrox > 1.5 veya gyroy > 1.5 veya gyroz > 1.5: // değerler, f: data_writer olarak open('impact.csv', 'w', newline='') ile dönüşlerin başlatıldığı hıza bakarak ayarlanır = yazar(f) data_writer.writerow(['acc x', 'acc y', 'acc z', 'gyro x', 'gyro y', 'gyro z']) #GPIO.output(4, GPIO. YÜKSEK) sense.clear() sense.show_letter("!", yeşil) data_writer.writerow(etki)
Başka:
# GPIO.output(4, GPIO. LOW) sense.clear()
def get_sense_data(): // sensörden gelen değerleri kaydetme ve saklama işlevi sense_data =
sense_data.append(sense.get_temperature()) sense_data.append(sense.get_pressure()) sense_data.append(sense.get_humidity())
oryantasyon = sense.get_orientation()
sense_data.append(yönlendirme["yaw"]) sense_data.append(yönlendirme["adım"]) sense_data.append(yönlendirme["yuvarla"])
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(tarihsaat.now())
sense_data döndür
open('data.csv', 'w', newline='') ile f olarak:
data_writer = yazar(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 iken:
print(get_sense_data()) in sense.stick.get_events() içindeki olay için: # joystick'e basılıp basılmadığını kontrol edin eğer event.action == "basıldıysa": # event.direction == "yukarı" ise hangi yönde olduğunu kontrol edin: # sense.show_letter("U") # Yukarı ok hızlanma = sense.get_accelerometer_raw() x = hızlanma['x'] y = hızlanma['y'] z = hızlanma['z'] x=yuvarlak(x, 0) y =yuvarlak(y, 0) z=yuvarlak(z, 0)
# Ekranın dönüşünü hangi yöne göre yukarıya doğru güncelleyin 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 = round(t, 1) mesaj = "T: " + str(t) sense.show_message(message, text_color = kırmızı, scroll_speed=0.09) elif event.direction == "aşağı": hızlanma = sense.get_accelerometer_raw() x = hızlanma['x'] y = hızlanma['y'] z = hızlanma['z'] x=yuvarlak(x, 0) y=yuvarlak(y, 0) z=yuvarlak(z, 0)
# Ekranın dönüşünü hangi yöne göre yukarıya doğru güncelleyin 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") # Aşağı ok sense.clear() h = sense.get_humidity() h = round(h, 1) mesaj = "H: " + str(h) sense.show_message(message, text_color = yeşil, scroll_speed=0.09) p = sense.get_pressure() p = round(p, 1) mesaj = "P: " + str(p) sense.show_message(message, text_color = sarı, scroll_speed=0.09)
# elif event.direction == "sol":
# hızlanma = sense.get_accelerometer_raw() # x = hızlanma['x'] #y = hızlanma['y'] #z = hızlanma['z'] #x=yuvarlak(x, 0) #y=yuvarlak(y, 0) #z=yuvarlak(z, 0)
# Ekranın dönüşünü hangi yöne bağlı olarak güncelleyin // Node-red tarafından kullanılmaz ve kontrol edilmez #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 ok # elif event.direction == "sağ": # sense.show_letter ("K") # Sağ ok # elif event.direction == "orta": # sense.clear()
darbe()
veri = get_sense_data()
dt = data[-1] - dt.saniye > gecikme ise zaman damgası: data_writer.writerow(data) zaman damgası = datetime.now()
Adım 18: Canlı Videoyu İzleme
Etki Kaydedici, canlı videoyu izlemek için de kullanılabilir, çünkü video, MQTT aracılığıyla herhangi bir zamanda herhangi bir yerde başlatılabilir
videoları yayınlamak için VLC oynatıcıyı kullanırdık, varsayılan olarak en son raspbian'da VLC önceden yüklenmiştir, aksi takdirde vlc'yi aşağıdaki gibi kurun
Ağ akışını görüntüleme hakkında daha fazla bilgiye VLC Ağ akışı aracılığıyla erişilebilir
Okuduğunuz için teşekkürler!!
Etki kaydedicinin yapabileceği daha çok şey var..
Engel haritalamayı gerçekleştirirken manyetik alan analizi için bir sonraki alana dikkat edin
Önerilen:
Arduino UNO ve SD-Kart ile Nem ve Sıcaklık Gerçek Zamanlı Veri Kaydedici Nasıl Yapılır - Proteus'ta DHT11 Veri Kaydedici Simülasyonu: 5 Adım
Arduino UNO ve SD-Kart ile Nem ve Sıcaklık Gerçek Zamanlı Veri Kaydedici Nasıl Yapılır | Proteus'ta DHT11 Veri Kaydedici Simülasyonu: Giriş: merhaba, ben Liono Maker, işte YouTube bağlantısı. Arduino ile yaratıcı projeler yapıyoruz ve gömülü sistemler üzerinde çalışıyoruz
Sonraki Sürüş/Yürüyüş Parkurunuz için DIY GPS Veri Kaydedici: 11 Adım (Resimlerle)
Sizin için DIY GPS Veri Kaydedici Sonraki Sürüş/Yürüyüş Parkuru: Bu, çok amaçlı kullanabileceğiniz bir GPS Veri Kaydedicidir, diyelim ki uzun sürüşünüzü kaydetmek istiyorsanız, sonbahar renklerini kontrol etmek için hafta sonu boyunca aldınız. ya da her yıl sonbaharda ziyaret ettiğiniz favori bir parkurunuz var ve
Görme Engelliler, Görme Engelliler ve Diğer Herkes için ScanUp NFC Okuyucu/Yazıcı ve Ses Kaydedici: 4 Adım (Resimlerle)
Körler, Görme Engelliler ve Diğer Herkes için ScanUp NFC Okuyucu/Yazıcı ve Ses Kaydedici: Endüstriyel tasarım okuyorum ve proje benim dönemimin işi. Amaç, görme engelli ve görme engelli kişileri SD karta .WAV formatında ses kaydetmeye ve bu bilgiyi NFC etiketi ile çağırmaya olanak sağlayan bir cihazla desteklemektir. Yani
Klasik Araçlar için Kablosuz Problu Motor Sıcaklık Sensörü/Göstergesi: 7 Adım
Klasik Araçlar İçin Kablosuz Problu Motor Sıcaklık Sensörü/Göstergesi: Bu probu sevgili Çipitak'ım için yaptım. Arka kaputun altında 2 silindirli hava soğutmalı motora sahip bir fiat 126 otomobil. Çipitak'ta motorun ne kadar sıcak olduğunu gösteren bir hararet göstergesi yok bu yüzden bir sensör işe yarar diye düşündüm. Ayrıca sensörün kablolu olmasını istedim
Profesyonel Görünümlü Araçlar: 7 Adım (Resimlerle)
Profesyonel Görünümlü Araçlar: Elektrikli aletler yapmayı sever misiniz? Bir kutu sprey yapıştırıcı ve bazı OHP asetatları ile profesyonel mağazadan satın alınan ekipmanlardan nasıl ayırt edilemez görüneceklerini öğrenmek için okumaya devam edin. Sadece bir el feneri yapıyor olsanız da