网站设计培训班询,中国人做跨电商有什么网站,女和男做的视频网站,汕头网上推广公司摘要#xff1a;一文带你用小熊派开发板动手做土壤湿度传感器。一、实验准备1.实验环境一块stm32开发板#xff08;推荐使用小熊派#xff09;#xff0c;以及数据线已经安装STM32CubeMX已经安装KeilMDK,并导入stm32开发板对应的芯片包#xff08;小熊派使用的是STM32L431…摘要一文带你用小熊派开发板动手做土壤湿度传感器。一、实验准备1.实验环境一块stm32开发板推荐使用小熊派以及数据线已经安装STM32CubeMX已经安装KeilMDK,并导入stm32开发板对应的芯片包小熊派使用的是STM32L431RCT6准备一个串口调试助手我使用的是UartAssist包含在附件中一个土壤湿度传感器模块2.目标效果通过CubeMX创建工程并配置参数获取stm32以硬件IIC获取SHT20传感器值通过SHT20数据手册转化串口1重定向输出土壤湿度值二、通过CubeMX生产MDK工程A.芯片选择打开CubeMX,进入芯片选择选择自己的stm32芯片即STM32L431RCT6B.时钟源RCC设置更改系统时钟源系统时钟默认使用内部的高速时钟HSI选择使用HSE时钟更精确设置外部时钟对应的端口配置时钟树STM32L431RCT6系统时钟最大可以为80MHz我们配置到最大即可C.参数配置对应端口设置1配置USART1使用USART,模式为异步波特率为115200无硬件流控制2)配置ADC通道知识补充ADC,模拟-数字转换器可以将连续变化的模拟信号转化为离散的数字信号。其中小熊派的ADC1的通道三已经被引出即PC2打开ADC1通道3---3配置adc我们保持默认即可D.工程设置一些基础的设置包括工程名、存储位置、工程环境、工程中各个文件的组成E.生成代码三、代码补充1. 串口1输出重定向我们知道printf是打印函数原理是根据传入的字符串参数格式化打印输出到stdout中。我们需要让printf打印到串口之中只需要在usart.c文件中模仿printf写一个输出函数即可在添加头文件/* USER CODE BEGIN 0 */#include stdarg.h#include string.h#include stdio.h/* USER CODE END 0 */写输出函数/* USER CODE BEGIN 1 */void UsartPrintf(UART_HandleTypeDef *huart, char *fmt,...){unsigned char UsartPrintfBuf[296];va_list ap;unsigned char *pStr UsartPrintfBuf;va_start(ap, fmt);vsprintf((char *)UsartPrintfBuf, fmt, ap); //格式化va_end(ap);while(*pStr ! 0){USART1-TDR *pStr;while((USART1-ISR 0x40) 0);}}//使用方法:UsartPrintf(huart1,hello worldrn);/* USER CODE END 1 */注意自己添加的代码需要在begin和end之间2. 读取传感器ADC值我们获取传感器adc的值通过在实验室多次测量不同土壤湿度的ADC值来表示土壤湿润程度主函数代码 while (1){/* USER CODE END WHILE *//* USER CODE BEGIN 3 */HAL_ADC_Start(hadc1); //开启ADC1HAL_ADC_PollForConversion(hadc1,50); //等待ADC转化完成for(num0;num20;num){AD_Value HAL_ADC_GetValue(hadc1);}AD_Value AD_Value/20; //ADC转换的数据20次的平均值UsartPrintf(huart1,ADC20次获取的平均值值为%drn,AD_Value);Temperature ((int16_t)(AD_Value-*TEMP30_CAL_ADDR)*1.0/(int16_t)(*TEMP130_CAL_ADDR-*TEMP30_CAL_ADDR))30;UsartPrintf(huart1,Temperature is %.2f °rn,Temperature); ////UsartPrintf(huart1,%drn,*TEMP130_CAL_ADDR);//UsartPrintf(huart1,%drn,*TEMP30_CAL_ADDR);}代码很简单但是如果我们需要获取更精确的值可以加入各种滤波算法。然后根据实验值判断土壤湿润程度。我通过实验发现在空气中获取的值为1300左右包上湿润的餐巾纸后值为两位数以下。因此我们可以粗略判断土壤越湿度值越小相反土壤越干值越大。四、编译下载点击编译后0 error,0 warning小熊派连接在电脑上代码下载到开发板五、效果1.将小熊派串口1和电脑相连即拨到 AT-MUC,按下复位键2.打开串口调试助手连接端口设置波特率为115200可以看到在空气中获取的值为1200-1300此时我们不仅掌握了ADC的使用还掌握了土壤湿度传感器的使用附件中包含本文工程文件cubemx keilMDK附件BearPiToSoil.zip点击关注第一时间了解华为云新鲜技术~