skyworth74

  • 2024-10-25
  • 加入了学习《直播回放:英飞凌全新Wi-Fi6单芯片SoC助力物联网产品的快速开发》,观看 英飞凌全新Wi-Fi6单芯片SoC助力物联网产品的快速开发

  • 回复了主题帖: 【获奖名单】英飞凌全新Wi-Fi6单芯片SoC助力物联网产品的快速开发 直播

    感谢杜杜感谢eeworld提供的平台

  • 2024-07-08
  • 回复了主题帖: 【京东卡获奖名单】STM32线上技术日,探索2024重磅新品

    谢谢🍺

  • 2024-07-02
  • 加入了学习《IOT 台灯演示》,观看 Onsemi RS10 IOT 智能台灯

  • 加入了学习《得捷电子远程喂鸟器》,观看 得捷电子远程喂鸟器

  • 2024-04-30
  • 回复了主题帖: 【颁奖】【瓜分2500元红包】票选DigiKey"智造万物,快乐不停"创意大赛人气作品TOP3

    昨天通知同事前同事领红包,还是有部分没有领到

  • 2024-04-24
  • 回复了主题帖: 2023 DigiKey "智造万物,快乐不停"创意大赛颁奖啦,感谢耐心陪伴的你们!

    祝贺祝贺

  • 2024-04-02
  • 加入了学习《WIFI智能灯控演示视频》,观看 WIFI智能灯控演示视频

  • 2024-03-27
  • 回复了主题帖: 【瓜分2500元红包】票选DigiKey"智造万物,快乐不停"创意大赛人气作品TOP3!

    加油加油

  • 2024-01-08
  • 加入了学习《基于STM32MP157D-DK1的智慧家居控制器》,观看 基于STM32MP157D-DK1的智慧家居控制器

  • 2024-01-01
  • 加入了学习《GD32l23x LED渐变视频》,观看 GD32l23x LED渐变视频

  • 回复了主题帖: # 【DigiKey“智造万物,快乐不停”创意大赛】无线滴定系统 - 步进电机S曲线加速测...

    wangerxian 发表于 2023-12-31 21:16 把速度的曲线显示出来吗? 是的

  • 2023-12-30
  • 回复了主题帖: [DigiKey智造万物快乐不停创意大赛]STM32MP157D 远程宠物喂鸟器作品提交

    Jacktang辛苦了,这么晚节假日还在给大家写评论

  • 发表了主题帖: [DigiKey智造万物快乐不停创意大赛]STM32MP157D 远程宠物喂鸟器作品提交

    作品名称:STM32MP157D 远程宠物喂鸟器 作者:skyworth74 作品简介(100-200字) (设计名称、作品照片、项目用到的板卡、芯片、模块等介绍,作品功能介绍等) [DigiKey智造万物快乐不停创意大赛]STM32MP157D 远程宠物喂鸟器 家里养了一只鹦鹉,每天都早出晚归,鹦鹉的喂养就成了一个问题,于是想到网上买一个宠物喂养的设备,每天在公司也可以通过手机喂养家里的鹦鹉,后来刚好遇到得捷点搞智造万物快乐不停创意大赛于是改变了主意,决定自己DIY一个远程宠物喂鸟器,为了快速搭建平台选择了意法半导体公司的STM32MP157D-DK1开发平台,该开发平台是STM32MP157微处理器基于灵活的Arm® Cortex®-A7双核(工作频率800 MHz)和Cortex®-M4内核(工作频率209 MHz)架构,支持Linux®嵌入式开发平台。有这个平台可以快速实现创意。一块STM32MP157开发板,加上一个步进电机和步进电机驱动IC ULN2003. STM32MP157D用来实现MQTT 功能实现远程控制,步进马达用来转动把食物往储物仓的出口推送,通过重力作用往下落到宠物的碟碗上供给鹦鹉食用。 下图分别是:1、STM32MP157 开发板。 2、ULN2003步进电机驱动小板 3、废物利用做的PVC食物仓,用来盛放宠物的食物 步进马达28BYJ-48,成熟的马达 实现功能宠物投喂,自动防止阻塞功能 系统框图(图文结合) (设计思路、系统软硬件介绍及实现框图,以图文结合的展示) 工作原理: 在储物仓放上宠物的食物 系统开机运行app,mqtt_dmeo,mqtt通过网络连上iot的服务器,在iot订阅相关服务 手机或PC在发布订阅信息,mqtt_demo 收到broker解析出控制命令驱动步进电机来回转动,把食物推压到出口通过重力落入宠物的碟碗。 要实现以上功能,需要移植linux 下的mqtt发布订阅程序把接受到的json命令解析出来实现相应功能,开发步进电机驱动程序,实现步进电机的正转和反转,防堵塞功能,减低步进电机转动速度,提升步进电机的扭矩;制作食物储物箱。 三、各部分功能说明(图文结合) (各部分实现的功能说明及讲解,以图文结合的展示) 作品源码 步进电机驱动 void stepmotor_cw(unsigned char *u8step) { switch(*u8step){ case 0: gpio_ctrl('E',PE1,1); gpio_ctrl('E',PE10,0); gpio_ctrl('D',PD1,0); gpio_ctrl('G',PG3,0); *u8step =1; break; case 1: gpio_ctrl('E',PE1,0); gpio_ctrl('E',PE10,1); gpio_ctrl('D',PD1,0); gpio_ctrl('G',PG3,0); *u8step =2; break; case 2: gpio_ctrl('E',PE1,0); gpio_ctrl('E',PE10,0); gpio_ctrl('D',PD1,1); gpio_ctrl('G',PG3,0); *u8step =3; break; case 3: gpio_ctrl('E',PE1,0); gpio_ctrl('E',PE10,0); gpio_ctrl('D',PD1,0); gpio_ctrl('G',PG3,1); *u8step =0; break; default: ; } } Mqtt 订阅接收回调函数 void mqtt_data_rx_cb(void *pbuf, int len) { printf("data = %s\n", (unsigned char *)pbuf);//打印接收到的数据 mqtt_receive_process(pbuf); } Json解析 XjsonGetString(root,"msg",msgbuffer,sizeof(msgbuffer),"feed"); XjsonGetInt(root,"control",&s32control,0); XjsonGetInt(root,"length",&length,300); XjsonGetInt(root,"s32cnt",&s32cnt,4); Length用于解析步进电机的转动脚步,s32cnt 解析出步进电机来回转动的次数,s32control 表示转动方向。 (可下载的项目源码及说明,源码请上传到EEWorld下载中心,下载链接粘贴到作品文档和作品提交帖中) 源代码地址 download.eeworld.com.cn/detail/skyworth74/630434 五、作品功能演示视频 (视频简介+链接,视频链接:可上传到EEWorld大学堂,观看链接粘贴到作品文档和作品提交帖中,也可直接上传到作品帖中) 得捷电子远程喂鸟器-得捷电子远程喂鸟器-EEWORLD大学堂 六、项目总结(项目文字总结+帖子分享链接汇总)     嵌入式Linux的开发和其它RTOS的开发的一个区别是Linux可以告别重复造轮子的过程,网上有很多开源的代码可以提供,开发者更多专注在功能和创意的实现。 帖子汇总: 【DigiKey“智造万物,快乐不停”创意大赛】STM32MP157D-DK1开箱贴 - DigiKey得捷技术专区 - 电子工程世界-论坛 (eeworld.com.cn) 【DigiKey“智造万物,快乐不停”创意大赛】STM32MP157D 远程宠物喂鸟器之一MQTT移植 - DigiKey得捷技术专区 - 电子工程世界-论坛 (eeworld.com.cn) [DigiKey智造万物快乐不停创意大赛]STM32MP157D 远程宠物喂鸟器之一MQTT GPIO控制 - DigiKey得捷技术专区 - 电子工程世界-论坛 (eeworld.com.cn) [DigiKey智造万物快乐不停创意大赛]STM32MP157D 远程宠物喂鸟器之二MQTT GPIO控制 - DigiKey得捷技术专区 - 电子工程世界-论坛 (eeworld.com.cn) [DigiKey智造万物快乐不停创意大赛]STM32MP157D 远程宠物喂鸟器作品提交 - DigiKey得捷技术专区 - 电子工程世界-论坛 (eeworld.com.cn) 七、其他   作品名称   作者:skyworth74    作品简介(100-200字) (设计名称、作品照片、项目用到的板卡、芯片、模块等介绍,作品功能介绍等) [DigiKey智造万物快乐不停创意大赛]STM32MP157D 远程宠物喂鸟器 < class="p" style="">家里养了一只鹦鹉,每天都早出晚归,鹦鹉的喂养就成了一个问题,于是想到网上买一个宠物喂养的设备,每天在公司也可以通过手机喂养家里的鹦鹉,后来刚好遇到得捷点搞智造万物快乐不停创意大赛于是改变了主意,决定自己DIY一个远程宠物喂鸟器,为了快速搭建平台选择了意法半导体公司的STM32MP157D-DK1开发平台,该开发平台是STM32MP157微处理器基于灵活的Arm® Cortex®-A7双核(工作频率800 MHz)和Cortex®-M4内核(工作频率209 MHz)架构,支持Linux®嵌入式开发平台。有这个平台可以快速实现创意。一块STM32MP157开发板,加上一个步进电机和步进电机驱动IC ULN2003.   < class="p" style="">STM32MP157D用来实现MQTT 功能实现远程控制,步进马达用来转动把食物往储物仓的出口推送,通过重力作用往下落到宠物的碟碗上供给鹦鹉食用。   < class="p" style="">下图分别是:1、STM32MP157 开发板  。   < class="p" style="">2、ULN2003步进电机驱动小板   < class="p" style="">     < class="p" style="">3、废物利用做的PVC食物仓,用来盛放宠物的食物   < class="p" style="">     步进马达28BYJ-48,成熟的马达 < class="p" style="">     < class="p" style="">实现功能宠物投喂,自动防止阻塞功能   系统框图(图文结合) (设计思路、系统软硬件介绍及实现框图,以图文结合的展示) 工作原理: 在储物仓放上宠物的食物 系统开机运行app,mqtt_dmeo,mqtt通过网络连上iot的服务器,在iot订阅相关服务 手机或PC在发布订阅信息,mqtt_demo 收到broker解析出控制命令驱动步进电机来回转动,把食物推压到出口通过重力落入宠物的碟碗。 要实现以上功能,需要移植linux 下的mqtt发布订阅程序把接受到的json命令解析出来实现相应功能,开发步进电机驱动程序,实现步进电机的正转和反转,防堵塞功能,减低步进电机转动速度,提升步进电机的扭矩;制作食物储物箱。     三、各部分功能说明(图文结合) (各部分实现的功能说明及讲解,以图文结合的展示) 作品源码 步进电机驱动 void stepmotor_cw(unsigned char *u8step) {     switch(*u8step){         case 0:         gpio_ctrl('E',PE1,1);                gpio_ctrl('E',PE10,0);                gpio_ctrl('D',PD1,0);                 gpio_ctrl('G',PG3,0);                 *u8step =1;         break;         case 1:         gpio_ctrl('E',PE1,0);            gpio_ctrl('E',PE10,1);                 gpio_ctrl('D',PD1,0);                 gpio_ctrl('G',PG3,0);               *u8step =2;         break;         case 2:         gpio_ctrl('E',PE1,0);            gpio_ctrl('E',PE10,0);                gpio_ctrl('D',PD1,1);           gpio_ctrl('G',PG3,0);              *u8step =3;         break;         case 3:         gpio_ctrl('E',PE1,0);         gpio_ctrl('E',PE10,0);                gpio_ctrl('D',PD1,0);                gpio_ctrl('G',PG3,1);               *u8step =0;              break;         default:         ;         } } Mqtt 订阅接收回调函数 void mqtt_data_rx_cb(void *pbuf, int len) {     printf("data = %s\n", (unsigned char *)pbuf); //打印接收到的数据     mqtt_receive_process(pbuf); } Json解析     XjsonGetString(root,"msg",msgbuffer,sizeof(msgbuffer),"feed");     XjsonGetInt(root,"control",&s32control,0);     XjsonGetInt(root,"length",&length,300); XjsonGetInt(root,"s32cnt",&s32cnt,4); Length用于解析步进电机的转动脚步,s32cnt 解析出步进电机来回转动的次数,s32control 表示转动方向。 (可下载的项目源码及说明,源码请上传到EEWorld下载中心,下载链接粘贴到作品文档和作品提交帖中) 源代码地址 download.eeworld.com.cn/detail/skyworth74/630434 五、作品功能演示视频 (视频简介+链接,视频链接:可上传到EEWorld大学堂,观看链接粘贴到作品文档和作品提交帖中,也可直接上传到作品帖中) 得捷电子远程喂鸟器-得捷电子远程喂鸟器-EEWORLD大学堂 六、项目总结(项目文字总结+帖子分享链接汇总) 嵌入式Linux的开发和其它RTOS的开发的一个区别是Linux可以告别重复造轮子的过程,网上有很多开源的代码可以提供,开发者更多专注在功能和创意的实现。 帖子汇总: 【DigiKey“智造万物,快乐不停”创意大赛】STM32MP157D-DK1开箱贴 - DigiKey得捷技术专区 - 电子工程世界-论坛 (eeworld.com.cn) 【DigiKey“智造万物,快乐不停”创意大赛】STM32MP157D 远程宠物喂鸟器之一MQTT移植 - DigiKey得捷技术专区 - 电子工程世界-论坛 (eeworld.com.cn) [DigiKey智造万物快乐不停创意大赛]STM32MP157D 远程宠物喂鸟器之一MQTT GPIO控制 - DigiKey得捷技术专区 - 电子工程世界-论坛 (eeworld.com.cn) [DigiKey智造万物快乐不停创意大赛]STM32MP157D 远程宠物喂鸟器之二MQTT GPIO控制 - DigiKey得捷技术专区 - 电子工程世界-论坛 (eeworld.com.cn)   七、其他            

  • 上传了资料: mqtt移植和json,马达控制 智能远程喂鸟器

  • 2023-12-27
  • 回复了主题帖: # 【DigiKey“智造万物,快乐不停”创意大赛】无线滴定系统 - 步进电机S曲线加速测...

    以前我们做打印机也是做S曲线加速的,还编了一个加速曲线生成软件自动生成

  • 发表了主题帖: [DigiKey智造万物快乐不停创意大赛]STM32MP157D 远程宠物喂鸟器之二MQTT GPIO控制

    上一篇介绍了linux的GPIO控制是用libgpiod 里面的测试工具gpioset 实现GPIO控制的,用这个命令控制是通过调用system命令实现的,如果要控制步进马达转动,则会出现系统调用 不能马上执行,导致步进马达失步等等问题,所以我们需要用libgpiod的库实现自己的gpio控制。需要从https://git.kernel.org/pub/scm/libs/libgpiod/libgpiod.git/ 下载libgpiod开源代码, 然后更加自己需要把libgpiod的代码移植到STM32MP157上,我们利用cmake 工具来构建系统 建立一个CMakeList.txt 文件 cmake_minimum_required(VERSION 3.10.2) set(CSRC main.c tools-common.c lib/chip.c lib/chip-info.c lib/edge-event.c lib/info-event.c lib/internal.c lib/line-config.c lib/line-info.c lib/line-request.c lib/line-settings.c lib/misc.c lib/request-config.c ) set(libpath "lib/") set(libs "lib/uapi") set(libs1 "include/") #add_subdirectory(misc) set(EXTRA_LIBS pthread)#设置库名 include_directories(${libpath}) include_directories(${libs}) include_directories(${libs1}) LINK_LIBRARIES(m) add_executable(gpiod ${CSRC})#生产可执行文件 target_link_libraries(gpiod ${EXTRA_LIBS})#链接库文件 target_include_directories(gpiod PRIVATE ${libpath})#设置头文件 然后执行cmake .. 后执行make命令就可以构建一个libgpiod的调试工具    

  • 2023-12-17
  • 发表了主题帖: [DigiKey智造万物快乐不停创意大赛]STM32MP157D 远程宠物喂鸟器之一MQTT GPIO控制

    STM32MP157D-DK跑的是linux系统,要实现远程喂鸟,上一篇已经介绍了MQTT的移植,实现了远程通过MQTT发送数据给STM32MP157D,在这基础上还需要控制GPIO, linux 控制GPIO需要知道每一个GPIO的引脚编号,linux 从4.8 开始不再推荐sysf接口来控制GPIO,而是使用libgpio库,在用户态下使用字符设备控制gpio,同时还提供了一些工具来给用户调试gpio,如gpiodetect 列出系统上存在的所有gpiochip 、 gpiofind   通过名称找到对应的gpiochip 和行内偏移量, gpioget  读取指定gpio line 的值、   gpioinfo 列出所有gpiochip的line 和他们的名称、使用者和方向活动状态和其它信息、   gpiomon   等待指定gpio line上的事件或指定监视的事件、  gpioset设置指定gpio line的值。     STM32MP157D-DK1开发板的GPIOA14 接了一颗黄色LED指示灯,可以通过gpioset 命令实现控制GPIO14 的高低输出,,如gpioset gpiochip0 14=0或gpioset gpiochip0 14=0控制GPIO输出高电平点亮黄色led灯, 通过这个可以封装一个GPIOA14的控制接口函数, void gpioA14_ctrl(unsigned char u8level) {      unsigned char cmdbuf[255];      memset(cmdbuf,0,sizeof(cmdbuf));      snprintf(cmdbuf,sizeof(255),"gpioset gpiochip0 14=%d",u8level);     printf("cmdbuf %s\r\n",cmdbuf);      system(cmdbuf); } 定义一个线程处理MQTT数据实现控制 void * mqtt_process(void *parg) {     unsigned u8cmd=0;      //parse json data      switch(u8cmd){      case LED_ON:      gpioA14_ctrl(0);      break;      case LED_OFF:       gpioA14_ctrl(1);      break;     default:     ;     }     }

  • 2023-12-15
  • 发表了主题帖: 【DigiKey“智造万物,快乐不停”创意大赛】STM32MP157D 远程宠物喂鸟器之一MQTT移植

    以前用STM32 的的MCU跑的都是freertos,所有的网络,MQTT等都需要自行移植,比如8720A以太网,lwtcp/ip等等,自从有了STM32MP157后,这些都不是问题,网络已经是现成的,TCP/IP协议栈都包含在linux 的驱动和kernel里面,用户更多的的是集中在功能的开发,远程宠物投喂自然少不了MQTT,MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的“轻量级”通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布。使用MQTT可以把更多的精力投入到功能实现,不用操心通讯协议,直接使用MQTT 和json可以方便实现协议的解析。 下面是MQTT协议的移植通过百度后在简书上找了一份MQTT的示例: linux c MQTT客户端实现 - 简书 (jianshu.com) 把代码下载下来后,把代码放到ubuntu里面编译后显示成功后,准备把代码加到STM32MP157DK的环境下编译,结果在STM32MP157DK下用使用Makefile编译失败,为了编译快速实现示例验证,遂决定用cmake来构建代码编译系统,CMAKE既有简单易学,容易入门的特点 cmake_minimum_required(VERSION 3.10.2) set(CSRC main.c mqtt.c MQTTClient.c MQTTLinux.c MQTTPacket/MQTTConnectClient.c MQTTPacket/MQTTConnectServer.c MQTTPacket/MQTTDeserializePublish.c MQTTPacket/MQTTFormat.c MQTTPacket/MQTTPacket.c MQTTPacket/MQTTSerializePublish.c MQTTPacket/MQTTSubscribeClient.c MQTTPacket/MQTTSubscribeServer.c MQTTPacket/MQTTUnsubscribeClient.c MQTTPacket/MQTTUnsubscribeServer.c ) set(libpath "MQTTPacket/") set(libs "MQTTPacket/") #add_subdirectory(misc) set(EXTRA_LIBS pthread)#设置库名 include_directories(${libpath}) include_directories(${libs}) LINK_LIBRARIES(m) LINK_LIBRARIES(pthread) add_executable(mqtt_demo ${CSRC})#生产可执行文件 target_link_libraries(mqtt_demo ${EXTRA_LIBS})#链接库文件 target_include_directories(mqtt_demo  PRIVATE ${libpath})#设置头文件 通过这份CMakelists.txt 很快就把示例编译出来了,   然后用命令scp mqtt_demo  root@192.168.3.25:/usr/local ,把mqtt_demo拷贝到STM32MP157D-DK开发板上 可以看到开发板上有收到json格式的数据data={ “msg":"hello", "contrl":"1" } 通过json就可以把数据解析出来实习控制

  • 2023-12-01
  • 回复了主题帖: 【DigiKey“智造万物,快乐不停”创意大赛】基于STM32MP157D频谱分析开箱贴

    秦天qintian0303 发表于 2023-11-11 07:20 这个开发板没有屏啊,应该来一个带屏幕的,会减少好多麻烦 用hdmi做显示

最近访客

< 1/2 >

统计信息

已有24人来访过

  • 芯积分:108
  • 好友:--
  • 主题:17
  • 回复:28

留言

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


现在还没有留言