Microduino+GPS 功耗和简单测试
本帖最后由 southwolf 于 2013-8-2 03:45 编辑早就关注张老师的Microduino了, 一直也没空研究,最近正好想自己做点小东西,就入了一套。
顺手买了个GPS模块,挑了个大小跟Microduino差不多的UBlox,到时候还可以捆在一起。
最初的计划打算用锂电池供电,所以必须先了解一下各个模块的功耗情况。
Microduino 默认跑的都是空循环,没有任何优化
Core(Mega328P, 16M@5V)的功耗为 5 * 12 = 60mW
Core+(1284P, 16M@5V) 的功耗为 5 * 24 = 120mW
GPS模块的功耗就要大一些了 5 * 50 = 250mW
然后简单测试了一下通讯。线接得比较乱,说明一下:杜邦线是从USB转TTL上连过来的,红线是5V,绿线是3V3,棕色是GND,白色是RST(需要串一个0.1uF的电容),橙色跟黄色是RX/TX
比较细的线是直接从GPS模块引出来的,绿色GND,红色PPS(每秒脉冲,先接到D6中断,留着备用),黄色和白色是RX/TX,接的是Core+的第二串口(D2,D3),黑色是3V3电源。蓝色线是VCC_EN,高电平启动GPS,低电平关断,暂时也没用。
为了测试GPS跟Core+通讯正常,在D4上接了个LED(串220欧电阻),接到串口2的信号就亮一下
简单测试代码如下:
int ledpin = 4;
char line = "";
int byteGPS=0;
void setup()
{
pinMode(ledpin, OUTPUT);
Serial1.begin(9600); // 启用串口2,连接GPS
Serial.begin(9600);
for (int i=0;i<500;i++)
{
line=' ';
}
}
void loop()
{
digitalWrite(ledpin, LOW);
byteGPS = Serial1.readBytesUntil('\r', line, 500); // 读取GPS一行数据
if (byteGPS == 0)
{
delay(100);
}
else
{
digitalWrite(ledpin, HIGH);
Serial.println(line); // 从串口显示
}
}
然后就能从串口读到GPS信息了……
困了……睡觉去 明天再接着搞
不错!!! 好东西!很有用! 请问 328P 3.3V8M 不经过LDO 空循环是多少MA
athlon789789 发表于 2013-8-6 17:26 static/image/common/back.gif
请问 328P 3.3V8M 不经过LDO 空循环是多少MA
抱歉 手上没有这个板……您可以咨询一下张老师…… 请问我只想读取gps的经度和维度,我应该怎么编写呢?求高手能不能写一段 我用的mega328只有一路串口,该怎么办好??直接用串口连GPS模块,显示一堆乱码。好想有个2560 天天向上/tp 发表于 2013-11-2 23:55 static/image/common/back.gif
我用的mega328只有一路串口,该怎么办好??直接用串口连GPS模块,显示一堆乱码。好想有个2560
用软串口…… 乱码是波特率不对吧 southwolf 发表于 2013-11-4 02:17 static/image/common/back.gif
用软串口…… 乱码是波特率不对吧
是的~谢谢你!! 请教byteGPS = Serial1.readBytesUntil('\r', line, 500);中'\r'这个特征字是怎么知道的?? #include <SoftwareSerial.h>
int ledpin = 13;
char line = "";
int byteGPS=0;
#define rxPin 8
#define txPin 9
SoftwareSerial mySerial =SoftwareSerial(rxPin, txPin);
void setup()
{ // define pin modes for tx, rx:
pinMode(rxPin, INPUT);
pinMode(txPin, OUTPUT);
// set the data rate for the SoftwareSerial port
mySerial.begin(4800);
pinMode(ledpin, OUTPUT);
Serial.begin(9600);
for (int i=0;i<500;i++)
{
line=' ';
}
}
void loop()
{
digitalWrite(ledpin, LOW);
byteGPS = mySerial.readBytesUntil('\r', line, 500); // 读取GPS一行数据
if (byteGPS == 0)
{
delay(100);
}
else
{
digitalWrite(ledpin, HIGH);
Serial.println(line); // 从串口显示
delay(100);
}
}
接上去串口显示的是:ììììììììììììììì
请问我哪里做错了? 天天向上/tp 发表于 2013-11-9 17:14 static/image/common/back.gif
请教byteGPS = Serial1.readBytesUntil('\r', line, 500);中'\r'这个特征字是怎么知道的??
一行结束 一般是 \r\n或者\r这样 也就是说读到\r就是一行了 天天向上/tp 发表于 2013-11-9 17:48 static/image/common/back.gif
接上去串口显示的是:ììììììììììììììì
请问我哪里做错了?
先看一下接线?我这里是接到D8 D9 pin, 如果你的接线不一样需要对应改过来
页:
[1]