OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 8416|回复: 7

STM32f103CB+GPS+GSM,分享和交流!

[复制链接]

46

主题

329

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1544
金钱
1544
注册时间
2012-4-9
在线时间
80 小时
发表于 2015-1-10 18:04:07 | 显示全部楼层 |阅读模式
自己闲来做了一块板子,硬件设计参照了原子的板子和其他的一些资料,硬件资源如下:
主芯片:STM32F103CB,LQFP48,128k flash
模块:GPS:GT1513SF,正方形天线模块,仅输出GPRMC语句,实测仅室外才能定位,窗边很难定位,室内不能定位,
                   提取时间,日期,经纬度等信息,一般够用了。
         GSM:SIM900A,弹簧式简单天线,信号质量在室内16-20左右,通话音质还行。
储存芯片:EEPROM:AT24C32
                FLASH:W25Q64
传感器:加速度传感器:ADXL345
             温湿度传感器/温度传感器:DHT11/DS18B20(二选一)
屏幕接口:原子的OLED模块,一样的接口
输入IO:5个按键(1个复位按键+4个用户按键)
输出IO:2个LED+1个蜂鸣器
电源芯片:12V转5V:TPS54331
                5V转3.3V:XC6206P332MR
                3.7转4.2V:FP6291
程序调试及下载:MICROUSB串口下载,还可5V供电(USB转串口芯片:CP2102)
                           SW引出调试接口
PCB:2层板,89mm*50mm,元件都是自己贴的。

板子设计有点小问题,焊接好之后割了线以及飞了线,上传的原理图是更改之后的正确的,若有问题请提出!
以原理图为准,PCB与原理图若有少数不一样,请忽略!

各个外设的单独功能都已经调试过没有问题,代码已上传,很多地方直接用的原子的代码,呵呵,
每个外设的代码都单独测试是OK,代码很简单,功能不完全,也肯定有bug,呵呵。
之前买的OLED模块找不到了,又买了一个,过几天才能到,到时候再把OLED部分代码和显示界面再做一做。
和大家分享,请大家指教!


PCB 3D图 顶层:


PCB 3D图 底层:


实物图:(锂电池和SIM卡座在背面)


Gps_Gsm_SCH.pdf

276.14 KB, 下载次数: 706

Gps_Gsm_PCB.pdf

58.48 KB, 下载次数: 545

gps_gsm_board.rar

78.16 KB, 下载次数: 814

STM32
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

46

主题

329

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1544
金钱
1544
注册时间
2012-4-9
在线时间
80 小时
 楼主| 发表于 2015-1-10 18:30:49 | 显示全部楼层
还有个问题问下原子,ADXL345正确配置后,上电能检测到,但是我打印出来的信息却不对,如下:

DEVICE_ID:0xe5
ADXL345 CHECK OK!

加速度值: x轴:128 y轴:0 z轴:0
角度值: x:0.0 y:0.0 z:0.0

加速度值: x轴:2 y轴:0 z轴:0
角度值: x:0.0 y:0.0 z:0.0

加速度值: x轴:50 y轴:0 z轴:0
角度值: x:0.0 y:0.0 z:0.0

加速度值: x轴:1 y轴:0 z轴:0
角度值: x:0.0 y:0.0 z:0.0

加速度值: x轴:76 y轴:0 z轴:0
角度值: x:0.0 y:0.0 z:0.0

加速度值: x轴:50 y轴:0 z轴:0
角度值: x:0.0 y:0.0 z:0.0

加速度值: x轴:1 y轴:0 z轴:0
角度值: x:0.0 y:0.0 z:0.0

加速度值: x轴:0 y轴:0 z轴:0
角度值: x:0.0 y:0.0 z:0.0

加速度值: x轴:25 y轴:0 z轴:0
角度值: x:0.0 y:0.0 z:0.0

加速度值: x轴:1 y轴:0 z轴:0
角度值: x:0.0 y:0.0 z:0.0

ADXL345校准中......
ADXL345校准完成!
加速度值: x轴:220 y轴:0 z轴:0
角度值: x:0.0 y:0.0 z:0.0

加速度值: x轴:220 y轴:0 z轴:0
角度值: x:0.0 y:0.0 z:0.0

加速度值: x轴:220 y轴:0 z轴:0
角度值: x:0.0 y:0.0 z:0.0

加速度值: x轴:220 y轴:0 z轴:0
角度值: x:0.0 y:0.0 z:0.0

ADXL345校准中......
ADXL345校准完成!
加速度值: x轴:240 y轴:0 z轴:0
角度值: x:0.0 y:0.0 z:0.0

加速度值: x轴:240 y轴:0 z轴:0
角度值: x:0.0 y:0.0 z:0.0

加速度值: x轴:240 y轴:0 z轴:0
角度值: x:0.0 y:0.0 z:0.0

加速度值: x轴:240 y轴:0 z轴:0


代码:初始化除了IO口改动了,其他的都是参照原子的代码:
初始化代码:
[mw_shl_code=c,true]u8 ADXL345_Init(void) { RCC->APB2ENR |= 1<<2; GPIOA->CRH &= 0xFFF00FFF; GPIOA->CRH |= 0x00033000; GPIOA->ODR |= 3<<11; if(ADXL345_RD_Reg(DEVICE_ID)==0XE5) { ADXL345_WR_Reg(DATA_FORMAT,0X2B); ADXL345_WR_Reg(BW_RATE,0x0A); ADXL345_WR_Reg(POWER_CTL,0x28); ADXL345_WR_Reg(INT_ENABLE,0x00); ADXL345_WR_Reg(OFSX,0x00); ADXL345_WR_Reg(OFSY,0x00); ADXL345_WR_Reg(OFSZ,0x00); return 0; } return 1; } [/mw_shl_code]
测试代码:
检测ADXL345通过后,在主函数死循环中打印信息,相应按键按下后开始校准,校准完成后继续打印信息
[mw_shl_code=c,true]void ADXL345_Test(void) { short x,y,z; float angx,angy,angz; if(adxl345_read) { adxl345_read = 0; ADXL345_Read_Average(&x,&y,&z,10); printf("????????: x?á:%d y?á:%d z?á:%d\r\n",(int)x,(int)y,(int)z); angx=ADXL345_Get_Angle(x,y,z,1); angy=ADXL345_Get_Angle(x,y,z,2); angz=ADXL345_Get_Angle(x,y,z,0); printf("??????: x:%2.1f y:%2.1f z:%2.1f\r\n",angx,angy,angz); printf("\r\n"); Delay_ms(1000); } if(keyr_adjust_adxl345) { keyr_adjust_adxl345 = 0; LEDL = 0; printf("ADXL345??×???......\r\n"); ADXL345_AUTO_Adjust((char*)&x,(char*)&y,(char*)&z); LEDL = 1; printf("ADXL345??×??ê??!\r\n"); } }[/mw_shl_code]
问题:
1,板子是平放着的,没校准的时候x轴数据跳动很大,
     
校准多次之后,x 轴数据稳定一些,得出x轴的范围在220到250之间,跳动还是太大,而且为什么不是0左右?
2,而且仅x轴有数据,y,z怎么晃动板子都是0,为什么?
STM32
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2015-1-10 23:59:20 | 显示全部楼层
回复【2楼】jj123paopao:
---------------------------------
感觉你的芯片是不是有问题。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

46

主题

329

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1544
金钱
1544
注册时间
2012-4-9
在线时间
80 小时
 楼主| 发表于 2015-1-11 00:37:59 | 显示全部楼层
回复【3楼】正点原子:
---------------------------------
我也觉得片子有问题,lga14的封装,只能风枪吹上去,难道吹坏了。。。
STM32
回复 支持 反对

使用道具 举报

46

主题

329

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1544
金钱
1544
注册时间
2012-4-9
在线时间
80 小时
 楼主| 发表于 2015-1-29 23:56:44 | 显示全部楼层
买了原子的一个OLED屏幕,把之前的代码加入了OLED显示部分,做了个很简单的UI显示,主要做了拨号打电话界面:
功能介绍:
在oled_display.c和oled_display.h里面是具体代码,代码仅实现功能,没做优化,菜单有些功能没做具体实现。
1,显示时间,日期,星期,温度,加速度,经纬度等信息。
2,拨号打电话,模拟手机虚拟按键,拨号码,打电话。
3,OLED字体加入了3216和1224(粗体)字体的显示,在oled字体头文件中。
基本操作方法是使用四个按键:左键是确认,右键是退出,上下键是切换到不同菜单选项。
长按右键,GSM模块开机。

以下是截图:








gps_gsm_board-20150129.rar

124.33 KB, 下载次数: 585

STM32
回复 支持 反对

使用道具 举报

0

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
80
金钱
80
注册时间
2014-12-24
在线时间
10 小时
发表于 2016-7-5 13:49:36 | 显示全部楼层
不错的资料,学习啦。。。支持
回复 支持 反对

使用道具 举报

3

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
61
金钱
61
注册时间
2014-11-14
在线时间
9 小时
发表于 2016-7-11 17:22:21 | 显示全部楼层
楼主还有多余的pcb板吗
一天一天强大
回复 支持 反对

使用道具 举报

18

主题

51

帖子

0

精华

初级会员

Rank: 2

积分
172
金钱
172
注册时间
2016-3-2
在线时间
56 小时
发表于 2016-7-20 14:51:40 | 显示全部楼层
GPS是用陶瓷天线吗
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-23 08:02

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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