481
126

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

布団から脱出できないので、全自動布団引き剥がし機を作った

Last updated at Posted at 2020-01-05

概要

 冷え込んだ冬の朝に布団から自力で脱出することは大きな精神的苦痛を伴うことが知られており、また冬期の午前中における活動性低下は日本経済に多大な損失をもたらしている。かどうかは知らないが、とりあえず朝早く家を出ないと私の卒業が危うくなってしまうので対策を講じることにした。
 「布団 脱出 方法」と検索して出てくる方法 (目覚ましをベッドから離れたところに置いておく、暖房をつけて寝る、など) は一見有効そうに見えるものの、実際試してみたところ目覚ましを止めたり暖房を切ったりしたあとで二度寝してしまうということが明らかになった。私は怠惰な人間なので、真の意味で布団を脱出するには何らかの方法で布団を使用不能にする必要があるのだ。
 そこで、本稿ではラズパイを用いて布団を引き剥がす機械の製作を検討する。実装の概略を下図に示す。布団に取り付けた糸を電動リールで牽引して巻き取り、それにより布団を引き剥がすことを目標にする。さらにラズパイを Web サーバ化し、スマホなどから引き剥がし時刻の設定ができるようにする。
スクリーンショット 2020-01-04 16.36.39.png

準備するもの

材料 個数 備考
Raspberry Pi 3 Model B+ 1個 もっとローエンド寄りなやつでもいけると思う
ラズパイ用 AC アダプタ 1個
ブレッドボード 1枚
ジャンパワイヤ 15本
電線 4m
モータドライバモジュール 1個
ギアボックス 1個
電池ボックス (単3×3本) 1個
マスキングテープホルダー 2個
かまぼこ板 1枚
合計で5m PP ロープとかで OK
ショックノンテープ 20cm
単三電池 3本
安全ピン 2つ
その他、ドライバーセット、ハンダ付けに必要なもの一式、ニッパ、接着剤 (セロハンテープ、ガムテープ、アロンアルファ) などを使用した。

実装

電動リール部分の組み立て

 ツインモーターギアボックスを組み立てたのち、どういうわけか誂えたようにサイズがぴったりだったかまぼこ板に穴を開け固定した。糸巻き (マスキングテープホルダーを半分に切断したもの) をギアボックスのシャフトと連動させるため、摩擦係数の大きそうなもの (ショックノンテープ) を 8cm ほど切り取ってシャフトにきつく巻きつけ、糸巻きを差し込んだ。
ここまでの作業の進捗を下図に示す。ハンダ付け下手すぎるし、なんか微妙に魚臭い気もするけどまあ良いか……
図1.png

布団との接続

 次に、リール部分を布団に接続する。布団の最上部に安全ピンを付けてそれに対して糸結びを施行し、糸のもう片端を白い糸巻きの部分にテープで貼り付ける。審美的にどうかと思うが、完成図は以下の通り。
IMG_3548.png

 なお、リール部分は上の物干し竿から吊り下げている。それだけでは吊り下げた糸を軸にリールが回転してしまうため、Amazon の箱で下敷きとして用いられていたダンボールを物干し竿に貼り付け、それとリールを紐でつなげることによりある程度の安定性を担保している。

リールを回転させてみる

 この図 のように配線した上で、リールの回転は以下のように GPIO 制御をすることによって実現できる (コードは こちら を参考にした)。


import RPi.GPIO as GPIO
import time

# init gpio
GPIO.setmode(GPIO.BCM)
channel_list = [24, 25]
GPIO.setup(channel_list, GPIO.OUT)
# 10 秒間右回転させてみる
GPIO.output(24, True)
GPIO.output(25, False)
time.sleep(10)
# stop
GPIO.output(24, False)
# cleanup
GPIO.cleanup()

 では、早速実行してみよう。
IMG_3551.png

 やったね!!! (色々問題はあるのだがそれは後述する)

引き剥がし時刻の設定

 WebIOPi を用いてラズパイを Web サーバ化し、リールを回すスクリプトの実行時刻をスマホなどから設定できるようにした。設定ページにアクセスすると下図のような画面が表示される。時刻を送信すると

  • 設定時刻にリールが 10 秒間回転し、布団を引き上げるタスク
  • 設定時刻の3時間後にリールが 10 秒間逆回転し、布団を開放するタスク

の2つがラズパイの crontab に登録されるようになっている (3時間も布団を使用不能にすれば流石に二度寝しないだろうという目論見)。この辺の実装に関してはコードを こちらのレポジトリ にまとめたので興味のある方はどうぞ。
スクリーンショット 2020-01-04 21.01.13.png

問題点

リールの位置が不安定すぎて紐がコースアウトする

 リールを上から吊り下げているという設計の都合上、巻取り部に対する紐の位置を固定することが難しく、白い糸巻きとそれを囲むプラスチック部分に紐が挟まってなんかすごい音を出しながら動かなくなってしまうという事態がかなりの頻度で発生する。これには実用上大きな問題がある。

音がすごい

 おそらくこのギアボックスが空中 (?) で使うことを想定して設計されていないからであると考えられるが、毎朝紐を巻き取っている間に人智を超えた騒音が発生する。測定していないので分からないが、体感的に iPhone の目覚まし最大音量の2倍くらいの音が頭上から聞こえてくるので、正直布団云々は関係なく音がうるさすぎて離床せざるを得ない状況になっている。本来の目的は達成できているから良いものの、近所迷惑なのではないかという懸念があるのでこれは改善が求められるところであろう。

 以上の問題点を踏まえ、よりよい布団引き剥がし方法を思いついた方は是非コメントにてお知らせください。最後までお読みくださりありがとうございました。

481
126
9

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
481
126

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?