0. io图

  • 3B+ 淘宝卖家的图
    • image.png
  • 3b+ pi4j接线图
    • 树莓派-继电器控制电磁锁 - 图2

      1. 参考

2. 常用命令

  1. 查看状态 : gpio readall
  2. 设置out int : gpio -g mode 22 OUT
  3. 设置 高低电平状态: gpio -g mode 22 OUT
    1. eg: 22 = BCM
    2. image.png

      3. 代码实现

  • 开发环境
    • idea
    • java
    • maven
    • pi4j (开发跟服务器都要安装,树莓派的Raspbian系统自带)
      • wiringPi (服务器要安装,树莓派的Raspbian系统自带))
  • 测试项目
  • 说明注意 ```java @Override public void low() {

    1. myRelays.low();

    }

    @Override public void high() {

    1. myRelays.high();

    } // 上面使用 高低电位没有控制到电磁锁的开合

    // 我当前的硬件 支持下面的两个方式控制 @Override public void ouput() {

    1. myRelays.setPullResistance(PinPullResistance.PULL_UP);
    2. myRelays.export(PinMode.DIGITAL_OUTPUT);

    }

    @Override public void input() {

    1. myRelays.setPullResistance(PinPullResistance.OFF);
    2. myRelays.export(PinMode.DIGITAL_INPUT);

    }

  1. ```java
  2. private final GpioController gpio = GpioFactory.getInstance();
  3. /************************************************************************/
  4. GpioPinDigitalOutput myRelays = null;
  5. // 设置启动后的初始状态
  6. myRelays = gpio.provisionDigitalOutputPin(RaspiPin.GPIO_27,"myRelays");
  7. // 上下两种方式 ,初始状态是相反的
  8. GpioPinDigitalInput myRelays = null;
  9. // 设置启动后的初始状态
  10. myRelays = gpio.provisionDigitalInputPin(RaspiPin.GPIO_27,"myRelays");
  11. /************************************************************************/
  12. // 项目停止后 电磁锁的状态
  13. myRelays.setShutdownOptions(true, PinState.LOW, PinPullResistance.OFF, PinMode.DIGITAL_INPUT);
  1. 1. 如果要初始化多个GPIO
  2. 2. map channel(RaspiPin),和 GpioPinDigitalOutputGpioPinDigitalInput 的对象装起来
  3. 3. 调用开关门的时候根据 ip+port+channel去找 GpioPinDigitalOutputGpioPinDigitalInput 实例进行操作

详情图

image.png
QQ图片20210118160638.jpg