فهرست مطالب:

ساعت موقعیت مکانی "ویزلی" با 4 عقربه: 11 مرحله (همراه با تصاویر)
ساعت موقعیت مکانی "ویزلی" با 4 عقربه: 11 مرحله (همراه با تصاویر)

تصویری: ساعت موقعیت مکانی "ویزلی" با 4 عقربه: 11 مرحله (همراه با تصاویر)

تصویری: ساعت موقعیت مکانی
تصویری: پیدا کردن موقعیت مکانی افراد|کاملا ساده و واقعی 2024, نوامبر
Anonim
ساعت موقعیت مکانی "ویزلی" با 4 عقربه
ساعت موقعیت مکانی "ویزلی" با 4 عقربه

بنابراین ، با یک Raspberry Pi که مدتی بود کار می کرد ، می خواستم یک پروژه خوب پیدا کنم که به من اجازه دهد از آن بهترین استفاده را ببرم. من با این ساعت فوق العاده ساختنی Weasley Location Clock توسط ppeters0502 برخورد کردم و فکر کردم که امتحان کردن آن خوب است.

این ساعت اساساً از رزبری پای تشکیل شده است که سرویس ها را به منظور چرخاندن عقربه های ساعت کنترل می کند. همانطور که در خانه خانواده ویزلی در کتاب ها/فیلم های هری پاتر ، هر یک از اعضای خانواده دست خود را دارند. هر دست به مکان فعلی آن عضو خانواده اشاره می کند. این ساعت با دریافت پیام هایی از تلفن های همراه خانواده هر زمان که وارد شعاع از پیش تعیین شده می شوند یا از آن خارج می شوند ، به این هدف می رسد.

تفاوتهای اصلی با دستورالعمل قبلی این بود که من نیاز به 4 عقربه داشتم ، نه 2 دست (در غیر این صورت دخترانم شکایت می کردند) و تصمیم گرفتم قاب را نیز بسازم ، نه اینکه از ساعت قدیمی برای استفاده مجدد استفاده کنم. این به این دلیل بود که من نگران بودم که فضا در یک قاب ساعت موجود با نیاز به 4 سروو و غیره مشکل ایجاد کند.

خیلی بیشتر از آنچه انتظار داشتم طول کشید ، هرچند بیشتر جایی که با مشکلاتی روبرو شدم که برایم گیج کننده بود و ظاهراً در پست اصلی پوشش داده نمی شد. هیچ چیز بر خلاف دستورالعمل اصلی ، که به طور کلی عالی بود ، اما چند سال گذشته بود و نسخه ها تغییر کرده بود … و غیره. همچنین ، حضور در انگلستان به این معنی بود که برخی از عناصر امپریال/متریک چالش های بیشتری از آنچه انتظار داشتم ایجاد کرد.

همچنین ، در حالی که من در برنامه نویسی خوب هستم ، ساخت فیزیکی ساعت قطعاً من را تحت تأثیر قرار داد و به ابزارهای اضافی نیاز داشت ، که همچنین تا حدودی سرعت مرا کاهش داد.

در پایان ، بخشی را با عنوان "کارهایی که اگر دوباره انجام می دادم متفاوت یا بهتر انجام می دادم" درج می کنم.

تدارکات:

یکی از مواردی که توجه من را جلب کرد این بود که اجزای گران قیمت با عقربه های ساعت انجام می شد. 4 دست قطعا به مراتب گرانتر از 2 است. من تصمیم گرفتم هزینه هایی را در نظر بگیرم تا شما ایده ای داشته باشید. این اولین بار است که همه چیز را جمع می کنم و بدون توجه به ابزارها ، فکر می کنم حدود 200 پوند هزینه کردم. بعلاوه برخی از مواردی که من از آنها استفاده نکردم (و در زیر ذکر نشده است) به علاوه Pi ، به علاوه منبع تغذیه که هر دو را قبلاً داشتم.

پی و غیره

  1. رزبری پای - نمی توانم به یاد داشته باشم که قیمت اولیه آن چقدر بود اما مدل 2B بود. من فکر می کنم اگر شما قبلاً آن را ندارید ، احتمالاً حتی یک Pi Zero نیز آن را دارد. دانگل وای فای و کارت SD را با Raspbian اضافه کرده بودم. و من یک شارژر تلفن قدیمی اندرویدی در اطراف داشتم.
  2. Adafruit Servohat for the Pi - 16 پوند
  3. منبع تغذیه سرووهات - من واقعاً برای یافتن آن تلاش کردم زیرا همه وب سایتها فقط به سایت adafruit اشاره کردند که بدیهی است منبع تغذیه ایالات متحده را توصیه می کند. سپس متوجه شدم که من یک منبع ولتاژ متغیر قدیمی با راهنمایی های قابل تعویض دارم ، بنابراین از آن استفاده کردم. اما ایالات متحده 8 دلار است ، بنابراین این جبهه است.
  4. قاب مخصوص Pi ، تا بتوانم آن را به قاب ساعت وصل کنم. 5 پوند

سروو و چرخ دنده ها

