- 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做显示