Mục lục:

Pimp My Cam: 14 bước (có hình ảnh)
Pimp My Cam: 14 bước (có hình ảnh)

Video: Pimp My Cam: 14 bước (có hình ảnh)

Video: Pimp My Cam: 14 bước (có hình ảnh)
Video: NGƯỜI THÀNH CÔNG LUÔN CÓ LỐI ĐI RIÊNG #Shorts 2024, Tháng mười một
Anonim
Pimp My Cam
Pimp My Cam

Đây là nơi bắt nguồn của dự án này.

Một thời gian trước, tôi đã nghĩ về việc quay một số dòng thời gian. "Thế nào?" Tôi tự hỏi mình? Câu trả lời đầu tiên là "Chà.. bạn chỉ cần quay phim một cái gì đó và tăng tốc độ nó lên và thế là xong". Nhưng nó thực sự là đơn giản? Đầu tiên, tôi muốn sử dụng máy ảnh DSLR của mình cho mục đích đó và Nikon D3100 của tôi có giới hạn thời gian 10 phút để quay video. Thứ hai, ngay cả khi tôi có một chiếc máy ảnh không giới hạn thời gian quay video, thì điều gì sẽ xảy ra nếu tôi muốn tạo một timelapse dài thực sự, chẳng hạn như dài 12 giờ? Tôi tạo một video 1080p dài 12 giờ. Tôi nghi ngờ pin sẽ tồn tại lâu như vậy và, nó không thực tế lắm phải không? Được rồi, đang chuyển qua "ý tưởng quay video". Vâng, sau đó là hình ảnh. Chụp ảnh trên máy ảnh ở một khoảng thời gian nhất định và kết thúc với hàng trăm hình ảnh mà tôi muốn xử lý thông qua phần mềm để tạo thành video..?

Có vẻ như một ý tưởng ổn nên tôi quyết định thử. Vì vậy, tôi đã kết thúc với việc muốn tạo ra một thiết bị mà tôi có thể nhập một khoảng thời gian và dựa trên khoảng thời gian đó, nó sẽ kích hoạt máy ảnh của tôi liên tục. Và trong khi chúng ta đang ở đó, tại sao không thêm một số công cụ khác như trình kích hoạt chuyển động, v.v.?

Bước 1: Nhưng.. Làm thế nào?

Nhưng bằng cách nào?
Nhưng bằng cách nào?

THẾ NÀO? là câu hỏi tiếp theo của chúng tôi thiếu câu trả lời. Bởi vì thời gian, kích hoạt, cảm biến và những thứ như vậy, sẽ không có gì ngạc nhiên khi người đầu tiên nghĩ đến tất nhiên là Arduino. Được rồi, nhưng vẫn còn, chúng ta cần học cách kích hoạt màn trập trên máy ảnh của mình. Hm.. servo nóng được dán vào máy ảnh cơ thể? Hoàn toàn không, chúng tôi muốn điều này im lặng và tiết kiệm điện. Tiết kiệm điện - tại sao? Bởi vì tôi muốn làm cho nó di động và gắn pin vào đó, tôi sẽ không ở gần phích cắm điện mỗi lần. Vì vậy, làm thế nào để chúng ta kích hoạt nó sau đó.. nó thực sự khá đơn giản.

Nikon đã biết rằng bạn sẽ muốn có một chiếc điều khiển từ xa và các phụ kiện khác và họ nói "được rồi, chúng tôi sẽ cung cấp cho họ tất cả những thứ đó, nhưng chúng tôi sẽ tạo ra một cổng đặc biệt để chúng tôi có thể kiếm được nhiều tiền hơn từ những phụ kiện đó", xấu hổ với bạn Nikon. Cổng đó (trong trường hợp của tôi) được gọi là MC-DC2 và cách rẻ nhất để chúng ta sử dụng nó là mua một bộ nhả cửa trập từ xa trên eBay với giá 2-3 đô la và chỉ cần sử dụng cáp.

* Một số máy ảnh khác, như Canon, có giắc cắm tai nghe 3,5 mm đơn giản được thiết kế cho cùng một mục đích sử dụng, vì vậy bạn có thể sử dụng một số cáp từ loa / tai nghe cũ.

Bước 2: Học cách kích hoạt máy ảnh

Image
Image
Cách kích hoạt
Cách kích hoạt

Dù sao, đây là thỏa thuận, cổng sẽ có 3 kết nối mà chúng tôi sẽ quan tâm (Mặt đất, Lấy nét và Màn trập) và bạn sẽ có những kết nối đó trên đầu cáp của màn trập từ xa mới mua mà bạn vừa phá hủy. Ba kết nối đó rất quan trọng đối với chúng tôi bởi vì nếu chúng tôi rút ngắn Ground và Focus, máy ảnh sẽ lấy nét giống như bạn đang nhấn nút lấy nét và sau đó, trong khi kết nối đó vẫn còn, bạn có thể rút ngắn Ground và Shutter và máy ảnh sẽ chụp ảnh giống như khi bạn nhấn nút chụp trên máy ảnh.

Bạn có thể kiểm tra điều này bằng cách rút ngắn các dây trực tiếp trên đầu cáp để xác định đó là dây nào. Sau khi bạn làm điều đó, để xác định dễ dàng hơn, chúng tôi sẽ tô màu chúng như sau:

Đất = ĐEN; Tiêu điểm = TRẮNG; Màn trập = ĐỎ.

Được rồi, bây giờ chúng ta cần dạy Arduino làm việc này cho chúng ta.

Bước 3: Cách kích hoạt

Image
Image

Điều đơn giản nhất mà chúng ta có thể yêu cầu Arduino gửi ra thế giới bên ngoài đó là tín hiệu đầu ra kỹ thuật số. Tín hiệu này có thể là CAO (lôgic '1') hoặc THẤP (lôgic '0'), do đó có tên "kỹ thuật số", hoặc khi được chuyển đổi thành ý nghĩa cốt lõi của nó: 5V cho mức cao hợp lý và 0V cho mức thấp hợp lý.

Chúng ta phải làm gì với tín hiệu kỹ thuật số này? Chúng ta không thể chỉ đơn giản kết nối chúng với máy ảnh và mong đợi máy ảnh biết những gì chúng ta muốn. Như chúng ta đã thấy, chúng ta cần phải cắt ngắn các kết nối trên máy ảnh để nó phản ứng, vì vậy chúng ta cần sử dụng các tín hiệu kỹ thuật số của Arduino để điều khiển một số thành phần có thể làm ngắn các thiết bị đầu cuối của chúng tùy thuộc vào tín hiệu điện mà chúng ta gửi cho nó.. * Theo cách tôi mô tả, bạn có thể nghĩ "Ah, Rơle!" nhưng không không. Rơ le sẽ thực hiện công việc nhưng chúng ta đang đối phó với những dòng điện nhỏ đến mức chúng ta có thể dễ dàng sử dụng ma thuật đen của chất bán dẫn.

Thành phần đầu tiên mà tôi sẽ thử là optocoupler. Tôi đã thấy họ triển khai nhiều nhất cho việc này và đó có lẽ là giải pháp tốt nhất. Optocoupler là một thành phần điện mà bạn điều khiển mạch đầu ra trong khi mạch đầu vào hoàn toàn cách ly với nó. Điều này đạt được bằng cách truyền thông tin bằng ánh sáng, mạch đầu vào sáng lên một đèn LED và phototransistor trên đầu ra sẽ chuyển đổi tương ứng.

Vì vậy, chúng tôi sẽ sử dụng optocoupler theo cách này: chúng tôi yêu cầu Arduino của chúng tôi gửi một HIGH kỹ thuật số trên một nếu đó là chân kỹ thuật số, tín hiệu đó thực tế là 5V sẽ điều khiển đèn LED bên trong optocoupler và phototransistor bên trong nó sẽ "ngắn" đó là các thiết bị đầu cuối đầu ra khi phát hiện ra ánh sáng đó và ngược lại, nó sẽ "tách" các thiết bị đầu cuối của nó ra vì không có ánh sáng từ đèn LED khi chúng ta gửi một LOW kỹ thuật số qua Arduino.

Thực tế, điều này có nghĩa là: một trong các chân kỹ thuật số của Arduino được gắn vào chân ANODE của bộ ghép quang, GND của Arduino được gắn với CATHODE, GND của máy ảnh được gắn với EMITTER và FOCUS (hoặc SHUTTER) vào BỘ SƯU TẬP. Tham khảo bảng dữ liệu của optocoupler bạn đang sử dụng để tìm các chân cắm này trên của bạn. Tôi đang sử dụng 4N35 để bạn có thể theo dõi sơ đồ của tôi một cách mù quáng nếu bạn không thực sự quan tâm đến những gì xảy ra bên trong optocoupler. Không cần phải nói, chúng ta sẽ cần hai trong số này, vì chúng ta cần kiểm soát cả FOCUS và SHUTTER của máy ảnh.

Vì chúng ta đã thấy cách hoạt động của nó, với một phototransistor trên đầu ra, tại sao chúng ta không thử nó chỉ với một transistor NPN đơn giản. Lần này, chúng tôi sẽ đưa tín hiệu kỹ thuật số trực tiếp (qua một điện trở) đến đế của bóng bán dẫn và kết nối GND của cả máy ảnh và Arduino với bộ phát và tiêu điểm / màn trập của máy ảnh với bộ thu của bóng bán dẫn.

