Агуулгын хүснэгт:

Тээврийн хэрэгслийн цохилт бүртгэгч: 18 алхам (зурагтай)
Тээврийн хэрэгслийн цохилт бүртгэгч: 18 алхам (зурагтай)

Видео: Тээврийн хэрэгслийн цохилт бүртгэгч: 18 алхам (зурагтай)

Видео: Тээврийн хэрэгслийн цохилт бүртгэгч: 18 алхам (зурагтай)
Видео: 125 САМЫХ ИННОВАЦИОННЫХ ЭЛЕКТРОТРАНСПОРТНЫХ И ЛИЧНЫХ ТРАНСПОРТНЫХ СРЕДСТВ 2024, Арваннэгдүгээр
Anonim
Тээврийн хэрэгслийн цохилт бүртгэгч
Тээврийн хэрэгслийн цохилт бүртгэгч

Цохилт бүртгэгч нь тээврийн хэрэгсэл жолоодох эсвэл зогсох үед гарсан нөлөөллийг бүртгэхэд зориулагдсан болно. Нөлөөллийг мэдээллийн баазад унших, видео/зураг хэлбэрээр хадгалдаг. Цохилтын алсын хэрэглэгчийг бодит цаг хугацаанд нь шалгах боломжтой бөгөөд алсын хэрэглэгч хадгалсан видеог үзэх эсвэл pi камер руу алсаас хандах, үйл явдлыг үзэх боломжтой..

Алхам 1: эд анги, дагалдах хэрэгсэл

(1) Raspberry Pi 3 ба түүнээс дээш: Тооцоолох хүч шаардлагатай

(2) Raspberry pi мэдрэмжтэй малгай

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

(4) Хамгийн сүүлийн үеийн raspbian дүрс бүхий санах ойн карт

(5) Хамгийн багадаа 2.1 А цахилгаан хангамж

Алхам 2: Хэсгийн тайлбар: Sense Hat

Хэсгийн тайлбар: Sense Hat
Хэсгийн тайлбар: Sense Hat

Sense HAT нь 8 × 8 RGB LED матрицтай, таван товчлууртай джойстиктой бөгөөд дараах мэдрэгчүүдийг агуулдаг.

  • Гироскоп
  • Хурдасгуур
  • Соронзон хэмжигч
  • Температур
  • Барометр
  • даралт
  • Чийгшил

Мэдрэх малгайтай ажиллах талаархи дэлгэрэнгүй мэдээллийг дараах линкүүдээс авах боломжтой: Sense_Hat

Мэдрэх малгайны API -ийг Sense_hat_API дээр байрлуулсан болно

Мэдрэмжтэй малгай програмчлах кодыг дараагийн алхамуудад авч үзэх болно. Мэдрэмжтэй малгай кодыг дараах хаягаар байрлуулсан симулятор дээр дуурайж болно: Sense-hat симулятор

Алхам 3: Угсрах: Цохилтын бичлэг

Угсрах: Цохилт бүртгэгч
Угсрах: Цохилт бүртгэгч
Угсрах: Цохилт бүртгэгч
Угсрах: Цохилт бүртгэгч
Угсрах: Цохилт бүртгэгч
Угсрах: Цохилт бүртгэгч
Угсрах: Цохилт бүртгэгч
Угсрах: Цохилт бүртгэгч
  • Мэдрэх малгайг пи дээр овоолох шаардлагатай байдаг тул угсрах нь илүү хялбар байдаг (зориулалтын бэхэлгээний боолтыг мэдрэгчтэй малгайгаар хангадаг).
  • USB камер эсвэл pi камерыг холбож болно. Хичээлд pi камерыг авч үзэх бөгөөд үүний дагуу кодчилол хийдэг.
  • Санах ойн картыг оруулаад python код болон зангилааны цэгийг тохируулна уу (тохиргоо ба кодыг цаашдын алхамуудад тусгасан болно)

Дээрх зураг нь хавтгай тууз кабелиар pi руу холбогдсон пи камерыг харуулж байна

Алхам 4: Угсрах: Машины самбар дээрх цохилт бүртгэгч

Угсрах: Машины самбар дээрх цохилт бүртгэгч
Угсрах: Машины самбар дээрх цохилт бүртгэгч

Бичигчийг суурилуулахын тулд би хоёр талт соронзон хальс ашигласан бөгөөд давуу тал нь бичигчийг өөр байрлалд хялбархан өөрчилж болох бөгөөд таны машинд хамгийн тохиромжтой.

Цаашдын камерыг зураг дээр үзүүлсэн шиг босоо байдлаар, хоёр талт соронзон хальс ашиглан суурилуулсан болно.

Дараагийнх нь бэлэн болсон интернет холболтын хамт тэжээлийн эх үүсвэр (10,000 мАч чадалтай банк) холбох явдал юм

MQTT програмыг ашиглахын тулд интернет холболт шаардлагатай болно (MQTT -ийн дэлгэрэнгүй мэдээллийг дараагийн алхамуудад тусгасан болно)

Алхам 5: Нөлөөллийн кодлогч: Ажил ба програмууд

Мэдрэх малгайгаас хурдатгал ба гироскоп ашиглан түүхий утга кодын тогтоосон хязгаараас хэтэрсэн эсэхийг шалгаж болно.

Хурдатгал хэмжигч: Хурдны хэмжигч нь x, y & z тэнхлэг тус бүр дээр ажилладаг таталцлын хүчний (G хүч) хэмжээг хэлдэг. (доош чиглэсэн тэнхлэг нь 1g утгатай байх бөгөөд үүнийг питон кодын дагуу авч үзэх шаардлагатайг анхаарна уу).

Гироскоп; Гироскопыг өнцгийн хөдөлгөөнийг хэмжихэд ашигладаг, өөрөөр хэлбэл огцом эргэх үед мэдрэгч идэвхжиж магадгүй (кодын тохиргооноос хамаарна), ингэснээр машиныг огцом эргүүлж буй хүн баригдах болно.

Тодорхой хязгаарыг идэвхжүүлэхийг LED мэдрэгч малгай дээр мөн "!" Гэж харуулдаг. хурдатгалыг улаанаар, гироскопыг идэвхжүүлэхийн тулд ногооноор

Алхам 6: Програм хангамжийн тайлбар: Улаан цэг

Node-RED бол урсгалд суурилсан програмчлалын хэрэгсэл бөгөөд анх IBM-ийн шинээр гарч ирж буй технологийн үйлчилгээ, одоо JS сангийн нэг хэсэг юм.

Улаан зангилааны талаарх дэлгэрэнгүй мэдээллийг дараах линкээс авах боломжтой: node-red

Бидний хувьд бид node -red ашиглан дараах үйлдлүүдийг хийх болно

(1) Камерын функцийг эхлүүлэхийн тулд джойстиктой харилцах

(2) MQTT -ийг ашиглан автомашинд үзүүлэх нөлөөллийг хянах, эцсийн хэрэглэгчдэд мэдээлэл дамжуулах, MQTT -ээр дамжуулан эцсийн хэрэглэгчийн тушаалыг хүлээн авах, pi дээр шаардлагатай програмыг эхлүүлэх.

(3) Pi -г хаах гэх мэт зарим үндсэн зүйлийг хийх

Цаашдын алхамууд нь зангилаа улаан дээр хэрэгжүүлсэн урсгалын диаграмын талаархи дэлгэрэнгүй мэдээллийг өгдөг

Зангилааны улаан урсгалын диаграм нь питон кодтой харилцан үйлчилдэг тул сүүлийн хэсэг нь питон кодын талыг хамардаг болохыг анхаарна уу

Алхам 7: Зангилааны улаан өнгийн үндсэн ойлголтууд

Улаан зангилааны үндэс
Улаан зангилааны үндэс
Улаан зангилааны үндэс
Улаан зангилааны үндэс
Улаан зангилааны үндэс
Улаан зангилааны үндэс

Node-red-ийг хурдан эхлүүлэхийн тулд зарим үндсэн алхмуудыг тодруулсан байдаг, гэхдээ зангилааны улаан нь програмыг эхлүүлэх, боловсруулахад хэтэрхий энгийн байдаг.

  • Node-red-ийг эхлүүлж байна: https:// localhost: 1880.
  • Pi интернетэд холбогдсон үед Node-red-ийг эхлүүлж байна 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: Улаан зангилаа; Урсгал_3

