电子说
步骤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使用的格式)。我希望此说明可以帮助每个人使用英特尔爱迪生和位置数据。
全部0条评论
快来发表一下你的评论吧 !