فهرست مطالب:

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

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

تصویری: ایجاد فاصله یاب با استفاده از لیزر و دوربین: 6 مرحله
تصویری: فقط یک حبه سیر رو داخل آن بگذارید و نتیجه آن! 2024, ژوئن
Anonim
ساخت فاصله سنج با استفاده از لیزر و دوربین
ساخت فاصله سنج با استفاده از لیزر و دوربین

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

پروژه بر اساس این مقاله است:

تنها تفاوت این است که من مسافت یاب را با استفاده از Raspberry Pi Zero W ، LCD و ماژول Raspberry Pi Camera ایجاد خواهم کرد. همچنین از OpenCV برای ردیابی لیزر استفاده خواهم کرد.

من تصور می کنم که شما متخصص فناوری هستید و از پایتون و خط فرمان راحت هستید. در این پروژه من از Pi در حالت بدون سر استفاده می کنم.

بیا شروع کنیم!

مرحله 1: فهرست مواد

برای این پروژه ، شما نیاز دارید:

  • لیزر ارزان 6 میلی متری 5 میلی وات
  • یک مقاومت 220 Ω
  • ترانزیستور 2N2222A یا چیزی معادل آن
  • a Raspberry Pi Zero W
  • a Raspberry Pi Camera v2
  • یک صفحه نمایش LCD 5110 نوکیا یا معادل آن
  • چند سیم جامپر و یک تخته نان کوچک

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

مرحله 2: ساخت لیزر و دوربین فشرده

ساخت دستگاه لیزر و دوربین
ساخت دستگاه لیزر و دوربین
ساخت دستگاه لیزر و دوربین
ساخت دستگاه لیزر و دوربین
ساخت دستگاه لیزر و دوربین
ساخت دستگاه لیزر و دوربین

سیستم فاصله ثابت بین لنز دوربین و خروجی لیزر را فرض می کند. برای سهولت در آزمایش ، من یک دستگاه جیغ چاپ کردم که در آن می توانم دوربین ، لیزر و یک مدار کوچک رانندگی را برای لیزر سوار کنم.

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

من از Tinkercad برای ساخت استفاده کردم ، می توانید مدل را در اینجا پیدا کنید:

بین مرکز لنز لیزری و مرکز لنز دوربین 3.75 سانتی متر فاصله وجود دارد.

مرحله 3: رانندگی با لیزر و LCD

رانندگی با لیزر و LCD
رانندگی با لیزر و LCD
رانندگی با لیزر و LCD
رانندگی با لیزر و LCD

من این آموزش را دنبال کردم https://www.algissalys.com/how-to/nokia-5110-lcd-on-raspberry-pi تا صفحه نمایش LCD را با رزبری پای صفر هدایت کنم. به جای ویرایش فایل /boot/config.txt ، می توانید رابط SPI را با استفاده از sudo raspi-config از طریق خط فرمان فعال کنید.

من از Raspberry Pi Zero در حالت بدون سر با استفاده از جدیدترین ، در تاریخ ، Raspbian Stretch استفاده می کنم. من در این دستورالعمل نصب نمی کنم ، اما می توانید این راهنما را دنبال کنید: https://medium.com/@danidudas/install-raspbian-jessie-lite-and-setup-wi-fi-without-access-to- command-line-or-using-the-network-97f065af722e

برای داشتن یک نقطه لیزری روشن ، از ریل 5 ولت Pi استفاده می کنم. برای این منظور ، من از یک ترانزیستور (2N2222a یا معادل آن) برای هدایت لیزر با استفاده از GPIO استفاده خواهم کرد. یک مقاومت 220 Ω در پایه ترانزیستور جریان کافی را از طریق لیزر ایجاد می کند. من از RPi. GPIO برای دستکاری Pi GPIO استفاده می کنم. من پایه ترانزیستور را به پین GPIO22 (پین 15) ، امیتر را به زمین و کلکتور را به دیود لیزر وصل کردم.

فراموش نکنید که رابط دوربین را با استفاده از sudo raspi-config از طریق خط فرمان فعال کنید.

می توانید از این کد برای آزمایش تنظیمات خود استفاده کنید:

اگر همه چیز خوب پیش رفت ، باید یک فایل dot-j.webp

در کد ، دوربین و GPIO را تنظیم می کنیم ، سپس لیزر را فعال می کنیم ، تصویر را ضبط می کنیم و لیزر را غیرفعال می کنیم. از آنجا که Pi را در حالت بدون سر اجرا می کنم ، قبل از نمایش تصاویر باید از Pi خود در کامپیوتر کپی کنم.

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

مرحله 4: تشخیص لیزر با استفاده از OpenCV

ابتدا باید OpenCV را روی Pi نصب کنیم. شما اساساً سه روش برای انجام آن دارید. شما می توانید نسخه بسته بندی شده قدیمی را با apt نصب کنید. شما می توانید نسخه مورد نظر خود را کامپایل کنید ، اما در این حالت زمان نصب می تواند تا 15 ساعت و بیشتر آن برای کامپایل واقعی افزایش یابد. یا ، روش مورد علاقه من ، می توانید از نسخه از پیش تنظیم شده برای Pi Zero استفاده کنید که توسط شخص ثالث ارائه شده است.

از آنجا که ساده تر و سریعتر است ، من از بسته شخص ثالث استفاده کردم. مراحل نصب را می توانید در این مقاله بیابید: https://yoursunny.com/t/2018/install-OpenCV3-PiZero/ من بسیاری از منابع دیگر را امتحان کردم اما بسته های آنها به روز نبود.

برای ردیابی نشانگر لیزری ، کد را از https://github.com/bradmontgomery/python-laser-tracker به روز کردم تا از ماژول دوربین Pi به جای دستگاه USB استفاده کنم. اگر ماژول دوربین Pi ندارید و می خواهید از دوربین USB استفاده کنید ، می توانید مستقیماً از کد استفاده کنید.

می توانید کد کامل را در اینجا پیدا کنید:

برای اجرای این کد باید بسته های Python را نصب کنید: بالش و picamera (sudo pip3 install pillow picamera).

مرحله 5: کالیبراسیون محدوده یاب

کالیبراسیون محدوده یاب
کالیبراسیون محدوده یاب
کالیبراسیون محدوده یاب
کالیبراسیون محدوده یاب
کالیبراسیون محدوده یاب
کالیبراسیون محدوده یاب

در مقاله اصلی ، نویسنده یک روش کالیبراسیون را برای بدست آوردن پارامترهای مورد نیاز برای تبدیل مختصات y به فاصله واقعی طراحی کرده است. من از میز اتاق نشیمن خود برای کالیبراسیون و یک قطعه قدیمی کرافت استفاده کردم. هر 10 سانتی متر یا بیشتر مختصات x و y را در یک صفحه گسترده ذکر می کنم: https://docs.google.com/spreadsheets/d/1OTGu09GLAt… برای اطمینان از اینکه همه چیز درست کار کرده است ، در هر مرحله ، تصاویر گرفته شده را بررسی می کنم تا ببینم آیا لیزر به درستی ردیابی شد اگر از لیزر سبز استفاده می کنید یا اگر لیزر شما به درستی ردیابی نمی شود ، باید رنگ ، اشباع و آستانه برنامه را متناسب با آن تنظیم کنید.

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

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

مرحله 6: اندازه گیری فاصله ها

اندازه گیری فاصله ها
اندازه گیری فاصله ها

در کد: https://gist.github.com/kevinlebrun/e767a46855e5fd501d820e1c5fcc527c متغیرهای HEIGHT ، GAIN و OFFSET را با توجه به اندازه گیری های کالیبراسیون به روز کردم. من از فرمول فاصله در مقاله اصلی برای برآورد فاصله استفاده کردم و فاصله را با استفاده از صفحه نمایش LCD چاپ کردم.

کد ابتدا دوربین و GPIO را تنظیم می کند ، سپس می خواهیم نور پس زمینه LCD را روشن کنیم تا اندازه ها را بهتر ببینیم. ورودی LCD به GPIO14 وصل شده است. هر 5 ثانیه یا بیشتر ، ما:

  1. دیود لیزر را فعال کنید
  2. ثبت تصویر در حافظه
  3. دیود لیزر را غیرفعال کنید
  4. لیزر را با استفاده از فیلترهای محدوده HSV ردیابی کنید
  5. تصویر به دست آمده را برای دیباگ کردن روی دیسک بنویسید
  6. فاصله را بر اساس مختصات y محاسبه کنید
  7. فاصله را روی صفحه LCD بنویسید.

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

همچنین می توانم با چرخاندن دوربین ، رزولوشن فاصله سنج را با 90 درجه افزایش دهم و وضوح تصویر را تا حداکثر پشتیبانی شده توسط دوربین افزایش دهم. با اجرای فعلی محدود به 0 تا 384 پیکسل هستیم ، می توانیم حد بالا را به 1640 ، 4 برابر وضوح فعلی ، افزایش دهیم. فاصله حتی دقیق تر خواهد بود.

به عنوان پیگیری ها ، من باید بر روی پیشرفت های دقیقی که در بالا ذکر کردم کار کنم و یک محفظه برای فاصله یاب بسازم. برای سهولت در اندازه گیری دیوار به دیوار ، محفظه باید دارای عمق دقیق باشد.

روی هم رفته سیستم فعلی برای من کافی است و در برنامه ریزی خانه ام چند دلار صرفه جویی می کند!

توصیه شده: