Mục lục:
- Bước 1: Bộ phận & phụ kiện
- Bước 2: Mô tả bộ phận: Mũ giác quan
- Bước 3: Lắp ráp: Máy ghi tác động
- Bước 4: Lắp ráp: Máy ghi tác động trên Bảng điều khiển của ô tô
- Bước 5: Bộ ghi tác động: Làm việc & Ứng dụng
- Bước 6: Mô tả phần mềm: Node Red
- Bước 7: Khái niệm cơ bản về nút đỏ
- Bước 8: Node-red: Flow _1a
- Bước 9: Nút đỏ: Flow_1b
- Bước 10: Nút đỏ: Flow_2a
- Bước 11: Nút đỏ: Flow_2b
- Bước 12: Nút đỏ; Flow_3
- Bước 13: MQTT
- Bước 14: MQTT: Người đăng ký
- Bước 15: MQTT: Chỉnh sửa Thuộc tính trong Node-red
- Bước 16: Mã Python:
- Bước 17: Mã cuối cùng
- Bước 18: Giám sát video trực tiếp
Video: Máy ghi tác động cho xe: 18 bước (có hình ảnh)
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:33
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
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
- 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ô
Để 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 đỏ
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
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
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
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
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
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ý
Ứ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
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:
Trình đọc / ghi và ghi âm thanh ScanUp NFC cho người mù, người khiếm thị và mọi người khác: 4 bước (có hình ảnh)
Máy đọc / ghi âm thanh ScanUp NFC và Máy ghi âm cho Người mù, Khiếm thị và Mọi người Khác: Tôi học thiết kế công nghiệp và dự án là công việc trong học kỳ của tôi. Mục đích là để hỗ trợ người khiếm thị và người mù bằng một thiết bị cho phép ghi lại âm thanh ở định dạng WAV trên thẻ SD và gọi thông tin đó bằng thẻ NFC. Vì vậy, trong
Động cơ bước Điều khiển động cơ bước Động cơ bước - Động cơ bước như một bộ mã hóa quay: 11 bước (có hình ảnh)
Động cơ bước Điều khiển động cơ bước Động cơ bước | Động cơ bước như một bộ mã hóa quay: Có một vài động cơ bước nằm xung quanh và muốn làm điều gì đó? Trong Có thể hướng dẫn này, hãy sử dụng động cơ bước làm bộ mã hóa quay để điều khiển vị trí của động cơ bước khác bằng vi điều khiển Arduino. Vì vậy, không cần phải quảng cáo thêm, chúng ta hãy
ARUPI - Đơn vị ghi âm tự động chi phí thấp / Đơn vị ghi âm tự động (ARU) dành cho các nhà sinh thái học Soundscape: 8 bước (có hình ảnh)
ARUPI - Đơn vị ghi âm tự động chi phí thấp / Đơn vị ghi âm tự động (ARU) dành cho các nhà sinh thái học Soundscape: Tài liệu hướng dẫn này được viết bởi Anthony Turner. Dự án được phát triển với rất nhiều sự trợ giúp từ Shed in School of Computing, University of Kent (Mr Daniel Knox đã giúp đỡ rất nhiều!). Nó sẽ chỉ cho bạn cách tạo một Bản ghi âm thanh tự động U
Công tắc đèn điều khiển từ xa bằng Bluetooth - Trang bị thêm. Công tắc đèn vẫn hoạt động, không cần ghi thêm.: 9 bước (có hình ảnh)
Công tắc đèn điều khiển từ xa bằng Bluetooth - Trang bị thêm. Công tắc đèn vẫn hoạt động, không cần ghi thêm.: Cập nhật ngày 25 tháng 11 năm 2017 - Đối với phiên bản Công suất cao của dự án này có thể kiểm soát hàng kilowatt tải, hãy xem Trang bị thêm Điều khiển BLE cho tải công suất cao - Không cần thêm dây Ngày 15 tháng 11 năm 2017 - Một số bo mạch / ngăn xếp phần mềm BLE
Làm giá đỡ cho máy ảnh DSLR với giá chưa đến 6 đô la bằng cách sử dụng ống PVC (Chân máy / Chân máy cho mọi máy ảnh): 6 bước
Làm giá đỡ cho máy ảnh DSLR với giá chưa đến 6 đô la bằng cách sử dụng ống PVC (Monopod / chân máy cho mọi máy ảnh): Có …. Bạn có thể tự làm giá đỡ chỉ với một số ống PVC và chữ T. Nó rất nhẹ … Nó được cân bằng hoàn hảo … Nó rắn chắc … Nó thân thiện với khả năng tùy chỉnh … Tôi là Sooraj Bagal và tôi sẽ chia sẻ kinh nghiệm của mình về giá đỡ máy ảnh này mà tôi đã tạo cho