Mục lục:
- Bước 1: Xây dựng Shield / breadboard
- Bước 2: Lập trình Arduino
- Bước 3: Tải ứng dụng Android từ Google Play hoặc Nhánh GitHub
- Bước 4: Kết nối với Arduino để có thứ gì đó thú vị (Tôi đã sử dụng xe R / C)
- Bước 5: Sử dụng thiết bị Android để kết nối với Arduino
- Bước 6: Thu thập và vẽ sơ đồ dữ liệu
- Bước 7: Nhập vào Python (hoặc Nền tảng khác) để sử dụng thêm
Video: Ghi dữ liệu MPU-6050 / A0 theo thời gian thực với Arduino và Android: 7 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:34
Tôi đã quan tâm đến việc sử dụng Arduino để học máy. Bước đầu tiên, tôi muốn xây dựng trình ghi và hiển thị dữ liệu theo thời gian thực (hoặc khá gần với nó) với thiết bị Android. Tôi muốn thu thập dữ liệu gia tốc kế từ MPU-6050 nên tôi đã thiết kế bản dựng để sử dụng HC-05 ở 115200 baud. Với cấu hình này, 4 kênh dữ liệu có thể được truyền với tốc độ 250 mẫu mỗi giây.
Quá trình xây dựng có một vài bước:
- Xây dựng lá chắn hoặc breadboard
- Lập trình Arduino
- Tải ứng dụng Android từ Google Play hoặc phân nhánh GitHub và tự biên dịch
- Kết nối MPU-6050 với thứ gì đó rung động thú vị (tôi đã sử dụng ô tô R / C)
- Sử dụng thiết bị Android để kết nối với Arduino
- Vẽ dữ liệu, lưu nếu quan tâm
- Nhập vào Python (hoặc nền tảng khác) để sử dụng thêm
Bắt đầu nào!
Bước 1: Xây dựng Shield / breadboard
Đây là sơ đồ đấu dây cho Arduino, HC-05 và MPU-6050. Ngoài MPU-6050, tôi có đầu vào tương tự A0 được kết nối với cảm biến ánh sáng để cho biết ADC đang hoạt động. Bất kỳ tín hiệu 0-5 volt nào cũng có thể được đưa vào A0 ADC. Đây là những thành phần tôi đã sử dụng cho bản dựng:
- Arduino Uno
- HC-05 (HC-06 cũng nên hoạt động, nhưng bản dựng của tôi là HC-05)
- MPU-6050
- Điện trở quang Sparkfun
- Điện trở 10kOhm (nâu-đen-cam)
Hầu hết các mô-đun Bluetooth HC-05 mặc định là 9600 baud. Để dữ liệu được truyền thành công, bạn sẽ cần phải lập trình lại nó với tốc độ 115200 baud. Có một Hướng dẫn Lệnh HC-05 / HC-06 AT tốt giải thích cách thực hiện.
Bước 2: Lập trình Arduino
Tôi đã sử dụng phiên bản Arduino IDE 1.6.7 để lập trình Arduino. Mã có thể được tải xuống từ các liên kết trong bước này hoặc từ repo GitHub. Tôi đã bao gồm ba phiên bản: Firmware125.ino là phiên bản 125 hertz, Firmware250.ino là phiên bản 250 hertz và Firmware500.ino là phiên bản 500 hertz. Để Arduino quay vòng ở 500 hertz, ADC A0 không được thu thập.
Phần sụn bao gồm một đồng hồ ra trên Pin 9 mà tôi đã sử dụng để kiểm tra thời gian. Dấu vết cho thấy thời gian chu kỳ là 4 ms (tương đương 1/250 hertz). Tôi nhận thấy rằng nếu có vấn đề liên kết nối tiếp, thời gian sẽ không đồng nhất.
Mã Arduino sử dụng mặt nạ bit để thêm số kênh vào mỗi gói vì các mẫu đôi khi rơi qua Bluetooth. Tôi sử dụng ba bit quan trọng nhất để lưu trữ số kênh. Đối với các số nguyên có dấu, bit quan trọng nhất (MSB) được dành riêng cho dấu. Vì tôi muốn sử dụng MSB cho địa chỉ của mình, thay vì dấu của số nguyên, nên tôi phải chuyển đổi tất cả các giá trị gia tốc kế có dấu thành số nguyên không dấu. Tôi thực hiện việc này bằng cách thêm 32768 vào từng giá trị (số lượng ADC của gia tốc kế MPU là +32768 đến -32768) và truyền dưới dạng số nguyên không dấu:
(unsigned int) ((long) iAccelData + 32767);
Số kênh giống nhau đối với mỗi gia tốc kế và cổng A0 để có thể phát hiện gói tin bị rơi nếu số kênh không theo thứ tự. Đối với các gói đến từ Bluetooth trên Arduino, mẫu nhị phân là (các dấu hiệu cho thấy sự thay đổi theo từng bit):
(xacc 3 bit địa chỉ = 0x00, 13 bit không dấu) (yacc 3 bit địa chỉ = 0x01, 13 bit không dấu) (zacc 3 bit địa chỉ = 0x02, 13 bit không dấu) (3 bit địa chỉ = 0x03, iadc13bit không dấu)
(xacc 3 bit địa chỉ = 0x00, 13 bit không dấu) (yacc 3 bit địa chỉ = 0x01, 13 bit không dấu) (zacc 3 bit địa chỉ = 0x02, 13 bit không dấu) (3 bit địa chỉ = 0x03, iadc13bit không dấu) (xacc 3 bit địa chỉ = 0x00, 13 bit không dấu) (yacc 3 bit địa chỉ = 0x01, 13 bit không dấu) (zacc 3 bit địa chỉ = 0x02, 13 bit không dấu) (3 bit địa chỉ = 0x03, iadc13 bit không dấu)…
Nếu bạn đang sử dụng thứ gì đó không phải là ứng dụng Accel Plot Android để đọc dữ liệu Bluetooth, thì đây là các bước để trích xuất địa chỉ (Tôi đang sử dụng các tên biến từ tệp Accel Plot Bluetooth.java từ repo GitHub):
- Đọc trong 16 int không dấu
- Giải nén byte cao và lưu vào btHigh.
- Giải nén byte thấp và lưu vào btLow.
- Lấy địa chỉ từ btHigh bằng: (btHigh >> 5) & 0x07. Câu lệnh này dịch chuyển btCao 5 bit sang bên phải, di chuyển ba bit địa chỉ đến ba thanh ghi thấp nhất. Dấu & là một AND logic buộc các bit 4 trở lên bằng 0 và ba bit cuối cùng khớp với các bit địa chỉ. Kết quả của tuyên bố này là địa chỉ của bạn.
Bạn không phải lo lắng về việc trích xuất địa chỉ nếu bạn đang sử dụng Accel Plot.
Bước 3: Tải ứng dụng Android từ Google Play hoặc Nhánh GitHub
Bạn có một số lựa chọn để tải ứng dụng Android trên thiết bị của mình. Nếu bạn muốn tránh mã hóa, bạn có thể tìm kiếm "Accel Plot" và ứng dụng sẽ xuất hiện trong cửa hàng Google Play. Làm theo hướng dẫn của cửa hàng để cài đặt.
Mong muốn của tôi với Có thể hướng dẫn này thực sự là khuyến khích những người khác xây dựng các dự án vì vậy tôi cũng đã xuất bản mã trong một repo GitHub. Bạn sẽ có thể phân nhánh, xây dựng và sửa đổi nó khi bạn thấy phù hợp. Tôi đã xuất bản mã theo Giấy phép MIT vì vậy hãy vui vẻ!
Bước 4: Kết nối với Arduino để có thứ gì đó thú vị (Tôi đã sử dụng xe R / C)
Cuối cùng, tôi muốn sử dụng thiết bị để phát hiện mặt đường nên tôi nghĩ rằng một chiếc ô tô nhỏ (R / C) được điều khiển từ xa sẽ thích hợp. Tôi nghĩ rằng nó sẽ hữu ích trong bước tiếp theo nếu các điểm nhấn có thể nằm trên một thứ gì đó di chuyển hoặc rung.
Bước 5: Sử dụng thiết bị Android để kết nối với Arduino
Nếu bạn chưa làm như vậy, trước tiên bạn cần ghép nối HC-05 với thiết bị Android của mình. Tôi tin rằng trên hầu hết các thiết bị, bạn có thể thực hiện việc này bằng cách đi tới cài đặt. Pin mặc định cho hầu hết các thiết bị HC-05 sẽ là 1234 hoặc 1111.
Mở ứng dụng AccelPlot trên thiết bị Android. Khi ứng dụng mở ra và trước khi kết nối với HC-05, bạn có thể thay đổi tốc độ lấy mẫu (tỷ lệ này được đặt trong mã Arduino), thang đo gia tốc (cũng được đặt trong mã Arduino) và số lượng mẫu sẽ được lưu.
Sau khi các cài đặt này được thực hiện, hãy nhấp vào nút "Kết nối". Nó sẽ hiển thị các thiết bị Bluetooth và thiết bị của bạn sẽ được liệt kê. Chọn nó và sau khi mã thiết lập kết nối, bạn sẽ thấy một bánh mì nướng "Đã kết nối" bật lên.
Sử dụng nút mũi tên quay lại để quay lại Cốt truyện. Nhấn vào nút "Start Stream" để hiển thị dữ liệu từ thiết bị HC-05. Bạn cũng nên có các nút có sẵn để lưu dữ liệu hoặc phát nội dung được điều chỉnh tần số thông qua giắc cắm âm thanh.
Bước 6: Thu thập và vẽ sơ đồ dữ liệu
Nút "Bắt đầu phát trực tiếp" sẽ được bật. Nhấn vào nó để bắt đầu truyền dữ liệu ra màn hình.
Nút "Lưu dữ liệu" cũng sẽ được bật, hãy nhấn vào nút đó để lưu trữ dữ liệu.
Accel Plot cũng bao gồm một tùy chọn để xuất ra tín hiệu đã được điều chế trên các kênh âm thanh. 2 kênh trong ứng dụng Accel Plot đề cập đến các kênh bên trái và bên phải của giắc cắm ra âm thanh trên thiết bị Android. Điều này rất hữu ích nếu bạn muốn đưa dữ liệu MPU-6050 vào một hệ thống ghi dữ liệu riêng biệt, như National Instruments.
Video cho thấy một ví dụ về hệ thống thu thập dữ liệu trên một chiếc ô tô R / C.
Bước 7: Nhập vào Python (hoặc Nền tảng khác) để sử dụng thêm
Các tệp được lưu vào thiết bị Android. Các tệp sẽ được lưu trữ trong thư mục "AccelPlot" dành cho Android API 18 trở lên. Mã đặt các tệp.dat vào thư mục "\ Tablet / Documents / AccelPlot" cho API 19 (KitKat 4.4) trở lên. Tôi đã gặp sự cố với một số thiết bị Android hiển thị tệp khi được kết nối qua USB. Trong một số trường hợp, tôi đã phải khởi động lại thiết bị Android để chúng hiển thị. Không chắc tại sao lại như vậy, nhưng phải có bốn tệp, một tệp cho mỗi kênh. Chúng có thể được sao chép vào một thư mục cục bộ để làm việc bổ sung.
Tôi đã sử dụng Anaconda / Python 2.7 để mở tệp và hiển thị dữ liệu. Tệp "ExploratoryAnalysis.ipynb" có tệp IPython Notebook sẽ mở tất cả các tệp dữ liệu và vẽ biểu đồ dữ liệu mẫu. Các tệp mẫu được bao gồm trong repo GitHub. Dữ liệu được lưu dưới dạng float 4 byte big-endian ('> f') nên bất kỳ chương trình phân tích nào cũng có thể mở chúng.
Tôi cũng đã bao gồm một tệp đơn giản hơn có tên "ReadDataFiles.ipynb" hiển thị cách đọc trong một tệp theo tên.
Đề xuất:
Cách tạo bộ ghi dữ liệu thời gian thực về độ ẩm và nhiệt độ với Arduino UNO và thẻ nhớ SD. DHT11 Mô phỏng ghi dữ liệu trong Proteus: 5 bước
Cách tạo bộ ghi dữ liệu thời gian thực về độ ẩm và nhiệt độ bằng Arduino UNO và thẻ nhớ SD. DHT11 Data-logger Simulation in Proteus: Giới thiệu: xin chào, đây là Liono Maker, đây là liên kết YouTube. Chúng tôi đang thực hiện một dự án sáng tạo với Arduino và làm việc trên các hệ thống nhúng.Data-Logger: Một trình ghi dữ liệu (cũng là trình ghi dữ liệu hoặc trình ghi dữ liệu) là một thiết bị điện tử ghi lại dữ liệu theo thời gian
Chương trình MicroPython: Cập nhật dữ liệu về bệnh Coronavirus (COVID-19) trong thời gian thực: 10 bước (có hình ảnh)
Chương trình MicroPython: Cập nhật dữ liệu về bệnh do coronavirus (COVID-19) theo thời gian thực: Trong vài tuần qua, số trường hợp được xác nhận mắc bệnh do coronavirus (COVID 19) trên toàn thế giới đã vượt quá 100.000 và tổ chức y tế thế giới (WHO) đã tuyên bố đợt bùng phát viêm phổi do coronavirus mới trở thành đại dịch toàn cầu. Tôi đã rất
Lập phương thời gian - Tiện ích theo dõi thời gian Arduino: 6 bước
Time Cube - Arduino Time Tracking Gadget: Tôi muốn đề xuất cho bạn một dự án arduino đơn giản nhưng thực sự hữu ích để theo dõi các sự kiện thời gian bằng cách lật một số tiện ích khối thông minh. Lật nó sang " Làm việc " > " Tìm hiểu " > " Việc nhà " > " Phần còn lại " bên và nó sẽ tính
Khoa học dữ liệu IoT PiNet cho dữ liệu màn hình thông minh thời gian thực Viz: 4 bước
Khoa học dữ liệu IoT PiNet cho Dữ liệu màn hình thông minh theo thời gian thực: Bạn có thể dễ dàng kết hợp mạng lưới IoT với màn hình thông minh để hiển thị dữ liệu nhằm thúc đẩy nỗ lực nghiên cứu của bạn trong Khoa học dữ liệu hoặc bất kỳ lĩnh vực định lượng nào. Bạn có thể gọi " đẩy " các âm mưu của bạn cho khách hàng ngay từ trong
Chuyển đổi máy quay video những năm 1980 thành hình ảnh phân cực theo thời gian thực: 14 bước (có hình ảnh)
Chuyển đổi máy ảnh video những năm 1980 thành hình ảnh phân cực theo thời gian thực: Hình ảnh phân cực cung cấp một con đường để phát triển các ứng dụng thay đổi trò chơi trên nhiều lĩnh vực - bao gồm tất cả các cách từ giám sát môi trường và chẩn đoán y tế đến các ứng dụng an ninh và chống khủng bố. Tuy nhiên, rất