Мазмұны:
- 1 -қадам: Бөлшектер мен керек -жарақтар
- 2 -қадам: Бөлшектердің сипаттамасы: Sense Hat
- 3 -қадам: Жинау: әсерлерді тіркеуші
- 4 -қадам: Құрастыру: Автокөлік тақтасындағы әсерді тіркеуші
- 5 -қадам: әсерді қалпына келтіруші: жұмыс және қосымшалар
- 6 -қадам: Бағдарламалық қамтамасыз етудің сипаттамасы: Қызыл түйін
- 7-қадам: Қызыл-түйін негіздері
- 8-қадам: Қызыл-түйін: ағын _1a
- 9 -қадам: Қызыл түйін: Flow_1b
- 10 -қадам: Қызыл түйін: Flow_2a
- 11 -қадам: Қызыл түйін: Flow_2b
- 12 -қадам: Қызыл түйін; Flow_3
- 13 -қадам: MQTT
- 14 -қадам: MQTT: жазылушы
- 15-қадам: MQTT: Сипаттарды қызыл-түйінмен өңдеу
- 16 -қадам: Python коды:
- 17 -қадам: Қорытынды код
- 18 -қадам: Тікелей бейнені бақылау
Бейне: Көлік құралдарына әсер етуші: 18 қадам (суреттермен)
2024 Автор: John Day | [email protected]. Соңғы өзгертілген: 2024-01-30 10:24
Impact Recorder көлік құралының қозғалысы кезінде немесе тоқтап тұрған кездегі әсерін тіркеуге арналған. Әсерлер дерекқорда оқылым түрінде, сондай -ақ бейне/сурет түрінде сақталады. Қашықтағы қолданушыға нақты уақыт режимінде тексеруге болады, ал қашықтағы пайдаланушы сақталған бейнені қарауға немесе пи камераға қашықтан кіруге және сәйкесінше оқиғаларды қарауға болады..
1 -қадам: Бөлшектер мен керек -жарақтар
(1) Raspberry Pi 3 немесе одан жоғары: есептеу қуаты қажет
(2) Raspberry pi сезімді қалпақ
(3) Raspberry pi камерасы / USB камерасы
(4) Соңғы растрлық кескіні бар жад картасы (қызыл түйінді қолдау керек, соңғы суреттердің барлығы дерлік жасайды)
(5) кем дегенде 2,1 А қуат көзі (мен автокөлікте автономды жұмыс үшін батарея банкін қолдандым)
2 -қадам: Бөлшектердің сипаттамасы: 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
Flow _1a CSV файлындағы кез келген өзгерістерді бақылайды және өзгерістер негізінде, яғни әсер анықталды, камерада бейнежазба қосулы күйге орнатылады, әрі қарай қолданушыға әсер етілгені туралы интернетте хабарлайды.
9 -қадам: Қызыл түйін: Flow_1b
Ағын бойынша, бейнежазбаны кез келген уақытта джойстикті басу арқылы бастауға болады
10 -қадам: Қызыл түйін: Flow_2a
Бұл ағын бойынша, кез келген жаңа сурет немесе видео каталогқа сақталғанда/жүктелгенде, ақпарат Интернет арқылы тіркелген пайдаланушыға жіберіледі.
11 -қадам: Қызыл түйін: Flow_2b
Бұл ағын негізінен құрылғыны келесі тәртіпте басқару үшін қашықтағы пайдаланушыға арналған
а) өшіру құрылғысы
ә) суретке түсіру
(в) Бейнелер жазу
(d) негізгі кодты бастаңыз (деректер тізбегінің коды - әсерді есептейтін негізгі код)
12 -қадам: Қызыл түйін; 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 қосымшасы (Android нұсқасы)
Pi -де анықталған соққы кері қайтарылады
15-қадам: 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 ағыны арқылы алуға болады
Оқығаныңызға рахмет !!
Эффект жазғыштың қолынан келетіні әлдеқайда көп.
Кедергілер картасын жасау кезінде магнит өрісін талдаудың келесі кеңістігін қадағалаңыз
Ұсынылған:
Жүгіру аяқтың массасына әсер етеді: 13 қадам
Жүгіру аяқтың массасына әсер етеді ме: жүгіру аяқтың массасына/мөлшеріне әсер ете ме?
Ақылға әсер ететін 5 Arduino робот машинасы: 11 қадам
Ақылға әсер ететін 5 Arduino робот автокөлігі. Сәлеметсіздер ме, бұл оқулықта біз толық қадамдары, коды мен схемасы бар 2020 жылдың 5 ақылды робот машинасын көреміз. Жоғарғы видеода сіз барлық роботтардың жұмысын көре аласыз. Бұл жобаларда сіз: " Үстел жиегінің алдын алу
Gyro сенсоры мен Nokia 5110 СКД бар «ғарыштық әсер» ойыны: 3 қадам
Gyro сенсоры мен Nokia 5110 LCD көмегімен «ғарыштық әсер» ойыны: менің Тамаготчи қайтыс болғаннан кейін (соңғы жоба) мен уақытты босқа өткізудің жаңа әдісін іздей бастадым. Мен Arduino -да классикалық «Space Impact» ойынын бағдарламалауды шештім. Ойынды қызықты әрі қызықты ету үшін менде гироскоп сенсоры қолданылды
DIY қызықты махаббат жүрек қуатын әсер ететін жарықдиодты шамдар: 8 қадам (суреттермен)
DIY қызықты махаббат жүрек қуатын әсер ететін жарықдиодты шамдар: Бұл құрылым сіздің сүйіктіңізге, әкеңізге, анаңызға, сыныптастарыңызға және жақсы достарыңызға ғажайып сиқырлы қуатты диодты шамдарды қалай жасау керектігін қамтиды. Егер сіз шыдамды болсаңыз, мұны жасау өте оңай. Егер сіз құрылыс жүргізетін болсаңыз, дәнекерлеу тәжірибесін алуды ұсынамын
Жылыжай жобасы (RAS): Біздің плантацияға әсер ететін элементтерді бақылаңыз: 18 қадам (суреттермен)
Жылыжай жобасы (RAS): Біздің плантацияға әсер ететін элементтерді бақылау: Бұл жоба ауаның температурасын, жарықтығы мен ылғалдылығын, сондай -ақ тоғайдың температурасы мен ылғалдылығын бақылауды ұсынады. Ол Actoborad.com веб -сайтында оқуға болатын бұл шараларды қосуды ұсынады, ол үшін біз 4 сенсорды N -ге қосамыз