Mục lục:

Đồng hồ định vị 'Weasley' bằng 4 kim: 11 bước (có hình ảnh)
Đồng hồ định vị 'Weasley' bằng 4 kim: 11 bước (có hình ảnh)

Video: Đồng hồ định vị 'Weasley' bằng 4 kim: 11 bước (có hình ảnh)

Video: Đồng hồ định vị 'Weasley' bằng 4 kim: 11 bước (có hình ảnh)
Video: GINNY WEASLEY - Nóc Nhà Của Gã Đầu Thẹo Mạnh Mẽ Như Thế Nào?! | Harry Potter Series 2024, Tháng bảy
Anonim
Đồng hồ định vị 'Weasley' bằng 4 kim
Đồng hồ định vị 'Weasley' bằng 4 kim

Vì vậy, với Raspberry Pi đã hoạt động được một thời gian, tôi muốn tìm một dự án tốt cho phép tôi tận dụng nó một cách tốt nhất. Tôi đã xem qua chiếc đồng hồ vị trí Weasley có thể dạy được của riêng bạn tuyệt vời này của ppeters0502 và nghĩ rằng sẽ rất tốt để thử.

Về cơ bản, đồng hồ bao gồm một Raspberry Pi điều khiển các Servos để quay kim đồng hồ. Như trong ngôi nhà của gia đình Weasley trong bộ sách / phim Harry Potter, mỗi thành viên trong gia đình đều có bàn tay của riêng mình. Mỗi bàn tay chỉ vị trí hiện tại của thành viên trong gia đình đó. Đồng hồ đạt được điều này bằng cách nhận tin nhắn từ điện thoại di động của gia đình bất cứ khi nào họ đi vào hoặc rời khỏi bán kính được xác định trước.

Những điểm khác biệt chính so với những phiên bản có thể điều khiển trước đó là tôi cần có 4 kim chứ không phải 2 (nếu không các con gái của tôi sẽ phàn nàn) và tôi quyết định xây dựng cả khung chứ không lấy một chiếc đồng hồ cũ để sử dụng lại. Điều này là do tôi lo ngại rằng không gian sẽ là một vấn đề trong một hộp đồng hồ hiện có, với nhu cầu vừa với 4 servo, v.v.

Nó mất nhiều thời gian hơn tôi dự đoán, mặc dù chủ yếu là nơi tôi gặp phải những vấn đề rắc rối khiến tôi bối rối và dường như không được đề cập trong bài đăng gốc. Không có gì chống lại bản gốc có thể giảng dạy, nhìn chung là tuyệt vời, nhưng một số năm đã trôi qua và các phiên bản của mọi thứ đã thay đổi… vv Ngoài ra, việc ở Vương quốc Anh có nghĩa là một số yếu tố Imperial / Metric gây ra nhiều thách thức hơn tôi mong đợi.

Ngoài ra, mặc dù tôi ổn với việc viết mã, việc chế tạo đồng hồ chắc chắn đã kéo dài thời gian của tôi và yêu cầu một số công cụ bổ sung, điều này cũng khiến tôi chậm lại phần nào.

Ở phần cuối, tôi sẽ bao gồm một phần về "Những điều tôi sẽ làm khác / tốt hơn nếu tôi làm lại …"

Quân nhu:

Một trong những điều khiến tôi ấn tượng là các thành phần đắt tiền liên quan đến kim đồng hồ. 4 tay chắc chắn đắt hơn 2. Tôi quyết định đưa vào một số chi phí để bạn có một số ý tưởng. Đây là lần đầu tiên tôi cộng lại tất cả, và không tính đến các công cụ, tôi nghĩ mình đã tiêu khoảng 200 bảng Anh. Cộng với một số thứ tôi không sử dụng (và không bao gồm bên dưới) cộng với Pi, cộng với bộ nguồn cả hai thứ mà tôi đã có.

Pi vv

  1. Raspberry Pi - không thể nhớ giá ban đầu của nó là bao nhiêu nhưng nó là Model 2B. Tôi nghĩ rằng nếu bạn chưa có, thì ngay cả Pi Zero cũng có thể làm được. Tôi đã thêm một dongle wifi và thẻ SD với Raspbian. Và tôi đã có một bộ sạc điện thoại Android cũ nằm xung quanh.
  2. Adafruit Servohat cho Pi - £ 16
  3. Nguồn cung cấp cho Servohat - Điều này tôi thực sự rất vất vả để tìm ra vì tất cả các trang web đều chỉ trỏ đến trang adafruit mà sau đó, rõ ràng là đề xuất nguồn cung cấp điện của Hoa Kỳ. Sau đó, tôi nhận ra rằng tôi có một nguồn cung cấp điện áp biến đổi cũ với các mẹo có thể thay thế cho nhau nên tôi đã sử dụng nó. Nhưng cái ở Mỹ là 8 đô la nên đó là sân chơi bóng.
  4. Vỏ cho số Pi, để sau đó tôi có thể gắn nó vào khung đồng hồ. £ 5

Servo và bánh răng

Ở đây tôi đang báo giá cho cả 4, vì vậy hãy chia nếu bạn muốn có ít tay hơn (Cộng thêm nó là ~ £ 40 MỖI TAY = £ 160: -o

  1. 4 x Servos - Tôi đã sử dụng những cái do ppeters0502 đề xuất - được tìm thấy trên ebay với giá ~ £ 15 mỗi cái = £ 60 - Tôi đã tìm kiếm văn bản sau "GWS-Digital-Servo-Sail-Winch-S125-1T-2BB-360-độ "nhưng đôi khi chúng không có sẵn
  2. 4 ống đồng thau được lắp chính xác bên trong nhau - ~ £ 3 mỗi ống. Tôi nhận được 1 mỗi 1/4 ", 7/32", 3/16 ", 5/32" = £ 11
  3. 4 x kẹp kẹp vào ống đồng để cho phép bạn gắn bánh răng. ~ £ 7 mỗi cái = £ 28. Tôi nhận được chúng từ ActiveRobots, những người thực hiện các đơn đặt hàng thường xuyên từ Servocity ở Mỹ, cho phép bạn tránh việc vận chuyển quốc tế. Họ cũng có thể lấy bất kỳ thứ gì khác mà bạn có thể tìm thấy trên trang web chính của Servocity ở Hoa Kỳ. Điều này rất hữu ích cho 2 mục tiếp theo
  4. 4 x bánh răng mẫu acetyl 0,770 "để gắn trên các trung tâm kẹp. ~ £ 6 mỗi bánh = £ 24
  5. 4 x bánh răng acetyl spline gắn trên xe đẩy để gắn trên servo. ~ £ 6,50 mỗi = £ 26
  6. 1 x gói đai ốc lục giác cho bánh răng gắn vào đai ốc kẹp = £ 2,60
  7. Khóa hex 1 x 7/64 "(khóa allen) bởi vì bất cứ thứ gì đến từ Mỹ đều là đế quốc, vì vậy hàng trăm khóa allen tôi đã có đều vô dụng = £ 1

Đối với bản dựng Vật lý

Ở đây, tôi chủ yếu sử dụng các đường tắt của những thứ tôi đã nói dối

  1. 2 x hình vuông ván ép cho tấm 'mặt' và 'mặt sau'
  2. Sau đó, tôi cắt các hình trụ 4x10cm khỏi một đường ray lan can cũ mà tôi có, để kết nối mặt sau với mặt
  3. Một số khối để gắn các servo ở đúng độ lệch - chỉ là các đường cắt bằng gỗ mềm mà tôi cắt theo kích thước.
  4. Các loại vít. từ rất nhỏ (để gắn hộp Pi vào khung) đến trung bình (để gắn khung với nhau)
  5. Tấm 0,75mm bằng thép nhẹ khoảng 50cm x 20cm (để cắt rời tay). Đây là thứ duy nhất tôi mua ~ £ 9 từ Wickes

Công cụ

Một số thứ tôi có và một số thứ tôi đã mượn hoặc mua

  1. Hàn sắt + hàn điện - để gắn các đầu nối vào Adafruit Hat & Pi.
  2. Jigsaw - để cắt hình dạng thô của bàn tay
  3. Máy khoan. chỉ là một máy khoan 18V không dây bình thường
  4. Mũi khoan - Hãy nhớ rằng bạn SẼ cần các mũi khoan đế quốc để tạo các lỗ khớp với các ống đồng. Tôi đã xoay sở để vay một ít.
  5. cưa sắt - để cắt ống đồng. Đừng làm những gì tôi đã làm và chi £ 3 cho máy cắt ống, nó hoạt động bằng áp suất và có nghĩa là bên trong các ống nhỏ hơn một chút. vì vậy ống giảm kích thước tiếp theo không vừa với
  6. Máy mài để bàn - Tôi không có một cái trong số này nhưng một người bạn đã làm và nó giúp việc tạo hình bàn tay dễ dàng hơn RẤT NHIỀU. Cho đến lúc đó tôi chỉ sử dụng các tập tin. Tôi sẽ không mua một chiếc chỉ cho dự án này, nhưng đối với những người cầm tay kim loại thì nó thật tuyệt.
  7. Tôi đã mua một số tệp điểm kim cương các loại (rất nhỏ). hữu ích cho bàn tay và ống khoảng £ 15
  8. giấy nhám thô và mịn
  9. một số kẹp nhỏ giữ cố định đồ vật khi khoan.
  10. một phó vì lý do tương tự.

Bước 1: Thiết lập điện thoại của bạn để gửi vị trí của họ đến Pi của bạn (Phần I Nhà môi giới MQTT)

Bit này được mô tả rất tốt bởi ppeters0502 trong cuốn Weasley Clock Huấn luyện xuất sắc của mình. Thật kỳ lạ, mặc dù có thể phản ánh các bộ kỹ năng khác nhau, anh ấy bắt đầu với bản dựng và sau đó chuyển sang phần mềm, tôi đã làm theo cách khác. Vì vậy, tôi bắt đầu với chiếc điện thoại… chờ, không, tôi không bắt đầu với nhà môi giới MQTT, đó là Bước 6 trong Có thể hướng dẫn của anh ấy. Tôi sẽ bỏ qua tất cả các bit mà anh ấy làm rất tốt và chỉ ném vào một số bit mà tôi có thể thêm vào. Tôi đã đi theo con đường CloudMQTT mà anh ấy đã đề cập.

NHƯNG khi tôi đang viết bài này, tôi đã kiểm tra liên kết đến các gói và nhận thấy rằng không còn gói miễn phí nào nữa! Họ đã rút lại nó, vì những gì có vẻ như là có lý do. tức là mọi người sẽ thiết lập một phiên bản miễn phí và sau đó không bao giờ sử dụng nó. Tôi không nhận thấy vì các phiên bản hiện tại có thể tiếp tục. Vì vậy, tôi sẽ không thay đổi. Nhưng nó làm cho các hướng dẫn hơi thừa. Dường như có 3 lựa chọn.

  1. Trả 5 đô la mỗi tháng cho Cloud MQTT (nhưng điều đó nghe có vẻ đắt cho đồng hồ trên cơ sở liên tục).
  2. Đi đến Mosquitto trên tuyến đường Pi như được mô tả trong Hướng dẫn đầu tiên. Tôi không thể bình luận về điều đó, nhưng có thể là một lựa chọn tốt.
  3. Chỉ cần google "nhà môi giới đám mây MQTT miễn phí" và có vẻ như có một số người khác.

Vì vậy, giả sử rằng bạn có một nhà môi giới MQTT đang hoạt động, nếu đó là bất kỳ thứ gì giống như CloudMQTT thì sẽ có Máy chủ, Người dùng, Mật khẩu và Cổng được hiển thị. Bạn sẽ cần tất cả những thứ này để thiết lập điện thoại của mình để gửi cho nhà môi giới vị trí / chuyển động của bạn.

Bước 2: Thiết lập điện thoại của bạn để gửi vị trí của họ đến Pi của bạn (Phần II Owntracks)

Điều này cũng được đề cập rất tốt trong Bản gốc có thể hướng dẫn, ở Bước 7 (Android), 8 (iOS) & 9 (thiết lập Khu vực).

Tôi chỉ có thiết bị iOS nên không thử bước 7.

Tôi sẽ thêm gì vào những hướng dẫn đó?

  1. Trong thiết lập cũng có các trường TrackerID và DeviceID. Những thứ này bạn nên có để có thể nhận dạng bạn trong gia đình bạn. Ví dụ. Tôi đã có chúng là R và RPhone tương ứng. Điều này có nghĩa là bạn có thể chuyển đến đồng hồ Servo và do đó quay kim nào.
  2. Khu vực là tên cho các vị trí mà bạn muốn theo dõi.
  3. Mỗi vùng được xác định bởi Tên, Vĩ độ, Kinh độ và Bán kính.
  4. Bởi vì tôi muốn có một số vị trí dưới dạng một phần trên Đồng hồ của mình, tôi đã sử dụng quy ước đặt tên, điều này hóa ra rất hữu ích. Các phương pháp khác có thể thực hiện được nhưng điều này đã làm việc cho tôi.

    • Ví dụ: Đối với phần GIA ĐÌNH của đồng hồ, tôi muốn có bố mẹ và anh chị em của tôi và bố mẹ và anh chị em của vợ tôi. Vì vậy, tôi đã có các vị trí như "Family Tom", "Family Dick", Family Harry "&" Family FatherR ". Điều này có nghĩa là giai đoạn tiếp theo có thể biết những gì cần chuyển đến Đồng hồ.
    • Hãy nhớ rằng mọi người có thể có các vị trí khác nhau. Nhưng miễn là chúng phù hợp với quy ước đặt tên thì tốt thôi. Ví dụ. công việc của tôi sẽ khác với khu vực làm việc của vợ tôi và được gọi là khác. nhưng miễn là cả hai đều bắt đầu "Công việc" thì tất cả đều ổn.
  5. Bạn muốn chế độ được đặt thành 'Quan trọng' trên màn hình Bản đồ. Điều này có nghĩa là bạn (hầu hết) chỉ nhận được tin nhắn khi bạn nhập hoặc rời khỏi khu vực. Đây dường như là phiên bản cập nhật của ghi chú được đánh dấu QUAN TRỌNG: ở cuối Bước 8 trong Bản gốc có thể hướng dẫn.
  6. Như đã đề cập trong Hướng dẫn ban đầu, sử dụng Google Maps là một cách tuyệt vời để tìm ra Vĩ độ / Độ dài của một nơi nào đó. Tôi thấy hiệu quả hơn khi thực hiện việc này hàng loạt, tìm ra tất cả các Vĩ độ / Kinh độ của vị trí của tôi, sau đó tôi dán chúng vào Ghi chú (trên máy Mac của tôi) và với tính năng đồng bộ hóa đám mây, điều đó có nghĩa là chúng đã xuất hiện một cách kỳ diệu trên iPhone của tôi trong Notes và tôi có thể sao chép / dán chúng vào Owntracks. Điều đó cũng có nghĩa là tôi có thể gửi tệp đến điện thoại của gia đình mình và tất cả chúng tôi đều có địa điểm nhất quán.
  7. Các vị trí gần nhau có thể gây ra vấn đề. Anh trai tôi sống cách đó 2 con phố, và ban đầu điện thoại của tôi cứ nghĩ rằng tôi đang ở cùng khu vực nhà anh ấy cũng như ở nhà. Cuối cùng tôi đã phải đưa thêm logic vào Node Red để nắm bắt và bỏ qua điều này đang xảy ra.

Bước 3: Thiết lập Raspberry Pi

Thiết lập Raspberry Pi
Thiết lập Raspberry Pi

Vì vậy, ở đây tôi giả định rằng bạn đã thiết lập Pi cơ sở và trên wifi. Tôi đang chạy Raspbian nhưng nó không thành vấn đề. Sử dụng hướng dẫn tại raspberrypi.org để thiết lập tất cả.

Lưu ý rằng Pi có các cổng để hiển thị với màn hình và bàn phím / chuột, v.v. NHƯNG rõ ràng một khi bạn có nó trong đồng hồ, bạn sẽ không muốn bất kỳ điều nào trong số đó. Vì vậy, câu trả lời, được gợi ý bởi một người nào đó trên trang web Raspberry pi, tôi nghĩ, là thiết lập một kết nối VNC. Điều này cho phép bạn kết nối từ một thiết bị khác với Pi và điều khiển nó. Tôi làm điều đó từ máy Mac của mình nhưng cũng đã làm điều đó từ iPad. Tôi khuyên bạn nên sử dụng một cái gì đó có bàn phím để dễ sử dụng.

Tôi chỉ thấy rằng họ dường như đã làm cho nó dễ dàng hơn kể từ khi tôi kết nối … xem tại đây

Về cơ bản, bạn kết nối và nhận được một cửa sổ là giao diện Pi tiêu chuẩn.

Vì vậy, bạn có một cửa sổ đến Pi từ máy tính xách tay hoặc máy tính của bạn.

Bây giờ bạn cần kết nối các Servos.

Đầu tiên, bạn cần thực hiện một số thao tác hàn khá cơ bản để gắn chiếc mũ quả trám vào Pi. Nó hơi khó sử dụng, nhưng mặc dù đã không hàn trong 30 năm lẻ, nó vẫn ổn. Như mọi khi, tôi đã tìm thấy một video hữu ích trên YouTube để hướng dẫn tôi về nó, đó là một sự trợ giúp tuyệt vời.

Trong khi chiếc mũ có thể chạy 16 servo, tôi chỉ cần 4 chiếc và vì vậy tôi chỉ bận tâm đến việc hàn bộ 4 chân đầu tiên.

Sau đó, các Servos chỉ cần đẩy vào các chân. Trước tiên, tôi đã làm một việc để kiểm tra xem tôi có thực sự có thể làm cho servo di chuyển hay không.

Đây là nơi tôi gặp phải rào cản lớn đầu tiên của mình. Tôi đã có một tập lệnh python rất cơ bản để di chuyển các servos và thực sự là không có gì xảy ra. Tôi đã dành khoảng một tuần để thử các kịch bản mới, v.v., và sau đó khói bắt đầu xuất hiện trên mũ. Tắt mọi thứ, tôi kiểm tra sơ đồ. Nó là một thành phần bảo vệ chống lại phân cực ngược. Bởi vì tôi có một nguồn điện nhiều đầu, nhiều điện áp, tôi đã bỏ lỡ thực tế là bạn có thể có đầu ra DC theo cả hai cách bằng cách đảo ngược đầu. Tôi đã nhầm (cơ hội 50:50) và vừa đốt cháy chiếc mũ quả trám đầu tiên của mình

:-(Vì vậy, một chút chậm trễ khi tôi mua một cái mới, hàn lại và sửa đầu. Tốt hơn nhiều.

Tiếp theo, tôi cần tìm ra cách di chuyển các servo đến đúng điểm trên đồng hồ. Điều đó sẽ đến trong Bước 5, nhưng những gì tôi đã làm, khi chưa chế tạo đồng hồ thực tế, là vặn nhẹ các servo vào một mảnh gỗ ngẫu nhiên và dán một số băng keo có hình mũi tên lên chúng, như trong hình. Điều này đã đưa ra một phản hồi rất trực quan cho những gì tôi đang viết mã.

Bước 4: Cài đặt Node Red (Nhận thông báo từ máy chủ MQTT đến tập lệnh Python của bạn)

Cài đặt Node Red (Nhận thông báo từ máy chủ MQTT đến tập lệnh Python của bạn)
Cài đặt Node Red (Nhận thông báo từ máy chủ MQTT đến tập lệnh Python của bạn)
Cài đặt Node Red (Nhận thông báo từ máy chủ MQTT đến tập lệnh Python của bạn)
Cài đặt Node Red (Nhận thông báo từ máy chủ MQTT đến tập lệnh Python của bạn)
Cài đặt Node Red (Nhận thông báo từ máy chủ MQTT đến tập lệnh Python của bạn)
Cài đặt Node Red (Nhận thông báo từ máy chủ MQTT đến tập lệnh Python của bạn)
Cài đặt Node Red (Nhận thông báo từ máy chủ MQTT đến tập lệnh Python của bạn)
Cài đặt Node Red (Nhận thông báo từ máy chủ MQTT đến tập lệnh Python của bạn)

Node-RED là một chương trình mà bạn cài đặt trên Pi, cung cấp cho bạn một giao diện trực quan (trên trình duyệt của bạn) để nhận thông báo từ Máy chủ MQTT của bạn và sử dụng nó để chuyển thông tin chính xác đến tập lệnh python của bạn (được đề cập trong bước tiếp theo (Bước 5). Tôi đã sử dụng khá nhiều các hướng dẫn của ppeters0502 trong Bước 5. Có logic trong các luồng này và logic bổ sung trong python và bạn có thể có nhiều hơn hoặc ít hơn trong mỗi hướng dẫn, tùy thuộc vào sở thích của bạn. Về cơ bản, bạn cần phải làm sau đây

  1. Có các nút nhận cho các tin nhắn MQTT - các nút này có màu tím nhạt và tôi có 1 nút cho mỗi thành viên trong gia đình
  2. Ánh xạ đó với servo mà bạn muốn di chuyển (được đánh số 0, 1, 2, 3)
  3. Xác định xem bạn đang vào hay rời khỏi bán kính trên OwnTracks
  4. Tìm ra vị trí mà servo cần trỏ đến

    Có một số ngoại lệ đối với các quy tắc cơ bản mà tôi cần xây dựng

  5. Đặt góc chính xác

Tôi đã để Node-RED thực hiện 4 đầu tiên và giữ cho Python tương đối đơn giản.

Bạn có thể xem quy trình cơ bản tại đây và tất cả các quy trình có thể được xuất sang định dạng ở đây, có nghĩa là bạn có thể nhập quy trình cơ bản này vào Node-RED của mình và sau đó điều chỉnh. Lưu ý rằng tôi đã loại bỏ tất cả các kết nối khỏi các nút màu tím để bạn không thể truy cập phiên bản MQTT của tôi. Tôi cũng đã loại bỏ tất cả các nút thử nghiệm vì chúng chứa dữ liệu thực tế… bạn có thể cần phải thay đổi loại tệp này thành flow.json để nhập vào Node-RED của bạn nhưng Guiductables không cho phép tôi tải lên.

Các nút màu xanh lá cây là các nút gỡ lỗi, sau đó hiển thị đầu ra trong cửa sổ gỡ lỗi ở bên phải màn hình (có thể cần mở rộng - tìm mũi tên ở nửa bên phải)

Bit đầu tiên cần làm là bit "Trực tiếp - chỉ để gỡ lỗi". Điều đó kiểm tra xem bạn có thể nhận được các tin nhắn MQTT hay không và xem nội dung trong đó là gì. json chỉ là một phiên bản có cấu trúc hơn của các thông báo cho phép bạn lấy dữ liệu ra dễ dàng hơn. Trong luồng này, khi phát trực tiếp, tôi sau đó kết nối các nút màu tím trên cùng bên trái với nút json ở bên phải của chúng.

Kiểm tra các nút

Một khi bạn biết các thông điệp sẽ hiển thị trực tiếp như thế nào, sẽ rất nhàm chán khi bạn phải bước ra khỏi nhà, xuống đường và quay lại, chỉ để kích hoạt một sự kiện. Khi bạn đã hoàn thành việc đó, bạn có thể sao chép thông báo vào một trình kích hoạt THỬ NGHIỆM, sau đó chỉ cần nhấp vào nó để mô phỏng sự kiện. Bạn cũng có thể thay đổi dữ liệu, để giả vờ là cho các vị trí khác nhau (đảm bảo chúng tương ứng chính xác với tên vị trí trong Owntracks).

Bạn có thể thấy trong luồng rằng các trường hợp thử nghiệm đều đi vào một nút riêng biệt và sau đó đi vào nút json. Điều này hoàn toàn là để làm gọn gàng màn hình.

Tôi không thể nhấn mạnh đủ mức độ hữu ích của các nút này và vẫn còn.

Gọi Python

Vì vậy, sau đó tôi chạm vào rào cản tiếp theo. Cái này mất rất nhiều googling trong các diễn đàn, v.v. Luồng của tôi sẽ hoạt động hoàn hảo, nhưng nó sẽ không kích hoạt tập lệnh python của tôi. Tôi không thể giải quyết vấn đề này, nhưng tôi sẽ không để bạn chửi thề, v.v. Chỉ cần nói rằng, như được đánh dấu trong ảnh chụp màn hình thứ hai, bạn phải chỉ định python3, vì rõ ràng Node-RED giả định python2, trừ khi bạn chỉ định.

2 biến chứng bổ sung - chỉ khi cần thiết

Sau đó, tôi gặp một số thách thức trong đó logic không hoạt động. Đầu tiên là Owntracks có một chút kỳ lạ và, vì anh trai tôi sống cách đó 2 con phố, nó thường nói rằng tôi đang ở 2 nơi cùng một lúc, hoặc liên tục chuyển đổi giữa các nơi. Cách duy nhất tôi có thể làm tròn nó là thêm vào một điều kiện để ngăn chặn dương tính giả. Nếu nó khẳng định tôi đang ở nhà anh ấy, thì tôi chuyển qua và kiểm tra Kinh độ / Vĩ độ thực tế trong tin nhắn và hủy nó nếu nó nói rằng tôi thực sự đang ở nhà.

Vấn đề khác là, khi dắt chó đi dạo, tôi thực sự không thể có được bán kính tốt. Tôi thường đi bộ trong cùng một khu vực, vì vậy ở đây, tôi đã nói "nếu tôi vào khu vực này, tôi chắc chắn đang dắt chó đi dạo, và sẽ ở cho đến khi tôi về nhà." điều này có nghĩa là nó sẽ không chuyển sang quán rượu mà tôi đi qua trên đường về nhà hoặc nhiều địa điểm địa phương khác có thể kích hoạt trong khi dắt chó đi dạo. Để thực hiện việc này, tôi cần thiết lập một số biến Ngữ cảnh liên tục (tra cứu chúng trên Node-RED. Xem ảnh chụp màn hình. Các biến này tồn tại cho đến khi Node-RED được khởi động lại và vì vậy tôi có thể nói Nếu trên một chuyến đi dạo, hãy đặt Biến ngữ cảnh thành "Dog". Sau đó, bỏ qua BẤT KỲ ĐIỀU GÌ khác trừ khi tôi 'Vào' Trang chủ.

Ảnh chụp màn hình cuối cùng là một trong những quy trình cuối cùng thực tế của tôi, với tất cả các trường hợp ngoại lệ, chỉ dành cho bạn quan tâm.

Bước 5: Thực sự di chuyển Servos bằng Python trên Pi

Một sự chuyển hướng ngắn sang Servos. Tôi không biết gì về servos, nhưng có rất nhiều thông tin trực tuyến. Những cái tôi đã sử dụng là những chiếc servo liên tục có thể quay 360 độ và mượt mà. Loại chính khác là các servo bước di chuyển theo từng đoạn (các bước) và dường như chỉ đi lên khoảng 180 độ (rõ ràng là không hữu ích ở đây). Ưu điểm của servo bước là bạn có thể chỉ cần đặt vào một góc và chúng di chuyển đến điểm đó và dừng lại. Tất cả các tài liệu tôi tìm thấy đều nói rằng các servos liên tục hoạt động bằng cách được cung cấp một tốc độ và thời gian để duy trì tốc độ đó (ví dụ: tốc độ đầy đủ trong 1 giây) và chúng kết thúc ở nơi chúng kết thúc, nhưng nó liên quan đến điểm xuất phát của chúng. Sau rất nhiều lần thử, tôi không thể làm được điều này, nhưng phát hiện ra rằng, bằng cách sử dụng băng ghế thử nghiệm, các servo liên tục quay trở lại cùng một điểm với cùng một góc độ. Điều đó dễ dàng hơn nhiều, vì vậy tôi chỉ làm điều đó. Có thể có một số nhược điểm mà tôi không biết, nhưng nó phù hợp với tôi. Tuy nhiên, lưu ý rằng mỗi servo là duy nhất và vì vậy bạn phải có một bộ góc riêng cho mỗi servo. Tôi thấy dễ dàng nhất là có một tập lệnh python 'hiệu chỉnh', nơi tôi có thể đặt các servo theo các góc lần lượt, tinh chỉnh chúng cho đến khi tất cả đều ổn. Đây là tập lệnh đầu tiên được đính kèm. Bạn chỉ cần nhận xét về các Servos mà bạn không thử nghiệm, tập trung vào một, sau đó điều chỉnh các giá trị khi bạn cần. LƯU Ý: việc hiệu chuẩn cho băng ghế thử nghiệm rất đơn giản, thô sơ và đã sẵn sàng. Bạn sẽ cần phải hiệu chỉnh lại khi đồng hồ được lắp ráp, bởi vì các bánh răng, v.v. sẽ thay đổi mọi thứ. Sau đó, kịch bản thứ hai là khá cơ bản. Nó thực hiện những điều sau

  1. Nhập một vài thư viện
  2. chuyển các biến đến từ Node-RED sang các biến trong script
  3. ánh xạ các góc được xác định bởi tập lệnh hiệu chuẩn đến các vị trí trên đồng hồ.
  4. kiểm tra xem vị trí có được tìm thấy trong danh sách hay không và nếu không, hãy chuyển đến "Nguy hiểm"
  5. viết ra những gì đã được thực hiện vào một tệp nhật ký
  6. di chuyển servo cần thiết đến góc cần thiết
  7. Ngăn một servo khỏi 'vo vo' *

3 điều cần lưu ý.

Tệp nhật ký rất hữu ích để gỡ lỗi. Điều đó có nghĩa là bạn có thể xem phần gỡ lỗi Node-RED của một thông báo và sau đó xem điều gì đã xảy ra trong tập lệnh. đầu ra trông như thế này. 3 đứa đầu tiên là tôi dắt chó đi dạo, và sau đó đứa trẻ 1 ra khỏi nhà và đến trường. Lưu ý kiểm tra thời gian trên Pi. Nó có thể mặc định là UTC và không cho phép thay đổi giờ mùa hè / mùa đông. Ví dụ. thời gian bên dưới là 1 giờ.

2020-12-07_05: 36: 03 Ai = 0, loc = Du lịch, chi tiết = Nhà, Góc = 10, chỉ mục = 8

2020-12-07_05: 36: 04 Ai = 0, loc = Dog, detail = Astons, Angle = 86,5, index = 10

2020-12-07_06: 07: 49 Ai = 0, loc = Trang chủ, chi tiết = đang nhập, Góc = 75, chỉ mục = 0

2020-12-07_06: 23: 53 Ai = 2, loc = Du lịch, chi tiết = Nhà, Góc = 19, chỉ mục = 8

2020-12-07_06: 30: 48 Ai = 2, loc = Trường, chi tiết = N, Góc = 60,5, chỉ số = 2

Servo-ù

Một trong những Servos (0) tiếp tục kêu sau khi kết thúc script. Như bạn có thể tưởng tượng, điều này là siêu khó chịu khi có trong nhà bếp của chúng tôi. Tôi đã tìm thấy một chủ đề ở đâu đó đề cập đến việc đặt góc servo thành 'không có', điều này bằng cách nào đó đặt nó ở chế độ không hoạt động. Điều đó đã hoạt động xuất sắc và có thể được nhìn thấy trong kịch bản ở phần cuối.

Thời gian

Hãy ghi nhớ mức độ thấp của một bàn tay để quét vòng đồng hồ. Bạn có thể thấy trong tập lệnh có dòng time.sleep (4) ngay trước khi chúng tôi đặt servo ngừng kêu. Đó là bởi vì bạn phải cho phép bàn tay đến đích trước khi bạn đặt nó ở chế độ nhàn rỗi. Nếu không thì nó chỉ dừng lại. Điều này cũng quan trọng khi hiệu chỉnh nó, bởi vì bạn đang thực hiện nhiều bước trong tập lệnh. Tôi sẽ đặt nó chạy để lần lượt di chuyển đến tất cả 12 địa điểm để tôi có thể kiểm tra lại tất cả. nhưng bạn cần một chút thời gian ở giữa.

Bước 6: Hoàn thiện phần mềm - Điện thoại sang Servos

Khi bạn đã thiết lập xong băng ghế thử nghiệm và các tập lệnh, thì bạn có thể chạy nó 'trực tiếp' một chút và xem nó hoạt động như thế nào trong thời gian thực. Đây là nơi tôi tìm thấy các ngoại lệ mà tôi cần thêm vào luồng Node-RED của mình.

Bạn có thể dễ dàng ngắt kết nối và kết nối các thành viên trong gia đình trong luồng Node-RED nếu bạn muốn tập trung vào một. Ví dụ: nếu hai sự cố đang gây ra sự cố nhưng bạn muốn khắc phục từng sự cố một. Nếu không, hãy nhớ rằng bạn sẽ tiếp tục nhận được tin nhắn từ bất kỳ điện thoại nào được kết nối.

Tôi đã đề cập đến vấn đề với Dog-walk và nhà anh trai tôi khá gần. Tôi đã có 2 thử thách khác.

Đầu tiên, các vị trí trong các địa điểm khác. Vợ tôi đang học một khóa học tại một trường cao đẳng ở London. Chúng tôi muốn đăng ký đó là 'Trường học', nhưng nó cũng ở 'Luân Đôn'. Vì vậy, chúng tôi cần sử dụng lại ngữ cảnh để nói rằng nếu bạn rời khỏi 'Trường học' đó thì hãy chuyển đến 'Luân Đôn' chứ không phải 'Đi du lịch'.

Thứ hai, điều kiện chủng tộc. Như đã đề cập, nhà anh trai tôi cách đó 2 con đường, và cũng gần quán rượu / nhà hàng yêu thích của chúng tôi. Điều này có nghĩa là đôi khi 2 tín hiệu được nhận cùng một lúc, hoặc rất gần nhau. Điều này có thể thiết lập một 'điều kiện cuộc đua', nơi bạn nhận được các kết quả khác nhau tùy thuộc vào kết quả nào vượt qua logic nhanh nhất, dẫn đến kết quả không thể đoán trước. Để chống lại điều này, tôi đã thực hiện tất cả các thông báo 'đang nhập' có độ trễ 1 giây trong logic, điều này dường như đã khắc phục được sự cố. Có thể có nhiều cách tốt hơn, thanh lịch hơn, để giải quyết vấn đề này, nhưng nó dường như hiệu quả.

Bước 7: Xây dựng đồng hồ vật lý - Phần I - Servos & trục

Xây dựng đồng hồ vật lý - Phần I - Servos & trục
Xây dựng đồng hồ vật lý - Phần I - Servos & trục
Xây dựng đồng hồ vật lý - Phần I - Servos & trục
Xây dựng đồng hồ vật lý - Phần I - Servos & trục
Xây dựng đồng hồ vật lý - Phần I - Servos & trục
Xây dựng đồng hồ vật lý - Phần I - Servos & trục

Bây giờ, điều mà tôi ít tự tin nhất, đó là lý do tại sao tôi để nó kéo dài. Tôi muốn một khuôn mặt có kích thước vừa phải và dễ dàng xây dựng. Tôi cũng lo lắng về việc nhận được 2 servo quanh trục trung tâm. Điều này có nghĩa là, sau khi xem qua ebay về những chiếc đồng hồ cũ như trong hướng dẫn mà tôi đang theo dõi, tôi đã quyết định cho mình nhiều cơ hội hơn bằng cách tự xây dựng nó.

  • Tôi có 2 tấm ván ép hình vuông lớn (~ 30cm) mà tôi đã đặt xung quanh (dày khoảng 9mm).
  • Sau đó, tôi cắt một thanh ray bannister cũ thành các đoạn 4x10cm và bắt vít mặt trước và mặt sau với nhau.
  • Sau khi đánh dấu lỗ chính giữa, tôi khoan nó có cùng kích thước với ống đồng thau lớn nhất.
  • Sau đó, tôi sơn nó bằng sơn bóng trắng bình thường.
  • Sau một số thử nghiệm, tôi nhận ra rằng có lẽ tôi không thể có được 4 servo quay quanh cùng một trục nếu tất cả chúng đều được gắn vào tấm sau (hoặc trước). Vì vậy, tôi cần phải có 3 + 1 hoặc 2 + 2, trên mỗi đĩa. Tôi đã kết thúc với 3 ở mặt sau và 1 ở mặt trước.
  • Tôi đã tính toán các độ lệch cần thiết trên một tờ giấy và sau đó cắt các ống bằng đồng thau cho phù hợp. Lưu ý rằng ống dày nhất là ngắn nhất, và ống mỏng nhất phải đi hết tấm sau. (Tôi thực sự đã nhúng cái nhỏ nhất vào một cái lỗ mà tôi đã khoan một phần ở tấm sau, nhưng không phải xuyên hết để trục không di chuyển về phía sau).
  • Đối với các ống, tôi đã mua một máy cắt ống, nhưng điều đó sử dụng áp lực để cắt chúng và điều đó có nghĩa là bạn không thể lấy ống nhỏ hơn vào bên trong. Vì vậy, tôi đã sử dụng một chiếc cưa sắt và sau đó phải làm một số lượng hợp lý để làm cho chúng hoạt động. Tệp tin điểm kim cương là vô giá ở đây.
  • Sau đó, tôi khớp sơ đồ với các hiệu số thực tế cho các kẹp và bánh răng *.
  • Một khi tôi đã có sự bù đắp, tôi biết cách tạo ra các khối để gắn các servos 'cao như thế nào. Tôi đã phá vỡ một vài khối đá bằng cách cưa chúng quá mỏng và cũng khoan lỗ để cho dây ra ngoài.
  • Sau đó, đến phần khó khăn là đặt các khối ở đâu để chúng gặp chính xác các bánh răng trên trục. Tôi vặn vào một khối và sau đó có thể xoay servo để gặp trục và sau đó vặn vào khối thứ hai vào đầu kia của servo. Tôi cũng thấy rằng tôi cần phải cắt một chút khỏi một số khối để tránh làm vướng các bánh răng khác. Phải mất khá nhiều thời gian.
  • Sau khi hoàn thành tất cả những việc đó, tôi lấy hộp raspberry pi của mình, khoan hai lỗ trên đó và vặn nó vào tấm trước. Sau đó, tôi có thể thêm Pi vào, đóng các tấm mặt trước và mặt sau (đã kết nối Servo với pi (nhớ servo nào dành cho thành viên nào trong gia đình) và chuyển sang tay…

* Ở đây tôi đã tìm thấy vấn đề lớn nhất mà tôi vẫn chưa giải quyết được hoàn toàn. Các ống đồng thau là 1/4 ", 7/32", 3/16 ", 5/32". Tuy nhiên, các kẹp là hệ mét (ngoại trừ một ống có kích thước 1/4 "). Chuyển đổi các ống sang hệ mét, chúng là 6,35mm, 5,56mm, 4,76mm 3,97mm. Các kẹp còn lại có đường kính 4mm, 5mm và 6mm. Ống nhỏ nhất 2 và lớn nhất cũng được. Nhưng rõ ràng là 0,44mm là quá nhiều đi lại cho kẹp nên tôi đã phải dùng giấy để chèn nó ra. Tôi đã thử điều này một số lần và nó hoạt động ổn trong một thời gian và sau đó lại nới lỏng. Vì vậy, lớn thứ 2 tay không hoạt động bình thường. Nó vẫn ổn trong khoảng 6 tháng, vì vậy thời gian dành để làm tốt điều này là thời gian được đầu tư tốt. Nhưng nếu tôi làm lại, tôi có thể đã tăng hoặc giảm 1 kích thước, với một khoảng cách để thử và đạt được một kẹp tốt hơn để phù hợp với ống. Ví dụ: đi cho 9/32 ", 1/4", (khoảng cách), 3/16 ", 5/32"

Bước 8: Kim đồng hồ

Kim đồng hồ
Kim đồng hồ
Kim đồng hồ
Kim đồng hồ
Kim đồng hồ
Kim đồng hồ

Tôi quyết định chọn thép tấm vì tôi muốn một thứ gì đó cứng cáp nhưng ít có khả năng bị gãy trong khi chế tạo. Ngoài ra, mỏng hơn có nghĩa là 4 tay ít gặp vấn đề hơn.

  • Đầu tiên tôi phác thảo một hình dạng.
  • Sau đó, tôi chuyển nó vào thép trên đầu trang của một số băng che.
  • Sau đó, tôi cắt chúng ra một cách vô cùng khéo léo bằng cách ghép hình của mình. Họ đã, và đang, tất cả đều khác nhau, nhưng tôi không bận tâm về điều đó.
  • Sau đó, một người bạn gợi ý tôi mượn máy mài băng của anh ấy để tạo hình chúng, và điều này thật tuyệt. Rất khuyến khích. Nếu không, việc nộp đơn sẽ mất nhiều thời gian.
  • Vẫn còn một số việc phải làm và sau đó chà nhám để đảm bảo không có cạnh sắc và cũng có một kết thúc đẹp.
  • Tôi đã phải khoan lỗ để ghép các ống đồng tương ứng (sử dụng các ống đã cắt rời để kiểm tra, không phải loại được gắn trên đồng hồ).
  • Tôi nhận thấy rằng các lỗ cần được giũa một chút để gắn chúng vào các ống, nhưng một khi chúng đã khít và không cần keo. Ngoại lệ là bàn tay trước mà tôi muốn có 'vỏ bọc'. Vì vậy, tôi cắt (hầu hết) một miếng thép tròn, sau khi đã khoan lỗ và có kích thước phù hợp, và dán nó vào phía trước. bạn có thể thấy nó trong hình ảnh cuối cùng. Đôi khi bàn tay trước sẽ cần một chút keo để cố định nó nhưng sau một vài lần bắt đầu sai, bàn tay hoạt động thực sự tốt.
  • Tôi đã từ chối ý tưởng về những bức ảnh (vì trẻ em sẽ phàn nàn về những bức ảnh ngày tháng của chúng tôi nhanh chóng) vì vậy tôi quyết định vẽ những bức ảnh viết tắt bằng sơn acrylic.

Bước 9: Hoàn thành

Hoàn thành!
Hoàn thành!
Hoàn thành!
Hoàn thành!

Tất cả đều hoạt động thực sự độc đáo. Bàn tay đôi khi hơi lệch một chút, tùy thuộc vào nguồn gốc của chúng, nhưng thực ra điều đó không quan trọng vì mỗi vị trí là một phần chứ không chỉ là một đường.

Đôi khi, thật kỳ lạ, điện thoại của tôi từ chối xác nhận rằng tôi đang ở nhà. Tôi rõ ràng đang ở trong bán kính Owntracks khi được hiển thị trên bản đồ và ngay cả khi độ chính xác tốt… Tôi không biết tại sao. dường như không ảnh hưởng đến phần còn lại của gia đình tôi. nhưng cách thiết lập vẫn giống nhau. Điều này có nghĩa là Owntracks không bao giờ gửi tin nhắn và tôi gặp khó khăn trong việc 'Du lịch'. Nhưng nó thường tự sắp xếp cuối cùng.

Thật là hữu ích khi có trong nhà bếp của chúng tôi, chủ yếu là để biết khi nào các cô gái đi học về, hoặc nhà bạn bè của họ, và khi nào thì chuẩn bị sẵn đồ ăn / trà cho họ.

Một lần nữa, xin chân thành cảm ơn @ ppeters0502 về những hướng dẫn tuyệt vời để làm theo. Hy vọng rằng những điều này có thể bổ sung điều gì đó xung quanh việc tạo ra một chiếc đồng hồ có 4 kim..

Bước 10: Những điều tôi đã học được và sẽ làm tốt hơn / khác đi nếu tôi phải làm lại

  • Các bản dựng vật lý cần thử và sai. Không có cách nào để dự đoán các vấn đề của không gian, bạn chỉ cần đi sâu vào và thử.
  • Đối với mã, vấn đề về googling là điều cần thiết
  • Bắt đầu cơ bản và xây dựng. Servos trên gỗ băng ghế thử nghiệm có nghĩa là tôi có thể làm cho hầu hết nó hoạt động mà không cần cấu trúc vật lý
  • Tôi có thể đã cắt laser tay ở máy CNC. Nhưng tôi không biết địa phương ở đâu, và tôi thích cách làm việc của thép nhẹ (nó rẻ và máy mài để bàn làm việc đó dễ dàng hơn nhiều)
  • có thể có động cơ bước nếu bạn sử dụng bánh răng để quay 360. nhưng sau đó bạn có thể phải đặt các servo quá gần trục trung tâm
  • Có 2 loại servo (Futaba & HiTech). Đảm bảo rằng bạn đã kiểm tra điều này vì chúng có số lượng răng khác nhau trên trục. Và tôi đã mua nhầm những cái ban đầu…
  • Đừng kết nối mũ với phân cực sai;-)
  • Google và Stack Overflow là những người bạn của bạn khi gặp khó khăn. Nhưng bạn cần sử dụng các cụm từ tìm kiếm tốt…
  • Băng ghế thử nghiệm thực sự là một cách mà bạn có thể có được một phiên bản đơn giản hơn, rẻ hơn một cách dễ dàng hơn nhiều. Hầu hết các phức tạp với việc xây dựng đến từ việc phải có các tay quay xung quanh cùng một trục. Nếu bạn thỏa hiệp về điều đó, thì mọi chuyện sẽ dễ dàng hơn nhiều. Và tôi nghĩ rằng 4 có thể là giới hạn của trục đơn trừ khi trục dài hơn nhiều. Bạn có thể, tôi cho rằng có 3 ở đĩa trước và 3 ở đĩa sau nếu trục dài hơn…

Bước 11: Các tiện ích mở rộng có thể có trong tương lai…?

Ý tưởng tôi có về các bước tiếp theo như sau.

  1. Tôi muốn sử dụng lại một chiếc iPad cũ làm mặt đồng hồ. tức là tạo đồng hồ kỹ thuật số. Có thể dựa trên trình duyệt hoặc một ứng dụng. Vì đồng hồ vật lý về cơ bản là không trạng thái (tức là nó không biết nó hiện đang ở đâu, ngoại trừ do kim ở vị trí thực) nên tôi cần phải có một kho lưu trữ dữ liệu liên tục. Node Red có thể ghi ra hệ thống tệp cục bộ, vì vậy tôi có thể sẽ làm điều đó.
  2. Nếu tôi đã làm điều đó thì tôi muốn có thể nhìn thấy nó từ bên ngoài nhà. Nhưng sau đó chúng tôi thực sự cần phải sắp xếp bảo mật. Bởi vì truy cập trong cùng một mạng wifi là một chuyện, truy cập từ internet là một chuyện khác. Tôi hiện không có ý tưởng về cách tốt nhất để làm điều này, nhưng tôi nghi ngờ đăng ký MQTT theo cách khác có thể hoạt động (pi xuất bản trạng thái hiện tại và các thiết bị bên ngoài đăng ký với nó)…?
  3. Tôi khá muốn một tay cho 'Nước ngoài'. nhưng điều đó có thể phức tạp theo quan điểm của OwnTracks. Có lẽ chỉ có thể sử dụng dài / vĩ độ kết hợp với một số bán kính lớn?

Đề xuất: