Съдържание:
- Стъпка 1: Получаване на 3D карта
- Стъпка 2: Подготовка на картата за LED вложки
- Стъпка 3: Поставете светодиодите
- Стъпка 4: Свържете светодиодите към Raspberry Pi
- Стъпка 5: Тествайте светодиодите
- Стъпка 6: Код за включване на светодиода при поискване
- Стъпка 7: Как да получите местоположение
- Стъпка 8: Как работи всичко това
- Стъпка 9: Изградете своя собствена от вдъхновение от моя проект
Видео: GPS проследяване на 3D карта: 9 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:51
Този проект е 3D отпечатана 3D карта, с пътища, реки и градове, с LED маяци, които показват местоположението на членовете на семейството. Той може да покаже дали детето е в училище или не, или само местоположението на двамата родители. Можем също да го използваме, за да предскажем кога родителите ще се приберат у дома, така че вечерята да може да се приготви за точното време. Това също е просто като цяло страхотен проект, който да се покаже и да се покаже на семейството и приятелите.
Надявам се да ви хареса да направите този Instructable или да се насладите на научаването за проект, който направих
Стъпка 1: Получаване на 3D карта
За да получите 3D карта на вашия район, написах отделна инструкция, която да ви помогне да ви преведе през процеса на създаване на такава. Връзката към инструктажа е тук:
www.instructables.com/id/Making-a-3D-Print…
Стъпка 2: Подготовка на картата за LED вложки
Сега, когато имате 3D карта с пътища, градове и реки, се нуждаем от начин да посочим къде се намира човек на картата. Използвах двуцветни 3 мм RG светодиоди, защото основната цел на картата е да покаже къде са двамата родители. На определени места използвах RGB LED, за да мога да покажа къде е най -голямото дете. Има ограничение от 28 пина за извеждане на Raspberry Pi, така че изберете местоположенията на светодиодите разумно. В крайна сметка използвах около 24 от тях, така че трябва да сте добре.
За да пробия PLA, открих, че нормалната бормашина за дърво работи добре и се отнасях така, както бих третирал дървото.
На места, където картата беше твърде дебела, бих пробил основния слой с голяма бормашина, а след това видимия горния слой с правилната 3 мм бормашина.
Стъпка 3: Поставете светодиодите
Сега, когато имаме дупки, в които да седят светодиодите, можем да ги залепим. PVA или Superglue работи добре за това, открих, че PVA се движи около него, запечатвайки го на място, а суперлепилото също работи много добре. Уверете се, че при всеки светодиод те стърчат само на видимата страна с няколко мм, защото това, че светодиодите стърчат по целия път, изглежда малко объркано. Не се притеснявайте за краката на гърба, можем да ги сгънем, след като са запоени.
Стъпка 4: Свържете светодиодите към Raspberry Pi
Директно запоявах светодиодите към Raspberry Pi, но ако имате такъв с предварително запоена заглавка или искате да можете да използвате pi за нещо друго, тогава бих предложил да използвате джъмперни проводници за всеки светодиод, което означава, че Pi може да се сваля. Можете да видите, че след като запоя LED, сгънах краката надолу, така че да не залепват по гърба.
Стъпка 5: Тествайте светодиодите
За да се уверя, че всички светодиоди работят, пуснах скрипт, който преминава през всеки възможен щифт и ги осветява, един по един, който преминава към следващия, когато щракна 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 ("Това беше:" + str (i)) z = raw_input ("Следващ?")
Докато това се случваше, ще отбележа текстов файл кой щифт е направил кое място и кой цвят. Трябва да направите това, тъй като е много полезно в следващата стъпка.
Стъпка 6: Код за включване на светодиода при поискване
Начинът, по който направих този проект, включва един 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 в обхват (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 ')
Начинът, по който това работи, е, че чака URL адреса на IP адреса на pi и след това включване или изключване и след това номера на пина.
запишете този код в началната директория на Raspberry Pi и го наречете "pin_website.py"
Ще трябва да настроите това да се изпълнява автоматично, така че за да направите това, в типа терминал: sudo nano /etc /profile
В долната част на този файл добавете „python3 pin_website.py &“
"&" Е от съществено значение, тъй като го кара да работи във фонов режим и следователно позволява зареждането да продължи
Стъпка 7: Как да получите местоположение
Използвайки IFTTT, можете да настроите услуга, така че когато телефонът влезе в определено местоположение, той да ви изпраща имейл или да пингва уеб адрес или да ви изпраща съобщение в телеграма.
Стъпка 8: Как работи всичко това
Настройката, която имам, е Server Pi, хостващ моя уебсайт, с пренасочване на портове и статичен DNS, използващ услугата, предоставена от https://freedns.a fear.org/. Много от това е доста сложно и трябва да имате разбиране за пренасочването на портове, може да направя инструкции как да направя тази част друг път.
Друг начин, по който можете да го направите, е да използвате телеграма за получаване на съобщения до pi, или може би най -лесният, е да настроите четец на имейли, който чете имейлите и получава актуализации за местоположението чрез това.
Не съм пробвал бота на Telegram или четеца на имейли, но има много уроци, които ще ви покажат как да го направите.
Ето моя Flask / Python код, който след това се иска от webhooks, използвайки IFTTT:
от колба за импортиране на колба, render_template, заявка, jsonify
import os от datetime импортиране datetime от карта import * app = Flask (_ name_) l = 0 setup () @app.route ('/') def index (): return request.remote_addr @app.route ('/mum/enter /') def mu (location): mum.current_loc (location) return "Благодаря за актуализацията, мамо!" @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 (location) return "Благодаря за актуализацията, мамо!" @app.route ("/dad/exit/") def dade (l): dad.offline (l) върнете "Благодаря за актуализацията, татко!" @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
импортиране ast, json време за импортиране импортиране на нишки импорт os params = urllib.parse.urlencode ({}) last_loc = 0 dlast_loc = 0 mlast_loc = 0 def setup (): conn = http.client. HTTPSConnection ('freedns.a fear.org') conn.request ("GET", str ("/dynamic/update.php? ZmFpOWlJQ29QczhiOW1iYWJoNVdVcG9HOjE5MTM2ODU2")) response = conn.getresponse () conn = http.client. HTTPConnection ('192.168) "GET", str ("/off/all")) response = conn.getresponse () f = open ("pin", "w") f.write (str (-1)) f.close () f = open ("pind", "w") f.write (str (-1)) f.close () f = open ("pinm", "w") f.write (str (-1)) f.close () клас майка: def current_loc (l): глобална 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)) 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," llandrinio ": 25," welshpool ": 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 &") class dad: 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)) 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," home ": 23," shrewsbury ": 0," llanymynech ": 6," four crossses ": 15," llandrinio ": 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 = отворен ("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 = отворен ("pinm", "w") f.write (str (locs [l])) f.close () os.system ("python3 flashm.py &")
Стъпка 9: Изградете своя собствена от вдъхновение от моя проект
Така че знам, че предишната стъпка ще бъде много трудна за разбиране, затова ще я оставя да ви покаже как да направите картата и да можете да имате малиново пи, което включва и изключва светодиодите. Сега трябва да създадете скрипт на python, който, използвайки IFTTT, ви изпраща имейл. След това трябва да намерите кода за четене на имейл, който е доста лесен (google го). След това, след като прочетете имейл и намерите местоположението на родител, използвайте „if“, за да намерите кой щифт да включите.
На картата мигаща светлина означава, че току -що са напуснали района
Начинът за включване на светодиодите на друго пи от python е както следва:
внос http.client, urllib.request, urllib.parse, urllib.error, base64
params = urllib.parse.urlencode ({}) conn = http.client. HTTPConnection ('192.168.1.251:5000') #променете това с IP адреса на картата на raspberry conn.request ("GET", str ("/off /2 ")) # това изключва пин номер 2 response = conn.getresponse () # това изисква URL адреса, след което картата pi чете това и изключва пин номер 2
По принцип се надявам, че можете да използвате това, което направих с моята 3D карта като вдъхновение, за да направите своя собствена карта за проследяване на GPS.
Препоръчано:
Въведение - Превърнете Raspberry Pi в сървър за GPS проследяване: 12 стъпки
Въведение - Превърнете Raspberry Pi в сървър за GPS проследяване: В това ръководство ще ви покажа как да инсталирате Traccar GPS софтуер за проследяване на Raspberry Pi, който ще получава данни от съвместими устройства по интернет, като регистрира позициите им на карта в реално време проследяване, както и проследяване на възпроизвеждане
Проследяване и проследяване за малки магазини: 9 стъпки (със снимки)
Проследяване и следене за малки магазини: Това е система, създадена за малки магазини, която трябва да се монтира на електронни велосипеди или електронни тротинетки за доставки на къси разстояния, например пекарна, която иска да доставя сладкиши. Какво означава Track and Trace? Проследяване и проследяване е система, използвана от ca
Направи си сам интелигентен робот за проследяване на комплекти за кола Проследяване на фоточувствителна кола: 7 стъпки
DIY Smart Robot Tracking Car Kits Проследяване на автомобил Фоточувствителен: Дизайн от SINONING ROBOT Можете да закупите от проследяващ робот car Теорът LM393 сравнете двата фоторезистора, когато има един страничен фоторезистор LED на БЯЛО, страната на двигателя ще спре веднага, другата страна на двигателя завърти се, така че
Подаващо устройство за карта с търговска карта: 10 стъпки (със снимки)
Устройство за подаване на карти за машина за търговски карти: Подавател за карти за машина за карти за картина Предистория Когато бях млад, събирах тонове карти за търговия, но от няколко години страстта към събирането намалява. Междувременно имам деца и бавно, но сигурно и те започват да получават
Как да свържете DeLorme Earthmate GPS LT-20 към Google Earth за страхотна карта за проследяване на GPS .: 5 стъпки
Как да свържете DeLorme Earthmate GPS LT-20 към вашата Google Земя за страхотна карта за проследяване на GPS .: Ще ви покажа как да свържете GPS устройство към популярната програма Google Earth, без да използвате Google Earth Plus. Нямам голям бюджет, така че мога да гарантирам, че това ще бъде възможно най -евтино