Arduinoで始めるIoT~外から家電の操作を行うまで~

こんちゃ!洋梨🍐です。

「スマホから家電の操作したいな~」なんて思ったこと皆さん無いでしょうか?

きっとあると思います(暴論)^^

そこで今回はスマホから家電を操作する為の手順を公開したいと思います~

今回使うもの

製作環境

・Unity + C#

スマートフォン(操作)側アプリの開発に使います。今回紹介するソースコードはC#で書かれているので.NET FrameworkやXamarinでも動きますよ。(確認済)

・Arduino + C

リモコン(実行)側にはArduinoを用います。なお言語はC言語ベースです。

材料

・Arduino 本体


HiLetgo® 2個セット NEWバーション UNO R3 ATmega328P USB CH340G Arduinoと互換性 + USB ケーブル [並行輸入品]

今回の主役です。C言語を使って電子部品を扱うことができます。

・赤外線LED

リモコンの操作信号を再現するために使います。波長は 950nmに近いものを使います。※850nmでは動きませんでした。

・赤外線 受光モジュール

リモコンの操作信号を再現するために使います。

・ボタン

操作用に使います。

・Wi-Fiモジュール

スマートフォンから操作したい場合、使用します。Arduinoをインターネットに接続できるようにすればいいのでイーサネットでもOK!

オプション

・IC2 OLED (128×64)

Arduinoから情報を出力(可視化)するために今回は使いました。

・コンデンサー

リモコンの光を遠くまで飛ばせるようにするとき使います。

・リレー

赤外線操作ではなくコンセント操作を使いたいときにどうぞ

仕組み

簡単なイメージ図

例えば、普通は左のようにテレビの操作にリモコンを使いリモコンがテレビに信号を送っています。

しかし、スマホで操作したくてもスマホではテレビに信号を送ることができません。

そこで今回は信号を送る部分をArduinoに肩代わりしてもらい、スマホからArduinoを操作することで間接的にテレビに信号を送るというわけです。

作成 (Arduino側)

すべて説明すると長くなってしまうため簡単な説明です。

Arduinoでは赤外線信号を保存・再生します。

受光モジュールを使いリモコンの信号を事前にキャプチャーし、スマホからの信号が届いたら赤外線LEDを用いてキャプチャーした信号を 再生すればいいというわけです。

リモコンをキャプチャーする様子

まずキャプチャー(保存)するためのソースコードです。

次に再生するためのソースコードです。

このプログラムをボタンを押したときに呼び出すようにすればボタンを押したときにキャプチャーした信号が再生されるようになります。

赤外線LEDはカメラで点灯していることを確認できる。
上のGIFは実際に再生したところ。リモコンの信号と同じ点滅をしていることがわかる。

スマホからの操作に使用する際はUDPポートを監視し、信号が流れてきたら事前に決めたパケット構造に基づき対応した信号を再生するようにした。

操作用アプリ製作 (操作側)

紹介用に部屋の電気をON・OFFにする機能だけをつけたものにしてあります。C#で書かれています。なおUnityで動作確認済みです。

メインプログラム (Unity用)

ここで使っている「UDPSystem」のスクリプトは長いため以前書いた

こちらの記事をご覧ください。UDPパケットの送信には上記事のスクリプトを汎用しています。

スマートフォンで実行したときのスクリーンショット

これでスマートフォンからUDPでのパケットの送信ができるようになったと思います。もちろんTCPを使ってもできます。(むしろそっちのほうが良いかも)

テスト

このアプリで本当に信号(パケット)が出せているのか、しっかり届いているのかは調べないとわかりません。今回は「Wireshark」というパケットキャプチャーを使い、パケットが届いているかどうか確認したいと思います。

なお、外出先など外部からパケットを送信・受信(操作)するには「ポート開放」などが必要です。プログラムではUPnPやホールパンチングなど技術を使う必要があります。UPnPは比較的簡単なのでこちらを参考にしてみてください。

今回は外部(外出先)から使う事を推定しているのでテストではスマートフォンの4G回線(Docomo)からリクエストを送信します。

テストのイメージ図

今回テストで送信するリクエストは「ID(01)の機器の電源をON(01)にする」にします。つまりUDPで送るデーターは「0101」です。

先ほどのプログラムの「case 1:」の部分です!

パケットキャプチャー

アプリでプログラムを実行すると、自宅にあるPCの「パケットキャプチャー」で見るとUDPでパケット「0101」が届いているのが確認できました。これで外部からつけることができるという事が確認できました。

まとめ

今回はIoTデバイス作りの第一歩として家電操作を行いました。

この記事は以前私がレポートとしてやったものを記事に起こしたものになりますので詳しく知りたい方は こちらからレポートをダウンロード してください~

書いている途中で面倒になってしまったのもあり、説明がいくつか抜けて分からない部分があるかもしれませんでしたがすいませんです!(> 3 <)

「よくわかんないからプロジェクトファイルくれ」「もっと詳しく記事書いて」などリクエストはメールにお願いします!


ここまで読んでくれてありがとうございました!!

ホームページでは他にも

・様々な記事や作った作品および過程
・ソースコード、素材ファイル
・あらゆる”モノ”の作り方

などなど随時、記事や作品を新規公開・更新していますので是非見ていってくださいね!見ていただけると本当に嬉しいです!

Thank You Watching💛

3Dプリントミスと対策

  1. 3Dプリンターを使っている方なら分かると思いますがプリントミスって結構起こりませんか?ちなみに私はだいたい8割ほど失敗してましたw

今回は私に起こったプリントミス、及び行った対策についてまとめてみました!

変な固まりができる

…なにこれ?
印刷おわったかなーって見に行ったらこの有様で呆然。

原因

この原因は恐らくプリントヘッドからプリント台までの幅が広すぎることだと思われます。ノズルから台までが遠すぎるために台に吸いつかず、固まりと化してしまうようです。また、吸い付いたとしても途中で取れてしまった場合もこうなることが多いです。

対策

まず、ノズルからプリント台までの幅を調節します。適切な幅は紙一枚分と言われていますが私は使わないカード(自動販売機から出てくるやつ)を使ってその幅に調節しました!

台から離れてしまっているその他の対策としては、台の温度を上げる、台にしっかり吸い付くように処置をする等あります。こちらの記事ではその良い対策について詳しく書いてあります。

ノズル ã‹ã‚‰ãƒ•ã‚£ãƒ©ãƒ¡ãƒ³ãƒˆãŒå‡ºã¦ã“ない

…?印刷完了とは…?

原因

これは大半はノズル詰まりが原因です。ノズルの中にフィラメントが詰まってしまってます。フィラメント交換の際に上から引き抜いて交換すると発生率が高いです。また、プリント台とノズルが近すぎる場合にも発生します。

対策

ノズルの中にあるフィラメントを取り除きます。具体的には

1.ノズル温度を上げる

2.フィラメントを入口から手で押し込む

3.(2で出てこない場合)ノズル先からエナメル線など細いものを押し込み取り除く

です。ノズルから台までの距離も見直してみて下さいね!

出来たものが印刷モデルと違う

あれ?なんでここ塞がってるの??

原因

ほぼ3Dモデルが悪いです。3Dモデルには裏表があるのですが、一部だけ裏になってたりするとこの現象が発生します。

対策

3Dデーターをもう1度見直してみて下さい。しっかり表面は全て[表]になってますか?Blenderでは設定から裏面を非表示にすることができます。その機能を使って確かめてみてください。

マイクロソフト社のオンライン修正ツール

これを使って見るのも良い手かも知れません。

印刷物にズレがある

原因

これは印刷中に印刷物がプリント台から外れてしまった(ズレてしまった)、もしくはプリンター周囲にものがありプリント台をプリンターが動かす事ができず、ズレてしまっている。この当たりが原因だと思われます。

対策

この問題はやってると結構あります。プリンター周りに物がある場合はどかすとして、大半はプリント台に印刷物がしっかりと吸いつかない事が原因で発生しています。これはプリント台にシートを貼る、テープを貼る、のりを塗るなどして対策します。こちらに関しては詳しく書いた記事があるので是非こちらをごらんください。

まとめ

3Dプリンターは便利ですがこのように不具合や問題が起こると厄介ですよね(;^ω^)今回は発生した主な事例を挙げてみましたがいかがだったでしょうか?すこーしでも参考になれば幸いです!合わせて

3Dプリントを上手に行う方法

も是非ご覧ください!ずれに対する対策などこちらで詳しく書きました!

 

上手に3Dプリントをする方法

どうも!洋梨🍐です!

皆さん、3Dプリンター使ってますか??
今回は3Dプリントをより綺麗に行える方法を紹介したいと思います!

いたってシンプルです。

それは、

プリント台にしっかり固定し、ノズルと台を適切な幅にする

これだけです!

「いや、それがむずいんだよ!」「そんなの分かってるわ!」

と言いたくなると思うんですが、その通りなのです。再確認みたいなものです(;^ω^)

ではどのようにしっかりと固定するのか。これについて書きたいと思います。

プリント台に印刷物を固定する方法

プラットフォームシートを使う


3M 3Dプリンタープラットフォームシート(3枚入) ABS/PLA対応 3099AB

まずはこちら。

3Dプリンターとセットで買う方も多いのではないでしょうか?
私も最初の1年間はずっとこれを使ってました。

コンデションが良い時はしっかりと固定できます。

しかしまれにずれるのと、逆にしっかりつきすぎてなかなか取れないことがある事と、コストがかかるというところがネックです。

のりを塗る

こちらはほかの方法と重ねて行うことが多いのではないでしょうか?

効果はあるとよく言われ・よく聞きますが、私は全く実感できませんでした。

マスキングテープを使う


3M マスキングテープ 343 60mm×18M 2巻パック 343 60

結果から言います。この方法は、最高です。

まず量がたっぷりあるので1印刷ごとに張り替えられます。

更にテープごと台から取り外せるため1層目の印刷スピードを遅く、温度を高くししっかりと台に印刷物を固定するプリントをしても印刷物が台から取れないという事がありません!

よく見るのりで固定する方法などやっても印刷がうまくいかない~なんて方は是非!この方法試してみてください!

良いご報告楽しみにしてます!!

まとめ

試していただければ一番わかるとは思うのですが、3Dプリントでの胆は「固定する」ってところにあるのが分かると思います。

印刷がうまくいかずネットで情報を探していてものりを使う方法や設定を見直すなどばかりで正直何も役に立ちませんでした。(全くというわけではないけれど)しかし、何となく買ってみたテープを使うようになってから状況は激変したので是非皆さんにもこの綺麗に印刷できた時のうれしさを味わっていただきたく記事を書きました。

皆さんのためになったら幸いです^^

読んでくれてありがとうございました。

今後も様々なモノづくりの記事を書いていくので是非よろしくお願いします!

3Dプリンター初購入・検討中の方へ

どうも洋梨🍐です。

一般家庭にもかなり普及しつつある3Dプリンターですが、「実用性があるの?」「3Dプリンタって難しくないの??」「そもそもお高いんじゃないの??」と悩んで購入を悩んでいる方へよくある質問や疑問など一年間使ってみた私が答えていきたいと思います!

必要なもの・費用について

普通のプリンターを家で使うには電気屋で買ってパソコンつないでポチッ!で終わります。では3Dプリンターはどうなのでしょうか。実は3Dプリントをするのに必要なものはそんな普通のプリンターと変わらないのです!主に必要なのはこの2つです!

プリンター本体

まず必要なもの、それはもちろん3Dプリンター本体です。
高いと思われがちの3Dプリンターですがそれは過去の話。今は2、3万円から買えるもの結構あります!ちなみに私が買ったのはこちら


【新型】HICTOP フィラメントモニターとオートレベル機能付き3DプリンターキットDIY アルミニウム 未組立 印刷サイズ:210 * 270 * 185mm 3dp-17bk (3DP-17)

Amazonで34000円で割引が1800円となっています。(18/10/28現在)

※ちなみに私が去年買ったときは49800円の商品だったのでかなーり安くなっていると思います!

フィラメント

3Dプリンターでモノを作るときに出力するプラスチック本体、普通のプリンターにおけるインクに近い存在です。これには大きく分けて2つの種類がありABS、PLAがあげられます。この違いは、強度、印刷のしやすさ等があり初心者はPLAから始めることをお勧めします!ちなみにお値段は1kg 2~3000円程!

(1kgと言われてもそれがどの位なのか想像できないと思いますが、スマホにつけるストラップ程度だと10gいかないくらいと考えてくれればちょっとは想像つくのではないでしょうか?)

以上です。

思ってたより少なくありませんか?
この2つだけ買えばあなたも明日からにでも家で3Dプリントを始めることができる時代なのです…

印刷するには?

買うものはこれだけでいいって分かったのはいいけど印刷ってどうやるのか想像つかない。って方はまずこちらをご覧ください。簡単にモデリングを紹介します。(動画は50秒程度です。)

どうでしょうか?

下絵が下手すぎるという事はさておき、思ってたより簡単そうには見えませんか?印刷までの手順としては

1.下絵を用意する。

2.それを元にモデリングする

3.印刷する

というステップを踏みます。初めての人がいきなり立体的なフィギュアを作るというのは流石に難しいですが簡単なものなら本当に簡単にすぐできます^^

※動画に使用したソフトはBlenderです。(無料)
実際のモデリングには自分に合ったソフトを使うのをおすすめします。印刷ソフトは3Dプリンターの購入時に大半付属しています。

※この動画で紹介したのは2の部分です。3はこのモデルを印刷ソフトに読み込みボタンを押すだけです。1は言うまでもなくペイントソフトでお絵描きしただけですw

具体的にどんなものが作れるの?

ではこんな便利な3Dプリンタですが何が作れるのか。

…すいません。それは、腕次第としか言えませんw

初心者でも置物やストラップ、入れ物くらいならすぐ作れるようになります。
しかし、部品やパーツ、フィギュアなどはやはり経験を積まないと作れません。3Dプリントは自分の腕次第でほぼ何でも作れるものではあるため、自分の実力を伸ばすごとに作れるものが増えていくという所が面白いところなのではないでしょうか?

しかしこれでは答えになってないような気がするので一例として、私が初めのころに作った写真を載せておきます。

 アイスボックス

 取り付け可能なリモコン入れ

印刷ってどのくらい時間がかかるの?

これは正直長く、唯一の欠点といえるのではないでしょうか。ストラップ程度なら数十分なのですが 10 x 20cmのケースを作りたい!など、大きくなるとどうしても何時間など長くなってしまうのが痛いところです。なので大きい印刷の時は印刷設定で精度を落とすなどが必要になるかもしれません。(私の買ったプリンターでは初期設定では精度0.2mmでしたが、これを0.3mmにするだけで時間は2/3ほどになります。)

印刷ソフトでは印刷前におよその必要な材料、時間がわかります。
この画面で精度と時間のにらめっこをします^^

※このソフトは3Dプリンターを買ったときついてきたCuraというものです。

精度はどのくらいなの?

私の買ったのはかなり安めのプリンターなので参考になるかわかりませんが、

最高精度 0.1mm (縦方向)です!

普通に使うものを作るのに正直ここまで精度いるのかな?と思えるほど細かい精度ですよね^^;

綺麗に印刷するには?

詳しく別記事で紹介していますので

・3Dプリンター初心者に向けての知識・技術

・3Dプリンター・プリントの上達法 ~綺麗なプリントをするには?~

などをご覧ください~!

まとめ

3Dプリンターのあれこれを書きましたが参考になりましたでしょうか?
少しでも誰かの参考になればうれしい限りです。
なにか知りたいこと他にもありましたらコメントいただければ答えられる範囲で答えたいと思います!

ほかにも3Dプリンターを中心としたものづくりの記事を書いていこうと思っているのでどうぞよろしくお願いします!(^^)/