در اینجا من قیمت هر 4 را نقل می کنم ، بنابراین اگر دست کمتری می خواهید تقسیم کنید (جمع آن 40 پوند در هر دست = 160 پوند است: -o

  1. 4 x Servos-من از موارد توصیه شده توسط ppeters0502 استفاده کردم-در ebay با قیمت 15 پوند = 60 پوند-متن زیر را جستجو کردم "GWS-Digital-Servo-Sail-Winch-S125-1T-2BB-360-degree "اما گاهی اوقات آنها در دسترس نبودند
  2. 4 لوله برنجی که دقیقاً داخل یکدیگر قرار گرفته اند - هر کدام 3 پوند. من 1 عدد از 1/4 اینچ ، 7/32 اینچ ، 3/16 اینچ ، 5/32 اینچ = 11 پوند دریافت کردم
  3. 4 عدد گیره که روی لوله های برنجی محکم شده و به شما اجازه می دهد چرخ دنده ها را وصل کنید. هر کدام 7 پوند = 28 پوند من آنها را از ActiveRobots دریافت کردم که سفارشات منظمی را از Servocity در ایالات متحده انجام می دهند ، به شما این امکان را می دهد تا از حمل و نقل بین المللی اجتناب کنید. آنها همچنین می توانند هر چیز دیگری را که می توانید در سایت اصلی Servocity در ایالات متحده پیدا کنید دریافت کنند. این برای 2 مورد بعدی بسیار مفید بود
  4. 4 دنده الگوی استیل 0.770 اینچی برای نصب بر روی گیره های بست. هر کدام 6 پوند = 24 پوند
  5. 4 عدد چرخ دنده استیل اسپلین دار برای نصب روی سروو. 6.50 پوند هر کدام = 26 پوند
  6. 1 بسته بسته بندی مهره های شش گوش به چرخ دنده های متصل به مهره های بست = 2.60 پوند
  7. کلید 6 * 7/64 اینچی (کلید آلن) زیرا هر چیزی که از ایالات متحده می آید امپریالیستی است ، بنابراین صدها کلید آلن که قبلاً دارم بی فایده است = 1 پوند

برای ساخت فیزیکی

در اینجا من بیشتر از چیزهایی که در مورد آنها دروغ می گفتم استفاده می کنم

  1. 2 x مربع تخته سه لا برای صفحه "صورت" و "پشت"
  2. سپس سیلندرهای 4 10 10 سانتی متر را از روی نرده قدیمی منفجر کردم تا پشت را به صورت متصل کنم
  3. برخی از بلوک ها برای نصب سرووها در جابجایی مناسب - فقط برش های چوب نرم که اندازه آنها را برش دادم.
  4. پیچ های مختلف. از بسیار کوچک (برای اتصال مورد Pi به قاب) تا متوسط (برای اتصال قاب به یکدیگر)
  5. ورق 0.75 میلیمتری از فولاد ملایم در ابعاد 50 سانتی متر در 20 سانتی متر (برای برش دادن دست ها). این تنها چیزی بود که من 9 پوند از ویکس خریدم

ابزارها

بعضی چیزها را داشتم و بعضی را قرض گرفتم یا خریدم

  1. لحیم آهن + لحیم برقی - برای اتصال اتصالات به Adafruit Hat & Pi.
  2. اره منبت کاری اره مویی - برای برش دادن شکل خشن دست ها
  3. مته فقط یک مته معمولی بی سیم 18 ولت است
  4. مته - در نظر داشته باشید که برای ایجاد سوراخ هایی که با لوله های برنجی مطابقت داشته باشد ، به قطعات مته امپریالیستی نیاز خواهید داشت. من موفق شدم مقداری وام بگیرم.
  5. اره برقی - برای برش لوله های برنجی. کاری را که من انجام دادم انجام ندهید و 3 پوند برای لوله برش هزینه کنید ، با فشار کار می کند و بدین معنی است که قسمت داخلی لوله ها کمی کوچکتر می شود. بنابراین لوله اندازه کوچک بعدی از بین نمی رود
  6. آسیاب نیمکت - من یکی از اینها را نداشتم ، اما یکی از دوستانم این کار را کرد و شکل دادن به دستان بسیار آسان تر شد. تا آن زمان من فقط از فایل ها استفاده می کردم. من فقط برای این پروژه نمی خریدم ، اما برای دست فلزی عالی بود.
  7. من چند نوع فایل الماس نقطه خریدم (بسیار کوچک). برای دستها و لوله ها در حدود 15 پوند مفید است
  8. کاغذ سنباده خشن و صاف
  9. برخی از گیره های کوچک هنگام سوراخکاری چیزها را در جای خود نگه می دارند.
  10. یک معاون به همین دلیل

مرحله 1: تنظیم تلفن های خود برای ارسال مکان آنها به Pi شما (کارگزار قسمت اول MQTT)

این بیت توسط ppeters0502 در ساعت عالی ویزلی دستورالعمل بسیار خوب توصیف شده است. به طرز عجیبی ، اگرچه ممکن است مهارت های مختلف را منعکس کند ، او با ساخت شروع کرد و سپس به نرم افزار رفت ، اما من این کار را برعکس انجام دادم. بنابراین ، من با تلفن شروع کردم … قطع کنید ، نه ، من با کارگزار MQTT شروع کردم ، که مرحله 6 دستورالعمل او است. من تمام بیت هایی را که او بسیار خوب انجام می دهد حذف می کنم و فقط چند بیت را که ممکن است اضافه کنم ، می اندازم. من مسیر CloudMQTT را که او ذکر کرد ، رفتم.

اما وقتی این را می نوشتم ، پیوند برنامه ها را بررسی کردم و متوجه شدم که دیگر برنامه ای رایگان وجود ندارد! آنها آن را پس گرفتند ، به دلایلی که منطقی به نظر می رسد. یعنی اینکه مردم یک نمونه رایگان ایجاد کرده و سپس هرگز از آن استفاده نکنند. من متوجه نشدم زیرا نمونه های فعلی می توانند ادامه پیدا کنند. بنابراین من تغییر نمی کنم اما دستورالعمل ها را کمی زائد می کند. به نظر می رسد 3 گزینه وجود دارد.

  1. ماهانه 5 دلار برای Cloud MQTT بپردازید (اما این ساعت به طور مداوم گران به نظر می رسد).
  2. همانطور که در دستورالعمل اول توضیح داده شده ، از مسیر Mosquitto در Pi بروید. من نمی توانم در مورد آن اظهار نظر کنم ، اما می تواند گزینه خوبی باشد.
  3. کافیست "بروکر MQTT ابر رایگان" را در گوگل جستجو کنید و به نظر می رسد برخی دیگر نیز وجود دارند.

بنابراین ، با فرض اینکه شما یک کارگزار MQTT دارید ، اگر شبیه CloudMQTT باشد ، یک سرور ، کاربر ، رمز عبور و پورت نمایش داده می شود. برای راه اندازی تلفن های خود به همه این موارد نیاز دارید تا مکان ها یا حرکت های شما را به کارگزار ارسال کند.

مرحله 2: تنظیم تلفن های خود برای ارسال موقعیت مکانی آنها به Pi شما (قسمت دوم Owntracks)

این نیز در دستورالعمل اصلی ، در مراحل 7 (Android) ، 8 (iOS) و 9 (تنظیم مناطق) ، به خوبی پوشش داده شده است.

من فقط دستگاه های iOS داشتم بنابراین مرحله 7 را امتحان نکردم.

چه چیزی را به آن دستورالعمل ها اضافه کنم؟

  1. در تنظیمات نیز زمینه های TrackerID و DeviceID وجود دارد. اینها را باید داشته باشید تا بتوانید خود را در خانواده خود شناسایی کنید. به عنوان مثال. من آنها را به ترتیب به عنوان R و RPhone داشتم. این بدان معناست که شما می توانید از طریق سروو به ساعت منتقل کنید و بنابراین کدام دست را بچرخانید.
  2. مناطق نام مکان هایی است که می خواهید پیگیری کنید.
  3. هر منطقه با نام ، عرض جغرافیایی ، طول جغرافیایی و شعاع تعریف می شود.
  4. از آنجا که می خواستم تعدادی از مکان ها را به عنوان یک بخش در ساعت خود داشته باشم ، از یک قرارداد نامگذاری استفاده کردم ، که بسیار مفید بود. روشهای دیگر ممکن است اما این برای من موثر بود.

    • به عنوان مثال ، برای بخش خانواده ساعت ، من می خواستم پدر و مادر و خواهر و برادر و پدر و مادر و خواهر و برادر همسرم را داشته باشم. بنابراین من مکانهایی مانند "تام فامیلی" ، "دیک فامیلی" ، فامیلی هری "و" خانواده والدین آر "داشتم. این بدان معنا بود که مرحله بعدی می تواند بداند چه چیزی باید به ساعت منتقل شود.
    • به خاطر داشته باشید که افراد می توانند مکان های مختلفی داشته باشند. اما تا زمانی که آنها با قرارداد نامگذاری سازگار باشند ، خوب است. به عنوان مثال. کار من با منطقه کاری همسرم متفاوت است و متفاوت نامیده می شود. اما تا زمانی که هر دو "کار" را شروع کنند ، همه چیز خوب است.
  5. شما می خواهید که حالت "قابل توجه" در صفحه Maps تنظیم شود. این بدان معناست که شما (بیشتر) فقط هنگام ورود یا خروج از مناطق پیام دریافت می کنید. به نظر می رسد این نسخه به روز شده یادداشت با علامت مهم است: در پایان مرحله 8 در دستورالعمل اصلی.
  6. همانطور که در دستورالعمل اصلی ذکر شد ، استفاده از Google Maps راهی عالی برای یافتن Lat/Long در جایی است. به نظرم انجام این کار به صورت انبوه ، یافتن تمام Lat/Long های محل سکونتم ، سپس آنها را در Notes (در Mac من) چسباندم و با همگام سازی ابر ، به این معنی بود که آنها به طرز جادویی در iPhone من ظاهر می شوند. در Notes و من می توانم آنها را در Owntracks کپی/جایگذاری کنم. این همچنین به این معنی بود که من می توانم فایل را به تلفن خانواده ام ارسال کنم و همه ما مکانهای ثابت داشتیم.
  7. مکانهای نزدیک به هم می توانند مشکلاتی را ایجاد کنند. برادرم 2 خیابان دورتر زندگی می کند و در ابتدا تلفن من فکر می کرد که من همزمان در منطقه خانه او و همچنین در خانه هستم. در نهایت مجبور شدم منطق اضافی را در Node Red قرار دهم تا این اتفاق را نادیده گرفته و نادیده بگیرم.

مرحله 3: راه اندازی رزبری پای

راه اندازی رزبری پای
راه اندازی رزبری پای

بنابراین در اینجا من فرض می کنم که شما یک پایه Pi راه اندازی شده و روی Wi -Fi دارید. من Raspbian را اجرا می کردم اما نباید مهم باشد. برای راه اندازی همه چیز از دستورالعمل های raspberrypi.org استفاده کنید.

توجه داشته باشید که Pi دارای درگاه هایی برای نمایش روی مانیتور و صفحه کلید/موس و غیره است اما بدیهی است که وقتی آن را در ساعت داشته باشید ، هیچ کدام از آن را نمی خواهید. بنابراین ، فکر می کنم پاسخ ، پیشنهاد شده توسط شخصی در وب سایت Raspberry pi ، ایجاد یک اتصال VNC بود. این به شما امکان می دهد از دستگاه دیگری به Pi متصل شوید و آن را نیز کنترل کنید. من این کار را از طریق مک انجام می دهم اما از طریق آیپد نیز انجام می دهم. پیشنهاد می کنم برای سهولت استفاده از چیزی با صفحه کلید استفاده کنید.

من تازه متوجه شدم که به نظر می رسد آنها از زمانی که من متصل شدم کار را آسان تر کرده اند … اینجا را ببینید

اساساً شما متصل می شوید و پنجره ای را دریافت می کنید که رابط استاندارد Pi است.

بنابراین ، شما از لپ تاپ یا رایانه خود پنجره ای به Pi خود دارید.

حالا باید Servos را وصل کنید.

ابتدا باید مقداری لحیم کاری نسبتاً اساسی انجام دهید تا کلاه adafruit روی Pi قرار گیرد. کمی مبهم است ، اما علیرغم اینکه 30 سال است که لحیم نشده است ، خوب بود. مثل همیشه ، یک ویدیوی مفید YouTube برای راهنمایی در مورد آن پیدا کردم ، که کمک بزرگی بود.

در حالی که کلاه می تواند 16 سرو را اجرا کند ، من فقط به 4 عدد نیاز داشتم ، بنابراین من فقط لحیم را برای لحیم کردن اولین ست 4 پینی به هم ریختم.

سپس سروها فقط روی پین ها فشار می دهند. من ابتدا یک مورد را بررسی کردم که آیا واقعاً می توان سروو را به حرکت در آورد.

این همان جایی بود که من اولین سد اصلی خود را گرفتم. من یک اسکریپت پایتون بسیار اساسی برای جابجایی سرویس ها داشتم و به معنای واقعی کلمه هیچ اتفاقی نیفتاد. من حدود یک هفته سعی کردم فیلمنامه های جدید و غیره را امتحان کنم ، و سپس دود روی کلاه ظاهر شد. همه چیز را خاموش کردم ، شماتیک را بررسی کردم. این یک جزء بود که در برابر قطبیت معکوس محافظت می کند. از آنجا که من منبع تغذیه چند نوک و چند ولتاژ داشتم ، این واقعیت را از دست داده بودم که شما می توانید با برگشتن نوک ، خروجی DC را از هر دو جهت انجام دهید. من اشتباه کردم (50:50 شانس) و فقط اولین کلاه adafruit خود را سوزاندم

:-(بنابراین یک تاخیر جزئی هنگام خرید یک مورد جدید ، دوباره لحیم کاری کردم و نکته را اصلاح کردم. خیلی بهتر.

در مرحله بعد ، من باید نحوه انتقال سرووها را به نقطه صحیح ساعت کار کنم. این در مرحله 5 انجام می شود ، اما کاری که من کردم ، ساعت واقعی را نساخته بودم ، این بود که سروها را به آرامی به یک چوب تصادفی وصل کرده و مانند نوار چسب ماسک با یک پیکان روی آنها بچسبانم. این یک بازخورد بسیار بصری به آنچه من کدگذاری می کردم ، داد.

مرحله 4: نصب Node Red (دریافت پیامها از سرور MQTT به اسکریپت پایتون)

نصب Node Red (دریافت پیامها از سرور MQTT به اسکریپت پایتون)
نصب Node Red (دریافت پیامها از سرور MQTT به اسکریپت پایتون)
نصب Node Red (دریافت پیامها از سرور MQTT به اسکریپت پایتون)
نصب Node Red (دریافت پیامها از سرور MQTT به اسکریپت پایتون)
نصب Node Red (دریافت پیامها از سرور MQTT به اسکریپت پایتون)
نصب Node Red (دریافت پیامها از سرور MQTT به اسکریپت پایتون)
نصب Node Red (دریافت پیامها از سرور MQTT به اسکریپت پایتون)
نصب Node Red (دریافت پیامها از سرور MQTT به اسکریپت پایتون)

Node-RED برنامه ای است که شما روی Pi نصب می کنید و به شما یک رابط بصری (در مرورگر خود) می دهد تا پیامها را از سرور MQTT خود دریافت کرده و از آن برای انتقال اطلاعات صحیح به اسکریپت پایتون خود استفاده کنید (در مرحله بعد (مرحله 5). من تقریباً از دستورالعمل های ppeters0502 در مرحله 5 استفاده کردم. منطق در این جریانها و منطق اضافی در پایتون وجود دارد و بسته به ترجیح خود می توانید در هر کدام کم و بیش داشته باشید. اساساً شما باید انجام دهید به شرح زیر

  1. برای پیامهای MQTT گره دریافت کنید - اینها بنفش روشن هستند و من به ازای هر عضو 1 عدد داشتم
  2. آن را به سروو که می خواهید جابجا کنید (شماره 0 ، 1 ، 2 ، 3) نشان دهید
  3. تعیین کنید در حال ورود یا خروج از شعاع در OwnTracks هستید
  4. مشخص کنید که آن سروو باید به کدام مکان اشاره کند

    برخی استثنائات در قوانین اساسی وجود داشت که من نیاز به ایجاد آنها داشتم

  5. زاویه را به درستی تنظیم کنید

من Node-RED را با 4 مورد اول انجام دادم و پایتون را نسبتاً ساده نگه داشتم.

شما می توانید جریان اصلی را در اینجا مشاهده کنید ، و همه جریانها می توانند به فرمت اینجا صادر شوند ، به این معنی که می توانید این جریان اصلی را به Node-RED خود وارد کرده و سپس سازگار شوید. توجه داشته باشید که من تمام اتصالات را از گره های بنفش جدا کرده ام تا نتوانید به نمونه MQTT من دسترسی پیدا کنید. من همچنین تمام گره های آزمایش را حذف کردم زیرا حاوی داده های واقعی هستند … ممکن است برای وارد کردن به Node-RED خود این نوع فایل را به flows.json تغییر دهید ، اما Instructables به من اجازه بارگذاری آن را نداد.

گره های سبز گره های اشکال زدایی هستند که سپس خروجی را در پنجره اشکال زدایی در سمت راست صفحه نمایش می دهند (ممکن است نیاز به بزرگ شدن داشته باشد - پیکان را در نیمه راست در سمت راست پیدا کنید)

اولین بیتی که باید انجام شود بیت "فقط برای اشکال زدایی" است. این بررسی می کند که آیا می توانید پیام های MQTT را دریافت کرده و ببینید چه چیزی در آنها وجود دارد. json فقط یک ساختار ساختار یافته تر از پیام ها است که به شما امکان می دهد داده ها را به راحتی خارج کنید. در این جریان ، وقتی زنده هستم ، سپس گره های بنفش بالا سمت چپ را به گره json در سمت راست آنها متصل می کنم.

تست گره ها

هنگامی که می دانید پیام ها در زندگی چگونه به نظر می رسند ، مجبورید از خانه بیرون بروید و در جاده و عقب بروید ، فقط برای ایجاد یک رویداد ، بسیار خسته کننده می شود. هنگامی که این کار را انجام دادید ، می توانید پیام را در یک محرک TEST کپی کنید و سپس روی آن کلیک کنید تا رویداد شبیه سازی شود. همچنین می توانید داده ها را تغییر دهید تا تظاهر به مکان های مختلف کنید (مطمئن شوید که آنها دقیقاً با نام مکان در Owntracks مطابقت دارند).

در جریان می توانید مشاهده کنید که موارد آزمایش همه به یک گره جداگانه می روند و سپس به گره json می روند. این فقط برای مرتب کردن صفحه است.

من نمی توانم به اندازه کافی تأکید کنم که این گره ها چقدر مفید بودند و هنوز هم هستند.

تماس با پایتون

بنابراین من به مانع بعدی برخورد کردم. این مورد گوگل زیادی را در انجمن ها انجام داد و غیره. جریان من کاملاً کار می کرد ، اما اسکریپت پایتون من را فعال نمی کرد. من نمی توانم این کار را انجام دهم ، اما از فحش دادن به شما و غیره صرف نظر می کنم. فقط برای این که بگویم ، همانطور که در تصویر دوم مشخص شده است ، باید python3 را مشخص کنید ، زیرا ظاهراً Node-RED پایتون 2 را فرض می کند ، مگر اینکه مشخص کنید.

2 عارضه اضافی - فقط در صورت نیاز

سپس من تعدادی چالش داشتم که منطق کاملاً کار نمی کرد. اول این که Owntracks کمی عجیب بود و چون برادرم در 2 خیابان دورتر زندگی می کرد ، اغلب می گفت که من همزمان در 2 مکان بودم ، یا مدام بین آنها جابجا می شدم. تنها راهی که می توانستم دور بزنم این بود که شرایطی را برای جلوگیری از مثبت های کاذب اضافه کنم. اگر ادعا می شد که من در خانه او هستم ، پس از آن من طول مسیر و عرض جغرافیایی واقعی را در پیام بررسی کردم و اگر گفت که من واقعاً در خانه هستم ، آن را سقط کردم.

مشکل دیگر این بود که هنگام راه رفتن با سگ من واقعاً نمی توانم شعاع خوبی داشته باشم. من معمولاً در همان منطقه قدم می زنم ، بنابراین در اینجا گفتم "اگر وارد این منطقه شوم ، قطعاً با سگ قدم می زنم ، و تا زمانی که به خانه برسم خواهد بود." این بدان معناست که آن را به میخانه ای که در راه خانه از آنجا عبور می کنم ، یا مکان های مختلف محلی دیگر که می تواند هنگام راه رفتن با سگ ایجاد کند ، تغییر نمی دهد. برای انجام این کار ، من نیاز به تنظیم برخی از متغیرهای Context دائمی داشتم (آنها را در Node-RED جستجو کنید. تصویر صفحه را ببینید. این متغیرها تا زمانی که Node-RED راه اندازی مجدد نشود ادامه می یابد و بنابراین می توانم بگویم اگر در راه رفتن سگ ، متغیر زمینه را تنظیم کنید به "سگ". سپس هیچ چیز دیگری را نادیده بگیرید مگر اینکه من "وارد" خانه شوم.

آخرین اسکرین شات یکی از آخرین جریانات واقعی من است ، با همه استثنائات ، فقط برای علاقه شما.

مرحله 5: در واقع انتقال Servos با پایتون در Pi

انحراف کوتاه به سروو. من در مورد سروها چیزی نمی دانستم ، اما اطلاعات زیادی در اینترنت وجود دارد. سرویس هایی که من استفاده کردم سرویس های پیوسته ای هستند که می توانند 360 درجه را بچرخانند و هموار باشند. نوع اصلی دیگر سروهای پله ای هستند که به صورت تکه تکه حرکت می کنند و ظاهرا فقط تا 180 درجه افزایش می یابند (بدیهی است که در اینجا مفید نیست). مزیت سروهای پله ای این است که شما فقط می توانید در یک زاویه قرار دهید و آنها به آن نقطه حرکت کرده و متوقف شوند. در تمام مستنداتی که پیدا کردم گفته شد که سرویس های مداوم با ارائه سرعت و زمان برای حفظ این سرعت (به عنوان مثال سرعت کامل برای 1 ثانیه) کار می کنند و در نهایت به جایی می رسند که به پایان می رسند ، اما این به نقطه شروع آنها مربوط می شود. پس از تلاش های زیاد ، نتوانستم این کار را انجام دهم ، اما با استفاده از نیمکت آزمایش متوجه شدم که سروها به طور مداوم با همان زاویه به همان نقطه برمی گردند. که بسیار ساده تر است ، بنابراین من فقط این کار را کردم. ممکن است نقاط ضعفی وجود داشته باشد که من نمی دانم ، اما برای من کار می کند. با این حال ، توجه داشته باشید که هر سروو منحصر به فرد است ، بنابراین شما باید مجموعه ای از زوایای منحصر به فرد برای هر سروو داشته باشید. من ساده ترین حالت را برای داشتن یک اسکریپت "کالیبراسیون" پایتون پیدا کردم ، جایی که می توانستم سرووها را به نوبه خود به زاویه تنظیم کنم و آنها را اصلاح کنم تا همه آنها درست به نظر برسند. این اولین اسکریپتی است که ضمیمه شده است. شما فقط سرویس هایی را که آزمایش نمی کنید ، کامنت کنید ، روی یکی تمرکز کنید و سپس مقادیر مورد نیاز خود را تنظیم کنید. توجه: کالیبراسیون برای میز آزمایش ساده و خشن و آماده است. هنگامی که ساعت مونتاژ می شود ، باید دوباره کالیبره کنید ، زیرا چرخ دنده ها و غیره همه چیز را تغییر می دهد. سپس اسکریپت دوم نسبتاً اساسی است. موارد زیر را انجام می دهد

  1. چند کتابخانه وارد کنید
  2. متغیرهای را از Node-RED به متغیرهای اسکریپت منتقل کنید
  3. زاویه های تعیین شده توسط اسکریپت کالیبراسیون را به مکان های ساعت ترسیم می کند.
  4. بررسی کنید که مکان در لیست موجود است و اگر نه ، به "خطر" بروید
  5. آنچه را که روی یک فایل log انجام شده است بنویسید
  6. سروو مورد نیاز را به زاویه مورد نظر منتقل کنید
  7. جلوگیری از وزوز یک سروو *

3 نکته قابل توجه

فایل log برای اشکال زدایی بسیار مفید است. این بدان معناست که می توانید اشکال زدایی Node-RED یک پیام را مشاهده کنید و سپس ببینید چه اتفاقی در اسکریپت رخ داده است. خروجی به این شکل است 3 مورد اول این است که من سگ را برای پیاده روی می برم ، و سپس کودک 1 خانه را ترک می کند و به مدرسه می رسد. برای بررسی زمان در Pi توجه داشته باشید. ممکن است پیش فرض UTC باشد و اجازه تغییر زمان تابستان/زمستان را ندهد. به عنوان مثال. زمان های زیر 1 ساعت است.

2020-12-07_05: 36: 03 چه کسی = 0 ، محل = سفر ، جزئیات = خانه ، زاویه = 10 ، شاخص = 8

2020-12-07_05: 36: 04 چه کسی = 0 ، loc = سگ ، جزئیات = Astons ، زاویه = 86.5 ، index = 10

2020-12-07_06: 07: 49 چه کسی = 0 ، محل = خانه ، جزئیات = ورود ، زاویه = 75 ، شاخص = 0

2020-12-07_06: 23: 53 چه کسی = 2 ، loc = سفر ، جزئیات = خانه ، زاویه = 19 ، index = 8

2020-12-07_06: 30: 48 چه کسی = 2 ، محل = مدرسه ، جزئیات = N ، زاویه = 60.5 ، شاخص = 2

سرو-وزوز

یکی از سروها (0) پس از پایان فیلمنامه همچنان وزوز می زند. همانطور که می توانید تصور کنید ، وجود این در آشپزخانه ما بسیار آزاردهنده است. من موضوعی را در جایی پیدا کردم که شامل تنظیم زاویه سرو روی "هیچ" بود که به نوعی آن را غیرفعال می کند. این بسیار عالی کار کرد و می توان در فیلمنامه آن را در انتها مشاهده کرد.

زمان بندی

به خاطر داشته باشید که یک دست چقدر طول می کشد تا ساعت را جارو کند. می توانید در اسکریپت ببینید خط time.sleep (4) درست قبل از تنظیم سروو برای جلوگیری از وزوز وجود دارد. دلیل این است که قبل از اینکه دست را در حالت آماده به کار قرار دهید ، باید اجازه دهید تا به مقصد برسد. در غیر این صورت فقط متوقف می شود. این امر هنگام کالیبراسیون آن نیز مهم است ، زیرا شما چندین حرکت را در داخل اسکریپت انجام می دهید. من آن را برای حرکت به هر 12 مکان به نوبه خود تنظیم می کردم تا بتوانم همه آنها را دوباره بررسی کنم. اما در این بین به کمی زمان نیاز دارید.

مرحله 6: نهایی کردن نرم افزار - تلفن به سرویس

هنگامی که نیمکت آزمایش و اسکریپت ها را تنظیم کردید ، می توانید آن را به صورت زنده به صورت زنده اجرا کرده و نحوه عملکرد آن را در زمان واقعی مشاهده کنید. اینجاست که استثنائاتی را پیدا کردم که باید به جریان Node-RED اضافه کنم.

اگر می خواهید بر یکی متمرکز شوید ، می توانید به راحتی اعضای خانواده را در جریان Node-RED قطع و وصل کنید. به عنوان مثال ، اگر دو مشکل ایجاد می کنند ، اما می خواهید یکی را در یک زمان برطرف کنید. در غیر این صورت ، به خاطر داشته باشید که همچنان از هر تلفن متصل پیام دریافت خواهید کرد.

من به مشکل قدم زدن در سگ و نزدیک بودن خانه برادرم اشاره کردم. من 2 چالش دیگر داشتم.

اول ، مکانهای موجود در مکانهای دیگر. همسرم در کالجي در لندن دوره مي گذراند. ما می خواستیم که به عنوان "مدرسه" ثبت شود ، اما در "لندن" نیز وجود دارد. بنابراین ما نیاز به استفاده مجدد از زمینه داشتیم تا بگوییم که اگر شما آن "مدرسه" را ترک می کنید ، به "لندن" بروید نه به "مسافرت".

دوم ، شرایط مسابقه. همانطور که گفته شد ، خانه برادرم 2 خیابان دورتر است ، و همچنین در نزدیکی میخانه/رستوران مورد علاقه ما. این بدان معنی است که گاهی اوقات 2 سیگنال به طور همزمان یا بسیار نزدیک به هم دریافت می شود. این می تواند یک "شرایط مسابقه" را ایجاد کند که در آن بسته به اینکه کدام منطق سریعتر به نتیجه برسد ، نتایج متفاوتی به دست می آورید ، که منجر به نتایج غیر قابل پیش بینی می شود. به منظور مقابله با این امر ، من باعث شدم تا همه پیام های "ورود" در منطق 1 ثانیه تأخیر داشته باشند ، که به نظر می رسید مشکل را برطرف می کند. ممکن است راه حل های بهتر و شیک تری برای حل این مشکل وجود داشته باشد ، اما به نظر می رسید که این روش مثر واقع شده است.

مرحله 7: ساخت ساعت فیزیکی - قسمت اول - Servos & Axle

ساخت ساعت فیزیکی - قسمت اول - سرو و محور
ساخت ساعت فیزیکی - قسمت اول - سرو و محور
ساخت ساعت فیزیکی - قسمت اول - سرووس و محور
ساخت ساعت فیزیکی - قسمت اول - سرووس و محور
ساخت ساعت فیزیکی - قسمت اول - سرو و محور
ساخت ساعت فیزیکی - قسمت اول - سرو و محور

در حال حاضر کمی که من در مورد آن حداقل اعتماد به نفس داشت ، به همین دلیل است که آن را به دوام گذاشتم. من یک چهره با اندازه مناسب و ساخت آسان می خواستم. من همچنین عصبی بودم که 2 سروو را در محور مرکزی بچرخانم. این بدان معناست که با نگاهی اجمالی به ebay برای ساعتهای قدیمی ، همانطور که در دستورالعمل هایی که دنبال می کردم ، نگاه کردم ، تصمیم گرفتم با ساختن آن به خودم فرصت بیشتری بدهم.

  • من 2 مربع بزرگ (30 سانتی متر) از تخته سه لا تهیه کردم که ضخامت آنها حدود 9 میلی متر بود.
  • سپس من یک ریل قدیمی را به قسمتهای 4x10 سانتی متر برش دادم و صفحه جلو و پشت را با هم پیچ کردم.
  • با علامت گذاری سوراخ مرکزی ، اندازه آن را بزرگترین لوله برنجی سوراخ کردم.
  • سپس آن را با رنگ سفید براق معمولی رنگ آمیزی کردم.
  • پس از انجام برخی آزمایشات متوجه شدم که اگر همه آنها به صفحه پشتی (یا جلو) متصل باشند ، احتمالاً نمی توانم 4 سروو را در یک محور گرد کنم. بنابراین من باید 3 + 1 یا 2 + 2 ، روی هر بشقاب داشته باشم. من با 3 در پشت و 1 در جلو به پایان رسید.
  • جبران های مورد نیاز را روی یک کاغذ انجام دادم و سپس لوله های برنجی را برش دادم تا مطابقت داشته باشد. توجه داشته باشید که ضخیم ترین لوله کوتاه ترین است و نازک ترین لوله باید تا صفحه پشتی برود. (من در واقع کوچکترین را در سوراخی که تا حدی در صفحه پشتی آن را ایجاد کرده بودم ، جاسازی کردم ، اما نه در تمام طول مسیر تا محور به عقب حرکت نکند).
  • برای لوله ها ، من یک برش لوله خریدم ، اما این از فشار برای برش آنها استفاده می کند و این بدان معناست که شما نمی توانید لوله کوچکتر را داخل آن ببرید. بنابراین من از یک اره برقی استفاده کردم و سپس مجبور شدم یک مقدار کافی پرونده برای انجام کار آنها انجام دهم. فایلهای نقطه الماس در اینجا ارزشمند بودند.
  • سپس نمودار را با جبران های واقعی گیره ها و دندانه ها *مطابقت دادم.
  • هنگامی که من offsets را داشتم ، می دانستم چگونه می توان بلوک ها را برای نصب سرووها "بالا" ساخت. من چندین بلوک را با اره نازک دیدم و همچنین سوراخ را سوراخ کردم تا سیم خارج شود.
  • سپس قسمت مبهمی از محل قرار دادن بلوک ها آمد تا دقیقاً با دندانه های روی محور برخورد کنند. من یک بلوک را پیچ کردم و سپس می توانم سروو را به محور خود بچرخانم و سپس بلوک دوم را در انتهای دیگر سروو پیچ کنم. همچنین متوجه شدم که برای جلوگیری از گیر افتادن دندانه های دیگر ، باید کمی از بلوک ها را برش دهم. مدتی طول کشید.
  • هنگامی که همه این کارها را انجام دادم ، جعبه تمشک pi خود را گرفتم ، دو سوراخ در آن ایجاد کردم و آن را به صفحه جلویی پیچ کردم. سپس می توانم Pi را اضافه کنم ، صفحات جلو و عقب را ببندم (سرووها را به pi وصل کردم (به یاد داشته باشید که کدام سروو برای کدام یک از اعضای خانواده بود) و به دست ها برگردم …

* در اینجا من بزرگترین مشکلی را پیدا کردم که هنوز به طور کامل حل نکرده ام. لوله های برنجی 1/4 اینچ ، 7/32 اینچ ، 3/16 اینچ ، 5/32 اینچ بودند. اما گیره ها متریک بودند (به جز یکی که 1/4 اینچ بود). تبدیل لوله ها به متریک 6.35 میلی متر ، 5.56 میلی متر ، 4.76 میلی متر 3.97 میلی متر بود. گیره های باقی مانده 4 میلی متر ، 5 میلی متر و 6 میلی متر سوراخ بود. کوچکترین 2 و بزرگترین آنها خوب است. اما به وضوح 0.44 میلی متر برای گیره بسیار زیاد است ، بنابراین مجبور شدم آن را با کاغذ بردارم. من چندین بار این را امتحان کرده ام و مدتی خوب کار می کند و دوباره شل می شود. بنابراین دومین بزرگ دست نمی تواند به درستی کار کند. هرچند حدود 6 ماه خوب بود ، بنابراین زمان صرف شده برای انجام این کار به خوبی زمان صرف شده است. اما اگر دوباره این کار را انجام می دادم ، ممکن بود 1 سایز بالا یا پایین بروم ، با یک فاصله برای تلاش و بدست آوردن یک گیره بهتر برای نصب لوله. به عنوان مثال برای 9/32 "، 1/4" ، (فاصله) ، 3/16 "، 5/32" بروید

مرحله 8: عقربه های ساعت

عقربه های ساعت
عقربه های ساعت
عقربه های ساعت
عقربه های ساعت
عقربه های ساعت
عقربه های ساعت

من برای فولاد ورق تصمیم گرفتم زیرا می خواستم چیزی سفت و سخت باشد اما در هنگام ساختن آن کمتر احتمال دارد بچرخد. همچنین لاغر بودن به این معنی بود که 4 دست مشکل کمتری داشت.

  • ابتدا یک شکل ترسیم کردم.
  • سپس آن را روی فولاد در بالای چند نوار ماسک منتقل کردم.
  • سپس من آنها را بسیار بی تجربه با اره منبت کاری اره مویی برش دادم. آنها همه متفاوت بودند و هستند ، اما من این را ناراحت نمی کنم.
  • سپس یکی از دوستان به من پیشنهاد کرد که برای چرخاندن آنها آسیاب نیمکت خود را قرض بگیرم ، و این عالی بود. بسیار توصیه شده. در غیر اینصورت تشکیل پرونده چندین سال به طول می انجامد.
  • هنوز مقداری بایگانی برای انجام و سپس سنباده زنی برای اطمینان از لبه های تیز و همچنین یک پایان خوب وجود داشت.
  • من مجبور شدم سوراخ هایی را برای مطابقت با لوله های برنجی ایجاد کنم (برای بررسی از لوله های قطع نشده استفاده کنید ، نه لوله های نصب شده روی ساعت).
  • من متوجه شدم که سوراخ ها نیاز به کمی پر کردن دارند تا روی لوله ها قرار بگیرند ، اما یک بار آنها محکم بودند و نیازی به چسب نداشتند. استثناء قسمت جلویی بود که می خواستم "جلد" داشته باشم. بنابراین من یک قطعه (عمدتا) گرد فولادی را برش دادم ، بعد از اینکه سوراخ را حفر کردم و آن را به اندازه مناسب رساندم ، و آن را به جلو چسباندم. می توانید آن را در آخرین عکس ببینید گاهی اوقات دست جلو برای چسباندن به چسب نیاز دارد ، اما بعد از چند حرکت نادرست دستها به خوبی کار می کنند.
  • من ایده عکس ها را رد کرده بودم (زیرا بچه ها به سرعت از عکس های تاریخ ما شکایت می کردند) بنابراین به نقاشی روی حروف اول با رنگ اکریلیک بسنده کردم.

مرحله نهم: کامل کنید

کامل!
کامل!
کامل!
کامل!

همه چیز واقعاً زیبا کار می کند. گاهی اوقات دست ها کمی بسته به محلی که از آن آمده اند ، فاصله دارند ، اما در واقع مهم نیست زیرا هر مکان یک بخش است نه فقط یک خط.

گاهی اوقات ، به طرز عجیبی ، تلفن من نمی پذیرد که من در خانه هستم. وقتی روی نقشه نشان داده می شوم ، حتی در زمانی که دقت خوب است ، در شعاع Owntracks هستم … من نمی دانم چرا. به نظر نمی رسد بقیه اعضای خانواده من را تحت تاثیر قرار دهد. اما تنظیمات یکسان است این بدان معناست که Owntracks هرگز پیامی نمی فرستد و من در "Traveling" گیر می کنم. اما معمولاً سرانجام خود را مرتب می کند.

داشتن آشپزخانه بسیار مفید بوده است ، بیشتر بدانیم چه زمانی دختران از مدرسه به خانه می روند یا خانه دوستانشان و چه زمانی غذا/چای را برای آنها آماده کنیم.

باز هم ، یک هدیه بزرگ تشکر از @ppeters0502 برای دستورالعمل های عالی که باید دنبال کنید. امیدوارم اینها بتوانند چیزی را در ساخت ساعت با 4 عقربه اضافه کنند.

مرحله 10: چیزهایی که یاد گرفتم ، و اگر مجبور بودم دوباره این کار را انجام دهم بهتر یا متفاوت انجام می دهم

  • ساختارهای فیزیکی نیاز به آزمایش و خطا دارند. هیچ راهی برای پیش بینی مشکلات فضا وجود ندارد ، فقط کافی است وارد آن شوید و تلاش کنید.
  • برای کد ، مشکلات گوگل کردن ضروری است
  • پایه را شروع کرده و تقویت کنید. سروهای روی چوب نیمکت آزمایش به این معنی بود که می توانم بیشتر آن را بدون ساختار فیزیکی کار کنم
  • ممکن است لیزر دست را در دستگاه CNC بریده باشم. اما من نمی دانم محل موردنظر کجاست ، و من نحوه عملکرد فولاد نرم را دوست دارم (ارزان بود و آسیاب نیمکت کار را بسیار راحت تر کرد)
  • اگر از دنده برای چرخاندن 360 درجه استفاده کنید ، ممکن است یک موتور پله ای وجود داشته باشد. اما ممکن است مجبور باشید سروها را بسیار نزدیک به محور مرکزی داشته باشید
  • 2 نوع سروو (Futaba & HiTech) وجود دارد. اطمینان حاصل کنید که این مورد را بررسی کرده اید زیرا تعداد دندان های متفاوتی در اسپلین وجود دارد. و من در ابتدا موارد اشتباه را خریدم…
  • کلاه را با قطبیت اشتباه وصل نکنید ؛-)
  • هنگام گیر افتادن ، Google و Stack Overflow دوستان شما هستند. اما باید از عبارات جستجوی خوب استفاده کنید…
  • میز آزمایش در واقع راهی است که می توانید نسخه ساده تر و ارزان تر را به راحتی تهیه کنید. بیشترین عارضه با بدنه ناشی از چرخش دست ها در محور مشابه است. اگر در مورد آن مصالحه کنید ، همه چیز بسیار ساده تر است. و من فکر می کنم که 4 ممکن است حد یک محور واحد باشد مگر اینکه محور بسیار طولانی شود. اگر می توانید شفت طولانی تر باشد ، می توانید 3 عدد در صفحه جلو و سه عدد در صفحه عقب داشته باشید …

مرحله 11: برنامه های افزودنی احتمالی آینده …؟

ایده هایی که در مورد مراحل بعدی داشتم به شرح زیر است.

  1. من می خواهم یک iPad قدیمی را دوباره به عنوان صفحه ساعت استفاده کنم. یعنی یک ساعت دیجیتالی بسازید. احتمالاً مبتنی بر مرورگر یا برنامه است. از آنجا که یک ساعت فیزیکی اساساً فاقد حالت است (یعنی نمی داند کجا است ، مگر به دلیل اینکه عقربه ها در موقعیت فیزیکی قرار دارند) ، من نیاز به ذخیره مداوم داده ها دارم. Node Red می تواند به سیستم فایل محلی بنویسد ، بنابراین من احتمالاً این کار را انجام می دهم.
  2. اگر این کار را کردم ، دوست دارم بتوانم آن را از بیرون خانه ببینم. اما پس از آن ما واقعاً باید امنیت را مرتب کنیم. از آنجا که دسترسی به یک شبکه wifi یک چیز است ، دسترسی از اینترنت چیز دیگری است. من در حال حاضر هیچ ایده ای در مورد بهترین روش انجام این کار ندارم ، اما من فکر می کنم که اشتراک MQTT به گونه ای دیگر کار کند (pi وضعیت فعلی را منتشر می کند و دستگاه های خارجی مشترک آن می شوند) …؟
  3. من یک دست برای "خارج از کشور" می خواهم. اما این می تواند از نظر OwnTracks پیچیده باشد. شاید بتوان از طولانی/lat همراه با شعاع های عظیم استفاده کرد؟

توصیه شده: