Amazon Dashボタンのハックを見てると、ボタンが押せたことを適当なマシン(おもにRaspberry Pi)で検知できて、プログラムでいじれたらそれでいいんじゃないかと思って、昔懐かしのへぇボタンを作りました。まあDashボタンは電池で動くところが良いと言われればそれまでなんですけど。名付けてプログラマブルへぇボタン。
GPIOでボタン入力を検知して、ボタンが押されたらLチカをするだけのスクリプトを作ります。あとは「ボタンが押されたら」にお好みのプログラムを仕込むだけです。以下は単純にカウントアップをツイートするクソスクリプトの実行例です。
クソスクリプトです。
#!/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(白と青)は並列回路です。ブレッドボードではそうしていたのに、実装段階で直列にしてしまい、泣きながら直しました。
ライトの外周に8つのLEDを並列回路で並べた様子。白青交互に置いてます。穴あけはハンダゴテで雑にあけました。残り3個のLEDはボタン中央に配置。
ボタン回路をぶっつけで作ろうとして動かねえ動かねえって言ってた時の様子。ブレッドボードでちゃんとテストしようね!!!
実はボタンはAmazon Dashボタンが出るよりも前、たしか1年くらい寝かせたような気がしますが、ようやく完成を見ることができたのでひとまず満足しました。
本当はPiZero Wあたりを埋め込んですっきりできれば最高なんですが、どうも技適の確認に時間がかかっているようなので、ひとまずケーブルを出す形にしてます。買えるようになったらやってみましょうかね。
ちなみに、トリビアの泉で使われていたへぇボタンも、100円ショップのライトを美術スタッフが改造したものだそうです。