极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 25454|回复: 12

Microduino+GPS 功耗和简单测试

[复制链接]
发表于 2013-8-2 03:45:41 | 显示全部楼层 |阅读模式
本帖最后由 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的信号就亮一下

简单测试代码如下:
  1. int ledpin = 4;
  2. char line[500] = "";
  3. int byteGPS=0;

  4. void setup()
  5. {
  6.         pinMode(ledpin, OUTPUT);
  7.         Serial1.begin(9600);         // 启用串口2,连接GPS
  8.         Serial.begin(9600);
  9.         for (int i=0;i<500;i++)               
  10.         {      
  11.                 line[i]=' ';
  12.         }   
  13. }

  14. void loop()
  15. {
  16.         digitalWrite(ledpin, LOW);
  17.         byteGPS = Serial1.readBytesUntil('\r', line, 500);            // 读取GPS一行数据
  18.         if (byteGPS == 0)               
  19.         {   
  20.                 delay(100);
  21.         }
  22.         else
  23.         {
  24.                 digitalWrite(ledpin, HIGH);
  25.                 Serial.println(line);                           // 从串口显示
  26.         }
  27. }
复制代码


然后就能从串口读到GPS信息了……
困了……睡觉去 明天再接着搞

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

评分

参与人数 1 +3 收起 理由
Microduino + 3

查看全部评分

回复

使用道具 举报

发表于 2013-8-2 15:00:52 | 显示全部楼层
不错!!!
回复 支持 反对

使用道具 举报

发表于 2013-8-2 19:01:22 | 显示全部楼层
好东西!很有用!
回复 支持 反对

使用道具 举报

发表于 2013-8-6 17:26:37 | 显示全部楼层
请问 328P 3.3V8M 不经过LDO 空循环是多少MA
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-7 11:37:49 | 显示全部楼层
athlon789789 发表于 2013-8-6 17:26
请问 328P 3.3V8M 不经过LDO 空循环是多少MA

抱歉 手上没有这个板……您可以咨询一下张老师……
回复 支持 反对

使用道具 举报

发表于 2013-9-14 23:57:20 来自手机 | 显示全部楼层
请问我只想读取gps的经度和维度,我应该怎么编写呢?求高手能不能写一段
回复 支持 反对

使用道具 举报

发表于 2013-11-2 23:55:28 | 显示全部楼层
我用的mega328只有一路串口,该怎么办好??直接用串口连GPS模块,显示一堆乱码。好想有个2560
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-11-4 02:17:50 | 显示全部楼层
天天向上/tp 发表于 2013-11-2 23:55
我用的mega328只有一路串口,该怎么办好??直接用串口连GPS模块,显示一堆乱码。好想有个2560

用软串口…… 乱码是波特率不对吧
回复 支持 反对

使用道具 举报

发表于 2013-11-9 15:39:53 | 显示全部楼层
southwolf 发表于 2013-11-4 02:17
用软串口…… 乱码是波特率不对吧

是的~谢谢你!!
回复 支持 反对

使用道具 举报

发表于 2013-11-9 17:14:20 | 显示全部楼层
请教  byteGPS = Serial1.readBytesUntil('\r', line, 500);中'\r'这个特征字是怎么知道的??
回复 支持 反对

使用道具 举报

发表于 2013-11-9 17:48:01 | 显示全部楼层
  1. #include <SoftwareSerial.h>
  2. int ledpin = 13;
  3. char line[500] = "";
  4. int byteGPS=0;
  5. #define rxPin 8
  6. #define txPin 9
  7. SoftwareSerial mySerial =  SoftwareSerial(rxPin, txPin);
  8. void setup()
  9. {      // define pin modes for tx, rx:
  10.         pinMode(rxPin, INPUT);
  11.         pinMode(txPin, OUTPUT);
  12.         // set the data rate for the SoftwareSerial port
  13.         mySerial.begin(4800);
  14.         pinMode(ledpin, OUTPUT);
  15.         Serial.begin(9600);
  16.         for (int i=0;i<500;i++)               
  17.         {      
  18.                 line[i]=' ';
  19.         }   
  20. }

  21. void loop()
  22. {
  23.         digitalWrite(ledpin, LOW);
  24.         byteGPS = mySerial.readBytesUntil('\r', line, 500);            // 读取GPS一行数据
  25.         if (byteGPS == 0)               
  26.         {   
  27.                 delay(100);
  28.         }
  29.         else
  30.         {
  31.                 digitalWrite(ledpin, HIGH);
  32.                 Serial.println(line);    // 从串口显示  
  33.                 delay(100);               
  34.         }
  35. }
复制代码
接上去串口显示的是:ììììììììììììììì
请问我哪里做错了?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-11-11 07:13:04 | 显示全部楼层
天天向上/tp 发表于 2013-11-9 17:14
请教  byteGPS = Serial1.readBytesUntil('\r', line, 500);中'\r'这个特征字是怎么知道的??

一行结束 一般是 \r\n或者\r这样 也就是说读到\r就是一行了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-11-11 07:14:21 | 显示全部楼层
天天向上/tp 发表于 2013-11-9 17:48
接上去串口显示的是:ììììììììììììììì
请问我哪里做错了?

先看一下接线?我这里是接到D8 D9 pin, 如果你的接线不一样需要对应改过来
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-26 15:47 , Processed in 0.047853 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表