あっきぃ日誌

ラズピッピブログのようなオタクブログのようななにか

プログラマブルへぇボタン

Amazon Dashボタンのハックを見てると、ボタンが押せたことを適当なマシン(おもにRaspberry Pi)で検知できて、プログラムでいじれたらそれでいいんじゃないかと思って、昔懐かしのへぇボタンを作りました。まあDashボタンは電池で動くところが良いと言われればそれまでなんですけど。名付けてプログラマブルへぇボタン。

f:id:Akkiesoft:20170412002936j:plain

GPIOでボタン入力を検知して、ボタンが押されたらLチカをするだけのスクリプトを作ります。あとは「ボタンが押されたら」にお好みのプログラムを仕込むだけです。以下は単純にカウントアップをツイートするクソスクリプトの実行例です。

f:id:Akkiesoft:20170412004702p:plain

クソスクリプトです。

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import RPi.GPIO as GPIO
import time
import tweepy

GPIO.setmode(GPIO.BCM)
GPIO.setup(18,GPIO.IN)
GPIO.setup(17,GPIO.OUT)

consumer_key = ""
consumer_secret = ""
access_key = ""
access_secret = ""
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_key, access_secret)
api = tweepy.API(auth)

pushed = 0
hee = 0

try:
  while True:
    pin18 = GPIO.input(18)
    if pin18 == 1:
      if pushed == 0:
        GPIO.output(17, 1)
        hee = hee + 1
        try:
          api.update_status(status = u"へぇ〜 (" + str(hee) + u"へぇ)")
        except(tweepy.error.TweepError):
          print("status duplicate!")
        pushed = 1
    else:
      GPIO.output(17, 0)
      pushed = 0
    time.sleep(0.01)
except(KeyboardInterrupt):
finally:
  GPIO.cleanup()

材料は、ダイソーで買ったタッチ式ライト(ブルー)と、aitendoで買った青色LED5個と白色LED6個。LED用に適当に試して選んだ160Ωくらいの抵抗。ボタンは適当にサイズが合いそうなやつを千石電商で買ってたやつと、それ用の1KΩ抵抗。リード線。

回路的にはこう。11個のLED(白と青)は並列回路です。ブレッドボードではそうしていたのに、実装段階で直列にしてしまい、泣きながら直しました。

f:id:Akkiesoft:20170412004533p:plain

ライトの外周に8つのLEDを並列回路で並べた様子。白青交互に置いてます。穴あけはハンダゴテで雑にあけました。残り3個のLEDはボタン中央に配置。

f:id:Akkiesoft:20170412005235j:plain

ボタン回路をぶっつけで作ろうとして動かねえ動かねえって言ってた時の様子。ブレッドボードでちゃんとテストしようね!!!

f:id:Akkiesoft:20170412005304j:plain

実はボタンはAmazon Dashボタンが出るよりも前、たしか1年くらい寝かせたような気がしますが、ようやく完成を見ることができたのでひとまず満足しました。

本当はPiZero Wあたりを埋め込んですっきりできれば最高なんですが、どうも技適の確認に時間がかかっているようなので、ひとまずケーブルを出す形にしてます。買えるようになったらやってみましょうかね。

ちなみに、トリビアの泉で使われていたへぇボタンも、100円ショップのライトを美術スタッフが改造したものだそうです。