[其他相关] [DigiKey智造万物快乐不停创意大赛]STM32MP157D 远程宠物喂鸟器之一MQTT GPIO控制

skyworth74   2023-12-17 15:56 楼主

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:

    ;

    }    

}

回复评论 (2)

远程跟鸟可以实现AI聊天吗?加个视频,声音,这可以扩展到老年人交流,可能更加好。

点赞  2023-12-18 07:32

贴个关于这部分的控制电路,或上个效果视频感觉更完美

点赞  2023-12-18 07:34
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复