This shows you the differences between two versions of the page.
pm:prj2022:sgherman:sistem-de-autoorientare-telescop [2022/06/02 00:41] razvan.virtan [Download] |
pm:prj2022:sgherman:sistem-de-autoorientare-telescop [2022/06/02 01:01] (current) razvan.virtan [Aplicația client] |
||
---|---|---|---|
Line 30: | Line 30: | ||
==== Componente ==== | ==== Componente ==== | ||
* Arduino UNO | * Arduino UNO | ||
- | * Giroscop + sistem de prindere pe telescop | + | * Giroscop MPU6050 + sistem de prindere pe telescop |
* Modul Bluetooth HC 06 | * Modul Bluetooth HC 06 | ||
* 2 motoare pas cu pas | * 2 motoare pas cu pas | ||
* Fire de conexiune | * Fire de conexiune | ||
- | * Punte H | + | * Drivere A4988 |
* BreadBoard / PerfBoard / PCB | * BreadBoard / PerfBoard / PCB | ||
* Telescop de Masă | * Telescop de Masă | ||
Line 59: | Line 59: | ||
==== Algoritmul de reglare automată a poziției ==== | ==== Algoritmul de reglare automată a poziției ==== | ||
- | Algoritmul pleacă de la presupunerea că telescopul este inițial orientat către un punct de referință (în acest caz, nordul astronomic). După ce datele obiectului ceresc, ora curentă și locația geografică au fost primite prin bluetooth, calculăm diferența dintre poziția noastră inițială și poziția finală la care trebuie să ajungă telescopul pentru a prinde în câmpul său vizual target-ul de pe bolta cerească. | + | Algoritmul pleacă de la presupunerea că telescopul este inițial orientat către un punct de referință (în acest caz, Steaua Polară). După ce datele obiectului ceresc, data și ora curentă și locația geografică au fost primite prin bluetooth, calculăm diferența dintre poziția noastră inițială și poziția finală la care trebuie să ajungă telescopul pentru a prinde în câmpul său vizual target-ul de pe bolta cerească. |
Deplasarea telescopului are loc în 2 pași: | Deplasarea telescopului are loc în 2 pași: | ||
Line 66: | Line 66: | ||
==== Funcții principale ==== | ==== Funcții principale ==== | ||
- | * **setup_gyro()**: face setările inițiale pentru comunicarea i2c cu giroscopul (apelată de **setup()**) | + | * **readBluetoothData()**: citește un string de la programul client prin bluetooth, pâna la apariția caracterului `\n` |
- | * **setup_bluetooth()**: face setările inițiale pentru comunicarea cu modulul bluetooth (apelată de **setup()**) | + | * **readFromUser()**: citește datele stelei, poziția geografică și timpul curent UTC de la utilizator, prin bluetooth |
- | * **setup_motors()**: setează pinii pentru controlul motoarelor prin driver-ele A4988 | + | * **azalt()**: convertește coordonatele din sistemul celest în sistemul orizont (azimut și altitudine) |
- | * **loop()**:realizează algoritmul descris mai sus, folosindu-se de anumite funcții ajutătoare pentru citiri de date | + | * **setup()**: inițializează pinii, setează modulul comunicarea cu modulul bluetooth și coordonatele stelei polare pentru referință |
- | * **read_from_bluetooth()**: obține coordonate geografice, dată și oră și coordonatele corpului ceresc urmărit de la modulul bluetooth | + | * **loop()**: citește datele unui corp ceresc de la utilizator și deplasează telescopul pentru a-l cuprinde în fov-ul său |
- | * **read_from_gyro()**: citește date de la giroscop pentru a știi cât de mult ne-am rotit în ultimii 15 pași | + | |
+ | ==== Aplicația client ==== | ||
+ | Interfața sistemului de auto orientare e reprezentată de o aplicație în linie de comandă scrisă în Python. Aceasta ofera un meniu din care utilizatorul își poate selecta corpul ceresc după care vrea să orienteze telescopul. După realizarea selecției, aplicația află data și ora curentă și locația geografică (folosind modulul `geocoder`) și le trimite către modulul HC06 (văzut pe Linux ca o intrare în `/dev`). | ||
+ | {{:pm:prj2022:sgherman:telescope_client.png?500|}} | ||
+ | <note important>Mai multe detalii referitoare la implementarea codului sunt oferite în README-ul din repository-ul github al proiectului (vezi secțiunea Download).</note> | ||
===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
Utilizând componente nu foarte costisitoare, am reușit construirea unui sistem de orientare a telescopului la un preț rezonabil având în vedere precizia oferită. Am testat sistemul utilizând în principal aplicația [[https://play.google.com/store/apps/details?id=com.noctuasoftware.stellarium_free&hl=ro&gl=US|Stellarium]] (pentru testare, oferă avantajul de a putea urmări corpuri cerești la orice oră, nu doar noaptea). Se poate observa că majoritatea corpurilor cerești din lista oferită în aplicația client sunt cuprinse după orientare în FOV-ul telescopului, sau se află la o deviație de câteva grade față de acesta. | Utilizând componente nu foarte costisitoare, am reușit construirea unui sistem de orientare a telescopului la un preț rezonabil având în vedere precizia oferită. Am testat sistemul utilizând în principal aplicația [[https://play.google.com/store/apps/details?id=com.noctuasoftware.stellarium_free&hl=ro&gl=US|Stellarium]] (pentru testare, oferă avantajul de a putea urmări corpuri cerești la orice oră, nu doar noaptea). Se poate observa că majoritatea corpurilor cerești din lista oferită în aplicația client sunt cuprinse după orientare în FOV-ul telescopului, sau se află la o deviație de câteva grade față de acesta. | ||
Line 101: | Line 104: | ||
===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== | ||
+ | * "Practical Astronomy with your Calculator" 3rd edition, Petter Duffet-Smith | ||
* https://www.instructables.com/Star-Track-Arduino-Powered-Star-Pointer-and-Tracke/ | * https://www.instructables.com/Star-Track-Arduino-Powered-Star-Pointer-and-Tracke/ | ||
* https://www.instructables.com/Arduino-Star-Finder-for-Telescopes/ | * https://www.instructables.com/Arduino-Star-Finder-for-Telescopes/ | ||
Line 107: | Line 111: | ||
* https://wired.chillibasket.com/2015/01/calibrating-mpu6050/ | * https://wired.chillibasket.com/2015/01/calibrating-mpu6050/ | ||
* https://create.arduino.cc/projecthub/RucksikaaR/interfacing-the-hc-06-bluetooth-module-with-arduino-f9c315 | * https://create.arduino.cc/projecthub/RucksikaaR/interfacing-the-hc-06-bluetooth-module-with-arduino-f9c315 | ||
+ | * http://www.convertalot.com/celestial_horizon_co-ordinates_calculator.html | ||
+ | * https://github.com/rfetick/MPU6050_light | ||
<html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | <html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | ||