Mục lục:

PHẢN HỒI LED SONIC: 7 bước (có hình ảnh)
PHẢN HỒI LED SONIC: 7 bước (có hình ảnh)

Video: PHẢN HỒI LED SONIC: 7 bước (có hình ảnh)

Video: PHẢN HỒI LED SONIC: 7 bước (có hình ảnh)
Video: Ferarri 448 gây tai nạn khiến 1 người ra đi: Hình ảnh cô gái có mặt trên ghế lái | Moli Star #shorts 2024, Tháng mười một
Anonim
PHẢN HỒI LED SONIC
PHẢN HỒI LED SONIC
PHẢN HỒI LED SONIC
PHẢN HỒI LED SONIC
PHẢN HỒI LED SONIC
PHẢN HỒI LED SONIC

Xin chào lần nữa, Bạn ghét việc rô bốt của bạn chạy vào mọi thứ? Điều này sẽ khắc phục vấn đề đó. Với 8 cảm biến âm thanh, điều này trông có vẻ phức tạp… nhưng trên thực tế, tôi đã làm điều này rất dễ dàng. Tôi cố gắng đăng các dự án giúp bạn tìm hiểu về Arduino và thể hiện khái niệm 'bên ngoài hộp'. Bài đăng này sẽ giúp bạn hiểu 595 chuyển mạch, pro-minis như một cảm biến có thể lập trình và việc sử dụng hiệu quả phản hồi led thời gian thực. Nếu bạn thích Arduino như một 'sao chép, dán và bổ sung', bạn có thể bỏ qua điều này.

Tôi thích sử dụng những người chuyên nghiệp. Chúng có giá khoảng 2,50 đô la, hoạt động như một công cụ hoàn chỉnh và việc cài đặt các tiêu đề làm cho chúng rất linh hoạt. Được sử dụng như một vi cảm biến, bạn có thể để nó 'làm những gì bạn muốn' thay vì những gì một cảm biến đã mua ra lệnh. Với I2C chỉ sử dụng 2 dây, chúng có thể được buộc lại với nhau trên một đường dây. Vì vậy, chuyển qua MEGA, tôi có thể có 4 minis chạy 4 dòng mã riêng biệt cùng một lúc, chỉ với $ 10,00. Ở đây tôi sử dụng một mini để bật các cảm biến âm thanh qua 595 và hiển thị khoảng cách dẫn theo thời gian thực. Sau đó, chỉ cần chia sẻ 8bits dữ liệu với bo mạch chủ. Điều này giúp giảm tải cho bo mạch mẹ và làm cho mã của cô ấy rất đơn giản.

Có vấn đề với cảm biến âm thanh … không có phản hồi trực quan. Bạn không bao giờ biết liệu cảm biến chỉ là trọng lượng chết hay đang hoạt động! Tôi tin rằng ai đã từng nghĩ ra 'BLINK' thông minh hơn Einstine. Chỉ cần MỘT đèn dẫn và một thế giới thông tin được chuyển tiếp bằng nhấp nháy. Vì vậy, một cảm biến âm thanh cần phản hồi thời gian thực. Ở đây tôi đã sử dụng một dãy đèn led để theo dõi từng cảm biến. Bạn không cần chúng, chỉ cần tạo cảm biến mà không cần đèn led. Nhưng để có đèn led trên PCB là hữu ích.

Bước 1: LÀM PCB

LÀM PCB
LÀM PCB
LÀM PCB
LÀM PCB
LÀM PCB
LÀM PCB
LÀM PCB
LÀM PCB

làm cho PCB và cư trú. THẬN TRỌNG… Tôi đã mắc lỗi trên PCB ở các kết nối 4 chân để cắm các cảm biến âm thanh. ECHO và TRIGGER Vcc và đế sẽ cắm vào pcb. Không có đủ chỗ cho các đầu nối nên tôi chỉ làm PCB với các đầu ra. Vì vậy, bạn có thể hàn một đầu nối dây với PCB và cắm vào các cảm biến âm thanh thực tế. Đối với đèn led tôi đặt đèn led màu vàng ở mép trong và màu đỏ ở mép ngoài. điều này giúp bạn nhìn thấy ở khoảng cách xa nếu các cảm biến đang đo chính xác.

Đây là một trong số ít pcb 2 bên mà tôi từng làm. Tôi thà làm 2 ea bên đơn và chạy jumper. Nhưng để có được màn hình led, bạn cần ít nhất một pcb hàng đầu. Tôi đã tách bố cục trong phần tải xuống.

PCB dành cho một máy mini chuyên nghiệp với A4-A5 bên trong tiêu đề cạnh. Dù bằng cách nào, chỉ cần kết nối A4-A5 với Master A4-A5. Đừng quên Vcc và Grounds.

Bước 2: NHIỀU MISTAKES

NHIÊU LÔI LÂM
NHIÊU LÔI LÂM

Bây giờ vì những sai lầm của tôi… tôi đã cố gắng bật tất cả các Trình kích hoạt cùng một lúc (tất cả được gắn với nhau) và loại này hoạt động tốt nhưng một số tương tác đã xảy ra. Vì vậy, bây giờ tất cả ECHOS đi đến vi mô (8) và TRIGGERS được đặt bởi 595. Thêm ba chân (3). Đối với đèn led, ghép kênh sẽ không hoạt động. Bạn cần có thời gian BẬT hoàn toàn cho mỗi đèn led. Điều này có nghĩa là mỗi hàng gồm 7 đèn led phải có 595 của riêng nó. Sau khi bạn cập nhật 595, các đèn led sẽ sáng cho đến bản cập nhật tiếp theo. Trường hợp ghép đèn led chỉ sáng trong phần mười giây đó. Điều này hoạt động tốt trong các độc giả của tôi và nó cần một vi chuyên dụng. Không có thời gian để quét 8 cảm biến âm thanh và đo khoảng cách. Tôi đã thử và nhận được kết quả rất tệ. Ghép kênh các led cũng sẽ có nghĩa là một lưới gồm hàng + cột và điều đó có nghĩa là khoảng hơn 64 điểm cấp dữ liệu trong PCB.

Tôi chỉ sử dụng 7 đầu ra từ 595 vì sự lộn xộn trên PCB. Ở khoảng cách xa, bạn không thể biết được có 7 hay 8 đèn led hay không chỉ là chuyển động của chúng. Bạn có thể bị cám dỗ để buộc tất cả các đèn led vào một điện trở duy nhất và điều này hoạt động, nhưng độ sáng của mảng thay đổi theo số lượng đèn led nhỏ. Vì vậy, một điện trở cho mỗi đèn led là tốt nhất. Tôi chỉ thích 595 nhưng nếu họ chỉ di chuyển các chân Vcc và 0 ra hoặc tạo một ic 18 chân với TẤT CẢ các đầu ra ở cùng một phía… kết nối tất cả tám đầu ra sẽ rất dễ dàng. Nhưng sau đó nó sẽ không được bán với giá dưới 30 xu.

Bước 3: CẢM BIẾN MOUNT

CẢM BIẾN MOUNT
CẢM BIẾN MOUNT
CẢM BIẾN MOUNT
CẢM BIẾN MOUNT
CẢM BIẾN NÚI
CẢM BIẾN NÚI
CẢM BIẾN MOUNT
CẢM BIẾN MOUNT

Keo cảm biến âm thanh vào nắp cà phê. giắc cắm đực cần được uốn cong vào trong trên mỗi cảm biến. Điều này hoạt động tốt hơn nếu bạn bẻ cong từng chốt một. Tôi đã sử dụng băng xốp 2 bên chỉ để rung động ít hơn. Các cảm biến của tôi quá gần và chúng cần không gian 1/4 inch để phù hợp với PCB tốt hơn. Tôi đã sử dụng cảm biến âm thanh trước đây và đôi khi một cảm biến không thể đo chính xác và bạn cần ghi nhớ điều này. Vì vậy, không KEO tất cả chúng trong vĩnh viễn.

Nó cũng giúp chạy kiểm tra khoảng cách nhanh trên từng chiếc trước khi bạn sử dụng chúng. Tôi nhận được khoảng một cảm biến có chỉ số kém trong một lô 20. Không tệ với giá tôi đã trả.

Bước 4: DÂY CỨNG

DÂY ĐIỆN CỨNG
DÂY ĐIỆN CỨNG

Tôi nghĩ rằng sẽ có chỗ cho các giắc cắm và phích cắm từ PC đến

chân sonic nhưng tôi hết chỗ. Vì vậy, tôi đã cố gắng đấu dây vào đầu pcb và chỉ tạo ra dây echo và dây kích hoạt với giắc cắm cái (8ea). Tôi đã gắn đế 8ea Vcc và 8ea của cảm biến với nhau để điều này chỉ tạo ra 2 kết nối với PCB cho chúng.

Với 8 cảm biến và 8 595, một chiếc máy không hoặc mini chuyên nghiệp KHÔNG THỂ cấp nguồn cho điều này. Phải có một nguồn quy định 5v như một phần của dự án này. Robot của tôi có 7805 @ 1amp đơn giản từ pin. Điều này liên quan đến tất cả Vcc 5v cho tất cả các thiết bị. 7805 giảm khoảng một vôn, vì vậy bạn cần ít nhất 6,5 vôn để cung cấp cho nó. Đó là 2 pin lithium ở 3.3v. Robot của tôi có các nicô cũ từ các gói khoan đã qua sử dụng và 8 ô tô chạy động cơ 12v hộp số điển hình của Trung Quốc trong khung gầm loại xe tăng $ 20.

Bước 5: TẢI SONIC SKETCH

TẢI XUỐNG SONIC SKETCH
TẢI XUỐNG SONIC SKETCH

Tải xuống bản phác thảo và cài đặt. Có nhiều cách để nói chuyện với

khác nhưng tôi thích I2c. sự nhầm lẫn là địa chỉ và chủ / nô lệ. Như với hầu hết các cảm biến (hãy nghĩ đến mini thứ 2 như một cảm biến), bạn xác định vị trí của cảm biến và yêu cầu số byte x. điều tương tự ở đây. Trong mini thứ 2, bạn dành ra x lượng byte bạn muốn gửi. Sự nhầm lẫn là tên không quan trọng. Nó chỉ giúp BẠN nhớ nếu bạn chia sẻ tên. Vì vậy, trong bản phác thảo, tôi gửi 8 phép đo khoảng cách âm tính bằng cm là sendR1, sendR2, sendR3, sendR4, sendL1, sendL2, sendL3, sendL4. Master chỉ nhận được 8 byte nếu dữ liệu và bạn có thể gọi các byte đó bất kỳ thứ gì bạn muốn. Tôi đọc chúng là gotR1, gotR2, got….. Thứ tự byte được gửi là như nhau. Vì vậy, byte A, B, C….. đừng nghĩ rằng bằng cách thay đổi tên sẽ cung cấp cho bạn dữ liệu khác nhau. Và cách bắt khác, bạn chỉ có thể nhận dữ liệu được yêu cầu gửi đi. Vì vậy, nếu bạn muốn dữ liệu khác, bạn phải thay đổi CẢ master và slave.

Bước 6: GIAO TIẾP

LIÊN LẠC
LIÊN LẠC

Bạn có thể bỏ qua điều này nếu bạn biết cách thiết lập 2 Uno để nói chuyện với nhau. Tôi có một số mẩu thông tin ở cuối. Để làm cho nó dễ dàng, tôi sẽ gọi không có trong cơ sở robot M1 và cảm biến âm thanh là S2. Kết nối Vcc, mặt đất, A4, A5 với nhau.

Trong bản phác thảo cho S2, nó bắt đầu bằng #include

Sau đó, tạo 8 byte để gửi. byte R1, byte R2, byte L1, v.v … Uno là một vi 8 bit nên chúng gửi 1byte tại một thời điểm bằng cách sử dụng 'byte' thay vì 'int' là chính xác.

Trong 'setup ()', thêm 'Wire.begin (address)', điều này cho I2c biết đây là thiết bị nào. Địa chỉ thường là bất kỳ số nào bạn thích từ 4 - 200. kích thước của một byte. Ở đây tôi sử dụng số 10. Vì vậy, để nói chuyện với cảm biến S2 này, master phải gọi Wire.requestFrom (10, 8). Đây là địa chỉ 10 và địa chỉ 8 là số byte mong muốn. Cũng trong 'setup ()', hãy thêm Wire.onRequest (isr anyName). Khi M1 gọi yêu cầu, cảm biến S2 sẽ phản ứng với ngắt. Điều này chỉ gọi hàm anyName. Vì vậy, hàm anyName này cần được tạo. Nhìn vào bản phác thảo và xem hàm 'sendThis ()' Đây là nơi các byte thực sự được gửi đến M1. Các byte chỉ đi và KHÔNG phải tên và theo thứ tự được gửi. Đây là nơi bắt đầu kích thước và số lượng dữ liệu cần gửi. Trong định dạng byte dễ dàng này, gửi và nhận phải khớp nhau. Ở đây gửi 8 byte và nhận 8 byte. Một lưu ý ở đây là việc gọi một hàm yêu cầu dấu (). Như delay (), millis (), Serial.print (). Khi sử dụng ISR (quy trình dịch vụ ngắt), việc gọi hàm sẽ giảm dấu (). Vì vậy Wire.onRequest (sendThis) không phải Wire.onRequest (sendThis ()).

Sự nhầm lẫn tôi đã có là chủ / nô lệ. Lúc đầu, tôi nghĩ rằng chủ nhân là chủ. Nhưng trong sketch, bạn có thể chuyển master / slave để yêu cầu từ micro khác hoặc gửi đến micro khác. Miễn là bạn làm theo định dạng cơ bản được nêu ở trên. Hãy nhớ rằng… bạn CHỈ chia sẻ dữ liệu đã được chỉ định.

Hai bít tắt tường. Ngắt isr chỉ ngắt giữa các dòng phác thảo. Nếu bạn bị khóa trong vòng lặp 'while hoặc for', không có gì xảy ra cho đến khi vòng lặp thoát ra. KHÔNG có vấn đề gì lớn vì điều này có thể là vài micro giây và dữ liệu đã cũ.

Vấn đề khác là, 'bên trong' một vi mô có tính toán 100% không có lỗi. Mọi giao tiếp 'bên ngoài' (dây) đều có thể có lỗi. Có nhiều cách để kiểm tra xem dữ liệu được phân phối có bị lỗi và khớp với nguồn hay không. Cách dễ nhất là với tổng kiểm tra. Chỉ cần thêm tổng số byte gửi (giá trị thực) và gửi tổng và ở đầu nhận, hãy thêm tổng và xem chúng có khớp hay không. Nếu chúng khớp, ok hoặc quăng tập dữ liệu đó nếu chúng không khớp. Tất nhiên điều này liên quan đến việc gửi một giá trị số nguyên chứ không phải byte. Vì vậy, bạn chỉ cần chia số nguyên thành byte HI và byte LO và gửi dưới dạng các byte riêng biệt. Sau đó đặt lại với nhau ở đầu thu.

DỄ:

int x = 5696; (bất kỳ giá trị int hợp lệ nào, tối đa là 65k hoặc 32k âm)

byte hi = x >> 8; (22)

byte lo = x; (64)

gửi các byte và kết hợp ở đầu kia….

byte hi = Wire.read ();

byte lo = Wire.read ();

int newx = (hi << 8) + lo; (5696)

Bước 7: ĐÓNG CỬA

ĐÓNG CỬA
ĐÓNG CỬA
ĐÓNG CỬA
ĐÓNG CỬA
ĐÓNG CỬA
ĐÓNG CỬA
ĐÓNG CỬA
ĐÓNG CỬA

Để đóng, cảm biến âm thanh này cung cấp cho bo mạch chủ dữ liệu khoảng cách thô trong thời gian thực. Điều này giải phóng vi mô và làm cho bản phác thảo ít phức tạp hơn nhiều. Bây giờ vi mô có thể đưa ra quyết định tốt để làm chậm, rẽ, dừng hoặc đảo ngược dựa trên dữ liệu tốt thay vì phỏng đoán ngẫu nhiên. Xem bài đăng khác của tôi về IDE bluetooth để tải lên bản phác thảo mà không cần dây và phải kết nối robot của bạn mọi lúc chỉ để thay đổi nhanh bản phác thảo của bạn. Cảm ơn vì đã xem cái này. oldmaninsc.

Đề xuất: