Day_30 RPI GPIO

openwrt虽然主力是在网路服务,但如果硬体与韧体的支援上有GPIO(通用型之输入输出的简称),也可以拿来做开发与使用,尤其树莓派定位在开发板,GPIO可说是十分重要的功能。配合感测器可以蒐集外界的资讯、配合LED/马达/继电器等可以输出控制、还有一堆可藉由I2C/SPI等通讯沟通控制的设备,花样非常多,如果可以好好搭配这个开源路由,可玩性会更高。

在Raspberry pi OS中,可以用c、python或是node.js等语言进行开发与控制。上图是曾在Day_15 Terminal & CLI出现过的脚位功能图,现在我们要来试着读取与输出。在linux中即便没有装python也可以使用命令来驱动IO脚位。登入命令介面後使用指令cat /sys/kernel/debug/gpio,可以得到相关GPIO资讯,会载明名称与功能,若没有出现可能不支援或是没有安装相关核心套件,可以查有无相关套件包或驱动。


以下是一些相关指令。

# 初始化 GPIO17
echo 17 > /sys/class/gpio/export
# 设定 GPIO17 为输出脚
echo out > /sys/class/gpio/gpio17/direction
# 设定 GPIO17 为输入脚
echo in > /sys/class/gpio/gpio17/direction 
# 设定 GPIO17 为high(高电位)
echo 1 > /sys/class/gpio/gpio17/value
#设定 GPIO16 为low((低电位)
echo 0 > /sys/class/gpio/gpio17/value
# 读取 GPIO17 数值
cat /sys/class/gpio/gpio177/value

试着做一个arduino的Hello_World:LED闪烁

  • 建立存放资料夹
    mkdir app
    cd app
    
  • 建立与编辑脚本文件
    vi blink.sh
  • blink.sh内容,完成後储存与退出
    #!/bin/bash
    echo 17 > /sys/class/gpio/export
    echo out > /sys/class/gpio/gpio17/direction
    while [ 1 ]; do
        echo 1 > /sys/class/gpio/gpio17/value
        sleep 1
        echo 0 > /sys/class/gpio/gpio17/value
        sleep 1
    done
    
  • 给予blink.sh执行功能
    chmod +x blink.sh
  • 执行测试
    sh blink.sh
  • 要跳出就按ctrl + c
    • 当然脚本还是尽量少用这种无穷回圈,若要定期执行也可考虑crontab工作排程
  • 最後不用记得要释放这支脚,避免下次无法控制
    echo 17 > /sys/class/gpio/unexport

Troubleshooting

RPi.GPIO 安装失败

  • 安装python3与pip并且更新还是无法安装控制树梅派IP的套件,会报安装异常尚未解
  • 另有找到可完成安装gpio4套件,尚未测试

Ref.


<<:  Day 28 - WooCommerce: 显示虚拟帐号付款资讯

>>:  [Day27] 建立 Mock Module / Function 的方式(ft. TypeScript)

Day 0x6 - Message 解密

0x1 前言 今天因为时间不是很够,所以很快地介绍 Message 解密的部分 0x2 Messag...

[Day 26] Web 小厨娘

今天晚餐是我掌厨 妈妈跟我一起备料当二厨 煮了4菜一汤切水果 虽然我觉得煎鱼比较难 但煮饭还是一件很...

Day20 - 针对 Metasploitable 3 进行渗透测试(1)

相关资讯 Parros IP:172.28.128.6 Linux IP:172.28.128.3 ...

Day04 - 【入门篇】浅谈身份验证与授权(2)

本系列文之後也会置於个人网站 实际上,在昨天已经将多数基础都已经解释过了,不过我想到还有一些东西可...

Day 03: 面对 Design Pattern 该有的知识

Design Patterns(设计模式)的起点 一切都源自於 Erich Gamma、Richar...