STM32---蓝牙模块ECB02(从机模式_与手机通信)

目录

1、ECB02 重点 参数

2、引脚说明

3、AT指令使用重点 

4、使用USB转TTL模块测试

5、STM32开发板的接线

6、STM32通信代码

7、手机小程序 连接ECB02


1、ECB02 重点 参数

  • 蓝牙协议: 5.2
  • 主从模式:主、从一体,可设置
  • 睡眠模式:芯片支持(不同的模块,需要有SLEEP或EN引脚才支持)
  • 工作电压:3.3V(有部分模块型号带LDO支持5V)
  • 串口通信:AT指令、115200-NULL-8-1、连接后透传
  • 通信距离:室内实测10米内,能隔一堵墙;  空旷几十米
  • 工作电流:大约5mA
  • 支持平台:Win10及以上、iPhone4S以上, Android 4.4以上,微信小程序、支付宝小程序
  • 每帧数量:244字节,  ≤511字节会自动分包并连续发送,≥512字节会发生数据错乱

2、引脚说明


3、AT指令使用重点 

ECB02的AT指令总数量有60+,配置灵活性相当高。

出厂的默认固件,已配置好常用参数,使用时只需要几个简单的配置指令。

链接1:ECB02 官方资料下载

链接2:ECB02 指令集说明整理

AT指令重点:

  • 通信方式: UART
  • 波特率:    115200。注意:ECB01默认9600,ECB02默认115200
  • 大小写:    必须大写
  • 结尾标志:”\r\n",即通用的 0x0D、0x0A。串口助手打勾“加回车换行”。
  • 参数修改:自动保存,掉电不失。
  • 指令特色:1-连接成功进入透传后,AT指令仍可生效,这个特有意思。
  •                   2-AT指令,成功时返回信息中都包含 "OK",方便判断;  不成功不返回任何作息。
  •                   3-连接成功返回:“CONNECT OK”, 连接断开返回:"DISCONNECT"

 

从机 常用指令

即:被动地等待其它主机设备的搜索发现、连接,如另一模块、手机等

  1. AT+FACTORY\r\n ;               // 恢复出厂设置,         返回:“OK\r\n” 
  2. AT+ROLE=2\r\n ;                  // 设置从机模式,         返回:“OK\r\n”
  3. AT+MODE=1\r\n ;                 // 连接后AT指令有效, 返回:“OK\r\n”
  4. AT+NAME=myECB02\r\n ;    // 设置蓝牙名称,        返回:“OK\r\n”

主机 常用指令

即:作为主控方,主动地搜索、连接其它从机设备

  1. AT+FACTORY\r\n  ;                         // 恢复出厂设置,         返回:“OK\r\n” 
  2. AT+ROLE=1\r\n ;                             // 设置主机模式,         返回:“OK\r\n”
  3. AT+BONDC\r\n ;                              // 清除旧的从机绑定,  返回:“OK\r\n”
  4. AT+MODE=1\r\n ;                            // 连接后AT指令有效, 返回:“OK\r\n”
  5. AT+BONDNAME=myECB02\r\n ;    // 绑定从机蓝牙设备,  返回:“OK\r\n”

4、使用USB转TTL模块测试

建议刚上手使用ECB02模块时,先通过USB转TTL模块测试、熟悉AT指令。

待测试成功,再连接至STM32板子,以减少代码调试的时间。

4.1  连接USB转TTL模块

      使用最常用的串口通信接线方式即可。重点:双方的RX、TX反接

蓝牙 HC-08 模块USB转TTL模块 
RXDTXD
TXDRXD
GNDGND
VCC3.3V 或 5V

4.2   串口软件 参数设置

打开任意一款串口软件,如XCOM, SSCOM等等。本笔记中,使用SSCOM的串口助手。

( SSCOM串口助手,已包含在文末网盘的资料包中 。)

  1. 选择相应的串口号
  2. 选择波特率,模块默认 115200
  3. 打开串口

4.3   AT指令通信测试

在串口助手 右方,输入如图所示AT指令组合 。如图,分了上下两组,上面是作为从机模式的指令组合 ,下面是作为主机模式时绑定从机蓝牙名字的指令组合。

点击发送按钮,可返回相应的指令反馈信息。

如果没有返回信息,逐一检查下面步骤:

  • 查看接线, TX、RX有没有反接
  • 查看串口号,查看波特率
  • 保证AT指令大写
  • 保证AT指令尾部已带回车换行符,或打勾"回车换行“

5、STM32开发板的接线

ECB02模块,与STM32开发板的连接,本笔记使用UART4(TX-PC10, RX-PC11)。

当然,没有规定一定要使用串口4, 可自行修改为其它空闲的串口引脚

本篇,引脚连接,如下表:

蓝牙 ECB02 模块STM32 开发板
RXDTX-PC10
TXDRX-PC11
GNDGND
VCC3.3V 


6、STM32通信代码

下面代码包括:

初始化、发送AT指令、发送字符串、发送数据、接收判断、接收处理;

略过串口通信部分,因为,就是普通的、通用串口通信,  所不同的,只是增加了:

返回确认函数:UART4_WaitACK(待确认的返回字符,等待超时值ms);

#include <stm32f10x.h>                      // 头文件引用(标准库); 内核、芯片外设....;(stm32f10x.conf.h, 对标准库头文件进行调用)     
#include "stm32f10x_conf.h"                 // 头文件引用(标准库); 内核、芯片外设....;(stm32f10x.conf.h, 对标准库头文件进行调用) 
#include "bsp_led.h"                        // LED指示灯
#include "bsp_key.h"                        // 按键
#include "bsp_usart.h"                      // USART1、2、3,UART4、5




/******************************************************************************
 * 函  数: delay_ms
 * 功  能: 简单的延时函数
 * 参  数: uint32_t _ms  毫秒值
 * 返回值: 无
 ******************************************************************************/
static void delay_ms(uint32_t ms)                                                  // 定义一个ms延时函数,减少移植时对外部文件依赖; 本函数仅作粗略延时使用,而并非精准延时;
{
    ms = ms * 10286;                                                               // 注意:此参考值运行条件:打勾 Options/ c++ / One ELF Section per Function
    for (uint32_t i = 0; i < ms; i++);                                             // 72MHz系统时钟下,大约多少个空循环耗时1ms
}



/******************************************************************************
 * 函  数: UART4_WaitACK
 * 功  能: 等待指令返回值 *
 * 参  数: char*    _ackStr   期待返回的字符串
 *          uint32_t _timeout  超时值
 * 返回值: 0-超时、返回异常
 *          1-正常返回期待值
 ******************************************************************************/
static uint8_t UART4_WaitACK(char *_ackStr, uint32_t _timeout)
{
    while (_timeout--)                                           // 判断是否起时(这里只作简单的循环判断次数处理)
    {                                                           
        if (xUART4.ReceivedNum)                                  // 判断是否接收到数据
        {                                                       
            xUART4.ReceivedNum = 0;                              // 清0接收字节数
            if (strstr((char *)xUART4.ReceivedData, _ackStr))    // 判断返回数据中是否有期待的字符
                return 1;                                        // 返回:0-超时没有返回、1-正常返回期待值
            else                                                
                return 0;                                       
        }                                                       
        delay_ms(1);                                             // 延时; 用于超时退出处理,避免死等
    }                                                           
    return 0;                                                    // 返回:0-超时、返回异常,1-正常返回期待值
}



/******************************************************************************
 * 函  数: ECB02_Init
 * 功  能: 初始化ECB02:配置串口、从机模式、AT模式、蓝牙名称
 * 参  数: 无
 * 返回值: 0-失败、1-成功
 ******************************************************************************/
static uint8_t ECB02_Init(void)
{
    delay_ms(200);

    UART4_Init(115200);                              // 串口4初始化; 用于与ECB02通信; 波特率115200; 使用引脚PC10、PC11
                                                     
    /** 1-恢复出厂设置**/                            
    UART4_SendString("AT+FACTORY\r\n");              // 恢复出厂时的默认配置
    if (UART4_WaitACK("OK", 1000) == 0)              // 等待指令执行返回; AT指令执行成功返回"OK"、执行失败不返回任何数据; 
        goto error_ECB02_Init;                       // 错误:等待超时; 跳到错误处理
    printf("1- ECB02 默认配置     配置完成\r");       // 输出提示:修改成功
    delay_ms(500);                                   // 注意:执行恢复出厂配置指令后,要稍等500ms后,才能操作其它指令
                                                     
    /** 2-从机模式 **/                               
    UART4_SendString("AT+ROLE=2\r\n");               // 设置主从机模式:0-由ROLE引脚配置、1-主机模式、2-从机模式
    if (UART4_WaitACK("OK", 2000) == 0)              // 等待指令执行返回; AT指令执行成功返回"OK"、执行失败不返回任何数据; 
        goto error_ECB02_Init;                       // 错误:等待超时; 跳到错误处理
    printf("2- ECB02 从机模式     配置完成\r");       // 输出提示:修改成功
    delay_ms(500);                                   // 注意:执行主从机模式指令后,要稍等500ms后,才能操作其它指令
                                                     
    /** 3-连接后AT指令仍然有效 **/                   
    UART4_SendString("AT+MODE=1\r\n");               // 设置连接后仍可使用AT指令; 0-AT_EN引脚控制、1-连接后AT指令有效、2-连接后AT指令无效,所有数据数据透传;
    if (UART4_WaitACK("OK", 1000) == 0)              // 等待指令执行返回; AT指令执行成功返回"OK"、执行失败不返回任何数据; 
        goto error_ECB02_Init;                       // 错误:等待超时; 跳到错误处理
    printf("3- ECB02 AT模式       配置完成\r");       // 输出提示:修改成功
                                                     
    /** 4-蓝牙名称 **/                               
    UART4_SendString("AT+NAME=myECB02\r\n");         // 修改蓝牙名称。最大20字节,如果需要显示中文,请使用URL编码
    if (UART4_WaitACK("OK", 1000) == 0)              // 等待指令执行返回; AT指令执行成功返回"OK"、执行失败不返回任何数据; 
        goto error_ECB02_Init;                       // 错误:等待超时; 跳到错误处理
    printf("4- ECB02 蓝牙名称     配置完成\r");       // 输出提示:修改成功
                                                     
    return 1;                                        // 配置顺利完成,函数返回:1
                                                     
error_ECB02_Init:                                    // 失败处理
    printf("ECB-02 配置失败!已跳过配置\r");           // 输出提示:配置失败
    return 0;                                        // 返回:0-失败、1-成功
}



/******************************************************************************
 * 函  数: main
 * 功  能: 程序主函数
 ******************************************************************************/
int main(void)
{
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);                                // 中断分组,组2:抢占级0~3,子优先级0~3 ; 全局只设置一次,尽量放在显眼的地方
    USART1_Init(115200);                                                           // 串口1初始化; 用于与串口软件通信,方便代码调试; USART1(115200-N-8-1), 且工程已把printf重定向至USART1输出
    Led_Init();                                                                    // LED 初始化
    LED_BLUE_ON ;                                                                  // 点亮蓝灯
    Key_Init();                                                                    // 按键 初始化

    ECB02_Init();                                                                  // 初始化ECB02:配置串口、从机模式、AT模式、蓝牙名称; 返回:0-失败、1-成功

    while (1)                                                                      // while函数死循环,不能让main函数运行结束,否则会产生硬件错误
    {
        delay_ms(1);                                                               // 间隔延时
        
        if (xUSART1.ReceivedNum)                                                   // 检查串口助手所连接的USART1, 是否收到数据; 如果收到,就通过ECB02发出
        {
            UART4_SendString((char *)xUSART1.ReceivedData);                        // 把上位机发过来的数据,发送给ECB02
            printf("\r\n发送数据>>>:%s\r", (char *)xUSART1.ReceivedData);         // 把所发送的数据,输出到串口上位机,方便观察
            xUSART1.ReceivedNum = 0;                                               // 清空串口1的接收标志
        }

        if (xUART4.ReceivedNum)                                                    // 检查ECB02所连接的UART4, 否收到数据; 如果收到,就输出到串口助手,并判断其它动作
        {
            printf("\r\nECB02收到%d字节<<<:\r", xUART4.ReceivedNum);               // 把接收收到的数据,输出到串口上位机,方便观察
            printf("%s\r", xUART4.ReceivedData);                                   // 把接收收到的数据,输出到串口上位机,方便观察
            if (strstr((char *)xUART4.ReceivedData, "LED_ON"))     LED_BLUE_ON;    // 判断APP发过来的数据包,是否包含字符串:LED_RED_ON
            if (strstr((char *)xUART4.ReceivedData, "LED_OFF"))    LED_BLUE_OFF;   // 判断APP发过来的数据包,是否包含字符串:LED_RED_OFF
            xUART4.ReceivedNum = 0;                                                // 清空串口1的接收标志
        }
    }
}

6.1  解释---串口初始化

上面代码中,初始化了两个串口, 

第一个是USART1,(PA9、PA10),波特率115200,  用于与串口助手通信,输出程序调试信息。

第二个是UART4,(PC10、PC11),波特率115200,  用于与蓝牙模块ECB02通信。

6.2  解释---如何发送

发送AT指令或数据,直接调用串口发送函数。模块会自动识别是指令,还是普通透传的数据。

注意:示例中所用发送函数,不是标准库的函数,而是用了魔女开发板提供的示例函数。

UART4_SendString("AT指令\r\n");  // 发送AT指令字符串
UART4_SendData(uint8_t *, Num)   // 发送指定长度数据

6.3  解释---模块作为从机的配置

四个指令 :

  1. AT+FACTORY\r\n ;               // 恢复出厂设置,         返回:“OK\r\n” 
  2. AT+ROLE=2\r\n ;                  // 设置从机模式,         返回:“OK\r\n”
  3. AT+MODE=1\r\n ;                 // 连接后AT指令有效, 返回:“OK\r\n”
  4. AT+NAME=myECB02\r\n ;    // 设置蓝牙名称,        返回:“OK\r\n”

6.4  解释---等待AT指令执行返回

在发送AT指令后:

  • 执行成功,返回消息中会包含"OK”字符串;
  • 执行失败,不返回任何消息。同时,连接后发送数据,也不返回任何消息。
/******************************************************************************
 * 函  数: UART4_WaitACK
 * 功  能: 等待指令返回值 *
 * 参  数: char*    _ackStr   期待返回的字符串
 *          uint32_t _timeout  超时值
 * 返回值: 0-超时、返回异常
 *          1-正常返回期待值
 ******************************************************************************/
static uint8_t UART4_WaitACK(char *_ackStr, uint32_t _timeout)
{
    while (_timeout--)                                           // 判断是否起时(这里只作简单的循环判断次数处理)
    {                                                           
        if (xUART4.ReceivedNum)                                  // 判断是否接收到数据
        {                                                       
            xUART4.ReceivedNum = 0;                              // 清0接收字节数
            if (strstr((char *)xUART4.ReceivedData, _ackStr))    // 判断返回数据中是否有期待的字符
                return 1;                                        // 返回:0-超时没有返回、1-正常返回期待值
            else                                                
                return 0;                                       
        }                                                       
        delay_ms(1);                                             // 延时; 用于超时退出处理,避免死等
    }                                                           
    return 0;                                                    // 返回:0-超时、返回异常,1-正常返回期待值
}

6.5  解释---如何接收、处理数据

  • bsp_USART.c中,已封装好接收中断,外部只管判断接收字节数量>0, 即为接收到新数据
  • 处理完一帧数据后,记得要把串口的接收字节数量,赋0,不然下个循环会误判出错。
        if (xUART4.ReceivedNum)                                                    // 检查ECB02所用的串口是否收到数据
        {
            printf("\r\nECB02收到%d字节<<<:\r", xUART4.ReceivedNum);               // 把接收收到的数据,输出到串口上位机,方便观察
            printf("%s\r", xUART4.ReceivedData);                                   // 把接收收到的数据,输出到串口上位机,方便观察
            // 判断数据以执行动作
            if (strstr((char *)xUART4.ReceivedData, "LED_ON"))     LED_RED_ON;     // 判断APP发过来的数据包,是否包含字符串:LED_RED_ON
            if (strstr((char *)xUART4.ReceivedData, "LED_OFF"))    LED_RED_OFF;    // 判断APP发过来的数据包,是否包含字符串:LED_RED_OFF

            xUART4.ReceivedNum = 0;                                                // 清空串口1的接收标志
        }

7、手机小程序 连接ECB02

注意1:ECB02需要配置好从机模式(名称不重要),才能被手机搜索到并连接。

注意2:下面二维码中小程序,是模块官方提供,功能虽简单,但测试方便。

  • 手机,打开蓝牙功能;
  • 用微信扫描下方二维码,以打开小程序;
  • 打开小程序后,稍等两秒,它将自动搜索附近的蓝牙设备; 下拉也可以刷新列表。
  • 点击要连接的蓝牙名称,如myECB02,将自动连接,并跳转到通信收发页面。

