GPS მოდული და UART კომუნიკაცია
ხშირია სიტუაცია როდესაც გვჭირდება რაიმე ობიექტის მდებარეობის დადგენა ან მისი გადაადგილების კონტროლი. ამ მიზნით საუკეთესო საშუალებაა GPS-ის გამოყენება. GPS აბრევიატურაა რომელიც იშიფრება როგორც Global Positionin System.
არსებობს რამდენიმენაირი GPS მოდულები, მათგან ერთ-ერთი უმარტივესია GPS მოდული, რომლის სახელწოდებაა neo-6m. მისი საშუალებით შეგვიძლია გავიგოთ ადგილმდებარეობა, ასევე დრო და ობიექტის სიჩქარე. განვიხილოთ მისი გამოყენების და არდუინოსთან მიერთების წესები.
ნებისმიერი სახის ინფორმაციის მიმოცვლისათვის საჭიროა სწორად დავამყაროთ კონტაქტი მოდულსა და მიკროკონტროლერს შორის. გარდა ამისა კონტროლერმა უნდა იცოდეს როდის აგზავნის ინფორმაციას მასთან მიერთებული მოდული, სად დამთავრდა წინა ინფორმაცია და იწყება ახალი. ამ მიზნით სწორ კომუნიკაციას უზრუნველყოფენ პროტოკოლები, რომლებიც წინასწარ შედგენილი წესით ამყარებენ კავშირს ორ ან მეტ მოწყობილობას შორის. დღეს-დღეობით არაერთი პროტოკოლი არსებობს და თითოეულ მათგანს გარკვეული უპირატესობა გააჩნია.
ერთ-ერთი ფართოდ გავრცელებული პროტოკოლია უარტი (UART- Universal Asynchronous Receiver-Transmitter ) ციფრული კომუნიაცია შეიძლება იყოს ორნაირი. ესენია სინქრონული და ასინქრონული.
სინქრონული ნიშნავს რომ ინფორმაციის გადაცემის და მიღების ტემპი კონტროლდება დამატებითი პინის საშუალებით რომელსაც სინქრონიზაციის მაგისტრალს უწოდებენ. ასინქრონულში კი მსგავსი მაგისტრალი არ გვაქვს. მაგრამ როგორ ხორციელდება ინფორმაციის ზუსტი გადაცემა და ერთი ბიტის მეორესაგან გარჩევა ამის გარეშე? ამ მიზნით უარტი იყენებს ეგრედ წოდებულ ბაუდ რეითს (Baud Rate) ანუ ინფორმაციის გადაცემის სიჩქარეს. აღნიშნული პროტოკოლის მუშაობის პრინციპი შემდეგნაირია: რა სიჩქარითაც აგზავნის ერთი მოწყობილობა ინფორმაციას, ზუსტად იმ სიჩქარით კითხულობს მეორე. სწორედ ამას ნიშნავს არდუინოს ბრძანება Serial.begin(9600).
უარტ პროტოკოლი ინფორმაციის მიმოცვლისათვის იყენებს ორ პინს, ესენია RX და TX. მოდით განვიხილოთ უარტ კომუნიკაცია GPS მოდულის მაგალთზე, რადგან იგი სწორედ უარტ პროტოკოლს იყენებს.
აღნიშნულ მოდულს აქვს ოთხი ფეხი. აქედან ორი კვების ფეხია ხოლო დანარჩენი ორი გამოიყენება კომუნიკაციის დასამყარებლად.
რადგან იგი უარტ პროტოკოლზე მუშაობს ეს ფეხებია RT და TX ანუ გადამცემი და მიმღები. (Receiver/Transmitter) გადამცემი აგზავნის ინფორმაციას ხოლო მიმღები იღებს. ამიტომ ისინი ერთმანეთს უნდა დავუკავშიროთ.
აღნიშნული პინები არდუინოსაც აქვს ჩაშენებული, თუმცა არდუინო კოდის ასატვირთად სწორედ მათ იყენებს ამიტომ უმჯობესია შევქმნათ დამატებითი პინები რომელსაც ჩვენი კომუნიკაციისთვის გამოვიყენებთ. ამისათვის საჭიროა SoftwearSerial ბიბლიოთეკის გამოყენებ. GPS მოდულთან სამუშაოდ ასევე გამოვიყენებთ დამატებით ბიბლიოთეკას რომლის სახელია TinyGPS++. მოდით დავწეროთ კოდი რომლითაც გავიგებთ ობიექტის გრძედსა და განედს.
#include <TinyGPS++.h>
#include <SoftwareSerial.h>
int RXPin = 4, TXPin = 3;
int GPSBaud = 9600;
//ვქმნით GPS-ის ობიექტს
TinyGPSPlus gps;
// ვქმნით ახალ უარტ მაგისტრალს
SoftwareSerial mySerial(RXPin, TXPin);
void setup() {
Serial.begin(9600);
mySerial.begin(GPSBaud);
}
void loop() {
// ვამოწმებთ არის თუ არა გამოგზავნილი ინფორმაცია
while (mySerial.available() > 0) {
gps.encode(mySerial.read());
if (gps.location.isUpdated()) {
Serial.print("Latitude= ");
Serial.print(gps.location.lat(), 6);
Serial.print(" Longitude= ");
Serial.println(gps.location.lng(), 6);
}
}
}