完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
9.演示Station M2 号称超强娱乐·极客主机,拥有无限玩法,那就当个电视盒子,或者就跑个Ubuntu多系统啥的,还不够极客。 经过简单摸索,操控GPIO点灯成功,下面实例讲解。 一、无头主机: 首先,请参考我的上一篇文章,把Station M2打造开发人员专用最强便携小主机:https://bbs.elecfans.com/jishu_2226141_1_1.html 当然,不这样也可以,只是这样感觉比较方便比较酷。 二、拆机: 然后,参考李工的 https://bbs.elecfans.com/jishu_2222549_1_1.html ,把 Station M2 给拆了。 对,就是拆了,不拆了,怎么叫极客!!!实际上是,不拆,我们怎么用主板上的接口啊:) 拆完后,别的也不要了,我们就要这个主板就好了。 主板正面: 主板背面: 虽然我是直接硬猜的,但是建议新手,一定要仔细看李工的帖子,细心点,别把WiFi天线或者其他的给拽断了。拆完的壳子啊,螺丝啊,也别像我一样不要了,保存好。 三、认识接口: 既然要控制GPIO点灯,我偏方就要知道,板子上的GPIO在哪里: 就在板子正面的这个位置,从右往左数,一共有30个针脚,上单下双。 不过,这些针脚,不是所有的都能被我们使用的,因为有的针脚已经安排了特定的功能,有的针脚是复用的(有其他作用,也可以被用作GPIO控制)。 我们再看看板子背面: 从对应的小字,我们可以看到,这些针脚,都被安排了不同的功能。 他们具体对应的功能,如下图所示: 在上面的接口定义中,标注了GPIO的,才能用作GPIO口,如GPIO4_C4。 四、接线: 因为这个实例,使用了一颗三色LED,需要三个GPIO口,所以我们选用的GPIO口如下: 10号:GPIO4_C4,将对应三色LED红色,R 19号:GPIO4_C5,将对应三色LED绿色,G 20号:GPIO4_C6,将对应三色LED蓝色,B 三色LED具体如下: 实际的接线如下: 注意,主板上面的针脚接口,使用的是2.0间距的接口。 我们通常用的2.54间距的接口,可能会比较松。 在这个案例中,我们使用的是三色LED,所以用了三个GPIO接口。 如果你用的是单色LED,那么只用一个接口即可。 关于GPIO控制和定义的官方文档,可以查看: https://wiki.t-firefly.com/zh_CN/ROC-RK3566-PC/driver_gpio.html 五、GPIO基础控制: 在官方的例子里面,要使用C语言编程,这,这,这太复杂了。 做为极客,我们要用python语言编程控制点灯。 在使用python语言编程控制之前,我们先来个最简单的,用shell脚本控制。 用shell脚本控制也能控制GPIO点灯? 没说错吧? 对,没错,用shell脚本也能控制GPIO,极客就是这么玩的。 在Linux系统下,一切外部设备,都可以通过sysfs接口操作。 而GPIO接口,被系统定义为了/sys/class/gpio/,所有可以操作的GPIO口,都在这个下面。 在实际使用前,我们有一点需要计算一下。 上面的GPIO4_C4,只是一个标识,并不是最终我们可以操控的GPIO端口号。 这里有一个计算过程: ROC-RK3566-PC 有 5 组 GPIO bank:GPIO0~GPIO4,每组又以 A0~A7, B0~B7, C0~C7, D0~D7 作为编号区分,常用以下公式计算引脚:
我们分解GPIO4_C4: GPIO:标识GPIO接口 4:表示第4 bank位的接口,我们记为bank=4 C:表示上述bank下的C组,通常为ABCD,分别对应:A-0,B-1,C-2,D-3,我们记为group=2 4:表示该group下的第4个接口,我们记为X=4 那么,根据前面的公示:
也就是说,我们实际要操作的GPIO端口号,是148号端口。 现在,我们试一试,看看到底管用不管用。 首先,我们通过系统菜单,打开xterm,在shell中操作后续的shell指令。 然后,要激活和设置148号GPIO端口,然后写入1输出高电平
如果我们前面已经连接好了LED到正确的端口,那么此时,你就会看到,LED被点亮。 如果是三色LED,那么红色将被点亮。 再写入0输出低电平:
三色LED的红色将会熄灭。 上面的操作步骤,就是将148号GPIO端口设置为输出模式,然后通过写入1或者0,来点亮或者熄灭LED。 使用同样的方法,我们计算GPIO4_C5为149号GPIO端口,GPIO4_C6为150号GPIO端口,并且进行对应的设置操作,再写入1或者0,并观察实际操作。 如果LED没有变化,请仔细检查接线是否对应正确,接口是否松动。 这个部分的具体操作,可以查看附件中的:led_pin.sh,来进项详细的了解。 六:使用SHELL完成三色LED交替跑马灯: 上一步,我们完成了通过sysfs接口操作gpio端口,那么,我们就可以通过简单的shell脚本,来控制三色LED了。 因为涉及到编程了,所以我们可以使用本文开头提到的 开发人员专用最强便携小主机 中安装的vscode来进行。 具体脚本如下:具体内容,请查看附件led_loop.sh 上述脚本比较简单,i循环从1到1000,然后取3的模,来分别熄灭其他LED,点亮当前该点亮的LED。 其中,seq m n表示生成一个从m到n的数字序列(包括m n) 运行前,我们需要检查,148、149、150是否已经被设置为输出状态了。 可以通过以下指令查看: 如果没有,就需要进行设置: 运行后,会输出当前控制的状态,包括index、pin、color 三色LED的具体效果,可以查看本文结尾的视频。 特别注意: 以上shell的操作,如果在firefly用户下,无法正常操作,那么久需要使用root用户进行,通过sudo su -来切换到root用户。 七、使用Python语言编程控制三色LED 终于,到了让Python大显身手的时刻了,作为一名极客,怎么能够不使用Python呢。 在使用Python进行控制之前,我们需要先安装对应的python扩展库,具体操作如下: 然后,我们就可以使用python来进行操控了。 具体的python脚本如下: 这个python脚本也比较简单,其逻辑和shell脚本是一致的。 其中需要说明的几点: 1. 引入gpio模块:import gpio as GPIO 2. 生成数字序列:range(m,n+1),会生成从m到n的数字序列(包括m和n) 3. 设置gpio端口的模式:GPIO.setup(pin, mode),mode可以为GPIO.OUT输出,也可以为GPIO.IN输入 4. 输出电平:GPIO.output(pin, value),value可以为0或者1,也可以为GPIO.HIGH或者GPIO.LOW 执行后,具体输出如下: |
|
相关推荐
|
|
只有小组成员才能发言,加入小组>>
【Station M2 娱乐·极客主机试用体验】用Station M2主机做开发,点个三色LED跑马灯玩玩
13930 浏览 0 评论
【Station M2 娱乐·极客主机试用体验】之开箱视频(附测评总结+细节图介绍)[1]
5010 浏览 0 评论
【Station M2 娱乐·极客主机试用体验】主机初上电&升级失败&一些问题
2584 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-21 19:56 , Processed in 0.622503 second(s), Total 66, Slave 49 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号