株式会社インデペンデンスシステムズ横浜

システム開発エンジニアの西田五郎が運営しております。Raspberry Pi や Arduino その他新規開発案件のご依頼をお待ちしております。

Raspberry Pi

Raspberry Piでタッチアプリ開発(その4)ボタンとGPIOの連動

投稿日:2017年5月18日 更新日:

Raspberry Piでタッチアプリ開発の4回目です。前回作成したレイアウトとボタンのコールバックにGPIOの処理を組み込みます。そして、このアプリを自動起動するように設定します。

(※2021/05/24 追記 現時点でのKivy2.0.0の導入について以下に投稿しました。ぜひこちらを参照して下さい。
Raspberry PiでKivy2.0.0を導入する
2021/05/24 追記ここまで)

今回のシリーズ一覧です。
Raspberry Piでタッチアプリ開発(その1)ハードウェア構成・開発環境等
Raspberry Piでタッチアプリ開発(その2)Kivyの導入と動作確認
Raspberry Piでタッチアプリ開発(その3)Kivyでレイアウト・ボタン作成
Raspberry Piでタッチアプリ開発(その4)ボタンとGPIOの連動

以下の順番に書きます。
1.プログラムへのGPIO制御の追加
2.リレーとライトの接続
3.ライト点灯のテスト
4.自動ログインの確認
5.アプリの自動起動の設定

1.プログラムへのGPIO制御の追加
プログラムに以下のようにGPIOの処理を追加しました。

# -*- coding: utf-8 -*-

from kivy.app import App
from kivy.uix.widget import Widget

import RPi.GPIO as GPIO
import time

class BtnWidget(Widget):

    def on(self):
        print('on!')
        self.ids['btnOn'].background_color = 0.95, 0.30, 0.15, 1.0

        GPIO.output(21, 1)

    def off(self):
        print('off!')
        self.ids['btnOn'].background_color = 1, 0, 0, 0.4

        GPIO.output(21, 0)

class GpioApp(App):

    def build(self):
        return BtnWidget()

if __name__ == '__main__':
    GPIO.setmode(GPIO.BCM)
    GPIO.setup(21, GPIO.OUT)

    GpioApp().run()

GPIOの21番を出力に設定してon()とoff()で切り替えています。
(※実際にはGPIO.cleanup()を使用するべきですが、テストということでご了承下さい。)

2.リレーとライトの接続
何回か使っていますが、リレー関連は以下で書いたものを利用しました。ライトは家電量販店で買った普通のクリップ型のライトです。
Raspberry PiでAC100V(ソリッド・ステート・リレー)制御

混乱していますが、ディスプレイはタッチパネルとHDMIがRaspberry Piと接続されています。(※実務的なアプリを開発したとして、公式ディスプレイとケース類を工夫してリレーもケースに収納すれば実稼働も出来ると思います。もちろんRaspberry Pi側にも実務のための対応が必要な部分はあると思いますが。)

リレーの部分が以下です。

3.ライト点灯のテスト
接続出来ている状態でオンとオフを操作します。

以下はアニメGIFですが、クリックで再生します。(※再生まで少し時間がかかる場合もあると思います。)

4.自動ログインの確認
Rasbian Jessieでの自動ログインの確認ですが、今現在のRasbian Jessieでは、GUIには自動ログインになっていると思います。なっていなければ以下で設定出来ます。

GUIの場合は、設定 → Raspberry Piの設定から設定出来ます。


「piユーザとしてログインする」をチェックします。

設定ファイルの場合
/etc/lightdm 配下のlightdm.confファイルを編集します。

autologin-user=piを有効にします。

以上で自動ログインが出来ると思います。

5.アプリの自動起動の設定
piユーザという前提で、/home/pi/.config/lxsession/LXDE-pi 配下のautostartファイルに起動するプログラムを記述します。以下は例です。

これで私の環境では自動起動が確認出来ました。

今回はここまでです。このシリーズも今回で終了です。また書きたいと思います。


AdSense

AdSense

-Raspberry Pi

執筆者:

関連記事

Raspberry PiでIoT(MQTTで遠隔操作編 その1)MQTTでの通信

Raspberry PiでIoTのMQTTで遠隔操作編のシリーズを始めます。実際に動作させてみるということを重点として進めます。ここでの遠隔操作は2台のRaspberry Pi間でインターネット経由の …

SkyWayの利用(その4)Raspberry Piでの利用

前回の続きです。NTTコミュニケーションズ株式会社提供のリアルタイムコミュニケーションのためのプラットフォームであるSkyWayを使ってみます。前回はJavaScriptでカメラとマイクのストリーミン …

無線マイコン ToCoStick(トコスティック)をRaspberry Piで使ってみた

無線マイコンの ToCoStick(トコスティック)をRaspberry Piで使ってみました。前回の記事でブレッドボードが親機でToCoStickが子機という設定でとりあえずということで通信が出来る …

Raspberry Piをモニターとキーボードなしで導入する(2021年5月版 その2)SSH接続とWifiの設定からログインまで

今現在(2021年5月)の方法でRaspberry Piをヘッドレス(モニターとキーボードなしの状態)で導入する方法について書いています。前回は全体概要からSDカードの作成まで書きました。今回は作成し …

Raspberry Piをモニターとキーボードなしで導入する(2021年5月版 その3)リモートデスクトップの導入から初期設定まで

今現在(2021年5月)の方法でRaspberry Piをヘッドレス(モニターとキーボードなしの状態)で導入する方法について書いています。前回まででSSH経由でログインするところまで書きました。今回で …