Mục lục:

Máy ghi tác động cho xe: 18 bước (có hình ảnh)
Máy ghi tác động cho xe: 18 bước (có hình ảnh)

Video: Máy ghi tác động cho xe: 18 bước (có hình ảnh)

Video: Máy ghi tác động cho xe: 18 bước (có hình ảnh)
Video: HƯỚNG DẪN NHIẾP ẢNH: ISO, KHẨU ĐỘ, TỐC ĐỘ MÀN TRẬP 2024, Tháng mười một
Anonim
Máy ghi tác động cho xe cộ
Máy ghi tác động cho xe cộ

Máy ghi tác động được thiết kế để ghi lại tác động liên quan đến xe khi đang lái xe hoặc đứng yên. Các tác động được lưu trữ trong cơ sở dữ liệu dưới dạng các bài đọc cũng như video / hình ảnh..

Bước 1: Bộ phận & phụ kiện

(1) Raspberry Pi 3 trở lên: Yêu cầu sức mạnh tính toán

(2) Mũ giác quan Raspberry pi

(3) Máy ảnh Raspberry Pi / Máy ảnh Usb

(4) Thẻ nhớ có hình ảnh raspbian mới nhất (Nên hỗ trợ nút màu đỏ, hầu như mọi hình ảnh mới nhất đều có)

(5) Nguồn điện ít nhất 2,1 A (tôi đã sử dụng pin dự phòng để hoạt động độc lập trên ô tô)

Bước 2: Mô tả bộ phận: Mũ giác quan

Mô tả bộ phận: Mũ giác quan
Mô tả bộ phận: Mũ giác quan

Sense HAT có ma trận LED RGB 8 × 8, cần điều khiển năm nút và bao gồm các cảm biến sau:

  • Con quay hồi chuyển
  • Gia tốc kế
  • Từ kế
  • Nhiệt độ
  • Khí áp
  • sức ép
  • Độ ẩm

Có thể lấy thêm thông tin về cách làm việc với nón giác quan từ các liên kết sau: Sense_Hat

API cho nón kết được lưu trữ tại: Sense_hat_API

Mã cho lập trình mũ giác quan được đề cập trong các bước sau. Mã Sense hat cũng có thể được mô phỏng trên một trình mô phỏng được lưu trữ tại: Sense-hat simulator

Bước 3: Lắp ráp: Máy ghi tác động

Lắp ráp: Máy ghi tác động
Lắp ráp: Máy ghi tác động
Lắp ráp: Máy ghi tác động
Lắp ráp: Máy ghi tác động
Lắp ráp: Máy ghi tác động
Lắp ráp: Máy ghi tác động
Lắp ráp: Máy ghi tác động
Lắp ráp: Máy ghi tác động
  • Việc lắp ráp đơn giản hơn vì nón giác cần phải được xếp chồng lên số pi (các chốt gắn được chỉ định được cung cấp cùng với nón giác).
  • Có thể kết nối máy ảnh USB hoặc máy ảnh pi. Trong hướng dẫn này, máy ảnh pi được xem xét và do đó việc mã hóa được thực hiện cho giống nhau.
  • Cắm thẻ nhớ và định cấu hình mã python và mã nút (cấu hình và mã được trình bày trong các bước tiếp theo)

Hình trên cho thấy máy ảnh pi được kết nối thông qua cáp ruy-băng dẹt với pi

Bước 4: Lắp ráp: Máy ghi tác động trên Bảng điều khiển của ô tô

Lắp ráp: Máy ghi tác động trên Bảng điều khiển của ô tô
Lắp ráp: Máy ghi tác động trên Bảng điều khiển của ô tô

Để gắn đầu ghi, tôi đã sử dụng băng dính hai mặt, ưu điểm là đầu ghi có thể dễ dàng dịch chuyển ở các vị trí khác nhau, tùy theo vị trí nào phù hợp nhất với xe của bạn.

Máy ảnh khác được gắn theo chiều dọc như hình minh họa, sử dụng cùng một băng hai mặt, Tiếp theo là kết nối nguồn điện (10, 000 mAH dự phòng) cùng với kết nối internet sẵn sàng

Cần có kết nối Internet cho ứng dụng MQTT (chi tiết về MQTT được trình bày trong các bước tiếp theo)

