সুচিপত্র:

জিপিএস ট্র্যাকিং 3D ম্যাপ: 9 টি ধাপ
জিপিএস ট্র্যাকিং 3D ম্যাপ: 9 টি ধাপ

ভিডিও: জিপিএস ট্র্যাকিং 3D ম্যাপ: 9 টি ধাপ

ভিডিও: জিপিএস ট্র্যাকিং 3D ম্যাপ: 9 টি ধাপ
ভিডিও: মাত্র 2 মিনিটে বাংলাদেশের মানচিত্র আঁকার টেকনিক | How to Draw Bangladesh Map with dot | DrawingSkill 2024, নভেম্বর
Anonim
জিপিএস ট্র্যাকিং 3D ম্যাপ
জিপিএস ট্র্যাকিং 3D ম্যাপ
জিপিএস ট্র্যাকিং 3D ম্যাপ
জিপিএস ট্র্যাকিং 3D ম্যাপ

এই প্রকল্পটি একটি 3D মুদ্রিত 3D মানচিত্র, যেখানে রাস্তা, নদী এবং শহরগুলি, পরিবারের সদস্যদের অবস্থান দেখানোর জন্য LED বীকন সহ। এটি দেখাতে পারে যে একটি শিশু স্কুলে আছে কি না, অথবা কেবল বাবা -মা উভয়ের অবস্থান। আমরা এটাও ব্যবহার করতে পারি যে বাবা -মা কোন সময় বাড়ি ফিরে আসবেন, যাতে সঠিক সময়ের জন্য রাতের খাবার তৈরি করা যায়। এটি পরিবার এবং বন্ধুদের কাছে প্রদর্শন এবং প্রদর্শন করার জন্য একটি সাধারণ শীতল প্রকল্প।

আমি আশা করি আপনি এই নির্দেশযোগ্য তৈরি করতে উপভোগ করবেন, অথবা আমার তৈরি একটি প্রকল্প সম্পর্কে জানতে উপভোগ করবেন

ধাপ 1: একটি 3D মানচিত্র পাওয়া

আপনার এলাকার একটি 3D মানচিত্র পেতে, আমি একটি পৃথক নির্দেশনা লিখেছি যাতে আপনি একটি তৈরির প্রক্রিয়ার মাধ্যমে আপনাকে গাইড করতে পারেন। নির্দেশের লিঙ্কটি এখানে:

www.instructables.com/id/Making-a-3D-Print…

ধাপ 2: LED সন্নিবেশের জন্য মানচিত্র প্রস্তুত করা

এখন যেহেতু আপনার কাছে একটি 3D মানচিত্র রয়েছে, যেখানে রাস্তা, শহর এবং নদী রয়েছে, আমাদের মানচিত্রে একজন ব্যক্তির অবস্থান নির্দেশ করার একটি উপায় প্রয়োজন। আমি দ্বি-রঙ 3 মিমি আরজি এলইডি ব্যবহার করেছি, কারণ মানচিত্রের মূল উদ্দেশ্য হল দুই বাবা-মা কোথায় তা দেখানো। কিছু জায়গায় আমি একটি RGB LED ব্যবহার করেছি, যাতে আমাকে দেখাতে পারে যে সবচেয়ে বড় শিশুটি কোথায় ছিল। রাস্পবেরি পাইতে 28 পিনের আউটপুটের সীমা রয়েছে, তাই বিজ্ঞতার সাথে এলইডিগুলির অবস্থানগুলি চয়ন করুন। আমি তাদের প্রায় 24 ব্যবহার করে শেষ করেছি, তাই আপনার ভাল হওয়া উচিত।

পিএলএ ড্রিল করার জন্য, আমি একটি সাধারণ কাঠের ড্রিল বিটকে ভালভাবে কাজ করতে দেখেছি, এবং আমি কাঠের মতো চিকিৎসা করবো।

এমন জায়গায়, যেখানে মানচিত্রটি খুব পুরু ছিল, আমি একটি বড় ড্রিল বিট দিয়ে বেস লেয়ারটি ড্রিল করব এবং তারপরে উপরের 3 মিটার ড্রিল বিট দিয়ে দৃশ্যমান হবে।

ধাপ 3: LEDs ertোকান

LEDs ertোকান
LEDs ertোকান

এখন যেহেতু আমাদের কাছে LEDs বসার জন্য গর্ত আছে, আমরা সেগুলোকে আঠালো করে দিতে পারি। PVA বা Superglue এর জন্য ভালো কাজ করে, আমি দেখতে পেলাম যে PVA তার চারপাশে দৌড়ে এটিকে সিল করে রেখেছে, এবং superglue খুব ভাল কাজ করেছে। নিশ্চিত করুন যে প্রতিটি এলইডি দিয়ে, তারা কেবল কয়েক মিমি দ্বারা দৃশ্যমান পাশে আটকে থাকে, কারণ এলইডিগুলি সমস্তভাবে আটকে থাকা কিছুটা অগোছালো দেখায়। পিছনে পা নিয়ে চিন্তা করবেন না, সোল্ডার হয়ে গেলে আমরা এগুলিকে ভাঁজ করতে পারি।

ধাপ 4: রাস্পবেরি পাইয়ের সাথে এলইডি সংযুক্ত করুন

আমি সরাসরি রাস্পবেরি পাইতে এলইডি বিক্রি করেছি, যাইহোক, যদি আপনার একটি প্রি-সোল্ডার হেডারের সাথে থাকে, অথবা আপনি অন্য কোন কিছুর জন্য পাই ব্যবহার করতে সক্ষম হতে চান, তাহলে আমি প্রতিটি LED এর জন্য জাম্পার তার ব্যবহার করার পরামর্শ দেব, মানে পাই অপসারণযোগ্য। আপনি দেখতে পাচ্ছেন যে একবার আমি এলইডি সোল্ডার করেছিলাম, আমি পা দুটি ভাঁজ করেছিলাম যাতে তারা পিঠে লেগে না থাকে।

ধাপ 5: LEDs পরীক্ষা করুন

LEDs পরীক্ষা করুন
LEDs পরীক্ষা করুন

সমস্ত এলইডি কাজ করছে তা নিশ্চিত করার জন্য, আমি একটি স্ক্রিপ্ট চালালাম যা প্রতিটি সম্ভাব্য পিনের মধ্য দিয়ে যায় এবং সেগুলিকে এক এক করে জ্বালায়, যা আমি এন্টার এ ক্লিক করলে পরের দিকে চলে যায়। এটি আমাকে নোট করার অনুমতি দেয় যে কোন পিন নম্বরটি কোন অবস্থানে ছিল, যা খুব দরকারী ছিল।

RPi. GPIO GPIO হিসাবে আমদানি করুন

আমদানির সময় GPIO.setmode (GPIO. BCM) পরিসরের মধ্যে i এর জন্য (0, 28): GPIO.setup (i, GPIO. OUT) i in range (0, 28): GPIO.output (i, GPIO. HIGH) time.sleep (0.3) GPIO.output (i, GPIO. LOW) প্রিন্ট ("সেটা ছিল:" + str (i)) z = raw_input ("Next?")

যখন এটি ঘটছিল, আমি একটি পাঠ্য ফাইলে নোট করব কোন পিনটি কোন অবস্থান এবং কোন রঙটি করেছে। আপনাকে এটি করতে হবে, কারণ এটি পরবর্তী ধাপে খুব দরকারী।

ধাপ 6: অনুরোধ করার সময় LED চালু করার কোড

যেভাবে আমি এই প্রকল্পটি করেছি তা হল একটি রাস্পবেরি পাই জিরো ডাব্লু, একটি মৌলিক ওয়েবসাইট যা আপনাকে একটি পিন চালু করতে দেয়। এর অর্থ হল যে প্রধান পাই 4, যা সাধারণত চালু থাকে এবং চলমান থাকে, প্রক্রিয়াজাতকরণ করতে পারে, এবং তারপর ছোট পাই 0 কে কেবল একটি পিন চালু করতে হয়, যা জিনিসগুলিকে কিছুটা জটিল করে তোলে। আমি এটি করেছি কারণ এটি আমার সেটআপের সাথে মানানসই, এবং আমি অনুভব করেছি যে Pi 0 কিছুটা ধীর হতে পারে যা আমরা পরে করব।

RPi. GPIO GPIO হিসাবে আমদানি করুন

ফ্লাস্ক থেকে আমদানির সময় আমদানি ফ্লাস্ক, render_template, request, jsonify import os app = Flask (_ name_) p = GPIO.setmode (GPIO. BCM) i i in range (0, 28): GPIO.setup (i, GPIO। আউট) @app.route ('/') def index (): return request.remote_addr @app.route ("/off/") def turn_off (pin): GPIO.output (int (pin), GPIO. LOW) রিটার্ন "অফ" @app.route ("/off/all") def alloff (): i for range (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 (debug = True, host = '0.0" ফিরিয়ে দেয় 0.0 ')

এটি যেভাবে কাজ করে তা হল পিআই এর আইপি ঠিকানার ইউআরএল এবং তারপর একটি চালু বা বন্ধ এবং তারপর পিন নম্বর এর জন্য অপেক্ষা করা।

রাস্পবেরি পাই এর হোম ডিরেক্টরিতে এই কোডটি সংরক্ষণ করুন এবং এর নাম দিন "pin_website.py"

স্বয়ংক্রিয়ভাবে চালানোর জন্য আপনাকে এটি সেট করতে হবে, তাই এটি করার জন্য, টার্মিনাল প্রকারে: sudo nano /etc /profile

এই ফাইলের নীচে, "python3 pin_website.py &" যোগ করুন

"&" অপরিহার্য, কারণ এটি এটিকে পটভূমিতে চালায়, এবং সেইজন্য বুট চালিয়ে যেতে দেয়

ধাপ 7: কিভাবে অবস্থান গ্রহণ করবেন

লোকেশন কিভাবে পাবেন
লোকেশন কিভাবে পাবেন

আইএফটিটিটি ব্যবহার করে, আপনি একটি পরিষেবা সেট আপ করতে পারেন যাতে ফোনটি একটি নির্দিষ্ট স্থানে প্রবেশ করলে এটি আপনাকে ইমেল করতে পারে, অথবা একটি ওয়েব ঠিকানা পিং করতে পারে, অথবা টেলিগ্রামে আপনাকে বার্তা পাঠাতে পারে।

ধাপ 8: কিভাবে এই সব কাজ করে

আমার যে সেটআপ আছে তা হল সার্ভার পাই, আমার ওয়েবসাইট হোস্টিং, পোর্ট ফরওয়ার্ডিং এবং একটি স্ট্যাটিক DNS https://freedns.afraid.org/ দ্বারা প্রদত্ত পরিষেবা ব্যবহার করে। এর অনেকগুলি বেশ জটিল, এবং আপনার পোর্ট ফরওয়ার্ডিং সম্পর্কে বোঝার দরকার আছে, আমি এই অংশটি অন্য সময় কীভাবে করতে হবে তার একটি নির্দেশনা দিতে পারি।

আরেকটি উপায় যা আপনি করতে পারেন তা হল পাই -তে বার্তা পেতে টেলিগ্রাম ব্যবহার করা, অথবা সম্ভবত সবচেয়ে সহজ, একটি ইমেল রিডার সেট আপ করা যা ইমেলগুলি পড়ে এবং এর মাধ্যমে লোকেশন আপডেট পায়।

আমি টেলিগ্রাম বট বা ইমেইল রিডার চেষ্টা করিনি, কিন্তু সেখানে প্রচুর টিউটোরিয়াল আছে যা আপনাকে দেখাবে কিভাবে।

এখানে আমার ফ্লাস্ক / পাইথন কোড যা তারপর IFTTT ব্যবহার করে ওয়েবহুক দ্বারা অনুরোধ করা হয়েছে:

ফ্লাস্ক আমদানি ফ্লাস্ক থেকে, render_template, অনুরোধ, jsonify

ডেটটাইম থেকে ওএস আমদানি করুন ডেটটাইম ম্যাপ ইম্পোর্ট থেকে আমদানি করুন আমদানি করুন * অ্যাপ = ফ্লাস্ক (_ নাম_) l = 0 সেটআপ () @app.route ('/') ডিফ ইনডেক্স (): রিকোয়েস্ট রিকোয়েস্ট। /') def mu (অবস্থান): mum.current_loc (অবস্থান) প্রত্যাবর্তন "আপডেটের জন্য ধন্যবাদ, মা!" @app.route ("/dad/enter/") def da (l): dad.current_loc (l) return "ধন্যবাদ আপডেট করার জন্য, বাবা!" @app.route ("/child/enter/") def child_enter (l): me.current_loc (l) "Hey, Me" return 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) return "Hey, Me" @app.route ("/reset") def redo (): setup () return "রিসেট!" যদি _name_ == '_main_': app.run (debug = True, host = '0.0.0.0')

এবং map.py:

আমদানি http.client, urllib.request, urllib.parse, urllib.error, base64

আমদানি ast, json আমদানি সময় আমদানি থ্রেডিং আমদানি os params = urllib.parse.urlencode ({}) last_loc = 0 dlast_loc = 0 mlast_loc = 0 def setup (): conn = http.client. HTTPSConnection ('freedns.afraid.org') conn.request ("GET", str ("/dynamic/update.php? zmFpOWlJQ29QczhiOW1iYWJoNVdVcG9HOjE5MTM2ODU2") response = conn.getresponse () conn = http.client. HTTPConnection ('192.168.125.125.125.125.125.125.125.125.125.125.125.125.125.125.125.125.125.125.125.125.125.125.125.25.125.125.125.125.125.125.125.125.125.125.125.125.125.125.125.125.125.125.125.125.1) "GET", str ("/off/all")) response = conn.getresponse () f = open ("pin", "w") f.write (str (-1)) f.close () f = খোলা ("পিন্ড", "w") f.write (str (-1)) f.close () f = open ("pinm", "w") f.write (str (-1)) f.close () শ্রেণীর মা: def current_loc (l): global last_loc locs = {"llansantffraid": 4, "oswestry": 5, "lynclys": 8, "home": 9, "shrewsbury": 11, "llanymynech": 13, "চার ক্রস": 18, "ল্যান্ড্রিনিও": 25, "ওয়েলশপুল": 27} f = খোলা ("পিন", "w") f.write (str (-1)) f.close () সময়। ঘুম (1) conn = http.client. HTTPConnection ('192.168.1.251:5000') conn.request ("GET", str ("/off/") + str (last_loc)) response = conn.getrespons e () conn = http.client. HTTPConnection ('192.168.1.251:5000') conn.request ("GET", str ("/on/") + str (locs [l])) response = conn.getresponse () last_loc = locs [l] def offline (l): global last_loc locs = {"llansantffraid": 4, "oswestry": 5, "lynclys": 8, "home": 9, "shrewsbury": 11, "llanymynech ": 13," চার ক্রস ": 18," ল্যান্ড্রিনিও ": 25," ওয়েলশপুল ": 27} conn = http.client. HTTPConnection ('192.168.1.251:5000') conn.request (" GET ", str (" /off/") + str (last_loc)) response = 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, "four crosses": 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 = open (" 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)) response = conn.getresponse () conn = http.client. HTTPConnection ('192.168.1.251:5000') conn.request ("GET", str ("/on/") + str (locs [l])) response = conn.getresponse () dlast_loc = locs [l] def offline (l): global dlast_loc locs = {"welshpool": 3, "lynclys ": 1," হোম ": 23," শ্রুয়েসবারি ": 0," ল্ল্যানিমিনেক ": 6," চার ক্রস ": 15," ল্যান্ড্রিনিও ": 10} conn = http.client. HTTPConnection ('192.168.1.251:5000') conn.request ("GET", str ("/off/") + str (dlast_loc)) response = conn.getresponse () f = open ("pind", "w") f.write (str (locs [l])) f.close () os.system ("python3 flashd.py &") class me: 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)) response = conn.getresponse () conn = http.client. HTTPConnection (' 192.168.1.251:5000 ') conn.request ("GET", str ("/on/") + str (lo cs [l])) response = conn.getresponse () mlast_loc = locs [l] def 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)) response = conn.getresponse () f = open ("pinm", "w") f.write (str (locs [l])) f.close () os.system ("python3 flashm.py &")

ধাপ 9: অনুপ্রেরণা থেকে আমার নিজের প্রকল্প তৈরি করুন

তাই আমি জানি যে পূর্ববর্তী ধাপটি বোঝা খুব কঠিন হবে, তাই আমি আপনাকে মানচিত্রটি কীভাবে তৈরি করতে হয় তা দেখানোর জন্য ছেড়ে দেব, এবং একটি রাস্পবেরি পাই পেতে সক্ষম হব যা LEDs চালু এবং বন্ধ করে। আপনাকে এখন একটি পাইথন স্ক্রিপ্ট তৈরি করতে হবে যা IFTTT ব্যবহার করে আপনাকে ইমেল করে। তারপরে আপনাকে একটি ইমেল পড়ার কোড খুঁজে পেতে হবে, যা বেশ সহজ (গুগল এটি)। তারপরে একবার আপনি একটি ইমেল পড়ুন এবং একজন পিতামাতার অবস্থান সন্ধান করুন, কোন পিনটি চালু করতে হবে তা খুঁজে পেতে 'যদি' বিবৃতি ব্যবহার করুন।

মানচিত্রে, একটি ঝলকানি আলো মানে তারা এই এলাকা ছেড়েছে

পাইথন থেকে অন্য পাইতে এলইডি চালু করার উপায় নিম্নরূপ:

আমদানি http.client, urllib.request, urllib.parse, urllib.error, base64

params = urllib.parse.urlencode ({}) conn = http.client. HTTPConnection ('192.168.1.251:5000') #রাস্পবেরী পাই এর মানচিত্র আইপি ঠিকানা conn.request ("GET", str ("/off) /2 ")) # এটি পিন নম্বর 2 প্রতিক্রিয়া = conn.getresponse () # এটি ইউআরএল অনুরোধ করে, এবং তারপর মানচিত্র পাই এটি পড়ে এবং পিন নম্বর 2 বন্ধ করে দেয়

মূলত, আমি আশা করি আপনি আমার 3D মানচিত্র দিয়ে আমি যা করেছি তা আপনার নিজের জিপিএস ট্র্যাকিং মানচিত্র তৈরি করতে অনুপ্রেরণা হিসাবে ব্যবহার করতে পারেন।

প্রস্তাবিত: