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:
;
}
}
远程跟鸟可以实现AI聊天吗?加个视频,声音,这可以扩展到老年人交流,可能更加好。