[DigiKey智造万物快乐不停创意大赛]STM32MP157D 远程宠物喂鸟器作品提交
[复制链接]
作品名称:STM32MP157D 远程宠物喂鸟器
- 作品简介(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大学堂,观看链接粘贴到作品文档和作品提交帖中,也可直接上传到作品帖中)
六、项目总结(项目文字总结+帖子分享链接汇总)
嵌入式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="">
< 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可以告别重复造轮子的过程,网上有很多开源的代码可以提供,开发者更多专注在功能和创意的实现。
帖子汇总:
七、其他
|