Სარჩევი:

სატრანსპორტო საშუალებების ზემოქმედების ჩამწერი: 18 ნაბიჯი (სურათებით)
სატრანსპორტო საშუალებების ზემოქმედების ჩამწერი: 18 ნაბიჯი (სურათებით)

ვიდეო: სატრანსპორტო საშუალებების ზემოქმედების ჩამწერი: 18 ნაბიჯი (სურათებით)

ვიდეო: სატრანსპორტო საშუალებების ზემოქმედების ჩამწერი: 18 ნაბიჯი (სურათებით)
ვიდეო: სატრანსპორტო საშუალების ნარკოტიკული ზემოქმედების ქვეშ მართვა დღეიდან პატიმრობით დაისჯება 2024, ნოემბერი
Anonim
სატრანსპორტო საშუალებების ზემოქმედების ჩამწერი
სატრანსპორტო საშუალებების ზემოქმედების ჩამწერი

ზემოქმედების ჩამწერი განკუთვნილია ავტომობილის მართვისას ან სტაციონარში ავტომობილისათვის ზემოქმედების აღსაწერად. ზემოქმედება მონაცემთა ბაზაში ინახება წაკითხვის, ასევე ვიდეოს/სურათის სახით. ზემოქმედების შედეგად დისტანციური მომხმარებლის გადამოწმება შესაძლებელია რეალურ დროში, ხოლო დისტანციურ მომხმარებელს შეუძლია უყუროს შენახულ ვიდეოს ან მიიღოს დისტანციური წვდომა პი კამერაზე და შესაბამისად უყუროს მოვლენებს რა

ნაბიჯი 1: ნაწილები და აქსესუარები

(1) ჟოლო Pi 3 ან უკეთესი: საჭიროა გამოთვლითი ძალა

(2) ჟოლოს პი გრძნობის ქუდი

(3) Raspberry pi კამერა / USB კამერა

(4) მეხსიერების ბარათი უახლესი რასპბური გამოსახულებით (მხარს უჭერს წითელი კვანძი, თითქმის ყველა უახლესი სურათი აკეთებს)

(5) კვების წყარო მინიმუმ 2.1 ა (მე გამოვიყენე ბატარეის ბანკი მანქანაში დამოუკიდებელი მუშაობისთვის)

ნაბიჯი 2: ნაწილების აღწერა: გრძნობადი ქუდი

ნაწილების აღწერა: გრძნობადი ქუდი
ნაწილების აღწერა: გრძნობადი ქუდი

Sense HAT– ს აქვს 8 × 8 RGB LED მატრიცა, ხუთ ღილაკიანი ჯოისტიკი და მოიცავს შემდეგ სენსორებს:

  • გიროსკოპი
  • აქსელერომეტრი
  • მაგნიტომეტრი
  • ტემპერატურა
  • ბარომეტრიული
  • წნევა
  • ტენიანობა

გრძნობადი ქუდით მუშაობის შესახებ დამატებითი ინფორმაცია შეიძლება მიიღოთ შემდეგი ბმულებიდან: Sense_Hat

გრძნობის ქუდის API განთავსებულია მისამართზე: Sense_hat_API

გრძნობადი პროგრამირების კოდი დაფარულია შემდგომ საფეხურებში. გრძნობის ქუდის კოდის სიმულაცია ასევე შესაძლებელია სიმულატორზე, რომელსაც უმასპინძლებს: Sense-hat სიმულატორი

ნაბიჯი 3: შეკრება: ზემოქმედების ჩამწერი

აწყობა: ზემოქმედების ჩამწერი
აწყობა: ზემოქმედების ჩამწერი
აწყობა: ზემოქმედების ჩამწერი
აწყობა: ზემოქმედების ჩამწერი
აწყობა: ზემოქმედების ჩამწერი
აწყობა: ზემოქმედების ჩამწერი
აწყობა: ზემოქმედების ჩამწერი
აწყობა: ზემოქმედების ჩამწერი
  • შეკრება უფრო მარტივია, რადგან გრძნობის ქუდი უნდა იყოს დადებული pi- ზე (სამონტაჟო ჭანჭიკები უზრუნველყოფილია გრძნობის ქუდით).
  • USB კამერა ან pi კამერა შეიძლება იყოს დაკავშირებული. სახელმძღვანელოში pi კამერა განიხილება და შესაბამისად კოდირებაც იგივე ხდება.
  • ჩადეთ მეხსიერების ბარათი და დააკონფიგურირეთ პითონის კოდი და კვანძი წითელი (კონფიგურაცია და კოდი დაფარულია შემდგომ ნაბიჯებში)

ზემოთ მოყვანილი სურათი გვიჩვენებს pi- კამერას, რომელიც დაკავშირებულია ბრტყელი ლენტის კაბელის საშუალებით pi- სთან

ნაბიჯი 4: შეკრება: ზემოქმედების ჩამწერი Dash მანქანაზე

აწყობა: ზემოქმედების ჩამწერი მანქანის დაფაზე
აწყობა: ზემოქმედების ჩამწერი მანქანის დაფაზე

ჩამწერის დასაყენებლად, მე გამოვიყენე ორმხრივი ლენტი, უპირატესობა ის არის, რომ ჩამწერი შეიძლება ადვილად გადაადგილდეს სხვადასხვა პოზიციაზე, რაც საუკეთესოდ მოერგება თქვენს მანქანას.

შემდგომი კამერა დამონტაჟებულია ვერტიკალურად, როგორც ნაჩვენებია, იმავე ორმაგი გვერდითი ლენტის გამოყენებით, შემდეგი არის დენის წყაროს (10 000 mAH დენის ბანკის) დაკავშირება მზა ინტერნეტ კავშირთან ერთად

MQTT პროგრამისთვის საჭიროა ინტერნეტ კავშირი (MQTT– ის დეტალები მოცემულია შემდგომ ნაბიჯებში)

ნაბიჯი 5: Impact Recoder: სამუშაო და პროგრამები

გრძნობის ქუდიდან, აჩქარება და გიროსკოპი გამოიყენება იმის შესამოწმებლად, არის თუ არა ნედლი ღირებულებები კოდში დადგენილი ლიმიტის მიღმა.

ამაჩქარებელი: ამაჩქარებელი აჩვენებს გრავიტაციული ძალის (G- ძალის) რაოდენობას, რომელიც მოქმედებს თითოეულ x, y & z ღერძზე, თუ რომელიმე ღერძი ზომავს 1G- ზე მეტ ძალას, მაშინ შეიძლება გამოვლინდეს სწრაფი მოძრაობა. (გთხოვთ გაითვალისწინოთ, რომ ქვემოთ მიმართული ღერძი ექნება 1 გ მნიშვნელობას და შესაბამისად უნდა იქნას გათვალისწინებული პითონის კოდში).

გიროსკოპი; გიროსკოპი გამოიყენება კუთხის მოძრაობის გასაზომად, ანუ მკვეთრი შემობრუნების დროს სენსორი შეიძლება გააქტიურდეს (დამოკიდებულია კოდში მითითებულ პარამეტრებზე), ასე რომ, ადამიანი, რომელიც მკვეთრად ატრიალებს მანქანას, დაიჭერს !!

მითითებული ლიმიტის ნებისმიერი გააქტიურება ასევე ნაჩვენებია გრძნობის ქუდის LED მატრიცაზე როგორც "!" წითელი აჩქარებისათვის და მწვანე გიროსკოპის გააქტიურებისათვის

ნაბიჯი 6: პროგრამული უზრუნველყოფის აღწერა: წითელი კვანძი

Node-RED არის ნაკადზე დაფუძნებული პროგრამირების ინსტრუმენტი, რომელიც თავდაპირველად შემუშავებულია IBM– ის განვითარებადი ტექნოლოგიური სერვისის გუნდის მიერ და ახლა JS ფონდის ნაწილია.

კვანძის წითელზე მეტი ინფორმაციის მიღება შესაძლებელია შემდეგი ბმულის საშუალებით: კვანძი-წითელი

ჩვენი შემთხვევისთვის ჩვენ ვიყენებთ node -red შემდეგ აქტივობებს

(1) ჯოისტიკებთან ურთიერთობა კამერის ფუნქციების დასაწყებად

(2) ავტომობილზე ზემოქმედების მონიტორინგი და ინფორმაციის საბოლოო მომხმარებლისათვის გადაცემა MQTT– ის გამოყენებით და შემდგომი მომხმარებლის ბრძანებების შემდგომი მიღებით MQTT– ით და საჭირო პროგრამის დაწყებით pi– ზე

(3) ზოგიერთი ძირითადი მასალის შესრულება, როგორიცაა პი გამორთვა

შემდგომი ნაბიჯები იძლევა დეტალურ ინფორმაციას ნაკად-წითელზე შესრულებული ნაკადის დიაგრამისთვის

გთხოვთ გაითვალისწინოთ, რომ კვანძ-წითელი ნაკადის დიაგრამები ურთიერთქმედებენ პითონის კოდთან, შესაბამისად, ეს უკანასკნელი ნაწილი მოიცავს პითონის კოდის ასპექტებს

ნაბიჯი 7: კვანძ-წითელი საფუძვლები

კვანძ-წითელი საფუძვლები
კვანძ-წითელი საფუძვლები
კვანძ-წითელი საფუძვლები
კვანძ-წითელი საფუძვლები
კვანძ-წითელი საფუძვლები
კვანძ-წითელი საფუძვლები

ზოგიერთი ძირითადი ნაბიჯი მონიშნულია იმისათვის, რომ დაიწყება კვანძი-წითელი ციმციმით, მაგრამ დიახ, კვანძი-წითელი ძალიან მარტივია პროგრამების დასაწყებად და შემუშავებისთვის.

  • საწყისი კვანძი-წითელი: https:// localhost: 1880.
  • იწყება კვანძი-წითელი როდესაც pi არის დაკავშირებული ინტერნეტთან https:// ip მისამართი>: 1880

ნაბიჯი 8: წითელი კვანძი: ნაკადი _1 ა

კვანძი-წითელი: ნაკადი _1 ა
კვანძი-წითელი: ნაკადი _1 ა

Flow _1a, მონიტორინგს უწევს CSV ფაილში არსებულ ნებისმიერ ცვლილებას და ცვლილებების საფუძველზე, ანუ გამოვლენილი ზემოქმედება, კამერის ვიდეო გადაღება ჩართულია რეჟიმში და შემდგომ მომხმარებელს ეცნობა ინტერნეტით, რომ ზემოქმედება მოხდა

ნაბიჯი 9: წითელი კვანძი: Flow_1b

წითელი კვანძი: Flow_1b
წითელი კვანძი: Flow_1b

აღნიშნულ ნაკადში ვიდეოჩანაწერის დაწყება შესაძლებელია ნებისმიერ დროს ჯოისტიკის დაჭერით

ნაბიჯი 10: წითელი კვანძი: Flow_2a

კვანძი წითელი: ნაკადი_2 ა
კვანძი წითელი: ნაკადი_2 ა

აღნიშნულ ნაკადში, როდესაც რაიმე ახალი სურათი ან ვიდეო ინახება/იტვირთება დირექტორიაში, ინფორმაცია გადაეცემა რეგისტრირებულ მომხმარებელს ინტერნეტით

ნაბიჯი 11: წითელი კვანძი: Flow_2b

წითელი კვანძი: Flow_2b
წითელი კვანძი: Flow_2b

ეს ნაკადი პირველ რიგში შექმნილია დისტანციური მომხმარებლისთვის, რათა გააკონტროლოს მოწყობილობა შემდეგი წესით

(ა) გამორთვის მოწყობილობა

(ბ) სურათების გადაღება

(გ) ვიდეოების ჩაწერა

(დ) ძირითადი კოდის დაწყება (datalogger კოდი არის მთავარი კოდი, რომელიც ითვლის ზემოქმედებას)

ნაბიჯი 12: წითელი კვანძი; ნაკადი_3

კვანძი წითელი; ნაკადი_3
კვანძი წითელი; ნაკადი_3

ნაკადი განკუთვნილია ადგილობრივი წვდომისათვის, რათა დაიწყოს ძირითადი კოდი ან გამორთვის მოწყობილობა

ნაბიჯი 13: MQTT

MQTT (Message Queuing Telemetry Transport) არის TCP/IP პროტოკოლი, სადაც გამომცემელი და აბონენტი ურთიერთობენ.

ჩვენს შემთხვევაში Pi არის გამომცემელი, ხოლო აბონენტი იქნება ჩვენს მობილურ/კომპიუტერში დაინსტალირებული პროგრამა.

ამ გზით ნებისმიერი ზემოქმედების წარმოქმნისას, ინფორმაცია დისტანციურად გადაეცემა მომხმარებელს (საჭიროა ინტერნეტ კავშირი)

MQTT- ის შესახებ დამატებითი ინფორმაციის მიღება შესაძლებელია შემდეგი ბმულიდან: MQTT

MQTT– ის გამოყენების დასაწყებად, ჩვენ ჯერ უნდა დარეგისტრირდეთ, გაკვეთილისთვის მე გამოვიყენე cloudmqtt (www.cloudmqtt.com), არის უფასო გეგმა "საყვარელი კატის" ქვეშ, ეს ყველაფერი.

რეგისტრაციის შემდეგ შექმენით მაგალითი თქვით "pi", რის შემდეგაც თქვენ მიიღებთ შემდეგ დეტალებს

  • Სერვერის სახელი
  • პორტი
  • მომხმარებლის სახელი
  • პაროლი

ზემოაღნიშნული საჭიროა მობილური/კომპიუტერის საშუალებით გამოწერისას

ჩემი აპლიკაციისთვის მე გამოვიყენე MQTT პროგრამა google play store– დან (Android ვერსია)

ნაბიჯი 14: MQTT: აბონენტი

MQTT: გამომწერი
MQTT: გამომწერი

MQTT პროგრამა მუშაობს მობილურზე (Android ვერსია)

პიზე აღმოჩენილი ზემოქმედება უკან გადადის

ნაბიჯი 15: MQTT: თვისებების რედაქტირება კვანძ-წითელში

MQTT: თვისებების რედაქტირება წითელ კვანძში
MQTT: თვისებების რედაქტირება წითელ კვანძში

კვანძ-წითელში MQTT კვანძის არჩევის შემდეგ უნდა აღინიშნოს "სერვერის სახელი" და "თემა".ეს უნდა იყოს იგივე აბონენტის ბოლოს

ნაბიჯი 16: პითონის კოდი:

კოდის ფუნქციონირება მოცემულია თანდართული დიაგრამის მიხედვით

ნაბიჯი 17: საბოლოო კოდი

პითონის კოდი თან ერთვის

იმისათვის, რომ ჩვენი პითონის სკრიპტი გაშვებული იყოს ტერმინალიდან, ჩვენ უნდა შევასრულოთ ისინი როგორც chmod +x datalogger.py, ვიდრე შემდგომ კოდის ზედა ნაწილი უნდა შეიცავდეს შემდეგ "shebang" სტრიქონს #! /usr/bin/python3 (ეს საჭიროა ისე, რომ შეასრულოს ფუნქციები წითელი კვანძიდან)

#!/usr/bin/python3 // shebang linefrom sense_hat import SenseHat from datetime import importet datetime from csv import მწერალი იმპორტი RPi. GPIO როგორც GPIO დროიდან იმპორტი ძილის

გრძნობა = SenseHat ()

csv იმპორტი

დროის ნიშნული = datetime.now ()

დაგვიანებით = 5 // დაგვიანებით განისაზღვრება მონაცემების შენახვა მონაცემებში. csv ფაილი წითელი = (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"])

gyro = sense.get_gyroscope_raw ()

sense_impact.append (gyro ["x"]) sense_impact.append (gyro ["y"]) sense_impact.append (gyro ["z"])

დააბრუნე გრძნობა_მოქმედება

def ndik (): // ფუნქცია ზემოქმედების დასადგენად 'y'] z = აჩქარება ['z'] x = abs (x) y = abs (y) z = abs (z)

gyro = sense.get_gyroscope_raw ()

gyrox = gyro ["x"] gyroy = gyro ["y"] gyroz = gyro ["z"]

გიროქსი = მრგვალი (გიროქსი, 2)

gyroy = მრგვალი (gyroy, 2) gyroz = მრგვალი (gyroz, 2)

