查看: 3681  |  回复: 9
参赛作品《基于STM32F407的GPRS电力数据采集器》
北国风光
1
主题
1
回复
发表于2018-06-17 21:53:27 | 显示全部楼层
1# 电梯直达

【报名阶段需要填写的内容】


1. 参赛者姓名(必填项):北国风光


2. 单位或学校名称(选填项):兰州电力


3. 当前职务或职称(选填项):工程师 


4. 参赛作品的名字(必填项):基于STM32F407的GPRS电力数据采集器


5. 简要陈述您的idea和作品(必填项):采用STM32F407,GPRS模块以及电力采集模块,网络模块组成电力参数采集器,把采集的电力参数通过网络或GPRS上传到数据中心。在后期如果有必要必要,可以将GPRS模块更新为为4G模块或NBIOT模块


6. 拟用到的立创商城在售物料(必填项):STM32F407网络芯片片,电源芯片,阻容元件,线路板等


7. 拟用到的非立创商城物料或其它补充(必填项):电力采集模块,GPRS模块,电源模块


8. 拟用到的EDA工具软件名称(必填项):立创EDA  AD9


【作品正式发表(报名成功后进入设计阶段)需要填写的内容】


一、作品简介

例如,可以包括但不局限于以下内容:

1.作品的整机外观图片或焊接组装好的PCBA图片;


2.作品的研究背景、目的和功能、市场应用前景;

目前在电力数据采集中,有许多不同的方法来将数据上传到后台。 这个方案采用STM32F407,通过GPRS或 NB模块,将数据上传到服务器,也考虑了如果有网络的话,可以优先采用网络通过TCPIP协议将数据上传到后台。在电路设计中,电力采集模块采用国内先进的ATT70模块,与专业的电流、电压采集模块进行电力数据的采集。整个主控的参数设计采用默认网页的方式进行设计,以免不对的操作系统识虽不了

3.作品在创新性、趣味性、实用性甚至公益性方面,有哪些亮点可体现?


在需要的时候,可以将直接采用电力芯片来完成电力数据的收集,也可以按用户要求搭载4G 或N模块,目前上板上设计的2G的GPRS模块与网络接口


二、系统构架图

用流程图或思维导图等形式,描述您的作品的组成构架,即方案图。

 点击查看大图

三、硬件部分的描述

1.附上原理图&PCB实物图的图片或者源文件(官方建议大家尽量用源文件上传),如果是图片,请确保图片是清晰可辨的;

 点击查看大图

 点击查看大图

 点击查看大图

 点击查看大图



 点击查看大图

 点击查看大图




 点击查看大图

 点击查看大图

2.用文字把该作品的实现原理、系统的工作过程大致讲解一下。


3.注明所用到的EDA工具软件名称并附上设计链接。

立创EDA   http://club.szlcsc.com/forum/97_0_1.html

四、材料清单(BOM列表)

列出您这个作品所用到的主要器件(关键器件即可),比如单片机&ARM芯片、专用集成芯片(ASIC)、传感器、功能模块等。

如果所列出的芯片是来自我们立创商城上的,最好能写出该器件的商品编号或附上对应购买链接。

  主要使用的元件有STM32F407  ATT7022 LM1117-33  MAX485  DP83848IVV  HR911105A   电源模块  电力采集模块  以及电流电压模块

五、软件部分的描述(选填)

如果您的作品涉及到软件,请列出作品对应的软件工作流程图,及关键部分的例程、源码(如果您想开源的话请上传全部源码)。

下面为GPRS部分的程序

#include "main.h"
GPRS_mode GPRS_LINK;
char *Sver_Ip="122.114.122.174";
u16 Sver_port=36288;
machine_DEFINE Server,Client;;
void GPRS_Configuration(void)
{
char *m,*m1;
u8 k;
u16 Send_Num=0;

GPIO_InitTypeDef  GPIO_InitStructure;
/* Enable the GPIO_LED Clock */
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE, ENABLE);  
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2|GPIO_Pin_3;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
GPIO_Init(GPIOE, &GPIO_InitStructure);
Server.IPv4[0]=122;
Server.IPv4[1]=114;
Server.IPv4[2]=122;
Server.IPv4[3]=174;
Server.Port=41771;
GPRS_RST_ON;
GPRS_PWR_OFF;
OSTimeDlyHMSM(0, 0, 0, 200);//
GPRS_RST_OFF;
GPRS_PWR_ON;
OSTimeDlyHMSM(0, 0, 2, 0);//
GPRS_PWR_OFF;
GPRS_LINK=GPRS_LINK_NON;
if(GPRS_send_cmd((char*)"AT",(char*)"OK",300))//????
{
sprintf((char*)USART3_send_buff,"%s\r\n","GPRS_CMD IS OK");
     Send_Num=strlen((const char*)USART3_send_buff);
     USART3_DMA_Send(USART3_send_buff,Send_Num);
}
  else
  {
     sprintf((char*)USART3_send_buff,"%s\r\n","GPRS_CMD IS ERROR");
     Send_Num=strlen((const char*)USART3_send_buff);
     USART3_DMA_Send(USART3_send_buff,Send_Num);
}
if(GPRS_send_cmd((char*)"ATE0",(char*)"OK",300))  //??±?????
{
sprintf((char*)USART3_send_buff,"%s\r\n","GPRS_ATE0 IS OFF");
     Send_Num=strlen((const char*)USART3_send_buff);
     USART3_DMA_Send(USART3_send_buff,Send_Num);
}
if(GPRS_send_cmd((char*)"AT+CPIN?",(char*)"OK",300)) //?é????·????¨
{
sprintf((char*)USART3_send_buff,"%s\r\n","GPRS_Card is Ready");
     Send_Num=strlen((const char*)USART3_send_buff);
     USART3_DMA_Send(USART3_send_buff,Send_Num);
}
  else
  {
     if((strstr(( char*)USART6_rec_buff,"ERROR")))
{
sprintf((char*)USART3_send_buff,"%s\r\n","Please insert Card");
}
else
sprintf((char*)USART3_send_buff,"%s\r\n","D'nt Run a Card");
     Send_Num=strlen((const char*)USART3_send_buff);
     USART3_DMA_Send(USART3_send_buff,Send_Num);
}
if(GPRS_send_cmd((char*)"AT+CSQ",(char*)"OK",300))  //?é??????????
{
m=(strstr(( char*)USART6_rec_buff,"+CSQ:"));//
m1=(strchr(( char*)m+6,0x22));
k=m1-m-6;
strncpy((char*)USART3_send_buff,m,k);
    USART3_DMA_Send(USART3_send_buff,10);
}
if(GPRS_send_cmd((char*)"AT+CREG",(char*)"OK",300))//GSM????×??á????
{
sprintf((char*)USART3_send_buff,"%s\r\n","GPRS_CREG IS OK");
     Send_Num=strlen((const char*)USART3_send_buff);
     USART3_DMA_Send(USART3_send_buff,Send_Num);
}
if(GPRS_send_cmd((char*)"AT+CGREG=1",(char*)"OK",300))    //×??áGPRS????
{
sprintf((char*)USART3_send_buff,"%s\r\n","GPRS_CGREG IS OK");
     Send_Num=strlen((const char*)USART3_send_buff);
     USART3_DMA_Send(USART3_send_buff,Send_Num);
}
if(GPRS_send_cmd((char*)"AT+CGATT=1",(char*)"OK",300))//  ??×?gprs
{
sprintf((char*)USART3_send_buff,"%s\r\n","GPRS_CGATT IS OK");
     Send_Num=strlen((const char*)USART3_send_buff);
     USART3_DMA_Send(USART3_send_buff,Send_Num);
}
if(GPRS_send_cmd((char*)"AT+CIPMODE=1",(char*)"OK",300))//TCP????????
{
sprintf((char*)USART3_send_buff,"%s\r\n","GPRS_CIPMODE IS OK");
     Send_Num=strlen((const char*)USART3_send_buff);
     USART3_DMA_Send(USART3_send_buff,Send_Num);
}
if(GPRS_send_cmd((char*)"AT+CIPMUX=0",(char*)"OK",300))// //?ò????????
{
sprintf((char*)USART3_send_buff,"%s\r\n","GPRS_CIPMUX IS OK");
     Send_Num=strlen((const char*)USART3_send_buff);
     USART3_DMA_Send(USART3_send_buff,Send_Num);
}


if(GPRS_send_cmd("AT+CSTT=\"CMNET\"","OK",300))//???????????è????????
{
sprintf((char*)USART3_send_buff,"%s\r\n","GPRS_CMNET IS OK");
     Send_Num=strlen((const char*)USART3_send_buff);
     USART3_DMA_Send(USART3_send_buff,Send_Num);
}
if(GPRS_send_cmd("AT+CIICR","OK",300))//?¤?????????°
{
sprintf((char*)USART3_send_buff,"%s\r\n","GPRS_CIICR IS OK");
     Send_Num=strlen((const char*)USART3_send_buff);
     USART3_DMA_Send(USART3_send_buff,Send_Num);
}
  else
  {
     sprintf((char*)USART3_send_buff,"%s\r\n","GPRS_CIICR IS ERROR");
     Send_Num=strlen((const char*)USART3_send_buff);
     USART3_DMA_Send(USART3_send_buff,Send_Num);
}
if(GPRS_send_cmd("AT+CIFSR","OK",300))//?é??±???IP
{
sprintf((char*)USART3_send_buff,"%s\r\n","GPRS_CIFSR IS OK");
     Send_Num=strlen((const char*)USART3_send_buff);
     USART3_DMA_Send(USART3_send_buff,Send_Num);
}
  else
  {
     sprintf((char*)USART3_send_buff,"%s\r\n","GPRS_CIFSR IS ERROR");
     Send_Num=strlen((const char*)USART3_send_buff);
     USART3_DMA_Send(USART3_send_buff,Send_Num);
}
  sprintf((char*)m,"%s%d.%d.%d.%d%s%d","AT+CIPSTART=\"TCP\",\"",Server.IPv4[0],Server.IPv4[1],Server.IPv4[2],Server.IPv4[3],"\",",Server.Port);
  if(GPRS_send_cmd(m,"OK",300))//?¨??TCP????
{
sprintf((char*)USART3_send_buff,"%s\r\n","GPRS_CIPSTART IS OK");
     Send_Num=strlen((const char*)USART3_send_buff);
     USART3_DMA_Send(USART3_send_buff,Send_Num);
GPRS_LINK=GPRS_LINK_OK;
}
  else
  {
     sprintf((char*)USART3_send_buff,"%s\r\n","GPRS_CIPSTART IS ERROR");
     Send_Num=strlen((const char*)USART3_send_buff);
     USART3_DMA_Send(USART3_send_buff,Send_Num);
}
}
unsigned char GPRS_send_cmd( char *cmd, char *ack,unsigned int waittime)
{
  INT8U err;
  u16 Send_Num=0;
  u8 RePeat;
  RePeat=0;
Recal4:
  memset(USART6_send_buff,0,USART6_BUFF_SIZE);
  sprintf((char*)USART6_send_buff,"%s\r\n",cmd);
  Send_Num=strlen((const char*)USART6_send_buff);
    USART6_DMA_Send(USART6_send_buff,Send_Num);
  OSSemPend(sem_USART6_rec_flag,waittime,&err);     //??????????????
  if(err==OS_ERR_NONE)
{
if(strstr((const char*)USART6_rec_buff,ack))
  return(1);
else
{

RePeat++;
        if(RePeat<3)
           goto Recal4;
else
return(0);
}
}
else
{
if(err==OS_ERR_TIMEOUT)
{
RePeat++;
        if(RePeat<3)
           goto Recal4;
        return(0);
}
      else
        return(0);
}
}

六、作品演示

请上传您的作品的功能演示到腾讯视频,并编辑到本楼(或附上视频链接)。按要求上传视频可获得10分,具体详见活动规则。

       https://v.qq.com/x/page/b0754ohifd6.html

七、总结

例如您在完成该作品过程中的一些体会、碰到的技术问题或调试经验、作品的未来规划,及对我们主办方的建议和意见等。

Alien007
0
主题
5
回复
发表于2018-07-05 17:36:18   |  显示全部楼层
9#
期待楼主的作品,我最近也在打算做这个,参考一下

主题

回复
  • 温馨提示: 标题不合格、重复发帖、发布广告贴,将会被删除帖子或禁止发言。 详情请参考: 社区发帖规则
  • 您当前输入了 0 个文字。还可以输入 8000 个文字。 已添加复制上传图片功能,该功能目前仅支持chrome和火狐

禁言/删除

X
请选择禁言时长:
是否清除头像:
禁言/删除备注:
昵 称:
 
温馨提示:昵称只能设置一次,设置后无法修改。
只支持中文、英文和数字。

举报

X
请选择举报类型:
请输入详细内容:

顶部