southwolf 发表于 2013-8-2 03:45:41

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信息了……
困了……睡觉去 明天再接着搞

txmg 发表于 2013-8-2 15:00:52

不错!!!

fangtaonj 发表于 2013-8-2 19:01:22

好东西!很有用!

athlon789789 发表于 2013-8-6 17:26:37

请问 328P 3.3V8M 不经过LDO 空循环是多少MA

southwolf 发表于 2013-8-7 11:37:49

athlon789789 发表于 2013-8-6 17:26 static/image/common/back.gif
请问 328P 3.3V8M 不经过LDO 空循环是多少MA

抱歉 手上没有这个板……您可以咨询一下张老师……

duanliangcong 发表于 2013-9-14 23:57:20

请问我只想读取gps的经度和维度,我应该怎么编写呢?求高手能不能写一段

天天向上/tp 发表于 2013-11-2 23:55:28

我用的mega328只有一路串口,该怎么办好??直接用串口连GPS模块,显示一堆乱码。好想有个2560

southwolf 发表于 2013-11-4 02:17:50

天天向上/tp 发表于 2013-11-2 23:55 static/image/common/back.gif
我用的mega328只有一路串口,该怎么办好??直接用串口连GPS模块,显示一堆乱码。好想有个2560

用软串口…… 乱码是波特率不对吧

天天向上/tp 发表于 2013-11-9 15:39:53

southwolf 发表于 2013-11-4 02:17 static/image/common/back.gif
用软串口…… 乱码是波特率不对吧

是的~谢谢你!!

天天向上/tp 发表于 2013-11-9 17:14:20

请教byteGPS = Serial1.readBytesUntil('\r', line, 500);中'\r'这个特征字是怎么知道的??

天天向上/tp 发表于 2013-11-9 17:48:01

#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);               
      }
}
接上去串口显示的是:ììììììììììììììì
请问我哪里做错了?

southwolf 发表于 2013-11-11 07:13:04

天天向上/tp 发表于 2013-11-9 17:14 static/image/common/back.gif
请教byteGPS = Serial1.readBytesUntil('\r', line, 500);中'\r'这个特征字是怎么知道的??

一行结束 一般是 \r\n或者\r这样 也就是说读到\r就是一行了

southwolf 发表于 2013-11-11 07:14:21

天天向上/tp 发表于 2013-11-9 17:48 static/image/common/back.gif
接上去串口显示的是:ììììììììììììììì
请问我哪里做错了?

先看一下接线?我这里是接到D8 D9 pin, 如果你的接线不一样需要对应改过来
页: [1]
查看完整版本: Microduino+GPS 功耗和简单测试