Улаан зангилаа; Урсгал_3
Улаан зангилаа; Урсгал_3

Гол код эсвэл унтраах төхөөрөмжийг эхлүүлэхийн тулд урсгал нь орон нутгийн хандалтанд зориулагдсан болно

Алхам 13: MQTT

MQTT (Message Queuing Telemetry Transport) нь нийтлэгч ба захиалагч харилцан үйлчлэлцдэг TCP/IP протокол юм.

Манай тохиолдолд Pi бол хэвлэгч, харин манай moblile/PC -д суулгасан програм нь захиалагч байх ёстой.

Ийм байдлаар аливаа нөлөөллийг бий болгохын тулд мэдээллийг алсаас хэрэглэгч рүү дамжуулдаг (ажиллаж байгаа интернет холболт заавал байх ёстой).

MQTT -ийн талаарх дэлгэрэнгүй мэдээллийг дараах линкээс авах боломжтой: MQTT

MQTT -ийг ашиглаж эхлэхийн тулд бид эхлээд бүртгүүлэх хэрэгтэй, би cloudmqtt (www.cloudmqtt.com) ашигласан хичээлд "хөөрхөн муур" гэсэн үнэгүй төлөвлөгөө байгаа бөгөөд энэ нь бүгд л юм.

Бүртгүүлсний дараа жишээ үүсгэн "pi" гэж хэлсний дараа та дараах мэдээллийг авах болно

  • Серверийн нэр
  • боомт
  • хэрэглэгчийн нэр
  • нууц үг

Мобайл/компьютерээр дамжуулан захиалга өгөхдөө дээр дурдсан зүйлс шаардлагатай болно

Миний програмын хувьд би google play store -аас MQTT програмыг ашигласан (Android хувилбар)

Алхам 14: MQTT: Захиалагч

MQTT: Захиалагч
MQTT: Захиалагч

Гар утсан дээр ажилладаг MQTT програм (Android хувилбар)

Пи дээр илэрсэн цохилтыг буцааж дамжуулдаг

Алхам 15: MQTT: Properties-ийг зангилааны улаан өнгөөр засварлах

MQTT: Үл хөдлөх хөрөнгийг зангилаа улаан хэлбэрээр засварлах
MQTT: Үл хөдлөх хөрөнгийг зангилаа улаан хэлбэрээр засварлах

MQTT зангилаа, "Серверийн нэр" болон "сэдэв" -ийг сонгосны дараа зангилаа улаан өнгөтэй байна. Энэ нь захиалагчийн төгсгөлд ижил байх ёстой.

Алхам 16: Python код:

Кодын функц нь хавсаргасан схемийн дагуу хийгддэг

Алхам 17: Эцсийн код

Питоны кодыг хавсаргасан болно

Питон скриптийг терминалаас ажиллуулахын тулд бид тэдгээрийг chmod +x datalogger.py хэлбэрээр ажиллуулах ёстой бөгөөд кодын дээд хэсэгт дараах "shebang" мөр #байх ёстой. /usr/bin/python3 (энэ нь зангилааны улаанаас функцийг гүйцэтгэхийн тулд шаардлагатай)

#!/usr/bin/python3 // shebang linefrom_hat импортоор

мэдрэмж = SenseHat ()

csv импортлох

timestamp = datetime.now ()

delay = 5 // хоцрогдол нь өгөгдлийг data.csv файлд хадгалахаар тодорхойлогдсон улаан = (255, 0, 0) ногоон = (0, 255, 0) шар = (255, 255, 0)

#GPIO.setmode (GPIO. BCM)

#GPIO. тохиргоо (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 = мэдрэмж.get_gyroscope_raw ()

мэдрэх_үйлдүүлэх

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)

gyro = мэдрэмж.get_gyroscope_raw ()

гирокс = гиро ["x"] гирой = гиро ["y"] гироз = гиро ["z"]

гирокс = дугуй (гирокс, 2)

гирой = дугуй (гирой, 2) гироз = дугуй (гироз, 2)

нөлөө = get_sense_impact ()

