Android Thingsを使って3Dプリント戦車を作ろう ① ハードウェア準備編

2017/10/19
このエントリーをはてなブックマークに追加

仕事に関係ない記事ばかり書いてる大橋です。

夏終わりましたね。 むしろ寒いですね。
夏といえば自由工作ですよね。
自由工作といえば小学生。
娘はまだ小学生ではないので、自由工作とかありません。
でも、お父さんの頑張りどころって、ここだと思うのです。

という事で大人の自由工作として、
3Dプリンターを利用して作成した戦車に、Android Thingsを載せて動かしてみます。

最終完成品は以下です。

またAndroid Thingsとコントローラーの接続はNearby Connections APIを使ってやります。
実際に動いているところは以下です。
モーターを変えるともっと速く動く気がします。

今回の内容は、続けて書くと少し長いのです。ですので記事は以下に分けて書きます。

  1. 前編の「ハードウェア準備編」
  2. 中編の「Android Things準備編」
  3. 後編の「コーディング編」

また今回の記事は、用意するものが多々あります。
ただこれは、私が今回作った時に購入・使用したものです。
この記事を見て真似をしても、うまくいくかはわかりません。
実際にこの記事を見ながら作って見る方は、自己責任にて道具を準備し、制作を行ってください。

なお、上記の写真では戦車にカメラが付いていますが、今回の記事中ではカメラは無いものとして書いていきます。

Android Things 3Dプリント戦車 ハードウェア準備編

まずは今回準備する物を書いていきます。

用意するもの

  • 3Dプリンター
  • 戦車の3Dモデル
  • 30 RPM DC 6V 2.5KG マイクロギアボックス減速モーター
  • Raspberry Pi Model 3B & Android Things(dp5.1)
  • モバイルバッテリー
  • L298N デュアルHブリッジ DCステップ モーター ドライバー コントローラー
  • バッテリーケース & バッテリースナップ
  • 導線 & ジャンプワイヤ

3Dプリンター

戦車を作るのに必要です。
結構大きめの部品を作るのでベットサイズがそれなりに必要です。
また部品同士をはめ込みを行うため、精度も必要です。
ない場合は rinkak とかで頼むのがいいと思います。 手前味噌おつです。

あまりお金を使いたくない場合は、タミヤさんの工作キットでも代用できます。
というかソッチのほうが色々辛さが少ないです。
Android Thingsをやることをメインとするならば、買ってしまうのもありです。

戦車の3Dモデル

今回利用したのは、thingiverseでotvinta3dさんが公開している「RC Tank that Prints without Support, Assembles without Hardware and Wires without Soldering」です。

造形時に、全くサポート材を出さずに造形できる、スグレモノです。
サイトの方にも書いてありますが、普通に全パーツ造形すると24時間以上かかります。
ただ、精度を下げて速くしたりすると噛み合わなくて、結局プリントしたものを削る羽目になります。

組み立て方法や、必要なモーターなどのスペックは http://www.otvinta.com/download10.html にも書いてありますので一読してください。

タミヤさんの工作キットとかで代用してもいい気がしますゲフンゲフン

30 RPM DC 6V 2.5KG マイクロギアボックス減速モーター

↑の3Dモデルのスペックシートに書いてあるスペックのものです。
Amazon等で検索すると出てきますので、適当そうなものを買いました。30 RPMだとスピードが結構遅いです。

Raspberry Pi Model 3B & Android Things(DP5.1)

Android Thingsを利用したのでRaspberry Pi Model 3Bを利用しています。
※ ZeroやModel 2にはAndroid Thingsが入れられません

SDカードとか他にも諸々必要なものはあります。

モバイルバッテリー

Raspberry Piに電源供給するために必要です。
2A以上出るものが望ましいです。

L298N デュアルHブリッジ DCステップ モーター ドライバー コントローラー

モータードライバーです。
9V以上の電源を繋いでも問題ないもので、2つのモーターを付けれるものを使用してください。

バッテリーケース & バッテリースナップ

筐体にバッテリーケースがついているのですが買ったほうがいいです。
単3電池が6-8本乗るものがいいと思います。
3Dプリントした場合はモデル側にバッテリーケースがついています。
ただ、あまりハマりが良くなく、また配線が難しくなるため、買ったほうがいいと思います。

またバッテリーケースを買う場合はバッテリースナップも忘れないようにしてください。

導線 & ジャンプワイヤ

モータやらバッテリーケースやら、諸々を配線する為に使います。

作る

3Dプリンターを利用して筐体を作成してください。
上にも書いたとおり、全てのパーツがサポート材無しで出すことが出来ます。
かなり時間はかかりますが、コツコツプリントしてください。

なお、以下の天井パーツと大砲パーツは、見た目のパーツで機能はないので、なくても大丈夫です。

組み立てる

http://www.otvinta.com/download10.html を参考に組み立ててください。
組み立てながらある程度配線が必要です。

配線

以下のようにしてください。

外付けの電源の電圧によりモータードライバーへの接続方法が変わるので注意してください。

まとめ

今回はとりあえず紹介と組み立てまで行いました。
次回はAndroid Thingsのインストールを行いたいと思います。

その他の記事

Other Articles


鵜呑みにしないで! —— 書籍『クリーンアーキテクチャ』所感 ≪null 篇≫


W3C Workshop on Web Games参加レポート

2019/06/28
TypeScriptでObject.assign()に正しい型をつける

2019/06/25
カブクエンジニア開発合宿に行ってきました 2019夏


Hola! KubeCon Europe 2019の参加レポート

2019/06/19
Clean Resume きれいな環境できれいな履歴書を作成する

2019/05/20
[Web フロントエンド] 状態更新ロジックをフレームワークから独立させる

2019/04/16
C++のenable_shared_from_thisを使う

2019/04/12
OpenAPI 3 ファーストな Web アプリケーション開発(Python で API 編)

2019/04/08
WebGLでレイマーチングを使ったCSGを実現する

2019/04/02
『エンジニア採用最前線』に感化されて2週間でエンジニア主導の求人票更新フローを構築した話

2019/03/29
その1 Jetson TX2でk3s(枯山水)を動かしてみた

2019/03/27
任意のブラウザ上でJestで書いたテストを実行する

2019/02/08
TypeScript で “radian” と “degree” を間違えないようにする

2019/02/05
Python3でGoogle Cloud ML Engineをローカルで動作する方法

2019/01/18
SIGGRAPH Asia 2018 参加レポート

2019/01/08
お正月だョ!ECMAScript Proposal全員集合!!

2019/01/08
カブクエンジニア開発合宿に行ってきました 2018秋

2018/12/25
OpenAPI 3 ファーストな Web アプリケーション開発(環境編)

2018/12/23
いまMLKitカスタムモデル(TF Lite)は使えるのか

2018/12/21
[IoT] Docker on JetsonでMQTTを使ってCloud IoT Coreと通信する

2018/12/11
TypeScriptで実現する型安全な多言語対応(Angularを例に)

2018/12/05
GASでCompute Engineの時間に応じた自動停止/起動ツールを作成する 〜GASで簡単に好きなGoogle APIを叩く方法〜

2018/12/02
single quotes な Black を vendoring して packaging

2018/11/14
3次元データに2次元データの深層学習の技術(Inception V3, ResNet)を適用

2018/11/04
Node Knockout 2018 に参戦しました

2018/10/24
SIGGRAPH 2018参加レポート-後編(VR/AR)

2018/10/11
Angular 4アプリケーションをAngular 6に移行する

2018/10/05
SIGGRAPH 2018参加レポート-特別編(VR@50)

2018/10/03
Three.jsでVRしたい

2018/10/02
SIGGRAPH 2018参加レポート-前編

2018/09/27
ズーム可能なSVGを実装する方法の解説

2018/09/25
Kerasを用いた複数入力モデル精度向上のためのTips

2018/09/21
競技プログラミングの勉強会を開催している話

2018/09/19
Ladder Netwoksによる半教師あり学習

2018/08/10
「Maker Faire Tokyo 2018」に出展しました

2018/08/02
Kerasを用いた複数時系列データを1つの深層学習モデルで学習させる方法

2018/07/26
Apollo GraphQLでWebサービスを開発してわかったこと

2018/07/19
【深層学習】時系列データに対する1次元畳み込み層の出力を可視化

2018/07/11
きたない requirements.txt から Pipenv への移行

2018/06/26
CSS Houdiniを味見する

2018/06/25
不確実性を考慮した時系列データ予測

2018/06/20
Google Colaboratory を自分のマシンで走らせる

2018/06/18
Go言語でWebAssembly

2018/06/15
カブクエンジニア開発合宿に行ってきました 2018春

2018/06/08
2018 年の tree shaking

2018/06/07
隠れマルコフモデル 入門

2018/05/30
DASKによる探索的データ分析(EDA)

2018/05/10
TensorFlowをソースからビルドする方法とその効果

2018/04/23
EGLとOpenGLを使用するコードのビルド方法〜libGLからlibOpenGLへ

2018/04/23
技術書典4にサークル参加してきました

2018/04/13
Python で Cura をバッチ実行するためには

2018/04/04
ARCoreで3Dプリント風エフェクトを実現する〜呪文による積層造形映像制作の舞台裏〜

2018/04/02
深層学習を用いた時系列データにおける異常検知

2018/04/01
音声ユーザーインターフェースを用いた新方式積層造形装置の提案

2018/03/31
Container builderでコンテナイメージをBuildしてSlackで結果を受け取る開発スタイルが捗る

2018/03/23
ngUpgrade を使って AngularJS から Angular に移行

2018/03/14
Three.jsのパフォーマンスTips

2018/02/14
C++17の新機能を試す〜その1「3次元版hypot」

2018/01/17
時系列データにおける異常検知

2018/01/11
異常検知の基礎

2018/01/09
three.ar.jsを使ったスマホAR入門

2017/12/17
Python OpenAPIライブラリ bravado-core の発展的な使い方

2017/12/15
WebAssembly(wat)を手書きする

2017/12/14
AngularJS を Angular に移行: ng-annotate 相当の機能を TypeScrpt ファイルに適用

2017/12/08
Android Thingsで4足ロボットを作る ~ Android ThingsとPCA9685でサーボ制御)

2017/12/06
Raspberry PIとDialogflow & Google Cloud Platformを利用した、3Dプリンターボット(仮)の開発 (概要編)

2017/11/20
カブクエンジニア開発合宿に行ってきました 2017秋

2017/10/13
第2回 魁!! GPUクラスタ on GKE ~PodからGPUを使う編~

2017/10/05
第1回 魁!! GPUクラスタ on GKE ~GPUクラスタ構築編~

2017/09/13
「Maker Faire Tokyo 2017」に出展しました。

2017/09/11
PyConJP2017に参加しました

2017/09/08
bravado-coreによるOpenAPIを利用したPythonアプリケーション開発

2017/08/23
OpenAPIのご紹介

2017/08/18
EuroPython2017で2名登壇しました。

2017/07/26
3DプリンターでLチカ

2017/07/03
Three.js r86で何が変わったのか

2017/06/21
3次元データへの深層学習の適用

2017/06/01
カブクエンジニア開発合宿に行ってきました 2017春

2017/05/08
Three.js r85で何が変わったのか

2017/04/10
GCPのGPUインスタンスでレンダリングを高速化

2017/02/07
Three.js r84で何が変わったのか

2017/01/27
Google App EngineのFlexible EnvironmentにTmpfsを導入する

2016/12/21
Three.js r83で何が変わったのか

2016/12/02
Three.jsでのクリッピング平面の利用

2016/11/08
Three.js r82で何が変わったのか

2016/12/17
SIGGRAPH 2016 レポート

2016/11/02
カブクエンジニア開発合宿に行ってきました 2016秋

2016/10/28
PyConJP2016 行きました

2016/10/17
EuroPython2016で登壇しました

2016/10/13
Angular 2.0.0ファイナルへのアップグレード

2016/10/04
Three.js r81で何が変わったのか

2016/09/14
カブクのエンジニアインターンシッププログラムについての詩

2016/09/05
カブクのエンジニアインターンとして3ヶ月でやった事 〜高橋知成の場合〜

2016/08/30
Three.js r80で何が変わったのか

2016/07/15
Three.js r79で何が変わったのか

2016/06/02
Vulkanを試してみた

2016/05/20
MakerGoの作り方

2016/05/08
TensorFlow on DockerでGPUを使えるようにする方法

2016/04/27
Blenderの3DデータをMinecraftに送りこむ

2016/04/20
Tensorflowを使ったDeep LearningにおけるGPU性能調査

→
←

関連職種

Recruit

バックエンドエンジニア(Python・Go)

業務内容

当ポジションは弊社Webサービスのバックエンド機能設計及び実装を担当します。 サービス毎の開発チームで2週間スプリントのスクラム開発を実施しています。 週次で開発チームミーティングを実施し、実装設計の相談や工数見積もりを行います。 全ての開発コードはレビューと自動テストによって品質を保っています。 また、リファクタリングやフレームワークのバージョンアップも開発フローに組込み、技術的負債を放置しない開発を目指しています。

フロントエンドエンジニア(TypeScript)

業務内容

当ポジションは弊社Webサービスのフロントエンド機能設計及び実装を担当します。 サービス毎の開発チームで2週間スプリントのスクラム開発を実施しています。 週次で開発チームミーティングを実施し、実装設計の相談や工数見積もりを行います。 全ての開発コードはレビューと自動テストによって品質を保っています。 また、リファクタリングやフレームワークのバージョンアップも開発フローに組込み、技術的負債を放置しない開発を目指しています。

機械学習エンジニア

業務内容

センサーデータの分析モデルの調査・研究・開発。 Kabuku Connectの製造データ(3D、2D)から情報を抽出するモデルの構築。 データの前処理や学習、ハイパーパラメータチューニング、獲得モデルの評価、プロダクションのデータパイプラインとの連携をお願いします。

インターン(Webエンジニア)

業務内容

業務から独立した、調査・研究系のタスクをおまかせしています。コードレビュー、 社内での報告会、 ブログ記事執筆を通して着実にスキルアップしていただくことを目指しています。 (希望があれば、プロダクトの開発業務もおまかせします。)

→
←

お客様のご要望に「Kabuku」はお応えいたします。
ぜひお気軽にご相談ください。

お電話でも受け付けております
03-6380-2750
営業時間:09:30~18:00
※土日祝は除く