2020年8月9日日曜日

ラズパイでLEDを点灯する pigpioの使い方

概要

ラズパイでLEDを制御する際、GPIOを操作する方法の一つとして、Pythonのpigpioライブラリを使うのが便利そうなので使い方を学びます。


使い方

  1. pigpioのサービスを起動しておく
  2. pigpioを使う際にはあらかじめ「pigpiod」という常駐プログラムを起動しておく必要があります。
    pigpiodを制御するユニットがあらかじめ用意されているので、systemctlコマンドで常駐プログラムを起動します。
    
     pi@raspberrypi:~ $ sudo systemctl start pigpiod
     pi@raspberrypi:~ $ sudo systemctl status pigpiod
     ● pigpiod.service - Daemon required to control GPIO pins via pigpio
        Loaded: loaded (/lib/systemd/system/pigpiod.service; disabled; vendor preset: enabled)
        Active: active (running) since Sun 2020-08-09 13:40:24 JST; 2s ago
       Process: 17319 ExecStart=/usr/bin/pigpiod -l (code=exited, status=0/SUCCESS)
      Main PID: 17321 (pigpiod)
         Tasks: 4 (limit: 2200)
        Memory: 532.0K
        CGroup: /system.slice/pigpiod.service
                mq17321 /usr/bin/pigpiod -l
    
      8月 09 13:40:24 raspberrypi systemd[1]: Starting Daemon required to control GPIO pins via pigpio...
      8月 09 13:40:24 raspberrypi systemd[1]: Started Daemon required to control GPIO pins via pigpio.
    
    

    サービスファイルの中身はこのようになっています。
    
     pi@raspberrypi:~ $ cat /lib/systemd/system/pigpiod.service
     [Unit]
     Description=Daemon required to control GPIO pins via pigpio
     [Service]
     ExecStart=/usr/bin/pigpiod -l
     ExecStop=/bin/systemctl kill pigpiod
     Type=forking
     [Install]
     WantedBy=multi-user.target
    
    

    再起動後した時に自動起動する場合には、ユニットをenableにしておきます。
    
     pi@raspberrypi:~ $ sudo systemctl enable pigpiod
     Created symlink /etc/systemd/system/multi-user.target.wants/pigpiod.service → /lib/systemd/system/pigpiod.service.
    
    

  3. pigpioを使ってLEDを点灯するプログラムを作成する
  4. LEDはこのように接続しました。GPIO14をGRDのピンを使用しています。
    抵抗は200Ωのものを使っています。(図に書かれている抵抗の色とは違うものです)


    以下がプログラムです。pigpioをインポートして、出力設定した後にHighに設定しています。
    
     pi@raspberrypi:~/test $ cat led_on.py
     import pigpio
    
     LED_PIN = 14
    
     pi= pigpio.pi()
     pi.set_mode( LED_PIN, pigpio.OUTPUT )
     pi.write( LED_PIN, pigpio.HIGH)
    
    
  5. プログラムを実行する
  6. 以下のようにpythonのプログラムを実行します。
    
     pi@raspberrypi:~/test $ python led_on.py
    
    
    無事に点灯しました。

ここではpigpioを使ってLEDを点灯させてみましたが、これができればループ処理を組み合わせて点滅させたり、明るさを変えてみたりすることができそうです。
IoTでラズパイを使う際にディスプレイはつながないで使う事が多いと思うので、LEDを使って簡単に出力できるのは便利そうです。


0 件のコメント:

コメントを投稿