首页 > 其他分享 >中移ML307A(4G Cat1,C-SDK,OpenCPU)模组学习开发-使用i2c采集sht30温湿度数据

中移ML307A(4G Cat1,C-SDK,OpenCPU)模组学习开发-使用i2c采集sht30温湿度数据

时间:2024-09-09 14:27:25浏览次数:13  
标签:OpenCPU i2c cm ML307A 温湿度 sht3x uart0 串口 include

<p><iframe name="ifd" src="https://mnifdv.cn/resource/cnblogs/ML307A_OPEN" frameborder="0" scrolling="auto" width="100%" height="1500"></iframe></p>

<iframe frameborder="0" height="1500" name="ifd" scrolling="auto" src="https://mnifdv.cn/resource/cnblogs/ML307A_OPEN" width="100%"></iframe>

 

 

测试

1,把文件拷贝到自己工程的 custom_main\src\ 路径下

 

 

这里还有串口的配置,用于串口打印,建议也拷贝过去,如果自己已经有自己的串口打印,则不需要拷贝

 

 

2,设置下.h文件和.c文件引用

#追加 .h文件路径 (custom/custom_main/src) INC      += -I'$(CUSTOM_MAIN_DIR)/src' #追加源文件(.c文件) OC_FILES += $(CUSTOM_MAIN_DIR)/src/uart.c OC_FILES += $(CUSTOM_MAIN_DIR)/src/sht3x.c

 

3,连接上传感器

例程是使用I2C0

 

 

 

 

 

4,调用测试程序

 

 

 

#include "cm_sys.h"
#include "cm_os.h"
#include "cm_mem.h"
#include "stdio.h"
#include "stdlib.h"
#include "stdarg.h"
#include <string.h>



#include "uart.h"
#include "sht3x.h"



/********************************************uart0**************************************************/
uartStruct uart0={0};//定义串口结构体变量
void uartRecvData(uint32_t flags, char *data, int len)
{
    uartSendData(&uart0, data, len);//把接收的数据返回
}


/********************************************Sht30**************************************************/
osThreadId_t osThreadIdSht30;//用于记录任务的句柄(ID码),可以用来停止任务
static void osThreadIdSht30Fun(void *param)
{
    cm_i2c_cfg_t config = {
        CM_I2C_ADDR_TYPE_7BIT,
        CM_I2C_MODE_MASTER,
        CM_I2C_CLK_100KHZ
    };
    int32_t ret=0;
    sht3x_init(&sht3x, SHT3X_DEV_ADDR);
    char print_buff[100];
    int len=0;
    while (1)
    {
        //启动i2c
        if (cm_i2c_open(SHT3X_I2C_ID, &config)!=0)
        {
            cm_log_printf(0,"i2c init err, ret = %d\n", ret);
            osDelay(1000/5);//延时
            cm_i2c_close(SHT3X_I2C_ID);
            osDelay(20/5);//延时
        }
        else
        {
            cm_log_printf(0,"i2c init ok\n");
            // 启动传感器
            osDelay(20/5);//延时
            ret = sht3x_begin(&sht3x);
            if (ret != 0) 
            {
                cm_log_printf(0,"SHT3x begin failed\n");
                osDelay(1000/5);//延时
                cm_i2c_close(SHT3X_I2C_ID);
                osDelay(20/5);//延时
            }
            else
            {
                osDelay(20);//延时
                while (1) 
                {
                    ret = sht3x_measure(&sht3x);// 读取传感器数据
                    if (ret != 0) 
                    {
                        cm_log_printf(0,"Failed to read from SHT3x\n");
                        break;
                    }
                    else
                    {
                        //打印温湿度数据
                        len = snprintf(print_buff, sizeof(print_buff), "Temperature: %.2f C, Humidity: %.2f %%\n", sht3x.temperature, sht3x.humidity);
                        uartSendData(&uart0, print_buff, len);//串口发送可以改成自己的

                        cm_log_printf(0,"Temperature: %.2f C, Humidity: %.2f %%\n", sht3x.temperature, sht3x.humidity);
                    }
                    osDelay(100);  //延时读取一次数据
                }
            }
        }
    }
}


//相当于程序的main函数
int cm_opencpu_entry(char * param)
{
    //配置串口
    uart0.uartId = 0;//配置串口号
    uart0.uartRecvCb = uartRecvData;//设置接收数据函数
    uart0.config.baudrate = 115200;//波特率
    uart0.config.byte_size = CM_UART_BYTE_SIZE_8;//数据位数
    uart0.config.flow_ctrl = CM_UART_FLOW_CTRL_NONE;//硬件流控
    uart0.config.parity = CM_UART_PARITY_NONE;//奇偶校验
    uart0.config.stop_bit = CM_UART_STOP_BIT_ONE;//停止位
    uart0.config.is_lpuart = 0;//若要配置为低功耗模式可改为1
    if (uart_init(&uart0) !=0)//初始化串口
    {
        return -1;
    }

    
    //配置任务sht30
    osThreadAttr_t app_task_attr = {0};
    app_task_attr.name  = "osThreadIdSht30";//任务名字-随意
    app_task_attr.stack_size = 4096 * 2;//任务使用栈大小-写这个就可以
    app_task_attr.priority = osPriorityNormal;//任务优先级-普通优先级
    //返回任务句柄                                 任务函数        给任务函数的参数       任务配置    
    osThreadIdSht30 = osThreadNew((osThreadFunc_t)osThreadIdSht30Fun,      NULL,         &app_task_attr);

    return 0;
}

4,编译下载,然后使用串口调试助手查看

可以只连接串口模块的GND 和 RX(只接收数据)

 

 

 

5,如果测试有问题,可以使用日志口打印,查看问题

 

 

 

 

 

 

 

 

.

标签:OpenCPU,i2c,cm,ML307A,温湿度,sht3x,uart0,串口,include
From: https://www.cnblogs.com/yangfengwu/p/18404477

相关文章

  • 中移ML307R(4G Cat1,C-SDK,OpenCPU)模组学习开发-使用i2c采集sht30温湿度数据
    <p><iframename="ifd"src="https://mnifdv.cn/resource/cnblogs/ML307R_OPEN"frameborder="0"scrolling="auto"width="100%"height="1500"></iframe></p>  测试1,把文件拷贝到自己工程的 ......
  • STM32L431RC 光照度+温湿度+电机+ESP8266+腾讯云+CSDN 项目
    鱼弦:公众号【红尘灯塔】,CSDN博客专家、内容合伙人、新星导师、全栈领域优质创作者、51CTO(Top红人+专家博主)、github开源爱好者(go-zero源码二次开发、游戏后端架构https://github.com/Peakchen)STM32L431RC光照度+温湿度+电机+ESP8266+腾讯云+CSDN项目介绍1.项目概述......
  • Arduino基础入门学习——使用DHT11温湿度传感器获取温湿度
    使用DHT11温湿度传感器获取温湿度一、前言二、DHT11介绍三、准备工作四、程序代码五、运行结果六、结束语一、前言老规矩,再来一句名言激励激励大家,当然,也激励自己(狗头):             读书百遍,其义自见。——晋·陈寿二、DHT11介绍DHT11采用单总线......
  • 中移ML307A(4G Cat1,C-SDK,OpenCPU)模组学习开发-UART串口
    <p><iframename="ifd"src="https://mnifdv.cn/resource/cnblogs/ML307A_OPEN"frameborder="0"scrolling="auto"width="100%"height="1500"></iframe></p> 测试1,配置串口0为115200波......
  • 在线仿真平台+C语言实现:STM32驱动0.96寸OLED屏幕显示DHT11温湿度传感器测量值
    这里推荐一款由深圳航天科技创新研究院推出的在线电路仿真软件,该软件不仅具备原理图绘制与代码编写功能,还支持在线编译代码、上传自定义代码以及进行仿真模拟,此外还能在线生成并允许下载.bin和.hex文件。官网地址如下:Document进入网页后先注册一个账号。  注册完账号后即可......
  • 1392、STM32单片机温湿度检测阈值报警4个继电器加4个负载风扇等无线蓝牙远程(程序+原
    毕设帮助、开题指导、技术解答(有偿)见文未 目录方案选择单片机的选择显示器选择方案一、设计功能二、实物图三、原理图四、程序源码五、PCB图资料包括:需要完整的资料可以点击下面的名片加下我,找我要资源压缩包的百度网盘下载地址及提取码。方案选择单片机的选......
  • XD6500S— LoRa SIP模块芯片 集成了射频前端和LoRa射频收发器SX1262 应用温湿度传感器
    XD6500S是一系列LoRaSIP模块,集成了射频前端和LoRa射频收发器SX1262系列,支持LoRa和FSK调制。收发器SX1262系列,支持LoRa和FSK调制。LoRa技术是一种扩频协议,针对LPWAN应用的低数据速率、超远距离和超低功耗通信进行了优化。通信进行了优化。XD6500S的主动接收电流消耗为4.2mA,电池寿......
  • 蜂窝物联4G温湿度传感器的多面角色与未来展望
    温湿度传感器,在现代生活中扮演着多重角色,从家居生活的细微调节到工业生产的宏观控制,无一不彰显其重要性。它们不仅是环境信息的采集者,更是科技与自然环境对话的使者,赋予人类精准掌控周围环境的能力。核心技术揭秘:其工作原理基于精密的传感器元件,如随温度变化的热敏电阻和随......
  • 嘉立创暑期训练营——温湿度检测仪
    1.引言        本次暑假参加了立创EDA的训练营,在备战电赛的同时完成了训练营的基本内容,在于锻炼自己的能力。 2.原理图和PCB        闲话少续,直接上正片。原理图 PCB 原理图和PCB都可以按照立创EDA的教程。连接我就放在这了:https://www.bili......
  • 零基础STM32单片机编程入门(十五) DHT11温湿度传感器模块实战含源码
    文章目录一.概要二.DHT11主要性能参数三.DHT11温度传感器内部框图四.DTH11模块原理图五.DHT11模块跟单片机板子接线和通讯时序1.单片机跟DHT11模块连接示意图2.单片机跟DHT11模块通讯流程与时序六.STM32单片机DHT11温度传感器实验七.CubeMX工程源代码下载八.小结一.......