Upload
kirinnico
View
2.778
Download
0
Embed Size (px)
Citation preview
明日からできる!面白ガジェットの作り方
きりん (@kirin_nico)
2015/8/29プロ生勉強会 第35回@株式会社DMM.comラボ
•作品紹介/デモ
•ガジェットの作り方
•マイコンとは何か?
•プログラマブルなボードの紹介
今日のテーマ決める前
ほかの人は何話すのかな?
Raspberry piとかArduinoとかの話
しようかな
ほかの人は何話すのかな?
Raspberry piとかArduinoとかの話
しようかな
ほかの人は何話すのかな?
_人人人人人人_> だだかぶり < ̄Y^Y^Y^Y^Y^Y ̄
というわけで
ざっくりとしたハードウェア系の話をします
自己紹介
自己紹介
• HN• きりん (@kirin_nico)
• プロ生ちゃんFC 会員No.23
• 主な活動場所• プロ生/ニコニコ技術部
• お仕事• プログラマーではありません• いちおう電気電子/組み込み系
趣味
• 「作ること」ならなんでも
• 電子工作、プログラミング(特に画像処理と組み込み系)、ロボット、イラスト、手芸、クラフト系工作などなど…
• 秋葉原/ハンズ/ホームセンターなどで簡単に安く買えるもので作ることを心がけています
趣味の作品紹介
•「必ず6が出るサイコロ」
•「きのこたけのこ判別機」
趣味の作品紹介 その他
•手芸とか
普段使っているプログラミング言語
• 浅く広く、必要とあらば何でもやります
• 趣味:C#/C
• 仕事:C/asm/Verilog HDL/TCL/Perl/VBAなど…
• Javascript使えない系男子
話は脱線しますが
情報処理研究会
千由莉推し
千由莉推し
_人人人人人_> かわいい < ̄Y^Y^Y^Y^Y ̄
千由莉推し
世界に(たぶん)2つしかない千由莉パネル
千由莉推し
去年・一昨年のクリスマス (Unity + OculusRift)
千由莉推し
去年・一昨年のクリスマス (Unity + OculusRift)
得られた知見
・ケーキが見えない → 食べられない
・飲み物が引っかかる → 飲めない
千由莉推し
千由莉イラストやグッズが増えることを期待し知名度向上に力を注いでいます
千由莉推し
千由莉が活躍する「すぱこー」を読もう!
http://pronama.azurewebsites.net/web-comic/
脱線おわり
今日のテーマ
ガジェットを作ろう
ガジェットとは?
• ガジェット(Gadget)は、目新しい道具、面白い小物といった意味を持つ、携帯用の電子機器類を指す用語。(Wikipedia)
• ガジェットとは、目新しい道具、面白い小物、携帯用の電子機器といった意味の英単語。(中略)人目を引く、気の利いた、ユニークな機能の、といったニュアンスを込めて使われる例が多い。(IT用語辞典 e-Words)
→ 今回は「変わった電子機器」「ハードウェアメインの面白アイテム」程度の意味で使っています
身近なガジェットの例 (by Wikipedia)
•スマートフォン
•デジタルカメラ
•携帯ゲーム機
•電子辞書
身近じゃないガジェット
• Gigazine/Gizmodo/Engadget• ガジェットの記事多数
• Kickstarter/Indiegogoなど• 様々なガジェットが出資募集中
• Make:• “Maker”達の作品がたくさん載っている
• ニコニコ技術部 (ニコニコ動画)• ジャパニーズクレイジーピーポー
Webサービスやスマホアプリとの違い
ハードウェアの部分が決まっていない
→ 自由に作れる(作らないといけない)
Webサービスの場合
サーバー
PCディスプレイ キーボード/マウス
HTTP
USBHDMI
WLAN
API API
スマホアプリの場合
スマホディスプレイ タッチパネル
センサ
サーバー
HTTP
I2CHDMI
WLAN
API APIAPI I2C
ガジェットの場合
CPUコアは?OSは?
そもそもプログラムかける?
出力は?そもそも表示デバ
イスある?
入力は?キーボード?ボタン?
センサ??接続は?
サーバー?スマホ?
HTTPWLAN?Bluetooth?
HDMI?SPI?GPIO?
USB?SPI?GPIO?
I2C?デジタル入力?アナログ入力?
ガジェットは作れる
•小型/安価/高性能なCPUボードの登場
•はんだ付けをしなくてもよいセンサモジュールや電源モジュールの登場
•家庭用3Dプリンタや出力サービスの登場
→ つなげる・組み立てるだけでもハードウェアが出来上がる
なぜガジェットを作るのか?
•不便なことを便利にしたい
•見たこともない変なものを作りたい
•とりあえず自分で作ったものが動くのは面白い
作品紹介/デモ
必ず6が出るサイコロ
• 1面7個のLEDでサイコロの目を再現
•センサーで向きを判断し、上面に6を表示
きのこたけのこ判別機
•Webカメラできのことたけのこを画像認識
•自作のロボットアームで仕分け
手のりきめぇ丸
•ゆっくりの亜種「きめぇ丸」の手のひらサイズロボット
•ピンポン玉に回路を詰め込んでいる
•リモコン操作で喋る、頬を赤らめる
ガジェットの作り方
ガジェット作りに必要なもの
• プログラミングの知識
• ハードウェア (ボード、部品など)
• 電子回路の知識 (最低限オームの法則)
• 発想力
• 楽をする工夫と心
作るうえで考ておくべきこと
•機能
•大きさ
•電源
•予算
機能
何をするガジェットか?
↓
どんな機能を持たせるか?
↓
どうやって実現するか?
大きさ
•ボードや部品の選定に大きく関わる
cpu
電源
cpu センサ
電源
大きい部品の制約を受けづらい→ 自由に作れる
小さい部品の制約を受けやすい→ 機能/性能に制限
電源
• 部品が必要とする電圧/電流がまちまちなことがある
• 電池にするか?外部電源にするか?
• 最初は乾電池かUSBから取れるようにしておくと楽
電源回路電源回路
電池 アダプタ
予算
•部品単品は安くてもそろえると高くなる
•2個作れば2倍のコストがかかる
•修理や変更をするにもお金がかかる
前段階
1. 作りたいものから作り方を考える (作りたいもの駆動開発)
または
2. 今持っている部品から作れるものを考える (積み部品駆動開発)
• 予備部品が溜まってしまった• 面白い部品が売っていたから買ってしまった• 話題のボードがあるから買ってしまった
機能→実装を考える
(自作ガジェットを例に)
必ず6が出るサイコロの場合
上の面が6になる
面をLEDで再現センサで上面を
検知
42個のLEDそれを制御するIO
加速度センサその値取得をするI/F
ガジェットの機能
実装方法
必要なもの
きのこたけのこ判別機の場合
きのことたけのこを判別し、仕分ける
きのこ・たけのこを画像認識
ロボットアームで仕分け
Webカメラ画像認識エンジン
モーターモーター制御回路
ガジェットの機能
実装方法
必要なもの
必要なものへの落とし込み
•必要なものまで落とし込むとボードや部品が選定しやすい
•部品から考えると破たんしやすい
(でも結構やっちゃう…)
より詳細な実装を考える
単独で動くものか?
•ボード/部品の選定に関わる
単独で動く・取り回しは楽・部品選びや制御は大変
PCで制御する・取り回しが大変・部品選びや制御は楽
出力を考える
•ディスプレイがあるとは限らない
・LEDで面を表現(デバッグ大変)
・認識結果をディスプレイに表示・モーター制御
入力を考える
•ボタン?タッチ?
•センサは?
・加速度センサ・キーボード入力・Webカメラからの画像入力(USB)
性能がどれくらい必要か考える
•PCやスマホにいろいろやらせるか?
•性能が低くてもよいか?
性能が低くてもよい向きの判定と
光らせるLEDの選択のみ
それなりの性能が必要リアルタイムに画像認識を行いながらモーター制御
使用するCPUや部品の選定
• サイコロ• 小さい• IOがたくさん必要• 性能低くてよい→ マイコンチップを使用
• 判別機• 大きさは不問• 演算性能が必要• モーター制御が必要→ メインはPC→ モーター制御に市販のボード(arduino的なやつ)使用
とりあえず作ってみよう
プロトタイピング
•簡単、確実な構成でまずは動くものを試作する
→ 必要な性能の確認、回路の検証、センサ測定の試行など
まずは動くものを!
•プロトタイピングボードを使おう•Arduino / mbed / Raspberry pi
• 情報がたくさんある
• 亜種がたくさんある(Arduino/mbed)
Arduino mbed Raspberry pi
画像:arduino.cc/NXP/raspberrypi.org
回路を考えよう
•回路モジュールを使おう•基本的につなぐだけで使える(複雑な回路を組まなくてよい)•センサの場合、2本程度で通信できる
温度センサモジュール Wifiモジュール 電源モジュール
画像:秋月電子
回路を組もう
•ブレッドボードを使おう•はんだ付け不要•回路作成、修正が簡単
ブレッドボード 使い方
画像:秋月電子
イベントに参加しよう
イベント参加の意義
• 見学• なんか作ろうって気になる
• 展示• 褒められてまた作ろうって気になる• 改善点が見つかる• 交流が深まる• 懇親会のお酒おいしいです(^q^)
国内の主な工作展示イベント
•Maker Faire Tokyo•たぶん国内最大の工作展示イベント
•ニコニコ技術部勉強会 (NT*)•ニコニコ技術部有志による展示イベント•京都/金沢/東京/名古屋/九州(?)
推薦図書
ハルロック (モーニングKC)
• 女子大生が変なものを作っていく話• アイディアから作品に落とし込んでいく過程が秀逸
西餅(著)/講談社
マイコンプログラミング
•Arduino/mbedのCPUチップ
→ MCU (マイコン)
• Raspberry piのCPUチップ
→ MPU (アプリケーションプロセッサ)
→ PCのCPUに近い
mbedもRaspiもARMが載っているが、種類が違う
マイコンとは何か
• Micro controller unit (ワンチップマイコン)
• CPU+メモリ(SRAM/ROM)+システム制御+周辺モジュール+I/Oを"一つ"の集積回路に組み込んだもの
画像:ルネサスエレクトロニクス
ワンチップマイコンの例
マイコンとは何か
• 汎用CPUよりも自己充足性と低価格性を備えている
→ PC用のCPUを買ってきても何もできない
→ MCUは少しの外付け回路でいろいろできる
• そのかわり性能はPC用セットに比べてプア• 動作周波数: 数MHz~数百MHz
• ROM容量: 数byte~数Mbyte
• RAM容量: 数byte~数百Kbyte
マイコンとは何か
CPUIO
IO
制御部
周辺機能
周辺機能入
力出力
レジスタ
レジスタ
レジスタ
レジスタ
レジスタ
レジスタ
制御はレジスタの読み書きで行う
マイコンは何ができるのか?
マイコンは何ができるのか
•四則演算/論理演算
•内蔵メモリのwrite/read
マイコンは何ができるのか
•タイマー•クロック単位なので正確
CPU
周辺機能(タイマ)
レジスタ
スタートから3000クロック経過した
マイコンは何ができるのか
•GPIO (General purpose Input/Output)
•任意の端子の入出力
CPU
5V 0V
入力は1 !! 0を出力!!
マイコンは何ができるのか
•シリアル通信•USART/SPI/I2Cなど
CPU
周辺機能(シリアル通信)
レジスタ
0x5Aを出力!!
1 0 1 0 0 1 0 1
マイコンは何ができるのか
•アナログ値入出力•AD/DA変換
CPU
周辺機能(ADC)
レジスタ
入力は0x800!!
2.5V
どうやって開発するのか?
マイコンの一般的な開発
•言語は大体Cのみ
•レジスタを叩きまくるスタイル
•ライタが必要
•開発用のボードを使用するか自分で起こす
ボードの選び方
選定にあたって考えること
•大きさ•性能• I/Oの数•搭載機能•消費電力•開発言語•値段•入手のしやすさ
言語/ライティング
•素のマイコンはほとんどがCでの開発だが、以降紹介するボードはより簡単な言語で開発できるようになっている
•ライター相当の機能がついており、USBでつなげたら書き込みができる
OSなしのマイコンボード
Arduino
• 説明不要の有名プロトタイピングボード
• Arduino IDE/Arduino言語でプログラミング
• AtmelのAVRが乗っている(例外あり)
• 情報多し / 互換ボード多し (他社製品含む)
• だいたい3000円~
Arduino UNO Arduino Nano Arduino Yun
びんぼうでいいの (Arduino互換)
• aitendoのArduno互換ボード
• 自分で組み立てが必要
• 液晶とかリモコンとかのセットが999円
びんぼうでいいの (aitendo)
Digispark USB (Arduino互換)
• 超小型Arduino互換ボード
• 20×28mmくらい
• Arduinoと比べて制限多し
• HIDのためドライバ不要
• $9くらい(中国通販サイトでパチモノ?が$3以下で買える)
Digispark (digistump)
mbed
• ARM社のプロトタイピング用ワンボードマイコン
• 今は各社のARMマイコンボードに対応している
• C++ に共通ライブラリをのっけた感じ
• クラウドコンパイラ (ブラウザで開発)
• よく使われるNXPのやつは6000円 (2000円くらいのあり)
mbed LPC1768 (NXP) FRDM-KL25Z (Freescale)
がじぇるね (がじぇっとるねさす)
• ルネサスのRX/RLマイコンが載ったボード
• 形状はArduino互換、言語も大体Arduino互換
• クラウドコンパイラで開発
• GR-SAKURAが3000円くらい~
GR-SAKURA GR-KURUMI GR-KAEDE
konashi
• iPhone/iPod/iPadからJavascriptで制御可能なボード
• Bluetooth LEモジュール搭載
• 10000円くらい (互換品のkoshianは980円!)
Konashi (ユカイ工学) Koshian (MACNICA)
OS (Linux)搭載のプロセッサボード
Raspberry pi
• ラズベリーパイ財団の開発
• もともと教育用 (なのだが、おっさん達が飛びついた)
• Linuxが走るので言語の自由度が高く、また多くのUSBデバイスが使える
• B+: 5000円~ 2B:5500円~
Raspberry pi2 (raspberrypi.org)
Edison
• IntelのIoT向け超小型開発ボード
• Atom(500MHz)、Wifiモジュール、Bluetoothが載っており高性能
• Linuxが走る
• I/Oが1.8Vなのでちょっと使いにくい…
• 単品6800円くらい + 変換ボード必須
Edison (Intel)
最近のホットなデバイス
FlashAir
• 東芝のWifi付きSDカード…なのだが、GPIOやSPIなどが使える
• 公式で開発者サイトを公開したり、同人誌を出すなど明後日の方向に盛り上がり中
• Luaで制御可能
• 8GB 3000円~
FlashAir(TOSHIBA)
ESP8266
• 絶賛盛り上がり中のWifiモジュール
• 高性能なCPU、ROM/RAM、通信IFを搭載しており、単体動作も可能
• Arduino IDEで開発できる
• 技適済みのものが500円~買える
ESP-WROOM-02
漢は黙って
素のマイコン
•国内外いろいろなメーカーが作っている
•自由度は最高
•機能/性能/価格/サイズはピンキリ
•はんだ付け必須
RX71M (ルネサスエレクトロニクス)ATTINY10 (ATMEL)
使い分け
• 簡単に使いたい→ Arduino
• Arduioよりも高性能なのが欲しい→ mbed
• PCみたいな感覚で開発したい→ Raspberry pi
• USB機器を使いたい→ Raspberry pi
使い分け
• 情報がなるべく多いのが良い
→ Arduino
• 近所で買いたい→ FlashAir
• 自由が欲しい
→ 素のチップを使うんだ
おわりに
•作りたいものを考えて
•プロトタイピングボードを買って
•ggr bingれば何とかなる!
ご清聴ありがとうございました