【GD32F310G-START】电压表 - GD32 MCU - 电子工程世界-论坛 (eeworld.com.cn)
【GD32F310G-START】NTC温度计 - GD32 MCU - 电子工程世界-论坛 (eeworld.com.cn)
在获取温度的前提下,将温度计通过无线网络发送给RVB2601,再通过互联想上传给阿里云。
这次的主角是亿伯特的无线串口透传模块:
上传给RVB2601的效果图:
手机APP的效果图:
上传数据的代码:
int main(void)
{
float temper_val,n;
uint8_t send_temper[24] = {0x66, 0x66, 0x00, 0x12, 0x01, 0x0, 0x07, 0x08, 0x09, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x20, 0x21, 0x22, 0x23, 0x24};
uint8_t str_temper[10];
systick_config();
gd_eval_com_init(USART0);
// my_i2c0_init();
// oled_display_test();
LCD_Init();//LCD初始化
LCD_Fill(0,0,LCD_W,LCD_H,BLUE);
LCD_ShowString(12,0,"GD32F310G",WHITE,BLUE,32,0);
LCD_ShowString(18,36,"EEWORDL",WHITE,BLUE,32,0);
LCD_ShowString(16,72,"2022-5-7",BLACK,BLUE,32,0);
LCD_ShowString(12,100,"GD32f310g_adc_demo",RED,BLUE,16,0);
my_init_adc();
/* infinite loop */
while(1)
{
temper_val = get_temper(ADC_CHANNEL_9);
sprintf(str_temper,"T:%.2f ",temper_val/10);
n= (int)temper_val;
if(temper_val<0)
{
send_temper[2] = 0x01;//符号位
temper_val = -temper_val;
}
else{
send_temper[2] = 0;//符号位
}
n = (int)(temper_val/10);
send_temper[3] = n;
n = (int)(temper_val)%10;
send_temper[4] = n;
//通过串口模块透传给RVB2601
usart0_send_temper(send_temper,5);
LCD_ShowString(18,36,str_temper,WHITE,BLUE,32,0);
delay_1ms(500);
}
}
【总结】通过NTC采集温度,然后通过无线模块传输给RVB2601,成功解决无线数据采集。同时无线串口模块是低功耗的模块,可以用电池长时间供电。RVB的接收代码,在平头哥作品中详细说明。
|