Мазмұны:

Көлік құралдарына әсер етуші: 18 қадам (суреттермен)
Көлік құралдарына әсер етуші: 18 қадам (суреттермен)

Бейне: Көлік құралдарына әсер етуші: 18 қадам (суреттермен)

Бейне: Көлік құралдарына әсер етуші: 18 қадам (суреттермен)
Бейне: ЧУПАКАБРА ма, әлде ЖЫН ба?#тылсымдүние #td #төреденбірвидео 2024, Қараша
Anonim
Көлік құралдарының әсерін тіркеуші
Көлік құралдарының әсерін тіркеуші

Impact Recorder көлік құралының қозғалысы кезінде немесе тоқтап тұрған кездегі әсерін тіркеуге арналған. Әсерлер дерекқорда оқылым түрінде, сондай -ақ бейне/сурет түрінде сақталады. Қашықтағы қолданушыға нақты уақыт режимінде тексеруге болады, ал қашықтағы пайдаланушы сақталған бейнені қарауға немесе пи камераға қашықтан кіруге және сәйкесінше оқиғаларды қарауға болады..

1 -қадам: Бөлшектер мен керек -жарақтар

(1) Raspberry Pi 3 немесе одан жоғары: есептеу қуаты қажет

(2) Raspberry pi сезімді қалпақ

(3) Raspberry pi камерасы / USB камерасы

(4) Соңғы растрлық кескіні бар жад картасы (қызыл түйінді қолдау керек, соңғы суреттердің барлығы дерлік жасайды)

(5) кем дегенде 2,1 А қуат көзі (мен автокөлікте автономды жұмыс үшін батарея банкін қолдандым)

2 -қадам: Бөлшектердің сипаттамасы: Sense Hat

Бөлшектердің сипаттамасы: Sense Hat
Бөлшектердің сипаттамасы: Sense Hat

Sense HAT 8 × 8 RGB жарықдиодты матрицасы, бес түймелі джойстикке ие және келесі сенсорларды қамтиды:

  • Гироскоп
  • Акселерометр
  • Магнитометр
  • Температура
  • Барометрлік
  • қысым
  • Ылғалдылық

Сенсорлық қалпақпен жұмыс істеу туралы қосымша ақпаратты келесі сілтемелерден алуға болады: Sense_Hat

Сезім қалпағына арналған API мына жерде орналасқан: Sense_hat_API

Sens-hat бағдарламалау коды келесі қадамдарда қарастырылады. Sense қалпақ кодын мына жерде орналасқан тренажерда модельдеуге болады: Sense-hat тренажеры

3 -қадам: Жинау: әсерлерді тіркеуші

Құрастыру: әсерді тіркеуші
Құрастыру: әсерді тіркеуші
Құрастыру: әсерді тіркеуші
Құрастыру: әсерді тіркеуші
Құрастыру: әсерді тіркеуші
Құрастыру: әсерді тіркеуші
Құрастыру: әсерді тіркеуші
Құрастыру: әсерді тіркеуші
  • Құрастыру қарапайым, өйткені сенсорлық қалпақшаны пидің үстіне қою керек (бекітілген болттар сенсорлық қалпақпен қамтамасыз етілген).
  • USB камерасын немесе пи камераны қосуға болады. Оқу құралында pi камерасы қарастырылады және соған сәйкес кодтау жүргізіледі.
  • Жад картасын салыңыз және питон кодын және түйіннің қызылын конфигурациялаңыз (конфигурация мен код келесі қадамдарда қарастырылады)

Жоғарыдағы суретте жалпақ таспалы кабель арқылы pi-ге қосылған пи-камера көрсетілген

4 -қадам: Құрастыру: Автокөлік тақтасындағы әсерді тіркеуші

Құрастыру: Көлік тақтасындағы әсерді тіркеуші
Құрастыру: Көлік тақтасындағы әсерді тіркеуші

Жазғышты монтаждау үшін мен екі жақты таспаны қолдандым, оның артықшылығы - сіздің машинаңызға қайсысы сәйкес келсе, оны әр түрлі күйде оңай ауыстыруға болады.

Қосымша камера көрсетілгендей екі жақты таспаның көмегімен тігінен орнатылады.

Келесі кезекте қуат көзін (10 000 мАч қуат банкі) және дайын интернет байланысын қосу қажет

MQTT қосымшасы үшін Интернет байланысы қажет (MQTT мәліметтері келесі қадамдарда қарастырылған)

5 -қадам: әсерді қалпына келтіруші: жұмыс және қосымшалар

Мәндік қалпақтан акселерация мен гироскоп шикі мәндердің кодта белгіленген шектен асқанын тексеру үшін қолданылады.

Акселерометр: акселерометр x, y & z осінің әрқайсысына әсер ететін тартылыс күшінің (G күші) мөлшерін айтады, егер кез келген ось 1G күшінен асатын болса, жылдам қозғалысты анықтауға болады. (төменге бағытталған ось 1g мәніне ие болатынын ескеріңіз және сәйкесінше питон кодында қарастырылуы керек).

Гироскоп; Гироскоп бұрыштық қозғалысты өлшеу үшін қолданылады, яғни күрт бұрылу кезінде сенсор іске қосылуы мүмкін (кодтағы параметрге байланысты), сондықтан көлікті қатты айналдырған адам ұсталып қалады !!

Белгіленген шекті кез келген активтендіру жарықдиодты матрицада «!» Деп көрсетіледі. қызыл түспен жеделдету үшін, ал жасыл - гироскопты қосу үшін

6 -қадам: Бағдарламалық қамтамасыз етудің сипаттамасы: Қызыл түйін

Node-RED-бұл ағынға негізделген бағдарламалау құралы, оны бастапқыда IBM's Developing Technology Servicesteam әзірледі, енді JS Foundation құрамына кіреді.

Қызыл түйін туралы қосымша ақпаратты мына сілтеме бойынша алуға болады: node-red

Біздің жағдайда біз келесі әрекеттерді орындау үшін node -red қолданамыз

(1) Камера функцияларын іске қосу үшін джойстиктермен әрекеттесу

(2) Автокөлікке әсерді бақылау және соңғы пайдаланушыға ақпаратты MQTT қолдану арқылы жіберу және MQTT арқылы соңғы пайдаланушының пәрмендерін одан әрі қабылдау және pi -де қажетті қосымшаны іске қосу.

(3) Пиді өшіру сияқты кейбір негізгі жұмыстарды орындау

Әрі қарайғы қадамдар қызыл-қызыл нүктеде орындалған ағын диаграммасы туралы толық ақпарат береді

Назар аударыңыз, қызыл ағынды диаграммалар питон кодымен өзара әрекеттеседі, сондықтан соңғы бөлігі питон кодының аспектілерін қамтиды

7-қадам: Қызыл-түйін негіздері

Қызыл түйін негіздері
Қызыл түйін негіздері
Қызыл түйін негіздері
Қызыл түйін негіздері
Қызыл түйін негіздері
Қызыл түйін негіздері

Белгілі бір негізгі қадамдар қызыл-қызыл түймені бастау үшін белгіленген, бірақ иә қызыл-түйін қосымшаларды іске қосу және өңдеу үшін тым қарапайым.

  • Бастапқы түйін-қызыл: https:// localhost: 1880.
  • Pi интернетке қосылған кезде қызыл-түйіннің қосылуы https:// ip address>: 1880

8-қадам: Қызыл-түйін: ағын _1a

Қызыл түйін: ағын _1a
Қызыл түйін: ағын _1a

Flow _1a CSV файлындағы кез келген өзгерістерді бақылайды және өзгерістер негізінде, яғни әсер анықталды, камерада бейнежазба қосулы күйге орнатылады, әрі қарай қолданушыға әсер етілгені туралы интернетте хабарлайды.

9 -қадам: Қызыл түйін: Flow_1b

Қызыл түйін: Flow_1b
Қызыл түйін: Flow_1b

Ағын бойынша, бейнежазбаны кез келген уақытта джойстикті басу арқылы бастауға болады

10 -қадам: Қызыл түйін: Flow_2a

Қызыл түйін: Flow_2a
Қызыл түйін: Flow_2a

Бұл ағын бойынша, кез келген жаңа сурет немесе видео каталогқа сақталғанда/жүктелгенде, ақпарат Интернет арқылы тіркелген пайдаланушыға жіберіледі.

11 -қадам: Қызыл түйін: Flow_2b

Қызыл түйін: Flow_2b
Қызыл түйін: Flow_2b

Бұл ағын негізінен құрылғыны келесі тәртіпте басқару үшін қашықтағы пайдаланушыға арналған

а) өшіру құрылғысы

ә) суретке түсіру

(в) Бейнелер жазу

(d) негізгі кодты бастаңыз (деректер тізбегінің коды - әсерді есептейтін негізгі код)

12 -қадам: Қызыл түйін; Flow_3

Қызыл түйін; Flow_3
Қызыл түйін; Flow_3

Ағын негізгі кодты немесе өшіру құрылғысын іске қосу үшін жергілікті қатынасқа арналған

13 -қадам: MQTT

MQTT (Message Queuing Telemetry Transport) - бұл TCP/IP хаттамасы, онда баспагер мен абонент өзара әрекеттеседі.

Біздің жағдайда Pi - бұл баспагер, ал біздің мобилдік компьютерде орнатылған қосымша жазылушы болады.

Осылайша, кез келген әсердің пайда болуы туралы ақпарат қашықтан пайдаланушыға жіберіледі (жұмыс істейтін интернет байланысы болуы керек)

MQTT туралы қосымша ақпаратты мына сілтемеден алуға болады: MQTT

MQTT қолдануды бастау үшін алдымен тіркелуіміз керек, мен cloudmqtt (www.cloudmqtt.com) қолданған оқулық үшін «сүйкімді мысық» деген тегін жоспар бар, бәрі де осында.

Тіркелгеннен кейін дананы жасаңыз, «pi» деп айтыңыз, содан кейін сіз келесі мәліметтерді аласыз

  • Сервер атауы
  • порт
  • пайдаланушы аты
  • пароль

Жоғарыда айтылғандар мобильді/компьютер арқылы жазылу кезінде қажет

Менің қосымшам үшін Google Play дүкенінен MQTT қосымшасын қолдандым (Android нұсқасы)

14 -қадам: MQTT: жазылушы

MQTT: жазылушы
MQTT: жазылушы

Ұялы телефонда жұмыс істейтін MQTT қосымшасы (Android нұсқасы)

Pi -де анықталған соққы кері қайтарылады

15-қадам: MQTT: Сипаттарды қызыл-түйінмен өңдеу

MQTT: қызыл-қызыл түсті қасиеттерді өңдеу
MQTT: қызыл-қызыл түсті қасиеттерді өңдеу

Қызыл түйін MQTT түйінін таңдағаннан кейін, «Сервер атауы» мен «тақырып» көрсетіледі. Бұл жазылушының соңында бірдей болуы керек.

16 -қадам: Python коды:

Кодтың функционалдығы бекітілген схемаға сәйкес

17 -қадам: Қорытынды код

Питон коды бекітілген

Біздің питон сценарийін терминалдан іске қосу үшін біз оларды chmod +x datalogger.py ретінде орындалатын етіп жасауымыз керек, одан әрі кодтың жоғарғы жағында келесі «shebang» жолының #болуы керек! /usr/bin/python3 (бұл қызыл-түйіннен функцияларды орындау үшін қажет)

№!

сезім = SenseHat ()

csv импорттау

уақыт белгісі = datetime.now ()

кешігу = 5 // кешіктіру деректерді data.csv файлында сақтау үшін анықталған red = (255, 0, 0) жасыл = (0, 255, 0) сары = (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»])

гиро = мағынасы.get_gyroscope_raw ()

sense_impact.append (гиро [«x»]) сезім_импакт.қосылу (гиро [«y»]) сезім_импакт.қосылу (гиро [«z»])

sense_impact қайтару

def Impact (): // әсерді анықтау функциясы #GPIO.setmode (GPIO. BCM) #GPIO.setup (4, GPIO. OUT) үдеу = sense.get_accelerometer_raw () x = үдеу ['x'] y = үдеу ['y'] z = үдеу ['z'] x = abs (x) y = abs (y) z = abs (z)

гиро = мағынасы.get_gyroscope_raw ()

гирокс = гиро [«x»] гиро = гиро [«y»] гироз = гиро [«z»]

гирокс = дөңгелек (гирокс, 2)

гиро = дөңгелек (гиро, 2) гироз = дөңгелек (гироз, 2)

әсер = get_sense_impact ()

егер x> 1.5 немесе y> 1.5 немесе z> 1.5: // мәндер нақты жолдағы итерациядан кейін орнатылса, сәйкесінше әр түрлі типтер мен жүргізу дағдылары үшін ашық түрде өзгеруі мүмкін ('Impact.csv', 'w', newline = ' ') f ретінде: data_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 («!», қызыл) data_writer.writerow (әсер)

elif gyrox> 1.5 немесе gyroy> 1.5 немесе gyroz> 1.5: // мәндер f: data_writer ретінде ашық ('Impact.csv', 'w', newline = '') бұрылыстардың басталу жылдамдығына қарай орнатылады. = жазушы (f) data_writer.writerow (['acc x', 'acc y', 'acc z', 'gyro x', 'gyro y', 'gyro z']) #GPIO.output (4, GPIO. ЖОҒАРЫ) сезім.таза () сезім.шоу -хат («!», Жасыл) data_writer.writerow (әсер)

басқа:

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

def get_sense_data (): // сенсор_мәліметтерден мәндерді жазуға және сақтауға арналған функция sens_data =

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

бағдар = sense.get_orientation ()

sense_data.append (бағдар [«иә»]) sense_data.append (бағдар [«қадам»]) сезім_мәліметтер.

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»])

гиро = мағынасы.get_gyroscope_raw ()

мағына_бағдарламасы

sense_data.append (datetime.now ())

мағынасы_мәліметтерін қайтару

open ('data.csv', 'w', newline = '') f ретінде:

data_writer = жазушы (f)

data_writer.writerow (['temp', 'pres', 'hum', 'yaw', 'pitch', 'roll', 'acc x', 'acc y', 'acc z', 'mag x', ' маг у ',' маг з ',' гиро x ',' гиро у ',' гиро z ',' datetime '])

шындық кезінде:

print (get_sense_data ()) in event.stick.get_events (): # event.action == «pressed» болса, джойстиктің басылғанын тексеріңіз: # Event.direction == «жоғары» болса, қай бағытты тексеріңіз: # сезім.show_letter («U») # Жоғары көрсеткі үдеуі = sense.get_accelerometer_raw () x = үдеу ['x'] y = үдеу ['y'] z = үдеу ['z'] x = дөңгелек (x, 0) y = дөңгелек (у, 0) z = дөңгелек (z, 0)

# Дисплейдің айналуын жаңартыңыз, егер 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 = дөңгелек (t, 1) хабарлама = «T:» + str (t) sense.show_message (хабарлама, text_colour = қызыл, scroll_speed = 0.09) elif event.direction == «төмен»: үдеу = sense.get_accelerometer_raw () x = үдеу ['x'] y = үдеу ['y'] z = үдеу ['z'] x = дөңгелек (x), 0) у = дөңгелек (у, 0) z = дөңгелек (z, 0)

# Дисплейдің айналуын жаңартыңыз, егер 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») # Төменгі көрсеткі сезім.тұтастығы () h = мағынасы. ылғалдылығы () h = дөңгелек (h, 1) хабарлама = «H:» + str (h) sense.show_message (хабарлама, text_colour = жасыл, scroll_speed = 0.09) p = sense.get_pressure () p = дөңгелек (p, 1) хабарлама = «P:» + str (p) sense.show_message (хабарлама, мәтіндік түс = сары, scroll_speed = 0.09)

# elif event.direction == «солға»:

#үдеткіш = sense.get_accelerometer_raw () #x = үдеу ['x'] #y = үдеу ['y'] #z = үдеу ['z'] #x = дөңгелек (x, 0) #y = дөңгелек (y, 0) #z = дөңгелек (z, 0)

#Дисплейдің айналуын жаңартыңыз // қай жаққа жоғары қарай // Қолданылмайды және қызыл -түйінмен басқарылмайды #if x == -1: sense.set_rotation (90) #elif y == 1: sense.set_rotation (270) #elif y == -1: sense.set_rotation (180) # басқасы: sense.set_rotation (0) # sense.show_letter («L») # Сол жақ көрсеткі # элиф оқиғасы.дирекция == «оңға»: # сезім.шоу хаты («K») # Оң жақ көрсеткі # элиф оқиғасы. Бағыт == «орта»: # сезім.таза ()

әсер ету ()

data = get_sense_data ()

dt = деректер [-1] - уақыт белгісі, егер dt.секунд> кешігу: data_writer.writerow (data) timestamp = datetime.now ()

18 -қадам: Тікелей бейнені бақылау

Impact Recorder тірі бейнені бақылау үшін де қолданыла алады, себебі MQTT арқылы кез келген уақытта бейнені қосуға болады

біз бейнелерді ағынмен жіберу үшін VLC ойнатқышын қолданар едік, әдепкі бойынша VLC алдын ала орнатылған, әйтпесе vlc бағдарламасын төмендегідей орнатыңыз.

Желілік ағынды қарау туралы қосымша ақпаратты VLC Network ағыны арқылы алуға болады

Оқығаныңызға рахмет !!

Эффект жазғыштың қолынан келетіні әлдеқайда көп.

Кедергілер картасын жасау кезінде магнит өрісін талдаудың келесі кеңістігін қадағалаңыз

Ұсынылған: