总结——调试STM32F103ZET6及外围传感器_MH-Z14A二氧化碳传感器
来源:互联网 发布:nzt62数据 编辑:程序博客网 时间:2024/04/25 12:16
1.概述
模块为MH-Z14A二氧化碳传感器,UART输出,使用USART2。
2.接线
正极(引脚1)接P5的3脚5V,负极(引脚3)接P5的5脚GND,RXD(引脚11)接P5的6脚TXD,TXD(引脚19)接P5的7脚RXD。
3.调试关键问题
(1)波特率9600,数据位8位,停止位1位,校验位无。
(2)通信方式:STM32通过US2_TX发送读取CO2浓度的指令,传感器通过US2_RX返回浓度数据。
(3)读取气体浓度值命令
0xFF 0x01 0x86 0x00 0x00 0x00 0x00 0x00 0x79
返回值
0xFF 0x86 HIGH LOW - - - - 校验值
气体浓度值= HIGH * 256 + LOW
(4)校验和计算
<1>从Byte1 加至Byte7: 0x01 + 0x86 + 0x00 + 0x00 + 0x00 + 0x00 + 0x00 = 0x87
<2>取反:0xFF - 0x87 = 0x78
<3>对取反后加1:0x78 + 0x01 = 0x79
char getCheckSum(char *packet){char i, checksum;for( i = 1; i < 8; i++){checksum += packet[i];}checksum = 0xff – checksum;checksum += 1;return checksum;}
(5)一开始使用USART_SendData函数向串口发送命令数据:
for(i = 0; i < 9; i++)//发送读取CO2气体浓度指令,发送完一个字节后必须延时一段时间传感器才能正确接收到指令 {USART_SendData(USART2,CO2TxBuffer[i]);delay_ms(100); }
发现发送读取CO2气体浓度指令,发送完一个字节后必须延时一段时间传感器才能正确接收到指令,共发送9字节。
后来发现有专门的发送数据函数USART_SendData_Length(USART2,CO2TxBuffer,9):
void USART_SendData_Length(USART_TypeDef* USARTx, u8* Data,u16 length){ /* Check the parameters */u16 i;for(i=0;i<length;i++){USART_SendData(USARTx, Data[i]);//向串口发送数据while(USART_GetFlagStatus(USARTx,USART_FLAG_TC)!=SET);//等待发送结束}(6)串口2中断处理函数,更新CO2气体浓度数据CO2Data:
void USART2_IRQHandler(void) //串口2中断服务程序{char i, checksum = 0;if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET) //接收中断{USART_RX_BUF_2[USART2Count++] = USART_ReceiveData(USART2);//读取9字节到USART_RX_BUF_2if(USART2Count == 9)USART2Count = 0;//当接收到第9个字符后,从数组USART_RX_BUF_1的开头开始写//计算校验和//1、从Byte1 加至Byte7: 0x01 + 0x86 + 0x00 + 0x00 + 0x00 + 0x00 + 0x00 = 0x87//2、取反:0xFF - 0x87 = 0x78//3、对取反后加1:0x78 + 0x01 = 0x79for( i = 1; i < 8; i++){checksum += USART_RX_BUF_2[i];}checksum = 0xff - checksum;checksum += 1;}if(checksum == USART_RX_BUF_2[8])//证明接收到的数据是正确的CO2Data = USART_RX_BUF_2[2] * 256 + USART_RX_BUF_2[3];}(7)代码地址
4.MH-Z14A二氧化碳传感器资料
2 0
- 总结——调试STM32F103ZET6及外围传感器_MH-Z14A二氧化碳传感器
- 总结——调试STM32F103ZET6及外围传感器_电路图设计问题+SHT10温湿度传感器
- 总结——调试STM32F103ZET6及外围传感器_氧气传感器
- 总结——调试STM32F103ZET6及外围传感器_PM2.5传感器
- 总结——调试STM32F103ZET6及外围传感器_电路图设计问题+SHT10温湿度传感器
- 总结——调试STM32F103ZET6及外围传感器_MAQ400空气质量(异味)数显模块
- arduino和MG111二氧化碳传感器采集co2
- CM106-05红外二氧化碳传感器的应用
- 传感器调试
- 传感器总结
- Android传感器——方向传感器TYPE_ORIENTATION
- 传感器——MPU6050
- 传感器
- 传感器
- 传感器
- 传感器
- 传感器
- 传感器
- 自定义规则排序
- 汉诺塔:动画过程绘制实现
- ajax异步上传图片
- 移动网站上面,选中的元素周围会有灰色的框框出现,要怎么去掉?
- WebView组件浏览器实现运用.
- 总结——调试STM32F103ZET6及外围传感器_MH-Z14A二氧化碳传感器
- const,static,extern 的理解
- Sublime Text 3 快捷键总结
- RecycleView仿Grifview 左右滑动并实现右滑至最右边加载更多
- 《忠犬八公》
- iOS开发-使用NSURLSession实现文件断点下载,文件离线续传以及图片上传
- 集成微信登录
- c++初学之虚函数
- 搜狐视频协议分析之Tracker交互协议分析 [20161113]