至此,在电脑串口助手、手机小程序上,点击发送数据,即可自动收发数据,开发板收到数据后,判断进行处理。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/664041.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Jmeter压测中遇到的问题汇总

Jmeter使用过程问题总结 一、某个请求的请求体中有中文字段&#xff0c;执行后该请求无法成功 解决方法&#xff1a;在取样器的内容编码处加上UTF-8 二、遇到接口请求后报401&#xff0c;请求未授权&#xff08;或者信息头管理器只写了cookie请求不成功&#xff09; 解决方…

开展FMEA,这些准备工作你做足了吗?

在产品研发和制造过程中&#xff0c;失效模式与影响分析&#xff08;FMEA&#xff09;是一项至关重要的质量工具。它能够帮助团队提前识别和预防潜在的产品失效问题&#xff0c;从而提升产品的可靠性和质量。然而&#xff0c;要想充分发挥FMEA的效用&#xff0c;充分的准备工作…

全志H616(BIGTREETECH CB1)和 博通BCM2711(树莓派4B)CPU对比测试

一&#xff0c;实物对比图&#xff1a; BIGTREETECH CB1的底板接口的分布和树莓派4B是一样的&#xff0c;但是没有树莓派的音频接口&#xff0c;底板也不能放到树莓派4B的官方外壳里&#xff0c;因为底板的背面有一个DSI接口&#xff0c;高度超出了。 二&#xff0c;开发板硬…

【QEMU中文文档】1.关于QEMU

本文由 AI 翻译&#xff08;ChatGPT-4&#xff09;完成&#xff0c;并由作者进行人工校对。如有任何问题或建议&#xff0c;欢迎联系我。联系方式&#xff1a;jelin-shoutlook.com。 QEMU 是一款通用的开源机器仿真器和虚拟化器。 QEMU 可以通过几种不同的方式使用。最常见的用…

每日一题《leetcode--LCR 021.删除链表的倒数第N个结点》

https://leetcode.cn/problems/SLwz0R/ 这道题我们可以设一个哨兵位&#xff0c;然后把要遍历链表的结点指向该哨兵位。最后用for循环将指针指向要删除结点的前一个。 struct ListNode* removeNthFromEnd(struct ListNode* head, int n){struct ListNode* dummy malloc(sizeof…

[数据集][目标检测]RSNA肺炎检测数据集VOC+YOLO格式6012张1类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;6012 标注数量(xml文件个数)&#xff1a;6012 标注数量(txt文件个数)&#xff1a;6012 标注…

一文读懂OrangePi AIpro体验测评与应用开发

文章目录 OrangePi AIpro 基本介绍AI边缘计算产品对比性能测试体验1. 点亮系统2. Jupyter远程启动测试官方例程3. 官方例程在OrangePi AIpro上的运行效果1. YOLOv5 目标检测2. OCR 识别3. ResNet50 物体检测4. 图像增强模型测试5 CartoonGAN 图像风格迁移 总结参考文档 OrangeP…

.NET SK 如何给AI大模型添加搜索引擎功能?

普通的AI大模型的数据都是在一开始训练的时候决定的&#xff0c;所以大模型的数据来源都可能存在时效性。 下面我们会利用SK插件来给AI大模型添加联网功能。 准备工作 创建一个名称为5_SK_Plugin_Web的控制台项目 复制以下代码到5_SK_Plugin_Web项目文件中 <Project Sdk…

taskENTER_CRITICAL()分析

1. 临界段代码 //任务级的临界段代码保护 taskENTER_CRITICAL() taskEXIT_CRITICAL()//中断级的临界段代码保护 taskENTER_CRITICAL_FROM_ISR() taskEXIT_CRITICAL_FROM_ISR()2. 以STM32为例 &#xff08;1&#xff09;STM32有0~15&#xff0c;共16级中断&#xff0c;可嵌套…

数据结构算法 数组的实现与练习(C语言实现,Java实现)

文章目录 数据结构数组(顺序表)特点使用Java实现更高级的数组C语言实现总结优点缺点 例题[26. 删除有序数组中的重复项](https://leetcode.cn/problems/remove-duplicates-from-sorted-array/)[1. 两数之和](https://leetcode.cn/problems/two-sum/)[27. 移除元素](https://lee…

教育数字展馆助力全球教育传播,科技引领数字化教育潮流

一、教育数字展馆助力教育传播 1、提高教育资源的可及性 教育数字展馆通过VR和WEB3D技术&#xff0c;将丰富的教育资源呈现在用户面前。不论是名校的经典课程&#xff0c;还是专家的精彩讲座&#xff0c;均可通过教育数字展馆实现线上展示。用户只需登录平台&#xff0c;即可…

【解决】Tree prefab at index 8 is missing.

开发平台&#xff1a;Unity 2020 版本以上   问题描述 翻译&#xff1a;树预制体集合中第8位预制体丢失。   解决方法&#xff1a;修复丢失树资产 关联 Unity Terrier 组件使用&#xff0c;前往 树绘制工作区&#xff0c;检查 “树资产” 引用是否丢失&#xff1f;删除或重…

Mysql基础教程(10):LIMIT

MySQL LIMIT 用法与实例 在 MySQL 中&#xff0c;我们使用 LIMIT 子句来限定 SELECT 语句返回的行的数量。 MySQL LIMIT语法 该 LIMIT 子句可用于限制 SELECT 语句返回的行数。 LIMIT 接受一个或两个非负数正数作为参数。 LIMIT 子句的语法如下&#xff1a; LIMIT [offset,…

CDH6.3.2集成Flink1.12.2

一、Linux下载httpd服务并开启 yum install y httpd systemctl start httpd systemctl enable httpd 二、获取已制作好的安装包 flink-1.12.2-bin-scala_2.11.tar ​ FLINK_ON_YARN-1.12.2.jar ​ flink-shaded-hadoop-2-uber-3.0.0-cdh6.3.2-10.0.jar 三、集成CM 1.上传编…

K210视觉识别模块学习笔记2:固件的下载升级_官方数字识别例程导入方法

今日开始学习K210视觉识别模块:固件的下载升级_官方数字识别例程导入方法 主要学习如何升级固件库&#xff0c;在哪下载固件库&#xff0c;以及如何在TF卡正确导入官方例程&#xff1a; 亚博智能的K210视觉识别模块...... 本次最终目的是正确导入官方的数字识别例程&#xff0…

[GESP202306 四级] 幸运数

按照题目做就OK了&#xff08;本蒟蒻写得太烂了&#xff09; #include<bits/stdc.h> using namespace std; long long w(long long n) {if(n1||n0){return n*7;}n*7;long long tsgn,s0;while(true){s0;while(tsg!0){stsg%10;tsg/10;}if(s<9){return s;}tsgs;} } bool…

可编程晶体振荡器应用于车载倒车雷达

倒车雷达&#xff0c;即“倒车防撞雷达”&#xff0c;又称“"停车辅助装置”&#xff0c;是汽车停车或倒车时的安全辅助装置。它主要由超声波传感器、控制器和显示器等组成&#xff0c;可以通过声音或更直观的显示告知驾驶员周围的障碍物&#xff0c;解除驾驶员在停车、倒…

【软件测试】软件测试概念 | 测试用例 | BUG | 开发模型 | 测试模型 | 生命周期

文章目录 一、什么是软件测试1.什么是软件测试2.软件测试和调试的区别测试人员需要的素养 二、软件测试概念1.需求1.需求的定义2.测试人员眼中的需求 2.测试用例1.测试用例概念 3.BUG 软件错误4、开发模型和测试模型1.软件的生命周期2.开发模型1.瀑布模型2.螺旋模型3.增量、迭代…

2024年人工智能与机械自动化技术国际会议( ICAIMAT 2024)

2024年人工智能与机械自动化技术国际会议( ICAIMAT 2024) 会议简介 随着科技的飞速发展&#xff0c;人工智能和机械化自动化技术已成为全球产业升级和经济发展的重要动力。为了进一步促进国际交流与合作&#xff0c;推动人工智能和机械化自动化技术的创新与应用&#xff0c;我…

2024年艺术鉴赏与科学教育国际会议(ICAASE 2024)

2024年艺术鉴赏与科学教育国际会议 2024 International Conference on Art Appreciation and Science Education 【1】会议简介 2024年艺术鉴赏与科学教育国际会议是一场集艺术、科学和教育于一体的国际性学术盛会。本次会议旨在推动艺术鉴赏与科学教育领域的深入交流与合作&am…