ネスカフェ バリスタでコーヒーをいれるとツイッターに自動投稿

ネスカフェ バリスタラズベリーパイを接続して、コーヒーを入れると、自動的にツイッターに投稿されるようにしてみた。

実際の映像は、こちらから。(片手でビデオとりながらやっているので、ちょっと、かったるいけどね・・・。)

ネスカフェ・バリスタとラズパイでツイッターに自動投稿


技術的には、何もわかっていなくても、ほとんど先人の知恵でできてしまった。

ネットの知識は、やはり、すごい・・・。

以下、作成までの記録。

自分のための備忘録的なものですが、これ見て、自分もやってみようというかたは、くれぐれも、自己責任でお願いします。 バリスタは、100V電源つながっていますし、熱湯もでるし、間違えると、バリスタ壊したり、ラズパイ壊したりして、痛い出費になってしまいますので・・・。 当方は、責任取れませんので、あしからず・・・。

準備、

まず、ネスカフェ バリスタのサイドパネルをはずす。

バリスタは、すでに何度かモデルチェンジしているので、同じようには行かないかもしれません。私が使ったのは、初代のモデルです。型番でいくとPM9630だと思うのですが、同じ9630でも、初期のものと、後のものではボタンの位置とか少し異なっているようです。基板もかわっているのかもしれません。

サイドパネルのはずし方は、こちらのサイトが写真入りで詳しく解説されているので参考になります。

ネスカフェ バリスタの調子が悪いので分解清掃してみた | KUMA TYPE

ネジはトルクスねじが使われているので、専用ドライバが必要です。まぁ、通常のプラスドライバとかマイナスドライバを駆使して回しちゃう"つわもの"もいるでしょうけど・・・。

とりあえず、コーヒーパウダーのタンク下の4本のネジをはずすだけで用は足りると思います。上記の参考サイトにも書かれていますが、サイドパネルをはずすときには、かなりの確率で爪が折れます。 私の場合も4本中3本折れちゃいました。それなりの覚悟が必要かと・・・。

この4本のネジをはずすとポコッと頭の部分が外れます。 この頭の中にスイッチの基板が埋まっているので、内側からつめを押さえて外に向かって押し込んでやると、外側にスイッチパネルが外れると思います。

f:id:manpukukoji:20160212205822j:plain

スイッチパネルが外れたら、基板の真ん中にあるスタート/停止のスイッチから線を半田付けして引き出してきます。引っ張り出すのは、電圧の高い側で、私の場合、4.9Vくらいありました。低い側は、ほぼ、0V、実際には、100mV くらいありました。写真の矢印のところ

f:id:manpukukoji:20160212210034j:plain

このラインをラズベリーパイのGPIOピンのひとつにつなぐわけですが、前述のようにバリスタは、5VでラズベリーパイのI/Oは、3.3Vなので、このままつなぐと、ラズパイが壊れてしまいますので、何か方法を考えます。

やり方は、いくつか考えられますが、入力ひとつだけなので、ちゃんとした電圧変換モジュールを使うところまでしなくとも、抵抗で分圧したり、トランジスタとかFETをひとつ、かませたり、ダイオードで電圧を落としたり、どの方法でも良いと思います。

"5V 3V 信号変換 " といったワードで検索すると、さまざまなやり方が見つかると思います。

私の場合は、手っ取り早くLEDと100kの抵抗を直列にかまして落としちゃいました。

このやり方は、正当なやり方ではないかと思いますが、電源ラインやGNDラインに落とさなくても良いので、接続先が増えなくて都合が良かったという理由です。

LEDは、Vfが2V くらいあれば良いと思います。ただし、光りません・・・。

とりあえず、これで、ラズパイが壊れることもなく、使えています。
私の場合、バリスタからの入力をGPIO23(Pin#16)に、LEDへの出力をGPIO24 (Pin#18)に接続しています。

あとは、GND側をラズパイのGNDとつなげば、ハードの方はOKです。

GNDは、本体側にそれっぽいピンが出ていたので、これを使いました。

f:id:manpukukoji:20160213080025j:plain

これで、ハード側は、おしまいですが、おまけでスイッチが入ったときにLEDが点滅するようにブレッドボード上に組んでみました。

ちなみに、バリスタのスタート/停止スイッチが入っていないときは、ラズパイのGPIOは、Highとなっていて、スイッチが入ったときにLowになりますので、そこで、スイッチが入ったことを検知します。

次に、ラズベリーパイにOSのインストール

これは、もう、山のように参考サイトがあるので、そちらで十分かと思いますが、今回、はまったのは、NOOBS v1.4.1をインストールしたときは、何もしないで日本語で表示されたのだけど、v1.5.0をインストールしたら、日本語が文字化けしてしまった。

いろいろ、調べてみたら、[$ sudo apt-get install fonts-vlgothic ] と、やったら、文字化けが解消されました。

次にPythonでツイートするための準備で、twython と、いうのを使います。

このあたりは、こちらのサイトを参考にさせてもらいました。

Raspberry PiのCPU温度をつぶやくTwitterBot | そう いう わけさ

上記参考サイトに習って、TwitterBotの環境を作成

$ mkdir TwitterBot
$ cd TwitterBot

twuthonをインストールして、Twitterのアカウントをとったら、Pythonのプログラムを作成。 これも、参考サイトのスクリプトを少し変更するだけでできてしまう。

以下のような感じで・・・。

 $ nano RaspiBot.py 
#!/usr/bin/env python
# coding: utf-8
import RPi.GPIO as GPIO
import time
import os
from twython import Twython
import datetime

COUNT = 3
LED = 24
Brst_SW = 23
GPIO.setmode(GPIO.BCM)
GPIO.setup(LED,GPIO.OUT)
GPIO.setup(Brst_SW,GPIO.IN)
GPIO.output(LED,False)

def LCHIKA():
	global COUNT
	global LED
	for _ in xrange(COUNT):
		GPIO.output(LED,True)
		time.sleep(1.0)
		GPIO.output(LED,False)
		time.sleep(1.0)

def Tweet():
	#Twitterの認可情報を入力	
CONSUMER_KEY = 'XXXXXXXXXXXXXXXXXXXXXXXXX'
	CONSUMER_SECRET = 'XXXXXXXXXXXXXXXXXXXXXXXXXX'
	ACCESS_KEY = '1234567890-XXXXXXXXXXXXXXXXXXXXXXX'
	ACCESS_SECRET = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
	api = Twython(CONSUMER_KEY,CONSUMER_SECRET,ACCESS_KEY,ACCESS_SECRET)

	timestamp = 'date +%F_%H:%M:%S'
	current_time = os.popen(timestamp).readline().strip()

	api.update_status(status=current_time+' : コーヒーでくつろぎ中!!')

try:
	while True:
		if (GPIO.input(Brst_SW) == 0):
			Tweet()
			LCHIKA()
except(KeyboardInterrupt):
	print('KeyboardInterrupt!')

GPIO.cleanup()

実行権限を付与

$ chmod +x RaspiBot.py

これでほぼ完成。
あとは、

$ RaspiBot.py

と、やって実行し、バリスタでコーヒーを入れて、コーヒー飲みながらツイッターの再読み込みすると、ツイートされている・・・はず・・・。