物联网接入终端

lehuijie   2019-6-23 16:43 楼主

作品简介

作品通过ADC采集电压,经过4G模块传输到云服务器上。协议采用TCP透传的方式,数据保留在云平台中。

 

系统框图

 

image-20190623160102-1.png

 

ADC采集

ADC采集DMA传输, PA2口,在把传输中添加标识,一起传输到平台上。ADC传输速度,采取1s传输一次,或者10s传输一次,可以通过mode调整。

void dma_config(void)

{

    /* ADC_DMA_channel configuration */

    dma_parameter_struct dma_data_parameter;

   

    /* ADC DMA_channel configuration */

    dma_deinit(DMA_CH0);

   

    /* initialize DMA single data mode */

    dma_data_parameter.periph_addr  = (uint32_t)(&ADC_RDATA);

    dma_data_parameter.periph_inc   = DMA_PERIPH_INCREASE_DISABLE;

    dma_data_parameter.memory_addr  = (uint32_t)(&adc_value);

    dma_data_parameter.memory_inc   = DMA_MEMORY_INCREASE_DISABLE;

    dma_data_parameter.periph_width = DMA_PERIPHERAL_WIDTH_16BIT;

    dma_data_parameter.memory_width = DMA_MEMORY_WIDTH_16BIT; 

    dma_data_parameter.direction    = DMA_PERIPHERAL_TO_MEMORY;

    dma_data_parameter.number       = 1U;

    dma_data_parameter.priority     = DMA_PRIORITY_HIGH;

    dma_init(DMA_CH0, &dma_data_parameter);



    dma_circulation_enable(DMA_CH0);

 

    /* enable DMA channel */

    dma_channel_enable(DMA_CH0);

}



void adc_config(void)

{

    /* ADC contineous function enable */

    adc_special_function_config(ADC_CONTINUOUS_MODE, ENABLE);

    /* ADC trigger config */

    adc_external_trigger_source_config(ADC_REGULAR_CHANNEL, ADC_EXTTRIG_REGULAR_NONE);

    /* ADC data alignment config */

    adc_data_alignment_config(ADC_DATAALIGN_RIGHT);

    /* ADC channel length config */

    adc_channel_length_config(ADC_REGULAR_CHANNEL, 1U);

 

    /* ADC regular channel config */

    adc_regular_channel_config(0U, BOARD_ADC_CHANNEL, ADC_SAMPLETIME_55POINT5);

    adc_external_trigger_config(ADC_REGULAR_CHANNEL, ENABLE);



    /* enable ADC interface */

    adc_enable();

    delay_1ms(1U);

    /* ADC calibration and reset calibration */

    adc_calibration_enable();



    /* ADC DMA function enable */

    adc_dma_mode_enable();

    /* ADC software trigger enable */

    adc_software_trigger_enable(ADC_REGULAR_CHANNEL);

}

 

UART传输

Uart发送采用重定向printf()发送串口数据。接收使用串口中断实时处理数据。

void com_usart_init(void)

{

    /* enable USART clock */

    rcu_periph_clock_enable(RCU_USART0);



    /* USART configure */

    usart_deinit(USART0);

    usart_word_length_set(USART0, USART_WL_8BIT);

    usart_stop_bit_set(USART0, USART_STB_1BIT);

    usart_parity_config(USART0, USART_PM_NONE);

    usart_baudrate_set(USART0, 115200U);

    usart_receive_config(USART0, USART_RECEIVE_ENABLE);

    usart_transmit_config(USART0, USART_TRANSMIT_ENABLE);



    usart_enable(USART0);

   

    /* enable USART TBE interrupt */ 

    //usart_interrupt_enable(USART0, USART_INT_TBE);

   

    /* enable USART RBNE interrupt */

    usart_interrupt_enable(USART0, USART_INT_RBNE);

   

    /* USART interrupt configuration */

    nvic_irq_enable(USART0_IRQn, 0);

}

 

4G模组

模组采用AT进行控制,主要功能为串口透传,把采集到的ADC数据传输到服务器上。还可以通过短信改变ADC采集的模式,由于所用的为物联网卡具体没实现。

void OneNet_link()

{

              printf("AT+CIPMUX=0\r\n");

              delay_1ms(1000);

//           printf("AT+CIPQSEND=0\r\n");

              delay_1ms(1000);

              printf("AT+CSTT=\"CMNET\"\r\n");

              delay_1ms(1000);

              printf("AT+CIICR\r\n");

              delay_1ms(1000);

              printf("AT+CIFSR\r\n");

              delay_1ms(1000);

              printf("AT+CIPSTATUS\r\n");

              delay_1ms(1000);

              printf("AT+CIPSTART=\"TCP\",\"183.230.40.40\",\"1811\"\r\n");

              delay_1ms(1000);

              printf("AT+CIPSTATUS\r\n");

              delay_1ms(2000);

              printf("AT+CIPSEND=20\r*229939#123456#test*\r\n");

}

 

实物图
 

image-20190623160102-2.png


 

Onenet的数据存储图

 

image-20190623160102-3.jpeg

实物图

结语

这个板子到手看的挺漂亮的,对比ST的板子手感要好。要是几个直插元件全弄成贴片手感会更好。

 

固件库会比ST的HAL库更简单使用一些,固件库有几处例子有些错误。总体与ST早期的固件库较像,熟悉ST的比较容易转换到GD过来。不过e231缺少了usb,还有虚拟串口也没有,这个有点遗憾。

 

刚毕业,很多仪器都没的用了,具体性能无法进行测试,新单片机新特性没尝试。

 

视频:

https://training.eeworld.com.cn/video/20785

https://training.eeworld.com.cn/video/20786

 

不知道要怎么写,有问题大家就问。到时有记起来要写再慢慢写贴吧。

 

附件包含源码,以及4g模块的使用手册,和GD32手册。

 

 

 

补充内容 (2019-7-3 21:57): 突然发现附件里面代码竟然没传上去,现在上传放在楼下

回复评论 (3)

楼主果然出现了* _ *

在路上…… EEworld 有你有我
点赞  2019-6-24 15:42
引用: lightxixi 发表于 2019-6-24 15:42 楼主果然出现了* _ *

点赞  2019-6-25 12:01

之前源码传错了,现在重新放上

点赞  2019-7-3 21:59
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复