Хэрэв x> 1.5 эсвэл y> 1.5 эсвэл z> 1.5: // бодит зам дээрх давталтын дараа утгыг тохируулсан бол түүнийг өөр өөр төрөл, жолоодлогын ур чадварын дагуу өөрчилж болно ('effect.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 ("!", red) data_writer.writerow (цохилт)

elif gyrox> 1.5 эсвэл gyroy> 1.5 or 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. HIGH) мэдрэмж.тухай () мэдрэмж.шоу_сах бичиг ("!", Ногоон) өгөгдөл_зохиогч.зохиогч (нөлөөлөл)

өөр:

# GPIO.output (4, GPIO. LOW) мэдрэмж. Ойлгомжтой ()

def get_sense_data (): // мэдрэгчийн утгыг бүртгэх, хадгалах функц sense_data =

мэдрэх_ өгөгдөл.хавах (мэдрэмж.гарт температур ()) мэдрэх_ата

чиг баримжаа = мэдрэмж.get_orientation ()

мэдрэмж_ өгөгдөл. хавсаргах (чиг баримжаа ["эвхэх"]) мэдрэмж_ өгөгдөл.хавах (чиг баримжаа ["давирхай"]) мэдрэмж_ өгөгдөл. оруулах (чиг баримжаа ["өнхрөх"])

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"]) мэдрэмж_ өгөгдөл.авах (mag ["y"]) мэдрэмж_ өгөгдөл.хавах (mag ["z"])

gyro = мэдрэмж.get_gyroscope_raw ()

мэдрэх_ өгөгдөл. хавсрах (гиро ["x"]) мэдрэмжийн_ өгөгдөл.

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', ' mag y ',' mag z ',' gyro x ',' gyro y ',' gyro z ',' datetime '])

үнэн байхад:

print (get_sense_data ()) in event for sense.stick.get_events (): # Event.action == "дарагдсан" тохиолдолд joystick дарагдсан эсэхийг шалгаарай: # Event.direction == "up" бол аль чиглэлийг шалгана уу: # утга.show_letter ("U") # Дээд сумны хурдатгал = мэдрэмж.get_accelerometer_raw () x = хурдатгал ['x'] y = хурдатгал ['y'] z = хурдатгал ['z'] x = дугуй (x, 0) y = дугуй (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 = round (t, 1) message = "T:" + str (t) sense.show_message (message, text_colour = улаан, scroll_speed = 0.09) elif event.direction == "down": acceleration = sense.get_accelerometer_raw () x = acceleration ['x'] y = acceleration ['y'] z = acceleration ['z'] x = round (x), 0) y = дугуй (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) өөр: sense.set_rotation (0) # sense.show_letter ("D") # Доош сум мэдрэх.тогт () h = мэдрэмж.get_humidity () h = дугуй (h, 1) message = "H:" + str (h) утга.шоу шар, scroll_speed = 0.09)

# elif event.direction == "зүүн":

#хурдатгал = мэдрэмж.жагсуур хэмжигч_рав () #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) #else: sense.set_rotation (0) # sense.show_letter ("L") # Зүүн сум # elif event.direction == "баруун": # sense.show_letter ("K") # Баруун сум # elif event.direction == "дунд": # sense.clear ()

цохилт ()

өгөгдөл = get_sense_data ()

dt = өгөгдөл [-1] - dt.seconds> саатал бол цаг хугацааны тамга: data_writer.writerow (data) timestamp = datetime.now ()

Алхам 18: Шууд видеог хянах

Impact Recorder -ийг шууд видеог хянахад ашиглаж болно, учир нь MQTT -ээр дамжуулан видеог хүссэн үедээ хаана ч эхлүүлж болно

Бид видео дамжуулахын тулд VLC тоглуулагчийг ашиглах болно, хамгийн сүүлд raspbian-д VLC-ийг урьдчилан суулгасан болно, өөрөөр бол доорх байдлаар vlc суулгаарай.

Сүлжээний урсгалыг үзэх талаархи нэмэлт мэдээллийг VLC Network урсгалаар дамжуулан авах боломжтой

Уншсанд баярлалаа!!

Цохилтын бичлэг хийж чадах илүү их зүйл бий.

Саад бэрхшээлийн зураглалыг хийхдээ соронзон орны шинжилгээ хийх дараагийн орон зайг анхаарч үзээрэй

Зөвлөмж болгож буй: