tag 标签: OneOS

相关博文
  • 2025-5-7 11:57
    0 个评论
    4月22日,飞凌嵌入式“2025嵌入式及边缘AI技术论坛”在深圳成功举办。中移物联网有限公司(以下简称“中移物联”)携OneOS操作系统与飞凌嵌入式共同推出的工业级核心板亮相会议展区, 操作系统产品部高级专家严镭受邀作《OneOS工业操作系统——助力国产化智能制造》主题演讲 。 中移物联高级专家严镭演讲 中移物联自研的OneOS操作系统,以高实时、高安全、高可靠为核心优势。此次与飞凌嵌入式强强联手,推出多款搭载OneOS操作系统的工业控制核心板,旨在为国产工业自动化行业提供全新的解决方案。 中移物联OneOS操作系统展台 在国产化浪潮的全新机遇下,中移物联OneOS始终坚持自主创新,率先通过了IEC 61508 SIL3、ISO 26262 及 CCRC EAL4+ 等权威认证,系统内核自主度100%,实时性业内领先。 同时,为满足产业应用需求,OneOS自主研发了软PLC方案——在实时内核的基础之上,结合了符合IEC61131-3标准的工业运行时、工业总线等能力,并已适配各类工业芯片,以标准化的核心能力,有效缩短开发交付周期。此次携手飞凌嵌入式,双方深度合作更进一步实现了软硬件的协同优化,打造出具备行业领先优势的工控核心板。 总线丰富,应用广泛 OneOS工业软PLC方案已适配多种主流工业总线协议,包括Modbus RTU、Modbus TCP、CANopen、EtherCAT、Profinet等,可应用到工业控制、机器人、工程机械、能源电力等场景。 实时高效,稳定可靠 OneOS工业软PLC方案与稳定的工业核心板硬件协同优化,实现了整个软硬一体方案的高实时性能,A55@1.8GHz(基于FET3568J-C核心板)下实现125μs控制周期和15μs以内抖动的优异性能。 部署多样,屏蔽差异 OneOS工业软PLC方案原生具备操作系统混合部署方案(AMP或虚拟化方式),OneOS工业软PLC只占用SoC部分资源,其他用于部署openEuler、Linux等其他系统,方便客户进行复杂应用开发,屏蔽软硬件差异。 目前,飞凌嵌入式已有FET3568-C、FET1052-C和FET1061-S共3款核心板产品完成了与中移物联OneOS工业软PLC方案的优化适配 ,共同联合为智能制造、工程机械、能源电力、无人系统等领域的设备厂商提供从硬件到软件的全方位支持。 未来,双方将进一步携手共进,在国产化浪潮与产业智改数转的趋势下,为产业谱写全新篇章。
  • 2021-12-3 15:47
    0 个评论
    OneOS成功入选2021年世界互联网领先科技成果手册!
    本文分享自世界互联网大会微信公众号: 2021年世界互联网大会《科技之魅》收录成果之中国移动OneOS物联网操作系统 。 OneOS是中国移动针对物联网领域推出的轻量级操作系统,具有可裁剪、跨平台、低功耗、高安全等特点,能够有效提高开发效率并降低开发成本,帮助用户开发稳定可靠、安全易用的物联网应用。 成果名称:中国移动OneOS物联网操作系统 成果单位:中移物联网有限公司 操作系统是信息产业的基础,也是物联网产业竞争的核心。物联网操作系统打通硬件和软件的通路,在实现功能之上更有保障安全和可靠性的重要价值。 OneOS是中国移动针对物联网领域推出的轻量级操作系统,具有可裁剪、跨平台、低功耗、高安全等特点,支持ARM Cortex-M/R/A、MIPS、RISC-V等主流CPU架构,兼容POSIX、CMSIS等标准接口,支持MicroPython等高级语言开发,提供图形化开发工具,能够有效提高开发效率并降低开发成本,帮助用户开发稳定可靠、安全易用的物联网应用。OneOS总体架构采用分层式设计,主体由驱动、内核、组件、安全框架组成。采用一个轻量级内核加多个系统组件的模式,加上超过800款市场主流MCU芯片及其他硬件的适配支持,使OneOS具备极高的市场拓展空间。 OneOS在安全性、NB网络、端云一体以及5G消息方面具有行业领先优势: 全面的安全设计:针对物联网设备资源受限、海量连接、网络异构等特点,参考等保2.0及《GB/T 36951-2018 信息安全技术物联网感知终端应用安全技术要求》等规范,在系统安全、通信安全、数据安全等方面提供多维度安全防护能力。OneOS拥有整体的安全框架,端到云整体安全设计。终端侧基于可信根构建安全能力,实现安全启动、安全升级、认证加密等功能,提供轻量级密码算法库,支持国密SM2/3/4算法;提供(D)TLS-1.3通信协议组件,保障传输安全;多种安全云服务,满足设备身份认证、数据加密等安全需求。其中高可靠高安全方面,在取得PSA Level1双认证的基础上,持续向行业关键认证进军,目前EAL 4+认证,国密一级认证,IEC 61508认证已经进入认证受理阶段 ,预计2021年内取得认证。 基于NB-IoT网络的智能表计行业能力: OneOS基于NB网络的技术积累,联合表计行业龙头企业,在多传感器数据融合、边缘计算能力、物联网安全应用、深度低功耗定制等方向深度合作,打造智能表计标杆应用。其中首个生态应用产品山东科德KD-NBIoT型智能水表已累计出货突破10万台。 端云一体赋能智能家居行业能力: OneOS联合OneNET开放平台,在端侧通过底层协议、中间件等技术解耦软硬件,实现智能家居设备的统一管理,为上层应用开发提供基础平台;在云侧原生接入OneNET物联云,结合无感配网、互联互通等能力,构建“软件定义家庭”的新型智能家居市场入口,推动家庭业务多元升级。 5G消息组件能力: OneOS通过提供5G消息组件和云端配置平台,让厂商能够免开发快速将设备智能化。通过5G消息组件,可对设备进行配网、控制等一系列操作,并提供直达、便捷、大容量、内容丰富的视频化富媒体信息服务,赋能多行业智能设备厂商。 操作系统是技术基础设施的重要组成部分,在降低企业创新风险、激励企业加大创新投入中发挥着重要作用,为行业技术升级提供坚实的基础保障。目前,OneOS操作系统已与市场主流芯片厂商如意法半导体、恩智浦、兆易创新等达成战略合作,并在智能表计、智能家居、智能穿戴、智能工控等领域推出更加适宜行业需求的解决方案,并联合以上行业的头部企业如海尔、共同探索行业标准,共同推进技术创新实现行业赋能。 编辑 | 赵哲楠 来源 | 世界互联网大会官网 阅读原文 OneOS已通过IEC 61508认证 OneOS官网: https://os.iot.10086.cn/
  • 热度 25
    2021-11-29 17:00
    2917 次阅读|
    0 个评论
    OneOS 定位功能测评+开发详解
    本文分享自中移OneOS微信公众号《定位功能测评+开发详解》。 本期严同学为了给大家展现 OnePos定位服务能力 复现地铁轨迹线路 坐了大半天的地铁 老辛苦了 这期视频大家一定要看看喔 点此跳转展示视频 想要一比一复原开发流程的小伙伴 可以看下面的讲解 绝对的干货 手把手教学(包会) 学不会找我哦 点此跳转讲解视频 演示视频流程 OnePos定位平台简介 OnePos位置服务平台是一套为搭载OneOS的智能硬件设备提供端对云/云对云服务的高精度定位平台,可选择多种定位方式,同时支持WiFi/基站/惯性导航/GNSS解析等辅助定位手段。目前所有服务完全免费,企业用户可根据需求申请大额度的免费商用服务。 详细了解参考开发者文档:OnePos定位-总体介绍 OnePos位置平台接入 OnePos位置平台创建设备的步骤包括以下几点: 1. OneOS官网注册账号 2. 登录OnePos平台 3. 进入产品管理 4. 创建产品 5. 创建设备(记录设备ID与设备Key) 6. 接入测试 详细的操作说明文档参考开发者文档:OnePos定位-端对云部分进行学习。 OneOS定位应用开发 环境准备 目前OneOS代码已经开源,开发者可以前往OneOS仓库或者 OneOS官网进行下载。 OneOS-Cube是OneOS操作系统基于命令行的开发工具,提供系统配置、项目编译构造、包贡献下载等功能。OneOS-Cube工具的下载及使用说明可以查阅 OneOS-Cube环境搭建进行学习。 工程配置 OnePos定位服务依赖的组件包括:MQTT组件、cJSON组件、Molink组件; 使用图形化工具menuconfig.bat进行工程配置: 1. MQTT组件 OnePos组件与OnePos平台通信通过MQTT协议进行,开发者可以通过OneOS Cube中的menuconfig图形化界面工具的将MQTT组件集成到自己的应用中,MQTT组件的配置如下: 详细请查阅MQTT参考文档进行了解 2. cJSON组件 OnePos组件与OnePos平台交互数据采用JSON格式封装,OneOS操作系统通过cJSON组件提供JSON格式数据创建和解析的能力,cJSON组件的配置如下: 详细说明请访问cJSON进行学习 3. Molink组件 OnePos服务原理是利用周围的网络环境数据进行定位的,网络环境数据的获取以及与平台通信的能力是由Molink提供的;本文以CAT1模组ML302和WIFI模组esp8266为例进行网络数据的获取与通信。 Molink的详细使用方法请参考MolinkAPI 4. OnePos组件 OnePos定位组件需要配合OnePos位置服务平台使用,可以对使用OneOS操作系统的开发者提供基础定位能力; 目前服务支持的能力有:Wi-Fi定位、基站定位、卫星定位。 注意:在配置OnePos服务的设备密钥时需要将定位平台分配的设备Key进行MD5(32位小写加密),然后将加密后的配置为OnePos组件的密钥;OnePos组件详细使用方法请参考OnePos定位端侧文档。 完成上述MQTT、cJSON及Molink组件的配置后,在OneOS-Cube工具中使用命令scons --ide=mdk5更新MDK工程设置。 系统成功运行! 应用示例 编写如下示例的定位应用代码进行OnePos定位服务的试用。 源文件:main.c 1. #include 2. #include 3. #include 4. #include 5. #include 6. #include 7. #include 8. 9. #include 10. 11. #ifdef OS_USING_ST7789VW 12. #include "cmcclogo.h" 13. #include "oneposimage.h" 14. #include "st7789vw.h" 15. 16. #define CMCC_LCD_TIME_ROW_SP 65 17. #define CMCC_LCD_TIME_ROW_H 50 18. #define CMCC_LCD_TIME_LCOLUMN_SP 65 19. #define CMCC_LCD_TIME_RCOLUMN_SP 110 20. 21. #define SHOW_COLOR_RED 0xFA27 22. #define SHOW_COLOR_GREEN 0x1546 23. #define SHOW_COLOR_YELLOW 0xFD20 24. 25. static void oneos_lcd_show_startup_page(void) 26. { 27. /* show CMCC logo */ 28. lcd_show_image(20, 50, 200, 61, gImage_cmcc); 29. lcd_show_image(20, 150, 200, 52, gImage_oneos); 30. } 31. 32. static void oneos_lcd_show_position(void *arg) 33. { 34. char *str = OS_NULL; 35. char time_get_now = {0,}; 36. time_t now = {0,}; 37. os_int32_t j = 0; 38. static char lat_show = {0,}; 39. static char lon_show = {0,}; 40. static onepos_pos_t pos_data = {0,}; 41. 42. lcd_clear(BLACK); 43. lcd_show_image(0, 0, 240, 240, gImage_onepos); 44. 45. while(1) 46. { 47. /* Get position */ 48. onepos_get_latest_position(&pos_data); 49. 50. /* Get time */ 51. now = time(OS_NULL); 52. str = ctime(&now); 53. 54. snprintf(lat_show, 24, "%f", pos_data.lat_coordinate); 55. snprintf(lon_show, 24, "%f", pos_data.lon_coordinate);\ 56. 57. for(j = 11; j < 19; j++) 58. { 59. time_get_now = str ; 60. } 61. time_get_now = '\0'; 62. 63. lcd_set_color(SHOW_COLOR_RED, BLACK); 64. lcd_show_string(CMCC_LCD_TIME_LCOLUMN_SP + 30, CMCC_LCD_TIME_ROW_SP + CMCC_LCD_TIME_ROW_H * 0 + 3, 24, time_get_now); 65. lcd_set_color(SHOW_COLOR_GREEN, BLACK); 66. lcd_show_string(CMCC_LCD_TIME_LCOLUMN_SP + 30, CMCC_LCD_TIME_ROW_SP + CMCC_LCD_TIME_ROW_H * 1 + 15, 24, lat_show); 67. lcd_set_color(SHOW_COLOR_YELLOW, BLACK); 68. lcd_show_string(CMCC_LCD_TIME_LCOLUMN_SP + 30, CMCC_LCD_TIME_ROW_SP + CMCC_LCD_TIME_ROW_H * 2 + 30, 24, lon_show); 69. 70. os_task_mdelay(50); 71. } 72. } 73. #endif 74. 75. /* defined the LED0 pin: PD12 */ 76. #define LED0_PIN GET_PIN(D, 12) 77. 78. int main(void) 79. { 80. os_uint32_t count = 0; 81. os_task_t *lcd_show_task = OS_NULL; 82. 83. os_kprintf("Enter main function, here is the onepos code!\n"); 84. 85. #ifdef OS_USING_ST7789VW 86. oneos_lcd_show_startup_page(); 87. os_task_mdelay(500); 88. #endif 89. 90. #ifdef PKG_USING_NTP 91. /* wait ntp sync */ 92. extern time_t ntp_sync_to_rtc(const char *host_name); 93. ntp_sync_to_rtc(OS_NULL); 94. os_task_mdelay(500); 95. #endif 96. 97. count = 1; 98. /* set LED0 pin mode to output */ 99. os_pin_mode(LED0_PIN, PIN_MODE_OUTPUT); 100. 101. /* start onepos sever and wait once position */ 102. while(ONEPOS_CLOSING == onepos_get_server_sta()) 103. { 104. onepos_start_server(); 105. os_task_mdelay(5000); 106. } 107. /* creat lcd show task */ 108. lcd_show_task = os_task_create("lcd_show", oneos_lcd_show_position, 109. OS_NULL, 110. 2048, OS_TASK_PRIORITY_MAX / 2 - 4, 50); 111. 112. if (lcd_show_task != OS_NULL) 113. { 114. os_task_startup(lcd_show_task); 115. } 116. 117. while (count++) 118. { 119. os_pin_write(LED0_PIN, PIN_HIGH); 120. os_task_mdelay(400); 121. os_pin_write(LED0_PIN, PIN_LOW); 122. os_task_mdelay(400); 123. } 124. 125. return OS_EOK; 126. } 头文件:oneposimage.h 百度网盘: 【https://pan.baidu.com/s/1ZYIirm7aA4qbFyHYB2_yWw】 【提取码:ppad】 在演示视频中直接用以上演示程序替换基础工程中的main.c; 由于演示功能包含实时时间显示的功能,需要使用NTP服务进行时间同步; 所以再配置一次工程:开启ntp服务; 然后编译与烧录程序; 在OnePOS平台查询设备的位置信息: OneOS: OneOS是中国移动针对物联网领域推出的轻量级操作系统,具有可裁剪、跨平台、低功耗、高安全等特点,支持ARM Cortex-M/R/A、MIPS、RISC-V等主流CPU架构,兼容POSIX、CMSIS等标准接口,支持Micropython语言开发,提供图形化开发工具,能够有效提高开发效率并降低开发成本,帮助客户开发稳定可靠、安全易用的物联网应用。 官网地址:https://os.iot.10086.cn/
  • 热度 17
    2021-11-25 14:38
    2384 次阅读|
    0 个评论
    本文分享自中移OneOS微信公众号《 应用MoLink框架快速实现网络连接 》,作者:柏灵。 MoLink简介 1.1 MoLink是什么 Molink即ModuleLinkKit (模组连接套件)。MoLink是一整套针对嵌入式模组开发套件。MoLink提供了模组多实例管理、模组功能适配并向开发者提供统一易用的API(应用程序接口)。 同时,OneOS OpenCPU模组方案完全兼容Molink API接口,通过统一的API接口实现MCU+模组和模组OpenCPU方案间应用代码 的无缝迁移。 1.2 传统嵌入式模组适配开发难点及不便 1)需要关注到具体的指令收发和解析并参与管理: · 模组适配工作量大 · 调试复杂维护不便 2)不同厂商、型号间AT指令集存在差异: · 切换不同模组周期长,工作量大 · 优化升级十分困难 1.3 MoLink对嵌入式模组适配开发的帮助 管理方便:提供统一的模组管理,支持多模组多线程。 开发简单:接口简明易用,专注业务功能开发。 上手即用:适配主流模组,免除繁杂适配工作。 功能丰富:适配云平台连接等复杂功能。 快速切换:统一应用程序接口,模组一键切换。 提供套接字编程接口(部分)。 框架及能力介绍 2.1 MoLink框架介绍 MoLink框架从上至下分为4层,分别为: 1)抽象接口层:提供通用控制、网络服务、网络连接、套接字、Wi-Fi管理等多种接口的定义及高层实现 2)核心层:提供Molink模组对象定义、模组实例的管理及其他关键部分实现 3)模组适配层:提供各种型号通信模组的抽象接口层各种接口的适配函数实 4)AT 解析器:可选模块,MCU架构下的模组适配通过AT解析器接管串口等设备并与与通信模组进行AT指令通信 2.1 MoLink能力介绍 MoLink代码结构目录如下: MoLink拥有以下能力: 1)实例的管理功能,包括创建、获取、删除等功能; 2)通用控制功能,包括获取IMEI号码,获取ICCID号码等功能; 3)网络服务功能,包括附着、注网、获取信号质量等功能; 4)TCP/IP,包括基础的TCP/UDP连接的创建、连接、发送、接受、断开连接等功能; 5)Soker套接字功能,基于TCP/IP相关接口的基础,封装套接字接口,向上可由net/socket组件开启并支持标准BSD socker接口; 6)调试功能,包括ifconfig、ping等操作。 应用MoLink快速实现网络连接 3.1前期准备 硬件支持 本次开发使用的是正点原子潘多拉开发板,采用超低功耗高性能的主控制器 STM32L475,板载1.3寸 TFT显示屏,集成STLink,多样化的扩展接口使其可连接多种模块如蓝牙、Lora、GPS等,硬件资源丰富。 模组选择的是ML302,ML302 是中国移动最新推出的 LTE Cat.1 模块。ML302 支持 TD- LTE/FDD- LTE 通信制式,具有丰富的 Internet 协议、行业标准接口和功能,支持 Windows、Linux 和 Android 驱动。 本实验中,潘多拉开发板的UART2和ML302的AT串口通过杜邦线相连(选杜邦线的原因真的是因为方便哈,并不是因为穷, 虽然小编确实很穷 ≥﹏≤)。 软件获取 OneOS是中国移动针对物联网领域推出的轻量级操作系统,具有可裁剪、跨平台、低功耗、高安全等特点,支持ARM Cortex-M/R/A、MIPS、RISC-V等主流CPU架构,兼容POSIX、CMSIS等标准接口,支持Micropython语言开发,提供图形化开发工具,能够有效提高开发效率并降低开发成本,帮助客户开发稳定可靠、安全易用的物联网应用。小伙伴们可以通过码云下载代码体验。链接如下: CMCC-OneOS OneOS-Cube 3.2配置与编译 OneOS-Cube配置 MoLink 组件相对独立,在使用时,只需要在menuconfig中开启Molink组件即可。在Components → Network → Molink→ Modules中,选择4G CAT1 Modules 中的ML302模组。 (Top) → Components → Network → Molink → Enable IoT modules support → Modules → 4G CAT1 Modules Su→ ML302 → ML302 ConfigConfig Enable ML302 Module Object Auto Create -*- Enable ML302 Module General Operates -*- Enable ML302 Module Network Service Operates Enable ML302 Module Ping Operates Enable ML302 Module Ifconfig Operates Enable ML302 Module Network TCP/IP Operates Enable ML302 Module BSD Socket Operates 我们看到,进入ML302 Module选项后,第一个就是自动创建模组选项;在一般情况下,选择自动创建模组,配置好串口号,波特率,最大AT命令接收长度选项; Enable ML302 Module Object Auto Create (uart2) ML302 Interface Device Name (115200) ML302 Interface Device Rate (512) The maximum length of AT command data accepted 可是,也晓得有的小伙伴就是不想自动创建模组,要自己动手,丰衣足食,那么直接撸代码,创建一个模组对象。 首先,我们要调用 os_device_find() 函数,找到对应的串口,然后再配置波特率、最大AT命令接收长度选项等选项,最后调用 mo_create() 来创建模组。 test_device = os_device_find("uart2"); if (OS_NULL == test_device) { LOG_E(ATEST_TAG,"Can not find interface device uart2uart2!"); } uart_config.baud_rate = 115200; os_device_control(test_device, OS_DEVICE_CTRL_CONFIG, &uart_config); parser_config.parser_name = "ml302"; parser_config.parser_device = test_device; parser_config.recv_buff_len = 512; os_device_control(test_device, OS_DEVICE_CTRL_CONFIG, &uart_config); if (OS_NULL == test_module) { test_module = mo_create(ModulesPara.ModuleName,ModulesPara.Type, &parser_config); } 同时,打开Molink 目录下的Tools,里面有我们调试的小工具,有ifconfig 、ping、socket stat等功能,后面有用到哦。 (Top) → Components → Network → Molink → Enable IoT modules support → Tools Enable AT module network debug functions Enable molink ifconfig features Enable molink ping features (50) The maximum times of molink ping cmd config Enable molink socket stat feature 编译与下载 进入 projects\stm32l475-atk-pandora 目录,打开OneOS-Cube命令行,执行命令 scons --ide=mdk5 生成并更新keil项目工程文件,双击 project.uvprojx ,打开MDK工程,点击左上角的 Build 按钮,等待编译完成。当看到 0 Error(s), 0 Warning(s) 的输出时说明编译完成。 确保潘多拉开发板已和电脑相连接。此时点击左上角的 Download 按钮,将程序下载到开发板中。但看到 Programming Done. Flash Load finished 则表明程序已经烧写成功。 这时,小伙伴们就可以使用Molink组件的功能啦。我们可以直接在自己的应用程序中调用接口,也可以使用我们提供的shell命令。 3.3 MoLink快速联网 入网检测 当程序下载成功后,把程序跑起来;通过串口助手连接潘多拉的调试串口,可以发现了Molink的第一个特点:屏蔽底层模组,在创建模组对象后自动驻网。 I/ml302: Module ml302 network is registered I/ml302: Auto create ml302 module object success! 所以,不管你是自动 创建模组对象,还是手动创建,都是创建时自动驻网,就不需要你对着模组AT手册一步一步的发送AT指令去驻网了,是不是很棒呢? 当然,我们要确定模组是不是真的驻网成功,还可以通过小工具校验,这就是我们上面选择tools的小工具哦。可以通过ifconfig,查看模组是否获取到本地IP,还可以查看信号强度,模组IMEI等信息。 ifconfig LIST AT MODULE INFORMATION -------------------------------------------------------------------------------- Module Name : ml302 IMEI Number : 863293057223775 ICCID Number : 898604640119C1755639 Signal Quality : rssi(28), ber(99) IPv4 Address : 10.112.250.233 -------------------------------------------------------------------------------- ping的功能也很好用哦,是查看网络畅通与否的最佳小助手。 ping www.baidu.com Ping statistics for 183.232.231.172 : Packets: Sent = 4, Received = 4, Lost = 0, Mintime = 73 ms, Maxtime = 145 ms, Avgtime = 104 ms 快速连网 入网成功后,要开始连网。这里也有两种选择,调用Molink的原生接口,或者走socket接口。如果要走socket接口,注意在Module选项里勾选BSD socket相关选项哦。 如果调用Molink的原生接口,首先调用 mo_netconn_create() 创建连接对象,接着调用 mo_netconn_connecte() 与对应的IP和端口建立连接,此时连网完成。验证一下发送和接受功能,调用 mo_netconn_send() 发送数据,再调用 mo_netconn_recv() 接受数据,两相比较,发送数据和接受数据一致,通过验证,该网络链路可以正常使用,快速连网完成。 (PS:为了方便验证,此次我们测试的IP端口是接收什么消息就回复相同消息,小伙伴们可以作参考哦) test_netconn = mo_netconn_create(test_module, NETCONN_TYPE_UDP); tp_assert_not_null(test_netconn); os_err_t result = mo_netconn_connect(test_module, test_netconn, server_addr, TEST_SERVER_TCP_PORT); tp_assert_true(OS_EOK == result); os_size_t sent_size = mo_netconn_send(test_module, test_netconn, TEST_MSG, strlen(TEST_MSG)); 0); result = mo_netconn_recv(test_module, test_netconn, &data_ptr, &data_size, OS_WAIT_FOREVER); tp_assert_true(OS_EOK == result); tp_assert_true(data_size == strlen(TEST_MSG)); 如果使用socket接口,首先调用 mo_socket() 创建socket,接着调用 mo_connecte() 与对应的IP和端口建立连接,并且调用 mo_setsockopt() 接口设置接收超时时间,此时连网完成。 测试代码与上面代码相同,只是发送和接受函数略有变化,小伙伴可以自行研究其中的奥秘哦。 struct sockaddr_in addr = {0}; addr.sin_family = AF_INET; addr.sin_port = htons(TEST_TCP_PORT); h_addr); memset(&(addr.sin_zero), 0, sizeof(addr.sin_zero)); int socket_id = mo_socket(test_module, AF_INET, SOCK_STREAM, 0); = 0); os_int32_t result = mo_connect(test_module, socket_id, (struct sockaddr *)&addr, sizeof(struct sockaddr)); tp_assert_true(0 == result); result = mo_setsockopt(test_module, socket_id, SOL_SOCKET, SO_RCVTIMEO, &recv_time, sizeof(recv_time)); sent_size = mo_send(test_module, socket_id, TEST_MSG, strlen(TEST_MSG), 0); 0); recv_size = mo_recv(test_module, socket_id, recv_buff, strlen(TEST_MSG), 0); 0); 常见问题 Q): 如果模组创建后驻网失败怎么办? A): 模组创建时候会主动驻网,但如果因为网络环境较差,或者其他原因没有驻网成功,可以使用以下步骤进行重新驻网哦。其中test_module是创建的模组对象,cid是你打算激活的第几路id,一般默认为1。 tp_assert_true(OS_EOK == ret); tp_assert_true(OS_EOK == ret); ret = mo_set_attach(test_module, 1); tp_assert_true(OS_EOK == ret); ret = mo_set_cgact(test_module, cid, 1); tp_assert_true(OS_EOK == ret); Q): Molink传输速率如何? A): Molink的传输速率主要和两个因素有关。第一个是串口波特率,一般串口波特率默认为9600,或者115200,所以导致在高速4G网络传输情况下,因为串口速率满足不了而导致丢失数据;第二就是模 组本身特性,如NB模组本身就是应对低速率的环境,高速速率传输问题较大。 Q): 是否适配或者计划适配5G模 组? A): 5G模组适配已经纳入规划。因为目前Molink走 的都是串口通信,5G网络的高速率无法通过串口实现;目前正在计划使用USB做AT通信,小伙伴们请拭目以待哦。 Q):Molink 默认配置下存在数据丢失 情况? A): 在OneOS操作系统中串口缓存区的大 小默认为64bytes,如果使用Molink组件则建议将串口缓冲区调大(建议调为2048)。 Serial Enable serial drivers (2048) Set RX buffer size Serial 更多关于MoLink的介绍,可以去 OneOS学院 查看哦!
  • 热度 19
    2021-11-22 15:08
    2823 次阅读|
    0 个评论
    OneOS文字转语言组件实操 | 当万耦遇上chaoTTS
    本文分享自中移OneOS微信公众号 《当万耦遇上chaoTTS》 ,作者:柏灵。 大家好,柏灵又又又来啦!!相信大家已经开始在寒冷的冬季种植鲜嫩的豌豆尖,火锅里烫上豌豆尖,从此打工人有了豌豆尖自由!(还没有种植的小伙伴,可以通过OneOS 基于端云融合能力 | “种植环境监测器”技术细节学习哦)小伙伴们真是棒棒哒。打工人,打工魂,打工才是人上人,吃饱喝足走一波,吃着火锅唱着歌。作为自嗨型灵魂歌手,柏灵拿出了真正的实力,chaoTTS! chaoTTS是个啥? chaoTTS组件 提供了丰富的文字转语音功能。执行逻辑是:通过httpclient组件把文字发送到云上AI,使用云上AI的语音合成功能,生成音频文件,并下载到模组,使用音频驱动播放。 chaoTTS组件 向用户层提供简洁易用的操作接口,实现了以下功能,方便用户使用组件相关功能。 • 接入云上AI功能 • 在线文字转语音功能 • 支持设置人声、语速、音调、音量、cuid值 • 支持设置下载的文件格式功能(默认为wav格式) • 提供了相应的shell命令和at指令,方便用户使用 前期准备 2.1 硬件支持 本次开发使用万耦创世L475开发板,它的主频最高80MHz,1024K FLASH ,128K SRAM。主要的外设资源,如各类接口,各类传感器等,都位于底板上。除了开发板之外,还需准备J-Link用于下载运行,以及准备一张SD card和一个耳机。 详情可参见OneOS官网对 万耦开发板 的详细介绍。 2.2 软件获取 OneOS是中国移动针对物联网领域推出的轻量级操作系统,具有可裁剪、跨平台、低功耗、高安全等特点,支持ARM Cortex-M/R/A、MIPS、RISC-V等主流CPU架构,兼容POSIX、CMSIS等标准接口,支持Micropython语言开发,提供图形化开发工具,能够有效提高开发效率并降低开发成本,帮助客户开发稳定可靠、安全易用的物联网应用。小伙伴们可以通过码云下载代码体验。链接如下: CMCC-OneOS OneOS-Cube 配置开发 3.1 OneOS-Cube配置 chaoTTS 组件依赖于云上AI、httpclient组件、OpenCC组件,以及audio驱动。因此,需要做以下准备: • menuconfig中开启httpclient组件、OpenCC组件和chaoTTS组件 • 这里以百度AI为例,用户注册 百度AI开发平台 ,并创建其语音识别应用 • 硬件支持音频播放,另外准备一张SD card,以及一个耳机 • 支持文件系统,支持创建、读、写、删除文件操作 使用menuconfig,开启httpclient组件、开启文件系统组件、OpenCC组件和chaoTTS组件。 Httpclient Enable Httpclient TLS encrypt Enable HTTPCLIENT sample (5000) HTTP SET RECV TIMEOUT MS Using working directory (2) The max number of mounted file system (2) The max number of file system type (16) The max number of opened files Enable JFFS2 Enable FatFs ... Enable tts aivoice Enable tts aivoice sample (/tts.wav) the tts audio file name (500) tts text max length (1024) tts buf and file size openCC Enable Character Conversion Function Enable sample chaoTTS的网络连接支持有线连接和无线连接两种方式。这里以WiFi模组ESP8266为例,配置如下: Enable ESP8266 module object auto create (uart1) ESP8266 interface device name (115200) ESP8266 interface device name (3000) The maximum length of AT command data accepted Enable ESP8266 module auto connect ... 3.2 注册百度AI 这里以百度AI平台为例。注册百度AI开发平台,创建语音识别应用。只需 三步 ,即可完成语音合成接口的调用,让您的应用“开口说话”。具体方法可参见 语音合成 。目的是为了获取到 API KEY 以及 Secret KEY ,用于接口调用连接百度AI平台。 编译、下载、运行 进入projects\stm32l475-cmcc-oneos目录,打开OneOS-Cube命令行,执行命令scons --ide=mdk5生成并更新keil项目工程文件,双击project.uvprojx,打开MDK工程,点击左上角的 Build 按钮,等待编译完成。当看到0 Error(s), 0 Warning(s)的输出时说明编译完成。 确保jlink已和万耦开发板,以及电脑相连接。此时点击左上角的 Download 按钮,将程序下载到开发板中。但看到Programming Done. Flash Load finished则表明程序已经烧写成功。 这时,小伙伴们就可以使用chaoTTS组件的功能啦。我们可以直接在自己的应用程序中调用接口,也可以使用我们提供的shell命令。 4.1 shell命令使用 联网:使用ifconfig查看是否网络连接成功 初始化:tts_aivoice_init tA5BrPmeq5xekai4dfy4bWKs nAXS4j14zKnRFArmRiGLnCQz2E8TyVmS 文字转语音:tts_aivoice_player 太冷了,在家种豌豆尖烫火锅撒 设置人声:tts_aivoice_per 4 演示视频: 点击跳转 注意 :tts_aivoice_init后面跟的是自己在百度AI获取到的 API KEY 以及 Secret KEY 。因为录制的是耳机声音,可能会比较小,需要小伙伴们调大音量。 常见问题 Q): 为何使用shell命令无法使用chaoTTS组件功能? A): 如果需要在shell下使用ttsAiVoice组件功能,请调大shell任务的栈大小,可以在shell下通过task命令查看shell的栈最大使用率来进行调节。 Q): 为何输入文本太长,获取到的音频只有前面的一部分? A): 如果chaoTTS组件配置中,配置的tts文本长度不够,会出现该情况。请使用menuconfig调大以上值。 Q): 为何总是无法使用chaoTTS组件功能? A): 请确认已开启网络功能,且已联网成功。 Q): 为何获取到的音频有杂音? A): 在有线网络或者模组本身播放音频,不应出现此情况。如果是MCU外接wifi模组或者4G模组,因为要使用molink组件,所以请调大AT命令接收数据buffer的最大长度。可以通过打开DLOG日志,查看AT命令接收数据buffer长度是否不够。 也需考虑,是否内存空间不足,可以使用mem命令查看。请保留 10k以上 的RAM空间给chaoTTS使用。 最后,通信模组通过串口发送给系统的数据将会首先缓存在串口数据缓冲区中,因此,如果串口缓冲区大小设置过小则会导致Molink无法正确的接收通信模组发送的数据,造成AT指令执行超时或数据接收不全等问题。在OneOS操作系统中串口缓存区的大小默认为64bytes,如果使用Molink组件则建议将串口缓冲区调大。 Serial Enable serial drivers (1024) Set RX buffer size (64) Set TX buffer size References 万耦开发板: https://os.iot.10086.cn/doc/hardware_support/oneos_dev_board.html CMCC-OneOS : https://gitee.com/cmcc-oneos OneOS-Cube : https://os.iot.10086.cn/download/ 百度AI开发平台: https://ai.baidu.com/ 语音合成: https://ai.baidu.com/ai-doc/SPEECH/jk38y8gno
相关资源
  • 所需E币: 5
    时间: 2021-8-10 18:36
    大小: 5.4MB
    上传者: Rain管理
    经过最近几年的积累,中国移动已经形成了以物联网中台为核心的“云-管-边-端”的布局。在端侧能提供芯片、通讯模组、行业终端以及实时操作系统;网络侧不仅支持4G、5G等蜂窝接入能力,也有蓝牙、WiFi等专项能力;在云侧则具备打造三大云平台的能力。OneOS系统,是一款遵循MISRAC设计的实时操作系统。据悉,该系统具有分层架构,由内核、驱动和组件形成的,具备极高的安全性和伸缩性,用户能够根据行业特点、应用需求,来裁减和灵活的配置。OneOS系统支持跨芯片平台、互联互通、端云融合,能很好的满足万物互联时代应用的需求。