فهرست مطالب:
- مرحله 1: تهیه نقشه سه بعدی
- مرحله 2: تهیه نقشه برای درج های LED
- مرحله 3: LED ها را وارد کنید
- مرحله 4: LED ها را به رزبری پای وصل کنید
- مرحله 5: LED ها را آزمایش کنید
- مرحله 6: در صورت درخواست LED را روشن کنید
- مرحله 7: نحوه دریافت مکان
- مرحله 8: چگونه این همه کار می کند
- مرحله 9: خودتان را از الهام گرفتن از پروژه من بسازید
تصویری: GPS ردیابی نقشه سه بعدی: 9 مرحله
2024 نویسنده: John Day | [email protected]. آخرین اصلاح شده: 2024-01-30 08:53
این پروژه یک نقشه سه بعدی چاپ شده با جاده ها ، رودخانه ها و شهرها با چراغ های LED برای نشان دادن موقعیت اعضای خانواده است. این می تواند نشان دهد که آیا کودک در مدرسه است یا نه ، یا مکان هر دو والدین. ما همچنین می توانیم از آن برای پیش بینی اینکه پدر و مادر در چه ساعتی به خانه می رسند استفاده کنیم تا شام در زمان مناسب تهیه شود. همچنین این یک پروژه عموماً جالب برای خودنمایی و نمایش به خانواده و دوستان است.
امیدوارم از ساخت این دستورالعمل لذت ببرید یا از آگاهی از پروژه ای که من ساخته ام لذت ببرید
مرحله 1: تهیه نقشه سه بعدی
برای دریافت یک نقشه سه بعدی از منطقه خود ، من یک دستورالعمل جداگانه برای کمک به شما در فرآیند تهیه آن نوشته ام. پیوند دستورالعمل در اینجا آمده است:
www.instructables.com/id/Making-a-3D-Print…
مرحله 2: تهیه نقشه برای درج های LED
اکنون که یک نقشه سه بعدی دارید ، دارای جاده ها ، شهرها و رودخانه ها است ، ما به روشی نیاز داریم که نشان دهد شخص در کجا قرار دارد. من از LED های RG سه میلی متری 3 میلی متری استفاده کردم ، زیرا هدف اصلی نقشه نشان دادن محل زندگی دو والدین است. در مکانهای خاصی از LED RGB استفاده کردم تا به من اجازه دهد بزرگترین کودک را در کجا نشان دهم. حداکثر 28 پین برای خروجی رزبری پای وجود دارد ، بنابراین مکان LED ها را عاقلانه انتخاب کنید. من در نهایت از 24 مورد استفاده کردم ، بنابراین شما باید خوب باشید.
برای حفاری PLA ، متوجه شدم که یک مته چوبی معمولی خوب کار می کند ، و من مانند چوب رفتار کردم.
در مکانهایی که نقشه بیش از حد ضخیم بود ، من لایه پایه را با یک مته بزرگ و سپس لایه فوقانی قابل رویت را با مته 3 میلی متری مناسب حفر می کردم.
مرحله 3: LED ها را وارد کنید
اکنون که سوراخ هایی برای نشستن LED ها داریم ، می توانیم آنها را بچسبانیم. PVA یا Superglue برای این کار خوب عمل می کند ، من متوجه شدم که PVA دور آن می چرخد و آن را محکم می کند و ابرچسب نیز بسیار خوب کار می کند. اطمینان حاصل کنید که با هر LED ، آنها فقط چند میلی متر در قسمت قابل مشاهده قرار می گیرند ، زیرا قرار گرفتن LED ها تا انتها کمی آشفته به نظر می رسد. نگران پاهای پشت نباشید ، ما می توانیم آنها را به محض لحیم شدن تا بزنیم.
مرحله 4: LED ها را به رزبری پای وصل کنید
من LED ها را مستقیماً به Raspberry Pi لحیم کردم ، اما اگر شما دارای هدر از پیش لحیم کاری شده هستید یا می خواهید از pi برای چیز دیگری استفاده کنید ، پیشنهاد می کنم برای هر LED از سیم های بلوز استفاده کنید ، به این معنی که Pi قابل حذف است می بینید که وقتی LED را لحیم کردم ، پاها را تا کردم تا به پشت نچسبد.
مرحله 5: LED ها را آزمایش کنید
برای اطمینان از اینکه همه LED ها کار می کنند ، من یک اسکریپت را اجرا کردم که از طریق هر پین ممکن عبور می کند و آنها را یکی یکی روشن می کند ، که وقتی روی enter کلیک می کنم ، روی مورد بعدی قرار می گیرد. این به من اجازه داد تا یادداشت کنم که کدام شماره پین کدام مکان را انجام داد ، که بسیار مفید بود.
RPi. GPIO را به عنوان GPIO وارد کنید
زمان وارد کردن GPIO.setmode (GPIO. BCM) برای i در محدوده (0 ، 28): GPIO.setup (i، GPIO. OUT) برای i در محدوده (0، 28): GPIO.output (i، GPIO. HIGH) time.sleep (0.3) GPIO.output (i، GPIO. LOW) print ("That was:" + str (i)) z = raw_input ("بعدی؟")
در حالی که این اتفاق می افتاد ، من یک فایل متنی را یادداشت می کردم که کدام پین کدام مکان و چه رنگی را انجام داد. شما باید این کار را انجام دهید ، زیرا در مرحله بعد بسیار مفید است.
مرحله 6: در صورت درخواست LED را روشن کنید
روشی که من این پروژه را انجام دادم شامل یک Raspberry Pi Zero W است ، با یک وب سایت اساسی که به شما امکان می دهد یک پین را روشن کنید. این بدان معناست که Pi 4 اصلی ، که معمولاً روشن است و در حال اجرا است ، می تواند پردازش را انجام دهد و سپس Pi 0 کوچک فقط باید یک پین را روشن کند و کار را کمی پیچیده تر می کند. من این کار را انجام دادم زیرا با تنظیمات من سازگار است و همچنین احساس کردم Pi 0 می تواند برای کاری که بعدا انجام خواهیم داد کمی کند باشد.
RPi. GPIO را به عنوان GPIO وارد کنید
زمان واردات از واردات فلاسک Flask، render_template، request، jsonify import os app = Flask (_ name_) p = GPIO.setmode (GPIO. BCM) for i in range (0، 28): GPIO.setup (i، GPIO. OUT) @app.route ('/') def index (): return request.remote_addr @app.route ("/off/") def turn_off (pin): GPIO.output (int (pin)، GPIO. LOW) return "Off" @app.route ("/off/all") def alloff (): برای i در محدوده (0 ، 28): GPIO.output (i، GPIO. LOW) return "off" @app.route ("/on/") def turn_on (pin): GPIO.output (int (pin)، GPIO. HIGH) در صورت _name_ == '_main_': "app.run (اشکال زدایی درست ، درست ، میزبان = '0.0)" روشن "است. 0.0 ')
روش کار این است که منتظر url آدرس IP pi و سپس روشن یا خاموش و سپس شماره پین است.
این کد را در فهرست اصلی رزبری پای ذخیره کرده و نام آن را "pin_website.py" بگذارید
شما باید این را تنظیم کنید تا به طور خودکار اجرا شود ، بنابراین برای انجام این کار ، در نوع ترمینال: sudo nano /etc /profile
در انتهای این فایل ، "python3 pin_website.py &" را اضافه کنید
"&" ضروری است ، زیرا باعث می شود در پس زمینه اجرا شود ، و بنابراین اجازه می دهد تا بوت ادامه یابد
مرحله 7: نحوه دریافت مکان
با استفاده از IFTTT ، می توانید سرویسی را طوری تنظیم کنید که وقتی تلفن وارد مکان خاصی می شود ، بتواند برای شما ایمیل یا آدرس وب را پینگ کند یا در تلگرام به شما پیام دهد.
مرحله 8: چگونه این همه کار می کند
راه اندازی من سرور Pi است ، وب سایت من را میزبانی می کند ، با ارسال پورت و DNS ثابت با استفاده از سرویس ارائه شده توسط https://freedns.afraid.org/. بسیاری از این موارد بسیار پیچیده است ، و شما باید در مورد حمل و نقل پورت درک داشته باشید ، ممکن است بار دیگر این کار را انجام دهم.
راه دیگری که می توانید انجام دهید این است که از تلگرام برای دریافت پیام به pi استفاده کنید ، یا احتمالاً ساده ترین راه این است که یک ایمیل خوان بخوانید که ایمیل ها را بخواند و از طریق آن به روز رسانی موقعیت مکانی را دریافت کند.
من ربات تلگرام یا ایمیل خوان را امتحان نکرده ام ، اما آموزش های زیادی وجود دارد که به شما نشان می دهد چگونه این کار را انجام دهید.
در اینجا کد Flask / Python من است که سپس توسط webhooks با استفاده از IFTTT درخواست می شود:
from flask import Flask ، render_template ، request، jsonify
import os from datetime واردات datetime از map import * app = Flask (_ name_) l = 0 setup () @app.route ('/') def index (): request return.remote_addr @app.route ('/mum/enter /') def mu (location): mum.current_loc (location) return "Thanks for the Update، Mum!" @app.route ("/dad/enter/") def da (l): dad.current_loc (l) بازگشت "با تشکر از به روز رسانی ، پدر!" @app.route ("/child/enter/") def child_enter (l): me.current_loc (l) "Hey، Me" @app.route ('/mum/exit/') def mume (location): mum.offline (محل) بازگشت "با تشکر از به روز رسانی ، مادر!" @app.route ("/dad/exit/") def dade (l): dad.offline (l) return "Thanks for the Update، dad!" @app.route ("/child/exit/") def child_exit (l): me.offline (l) بازگشت "Hey، Me" @app.route ("/reset") def redo (): setup () return "تنظیم مجدد!" if _name_ == '_main_': app.run (اشکال زدایی = درست ، میزبان = '0.0.0.0')
و map.py:
واردات http.client، urllib.request، urllib.parse، urllib.error، base64
import ast، json import time import threading import os params = urllib.parse.urlencode ({}) last_loc = 0 dlast_loc = 0 mlast_loc = 0 def defup (): conn = http.client. HTTPSConnection ('freedns.afraid.org') conn.request ("GET"، str ("/dynamic/update.php؟ ZmFpOWlJQ29QczhiOW1iYWJoNVdVcG9HOjE5MTM2ODU2")) respond = conn.getresponse () conn = http.client. HTTPConnection ('192.168.1) (' 192.168.1) "GET" ، str ("/off/all")) respond = conn.getresponse () f = open ("pin"، "w") f.write (str (-1)) f.close () f = باز کردن ("pind"، "w") f.write (str (-1)) f.close () f = open ("pinm"، "w") f.write (str (-1)) f.close () mum class: def current_loc (l): global last_loc locs = {"llansantffraid": 4 ، "oswestry": 5 ، "lynclys": 8 ، "خانه": 9 ، "shrewsbury": 11 ، "llanymynech": 13 ، "چهار صلیب": 18 ، "llandrinio": 25 ، "welshpool": 27} f = open ("pin"، "w") f.write (str (-1)) f.close () time. sleep (1) conn = http.client. HTTPConnection ('192.168.1.251:5000') conn.request ("GET"، str ("/off/") + str (last_loc)) respond = conn.getrespons e () conn = http.client. HTTPConnection ('192.168.1.251:5000') conn.request ("GET"، str ("/on/") + str (locs [l])) respond = conn.getresponse () last_loc = locs [l] off off (l): global last_loc locs = {"llansantffraid": 4 ، "oswestry": 5 ، "lynclys": 8 ، "خانه": 9 ، "shrewsbury": 11 ، "llanymynech ": 13 ،" چهار صلیب ": 18 ،" llandrinio ": 25 ،" welshpool ": 27} conn = http.client. HTTPConnection ('192.168.1.251:5000') conn.request (" GET "، str (" /off/") + str (last_loc)) respond = conn.getresponse () f = open (" pin "،" w ") f.write (str (locs [l])) f.close () os.system ("python3 flash.py &") کلاس پدر: locs = {"welshpool": 3 ، "lynclys": 1 ، "home": 23 ، "shrewsbury": 0 ، "llanymynech": 6 ، "چهار صلیب": 15 ، "llandrinio": 10 ، "welshpool": 24} def current_loc (l): global dlast_loc locs = {"welshpool": 3 ، "lynclys": 1 ، "home": 23 ، "shrewsbury": 0 ، " llanymynech ": 6 ،" چهار صلیب ": 15} f = باز (" pind "،" w ") f.write (str (-1)) f.close () time.sleep (1) conn = http.client. HTTPConnection ('192.168.1.251:5000') conn.reques t ("GET"، str ("/off/") + str (dlast_loc)) respond = conn.getresponse () conn = http.client. HTTPConnection ('192.168.1.251:5000') conn.request ("دریافت" ، str ("/on/") + str (locs [l])) respond = conn.getresponse () dlast_loc = locs [l] off offline (l): global dlast_loc locs = {"welshpool": 3، "lynclys ": 1،" خانه ": 23 ،" shrewsbury ": 0 ،" llanymynech ": 6 ،" چهار صلیب ": 15 ،" llandrinio ": 10} conn = http.client. HTTPConnection ('192.168.1.251:5000') conn.request ("GET" ، str ("/off/") + str (dlast_loc)) respond = conn.getresponse () f = open ("pind"، "w") f.write (str (locs [l])) f.close () os.system ("python3 flashd.py &") کلاس من: def current_loc (l): global mlast_loc locs = {"home": 22 ، "school": 2، "oswestry": 14} f = open ("pinm"، "w") f.write (str (-1)) f.close () time.sleep (1) conn = http.client. HTTPConnection ('192.168.1.251:5000 ') conn.request ("GET" ، str ("/off/") + str (mlast_loc)) respond = conn.getresponse () conn = http.client. HTTPConnection (' 192.168.1.251:5000 ') conn.request ("GET" ، str ("/on/") + str (lo cs [l])) respond = conn.getresponse () mlast_loc = locs [l] offline (l): global dlast_loc locs = {"home": 22 ، "school": 2، "oswestry": 14} conn = http.client. HTTPConnection ('192.168.1.251:5000') conn.request ("GET"، str ("/off/") + str (mlast_loc)) respond = conn.getresponse () f = open ("pinm" ، "w") f.write (str (locs [l])) f.close () os.system ("python3 flashm.py &")
مرحله 9: خودتان را از الهام گرفتن از پروژه من بسازید
بنابراین من می دانم که درک مرحله قبل بسیار سخت خواهد بود ، بنابراین من آن را به شما نشان خواهم داد که چگونه نقشه را بسازید و بتوانم یک تمشک pi داشته باشم که LED ها را روشن و خاموش می کند. اکنون باید یک اسکریپت پایتون ایجاد کنید که با استفاده از IFTTT به شما ایمیل ارسال کند. سپس باید یک کد کد ایمیل را بخوانید ، که بسیار آسان است (آن را در گوگل جستجو کنید). پس از خواندن یک ایمیل و یافتن مکان والدین ، از عبارات 'if' برای پیدا کردن کدام پین برای روشن کردن استفاده کنید.
بر روی نقشه ، چراغ چشمک زن به این معنی است که آنها به تازگی منطقه را ترک کرده اند
روش روشن کردن LED ها در pi دیگری از پایتون به شرح زیر است:
واردات http.client، urllib.request، urllib.parse، urllib.error، base64
params = urllib.parse.urlencode ({}) conn = http.client. HTTPConnection ('192.168.1.251:5000') #این را با آدرس IP نقشه raspberry pi conn.request ("GET" ، str ("/off /2 ")) # این شماره شماره 2 را خاموش می کند پاسخ = conn.getresponse () # این آدرس را درخواست می کند ، و سپس نقشه pi این را می خواند و شماره شماره 2 را خاموش می کند
اساساً ، امیدوارم بتوانید از آنچه من با نقشه سه بعدی انجام داده ام الهام بگیرید تا نقشه ردیابی GPS خود را بسازید.
توصیه شده:
تهیه نقشه نقشه با استفاده از Google Maps: 17 مرحله (همراه با تصاویر)
با استفاده از Google Maps یک نقشه نقشه بسازید: روز دیگر من در کتابفروشی به دنبال راهنمای خیابان در DuPage County ، IL بودم ، زیرا دوست دخترم آنجا زندگی می کند و به نقشه خیابانی دقیق نیاز دارد. متأسفانه ، تنها موردی که نزدیک داشتند یکی برای شهرستان کوک بود (مانند این
اسکنر سه بعدی پایه برای نقشه برداری سه بعدی دیجیتال: 5 مرحله
اسکنر سه بعدی پایه برای نقشه برداری سه بعدی دیجیتال: در این پروژه ، من اصول اولیه اسکن و بازسازی سه بعدی را که عمدتاً در اسکن اجسام نیمه نیمه کوچک کاربرد دارد و عملکرد آنها را می توان به سیستم های اسکن و بازسازی گسترش داد ، توضیح داده و توضیح می دهم. ب
بازی آزیموتال طرح سه بعدی نقشه دکوراسیون X بازی پازل موسیقی محلی - آردوینو: 7 مرحله
بازی پازل Azimuthal Projection 3D Decoration X Folk Music Folk - Arduino: مقدمه صفحه زیر به شما آموزش می دهد که چگونه یک پروژه آردوینو ایجاد کنید ، که دارای دو عملکرد اصلی است - دکوراسیون ساده با نورپردازی و بازی پازل موسیقی محلی ، که شامل زمینه های جغرافیا ، هندسه می شود ، نقشه ها ، سازمان ملل متحد و
ربات هوشمند DIY ردیابی ماشین ردیابی ماشین ردیابی خودرو حساس به نور: 7 مرحله
دستگاه DIY Robot Smart Tracking Car Tracking Car Photosensitive: طراحی شده توسط SINONING ROBOT شما می توانید از ربات ردیابی ماشین خرید کنید بچرخید تا
نحوه اتصال DeLorme Earthmate GPS LT-20 به Google Earth خود برای یک نقشه ردیابی GPS عالی .: 5 مرحله
نحوه اتصال DeLorme Earthmate GPS LT-20 به Google Earth خود برای یک نقشه ردیابی GPS عالی: من نحوه اتصال یک دستگاه GPS به برنامه محبوب Google Earth را بدون استفاده از Google Earth Plus به شما نشان خواهم داد. من بودجه زیادی ندارم بنابراین می توانم تضمین کنم که این کار تا حد ممکن ارزان خواهد بود