ดังนั้น บทความนี้จึงเกิดขึ้นเพื่อแก้ปัญหาดังกล่าว

สิ่งที่ต้องใช้
1. Raspberry Pi พร้อม SDCard
2. USB GPS Doungle
3. 3G USB Modem พร้อม แพ็กเก็จอินเตอร์เน็ต
4. Thingspeak Account
5. Gmail Account
6. PowerBank
1.ส่วนของ DataBase
Thingspeak เป็บบริการ PaaS สำหรับ Internet of Things มีบริการ Open API เชื่อมต่อกับอุปกรณ์ผ่าน REST API, บริการเก็บข้อมูลแบบ Real-time, แสดงข้อมูล geolocation, ประมวลผลข้อมูล, แสดงข้อมูลกราฟ, สถานะของอุปกรณ์ และ plugins เสริมสำหรับเชื่อมต่อกับบริการอื่นๆ
1.ลงทะเบียน สร้าง Account กับ ThingSpeak
2.สร้าง New Chanel
3.กำหนดชื่อและจำนวน Field ที่ต้องการ ทำการบันทึก Chanel
4.เรียกดู API Key
1.ส่วนของ ตัว Hardware
เช่นเดิม Blog นี้เน้นการใช้งาน Raspberry pi ดังนั้นพระเอกก็คือ บอร์ด Raspberry pi พ่วงด้วย USB GPS Glonass vk 172 ใช้กับ windows ได้ด้วย พร้อม 3G USB Modem ZTE 190M
1. Install OS (Rasbian) บน SDCard
2. ตรวจสอบอุปกรณ์ USB บน Raspberry pi

จะพบ อุปกรณ์ GPS และ USB 3G Modem
3. ส่วนของ USB GPS Glonass vk172
ติดตั้ง gpsd พร้อมทั้งโปรแกรมทดสอบ และ api ใช้งานผ่าน Python
sudo apt-get install gpsd gpsd-clients python-gps
ให้เรียกใช้โปรแกรม gpsd ซึ่งจะทำงานในพื้นหลัง
sudo gpsd /dev/ttyACM0 -F /var/run/gpsd.sock
ทดลองเรียกใช้โปรแกรม cgps เพื่อดูว่า GPS สามารถระบุพิกัดได้หรือไม่
sudo cgps -s
เขียนโปรแกรมอ่านค่าจาก GPS ส่งข้อมูลเข้า ThingSpeak
4. ส่วนของ 3G USB Modem เพื่อต่ออินเตอร์เน็ต ทำการติดตั้ง โปรแกรมที่ใชเชื่อมต่อ 3G คือ PPP, Sakis3G และ UMTSkeeper โดยใช้คำสั่ง
sudo apt-get install ppp
wget "http://downloads.sourceforge.net/project/vim-n4n0/sakis3g.tar.gz?
r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fvim-
n4n0%2Ffiles%2F&ts=1363537696&use_mirror=tene~t"-Osakis3g.tar.gz-4
sudo tarxzvf sakis3g.tar.gz
sudo chmod +x sakis3g
wget "http://zool33.uni-graz.at/petz/umtskeeper/src/umtskeeper.tar.gz"-4
sudo tarxzvf umtskeeper.tar.gz
sudo chmod +x umtskeeper
จากนั้นก็เรียกใช้โปรแกรม Sakis3G
sudo ./sakis3g --interactive

เลือกเป็น USB device

เลือกข้อ 4. ZTE WCDMA Technologies MSM

เลือก ข้อ 2. Custom APN...

เนื่องจากผู้เขียน ใช้อินเตอร์เน็ตของ My By CAT APN จึงเป็น my สำหรับผู้ให้บริการรายอื่นให้ดู การตั้งค่า APN จากผู้ให้บริการ

รอสักพักก็จะมีการแจ้งสถานะ

ดู Connection Information

เลือก Exit ออกจากโปรแกรม
ทดสอบดู PPP conection ใช้คำสั่ง
ifconfig

ทำการเชื่อมต่ออัตโนมัติตอนเปิดเครื่อง
sudo nano /etc/rc.local
เพิ่มบรรทัด
sudo ./home/pi/sakis3g connect USBMODEM="19d2:0117" USBINTERFACE="0" APN="catinternet" APN_USER="my" APN_PASS="0"
ทำการเขียนโปรแกรม ภาษาไพทอน อ่านค่า GPS แล้ว ส่งขึ้นเวบ Thingspeak
sudo nano gpslog.py
import gps
import time
import os
import httplib, urllib
os.system('gpsd /dev/ttyACM0 -F /var/run/gpsd.sock')
session = gps.gps("localhost", "2947")
session.stream(gps.WATCH_ENABLE | gps.WATCH_NEWSTYLE)
while True:
try:
report = session.next()
if report['class'] == 'TPV':
if hasattr(report, 'lat'):
lat=report.lat
if hasattr(report, 'lon'):
lon=report.lon
params = urllib.urlencode({'field1':lat ,'field2':lon
,'key':'HL2KTONHJIOXKZJO'})
headers = {"Content-type": "application/x-www-form-
urlencoded","Accept": "text/plain"}
conn = httplib.HTTPConnection("api.thingspeak.com:80")
try:
conn.request("POST", "/update", params, headers)
response = conn.getresponse()
print response.status, response.reason
data = response.read()
conn.close()
except:
print "connection failed"
time.sleep(30)
except KeyError:
pass
except KeyboardInterrupt:
quit()
ทำการทดสอบโปรแกรม
sudo python gpslog.py
ดูค่าที่ได้จากเวบ thingspeak โดยทำการ Login เข้าดู

ทำการสั่ง run โปรแกรมตอนเปิดเครื่อง โดยติดตั้ง Supervisor (เขียนไปแล้วลองค้นดูในบล็อก)
3.ส่วนการแสดงผลตำแหน่งปัจจุบันของ Hardware GPS
สำหรับการแสดงผลพิกัด GPS ว่าปัจจุบันว่าอยู่ที่ไหน นั้นถ้าเป็นอุปกรณ์ GPS Tracking ที่ขายอยู่ตามท้องตลาดแล้ว จะมีการรายงานตำแหน่งอยู่ใน สองลักษณะ คือ รายงานพิกัด เข้าระบบเป็น SMS ซึ่งก็ยุ่งยากอยู่ และอย่างที่สอง คือ รายงานพิกัดเข้าเวบเซอฟเวอร์ของผู้ขายระบบ ซึ่งอาจปิดตัวหนีเมื่อไหร่ก็ได้
ดังนั้น ด้วยเราเป็นเป็นนักพัฒนา และมีเวบฟรีที่ใหบริการที่ สามารถฝากข้อมูล (Thingspeak) และ เวบที่สามารถ เขียน javascript ให้เรานำค่าที่ได้จาก เวบ Thingspeak มาลงบน googlemap ได้ ผู้เขียนจึงเลือก Blogger.com นี่แหละ มาเป็นเวบไซต์ที่แสดงผลพิกัด GPS เพราะเราสามารถ สร้างชื่อเวบไซต์ที่จำง่ายได้ โดยไม่เสียค่าใช้จ่าย
สำหรับ Code Javascript อ่าค่าและแสดงผลพิกัด GPS ทำได้ดังนี้
สร้างบทความใหม่ เลือก HTML

สำหรับ script java เป็นดังนี้
<html>
<head>
<meta http-equiv="refresh" content="30">
</head>
<body><div id="googleMap" style="height: 480px; width: 580px;">
</div>
<script src="http://maps.googleapis.com/maps/api/js?sensor=false"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js" type="text/javascript"></script>
<script src="https://www.google.com/jsapi" type="text/javascript"></script>
<script type="text/javascript">
function loadData() {
$.getJSON('https://api.thingspeak.com/channels/63981/feed/last.json?apikey=LQQY5PH7YF5T9A1O&callback=?', function(data) {
latitude = data.field1;
longitude = data.field2;
ttime = data.created_at;
});
}
function loadmap() {
var mapSet = {center:new google.maps.LatLng(13.764934,100.5382955),zoom:5,
mapTypeId:google.maps.MapTypeId.ROADMAP};
var map=new google.maps.Map(document.getElementById("googleMap"),mapSet);
var marker=new google.maps.Marker({
position:new google.maps.LatLng(latitude,longitude),
title: ttime});
marker.setMap(map);
}
function updateMaps() {
loadData();
google.maps.event.addDomListener(window, 'load', loadmap);
document.write(Date());
}
updateMaps()
</script>
</body>
</html>
ทดสอบแสดงหน้าตัวอย่าง

โดยพิกัดล่าสุดอยู่ที่
https://api.thingspeak.com/channels/63981/feed/last.json
หรือเข้าดู Blog ตามชื่อที่เราตั้งไว้ก็จะเป็นเวบ GPS Tracking ของเราเอง
- ขาย USB GPS Glonass vk172 ราคา 1,500 บาท มีอยู่ 2 ตัว

โทร 089-696-6324
ไม่มีความคิดเห็น:
แสดงความคิดเห็น