终于结束了四天三夜的电赛,之后睡到绝望。好的废话不多说。本次的帖子是关于 STM32使用esp-8266上传数据至服务器。前期直接使用STM32mini板直接驱动esp-8266时,无法正常使用该模块,排除了程序上的问题后,开始找找硬件 电路上存在的问题。后来找到了OneNET麒麟座 开发板的原理图,根据其esp-8266的应用电路搭了个类似于转接板的东西。
图1.应用电路
图2.转接小板
使用了这应用电路之后esp-8266总算能够正常的工作了,参考了例程进行了配置,但是还是无法连接服务器。esp-8266同样是使用AT指令进行操作的,所以还是按照了以前写过的一个SIM808C 通信的进行使用,移植后能正常通信,上传数据。
- /*
- *********************************************************************
- Design dy: Lin 桑
- 2017-7-27
- *********************************************************************
- */
- int main(void)
- {
- // NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
- usart1_init(115200);
- USART2_Init(115200);
- delay_init();
- // esp8266_GPIO();
- // ESP8266_Init();
- printf("³õʼ»¯Íê³É£¡n");
- ESP8266_DevLink(DEVICEID,APIKEY,20);
- printf("Á¬½Ó³É¹¦£¡n");
- while(1)
- {
- // if(!(ESP8266_CheckStatus(30)))
- // {
- ESP8266_SendDat();
- // }
- // else
- // {
- // break;
- // }
- }
- }
- #include "stm32f10x.h"
- #include "stdio.h"
- #include "stdlib.h"
- #include "string.h"
- #include "usart2.h"
- #include "usart.h"
- #include "esp8266.h"
- #include "cJSON.h"
- #include "EdpKit.h"
- EdpPacket* send_pkg;
- char send_buf[MAX_SEND_BUF_LEN];
- void mDelay(uint32_t i)
- {
- uint32_t j=0;
- for(;i>0;i--)
- {
- for(j=0;j<12000;j++);
- }
- }
- void ESP8266_Init(void)
- {
- GPIO_InitTypeDef GPIO_Initure;
-
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
- //ESP8266¸´Î»Òý½Å
- GPIO_Initure.GPIO_Mode = GPIO_Mode_Out_PP;
- GPIO_Initure.GPIO_Pin = GPIO_Pin_1;
- GPIO_Initure.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_Init(GPIOA, &GPIO_Initure);
-
- GPIO_WriteBit(GPIOA, GPIO_Pin_1, Bit_RESET);
- mDelay(250);
- GPIO_WriteBit(GPIOA, GPIO_Pin_1, Bit_SET);
- mDelay(500);
-
-
- mDelay(2000);
- printf("%srn","[ESP8266_Init]ENTER AT.");
- SendCmd(AT,"OK",10);
- printf("%srn","[ESP8266_Init]EXIT AT.");
-
- printf("%srn","[ESP8266_Init]ENTER CWMODE.");
- SendCmd(CWMODE,"OK",10);
- printf("%srn","[ESP8266_Init]EXIT CWMODE.");
-
- printf("%srn","[ESP8266_Init]ENTER RST.");
- SendCmd(RST,"OK",40);
- printf("%srn","[ESP8266_Init]EXIT RST.");
-
- printf("%srn","[ESP8266_Init]ENTER CIFSR.");
- SendCmd(CIFSR,"OK",20);
- printf("%srn","[ESP8266_Init]EXIT CIFSR.");
-
- printf("%srn","[ESP8266_Init]ENTER CWJAP.");
- SendCmd(CWJAP,"OK",40);
- printf("%srn","[ESP8266_Init]EXIT CWJAP.");
-
- printf("%srn","[ESP8266_Init]ENTER CIPSTART.");
- SendCmd(CIPSTART,"OK",20);
- printf("%srn","[ESP8266_Init]EXIT CIPSART.");
-
- printf("%srn","[ESP8266_Init]ENTER CIPMODE.");
- SendCmd(CIPMODE,"OK",10);
- printf("%srn","[ESP8266_Init]EXIT CIPMODE.");
- }
- void SendCmd(char* cmd, char* result, int timeOut)
- {
- }
- /* *********************************************************************************************************** */
- void ESP8266_DevLink(const char* devid, const char* auth_key, int timeOut)
- {
- //int count=0;
-
- memset(usart2_rcv_buf,0,strlen((const char *)usart2_rcv_buf));
- usart2_rcv_len=0;
-
- printf("%srn","[ESP8266_DevLink]ENTER device link...");
-
- sendcmd("AT+CIPSTART="TCP","183.230.40.33",80rn","OK",1000);
- sendcmd("AT+CIPMODE=1rn","OK",1000);
- sendcmd("AT+CIPSENDrn",">",1000);
-
- mDelay(50);
- printf("%srn","[ESP8266_DevLink]EXIT device link...");
- }
- void ESP8266_SendDat(void)
- {
- // int32 count=0;
- int len;
- char HTTP_Buf[400];
- char data1[5];
- char data2[5];
- char data3[5];
- char data4[5];
- char data5[5];
-
- sprintf(data1, "%.2f",12.000);
- sprintf(data2, "%.2f",15.333);
- sprintf(data3, "%.2f",18.222);
- sprintf(data4, "%.2f",18.235);
- sprintf(data5, "%.2f",17.714);
- /**************Çå³ý´®¿Ú»º´æ***************/
- memset(usart2_rcv_buf,0,sizeof(usart2_rcv_buf));
- // usart2_rcv_len=0;
- sendcmd("AT+CIPSENDrn",">",1000);
- printf("%srn","[ESP8266_SendDat]ENTER Senddata...");
-
- USART2_Clear();
- mDelay(500);
- len = HTTP_PostPkt(HTTP_Buf, API_KEY, DEV_ID, ""data1"", data1,""data2"",data2,""data3"",data3,""data4"",data4,""data5"",data5);
- USART2_Write(USART2, (unsigned char *)(HTTP_Buf), len);
- // mDelay(200);
- printf("%srn","[ESP8266_SendDat]EXIT Senddata...");
- }
- /**
- * @brief
- **/
-
- uint32_t HTTP_PostPkt(char *pkt, char *key, char *devid, char *dsid, char *val,char *k1,char *k2,char *k3,char *k4,char *k5,char *k6,char *k7,char *k8)
- {
- char dataBuf[1000] = {0};
- char lenBuf[100] = {0};
- *pkt = 0;
-
- sprintf(dataBuf, "{%s:%s,%s:%s,%s:%s,%s:%s,%s:%s}", dsid, val,k1,k2,k3,k4,k5,k6,k7,k8);
- sprintf(lenBuf, "%d", strlen(dataBuf));
- strcat(pkt, "POST /devices/");
- strcat(pkt, devid);
- strcat(pkt, "/datapoints?type=3 HTTP/1.1rn");
- strcat(pkt, "api-key:");
- strcat(pkt, key);
- strcat(pkt, "rn");
- strcat(pkt, "Host:api.heclouds.comrn");
- strcat(pkt, "Connection:closern");
- strcat(pkt, "Content-Length:");
- strcat(pkt, lenBuf);
- strcat(pkt, "rnrn");
- strcat(pkt, dataBuf);
- strcat(pkt, "rn");
-
- return strlen(pkt);
- }
复制代码
上传成功!!!!
0
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
评分
-
查看全部评分
|
|
|
|
|
|