Пример #1
0
int main(void)
{
    uint16_t temp, humi;    //温湿度
    char HTTP_Buf[400];     //HTTP报文缓存区
    char tempStr[5];       //字符串格式温度
    char humiStr[5];       //字符串格式湿度
    int len;

    USART1_Config();        //USART1作为调试串口
    USART2_Config();        //USART2用于连接ESP8266模块
    Hal_I2C_Init();			//I2C初始化,用于连接温湿度传感器

    ESP8266_Init();         //ESP8266初始化
		printf("ESP8266 init over\r\n");
    //SHT20_loop();         //
	
    while(1)
    {
        /* 获取温湿度 */
        SHT2x_MeasureHM(SHT20_Measurement_T_HM, &temp);
        mDelay(500);
        SHT2x_MeasureHM(SHT20_Measurement_RH_HM, &humi);

        /* 转化为字符串形式 */
        sprintf(tempStr, "%d", temp);
        sprintf(humiStr, "%d", humi);

        //printf("%s   %s\r\n", tempStr, humiStr);

        USART2_Clear();
        len = HTTP_PostPkt(HTTP_Buf, API_KEY, DEV_ID, "temp", tempStr); //HTTP组包
        USART2_Write(USART2, (unsigned char *)(HTTP_Buf), len);			//报文发送
        printf("send HTTP msg:\r\n%s\r\n", HTTP_Buf);

        mDelay(1000);
        printf("rcv response:\r\n%s\r\n", usart2_rcv_buf);

        USART2_Clear();
        len = HTTP_PostPkt(HTTP_Buf, API_KEY, DEV_ID, "humi", humiStr); //HTTP组包
        USART2_Write(USART2, (unsigned char *)(HTTP_Buf), len);			//报文发送
        printf("send HTTP msg:\r\n%s\r\n", HTTP_Buf);

        mDelay(1000);
        printf("rcv response:\r\n%s\r\n", usart2_rcv_buf);

        mDelay(5000);
    }
}
Пример #2
0
/**
  * @brief  通过USART2连接ESP8266发送数据.
  * @param  buf: 要发送的数据缓冲区地址
    * @param  len: 要发送的数据缓长度
  * @retval 发送的数据长度
  **/
uint32_t ESP8266_SendData(int8_t * buf, uint32_t len)
{
    memset(usart2_rcv_buf, 0, strlen(usart2_rcv_buf));
    usart2_rcv_len = 0;
    USART2_Write(USART2, buf, len);
    mDelay(100);
}
Пример #3
0
/**
  * @brief  通过USART2连接MT6311发送数据.
  * @param  buf: 要发送的数据缓冲区地址
    * @param  len: 要发送的数据缓长度
  * @retval 发送的数据长度
  **/
int32_t M6311_SendData(uint8_t * buf,uint32_t len)
{
	memset(usart2_rcv_buf,0,strlen((const char *)usart2_rcv_buf));
	usart2_rcv_len=0;
	USART2_Write(USART2,buf,len);	
	mDelay(20);	
	return len;
}
Пример #4
0
/**
  * @brief  通过USART2连接MT6311发送数据.
  * @param  buf: 要发送的数据缓冲区地址
    * @param  len: 要发送的数据缓长度
  * @retval 发送的数据长度
  **/
int32_t M6311_SendData(uint8_t * buf,uint32_t len)
{
	int32_t ret=0,i=0;
	memset(usart2_rcv_buf,0,strlen(usart2_rcv_buf));
	usart2_rcv_len=0;
	USART2_Write(USART2,buf,len);	
	mDelay(20);	
}
Пример #5
0
void ESP8266_Init(int8_t * server, int8_t * ssid_pwd)
{
    SendCmd(AT, "OK", 1000); /*进入AT命令模式*/
    SendCmd(CWMODE, "OK", 1000);
    SendCmd(RST, "OK", 2000);   /*重置模组式*/
    SendCmd(CIFSR, "OK", 1000); /*查询设备IP,可放在需要的位置*/
    SendCmd(ssid_pwd, "OK", 2000);  /*配置要连接的路由器SSID和密码*/
    SendCmd(server, "OK", 2000); /*与服务器建立TCP连接*/
    SendCmd(CIPMODE, "OK", 1000); /*透传模式*/
    memset(usart2_rcv_buf, 0, strlen(usart2_rcv_buf)); /*先清除接收缓冲区*/
    usart2_rcv_len = 0;
    USART2_Write(USART2, CIPSEND, strlen(CIPSEND)); /*开始透传*/
    mDelay(500);
    if((NULL != strstr(usart2_rcv_buf, "ERROR")))
    {
        return;
    }
}
Пример #6
0
/*
 *  @brief USART2串口发送AT命令用
 *  @para  cmd  AT命令
 *  @para  result 预期的正确返回信息
 *  @para  timeOut延时时间,ms
 */
void SendCmd(char* cmd, char* result, int timeOut)
{
    while(1)
    {
        USART2_Clear();
        USART2_Write(USART2, (uint8_t *)cmd, strlen(cmd));
        mDelay(timeOut);
        printf("%s %d cmd:%s,rsp:%s\n", __func__, __LINE__, cmd, usart2_rcv_buf);
        if((NULL != strstr((const char *)usart2_rcv_buf, (const char *)result)))	//判断是否有预期的结果
        {
            break;
        }
        else
        {
            mDelay(100);
        }
    }
}
Пример #7
0
/*
 *  @brief USART2串口发送AT命令用
 */
void SendCmd(int8_t* cmd, int8_t* result, int32_t timeOut)
{
    while(1)
    {
        memset(usart2_rcv_buf, 0, strlen((const char *)usart2_rcv_buf));
        usart2_rcv_len = 0;

        USART2_Write(USART2, (uint8_t*)cmd, strlen((const char *)cmd));
        mDelay(timeOut);
        printf("%s %d cmd:%s,rsp:%s\n", __func__, __LINE__, cmd, usart2_rcv_buf);
        if((NULL != strstr((const char *)usart2_rcv_buf, (const char *)result)))
        {
            break;
        }
        else
        {
            mDelay(100);
        }
    }
}