Một lần nữa, chúng tôi sẽ cần hai trong số này vì chúng tôi đang kiểm soát hai tín hiệu. Tôi đang sử dụng BC547B và về cơ bản bạn có thể sử dụng bất kỳ NPN nào cho việc này vì hiện tại chúng tôi đang kiểm soát là một miliamp đơn lẻ.

Cả hai thành phần này sẽ hoạt động, nhưng chọn optocoupler có lẽ là ý tưởng tốt hơn vì nó an toàn hơn. Chỉ chọn bóng bán dẫn nếu bạn biết mình đang làm gì.

Bước 4: Viết mã kích hoạt

Image
Image
Viết mã để kích hoạt
Viết mã để kích hoạt

Như chúng tôi đã nói trước đây, chúng tôi sẽ sử dụng các chân kỹ thuật số của Arduino để truyền tín hiệu. Arduino có thể sử dụng cả hai thứ này để đọc dữ liệu từ nó hoặc ghi vào nó, vì vậy điều đầu tiên chúng ta cần thực hiện trong hàm setup () rằng chúng ta sẽ sử dụng hai trong số các chân kỹ thuật số của Arduino cho đầu ra như sau:

pinMode (FOCUS_PIN, OUTPUT);

pinMode (SHUTTER_PIN, OUTPUT);

trong đó FOCUS_PIN và SHUTTER_PIN có thể được xác định bằng "#define NAME value" hoặc dưới dạng int trước hàm setup () vì bạn có thể thay đổi mã pin để dễ dàng thay đổi giá trị tại một vị trí hơn là toàn bộ mã sau đó.

Điều tiếp theo chúng ta sẽ làm là viết một hàm trigger () sẽ thực hiện điều đó khi nó chạy. Tôi sẽ chỉ bao gồm một hình ảnh với mã. Tất cả những gì bạn cần biết là trước tiên chúng ta giữ FOCUS_PIN ở mức CAO trong một khoảng thời gian nhất định vì chúng ta cần đợi máy ảnh lấy nét vào chủ thể mà chúng ta đang hướng nó vào và sau đó chỉ trong giây lát (trong khi FOCUS_PIN vẫn ở mức CAO) đặt SHUTTER_PIN ở mức CAO chỉ để chụp ảnh.

Tôi cũng bao gồm khả năng bỏ qua lấy nét vì sẽ không cần lấy nét nếu chúng ta đang quay timelapse của một thứ không thay đổi khoảng cách từ máy ảnh theo thời gian.

Bước 5: Khoảng thời gian của lớp {};

Image
Image
Thao tác khoảng thời gian thông qua Arduino
Thao tác khoảng thời gian thông qua Arduino

Bây giờ chúng ta đã kích hoạt máy ảnh theo cách chúng ta cần biến nó thành một máy đo khoảng cách bằng cách thêm chức năng điều khiển khoảng thời gian giữa hai lần chụp. Để bạn có được bức tranh về những gì chúng tôi đang làm, đây là một số mã nguyên thủy để chứng minh chức năng chúng tôi muốn:

void loop () {

Khoảng thời gian trì hoãn); Kích hoạt(); }

Tôi muốn có thể thay đổi khoảng thời gian này, giả sử là 5 giây cho đến có thể là 20-30 phút. Và đây là vấn đề, nếu tôi muốn thay đổi nó từ 5 giây thành 16 giây hoặc bất kỳ thứ gì ở giữa tôi, tôi sẽ sử dụng khoảng tăng 1s, trong đó đối với mỗi yêu cầu của tôi để tăng khoảng thời gian, khoảng thời gian sẽ tăng lên 1s. Điều đó thật tuyệt, nhưng nếu tôi muốn tăng từ 5 phút xuống 5 phút thì sao? Tôi sẽ mất 295 yêu cầu với mức tăng 1s vì vậy tôi rõ ràng cần phải tăng giá trị gia tăng lên một giá trị lớn hơn và tôi cần xác định giá trị khoảng chính xác (ngưỡng) nào để thay đổi gia số. Tôi đã triển khai điều này:

5s-60s: tăng 1s; 60 giây-300: khoảng tăng 10 giây; 300s-3600s: khoảng tăng 60s;

nhưng tôi đã viết lớp này để có thể điều chỉnh để bạn có thể xác định ngưỡng và gia số của riêng mình (mọi thứ được nhận xét trong tệp.h để bạn có thể biết nơi thay đổi giá trị nào).

Ví dụ tôi đã đưa ra về thao tác khoảng thời gian rõ ràng được thực hiện trên PC, bây giờ chúng ta cần chuyển nó sang Arduino. Toàn bộ lớp này, Interval, được đặt bên trong một tệp tiêu đề được sử dụng để lưu trữ các khai báo và định nghĩa (thực sự không phải vậy, nhưng nó có thể được thực hiện trong ví dụ này mà không gây hại gì) của lớp / hàm của chúng ta. Để giới thiệu tệp tiêu đề này với mã arduino của chúng tôi, chúng tôi sử dụng "#include" Interval.h "" (các tệp phải nằm trong cùng một thư mục), đảm bảo rằng chúng tôi có thể sử dụng các chức năng được xác định trong tệp tiêu đề trong mã chính của chúng tôi.

Bước 6: Thao tác khoảng thời gian thông qua Arduino

Image
Image
Thao tác khoảng thời gian thông qua Arduino
Thao tác khoảng thời gian thông qua Arduino
Thao tác khoảng thời gian thông qua Arduino
Thao tác khoảng thời gian thông qua Arduino

Bây giờ chúng ta muốn có thể thay đổi giá trị của khoảng thời gian, hoặc tăng hoặc giảm nó. Vì vậy, đó là hai điều, vì vậy chúng tôi sẽ sử dụng hai tín hiệu kỹ thuật số sẽ được điều khiển bởi hai nút. Chúng tôi sẽ đọc nhiều lần các giá trị trên các chân kỹ thuật số mà chúng tôi đã gán cho các nút và phân tích cú pháp các giá trị đó thành hàm checkButtons (int, int); sẽ tăng khoảng thời gian nếu nút "lên" được nhấn và giảm khoảng thời gian nếu nút "xuống". Ngoài ra, nếu cả hai nút được nhấn, nó sẽ thay đổi giá trị của tiêu điểm thay đổi điều khiển việc lấy nét hay không khi kích hoạt.

Một phần của mã ((millis () - prevBtnPress)> = debounceTime) được sử dụng để gỡ lỗi. Theo cách tôi đã viết nó, có nghĩa là tôi đăng ký lần nhấn nút đầu tiên với biến boolean btnPressed và ghi nhớ thời gian nó xảy ra. Hơn tôi đợi trong một khoảng thời gian nhất định (debounceTime) và nếu nút vẫn được nhấn, tôi sẽ phản ứng. Nó cũng thực hiện "tạm dừng" giữa mỗi lần nhấn nút khác để tránh nhiều lần nhấn mà không có lần nhấn nào.

Và cuối cùng, với:

if ((millis () - prevTrigger) / 1000> = period.getVal ()) {

presTrigger = millis (); Kích hoạt(); }

trước tiên, chúng tôi kiểm tra xem khoảng thời gian giữa lần kích hoạt cuối cùng (presTrigger) và thời gian hiện tại (mili ()) (mọi thứ được chia cho 1000 vì nó tính bằng mili giây và khoảng thời gian tính bằng giây) bằng hoặc lớn hơn khoảng thời gian chúng tôi muốn, và nếu đó là thời điểm hiện tại chúng tôi nhớ thời gian hiện tại là lần cuối cùng chúng tôi kích hoạt máy ảnh và sau đó kích hoạt nó.

Với sự hoàn chỉnh này, về cơ bản chúng tôi đã tạo ra một máy đo khoảng cách, nhưng chúng tôi còn lâu mới kết thúc. Chúng tôi vẫn không thấy giá trị của máy đo khoảng cách. Nó chỉ được hiển thị trên Serial Monitor và chúng tôi sẽ không luôn ở gần máy tính vì vậy bây giờ chúng tôi sẽ triển khai một cái gì đó sẽ hiển thị cho chúng tôi khoảng thời gian khi chúng tôi thay đổi nó.

Bước 7: Hiển thị khoảng thời gian

Image
Image
Hiển thị khoảng thời gian
Hiển thị khoảng thời gian
Hiển thị khoảng thời gian
Hiển thị khoảng thời gian
Hiển thị khoảng thời gian
Hiển thị khoảng thời gian

Đây là nơi chúng tôi giới thiệu màn hình. Tôi đã sử dụng mô-đun 4 chữ số được điều khiển bởi TM1637 vì tôi chỉ cần sử dụng nó để hiển thị thời gian và không có gì khác. Cách dễ nhất để sử dụng các mô-đun này được tạo cho Arduino là sử dụng các thư viện đã được tạo sẵn cho chúng. Trên trang Arduino có một trang mô tả chip TM1673 và liên kết đến thư viện được đề xuất. Tôi đã tải xuống thư viện này và có hai cách bạn có thể giới thiệu các thư viện này với Arduino IDE:

  1. từ phần mềm Arduino, đi tới Sketch> Bao gồm Thư viện> Thêm thư viện. ZIP và tìm tệp.zip bạn vừa tải xuống
  2. bạn có thể thực hiện những gì Arduino thực hiện theo cách thủ công và chỉ cần giải nén thư viện trong thư mục mà Arduino lưu trữ các thư viện, trên Windows: C: / Users / Username / Documents / Arduino / library \.

Khi bạn đã bao gồm thư viện, bạn nên đọc tệp "ReadMe", trong đó bạn sẽ tìm thấy bản tóm tắt về chức năng của các chức năng khác nhau. Đôi khi điều này là không đủ, vì vậy bạn sẽ muốn đi sâu hơn một chút và khám phá các tệp tiêu đề trong đó bạn có thể xem cách các hàm được triển khai và những gì chúng yêu cầu làm đối số đầu vào. Và tất nhiên, cách tốt nhất để biết thư viện có khả năng gì thường cung cấp một ví dụ mà bạn có thể chạy từ phần mềm Arduino thông qua File> Examples> LibraryName> ExampleName. Thư viện này cung cấp một ví dụ mà tôi khuyên bạn nên chạy trên màn hình của mình chỉ để xem màn hình của bạn có hoạt động bình thường hay không và hơn thế nữa, tôi khuyến khích bạn chỉnh sửa mã bạn thấy trong ví dụ và tự mình xem từng chức năng và cách màn hình phản ứng với nó. Tôi đã làm như vậy và đây là những gì tôi đã tìm ra:

nó sử dụng 4 số nguyên không dấu 8 bit cho mỗi chữ số (0bB7, B6, B5, B4, B3, B2, B1, B0). Và mỗi bit B6-B0 đó được sử dụng cho mỗi đoạn của một chữ số nhất định và nếu bit là 1 thì đoạn được điều khiển bởi nó sẽ sáng lên. Các số nguyên này được lưu trữ trong một mảng được gọi là dữ liệu . Việc đặt các bit này lên màn hình được thực hiện bằng display.setSegment (data); hoặc bạn có thể tự nhiên truy cập bất kỳ chữ số nào và đặt chúng theo cách thủ công (data [0] = 0b01111001) hoặc bạn có thể sử dụng hàm encodeDigit (int); và chuyển đổi chữ số bạn gửi thành các bit (data [0] = display.encodeDigit (3));. Bit B7 chỉ được sử dụng bởi chữ số thứ hai, hoặc dữ liệu [1], để kích hoạt dấu hai chấm.

Vì tôi đã viết các hàm trong lớp INTERVAL phù thủy mà tôi có thể nhận được các chữ số nhất định của khoảng ở dạng M1M0: S1S0, trong đó M là viết tắt của phút và S là giây, điều tự nhiên là tôi sử dụng encodeDigitFunction (int); để hiển thị khoảng thời gian như vậy:

displayInterval () {

data [0] = display.encodeDigit (khoảng.getM1 ()); dữ liệu [1] = 0x80 | display.encodeDigit (khoảng.getM0 ()); data [2] = display.encodeDigit (khoảng.getS1 ()); data [3] = display.encodeDigit (khoảng.getS0 ()); display.setSegment (dữ liệu); }

Bây giờ, bất cứ lúc nào tôi cần hiển thị Khoảng thời gian trên màn hình, tôi có thể gọi hàm displayInterval ().

* Lưu ý "0x80 |…" trên dữ liệu [1]. Nó được sử dụng để đảm bảo rằng bit B7 của dữ liệu [1] luôn là 1 để dấu hai chấm sáng lên.

Điều cuối cùng về màn hình hiển thị, mức tiêu thụ điện năng. Nó có thể không quá quan trọng vì chúng tôi sẽ không giữ nó trong thời gian dài, nhưng nếu bạn quan tâm đến việc làm cho nó thân thiện hơn với pin thì hãy xem xét giảm độ sáng của màn hình vì nó hút dòng điện gấp 3 lần ở độ sáng tối đa so với mức thấp nhất.

Bước 8: Kết hợp tất cả lại với nhau

Để tất cả chúng cùng nhau
Để tất cả chúng cùng nhau

Chúng tôi biết cách kích hoạt máy ảnh, cách điều khiển khoảng thời gian và cách hiển thị cùng khoảng thời gian đó trên màn hình. Bây giờ chúng ta chỉ cần hợp nhất tất cả những thứ này lại với nhau. Tất nhiên, chúng ta sẽ bắt đầu từ hàm loop (). Chúng tôi sẽ liên tục kiểm tra các lần nhấn nút và phản ứng tương ứng với các checkButtons (int, int) và thay đổi khoảng thời gian cho phù hợp và hiển thị khoảng thời gian đã thay đổi. Cũng trong vòng lặp (), chúng tôi sẽ liên tục kiểm tra xem đã đủ thời gian từ lần kích hoạt cuối cùng hoặc lần nhấn nút và gọi hàm trigger () nếu cần. Vì lợi ích của việc tiêu thụ điện năng thấp hơn, chúng tôi sẽ tắt màn hình sau một thời gian.

Tôi đã thêm một đèn LED hai màu, (Đỏ và Xanh lục, cực âm chung) sẽ sáng lên màu xanh lục trong khi kích hoạt () và nó sẽ sáng đỏ cùng với màn hình nếu đang lấy nét và nó sẽ tắt nếu đang lấy nét. tắt.

Ngoài ra, chúng tôi sẽ chuyển sang Arduino nhỏ hơn, Pro Mini.

Bước 9: Thêm một điều cuối cùng

Thêm một điều cuối cùng
Thêm một điều cuối cùng
Thêm một điều cuối cùng
Thêm một điều cuối cùng
Thêm một điều cuối cùng
Thêm một điều cuối cùng

Cho đến nay.. chúng tôi chỉ tạo ra một Máy đo khoảng cách. Hữu ích, nhưng chúng tôi có thể làm tốt hơn.

Đây là những gì tôi đã lưu ý: Máy đo khoảng thời gian hoạt động theo mặc định NGOẠI TRỪ khi chúng tôi gắn một số loại công tắc / cảm biến bên ngoài, sau đó dừng máy đo khoảng thời gian và phản hồi với đầu vào của công tắc / cảm biến. Hãy gọi nó là một cảm biến, nó không nhất thiết phải là một cảm biến được kết nối nhưng tôi sẽ gọi nó như vậy.

Thứ nhất, làm thế nào để chúng tôi phát hiện ra rằng chúng tôi đã gắn cảm biến?

Tất cả các cảm biến chúng tôi sẽ sử dụng / chế tạo sẽ cần ba dây kết nối chúng với arduino (Vcc, GND, Signal). Điều đó có nghĩa là chúng ta có thể sử dụng giắc cắm âm thanh 3,5 mm làm giắc cắm đầu vào cho cảm biến. Và điều đó giải quyết vấn đề của chúng ta như thế nào? Vâng, có những loại giắc cắm 3,5 mm "có công tắc" có các chân bị ngắn vào chân của đầu nối nếu không có đầu nối đực trong chúng và chúng sẽ tách ra khi có đầu nối. Điều đó có nghĩa là chúng tôi có thông tin dựa trên sự hiện diện của cảm biến. Tôi sẽ sử dụng điện trở kéo xuống như được hiển thị (chân kỹ thuật số sẽ đọc CAO mà không có cảm biến và THẤP với cảm biến được gắn vào) trong hình ảnh hoặc bạn cũng có thể gắn vào chân kỹ thuật số vào chân của đầu nối bình thường được kết nối với mặt đất và xác định chân kỹ thuật số đó là INPUT_PULLUP, nó sẽ hoạt động theo cả hai cách. Vì vậy, bây giờ chúng tôi phải chỉnh sửa mã của mình để nó thực hiện tất cả những gì chúng tôi đã viết cho đến nay chỉ khi cảm biến không có mặt hoặc khi kiểm tra pin kỹ thuật số ở mức CAO. Tôi cũng đã chỉnh sửa nó để nó hiển thị "SENS" trên màn hình thay vì khoảng thời gian vô dụng ở chế độ này, nhưng lấy nét vẫn phù hợp với chúng tôi, chúng tôi sẽ giữ chức năng xoay chiều lấy nét bằng cách nhấn cả hai nút và hiển thị trạng thái tiêu điểm thông qua đèn led màu đỏ.

Cảm biến thực sự làm gì?

Tất cả những gì cần làm là đặt 5V vào chân Signal của nó khi chúng ta muốn kích hoạt camera. Điều đó có nghĩa là chúng ta sẽ cần một chân kỹ thuật số khác của Arduino để kiểm tra trạng thái của chân này và khi nó đăng ký HIGH, tất cả những gì nó cần làm là gọi hàm trigger () và máy ảnh sẽ chụp một bức ảnh. Ví dụ đơn giản nhất và là ví dụ chúng tôi sẽ sử dụng để kiểm tra xem điều này có hoạt động hay không, là một nút đơn giản có điện trở kéo xuống. Gắn nút giữa Vcc của cảm biến và chân Tín hiệu và thêm một điện trở giữa chân Tín hiệu và GND, theo cách này, chân Tín hiệu sẽ ở trên GND khi không nhấn nút vì không có dòng điện chạy qua điện trở và khi nút được nhấn, chúng tôi đặt chân Tín hiệu trực tiếp lên HIGH và Arduino đọc điều đó và kích hoạt camera.

Với điều này, chúng tôi đã kết thúc việc viết mã.

* Tôi muốn lưu ý một số vấn đề mà tôi gặp phải với giắc cắm âm thanh mà tôi đã sử dụng. Trong khi cắm giắc đực vào đầu nối, GND và một trong hai chân khác đôi khi sẽ bị ngắn. Điều này xảy ra ngay lập tức và chỉ khi đặt đầu nối vào, nhưng nó vẫn đủ dài để Arduino đăng ký một đoạn ngắn để Arduino chỉ khởi động lại. Điều này không xảy ra thường xuyên nhưng vẫn có thể là một mối nguy hiểm và có khả năng phá hủy Arduino, vì vậy hãy tránh các đầu nối mà tôi đã sử dụng.

Bước 10: Chứa tin nhắn

Chứa tin nhắn
Chứa tin nhắn
Chứa tin nhắn
Chứa tin nhắn
Chứa tin nhắn
Chứa tin nhắn
Chứa tin nhắn
Chứa tin nhắn

Bạn có thể thấy từ những hình ảnh rằng breadboard đang trở nên lộn xộn và chúng ta đã hoàn thành vì vậy chúng ta cần chuyển mọi thứ sang perfboard / PCB. Tôi đã mua PCB vì tôi nghĩ rằng tôi sẽ tạo ra nhiều thứ hơn nữa để bằng cách này, tôi có thể dễ dàng tái tạo chúng.

Tôi đã sử dụng Eagle để thiết kế PCB và tìm thấy các thiết kế cho tất cả các bộ phận tôi đã sử dụng. Có một điều nhỏ trong thiết kế của tôi mà tôi ước mình đã không làm và đó là một miếng đệm dây cho Vcc của màn hình. Tôi đã thấy nó quá muộn và không muốn làm hỏng những gì tôi đã thiết kế trước đó và đã đi theo cách lười biếng là thêm miếng đệm dây và sau đó phải thêm dây vào các kết nối này thay vì dấu vết đồng nên hãy nhớ rằng nếu bạn đang sử dụng thiết kế của tôi.

Bảng Arduino và màn hình được kết nối với PCB thông qua các đầu cắm chân cái thay vì được hàn trực tiếp vào PCB, vì những lý do rõ ràng. Bằng cách này sẽ có nhiều không gian cho các thành phần khác dưới màn hình cho các thành phần khác như điện trở, bóng bán dẫn và thậm chí cả giắc cắm âm thanh.

Tôi đã đặt các nút nhấn micro, theo thiết kế, nên được hàn trực tiếp nhưng bạn cũng có thể sử dụng các lỗ cho đầu cắm pin cái và kết nối các nút bằng dây nếu bạn muốn chúng được gắn trên vỏ chứ không phải trên PCB.

Chúng tôi cũng sẽ đặt một giắc cắm âm thanh nữ khác để cắm vào cáp kết nối với máy ảnh. Bằng cách này, bảng trở nên linh hoạt hơn vì bằng cách đó, chúng tôi sẽ có thể kết nối với các máy ảnh khác bằng các đầu nối khác.

Bước 11: Sens0rs

Image
Image
Sens0rs
Sens0rs

Hãy xem xét các cách triển khai cảm biến.

Vì vậy, cảm biến sẽ có điện áp cung cấp là 5V và nó sẽ cần phải cung cấp mức CAO kỹ thuật số trên chân tín hiệu của nó khi chúng ta muốn kích hoạt máy ảnh. Điều đầu tiên tôi nghĩ đến là một cảm biến chuyển động, cụ thể là PIR. Có những mô-đun được bán cho Arduino có cảm biến này trên chúng và chỉ làm những gì chúng tôi muốn. Chúng được cấp nguồn 5V và có một chân đầu ra mà chúng đặt 5V khi chúng được kích hoạt, chúng tôi chỉ cần kết nối chân của nó với giắc cắm âm thanh 3,5 mm và chúng tôi có thể cắm ngay vào bảng. Một điều cần lưu ý là cảm biến này cần thời gian để nóng lên và bắt đầu hoạt động bình thường, vì vậy đừng mong đợi nó hoạt động bình thường ngay sau khi bạn cắm vào, hãy cho nó một chút thời gian và sau đó thiết lập nó và bất kỳ thứ gì còn sống sẽ đi vào phạm vi sẽ kích hoạt máy ảnh.

Vì chúng tôi đang suy nghĩ theo hướng các bảng cảm biến Arduino đã được sản xuất nên một bảng cảm biến khác xuất hiện trong tâm trí, đó là âm thanh. Các bảng này thường được làm theo cách mà chúng có một chân xuất ra giá trị tương tự của âm thanh mà nó thu được và một chân khác, chân kỹ thuật số, tạo ra mức CAO hợp lý nếu âm thanh mà nó thu được vượt qua một mức nhất định. Chúng tôi có thể đặt mức này để cảm biến bỏ qua giọng nói của chúng tôi nhưng ghi lại tiếng vỗ tay. Bằng cách đó, bất cứ khi nào bạn vỗ tay, bạn sẽ kích hoạt camera.

Bước 12: PoweeEeEer

PoweeEeEer
PoweeEeEer
PoweeEeEer
PoweeEeEer

Tôi nghĩ rằng cách dễ nhất để cung cấp năng lượng cho thứ này là sử dụng một bộ sạc dự phòng chứ không phải bên ngoài. Chúng tôi sẽ giữ chức năng sạc điện thoại của mình hoặc bất cứ thứ gì và kiểm soát dòng điện đến bo mạch thông qua một công tắc. Chúng tôi sẽ xác định vị trí các chân của đầu nối USB đầu ra trên bảng mạch trong bộ nguồn là dây GND và Vcc (5V) và dây hàn trực tiếp vào chúng và từ đó vào bảng mạch của chúng tôi.

Bước 13: Bao vây.. Kinda

Bao vây.. Kinda
Bao vây.. Kinda
Bao vây.. Kinda
Bao vây.. Kinda
Bao vây.. Kinda
Bao vây.. Kinda

Tôi thực sự đã đấu tranh với điều này. Khi tôi mở hộp mà tôi muốn đặt PCB hiện có vào, tôi nhận ra rằng không có cách nào tốt để phù hợp với mọi thứ như tôi muốn và sau đó tôi quyết định thiết kế một PCB mới, lần này với optocouplers. Tôi muốn đặt PCB ngay bên dưới cạnh mà tôi sẽ khoan lỗ cho các thành phần nhất định cần được nhìn thấy / chạm vào. Để điều này hoạt động, tôi cần phải hàn trực tiếp màn hình và Arduino vào bo mạch, không có ổ cắm hoặc tiêu đề, và đó là vấn đề đầu tiên nằm ở chỗ. Thật kinh khủng khi phải khắc phục sự cố bất cứ thứ gì vì tôi chưa sẵn sàng hàn nó ngay lập tức cho đến khi tôi kiểm tra mọi thứ đang hoạt động và tôi thực sự không thể kiểm tra bất cứ điều gì vì tôi không thể hàn nó, v.v. đừng không làm điều này. Có vấn đề về số, tạo lỗ trên vỏ máy. Tôi đoán là tôi đã đo sai vì không có lỗ nào trên vỏ được căn chỉnh với các thành phần trên PCB và tôi phải phóng to chúng và các nút quá cao trên PCB và chúng sẽ luôn bị nhấn khi tôi đặt bo mạch vào vị trí aa và vì tôi muốn có giắc cắm âm thanh ở bên cạnh, tôi cũng phải mở rộng những lỗ đó để vừa với giắc cắm trước và sau đó hạ bo mạch xuống để màn hình và các nút đi qua.. kết quả thật tồi tệ.

Tôi gần như đã làm cho các lỗ khủng khiếp bớt khủng khiếp hơn bằng cách phủ lên trên cùng một vài tấm bìa cứng mỏng, trong đó tôi khoét các lỗ hợp lý hơn cho các thành phần và.. tôi nghĩ nó vẫn khủng khiếp nhưng dễ nhìn hơn.

Nhận định, tôi khuyên bạn nên làm điều này bằng cách mua các thành phần gắn vào vỏ máy, chứ không phải trực tiếp vào PCB. Bằng cách đó, bạn có nhiều tự do hơn trong việc sắp xếp các thành phần và ít chỗ để mắc lỗi hơn.

Bước 14: Vây

Image
Image
Vây
Vây

Tôi đã hoàn thành, nhưng đây là một số điều mà tôi sẽ làm khác đi:

Sử dụng giắc cắm âm thanh 3,5 mm chất lượng tốt hơn. Những thứ tôi đã sử dụng có xu hướng làm ngắn các thiết bị đầu cuối trong khi lắp hoặc rút giắc cắm, dẫn đến việc làm ngắn nguồn cung cấp, do đó giống với Arduino hoặc nó chỉ tạo ra các bộ kích hoạt giả. Tôi đã nói điều này ở bước trước nhưng tôi sẽ nói lại lần nữa.. đừng hàn bo mạch Arduino mà không có tiêu đề / ổ cắm, nó chỉ làm cho bất kỳ loại khắc phục sự cố hoặc tải lên mã mới và v.v. khó hơn nhiều. Tôi cũng nghĩ rằng việc có đèn LED báo hiệu rằng thứ đang bật sẽ rất hữu ích vì tôi thường không thể biết nếu không nhấn nút kể từ khi màn hình tắt. Và điều cuối cùng, một chức năng tạm dừng. Tôi tưởng tượng nó hữu ích khi ví dụ như khi cắm cảm biến PIR vì nó cần thời gian để nóng lên hoặc chỉ khi di chuyển nó xung quanh bạn không muốn nó kích hoạt nên bạn có thể tạm dừng mọi thứ, nhưng bạn cũng có thể đơn giản xoay tắt máy ảnh để.. bất cứ điều gì.

Một điều gọn gàng khác là Velcro nó trên giá ba chân vì nó có nhiều khả năng được sử dụng trên đó.

Vui lòng hỏi bất cứ điều gì về dự án này trong phần bình luận và tôi rất muốn biết liệu bạn có xây dựng nó hay không và nó diễn ra như thế nào đối với bạn.

Đề xuất: