具有Intel Edison的GPS汽车追踪器的制作

电子说

1.2w人已加入

描述

步骤1:材料

•用于Arduino的Intel Edison

•Grove Base Shield

•Grove GPS

步骤2:接线

Grove GPS使用串行通信将数据发送到Intel Edison。如果使用我的Grove GPS(使用SIM28 GPS模块),则波特率可以从9600到115200,这带来了快速的通信,因此可以立即获取更新的数据。 Grove GPS必须连接到Grove Base Shield的UART端口中。

步骤3:挑战

•功耗

因为Grove GPS需要高电流电源,我意识到Intel Edison中的USB电缆作为电源是不够的,特别是当您有其他传感器时(只需插入酒精传感器和GPS就会看到)。因此,我使用了收到的电源插头上的外部电源以提供足够的电源。如果要使用

•处理GPS数据,GPS使用一种称为NMEA(美国国家海洋电子协会)的特定格式,其中包含一些句子,每个句子都描述了GPS捕获的一个特定信息(例如位置和位置)。高度数据,卫星数据等)。一个注意事项:我在描述有关传感器此信息的Seedstudio Wiki(http://www.seeedstudio.com/wiki/Grove_-_GPS)中找到了此信息。另外,Google Maps不使用这种格式来显示位置,因此我需要寻找一种转换此位置数据的方法,并且发现了Thomas Tingsted Mathiesen(http://www.tma.dk/gps/)撰写的文章。 ,它描述了一种简单的转换方法(非常感谢Thomas!)。

步骤4:源代码

在我编写的简单代码下面以下:

捕获GPS信息

查找$ GPGGA记录(有关NMEA的更多信息,请访问http://gpsinformation.org/dale/nmea.htm

收集纬度/经度/从NMEA转换为12月

使用GPS信息生成Google Maps链接

由于Google Maps API需要密钥,因此我创建了一个,但我在代码中忽略了我。请确保通过遵循https://developers.google.com/maps/documentation/static-maps/

/*jslint node:true, vars:true, bitwise:true, unparam:true */

/*jshint unused:true */

// Leave the above lines for propper jshinting

var GPSSensor = require(‘jsupm_ublox6’);

var myGPSSensor = new GPSSensor.Ublox6(0);

setTimeout(getGPSInfo(), 1000);

if (!myGPSSensor.setupTty(GPSSensor.int_B9600)) {

console.log(“Failed to setup tty port parameters”);

process.exit(0);

}

bufferLength = 256;

var nmeaBuffer = new GPSSensor.charArray(bufferLength);

function getGPSInfo() {

if (myGPSSensor.dataAvailable()) {

var rv = myGPSSensor.readData(nmeaBuffer, bufferLength);

var GPSData, dataCharCode, isNewLine, lastNewLine;

var numlines= 0;

if (rv 》 0) {

GPSData = “”;

// read only the number of characters

// specified by myGPSSensor.readData

for (var x = 0; x 《 rv; x++) {

var data = nmeaBuffer.getitem(x);

GPSData += data;

}

console.log(processData(GPSData));

}

if (rv 《 0) { // some sort of read error occured

console.log(“Port read error.”);

process.exit(0);

}

}

}

function processData(rawData) {

var data = rawData.split(“,”);

var index = data.indexOf(“$GPGGA”);

var lat = data[index+2];

var lon = data[index+4];

var latDec = convertNmeaToDec(lat);

var lonDec = convertNmeaToDec(lon);

if(data[index+3] == “S”) latDec = latDec * -1;

if(data[index+4] == “W”) lonDec = lonDec * -1;

var url = “https://maps.googleapis.com/maps/api/staticmap?center=”;

url += -latDec;

url += “,”;

url += -lonDec;

url += “&zoom=14&size=600x300&key=*** API KEY OMMITED! PLACE YOU OWN KEY HERE ***”;

return url;

}

// Function to convert the NMEA format from GPS to Decimal

// This function is needed to show in Google Maps.

// Thanks to http://www.tma.dk/gps/

function convertNmeaToDec(nmea) {

var deg = (nmea / 100);

var decPos = deg + ((nmea - (deg * 100)) / 60);

return decPos;

}

// Print message when exiting

process.on(‘SIGINT’, function() {

console.log(“Exiting.。.”);

process.exit(0);

});

第5步:结论

代码非常简单,但要使用GPS数据以及如何将其转换为k则需要很多信息nown格式(例如Google Maps使用的格式)。我希望此说明可以帮助每个人使用英特尔爱迪生和位置数据。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分