「ラズパイ」と「スプレッドシート」で全自動水耕栽培器をつくって女の子にTwitterで実況しながら栽培してもらう:⑩各種機能編 ~Googleスプレッドシートに設定シートを作り、そこからツイートする~
女の子につぶやいてほしい
そういう願望があるので早速つぶやいてもらおう。
第十回となる今回はTwitterとスプレッドシートの連携させて、スプレッドシートに記載した内容をつぶやいてもらうぞ!
今回つぶやいてくれる美少女
長野県出身の川上ちりやちゃんです。かわいい。
絵の描ける友人がいたのでアイコンを書いてもらいました。よき友達をもってうれしい...。実はこの友達、僕が高校時代に作ってた動画でも絵をかいてもらったことがあるので気になる方は見てください(黒歴史なのであまり見せたくはないのですが...。)
ツイートには何が必要?
今回はあくまで野菜の様子を美少女がつぶやくといった内容なので、ただのBotとは違います。撮影した画像を一緒に投稿したり、あたかも美少女がしゃべっている感じに仕上げたいのでリアルタイムで育てているんだなって感じを出していきたいわけです。
そういうわけで、ちりやちゃんがつぶやく内容をいくつかカテゴライズする必要があります。以下、カテゴリーのリスト
- 日報(おはよう!などの定型文)
- 月齢(今日はいい月だね!とかつぶやかせたい)
- 特殊イベント(クリスマスだよ!とか特定の日付につぶやかせたい)
- 画像付きイベント(今の様子はこんな感じだよ!ってつぶやかせたい)
- 豆知識・雑談(ちりやちゃんに植物に関する豆知識を披露してほしい)
そして、これをシートに直すとこんな感じになる。
これをGAS(Google Apps Script)で読み取って、つぶやかせようという感じである。
もうちょっと具体的に話すと、D列にあるcodeに記載されている内容から、条件を分岐させて、前回の記事のような感じで取得したデータをもとに、あいさつだとか雑談といった多様なツイートを実現させようという感じである。
例えば日報についてつぶやかせようと思ったらこうなる。
今回、GASを使ったスクリプトは大量にあるので、それをすべて紹介することは書く側も読む側も負担になると考える。したがって、のちにgithubにあげておくことにする。
また、このようにして作成した文章はTwitterAPIを使うことで、つぶやくことができる。こちらの記事を参照されたい。
さて、次回はいままでの機能をcronにして、ひとまずプロダクトが完成させるぞ!それではごきげんよう
前回:⑨各種機能編 ~取得情報をスプレッドシートにまとめる~
「ラズパイ」と「スプレッドシート」で全自動水耕栽培器をつくって女の子にTwitterで実況しながら栽培してもらう:⑨各種機能編 ~取得した情報をスプレッドシートにまとめる~
Get Data Into Sheet!
今回はラズパイで取得したデータをスプレッドシートに書き込んでいく。これができれば晴れてIoTと語れるようになるので頑張っていこう。
スプレッドシートに情報を取得するってどんな感じなの?
こんな感じです。緯度経度・日の出・日の入り・画像パスなどの情報はセキュリティ的に問題があるので伏せておきます。
どうやってデータをスプレッドシートに送るのか?
「HAGUKUMU」ではスプレッドシートに情報を送る方法として以下の3つがある。それぞれ解説していきたい。
- Pydriveを使ってGoogleDrive経由でスプレッドシートに情報を送る
- ラズパイからURLを送り、シート側がdoGetで受け取ることで情報を取得する
- APIを使ってスプレッドシート側から取得する
1.Pydriveを使ってGoogleDrive経由でスプレッドシートに情報を送る
1.については以前の記事でやったことで、Pydriveを経由してGoogleドライブに画像を送信する方法である。なお、Googleドライブにある画像をスプレッドシートで取得する方法についてはまだ述べていないので、ここでさらっとソースコードを張り付けておく。
- GASを使ってGoogleDriveに上がっている画像IDを取得するプログラム
やっていることはこの記事に近い。
2.ラズパイからURLを送り、シート側がdoGetで受け取ることで情報を取得する
1.取得した高さデータをラズパイ側でhttpでポストする
2.スプレッドシート側のdoGetメソッドで高さを取得
やっていることはこの記事に近い。
「HAGUKUMU」はSORACOMのサマーインターンシップ応募作品として作成しているため、SORACOMさんからGPSマルチユニットの供与を受けている。GPSマルチユニットは気温や湿度、位置情報などのデータを取得してくれるすごいやつで、それらのデータはSORACOMのエンドポイントを設定してあげることでAPIで取得できる。
SORACOMのAPIについては公式の利用ガイドを参照してほしいのだが、せっかくなので、取得に必要なコードをここに記載しておく。
長くなってしまったので、今回はこれくらいにしておこう
次回はツイッターで美少女がツイートできるように設定していくぞ!
前回:⑧各種機能編 ~写真をGoogleドライブにアップロードする~
次回:⑩各種機能編 ~Googleスプレッドシートとツイート~
「ラズパイ」と「スプレッドシート」で全自動水耕栽培器をつくって女の子にTwitterで実況しながら栽培してもらう:⑧各種機能編 ~写真をGoogleドライブにアップロードする~
きれいな体、残しておきたいですよね?
というわけで第八回目は植物の写真を撮ってGoogleDriveにアップロードする作業を行う。
画像をラズパイに保存する
この辺のことはわざわざ書かなくてもほかの記事でたくさん書かれているので割愛。
カメラモジュールは1700円くらいのラズパイ対応のやつを買えばいいと思うよ。
ラズパイからGoogleDriveに画像をアップする
この辺も記事はあるので、検索しながらやりかたを探してほしい。自分が参考にしたのはこの記事。ただし、cronを使って画像アップロード機能を実行する場合、Googleの認証に使う「credentials.json」が見つからないので(cronを実行する場合は絶対パスで指定しないと読み込んでくれないため)、少々設定をいじってやる必要がある。日本語での記事がなく解決に四苦八苦したのだが、なんとか対応できたのでQiitaに記事としてアップしておくことにする。
GIF画像も作成する。
野菜の成長過程をタイムラプスにしたいという思いからgif画像も作成してアップロードすることにする。gif作成には「Pillow」というライブラリを使って実装する。(参考にしたサイト)
画像アップロードテスト
うまくいったみたいですな。
以下、ソースコード
main.py
take_picture.py
create_gif.py
image_uploader.py
次回はツイッターで美少女がツイートできるように設定していくぞ!
「ラズパイ」と「スプレッドシート」で全自動水耕栽培器をつくって女の子にTwitterで実況しながら栽培してもらう:⑦各種機能編 ~植物の高さを計測する~
ギアとモーターは男のロマン
第七回目ともなると冒頭に書くことが思い浮かばなくなってくる。「HAGUKUMU」の設計解説ブログはもうちょっと続くことになるだろうが。いきなり本題に入った場合は何も思い浮かばなかったんだろうなと考えてほしい。
さて、今回はギアとモーターとセンサーを駆使しながら物体の高さを図る機能を実装していくよ。
どうやって高さを図るの?
お答えします。
仕組みは上図のとおりである。ギアとモーターによって上下運動することでセンサーを動かす。光センサーによって、センサーは物体が存在するかどうかを識別することができるので、物体が識別されている状態が続く間はモーターが上に移動し、最終的に物体が識別されなくなるまで稼働させる。モーターが動いた時間を距離に換算することで高さが図れるといった次第である。
材料を用意しよう
高さを図るために必要な部材は以下のとおりである。
- 適当な木材(今回は幅70×長さ600mm、厚さ5mmくらいのバルサ材を使用)
- ミニ四駆PRO MSシャーシ用ハイスピードギヤ
- 360°連続回転サーボ(ローテーションサーボ) SG90-HV
- タミヤ(TAMIYA)/OP-1798/TA07 ローフリクションドライブベルト
- フォトリフレクタ(反射タイプ)LBR-127HLD
作る前に注意しておくこと
サーボモーターとギヤを取り付けることは口径が合わない関係ため、取り付けることはできない。しかし、ハンドドリルのような工具を使ってあげれば穴のサイズを合わせることができるので取り付けが可能になる。
1枚目:ドリルで穴のサイズを調節してあげれば...。
2枚目:サイズの合わない者同士を合わせることができる。
作ってみよう
サーボモーターとギヤとベルトの取り付け
とりあえず無理やり、板にサーボモーターとギヤ、ベルトを取り付け、稼働テストをしてみる。
精度は悪そうだが、その辺はギアとか調節すればなんとかなりそうだ。
改良版のテスト
調整の結果精度が上がったぞい。
光センサーのテスト
こんな感じの配線をする。この辺の記事を読んでいけば実装できると思う。
ちなみに黒いジャンパワイヤがGNDです。
んでもって、テストをしてみる。
どうやらうまくいったようなので、次はギヤとモーターとセンサーを組み合わせて高さを計測してみる。
高さを計測する
以下が実装に際して使用したソースコードである。
言い訳するわけではないが、時間がなかったのでリファクタリングなどは一切行っていないのでお見苦しいコードである。許して。
main.py
distance.py
servo.py
稼働テスト
動いたのでよかった('ω')
次回はラズパイから画像をアップロードする方法について話していく。
それではごきげんよう。
「ラズパイ」と「スプレッドシート」で全自動水耕栽培器をつくって女の子にTwitterで実況しながら栽培してもらう:⑥各種機能編 ~ポンプを制御する~
自動水耕栽培器のコア、ポンプを制御しよう
第六回となる今回はポンプを制御して、自動水やり機能を作ってしまおう。どうでもいいが、照明を切り替えてから作業効率が上がった気がする。LEDばんざーい。
pythonでコードを書く
とはいっても今回はコードを書いて、指定のGPIOピンに配線するだけなのでこれでおわり。
稼働テストの様子。あとはこれを定期実行できればよさそうだ。
定期実行については次回以降、cronについての項でやることにしよう。
次回は植物の高さを計測していきたい。
「ラズパイ」と「スプレッドシート」で全自動水耕栽培器をつくって女の子にTwitterで実況しながら栽培してもらう:⑤各種機能編 ~ラズパイセットアップと自作コンセント~
ラズパイと自作コンセントでIoT家電の第一歩へ
これ書いているときに家の明かりがつかなくなり、しぶしぶ3000円もするLED照明を買いに行くことになった。ラーメン一杯分を800円とすると3.75ラーメン使ってしまったことになる。残念...。大阪にはおいしいラーメン屋がたくさんあるのでこの記事を見ている方がいたらぜひ足を運んでほしい。おすすめは「人類みな麺類」というお店である。
さて、第五回の今日はラズパイのセットアップと自作コンセントの作成とする。
ラズパイセットアップ
セットアップについてはウェブにたくさんあるので割愛する。筆者は以下の記事を参考にセットアップを行った。
自作コンセントの作成
自作コンセントについてはこちらを参考に作成した。使う材料もこの記事通りに作る。
自作コンセントの概観
1枚目:作った当初。シンプルでいいね。
2枚目:「HAGUKUMU」完成後の写真。
配線がごちゃごちゃしているがこれでも頑張った。配線のコツは、ジャンパピンの色を使いわけ、どれがどれなのかわかりやすくすること、GNDは複数ある場合まとめてしまうことの2つである。今回でよく学んだ...。
自作コンセントのテスト
どうやらうまく動いたようなので、ラズパイと繋げてPCから起動できるようにしてみる。
ラズパイと繋げてプログラムから制御する
適当にGPIOピンを設定してあげて(今回は21番)、Lチカと同じ要領で制御するとこんな感じに一般の電化製品なども制御できるようになる。
https://tool-lab.com/raspberrypi-startup-26/
動かしたかっただけなのでソースコードはお借りしました。
次回はポンプをラズパイで制御して、最低限水耕栽培ができるようにするよ。
「ラズパイ」と「スプレッドシート」で全自動水耕栽培器をつくって女の子にTwitterで実況しながら栽培してもらう:④各種機能編 ~水耕栽培土台~
水耕栽培の土台をつくる
好きなポケモンはドダイドスです。
というわけで水耕栽培作成第五回は水耕栽培の基礎となる土台を作っていきます。
はじめに
ラズパイを使った自動水耕栽培器についてのサイトは山ほどあるが、今回はこのサイトを参考にしながら進めていく。サイトの作りが体系的で、説明もわかりやすいので水耕栽培を始めてみたいという方は必読。以降、水耕栽培の基礎的な部分はこの記事を引用しつつ進めていく。
土台とは?
土台とは、実装に当たって便宜上読んでいるものであり、水耕栽培の形式のことを指す。水耕栽培の代表的な形式として2つあり、それぞれ「DFT方式」「NFT方式」と呼ぶ。簡単にいうと...。
- DFT方式:根を溶液に浸す方式
- NFT方式:浅く培養液を流し続ける方式
だそうで、今回は壊れにくそうなDFT方式を採用していくことにする。
「DFT方式」「NFT方式」の詳しい説明はこちら
DFTの土台を実装する(材料編)
まずはこんな感じの材料を用意する
- 木製置台
- 岩崎工業AGキーパー(透明の箱)
- 塩ビパイプ
- TS VS13(塩ビパイプのソケット)
- ユニオンパッキン(TS VS13に合うようなやつ)
DFTの土台を実装する(組み立て編)
木製置台を加工
木製置台の真ん中の板をくり抜き...
AGキーパーの加工
AGキーパーの真ん中に穴をあけ...
取付
AGキーパーにソケット・塩ビパイプ・パッキンを取付、グルーガンで固めたら完成
DFT方式で動いているところ
試しにポンプを付けて動かしてみました。ちゃんとできてるっぽいね!
植物栽培用のポット穴をつける
もちろんこれだけでは植物を育てるスペースがないので、植物を育てるためのポットを取り付ける。
鉢とスポンジセットを購入
スポンジと鉢を購入して...
蓋を加工する
AGキーパーの蓋を鉢がはいるように加工していく
完成
適当に買ってきた豆苗とカイワレを植えてみる。よさそう。
次回はラズパイのセットアップと自作コンセントの作成について書いていくことにする。こうご期待。
前回:③実装概要編