ზემოქმედება = მიიღეთ_გრძნობიარე_მოქმედება ()

თუ 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 გამომავალი (4, GPIO. HIGH) sense.clear () sense.show_letter ("!", წითელი) data_writer.writerow (გავლენა)

elif gyrox> 1.5 ან gyroy> 1.5 ან gyroz> 1.5: // მნიშვნელობები დადგენილია იმ სიჩქარის გათვალისწინებით, რომლითაც ბრუნვები იწყება ღია ("ndik. csv", "w", newline = ") როგორც f: data_writer = მწერალი (ვ) 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 ("!", Green) data_writer.writerow (გავლენა)

სხვა:

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

def get_sense_data (): // ფუნქცია სენსორული მნიშვნელობების ჩაწერასა და შესანახად =

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

ორიენტაცია = გრძნობა. მიიღეთ_ორიენტაცია ()

sense_data.append (ორიენტაცია ["yaw"]) 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"])

gyro = sense.get_gyroscope_raw ()

sense_data.append (gyro ["x"]) sense_data.append (gyro ["y"]) sense_data.append (gyro ["z"])

sense_data.append (datetime.now ())

გრძნობის_მონაცემების დაბრუნება

ღია ("data.csv", "w", newline = ") როგორც f:

data_writer = მწერალი (ვ)

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

მართალია:

ამობეჭდვა (get_sense_data ()) მოვლენისთვის sense.stick.get_events (): # შეამოწმეთ ჯოისტიკი დაჭერილი იყო თუ event.action == "დაპრესილი": # შეამოწმეთ თუ რომელი მიმართულებაა მოვლენა. მიმართულება == "ზემოთ": # გრძნობა. ჩვენება_წერილი ("U") # ისრის ზემოთ აჩქარება = გრძნობა. მიიღეთ_ჩქარეთა მეტრო () 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 = red, scroll_speed = 0.09) elif event.direction == "down": acceleration = sense.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.show_letter ("D") # Down arrow sense.clear () h = sense.get_humidity () h = round (h, 1) message = "H:" + str (თ) გრძნობა. ჩვენება_ შეტყობინება (შეტყობინება, ტექსტი_ფერი = მწვანე, გადახვევა_ჩქარება = 0.09) p = გრძნობა. მიღება_პრესა () p = მრგვალი (p, 1) შეტყობინება = "P:" + str (p) sense.show_message (შეტყობინება, ტექსტი_ფერი = ყვითელი, გადახვევის სიჩქარე = 0.09)

# elif event.direction == "მარცხნივ":

#აჩქარება = გრძნობა. მიიღეთ_ჩქელერომეტრი_რა () #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.show_letter ("L") # მარცხენა ისარი # elif event.direction == "right": # sense.show_letter ("K") # მარჯვენა ისარი # elif event.direction == "შუა": # sense.clear ()

გავლენა()

მონაცემები = get_sense_data ()

dt = data [-1] - დროის ნიშნული თუ dt.seconds> დაგვიანებით: data_writer.writerow (მონაცემები) timestamp = datetime.now ()

ნაბიჯი 18: ცოცხალი ვიდეოს მონიტორინგი

ზემოქმედების ჩამწერი ასევე შეიძლება გამოყენებულ იქნას ცოცხალი ვიდეოს მონიტორინგისთვის, რადგან ვიდეო შეიძლება დაიწყოს ნებისმიერ დროს ნებისმიერ ადგილას, MQTT საშუალებით

ჩვენ ვიყენებდით VLC პლეერს ვიდეოების გადასაცემად, სტანდარტულად უახლეს raspbian– ში VLC წინასწარ არის დაინსტალირებული, სხვაგვარად დააინსტალირეთ vlc როგორც ქვემოთ

მეტი ინფორმაცია ქსელის ნაკადის სანახავად შეგიძლიათ მიიღოთ VLC ქსელის ნაკადის საშუალებით

გმადლობთ რომ კითხულობთ !!

გაცილებით მეტი გავლენის ჩამწერი შეუძლია..

ფრთხილად იყავით მომდევნო სივრცეში მაგნიტური ველის ანალიზისთვის დაბრკოლებების შედგენისას

გირჩევთ: