組み込みやろうぜ!ソフト屋さん向けの組み込み電子工作講座 (情報科学若手の会2013 #wakate2013 )

7,368 views

Published on

2013.9.14-16 に開催の情報科学若手の会( #wakate2013 ) で発表した資料です。

Published in: Self Improvement

組み込みやろうぜ!ソフト屋さん向けの組み込み電子工作講座 (情報科学若手の会2013 #wakate2013 )

  1. 1. 組み込みやろうぜ! ソフト屋さん向けの電子工作講座 北海道大学 大学院情報科学研究科 複合情報学専攻 調和系工学研究室 博士課程3年 辻 順平 情報科学若手の会2013
  2. 2. 自己紹介 辻 順平(北大DC3) Twitter: @tsujimotter Facebook: junpeitsuji Github: junpeitsuji 情報科学若手の会2013
  3. 3. ZigBeeを用いた屋内測位システム サーバ側でRSSIを収集し測位計算することで 端末を持つ利用者・従業員の位置や移動軌跡を収集できる仕組み イベント参加者の動態分析[中村ほか,2006] 位置に注目した非日常状態検出[青木ほか,2004] 医療スタッフの動態分析[納谷ほか,2005] 応用 Ethernet ZigBee (電波強度:RSSI) 計測 作っているもの (研究)
  4. 4. 作っているもの (趣味) 情報科学若手の会2013
  5. 5. フィジカルコンピューティング勉強会 情報科学若手の会2013
  6. 6. 下記のいずれかに当てはまる人 ・ ハードウェアが嫌い ・ ハードウェアに苦手意識がある ・ ハードウェアに興味がない 情報処理若手の会2013
  7. 7. なぜ嫌い?なぜ苦手?なぜ興味がない? • 難しそう • 爆発しそう • 習ったことがない • 触ったことない • 始め方がわからない • 値段が高い • 購入が面倒 • 何ができるのかわからない • 自分には必要ない • かっこ悪い • オタクっぽい • マニアックそう 情報科学若手の会2013
  8. 8. 電子工作に触る前の自分 • 難しそう • 爆発しそう • 習ったことがない • 触ったことない • 始め方がわからない • 値段が高い • 購入が面倒 • 何ができるのかわからない • 自分には必要ない • かっこ悪い • オタクっぽい • マニアックそう 情報科学若手の会2013
  9. 9. 本日伝えたいこと • ソフトウェア系こそマイコン • マイコン怖くないよ • マイコン楽しいよ 情報科学若手の会2013
  10. 10. 今日話すマイコンボード Arduino (アルドゥイーノ) 情報科学若手の会2013
  11. 11. 今日話すマイコンボード アナログポート (センサー入力) デジタル入出力 (LED, モーターなど) 情報科学若手の会2013
  12. 12. いろいろな Arduino 情報科学若手の会2013
  13. 13. いろいろな Arduino Arduino UNO R3 情報科学若手の会2013
  14. 14. 今日話すマイコンボード ※今日は話しません 情報科学若手の会2013
  15. 15. 距離を測りたい マイコンボードはインターフェース 情報科学若手の会2013
  16. 16. 距離を測りたい マイコンボードはインターフェース 頭の中のアイデア(妄想)を現実世界に 落とし込むためのインターフェース マイコンボード 情報科学若手の会2013
  17. 17. にて公開中!! バックブレーダー 検索 高性能AIによる完全自律走行 サテライトシステムによるマシントラッキング パワーブースター機能 測距センサを用いた障害物回避 夢のマシン「バックブレーダー」 実現! 情報科学若手の会2013
  18. 18. 本日伝えたいこと • ソフトウェア系こそマイコン • マイコン怖くないよ • マイコン楽しいよ 情報科学若手の会2013
  19. 19. Arduino を勉強する環境 Arduino をはじめよう 情報科学若手の会2013
  20. 20. Arduino を勉強する環境 Prototyping Lab 情報科学若手の会2013
  21. 21. Arduino を勉強する環境 ドットインストール 情報科学若手の会2013
  22. 22. Arduino を勉強する環境 Arduino 日本語リファレンス 情報科学若手の会2013
  23. 23. Arduino を勉強する環境 建築発明工作ゼミ 2008 情報科学若手の会2013
  24. 24. Arduino を勉強する環境 SWITCH SCIECE, 秋月電子 情報科学若手の会2013
  25. 25. Arduino を勉強する環境 123D Circuit.io: http://123d.circuits.io 情報科学若手の会2013
  26. 26. Arduino のインストール (Windows 7 の場合) 情報科学若手の会2013
  27. 27. Arduino の起動 情報科学若手の会2013
  28. 28. Arduino を使う 情報科学若手の会2013
  29. 29. LEDを光らせる GND Digital 13 情報科学若手の会2013
  30. 30. LEDを光らせる GND Digital 13 void setup() { pinMode(13, OUTPUT); } void loop() { digitalWrite(13, HIGH); delay(1000); digitalWrite(13, LOW); delay(1000); } 情報科学若手の会2013
  31. 31. センサーのデータを取得する A0 5V GND V0 Vcc GND 情報科学若手の会2013
  32. 32. センサーのデータを取得する A0 5V GND V0 Vcc GND void setup() { } void loop() { // 0 - 1023 の間でセンサー値を取得 int value = analogRead(A0); // 距離 [cm] に変換 int range = ((6787 / (voltage - 3)) - 4); } 情報科学若手の会2013
  33. 33. いろいろなセンサー etc. 情報科学若手の会2013
  34. 34. DCモーターを動かす Digital 9 GND + - 情報科学若手の会2013
  35. 35. DCモーターを動かす Digital 9 GND + - 電流が足りない!! 情報科学若手の会2013
  36. 36. DCモーターを動かす Digital 9 GND + - OUT1 OUT2 IN1 IN2 モーター ドライバ 回路 Vin GND GND 5V 情報科学若手の会2013
  37. 37. DCモーターを動かす + - 外部電源が必要な場合も Digital 9 GND OUT1 OUT2 IN1 IN2 モーター ドライバ 回路 Vin GND GND 5V GND Vs 情報科学若手の会2013
  38. 38. DCモーターを動かす Digital 9 GND + - OUT1 OUT2 IN1 IN2 モーター ドライバ 回路 Vin GND GND 5V const int outputPin = 9; void setup(){ pinMode(outputPin,OUTPUT); } void loop(){ int rotation = 255; // 回転速度を 0 - 255 で指定 analogWrite(outputPin, rotation); delay(100); } 情報科学若手の会2013
  39. 39. DCモーターを動かす モータードライバ: TA7291P 情報科学若手の会2013
  40. 40. DCモーターを動かす Ardumoto (Arduino専用モータードライバシールド) Arduino スタック 情報科学若手の会2013
  41. 41. DCモーターを動かす + - + - 情報科学若手の会2013
  42. 42. 戦車ロボット 赤外線測距 モジュール (×2) Ardumoto モータードライバ Arduino UNO TAMIYA 楽しい工作シリーズ No.108 タンク工作基本セット TAMIYA 楽しい工作シリーズ No.157 ユニバーサルプレート TAMIYA 楽しい工作シリーズ No.168 ダブルギヤボックス 左右独立4速タイプ 情報科学若手の会2013
  43. 43. Arduino Robot 情報科学若手の会2013
  44. 44. 本日伝えたいこと • ソフトウェア系こそマイコン • マイコン怖くないよ • マイコン楽しいよ 情報科学若手の会2013
  45. 45. Arduino 単体でも遊べるけれど 情報科学若手の会2013
  46. 46. Arduino を PC につなげると可能性は無限大に 情報科学若手の会2013
  47. 47. シリアル通信 PC-マイコン間の テキスト通信 ボーレート (baud rate) コムポート (COM port) シリアル通信 通信端末の識別子 (COM10 など) 通信速度 (9600 bps など) 情報科学若手の会2013
  48. 48. PC-マイコン間の テキスト通信 ボーレート (baud rate) コムポート (COM port) シリアル通信 通信端末の識別子 (COM10 など) 通信速度 (9600 bps など) シリアル通信のライブラリ C++ (openFrameworks) Java Processing Ruby JavaScript (node.js) ofSerial RXTX library processing.serial.* ruby-serialport node-serialport 情報科学若手の会2013
  49. 49. PC-マイコン間の テキスト通信 ボーレート (baud rate) コムポート (COM port) シリアル通信 通信端末の識別子 (COM10 など) 通信速度 (9600 bps など) Arduino側のシリアル通信 int incomingByte = 0; int outgoingByte = 0; void setup() { Serial.begin(9600); } void loop() { if( Serial.available() > 0 ){ incomingByte = Serial.read(); outgoingByte = incomingByte+1; Serial.println((char)outgoingByte); } } シリアル通信で受信した文字のアスキーコードを ”+1” して返す Arduino スケッチ 情報科学若手の会2013
  50. 50. Processing × Arduino 情報科学若手の会2013
  51. 51. Processing と Arduino の連携 import processing.serial.*; Serial arduino; void setup() { size(400, 400); frameRate(10); if( Serial.list().length > 0 ) { arduino = new Serial(this, Serial.list()[0], 9600); arduino.bufferUntil('¥n'); } else { arduino = null; } } 情報科学若手の会2013
  52. 52. Processing と Arduino の連携 void draw() { if( arduino != null ){ int x = 100; // arduino にデータを書き込む arduino.write(value); } } void serialEvent(Serial arduino){ // arduino からのデータを読み込む int x = arduino.read(); } 情報科学若手の会2013
  53. 53. Cloud Computing × Arduino 情報科学若手の会2013
  54. 54. Twitter Streaming API との連携 Timelineの風 • Twitter4j の Twitter Streaming API を使って、 「Twitter」を含むツイートの数を取得。 • ツイート数とモーターの回転数を連動。 情報科学若手の会2013
  55. 55. OpenFrameworks × Arduino 情報科学若手の会2013
  56. 56. ofSerial を使ったArduinoからのデータ取得 #pragma once #include "ofMain.h" class testApp : public ofBaseApp{ public: void setup(); void update(); void draw(); ... private: ofSerial serial; // シリアル通信のオブジェクト }; 情報科学若手の会2013
  57. 57. ofSerial を使ったArduinoからのデータ取得 void testApp::update(){ // check for data if ( serial.available() > 0 ) { // 1 byte の文字を取得 char byte = serial.readByte(); printf("%c¥n", byte); } } void testApp::setup(){ // シリアル通信の設定 serial.listDevices(); serial.setup("COM10", 9600); } ※シリアル通信のReadLineの方法: SURERS KUMAR / SENDING STRINGS FROM ARDUINO TO OPENFRAMEWORKS, http://sureskumar.wordpress.com/2012/12/17/sending-strings-from-arduino-to-openframeworks/ 情報科学若手の会2013
  58. 58. ofSerial を使ったArduinoからのデータ取得 赤外線測距センサーを使ったターゲッティング 情報科学若手の会2013
  59. 59. Open CV × Arduino 情報科学若手の会2013
  60. 60. にて公開中!! バックブレーダー 検索 高性能AIによる完全自律走行 サテライトシステムによるマシントラッキング パワーブースター機能 測距センサを用いた障害物回避 OpenCV の画像トラッキング+Arduinoロボット 情報科学若手の会2013
  61. 61. OpenCV の画像トラッキング+Arduinoロボット C++ アプリケーション Arduino uno 3D描画 モジュール (Ogre) 画像解析 モジュール (OpenCV) ミニ四駆操作用 XBee通信モジュール (Boost) Web Camera 管理操作用 のみ 完全自律制御 情報科学若手の会2013
  62. 62. × Arduino 情報科学若手の会2013
  63. 63. node-serialport モジュールを使ったシリアル通信 var serialport = require('serialport'); var portName = 'COM9'; // Windows 環境 var sp = new serialport.SerialPort(portName, { baudRate: 115200, dataBits: 8, parity: 'none', stopBits: 1, flowControl: false, parser: serialport.parsers.readline("¥n") }); 情報科学若手の会2013
  64. 64. node-serialport モジュールを使ったシリアル通信 // data from Serial port sp.on('data', function(input) { var buffer = new Buffer(input, 'utf8'); console.log(buffer); }); sp.on('close', function(err) { }); sp.on('open', function(err) { }); 情報科学若手の会2013
  65. 65. LEAP MOTION × Arduino 情報科学若手の会2013
  66. 66. 念力スカートめくり機/Leap Motion + node.js + Arduinoでサーボモーター駆動 http://b.denkizakana.com/2013/08/leap-motion-nodejs-arduino.html 情報科学若手の会2013
  67. 67. LEAP MOTION と Arduino ロボットの連携 デモ https://github.com/junpeitsuji/leap_arduinoGithub: 情報科学若手の会2013
  68. 68. LEAP MOTION と Arduino ロボットの連携 WebSocket シリアル通信 情報科学若手の会2013
  69. 69. node -serialport Socket.IOsocket.io.js LEAP MOTION と Arduino ロボットの連携 Socket.IO WebSocket シリアル通信 情報科学若手の会2013
  70. 70. 情報科学若手の会2013
  71. 71. 情報科学若手の会2013
  72. 72. にて公開中!! バックブレーダー 検索 高性能AIによる完全自律走行 サテライトシステムによるマシントラッキング パワーブースター機能 測距センサを用いた障害物回避 夢のマシン「バックブレーダー」 実現! 情報科学若手の会2013
  73. 73. まとめ 一緒に 組み込みやろうぜ! ソフト屋さんのみなさん (組み込みでモテよう) 辻 順平(北大DC3) Twitter: @tsujimotter Facebook: junpeitsuji Github: junpeitsuji 情報科学若手の会2013

×