Mundarija:
- 1 -qadam: ehtiyot qismlar va aksessuarlar
- 2 -qadam: qismlar tavsifi: Sense Hat
- 3 -qadam: yig'ish: zarba yozuvchisi
- 4 -qadam: Yig'ish: Mashinaning boshqaruv paneliga zarba yozuvchisi
- 5 -qadam: Ta'sirni yozuvchi: Ishlash va ilovalar
- 6 -qadam: Dastur tavsifi: Qizil tugun
- 7-qadam: Qizil tugunli asoslar
- 8-qadam: Qizil tugun: Oqim _1a
- 9 -qadam: Qizil tugun: Flow_1b
- 10 -qadam: Qizil tugun: Flow_2a
- 11 -qadam: Qizil tugun: Flow_2b
- 12 -qadam: Qizil tugun; Oqim_3
- 13 -qadam: MQTT
- 14 -qadam: MQTT: Abonent
- 15-qadam: MQTT: Xususiyatlarni tugun-qizil rangda tahrirlash
- 16 -qadam: Python kodi:
- 17 -qadam: Yakuniy kod
- 18 -qadam: Jonli videoni kuzatish
Video: Avtomobillar uchun zarba yozuvchisi: 18 qadam (rasmlar bilan)
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:25
Impact Recorder avtomobil haydash paytida yoki harakatsiz holatda bo'lgan zarbalarni qayd etish uchun mo'ljallangan. Ta'sirlar ma'lumotlar bazasida o'qish, shuningdek video/rasm ko'rinishida saqlanadi. Uzoq masofali foydalanuvchi real vaqtda tekshirilishi mumkin, va masofali foydalanuvchi saqlangan videoni tomosha qilishdan yoki pi kameraga masofadan kirishni va shunga ko'ra voqealarni ko'rishni ko'ra oladi..
1 -qadam: ehtiyot qismlar va aksessuarlar
(1) Raspberry Pi 3 yoki undan yuqori: Hisoblash kuchi talab qilinadi
(2) Raspberry pi sezgir shlyapa
(3) Raspberry pi kamera / Usb kamera
(4) so'nggi ruscha tasvirli xotira kartasi (qizil tugunni qo'llab -quvvatlashi kerak, deyarli har bir so'nggi rasm)
(5) kamida 2,1 A quvvat manbai (men avtoulovda avtonom ishlash uchun akkumulyator bankidan foydalanganman)
2 -qadam: qismlar tavsifi: Sense Hat
Sense HAT 8 × 8 RGB LED matritsasi, besh tugmachali joystikka ega va quyidagi sensorlarni o'z ichiga oladi:
- Gyroskop
- Akselerometr
- Magnitometr
- Harorat
- Barometrik
- bosim
- Namlik
His -shlyapa bilan ishlash haqida qo'shimcha ma'lumotni quyidagi havolalardan olish mumkin: Sense_Hat
Sense shapka uchun API quyidagi manzilda joylashgan: Sense_hat_API
His-shlyapa dasturlash kodi keyingi bosqichlarda yoritilgan. Sense shlyapa kodini simulyatorda simulyatsiya qilish mumkin: Sense-hat simulyatori
3 -qadam: yig'ish: zarba yozuvchisi
- O'rnatish osonroq, chunki sezgichli shlyapani pi ustiga yopishtirish kerak (belgilangan murvat bolt bilan ta'minlangan).
- USB kamera yoki pi kamera ulanishi mumkin. Qo'llanmada pi kamera ko'rib chiqiladi va shunga mos ravishda kodlash amalga oshiriladi.
- Xotira kartasini joylashtiring va python kodini va tugun -qizilni sozlang (konfiguratsiya va kod keyingi bosqichlarda yoritilgan)
Yuqoridagi rasmda pi-kamera tekis lenta kabeli orqali pi ga ulangan
4 -qadam: Yig'ish: Mashinaning boshqaruv paneliga zarba yozuvchisi
Yozish moslamasini o'rnatish uchun men ikki tomonlama lentani ishlatardim, uning afzalligi shundaki, magnitafonni har xil holatga o'tkazish mumkin, qaysi biri sizning mashinangizga mos bo'lsa.
Boshqa kamera ko'rsatilgandek vertikal ravishda o'rnatiladi, xuddi shu ikki tomonlama tasma yordamida, Keyingi navbatda quvvat manbai (10 000 mA / soat quvvat banki) va tayyor Internet aloqasi
MQTT ilovasi uchun Internetga ulanish talab qilinadi (MQTT tafsilotlari keyingi bosqichlarda yoritilgan)
5 -qadam: Ta'sirni yozuvchi: Ishlash va ilovalar
Hissiy shlyapa, akseleratsiya va giroskop yordamida xom qiymatlarning kodda belgilangan chegaradan oshib ketmaganligini tekshirish mumkin.
Akselerometr: akselerometr x, y va z o'qlarining har biriga ta'sir qiladigan tortishish kuchi (G-kuchi) miqdorini ko'rsatadi, agar har qanday o'q 1G kuchdan katta bo'lsa, tez harakat aniqlanishi mumkin. (E'tibor bering, pastga qaragan o'q 1g qiymatiga ega bo'ladi va shunga mos ravishda python kodida hisobga olinishi kerak).
Giroskop; Gyroskop burchak harakatini o'lchash uchun ishlatiladi, ya'ni keskin burilish paytida sensor ishga tushishi mumkin (koddagi sozlamalarga bog'liq), shuning uchun mashinani keskin aylantirgan odam ushlanib qoladi!
Belgilangan chegaraning har qanday faollashtirilishi, shuningdek, LED matritsasida "!" Belgisi bilan ko'rsatiladi. tezlashtirish uchun qizil rangda va gyroskopni faollashtirish uchun yashil rangda
6 -qadam: Dastur tavsifi: Qizil tugun
Node-RED-bu oqimga asoslangan dasturlash vositasi bo'lib, dastlab IBMning Rivojlanayotgan Texnologiyalari Servicesteam kompaniyasi tomonidan ishlab chiqilgan va hozirda JS Jamg'armasi tarkibiga kiradi.
Qizil tugun haqida qo'shimcha ma'lumotni quyidagi havola orqali olish mumkin: node-red
Bizning holatimizda biz quyidagi amallar uchun node -red dan foydalangan bo'lardik
(1) kamera funksiyalarini ishga tushirish uchun joystiklar bilan ishlash
(2) Avtotransport vositalariga ta'sirini kuzatish va ma'lumotni oxirgi foydalanuvchiga MQTT -dan foydalanish va MQTT orqali oxirgi foydalanuvchi buyruqlarini qabul qilish va pi -da kerakli dasturni ishga tushirish.
(3) pi -ni o'chirish kabi ba'zi asosiy ishlarni bajarish
Keyingi qadamlar tugun-qizil ustida bajarilgan oqim diagrammasi uchun batafsil ma'lumot beradi
E'tibor bering, tugun-qizil oqim sxemalari python kodi bilan o'zaro ta'sir qiladi, shuning uchun oxirgi qismi python kodining aspektlarini qamrab oladi
7-qadam: Qizil tugunli asoslar
Qizil tugunni bir zumda boshlash uchun ba'zi asosiy qadamlar ajratilgan, lekin ha tugun-qizil dasturlarni ishga tushirish va ishlash uchun juda oddiy.
- Bosh tugun-qizil: https:// localhost: 1880.
- Pi Internetga ulanganda tugun-qizil boshlanishi https:// ip address>: 1880
8-qadam: Qizil tugun: Oqim _1a
Flow _1a, CSV faylidagi har qanday o'zgarishlarni kuzatib boradi va o'zgarishlar asosida, ya'ni ta'sir aniqlanganda, kamerada video yozib olish rejimi yoqiladi va foydalanuvchiga ta'sir sodir bo'lganligi haqida internet orqali xabar qilinadi.
9 -qadam: Qizil tugun: Flow_1b
Aytgancha, video yozishni joystikni bosish orqali istalgan vaqtda boshlash mumkin
10 -qadam: Qizil tugun: Flow_2a
Yuqorida aytilganidek, har qanday yangi rasm yoki video katalogga saqlansa/yuklansa, ma'lumot internet orqali ro'yxatdan o'tgan foydalanuvchiga uzatiladi.
11 -qadam: Qizil tugun: Flow_2b
Bu oqim asosan masofali foydalanuvchi uchun mo'ljallangan bo'lib, qurilmani quyidagi tartibda boshqaradi
a) o'chirish moslamasi
b) suratga olish
(c) video yozib olish
(d) asosiy kodni ishga tushirish (ma'lumotlar katalogi kodi - ta'sirni hisoblaydigan asosiy kod)
12 -qadam: Qizil tugun; Oqim_3
Asosiy kod yoki o'chirish qurilmasini ishga tushirish uchun oqim mahalliy kirish uchun mo'ljallangan
13 -qadam: MQTT
MQTT (Message Queuing Telemetry Transport) - bu TCP/IP protokoli bo'lib, unda noshir va abonent o'zaro aloqada bo'ladi.
Bizning holatimizda Pi - bu nashriyotchi, bizning mobil kompyuterimizda o'rnatilgan dastur - abonent.
Shunday qilib, har qanday ta'sir paydo bo'lganda, ma'lumot masofadan turib foydalanuvchiga uzatiladi (ishlayotgan Internet aloqasi bo'lishi shart).
MQTT haqida qo'shimcha ma'lumotni quyidagi havola orqali olish mumkin: MQTT
MQTT -dan foydalanishni boshlash uchun biz avval ro'yxatdan o'tishimiz kerak, men cloudmqtt (www.cloudmqtt.com) dan foydalangan darslik uchun "yoqimli mushuk" ostida bepul reja bor, hammasi shu.
Ro'yxatdan o'tgandan so'ng, misol yarating, "pi" deb ayting, shundan so'ng siz quyidagi ma'lumotlarni olasiz
- Server nomi
- port
- foydalanuvchi nomi
- parol
Yuqorida aytilganlar mobil/shaxsiy kompyuter orqali obuna bo'lganda talab qilinadi
Mening ilovam uchun Google Play do'konidagi MQTT ilovasidan foydalanganman (Android versiyasi)
14 -qadam: MQTT: Abonent
Mobil qurilmalarda ishlaydigan MQTT dasturi (Android versiyasi)
Pi ga aniqlangan zarba orqaga qaytariladi
15-qadam: MQTT: Xususiyatlarni tugun-qizil rangda tahrirlash
MQTT tugunini tanlagandan so'ng qizil-qizil rangda "Server nomi" va "mavzu" ko'rsatiladi. Bu obunachilar uchun ham bir xil bo'lishi kerak.
16 -qadam: Python kodi:
Kodning funktsional imkoniyatlari biriktirilgan sxemaga muvofiq
17 -qadam: Yakuniy kod
Python kodi biriktirilgan
Python skriptimizni terminaldan ishga tushirish uchun ularni chmod +x datalogger.py sifatida bajarilishini ta'minlashimiz kerak, bundan tashqari kodning yuqori qismida quyidagi "shebang" qatori #bo'lishi kerak! /usr/bin/python3 (bu tugun-qizil funktsiyalarni bajarish uchun kerak)
#!/usr/bin/python3 // shebang linefrom sense_hat import datetime dan datetime import csv import yozuvchisi import RPi. GPIO GPIO sifatida vaqtli import uyqusidan.
ma'no = SenseHat ()
csv import qilish
vaqt tamg'asi = datetime.now ()
kechikish = 5 // kechikish ma'lumotlarni saqlash uchun belgilanadi.csv fayli qizil = (255, 0, 0) yashil = (0, 255, 0) sariq = (255, 255, 0)
#GPIO.setmode (GPIO. BCM)
#GPIO. sozlash (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 = ma'no.get_gyroscope_raw ()
sens_impact.append (gyro ["x"]) sense_impact.append (gyro ["y"]) sense_impact.append (gyro ["z"])
sense_impact -ga qaytish
def Impact (): // ta'sirni aniqlash funktsiyasi #GPIO.setmode (GPIO. BCM) #GPIO.setup (4, GPIO. OUT) tezlashtirish = sense.get_accelerometer_raw () x = tezlashtirish ['x'] y = tezlashtirish ['y'] z = tezlanish ['z'] x = abs (x) y = abs (y) z = abs (z)
gyro = ma'no.get_gyroscope_raw ()
gyrox = gyro ["x"] gyroy = gyro ["y"] gyroz = gyro ["z"]
gyrox = dumaloq (gyrox, 2)
gyroy = dumaloq (gyroy, 2) gyroz = yumaloq (gyroz, 2)
ta'sir = get_sense_impact ()
agar x> 1.5 yoki y> 1.5 yoki z> 1.5: // haqiqiy yo'lda iteratsiyadan so'ng qiymatlar o'rnatilsa, mos ravishda har xil turdagi haydash ko'nikmalari uchun ochiq o'zgarishi mumkin ('shock.csv', 'w', newline = ' ') f sifatida: data_writer = yozuvchi (f) data_writer.writerow ([' acc x ',' acc y ',' acc z ',' gyro x ',' gyro y ',' gyro z ']) #GPIO. chiqish (4, GPIO. HIGH) sense.clear () sense.show_letter ("!", qizil) data_writer.writerow (ta'sir)
elif gyrox> 1.5 yoki gyroy> 1.5 yoki gyroz> 1.5: // qiymatlar f: data_writer sifatida ochiq ('shock.csv', 'w', newline = '') bilan burilishlarning boshlanish tezligiga qarab belgilanadi. = yozuvchi (f) data_writer.writerow (['acc x', 'acc y', 'acc z', 'gyro x', 'gyro y', 'gyro z']) #GPIO.output (4, GPIO. YUQORI) sezgi.yaqqol () sezgi.shou_ xat ("!", Yashil) data_writer.writerow (ta'sir)
boshqa:
# GPIO.output (4, GPIO. LOW) sense.clear ()
def get_sense_data (): // sensor sens_data qiymatlarini yozish va saqlash funktsiyasi =
sense_data.append (sense.get_temperature ()) sense_data.append (sense.get_pressure ()) sens_data.append (sense.get_humidity ())
yo'nalish = ma'no.get_orientation ()
sense_data.append (orientatsiya ["yaw"]) sense_data.append (orientatsiya ["pitch"]) sense_data.append (orientatsiya ["roll"])
acc = ma'no.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 = ma'no.get_gyroscope_raw ()
sens_data.append (gyro ["x"]) sens_data.append (gyro ["y"]) sens_data.append (gyro ["z"])
sense_data.append (datetime.now ())
sense_data -ni qaytarish
ochiq ('data.csv', 'w', newline = '') bilan f:
data_writer = yozuvchi (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 '])
rost bo'lsa:
print (get_sense_data ()) hodisa ma'nosida.stick.get_events (): # Eventstaction == "pressed" bo'lsa, joystick bosilganligini tekshiring: # Event.direction == "up" bo'lsa, qaysi yo'nalishni tekshiring: # his.shou_letter ("U") # Yuqoriga o'q tezlashuvi = sens.get_accelerometer_raw () x = tezlanish ['x'] y = tezlanish ['y'] z = tezlanish ['z'] x = yumaloq (x, 0) y = yumaloq (y, 0) z = yumaloq (z, 0)
# Displeyning aylanishini yangilang, agar x == -1: sens.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) message = "T:" + str (t) sense.show_message (xabar, text_colour = qizil, scroll_speed = 0.09) elif event.direction == "pastga": tezlanish = sense.get_accelerometer_raw () x = tezlanish ['x'] y = tezlanish ['y'] z = tezlanish ['z'] x = yumaloq (x), 0) y = dumaloq (y, 0) z = yumaloq (z, 0)
# Displeyning aylanishini yangilang, agar x == -1: sens.set_rotation (90) elif y == 1: sense.set_rotation (270) elif y == -1: sense.set_rotation (180)) else: sense.set_rotation (0) # sense.shou_letter ("D") # Pastga o'q sezgisi. aniq () h = sezish.get_umidity () h = yumaloq (h, 1) xabar = "H:" + str (h) sense.show_message (xabar, text_colour = yashil, scroll_speed = 0.09) p = sense.get_pressure () p = dumaloq (p, 1) xabar = "P:" + str (p) sens.shou_message (xabar, matn_ rangi) sariq, scroll_speed = 0.09)
# elif event.direction == "chapda":
#tezlanish = sense.get_accelerometer_raw () #x = tezlanish ['x'] #y = tezlanish ['y'] #z = tezlanish ['z'] #x = dumaloq (x, 0) #y = dumaloq (y, 0) #z = dumaloq (z, 0)
#Ekranning aylanishini yangilang, qaysi tomonga // yuqoriga qarab // ishlatilmaydi va qizil tugun bilan boshqarilmaydi #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") # Chap strelka # elif voqea.yo'nalishi == "o'ng": # sense.shou_letter ("K") # O'ng o'q # elif voqea.dir yo'nalishi == "o'rtada": # ma'no. Aniq ()
ta'sir ()
ma'lumotlar = get_sense_data ()
dt = ma'lumotlar [-1] - vaqt tamg'asi, agar dt.sekund> kechikish: data_writer.writerow (ma'lumotlar) vaqt tamg'asi = datetime.now ()
18 -qadam: Jonli videoni kuzatish
Impact Recorder -dan jonli videoni kuzatish uchun ham foydalanish mumkin, chunki MQTT orqali istalgan vaqtda videoni boshlash mumkin
biz videolarni oqimlash uchun VLC pleeridan foydalanardik, sukut bo'yicha oxirgi raspian tilida VLC oldindan o'rnatilgan, aks holda vlc ni quyida o'rnating.
Tarmoq oqimini ko'rish haqida qo'shimcha ma'lumotni VLC Network oqimi orqali olish mumkin
O'qiganingiz uchun tashakkur !!
Ta'sir yozuvchisi qila oladigan yana ko'p narsalar bor.
To'siqlar xaritasini tuzishda magnit maydonni tahlil qilish uchun keyingi joyni ko'rib chiqing
Tavsiya:
Keyingi haydovchilik/sayohatlar uchun DIY GPS ma'lumot yozuvchisi: 11 qadam (rasmlar bilan)
Keyingi haydash/sayohatlar uchun DIY GPS ma'lumotlarini yozish vositasi: Bu GPS ma'lumotlarini yozish vositasi bo'lib, uni ko'p maqsadlarda ishlatishingiz mumkin, masalan, agar siz kuzgi ranglarni tekshirish uchun o'tgan hafta davomida uzoq yo'lni bosib o'tishni xohlasangiz. yoki har yili kuzda tashrif buyuradigan sevimli izingiz bor va siz
OSOYOO 2WD robotli avtomobillar uchun boshlang'ich to'plami: 30 qadam (rasmlar bilan)
OSOYOO 2WD Robot Car Starter Kit: Siz ushbu mashinani Amazondan sotib olishingiz mumkin: OSOYOO 2WD Robot Car Starter K it (AQSh) OSOYOO 2WD Robot Car Starter Kit (Buyuk Britaniya) OSOYOO 2WD Robot Car Starter Kit (DE) OSOYOO 2WD Robot Car Starter Kit ( FR) OSOYOO 2WD Robot Car Start Kit (IT) OSOYOO 2WD Robot Car Sta
IKEA -dan Blue Yeti USB mikrofoni uchun zarba tog'i: 4 qadam (rasmlar bilan)
IKEA -dan Blue Yeti USB mikrofoni uchun zarba moslamasi: Blue Yeti USB mikrofoni uchun oddiy DIY zarba moslamasi. Agar siz uni ish stolidagi stend bilan ishlatsangiz. U juda ko'p keraksiz tebranishlar va shovqinlarni qabul qilishi mumkin. Bu zarba moslamasi 2 dollardan kamroq narxda va dollar do'konidagi qismlar bilan ishlab chiqarilgan
Karnay bilan DIY zarba sensori: 5 qadam (rasmlar bilan)
Karnay bilan DIY zarba sensori: Karnay elektromagnitni yoqish orqali ishlaydi, u " odatiy " magnit Bu tebranish hosil qiladi, natijada tovush paydo bo'ladi. Shunday qilib, agar karnayga tok etkazib berish o'rniga, biz ovozni harakatga keltirish orqali tokni (juda oz bo'lsa) ishlab chiqarishimiz mumkin
Elektron uskunalar yoki ko'rinmas kaliti bo'lgan avtomobillar uchun universal (o'g'irlik) himoyasi: 4 qadam (rasmlar bilan)
Elektron uskunalar yoki ko'rinmas kaliti bo'lgan avtomobillar uchun universal (o'g'irlik) himoyasi: Men sizga qamish kalitini elektron uskunalar yoki avtomobillar uchun universal himoya sifatida qanday ishlatishingiz mumkinligini ko'rsataman. Sizga faqat qamish kaliti va magnit kerak. Avtomobillar uchun sizga qamish kalitining o'tish qobiliyatini oshirish uchun quvvat rölesi kerak bo'ladi