Bước 5: Bộ ghi tác động: Làm việc & Ứng dụng

Từ chiếc mũ giác quan, gia tốc và con quay hồi chuyển được sử dụng để kiểm tra xem các giá trị thô có vượt quá giới hạn đã đặt trong mã hay không.

Gia tốc kế: Gia tốc kế cho biết lượng lực hấp dẫn (lực G) tác động lên mỗi trục x, y & z, nếu có trục nào đo lực nhiều hơn 1G thì có thể phát hiện chuyển động nhanh hơn. (xin lưu ý trục trỏ xuống sẽ có giá trị 1g và cần được xem xét cho phù hợp trong mã python).

Con quay hồi chuyển; Con quay hồi chuyển được sử dụng để đo chuyển động theo góc, tức là trong khi rẽ ngoặt, cảm biến có thể được kích hoạt (tùy thuộc vào cài đặt trong mã), vì vậy một người quay mạnh xe sẽ bị bắt !!

Bất kỳ kích hoạt nào của giới hạn đã đặt cũng được hiển thị trên ma trận LED mũ giác quan dưới dạng "!" màu đỏ để tăng tốc và màu xanh lá cây để kích hoạt con quay hồi chuyển

Bước 6: Mô tả phần mềm: Node Red

Node-RED là một công cụ lập trình dựa trên luồng, ban đầu được phát triển bởi IBM’s Emerging Technology Servicesteam và hiện là một phần của JS Foundation.

Có thể lấy thêm thông tin về nút đỏ qua liên kết sau: nút đỏ

Đối với trường hợp của chúng tôi, chúng tôi sẽ sử dụng node -red cho các hoạt động sau

(1) Tương tác với các cần điều khiển để bắt đầu các chức năng của máy ảnh

(2) Giám sát các tác động đến phương tiện và chuyển tiếp thông tin đến người dùng cuối bằng cách sử dụng MQTT và chấp nhận thêm các lệnh của người dùng cuối thông qua MQTT và khởi động ứng dụng cần thiết trên pi

(3) Thực hiện một số nội dung cơ bản như tắt pi

Các bước tiếp theo cung cấp thông tin chi tiết cho sơ đồ luồng được thực hiện trên nút đỏ

Xin lưu ý rằng các sơ đồ luồng màu đỏ có nút tương tác với mã python, do đó phần sau bao gồm các khía cạnh của mã python

Bước 7: Khái niệm cơ bản về nút đỏ

Khái niệm cơ bản về nút đỏ
Khái niệm cơ bản về nút đỏ
Khái niệm cơ bản về nút đỏ
Khái niệm cơ bản về nút đỏ
Khái niệm cơ bản về nút đỏ
Khái niệm cơ bản về nút đỏ

Một số bước Cơ bản nhất định được đánh dấu để bắt đầu Node-red trong nháy mắt, nhưng có node-red quá đơn giản để bắt đầu và sử dụng các ứng dụng.

  • Khởi động Node-red: https:// localhost: 1880.
  • Bắt đầu Node-red khi pi được kết nối với internet https:// địa chỉ ip>: 1880

Bước 8: Node-red: Flow _1a

Node-red: Flow _1a
Node-red: Flow _1a

Flow _1a, giám sát bất kỳ thay đổi nào trong tệp CSV và trên cơ sở các thay đổi, tức là tác động được phát hiện, quay video camera được đặt ở chế độ bật và hơn nữa người dùng được thông báo qua internet rằng tác động đã xảy ra

Bước 9: Nút đỏ: Flow_1b

Nút đỏ: Flow_1b
Nút đỏ: Flow_1b

Trong quy trình đã nói, có thể bắt đầu quay video bất kỳ lúc nào chỉ bằng cách nhấn phím điều khiển

Bước 10: Nút đỏ: Flow_2a

Nút đỏ: Flow_2a
Nút đỏ: Flow_2a

Trong quy trình đã nói, bất cứ khi nào bất kỳ hình ảnh hoặc video mới nào được lưu trữ / tải lên thư mục, thông tin sẽ được chuyển tiếp đến người dùng đã đăng ký qua internet

Bước 11: Nút đỏ: Flow_2b

Nút đỏ: Flow_2b
Nút đỏ: Flow_2b

Luồng này được thiết kế ban đầu cho người dùng từ xa, để điều khiển thiết bị theo cách sau

(a) thiết bị tắt máy

(b) chụp ảnh

(c) Quay video

(d) bắt đầu mã chính (mã datalogger là mã chính để tính toán tác động)

Bước 12: Nút đỏ; Flow_3

Nút đỏ; Flow_3
Nút đỏ; Flow_3

Luồng được thiết kế để truy cập cục bộ, để khởi động mã chính hoặc tắt thiết bị

Bước 13: MQTT

MQTT (Message Queueing Telemetry Transport) là một giao thức TCP / IP, trong đó nhà xuất bản và người đăng ký tương tác.

Trong trường hợp của chúng tôi, Pi là nhà xuất bản, trong khi ứng dụng được cài đặt trong moblile / PC của chúng tôi sẽ là người đăng ký.

Theo cách này, khi tạo ra bất kỳ tác động nào, thông tin sẽ được chuyển tiếp từ xa tới người dùng (phải có kết nối internet hoạt động)

Thông tin thêm về MQTT có thể được truy cập từ liên kết sau: MQTT

Để bắt đầu sử dụng MQTT, trước tiên chúng ta cần đăng ký, đối với hướng dẫn tôi đã sử dụng cloudmqtt (www.cloudmqtt.com), có một gói miễn phí dưới tên "con mèo dễ thương", vậy thôi.

Sau khi đăng ký, hãy tạo một phiên bản nói "pi", sau đó bạn sẽ nhận được thông tin chi tiết sau

  • Tên máy chủ
  • Hải cảng
  • tên tài khoản
  • mật khẩu mở khóa

Những điều trên là bắt buộc khi đăng ký qua điện thoại di động / máy tính

Đối với ứng dụng của tôi, tôi đã sử dụng ứng dụng MQTT từ cửa hàng Google Play (phiên bản Android)

Bước 14: MQTT: Người đăng ký

MQTT: Người đăng ký
MQTT: Người đăng ký

Ứng dụng MQTT chạy trên thiết bị di động (phiên bản Android)

Tác động được phát hiện trên pi được chuyển tiếp trở lại

Bước 15: MQTT: Chỉnh sửa Thuộc tính trong Node-red

MQTT: Chỉnh sửa Thuộc tính trong Node-red
MQTT: Chỉnh sửa Thuộc tính trong Node-red

Trong nút màu đỏ sau khi chọn nút MQTT, "Tên máy chủ" và "chủ đề" sẽ được đề cập. Điều này phải giống nhau ở đầu người đăng ký

Bước 16: Mã Python:

Chức năng mã theo lưu đồ đính kèm

Bước 17: Mã cuối cùng

Mã python được đính kèm

Để làm cho tập lệnh python của chúng tôi chạy từ thiết bị đầu cuối, chúng tôi cần làm cho chúng thực thi được dưới dạng chmod + x datalogger.py, hơn nữa phần đầu của mã phải chứa dòng "shebang" sau #! / usr / bin / python3 (điều này là bắt buộc để thực thi các chức năng từ node-red)

#! / usr / bin / python3 // shebang linefrom sense_hat import SenseHat từ datetime import datetime từ csv import writer import RPi. GPIO dưới dạng GPIO từ chế độ ngủ nhập thời gian

sense = SenseHat ()

nhập csv

dấu thời gian = datetime.now ()

delay = 5 // delay được định nghĩa để lưu trữ dữ liệu trong tệp data.csv red = (255, 0, 0) green = (0, 255, 0) yellow = (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"])

con quay hồi chuyển = sense.get_gyroscope_raw ()

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

return sense_impact

def Impact (): // hàm phát hiện tác động # GPIO.setmode (GPIO. BCM) # GPIO.setup (4, GPIO. OUT) tăng tốc = sense.get_accelerometer_raw () x = tăng tốc ['x'] y = gia tốc ['y'] z = gia tốc ['z'] x = abs (x) y = abs (y) z = abs (z)

con quay hồi chuyển = sense.get_gyroscope_raw ()

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

gyrox = vòng (gyrox, 2)

gyroy = round (gyroy, 2) gyroz = round (gyroz, 2)

tác động = get_sense_impact ()

nếu x> 1,5 hoặc y> 1,5 hoặc z> 1,5: // các giá trị được đặt sau khi lặp lại trên đường thực tế có thể được thay đổi tương ứng cho các loại và kỹ năng lái xe khác nhau với open ('Impact.csv', 'w', newline = ' ') as f: data_writer = 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 (tác động)

elif gyrox> 1.5 hoặc gyroy> 1.5 hoặc gyroz> 1.5: // các giá trị được đặt dựa trên tốc độ mà các lượt được bắt đầu với open ('Impact.csv', 'w', newline = '') là f: data_writer = writer (f) data_writer.writerow (['acc x', 'acc y', 'acc z', 'gyro x', 'gyro y', 'gyro z']) # GPIO.output (4, GPIO. CAO) sense.clear () sense.show_letter ("!", Green) data_writer.writerow (tác động)

khác:

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

def get_sense_data (): // hàm ghi và lưu trữ các giá trị từ sensor sense_data =

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

định hướng = sense.get_orientation ()

sense_data.append (định hướng ["yaw"]) sense_data.append (định hướng ["cao độ"]) sense_data.append (định hướng ["cuộn"])

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

con quay hồi chuyển = sense.get_gyroscope_raw ()

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

sense_data.append (datetime.now ())

return sense_data

với open ('data.csv', 'w', newline = '') là f:

data_writer = nhà văn (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 '])

trong khi Đúng:

print (get_sense_data ()) cho sự kiện theo nghĩa..show_letter ("U") # Gia tốc mũi tên lên = sense.get_accelerometer_raw () x = gia tốc ['x'] y = gia tốc ['y'] z = gia tốc ['z'] x = vòng (x, 0) y = round (y, 0) z = round (z, 0)

# Cập nhật vòng quay của màn hình tùy thuộc vào cách đi lên 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.clear () t = sense.get_tempether () t = round (t, 1) message = "T:" + str (t) sense.show_message (message, text_colour = red, scroll_speed = 0.09) elif event.direction == "xuống": tăng tốc = cảm giác.get_accelerometer_raw () x = gia tốc ['x'] y = gia tốc ['y'] z = gia tốc ['z'] x = vòng (x, 0) y = round (y, 0) z = round (z, 0)

# Cập nhật vòng quay của màn hình tùy thuộc vào cách đi lên của 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 ("D") # Mũi tên xuống sense.clear () h = sense.get_humidity () h = round (h, 1) message = "H:" + str (h) sense.show_message (message, text_colour = green, scroll_speed = 0.09) p = sense.get_pressure () p = round (p, 1) message = "P:" + str (p) sense.show_message (message, text_colour = màu vàng, scroll_speed = 0,09)

# elif event.direction == "left":

# tăng tốc = sense.get_accelerometer_raw () # x = gia tốc ['x'] #y = gia tốc ['y'] #z = gia tốc ['z'] # x = vòng (x, 0) # y = vòng (y, 0) # z = round (z, 0)

# Cập nhật vòng quay của màn hình tùy thuộc vào cách lên trên // Không được sử dụng và kiểm soát bởi node-red #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") # Mũi tên trái # elif event.direction == "phải": # sense.show_letter ("K") # Mũi tên phải # elif event.direction == "middle": # sense.clear ()

va chạm()

data = get_sense_data ()

dt = data [-1] - timestamp if dt.seconds> delay: data_writer.writerow (data) timestamp = datetime.now ()

Bước 18: Giám sát video trực tiếp

Impact Recorder cũng có thể được sử dụng để theo dõi video trực tiếp, vì video có thể được bắt đầu mọi lúc, mọi nơi thông qua MQTT

chúng tôi sẽ sử dụng trình phát VLC để phát video, theo mặc định trong raspbian mới nhất, VLC được cài đặt sẵn, nếu không hãy cài đặt vlc như bên dưới

Có thể truy cập thêm thông tin về việc xem luồng mạng qua VLC Network stream

Cảm ơn bạn đã đọc!!

Còn nhiều hơn thế nữa mà bộ ghi tác động có thể làm..

Xem không gian tiếp theo để phân tích từ trường trong việc thực hiện lập bản đồ chướng ngại vật

Đề xuất: