一乐电子

一乐电子百科

 找回密码
 请使用微信账号登录和注册会员

QQ登录

只需一步,快速开始

快捷登录

手机号码,快捷登录

搜索
查看: 8708|回复: 11
收起左侧

[arduino] Arduino-zion 学习笔记(2) --zion—ublox – vfd 联合行动 GPS时钟小试

[复制链接]
发表于 2014-5-2 19:10 | 显示全部楼层 |阅读模式
本帖最后由 egomy 于 2014-5-2 19:10 编辑

免责及笔记一地址:
因为一些有的没的原因,本来第二篇笔记想弄温度显示,觉得有一点循序渐进的意思,但是始终没有弄的太明白。SO。本篇改为GPS时钟显示。Arduino的应用实现真心让我这个做软件的觉得很舒服。更多得到的是成就感。嘻嘻。开始搭建三板斧:
三板斧步骤一:硬件的准备

Arduino zion开发板一枚
T口USB数据线一根
电脑一只
杜邦线若干(是叫这个名吧?)
VFD202屏一只(找熊买→_→)(感谢只看不说前辈的VFD外壳,瞬间屌丝升级3.0)
Ublox5a模块一只(同上)
GPS天线一只(似乎接一根导线出来也是可以的)
上图

硬件准备

硬件准备




三板斧步骤二:软件环境的配置和程序
ZION的驱动以及与电脑的连接
ARDUINO IDE的下载和使用
ARDUINO的GPS支持库,找到一枚老外的
http://www.maartenlamers.com/nmea/
修改后可以在ARDUINO1.05中使用
附件下载 NMEA.zip (15.18 KB, 下载次数: 66)
翠花,上代码
  1. // This example illustates access to all sentence types,
  2. // using the NMEA library. It assumes that a GPS receiver
  3. // is connected to serial port 'Serial1' at 4800 bps.
  4. #include <nmea.h>
  5. NMEA gps(ALL);    // GPS data connection to all sentence types
  6. //清屏
  7. unsigned char clr=0x1F;
  8. //设置屏幕为非滚动状态
  9. unsigned char set_normal=0x11;
  10. //设置光标到第一行第一个位置
  11. unsigned char set_front[2]={0x10,0x06};
  12. //设置VFD光标到第二行第一个位置
  13. unsigned char set_sec[2]={0x10,0x14};
  14. float set_utc=0.0;
  15. void setup() {
  16. //使用串口0
  17.   Serial.begin(9600);
  18.   //使用串口1
  19.   Serial1.begin(9600);  
  20.   Serial.write(set_normal);
  21. }

  22. void loop() {
  23.   if (Serial1.available() > 0 ) {
  24.     // read incoming character from GPS and feed it to NMEA type object
  25.     //使用GPS库方法从串口1读入GPS时间
  26.     if (gps.decode(Serial1.read())) {
  27.       // full sentence received
  28.      //取得UTC时间
  29.      set_utc=gps.gprmc_utc();
  30.      //以下为输出到VFD
  31.       Serial.write(set_front,2);
  32.       Serial.print (GetHour()+":"+GetMinute()+":"+GetSecond());
  33.       Serial.write(set_sec,2);
  34.         Serial.print ("_-_-|_GPS TIME_|-_-_");
  35.     }
  36.   }  
  37. }

  38. String GetHour()
  39. {
  40.   int hour=(int)(set_utc/10000);
  41.   hour=hour+8>24?hour+8-24:hour+8;
  42.   return hour<10?"0"+(String)(hour):(String)(hour);
  43. }

  44. String GetMinute()
  45. {
  46.   int minute=(int)(set_utc/100)-(int)(set_utc/10000)*100;
  47.   return minute<10?"0"+(String)(minute):(String)(minute);
  48. }

  49. String GetSecond()
  50. {
  51.   int second=(int)(set_utc-((int)(set_utc/100))*100);
  52.   return second<10?"0"+(String)(second):(String)(second);
  53. }
复制代码

三板斧步骤三:硬件连接运行调试
断开开发板 ,
1.将VFD的 RX与ZION 33号引脚(TX0)连接,从Zion 核心附近区域的 v50 引脚和 GND分别接入VFD的正负极。为VFD屏幕供电,,参考笔记一中的连线。
2.UBLOXRX TX分别与  PORTD 区的 TX1RX1连接。
3.UBLOX天线自行接好。
4UBLOX正负极分别接入VCCGND(我的Zion电源跳线那给的是5V)。
t2.jpg
硬件准备完毕

最终运行效果

t12.jpg
存在若干问题:
1.GPS时间取得前,得到的都是0,所以初始会显示8:00
2.偶尔会在启动过程中存在乱码。因为我没有对其他格子进行刷新。SO  .会一直存在。
3.谁要是能看懂接线。就发个电路连接图吧。俺真心不会弄。

评分

参与人数 1一乐金币 +10 收起 理由
xdy5211314 + 10 不错,必须赞一个。。。很喜欢vfd的显示效.

查看全部评分

 楼主| 发表于 2014-5-2 19:13 | 显示全部楼层
NMEA解压缩出来放在IDE的arduino-1.0.5-r2\libraries中。最终如果解压缩完毕后,你能在这个路径看到一堆文件包括nmea.h神马的。那么就对了。
发表于 2014-5-2 20:22 | 显示全部楼层
等待教授发货
发表于 2014-5-3 00:16 | 显示全部楼层
不错不错,很喜欢vfd的显示效果。。。。顶顶。
gps不要求太好信号的,直接一根导线也是可以的
发表于 2014-5-3 08:28 | 显示全部楼层
学习了。。。
发表于 2014-5-3 18:17 | 显示全部楼层
mark
等zion
发表于 2014-5-16 22:59 | 显示全部楼层
学习了,多谢楼主的分享。
发表于 2014-9-2 16:55 | 显示全部楼层
支持下……………………
发表于 2014-9-9 12:03 | 显示全部楼层
这个好,在把年月日搞出来就好了,用来给其他时钟校时
发表于 2014-9-24 22:25 | 显示全部楼层
编译没通过,LZ最好发个ZIP的代码,一乐COPY有很多乱码的,谢谢!!

本版积分规则

QQ|一淘宝店|手机版|商店|电子DIY套件|一乐电子 ( 粤ICP备09076165号 ) 公安备案粤公网安备 44522102000183号

GMT+8, 2024-5-5 10:00 , Processed in 0.060237 second(s), 38 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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