学网站建设需要多久,网站内部链接如何进行优化建设,天元建设集团有限公司邮编,滕州做网站的多少硬件连接
ATK-IDM750C模块可直接与正点原子 MiniSTM32F103开发板板载的ATK模块接口#xff08;ATK-MODULE#xff09;进行连接。
功能说明
ATK-IDM750C是正点原子#xff08;ALIENTEK#xff09;团队开发的一款高性能4G Cat1 DTU产品#xff0c;支持移动4G、联通4G和…硬件连接
ATK-IDM750C模块可直接与正点原子 MiniSTM32F103开发板板载的ATK模块接口ATK-MODULE进行连接。
功能说明
ATK-IDM750C是正点原子ALIENTEK团队开发的一款高性能4G Cat1 DTU产品支持移动4G、联通4G和电信4G手机卡。 它以高速率、低延迟和无线数传作为核心功能可快速解决应用场景下的无线数传方案。
它支持TCP、UDP、HTTP、MQTT、DNS、RNDIS、NTP协议支持连接多种云服务器如原子云、阿里云、百度云和OneNET、支持TCP/UDP/HTTP/MQTT数据透传支持USB无线网卡持自动定时采集任务、支持基站定位、支持自定义心跳包和注册包数据支持上位机/AT指令/短信/透传指令配置参数支持RS232和RS485两种串行接口它可以广泛用于无线数传、电力行业、工业控制、水利行业、环保行业、农业应用、集抄系统和智能家居等诸多领域。
源码解读
打开实验的工程文件夹能够在/Drivers/BSP目录下看到ATK_IDM750C子文件夹该文件夹中就包含了ATK-IDM750C的驱动文件。 uart的文件是开发板与ATK-IDM750C通讯使用的UART驱动文件。
atk_idm750c.c 和 atk_idm750c.h 是 ATK-IDM750C 的驱动文件包含了ATK-IDM750C的初始化。
函数ATK_IDM750C_init()用于初始化ATK-IDM750C模块
//模块初始化
//baudtrateATK-IDM750C UART通讯波特率
uint8_t atk_idm750c_init(uint32_t baudrate)
{atk_idm750c_uart_init(baudrate);atk_idm750c_dtu_enter_configmode();if(atk_idm750c_at_test() ! ATK_IDM750C_EOK){return ATK_IDM750C_ERROR;}return ATK_IDM750C_EOK;
}通过UART与ATK_IDM750C模块进行通信。由于这个模块仅用到TX与RX两个引脚用作通讯因此模块不需要再配置其它引脚的高低电平只需要配置串口波特率的数值。
atk_idm750c_dtu_enter_configmode();这个函数的作用在于模块进行初始化的同时发送相应的AT指令让模块进入配置模式。
最终完成模块的初始化初始化完成后再进行相应的参数就可以进入网络透传模式实现与原子云互发消息的功能。发送的数据与接收的数据就可以通过原子云云端与使用者的上位机进行查看。
//发送AT指令
//cmd待发送的AT指令ack等待的响应timeout等待超时时间
uint8_t atk_idm750c_send_cmd_to_dtu(char *cmd,char *ack,uint32_t timeout){uint8_t *ret NULL;if(cmd ! NULL){atck_idm750c_uart_rx_restart();atk_idm750c_uart_printf(%s\r\n, cmd);}if ((ack NULL) || (timeout 0)){return ATK_IDM750C_EOK;}else{while(timeout 0){ret atk_idm750c_uart_rx_get_frame();if (ret ! NULL){if (strstr((const char *)ret, ack) ! NULL){return ATK_IDM750C_EOK;}else{atk_idm750c_uart_rx_restart();}}timeout--;delay_ms(1);}return ATK_IDM750C_ETIMEOUT;}
}这个函数为AT指令发送处理函数中通过串口获取模块接收到的一帧数据cmd作为AT指令的一个载体函数对cmd进行判断若cmd不为空则串口重新接收数据并通过串口打印输出 cmd此时 cmd 里是已经存有了相应的AT 指令。
实验测试代码
//用于与模块建立通讯并且通过执行一些AT指令对模块进行相应的配置。
void demo_run(void)
{uint8_t ret;uint8_t *buf;uint8_t key;//初始化模块ret atk_idm750c_init(115200);if(ret ! 0){printf(ATK-IDM750C init failed!\r\n);while (1){LED0_TOGGLE();delay_ms(200);}}printf(Wait for Cat1 DTU to start, wait 10s....\r\n);//AT指令测试ret atk_idm750c_at_test();//工作模式设置ret atk_idm750c_query_workmode(ATK_IDM750C_WORKMODE_NET);/* ATK-IDM750C 第一路连接使能状态ON */ret atk_idm750c_link1en(ATK_IDM750C_LINK1EN_ON);/* ATK-IDM750C 第一路连接参数 */ret atk_idm750c_link1(ATK_IDM750C_LINK1MODE_TCP,DEMO_DTU_TCP_SERVER_DOMAIN_NAME,DEMO_DTU_TCP_SERVER_PORT_NUMBER);/* ATK-IDM750C 第一路连接模式LONG */ret atk_idm750c_link1md(ATK_IDM750C_LINK1MD_LONG);/* ATK-IDM750C 第一路超时重连时间 */ret atk_idm750c_link1_timeout();/* ATK-IDM750C 第二路连接使能状态OFF */ret atk_idm750c_link2en(ATK_IDM750C_LINK2EN_OFF);/* ATK-IDM750C 第三路连接使能状态OFF */ret atk_idm750c_link3en(ATK_IDM750C_LINK3EN_OFF);/* ATK-IDM750C 第四路连接使能状态OFF */ret atk_idm750c_link4en(ATK_IDM750C_LINK4EN_OFF);/* ATK-IDM750C 启用原子云 */ret atk_idm750c_set_yuanziyun(ATK_IDM750C_SET_YUANZIYUN_ON);/* ATK-IDM750C 原子云设备编号 */ret atk_idm750c_device_num(DEMO_DTU_TCP_YUANZI_DEVICE_NUMEBER);/* ATK-IDM750C 原子云设备密码 */ret atk_idm750c_device_password(DEMO_DTU_TCP_YUANZI_DEVICE_PASSWORD);/* ATK-IDM750C 开启心跳包 */ret atk_idm750c_heartbeat_package(ATK_IDM750C_HRTEN_ON);/* ATK-IDM750C 心跳包数据 */ret atk_idm750c_heartbeat_package_data();/* ATK-IDM750C 心跳包时间间隔 */ret atk_idm750c_heartbeat_package_interval();/* ATK-IDM750C 注册包默认关闭 */ret atk_idm750c_registration_package(ATK_IDM750C_SET_REGEN_OFF);/* ATK-IDM750C 注册包数据 */ret atk_idm750c_registration_package_data();/* ATK-IDM750C 注册包发送方式 */ret atk_idm750c_registration_package_send_method();/* ATK-IDM750C 注册包数据类型 */ret atk_idm750c_registration_package_data_type();/* ATK-IDM750C 进入透传状态 */ret atk_idm750c_enter_transfermode();if(ret!0){while (1){LED0_TOGGLE();delay_ms(200);}}atk_idm750c_uart_rx_restart();while (1){key key_scan(0);if(key KEY0_PRES){/* 如果服务器格式对数据有要求请修改对应的数据格式这里只限于例程测试使用 */atk_idm750c_uart_printf(%s\r\n, DEMO_DTU_TEST_DATA);}buf atk_idm750c_uart_rx_get_frame();if (buf ! NULL){printf(%s, buf);atk_idm750c_uart_rx_restart();}LED1_TOGGLE();delay_ms(10);}
}循环里设置了一个按键操作发送信息至云端同时若云端向单片机发送信息会通过函数atk_idm750c_uart_rx_get_frame()接收信息并将信息通过buf进行存储此时判断 buf 是否为空若不为空则通过串口助手打印储存在 buf 中的内容。