Სარჩევი:
- ნაბიჯი 1: მიიღეთ 3D რუქა
- ნაბიჯი 2: რუქის მომზადება LED ჩანართებისთვის
- ნაბიჯი 3: ჩადეთ LED- ები
- ნაბიჯი 4: დაუკავშირეთ LED- ები Raspberry Pi- ს
- ნაბიჯი 5: შეამოწმეთ LED- ები
- ნაბიჯი 6: კოდი, რომ ჩართოთ LED მოთხოვნის შემთხვევაში
- ნაბიჯი 7: როგორ მივიღოთ ადგილმდებარეობა
- ნაბიჯი 8: როგორ მუშაობს ეს ყველაფერი
- ნაბიჯი 9: შექმენით თქვენი საკუთარი პროექტი ჩემი პროექტის შთაგონებისგან
ვიდეო: GPS თვალთვალის 3D რუკა: 9 ნაბიჯი
2024 ავტორი: John Day | [email protected]. ბოლოს შეცვლილი: 2024-01-30 10:16
ეს პროექტი არის 3D ნაბეჭდი 3D რუქა, გზებით, მდინარეებითა და ქალაქებით, LED შუქებით, რომ აჩვენოს ოჯახის წევრების ადგილმდებარეობა. მას შეუძლია აჩვენოს არის თუ არა ბავშვი სკოლაში, ან ორივე მშობლის ადგილმდებარეობა. ჩვენ ასევე შეგვიძლია გამოვიყენოთ იმის პროგნოზირება, თუ რომელ დროს მიიღებენ მშობლები სახლში, ისე რომ სადილი იყოს შესაფერისი დროისათვის. ეს ასევე უბრალოდ ზოგადად მაგარი პროექტია ოჯახის წევრებისა და მეგობრების საჩვენებლად და ჩვენებისთვის.
ვიმედოვნებ, რომ თქვენ გსიამოვნებთ ამ ინსტრუქციის გაკეთება, ან ისიამოვნებთ ჩემს მიერ შემუშავებული პროექტის გაცნობით
ნაბიჯი 1: მიიღეთ 3D რუქა
თქვენი ტერიტორიის 3D რუქის მისაღებად, მე დავწერე ცალკე ინსტრუქცია, რომელიც დაგეხმარებათ გაგიწიოთ მისი შექმნის პროცესში. ინსტრუქციის ბმული აქ არის:
www.instructables.com/id/Making-a-3D-Print…
ნაბიჯი 2: რუქის მომზადება LED ჩანართებისთვის
ახლა, როდესაც თქვენ გაქვთ 3D რუკა, გზებით, ქალაქებითა და მდინარეებით, ჩვენ გვჭირდება გზა იმის მითითებისთვის, თუ სად არის ადამიანი რუკაზე. მე გამოვიყენე ორფერიანი 3 მმ RG LED- ები, რადგან რუქის მთავარი დანიშნულებაა აჩვენოს სად არიან ორი მშობელი. ზოგიერთ ადგილას მე გამოვიყენე RGB LED, რომ მომცა საშუალება მეჩვენებინა სად იყო ყველაზე დიდი ბავშვი. არსებობს შეზღუდვა 28 ქინძისთავზე Raspberry Pi– ზე გამოსასვლელად, ასე რომ გონივრულად შეარჩიეთ LED- ების ადგილმდებარეობა. მე დაახლოებით 24 მათგანი გამოვიყენე, ასე რომ თქვენ კარგად უნდა იყოთ.
PLA– ს საბურღი, მე აღმოვაჩინე, რომ ნორმალური ხის საბურღი კარგად მუშაობდა და მე ისე მოვექეცი, როგორც ხეზე.
იმ ადგილებში, სადაც რუკა ძალიან სქელი იყო, მე ვბურღავდი ძირითად ფენას დიდი ბურღვით, შემდეგ კი ხილულ ზემოთა ფენას სწორი 3 მმ -იანი საბურღით.
ნაბიჯი 3: ჩადეთ LED- ები
ახლა, როდესაც ჩვენ გვაქვს ხვრელები LED- ების დასაყენებლად, ჩვენ შეგვიძლია მათი წებოვანა. PVA ან Superglue კარგად მუშაობს ამაში, მე აღმოვაჩინე, რომ PVA გარბოდა მის გარშემო დალუქვით და სუპერწებოვანიც ძალიან კარგად მუშაობდა. დარწმუნდით, რომ თითოეული LED- ით, ისინი მხოლოდ რამდენიმე მმ -ით იშლება ხილულ მხარეზე, რადგან LED- ების შებუსვა ბოლომდე ცოტა არეულად გამოიყურება. არ ინერვიულოთ ფეხები ზურგზე, ჩვენ შეგვიძლია დავკეცოთ ისინი, როგორც კი შედუღდება.
ნაბიჯი 4: დაუკავშირეთ LED- ები Raspberry Pi- ს
მე პირდაპირ მივაწებე LED- ები Raspberry Pi- ს, თუმცა, თუ თქვენ გაქვთ ერთი წინასწარ შედუღებული სათაურით, ან გინდათ რომ გამოიყენოთ pi სხვა რამეში, მაშინ მე გირჩევთ გამოიყენოთ jumper ხაზები თითოეული 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) ბეჭდვა ("ეს იყო:" + 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) 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) დაბრუნება "Off" @app.route ("/off/all") def alloff (): i დიაპაზონში (0, 28): GPIO.output (i, GPIO. LOW) დაბრუნება "off" @app.route ("/on/") def turn_on (pin): GPIO.output (int (pin), GPIO. HIGH) return "On" if _name_ == '_main_': app.run (debug = True, host = '0.0 0.0 ')
როგორ მუშაობს ეს ის ელოდება pi- ს IP მისამართის url- ს, შემდეგ ჩართვას ან გამორთვას და შემდეგ pin ნომერს.
შეინახეთ ეს კოდი Raspberry Pi- ს სახლის დირექტორიაში და დაარქვით მას "pin_website.py"
თქვენ უნდა დააყენოთ ეს ავტომატურად გასაშვებად, ასე რომ ამის გაკეთება, ტერმინალის ტიპში: sudo nano /etc /profile
ამ ფაილის ბოლოში დაამატეთ "python3 pin_website.py &"
"&" აუცილებელია, რადგან ის ქმნის მას ფონზე და, შესაბამისად, საშუალებას აძლევს ჩატვირთვის გაგრძელებას
ნაბიჯი 7: როგორ მივიღოთ ადგილმდებარეობა
IFTTT– ის გამოყენებით, თქვენ შეგიძლიათ შექმნათ სერვისი ისე, რომ როდესაც ტელეფონი შევა გარკვეულ ადგილას, მას შეუძლია მოგწეროთ ელ.წერილი, ან დააწკაპუნოს ვებ მისამართზე, ან გამოგიგზავნოთ შეტყობინება ტელეგრამზე.
ნაბიჯი 8: როგორ მუშაობს ეს ყველაფერი
კონფიგურაცია, რომელიც მაქვს, არის სერვერი Pi, რომელიც მასპინძლობს ჩემს ვებსაიტს, პორტის გადაგზავნით და სტატიკური DNS სერვისით, რომელსაც უზრუნველყოფს https://freedns.afraid.org/. ბევრი მათგანი საკმაოდ რთულია და თქვენ უნდა გქონდეთ ნავსადგურის გადაგზავნის გაგება, მე შეიძლება ინსტრუქტაჟი გავუწიო, როგორ გავაკეთო ეს ნაწილი სხვა დროს.
ამის გაკეთების კიდევ ერთი გზა არის დეპეშის გამოყენება pi– ზე შეტყობინებების მისაღებად, ან შესაძლოა ყველაზე მარტივი, ეს არის ელ.ფოსტის მკითხველის დაყენება, რომელიც კითხულობს წერილებს და იღებს ადგილმდებარეობის განახლებებს ამის საშუალებით.
მე არ მიცდია Telegram- ის ბოტი ან ელ.ფოსტის მკითხველი, მაგრამ არსებობს უამრავი გაკვეთილი, რომელიც გაჩვენებთ როგორ.
აქ არის ჩემი Flask / Python კოდი, რომელსაც შემდეგ ითხოვენ ვებგვერდები IFTTT გამოყენებით:
ფლაკონის იმპორტიდან Flask, render_template, request, jsonify
იმპორტი os from datetime იმპორტი datetime რუკადან import * app = Flask (_ name_) l = 0 setup () @app.route ('/') def index (): return request.remote_addr @app.route ('/mum/enter /') 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" @app.route ('/mum/exit/') def mume (მდებარეობა): mum.offline (ადგილმდებარეობა) დაბრუნება "მადლობა განახლებისთვის, დედა!" @app.route ("/dad/exit/") def dade (l): dad.offline (l) return "მადლობა განახლებისთვის, მამა!" @app.route ("/child/exit/") def child_exit (l): me.offline (l) დაბრუნება "Hey, Me" @app.route ("/reset") def redo (): setup () return "გადატვირთეთ!" თუ _name_ == '_main_': app.run (გამართვა = მართალია, მასპინძელი = '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 ("/dynamical/update.php? ZmFpOWlJQ29QczhiOW1iYWJoNVdVcG9HOjE5MTM2ODU2")) respond = conn.getresponse () conn = http.client. HTTPConnection ('192.168.1) (' 192.168.1) "GET", str ("/off/all")) response = 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 () კლასის დედა: def current_loc (l): global last_loc locs = {"llansantffraid": 4, "oswestry": 5, "lynclys": 8, "home": 9, "shrewsbury": 11, "llanymynech": 13, "ოთხი ჯვარი": 18, "llandrinio": 25, "welshpool": 27} f = ღია ("pin", "w") f.write (str (-1)) f.losose () time. ძილი (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])) respond = 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," llandrinio ": 25," welshpool ": 27} conn = http.client. HTTPConnection ('192.168.1.251:5000') conn.quest (" 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, "მთავარი": 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') კავშირი. მოითხოვს 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])) respond = conn.getresponse () dlast_loc = locs [l] def offline (l): global dlast_loc locs = {"welshpool": 3, "lynclys ": 1," მთავარი ": 23," შრიუსბერი ": 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 &") კლასი me: def current_loc (l): global mlast_loc locs = {"home": 22, "school": 2, "oswestry": 14} f = ღია ("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])) respond = 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: შექმენით თქვენი საკუთარი პროექტი ჩემი პროექტის შთაგონებისგან
ასე რომ, მე ვიცი, რომ წინა ნაბიჯის გაგება ძალიან ძნელი იქნება, ამიტომ მე დავტოვებ მას, როგორც გაჩვენებთ თუ როგორ უნდა გააკეთოთ რუკა და შემეძლოს გქონდეს ჟოლოს პი, რომელიც ჩართავს და გამორთავს LED- ებს. ახლა თქვენ უნდა შექმნათ პითონის სკრიპტი, რომელიც IFTTT– ის გამოყენებით გამოგიგზავნით ელ.წერილს. შემდეგ თქვენ უნდა იპოვოთ ელ.ფოსტის კოდის ნაწილი, რომელიც საკმაოდ ადვილია (google it). მას შემდეგ რაც წაიკითხავთ ელ.წერილს და იპოვით მშობლის ადგილსამყოფელს, გამოიყენეთ 'if' განცხადებები, რომ იპოვოთ რომელი პინი უნდა ჩართოთ.
რუქაზე მოციმციმე შუქი ნიშნავს, რომ მათ ახლახანს დატოვეს ტერიტორია
პითონიდან სხვა pi- ზე LED- ების ჩართვის გზა ქვემოთ მოცემულია:
იმპორტი http.client, urllib.request, urllib.parse, urllib.error, base64
params = urllib.parse.urlencode ({}) conn = http.client. HTTPConnection ('192.168.1.251:5000') #შეცვალეთ ეს ჟოლოს პი რუკის IP მისამართით conn.request ("GET", str ("/off /2 ")) # ეს გამორთავს პინ ნომერს 2 პასუხი = conn.getresponse () # ეს ითხოვს URL- ს და შემდეგ რუკა pi კითხულობს ამას და გამორთავს პინ ნომერს 2
ძირითადად, ვიმედოვნებ, რომ თქვენ შეგიძლიათ გამოიყენოთ ის, რაც მე გავაკეთე ჩემი 3D რუქით, როგორც შთაგონება თქვენი საკუთარი GPS თვალთვალის რუქის შესაქმნელად.
გირჩევთ:
შესავალი - ჟოლოს პი გადააქციეთ GPS თვალთვალის სერვერში: 12 ნაბიჯი
შესავალი - ჟოლოს Pi ჩართეთ GPS თვალთვალის სერვერში: ამ სახელმძღვანელოში მე გაჩვენებთ თუ როგორ უნდა დააინსტალიროთ Traccar GPS თვალთვალის პროგრამული უზრუნველყოფა Raspberry Pi– ზე, რომელიც მიიღებს მონაცემებს თავსებადი მოწყობილობებისგან ინტერნეტით, აფიქსირებს მათ პოზიციებს რუკაზე რეალურ დროში თვალყურის დევნება და ასევე დაკვრის დაკვირვება
შექმენით საკუთარი GPS SMS უსაფრთხოების თვალთვალის სისტემა: 5 ნაბიჯი (სურათებით)
შექმენით თქვენი საკუთარი GPS SMS უსაფრთხოების თვალთვალის სისტემა: ამ პროექტში მე გაჩვენებთ თუ როგორ უნდა დააკავშიროთ SIM5320 3G მოდული არდუინოსთან და პიეზოელექტრული გადამცემთან, როგორც შოკის სენსორი, რათა შეიქმნას უსაფრთხოების თვალთვალის სისტემა, რომელიც გამოგიგზავნით ადგილმდებარეობას ძვირფასი მანქანა SMS– ით, როდესაც მე
ჭკვიანი ზურგჩანთა GPS თვალთვალის და ავტომატური შუქებით: 15 ნაბიჯი
ჭკვიანი ზურგჩანთა Gps თვალთვალისა და ავტომატური შუქებით: ამ ინსტრუქციურად ჩვენ გავაკეთებთ ჭკვიან ზურგჩანთას, რომელსაც შეუძლია თვალყური ადევნოს ჩვენს პოზიციას, სიჩქარეს და აქვს ავტომატური განათება, რომელსაც შეუძლია ღამის უსაფრთხოება მოგვცეს. მე ვიყენებ 2 სენსორს იმის დასადგენად, არის თუ არა იგი თქვენს მხრებზე, რათა დავრწმუნდე, რომ ის არ ითიშება, როცა არ არის საჭირო
ნავიგაცია რობოტზე ფეხსაცმლის სენსორებით, W/o GPS, W/o რუკა: 13 ნაბიჯი (სურათებით)
ნავიგაცია რობოტზე ფეხსაცმლის სენსორებით, W/o GPS, W/o რუქით: რობოტი გადადის წინასწარ დაპროგრამებულ გზაზე და გადასცემს (bluetooth– ით) მის რეალურ მოძრაობის ინფორმაციას ტელეფონზე რეალურ დროში თვალთვალისთვის. Arduino წინასწარ არის დაპროგრამებული ბილიკით და oblu გამოიყენება რობოტის მოძრაობის საგრძნობად. ობლუ გადასცემს ინფორმაციას მოძრაობის შესახებ
როგორ დააკავშიროთ DeLorme Earthmate GPS LT-20 თქვენს Google Earth– თან დიდი GPS თვალთვალის რუქისთვის .: 5 ნაბიჯი
როგორ დააკავშიროთ DeLorme Earthmate GPS LT-20 თქვენს Google Earth– თან დიდი GPS თვალთვალის რუქისთვის .: მე გაჩვენებთ თუ როგორ დაუკავშიროთ GPS მოწყობილობა პოპულარულ Google Earth პროგრამას, Google Earth Plus– ის გამოყენების გარეშე. მე არ მაქვს დიდი ბიუჯეტი, ასე რომ შემიძლია გარანტია, რომ ეს იქნება რაც შეიძლება იაფი