z3512641347

  • 2019-12-16
  • 发表了主题帖: STM32CubeIDE导入机智云在线自动生成的STM32工程(基于MDK环境

    最近在尝试基于机智云的STM32设备接入物联网云平台,使用的开发板是淘宝上购买的STM32最小系统评估版(基于STM32F103C8T6)。机智云可以根据设备、数据点的设置自动生成一个STM32工程简化开发,这个方式很棒,可以节省很多时间,(即机智云自助开发平台的MCU代码自动生成功能)然而,糟糕的是,ST更新其官方开发IDE为STM32CubeIDE。   STM32CubeIDE是把Attolic的TrueStudio(基于Eclipse)和ST的芯片配置软件CubeMX打包在一起提供的免费开发IDE,之前是分别独立提供,还需要用户自己将二者集成。STM32CubeIDE是2019年新推出的,而机智云生成的示例代码是基于CubeMX和ARM MDK开发环境,其中CubeMX的代码库基于F103_Firmware_v1.6(CubeIDE是v1.8)。因此,只需要做几点小改动,就能成功导入机智云开发平台自动生成的MCU代码包,为己所用了。   IDE的不同引入了一些问题,具体如下:   1、生成代码的CubeMX文件(.ioc文件)无法在CubeIDE中直接打开,报错信息如下 Invalid Input: Must be project’s active .ioc file.Project’s ‘MCU_STM32F103C8x_source’ active one is ‘MCU_STM32F103C8x_source.ioc’ file 这是因为ioc文件名(STM32F103C8x.ioc)与工程文件名(MCU_STM32F103C8x_source)不一致,修改两者中其一保持一致后此问题消失。   2、然后后新的问题出现了,CubeMX器件视图里一篇空白,正常应该显示芯片管脚图,如下所示 进一步查看报错信息,如下所示 具体错误信息如下 Unable to create partInvalid Input: Must be project’s active .ioc file.com.st.stm32cube.ide.mcu.ide/META-INF/version/build_ref file not found, build reference will not be reported into properties 经过尝试,此问题是由于CubeIDE使用了高版本的CubeMX,而机智云生成的工程基于老版本的CubeMX文件,所以无法打开。解决方法如下 在ST官网上下载最新版本的CubeMX软件(单独的CubeMX) 用CubeMX单独打开.ioc文件,此时可以看到器件能够正常显示 无需更改任何芯片配置,直接在CubeMX中选择Save保存.ioc文件 此时用CubeIDE就可以打开.ioc文件   我猜测,CubeIDE由于刚刚推出,集成的CubeMX和独立安装的CubeMX还是有所差别,导致对老版本的ioc文件兼容性并不好,后续应该会随着软件升级解决,当前只能通过以上的方式修复ioc文件(其实是将其升级到最新版本的格式)后再用CubeIDE集成的CubeMX打开。   3、MDK工程的文件组织结构与TrueStudio的不同,编译时出现大量错误。 此问题我还没有找到很好的解决办法,只能采用最笨的方式,新建一个CubeIDE工程,手动移植过去。后续如果有更好的办法,我会更新在文章的后面。   至此,整个的工程移植就完成了

  • 2019-12-03
  • 发表了主题帖: GoKit案例:机智云iot开发平台的宠物屋改空气质量检测仪

    一块GoKit3 我知道如何开发一款智能宠物屋 但是 如何改造成一款空气质量检测仪呢 其实,很简单 只需在万能的淘宝买一块 MQ135空气质量检测传感器 再改改电路 就能实现啦   今天带大家来玩转如何如何实现宠物屋(包含红外遮挡,温湿度,全彩灯,电机)及空气质量检测(包含有害气体浓度和空气质量)的开发全过程。 在开发之前,先将物料准备好吧 硬件准备:GoKit3功能板、ESP8266、MQ135、USB数据线、排线 软件准备:机智云自助开发平台账号、ESP8266 IDE、EClipse   物料准备好后,进入开发阶段之前,你还需要确认电路设备如何连接、相关的开发文档有哪些? 关于MQ135,你需要知道它的扩展外接电路,USB供电5V,经过二极管之后实际电压就是4.93V左右,根据电阻分压将传感器电压分压到0-1V(10位ADC对应0-1024)。根据MQ135传感器手册,我们对分压后的电压的参数对应空气质量划分如下: 优:0-200 良:201-400 中:401-600 差:601-1024 相关开发文档:扫码可获取 GoKit3原理图、GoKit3功能板(扩展板)原理图 第一阶段:创建云端产品 接下来,正式进入本案例开发第一阶段:创建云端产品 即IoT开发初始阶段,为后期的MCU和APP开发等奠定基础的阶段 在云端 dev.gizwits.com 创建一个新的产品: 创建产品过后点击左侧数据点,依次点击管理,选择产品数据点模板 选择Gokit demo,然后点击添加 导入了demo数据点之后我们需要再创建如下两个数据点 到此我们数据点就创建好了,创建好记得点击最上面的应用,才会生效,接下来我们点击左侧基本信息,复制里面的Product Secret内容,然后在 点击左侧MCU开发,按照1234生成SOC代码。生成号代码之后下载到电脑之后解压。 第二阶段:驱动相关代码移植及注意事项 在网址页面下载相关驱动:https://download.gizwits.com/zh-cn/p/92/94 或者打开以下网址下载: http://gizwits.oss.aliyuncs.com/hardware_resource/GoKit_SoC_ESP8266_V03000003测试固件及开发资源2017072815.zip 代码部分已省略,具体见原文链接 http://club.gizwits.com/thread-165501-1-1.html 注意事项: 下载好软件之后一定要注意,先解压,将解压过后软件复制到非中文路径下,不能包含中文,如果有中文需要修改成纯英文。否则软件不可用。 选择根目录下面的Makefile,修改编译相关的信息。修改成下面的,自己动手打,别在这儿复制代码,到时候编码不一样会报错就只能重新解压再导入项目才能解决。以后所介绍到的所有代码都只能手动打,不能复制。 第三阶段:代码修改 接下来我们要进行代码的修改:在代码中添加相应的函数调用。 代码部分已省略,具体见原文链接 http://club.gizwits.com/thread-165501-1-1.html 第四阶段:将程序烧写(下载)至8266 首先GOKIT3把key拔到GND,接好旁边的串口线先接到USB转TTL(TX-RX RX-TXGND-GND),然后把USB接手机充电器。打开下载软件(下载地址https://www.espressif.com/sites/default/files/tools/flash_download_tools_v3.6.7.zip) 将软件参数设置如下,选择编译好的固件(对应的地址别填写错了) 点击START开始下载,如果一直卡在等待说明你key1没有拔到GND那一边,拔过去复位按键(reset)按一下,下载成功如图所示。 接下来,把GND拔回来到key。然后按复位,程序就开始运行了。 打开机智云APP(在应用商店搜索“机智云”即可下载),短按一下开发板上面的中间一个按键(红灯亮),点击手机APP右上角加号,选择热点配置,在跳出页面选择你家里面路由器wifi,输入wifi密码之后下一步,选择乐鑫,再点击我已完成上述步骤,点一下发现设备里面的设备,即可开始配网,如果没有设备,检查开发板红灯是否点亮。没问题的话过一会儿就是绑定成功点进去就可以开始是用你的新设备了 至此,所有步骤完成,宠物屋也具有空气质量检测的功能啦。 怎么样,是不是很简单呀     此内容由EEWORLD论坛网友z3512641347原创,如需转载或用于商业用途需征得作者同意并注明出处

  • 2019-09-16
  • 发表了主题帖: 新唐方案分享:基于NUC472开发板的物联网开发,接入机智云

    【新唐方案分享】基于NUC472开发板的机智云功能板控制   在NUC472开发板上配有Arduino接口,若以该接口与机智云的功能板相配合,则可以有效地拓展该开发板的功能。就目前来讲,对机智云功能板提供支持的核心底板有两种,一种是基于STM32F103的,另一种则是基于ATMEGA328的。以NUC472开发板来支持机智云功能板则可以增加一种对其进行支持的核心底板。   就机智云功能板来说,它提供了RGB_LED、小电机、红外感应器、小按键、温湿度传感器、WIFI模块及OLED接口等,如图1所示。这里仅对RGB_LED、小电机、红外感应、小按键及OLED接口的使用加以介绍。 此外,配合片内的RTC、UART、A/D等资源,还实现了RTC电子时钟、串行通讯及A/D采集等功能。 图1 机智云功能板   要对机智云功能板进行编程,主要涉及各引脚的关系构建、GPIO口输入/输出功能的设置及高低电平输出语句的定义、输入电平的读取与判别、脉冲信号与时序的模拟等。 为了便于理解,这里按由简单到复杂的顺序来进行。 1.小电机 功能板上提供了一个小直流电机,其接口电路如图2所示。它是通过L9110进行驱动,当在IA和IB两端施加相异的电平时,就可控制电机的正反转。 图2  电机电路   电机与NUC472的连接关系为: IA-PC11       IB-PC10   小电机的初始化函数为: 1.void MODER_init(void) 2.{ 3.    GPIO_SetMode(PC, BIT11, GPIO_MODE_OUTPUT);  //  IA 4.    GPIO_SetMode(PC, BIT10, GPIO_MODE_OUTPUT);  //  IB 5.    PC10 = 0; 6.    PC11 = 0; 7.}   使用如下高低电平输出语句即可使电机转动,互换高低电平即可实现反向转动。         PC11 = 1;      //输出高电平   PC10 = 0;        //输出低电平   2.小按键 利用板载的小按键,可进行相应功能的控制,其电路如图3所示。 图3  按键电路 按键与NUC472的连接关系为: KEY1- PA10    KEY2- PA9 按键的初始化函数为: 1.void KEY_init(void) 2.{     // K1、K2 3.  GPIO_SetMode(PA, BIT10, GPIO_MODE_INPUT);   //  KEY1 4.  GPIO_SetMode(PA, BIT9, GPIO_MODE_INPUT);    //  KEY2 }   K2键控制电机转动的语句如下: PC10 = 0; if (PA9 != 1)    //  K2 {      PC10 = 1;   //  MODOR } else {      PC10 = 0; }   3.红外感应 板载的红外感应器是用于避障控制的,其电路如图4所示。 图4  红外感应电路   电路的作用作用为:在TCRT5000的一端是一个可发出红外光的二极管,另一端是一个接受器。在无遮挡的情况下,受到照射使电路导通并在AOUT端输出低电平。在LM393的电路中,其作用是充当一个AOUT与电位器设定电位的比较器,以产生阀值开关的效果。当IR_OUT为低电平时,LED2被点亮,否则被熄灭。通过采集IR_OUT的状态即可启动感应开关的作用。 IR_OUT与NUC472的连接关系为: IR_OUT - PF9   IR_OUT的初始化函数为: void IR_init(void)   {         GPIO_SetMode(PF, BIT9, GPIO_MODE_INPUT);    //  IR-OUT   }   以IR控制电机正反转的语句如下:          if (PF9 != 1)           {                PC11 = 1;                PC10 = 0;           }           else           {                PC11 = 0;                PC10 = 1;           }   4.RGB_LED     通常RGB_LED的使用是无需**驱动电路的,故使用起来十分简单,只需输出高低电平即可控制其点亮与否。然而在机智云的功能板上却是以P9813来驱动和控制RGB_LED,其接口电路如图5所示。 图5  RGB_LED接口电路   那使用P9813又有何特别之处呢?其主要用途在于,可以串行方式来传送控制信号,并起到控制RGB亮度的作用。而通常情况下,这是需要通过PWM来实现的。在信号传送过程中,是通过32个脉冲信号来把控制数据传递到P9813中,再由RGB引脚加以输出来控制RGB_LED。 P9813与NUC472的连接关系为: A0-PE1         SCL- PD10    SDA-PD12 RGB_LED的初始化函数为: 1.void RGB_init(void) 2.{ 3.  GPIO_SetMode(PD, BIT12, GPIO_MODE_OUTPUT);  //  SDA 4.  GPIO_SetMode(PD, BIT10, GPIO_MODE_OUTPUT);  //  SCL 5.  GPIO_SetMode(PE, BIT1, GPIO_MODE_OUTPUT);   //  A0 6.  PE1 = 0; 7.}   RGB_LED的控制函数如下: 1.void RGB_Write_Data(uint8_t R,uint8_t G,uint8_t B) 2.{ 3.  uint32_t RGB_Data = 0; 4.  uint8_t i; 5.  RGB_Data |= 0xC0000000; 6.  RGB_Data |= ((uint32_t)((~B) & 0xc0)) << 22; 7.  RGB_Data |= ((uint32_t)((~G) & 0xc0)) << 20; 8.  RGB_Data |= ((uint32_t)((~R) & 0xc0)) << 18; 9.  RGB_Data |= ((uint32_t)B) << 16; 10.  RGB_Data |= ((uint32_t)G) << 8; 11.  RGB_Data |= R; 12.  for (i=0;i<32;i++) 13.  { 14.       if((RGB_Data & 0x80000000) != 0) 15.       { 16.         SDA_1; 17.       } 18.       else 19.       { 20.         SDA_0; 21.        } 22.       RGB_Data <<= 1; 23.        SCL_0; 24.        SCL_0; 25.        SCL_1; 26.        SCL_1; 27.   } 28.   SDA_0; 29.   for (i=0;i<32;i++) 30.   { 31.           SCL_0; 32.           SCL_0; 33.          SCL_1; 34.          SCL_1; 35.   } 36.} [color=rgb(51, 102, 153) !important]复制代码 实现呼吸灯的程序为:      uint8_t i=0;       RGB_init();       PE1 = 1;       RGB_Write_Data(0x00,0x00,0x00);       for (i=0;i<125;i++)       {            RGB_Write_Data(0x00,0x00,i);            delay_1ms(20);       }       for (i=125;i>0;i--)       {             RGB_Write_Data(0x00,0x00,i);             delay_1ms(20);       }       for (i=0;i<125;i++)       {             RGB_Write_Data(0x00,0x00,i);             delay_1ms(20);       }       for (i=125;i>0;i--)       {             RGB_Write_Data(0x00,0x00,i);             delay_1ms(20);       } [color=rgb(51, 102, 153) !important]复制代码 实现色彩环的程序如下: while(1) {         RGB_Write_Data(120,0x00,0x00);         RGB_del(5);         RGB_Write_Data(0x00,120,0x00);         RGB_del(5);         RGB_Write_Data(0x00,0x00,120);         RGB_del(5);         RGB_Write_Data(120,120,0x00);         RGB_del(5);         RGB_Write_Data(0x00,120,120);         RGB_del(5);         RGB_Write_Data(120,0x00,120);         RGB_del(5);         RGB_Write_Data(120,120,120);         RGB_del(5);         RGB_Write_Data(0x00,0x00,0x00);         RGB_del(5); } [color=rgb(51, 102, 153) !important]复制代码   RGB_LED的显示效果如图6所示。 图6  RGB_LED显示效果   使用红外感应器作为感应提示器的语句如下: if (PF9 != 1)      // IR {        RGB_Write_Data(120,0x00,0x00); } else {        RGB_Write_Data(0x00,120,0x00); } [color=rgb(51, 102, 153) !important]复制代码 实现感应提示的效果如图7所示。 图7  未遮挡状态   5.OLED接口     在功能板上提供了OLED接口,该接口适用于SPI接口的演示屏,其引脚分配如图8所示。由于LCD5110屏使用的十分广泛,故这里以该接口实现LCD5110屏的显示。由于两者的接口并不完全一致,因此需要稍加修改,具体的做法是将GND与NC引脚连接,来为LCD5110的SCE引脚提供片选信号。其它引脚只需修改引脚定义即可。 图8 OLED接口   LCD5110屏与NUC472的连接关系为: CS---GND RST---PD2 D/C---PD0 SDIN--PD3 SCLK--PD6 LED+--PD7 LCD5110各引脚输出高低电平的定义语句如下:   #define  SetLCD_RST_High()          PD2 = 1; #define  SetLCD_RST_Low()           PD2 = 0; #define  SetLCD_DC_High()           PD0 = 1; #define  SetLCD_DC_Low()            PD0 = 0; #define  SetLCD_SDIN_High()         PD3 = 1; #define  SetLCD_SDIN_Low()          PD3 = 0; #define  SetLCD_SCLK_High()         PD6 = 1; #define  SetLCD_SCLK_Low()          PD6 = 0; LCD5110的引脚配置函数如下: 1.void GPIO_Configuration(void) 2.{ 3.    GPIO_SetMode(PD, BIT0, GPIO_MODE_OUTPUT); 4.    GPIO_SetMode(PD, BIT2, GPIO_MODE_OUTPUT); 5.    GPIO_SetMode(PD, BIT3, GPIO_MODE_OUTPUT); 6.    GPIO_SetMode(PD, BIT6, GPIO_MODE_OUTPUT); 7.    GPIO_SetMode(PD, BIT7, GPIO_MODE_OUTPUT); 8. } [color=rgb(51, 102, 153) !important]复制代码 初始化函数为: 1.void LCD_init(void) 2.{ 3.    SetLCD_RST_Low(); 4.    delay_1us(); 5.    SetLCD_RST_High(); 6.    delay_1us(); 7.    delay_1us(); 8.    LCD_write_CMD(0x21); 9.    LCD_write_CMD(0xc0); 10.    LCD_write_CMD(0x06); 11.    LCD_write_CMD(0x13); 12.    LCD_write_CMD(0x20); 13.    LCD_Clear(); 14.    LCD_write_CMD(0x0c); 15.} [color=rgb(51, 102, 153) !important]复制代码 主函数为: 1.int main(void) 2.{ 3.    GPIO_Configuration(); 4.    PD7 = 1; 5.    LCD_Init(); 6.    LCD_Clear(); 7.    LCD_write_english_string(2,0,"NUC472 +"); 8.    LCD_write_hanzi(2,3,6); 9.    LCD_write_hanzi(14,3,7); 10.    LCD_write_hanzi(26,3,8); 11.    LCD_write_hanzi(38,3,9); 12.    LCD_write_hanzi(50,3,10); 13.    LCD_write_hanzi(62,3,11); } [color=rgb(51, 102, 153) !important]复制代码 其它驱动LCD110屏显示的函数基本无需变化,运行后的显示效果如图9所示。 图9  LCD5110屏显示效果   鉴于NUC472的资料相对较少,这里仅以机智云功能板的应用为题对NUC472开发板的应用进行了一些探索,相对来讲NUC472使用起来还是比较易于上手的。

  • 2019-09-05
  • 发表了主题帖: 评测:STM32F769I-DISCO接入机智云,实现IoT开发远程控制等功能

    评测:STM32F769I-DISCO接入机智云,实现IoT开发远程控制等功能   摘要:本文主要讲述如何使用STM32F769I-DISCO接入机智云,实现智能设备开发的过程。适合IoT爱好者、高校学生等入门参考。   [ 一、概览 ] 对于一个物联网应用,远程监控设备状态、远程更新设备固件都是其要包含的典型基本功能。在竞争激烈的第三方IoT云服务平台的今天,我选择了机智云,入门快、稳定......还有就是我用的很熟悉了。   接下来,我将利用机智云,打造了基于STM32F769I-DISCO物联平台,实现以下功能: 控制RGB LED的颜色(红、绿、蓝); 自带3种混合色,黄色、紫色、粉色,一键切换所需颜色; 控制F769DISCO板卡的两颗LED的亮灭; 显示STM32F769I-DISCO板载STM32F769NIH6芯片的温度; 今天的主题是评测,所以OTA固件升级等功能,这次先不讲了,等后续更新。   [ 二、硬件介绍 ] 需要的硬件: 一块STM32F769I-DISCO开发板,一根micro USB线 一块GoKit扩展版,里面含ESP8266、传感器等模块 使用WIFI无线连接时:一个WIFI热点 一台可以上网的电脑 STM32F769I-DISCO是STM32家族最新款ARM Cortex-M7开发板,基于STM32F769NIH6超高性能MCU,带双精度FPU及CHROM-ART加速器。 主要参数- 216 MHz / 462 DMIP 128MBSDRAM, 512MB Quad-SPI Flash 4"TFT LCD触摸屏,带MIPI-DSI接口   Gokit扩展板采用ArduinoUNO接口,板载esp8266-12F WiFi模块、温湿度传感器DHT11、2个按键、障碍物红外检测模块、微型直流电机、RGB 5050全彩LED。   此外,还需了解一下GAgent,它是设备数据、机智云、应用端(APP)的数据交互桥梁。可将GAgent移植到WiFi模组、GPRS模组、PC端等。目前机智云提供由机智云移植的WiFi模组对应固件有:汉枫LPB100、乐鑫8266、汉枫LPT120、高通4004、RealTek 8711AM 、庆科3162等。简单的说就是,WiFi模块里面烧录了一个叫GAgent的固件,然后这个WiFi模块对用户的MCU就是串口透传了,复杂的协议、交互都给封装了。     [ 三、云端配置 ] 我们在机智云自助开发平台创建一个名为F769DISCOGizwits的产品,添加和RGB LED控制、板载LED控制的数据点,数据点是设备产品的功能的抽象,用于描述产品功能及其参数。(创建产品等信息之前列举过太多,傻瓜式开发过程,自学都能学会,可以自行在机智云自助开发平台体验dev.gizwits.com)   创建数据点后,设备与云端通讯的数据格式即可确定,设备、机智云可以相互识别设备与机智云互联互通的数据。因为我们手机APP的功能需求是: 单独控制RGB LED的颜色(红、绿、蓝); 自带3种混合色,黄色、紫色、粉色,保证能一键切换所需颜色; 控制F769DISCO板卡的两颗LED的亮灭; 显示STM32F769I-DISCO板载STM32F769NIH6芯片的温度(通过芯片内置sensor获取); 把以上进行抽象,依次为数值量下发控制、枚举量下发控制、开关量下发控制、数值量上报。所以建立如下数据点:   四、MCU端编程   在云端创建产品,建立好数据点后,即可自动生成STM32F103C8T6基于STD标准库函数的Keil工程,还可以下载自动生成的手机APP或者进行在线虚拟调试:       工程文件组织目录如下: 这个工程只是一个框架,用户需要添加自己的驱动代码和业务逻辑,以本例来说就是我们需要实现RGBLED的驱动,板卡LED的驱动,串口中断接收和发送,定时器1ms中断,以及收到手机APP发的指令后干什么,软件逻辑如下:   由于F7是不支持STD标准库的,况且生成的工程MCU型号是STM32F103C8T6的,所以我们只需简单的移植一下,通过此图知道要把任意MCU通过WIFI模块连上机智云,只需实现3个简单的接口函数:串口发送、中断接收1字节数据,定时器1ms中断,超级简单有木有哇!   如上图根据STM32F769I-DISCO和机智云Gokit扩展板原理图,确定了引脚分配。我们先用STM32CubeMX生成STM32F769NIH6的基于HAL库函数的工程,配置方法参见附件STM32CubeMX生成配置报表PDF,再把和机智云服务器交互的串口协议(蓝框)拷贝过来,再写2个用户驱动(红框)即可。  

最近访客

< 1/2 >

统计信息

已有13人来访过

  • 芯币:109
  • 好友:--
  • 主题:26
  • 回复:5
  • 课时:--
  • 资源:--

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言