Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ChugokuDB19

51198d0c7643e9c6d8d491533eead6c9?s=47 myasu
February 18, 2017

 ChugokuDB19

第19回 中国地方DB勉強会 in 米子
「データベースから始めるIoT」

概要:
データベースの勉強をきっかけに、IoTを楽しんでみませんか?
データベースをインストールしたRaspberryPiと電子回路のちょっとした応用例と、デジタルモノづくり拠点「ファブスペース」や、”メイカー”活動の現状について紹介します。

51198d0c7643e9c6d8d491533eead6c9?s=128

myasu

February 18, 2017
Tweet

Transcript

  1. データベースから 始める IoT 於 第19回 中国地方DB勉強会 in 米子

  2. 概要 ▪ データベース と IoT ▪ 「Lチカ」の次のステップ ▪ Raspberry Piと「二歩目」の電子回路

    ▪ さらに次のステップへ
  3. 自己紹介 ▪ myasu (@etcinitd) ▪ 岡山県在住 ▪ 本業 ▪ 機械メーカーの生産技術

    ▪ 生産設備・治具製作、生産ラインの設計・立ち上げ・カイゼン ▪ 業務ではソフトウェア開発の経験無し ▪ 趣味で C# 、データベース ▪ 最近は Windows 10 IoT Core で遊んでます
  4. 自己紹介 ▪ 電子工作が趣味の人たちの集まり 「えれくら!」 のメンバ ▪ 2~3ヶ月ごとに、電気・電子・メカ工作のもくもく会、情報交換会 ▪ 開催場所:高松・「えれくら!」と、倉敷・「えれくら!大都会」(←主催)

  5. データベースとIoT

  6. IoTを支えるのはデータベース ▪ IoTの活用の状況・・・ ▪ 実環境をセンシングして、その測定値を蓄積 ▪ 人の流れ、気温との相関・・・ ▪ 設備の稼働状況、故障停止時間・・・ (IoTという言葉ができる以前から、仕組みは

    あった) ▪ その測定値を分析して、何らかの活用 ▪ データの蓄積先として、データベースを使用 ▪ データベースは、IoTを支える重要なツール
  7. IoT機器を作るきっかけ ▪ データベースと電子回路の勉強を兼ねて、IoTを始めてみよう! ▪ Raspberry Pi ▪ 安価なパソコン(5000円程度) ▪ LinuxとWindowsが動く

    ▪ インストールも apt-get が使える ▪ 電子部品を直接、つなげられる
  8. 「Lチカ」の次のステップ

  9. はじめの一歩。まずは定番の「Lチカ」 ▪ 「RaspberryPi 入門」で資料を検索してみると・・・ ▪ LEDを光らせてみた・・・“Lチカ” ▪ スイッチを付けてみた ▪ モータを回してみた

    ▪ Tweetしてみた ▪ Etcetra・・・ ▪ 「はじめの一歩」の参考資料は大量にあるので、ここでは省略
  10. 次のステップ。自分で1から作ってみたい ▪ まずは、“Lチカ”を試してみた ▪ 自分でオリジナルのツールを作ってみたい! ▪ そのためには、LED光らせつつ、温度を測定しつつ・・・ ▪ 「はじめの一歩」を、色々組み合わせて、使いこなす必要 ▪

    一歩目から二歩目に進むための活用を紹介
  11. 製作例を持ってきました ▪ 実は、Raspberry Piでデータベースを扱うのは、初めての経験 ▪ センサーと電子回路を複合したIoT端末の作例を紹介

  12. 今日持ってきた作品その1 ▪ 温度センサで気温を測る ▪ 気温の高さを、バーLEDに表示 ▪ (これは、データベースは使っていません)

  13. 今日持ってきた作品その1 ▪ 構成 温度センサ RaspberryPi (OS: Raspbian) シリアル通信 (I2C) Python

    ドライブIC バーグラフLED シリアル 通信(I2C) LED 点灯
  14. 今日持ってきた作品その2 ▪ 「在席」状態の検知端末 ▪ オフィスのデスクに在席しているかをチェック ▪ ”人“が、”近くにいる“と、ONする ▪ ONになった時刻、OFFになった時刻を保存 ▪

    保存先は、Raspberry Pi の中の PostgreSQL ▪ 統計・表示ツールは、間に合いませんでした・・・
  15. 今日持ってきた作品その2 ▪ 構成 RaspberryPi (OS: Raspbian) Python + Psycopg ON/OFF

    信号 集電型 赤外線センサ ON/OFF 信号 超音波 距離センサ 在席者 PostgreSQL 判定結果
  16. 今日持ってきた作品その2 ▪ 仕組み 人がいる (体温を検知) 感度:3mくらいまで(範囲広すぎ) 対象までの 距離を測る 1~200cmくらいまで(人以外にも反応) 「人がいる」&「約60cm以内」の条件が揃ったら「在席」と判断する

  17. テーブルに書き込む・Pythonソースコード import psycopg2 def db_zaiba(argZAIBA): connector = psycopg2.connect(host="localhost", database="pi", user="pi",

    password=“xxxxx") cursor = connector.cursor() dt = datetime.datetime.today().strftime("%Y/%m/%d %H:%M:%S") sql = "insert into T_zaiba values ('%s', '%s')" % (dt, argZAIBA) cursor.execute(sql) connector.commit() cursor.close() connector.close()
  18. Raspberry Piと 「二歩目」の電子回路

  19. 実践! ▪ 実際に“やってみよう!”となると・・・ ▪ センサの測定値を読みながら、 ▪ LEDを10個光らせながら、 ▪ モータを動かしながら、 ▪

    色々な“一歩目”の技術の、複合が必要 ▪ 今日持ってきた作例を元に、詳しく紹介します
  20. ケース1:センサーをつないでみたい ▪ 天気 ▪ 温度・湿度センサ ▪ 気圧センサ ▪ ・・・ ▪

    住んでいる環境 ▪ 赤外線センサ ▪ 照度センサ ▪ CO2センサ ▪ ・・・
  21. アナログ信号の入力 ▪ 多くのセンサーからは、アナログ信号が出てくる ▪ RaspberryPiには、直接、アナログ信号が取り込めない ▪ アナログ信号を読み込む仕組みを、外付け必要

  22. アナログ信号の入力 ▪ アナログ・デジタルコンバータを使う(ADC) ▪ 同時に1~8チャネル分のアナログ信号を受付 ▪ アナログ出力のセンサは、だいたい接続可能 ▪ (信号が弱いと、増幅器・アンプが必要) ▪

    Raspberry Piとのやりとりは、シリアル通信(SPI) ▪ シリアル通信機能内蔵の素子を使う ▪ アナログ信号を使わず、デジタルデータで直接読み込み ▪ 周辺回路は特になし ▪ シリアル通信機能が無いものが多い 作例1は こちらのタイプ
  23. アナログ・デジタルコンバータ (ADC) を使う ▪ 配線の概要 ADC Raspberry PiのGPIOピン 温度 センサ

    アナログ 信号 シリアル通信 (SPI)
  24. ADCを使う・Raspberry Piの準備 ▪ コマンド:raspi-config ▪ SPI通信の有効化の設定 ▪ ファイル:/etc/modules ▪ 「spidev」

    を追記 ▪ パッケージの追加 ▪ sudo apt-get install python-spidev (PythonからSPIを使う)
  25. ADCを使う・ Pythonソースコード import spidev # SPIバスへの通信を開く spi = spidev.SpiDev() spi.open(0,0)

    #シリアル(SPI)通信で、ADCからデータを読み込み adc = spi.xfer2( [(0x07 if (0x00 & 0x04) else 0x06), (0x00 & 0x03) << 6, 0]) #アナログの値に変換 data = ((adc[1] & 0x0f) << 8 ) | adc[2]
  26. ケース2: LEDをたくさん点灯したい ▪ Raspberry Pi から直接制御できる数に限りがある ▪ 最大26本まで ▪ Raspberry

    Pi から取り出せるパワーに限りがある ▪ 全部の出力を足して、50mAまで ▪ LED1個は5~10mAを消費・・・LED5~10個程度までしか動かせない ▪ モータを回すのは、到底無理 ▪ パワーを補強する仕組みを、外付け必要
  27. 出力端子の増強 ▪ トランジスタアレイ ▪ トランジスタを8セット内蔵 ▪ 1チャネルあたり500mAまで ▪ RaspberryPiの10倍 ▪

    モータは回せない ▪ RaspberryPiのIOと1本ずつ配線必要 ▪ IOエキスパンダ ▪ シリアル通信(I2C)コマンドで制御 ▪ 1チャネルあたり25mAまで ▪ 全16チャネル合計125mAまで ▪ LEDを光らせるのには十分 例:東芝・TD62783 例:マイクロチップ・MCP23017
  28. IOエキスパンダを使う ▪ 配線の概要 IOエキスパンダ 抵抗器 最大16個まで接続可能 LED ・・・ Raspberry PiのGPIOピン

  29. IOエキスパンダを使う・Raspberry Piの準備 ▪ コマンド:raspi-config ▪ I2C通信の有効化の設定 ▪ ファイル:/etc/modules ▪ 「i2cdev」

    を追記 ▪ パッケージの追加 ▪ sudo apt-get install i2c-tools (I2Cを制御するコマンド) ▪ sudo apt-get install python-smbus (PythonからI2Cを使う)
  30. IOエキスパンダを使う・Pythonソースコード import smbus i2c = smbus.SMBus(1) # ピンの入出力設定 i2c.write_byte_data(0x20, 0x00,

    0x00) # ピンの出力状態を制御・全部OFF i2c.write_byte_data(0x20, 0x14, 0x00) # ピンの出力状態を制御・全部ON i2c.write_byte_data(0x20, 0x14, 0xff)
  31. シリアル通信(I2C)の便利なところ ▪ I2Cは省配線 ▪ 通信線2本 ▪ 制御対象ごとにアドレス ▪ 通信バスにぶら下げられる ▪

    電源2本 ▪ Raspberry PiのIO端子直結だと ▪ 一本一本、全部配線が必要 ▪ 一方で、プログラムとIOが1対1で 対応するので、分かり易い 温度センサ RaspberryPi ドライブIC バーグラフLED 電源2本 通信線2本
  32. “オモチャ“で終わらせないために ▪ 今日、展示している状態は、本当は良くない ▪ 配線がむき出しの状態 ▪ 配線が容易に外れてしまう ▪ 長期間、設置したままだと、ホコリをかぶってしまう ▪

    些細なトラブルの原因となる
  33. 長く使うための、ひと工夫 ▪ きちんとケースに入れること! ▪ 配線が外れない ▪ ホコリが入らない ▪ 些細なトラブルを、未然に防ぐことができる ▪

    電池駆動ではなく、ACアダプタを使う ▪ 結構消費電力は大きい ▪ どちらも、些細なトラブルで、データが欠落するのを防ぐために重要
  34. ケースを作る ▪ 市販のケースを使う ▪ プラスチック製、アルミ製、ステンレス製 ▪ 100円ショップで売っている入れ物を活用 ▪ ペン立て、トレイ、タッパー ▪

    ぴったり合うケースが見つからない ▪ 穴開け加工が大変・・・ ▪ 「ファブスペース」を活用して、オリジナルのケースを製作 (ペン立てを使った例)
  35. “ファブスペース”とは ▪ 工作機械を借りられる場所 ▪ 3Dプリンタ、レーザ加工機、NC加工機、自動刺繍ミシンなど ▪ 市民工房「ファブラボ」 ▪ 全国に20カ所 (

    “β“を含むと更にたくさん) ▪ ”ファブラボ“とは呼ばず、小売店独自で展開しているところもある ▪ 例)DMM.Make・・・通販OK、金属用の3Dプリンタあり ▪ 例)岡山・・・ホームセンター(DAIKI)、ゲーム・カード店(メディオ)など
  36. 中国地方東部の “ファブスペース” ▪ 鳥取県「ファブラボとっとり」 ▪ 鳥取市 ▪ 倉吉市 ▪ 米子市

    ▪ 岡山県 • 津山市 • 岡山市(2カ所) • 倉敷市(3カ所) • 瀬戸内市 ▪ 広島県 ▪ 福山市 ▪ 安芸高田市
  37. ファブラボとっとり ▪ 公営のファブスペース ▪ 2014年から稼働 ▪ 米子市内 ▪ ファブラボとっとりWest (写真はファブラボとっとりEast)

    ぶんぶん堂 米子店内 (鳥取県米子市新開2丁目4-1) ↑レーザ加工機 ↓3Dプリンタ
  38. 更に次のステップへ

  39. モチベーションを維持するために ▪ とりあえずIoTっぽいものを作って、遊んでみた ▪ 次は何を作ろう・・・ ▪ ハードウェアを複雑に、ソフトウェアを作り込み ▪ でも、モチベーションが続かないと、次へと繋がらない ▪

    どうやってモチベーションを保つ? ▪ 作ったものを、誰かに便利に使ってもらうこと ▪ 楽しさを共有できること
  40. コンテストに出品しよう ▪ 「目標」(締め切り)があると、開発が進む!(?) ▪ 中には賞金の出るコンテストもある

  41. 国内の主なコンテスト ▪ 電子工作系 ▪ 「みんなのラズパイコンテスト」(日経BP) ▪ 「ソレノイドコンテスト」(タカハ機工・福岡) ▪ 「ものづくり文化祭」(オリジナルマインド・長野) ▪

    ロボットコンテスト系 ▪ (地区大会→全国) ▪ 相撲ロボットコンテスト、マイクロマウスコンテスト、マイコンカーラリー、RoboOne ▪ (地方大会) ▪ 知能ロボットコンテスト(仙台)、かわさきロボット競技会 ▪ ものづくり系ハッカソンなど
  42. 「みんなのラズパイコンテスト」に応募してみた ▪ 香川・岡山で活動している交流会「えれくら!」 ▪ メンバー有志で共同製作

  43. 「みんなのラズパイコンテスト」に応募してみた ▪ IoTの一つの形として、こんなのを作りました ▪ 「アイロンビーズ」を自動的に並べる装置 ▪ Microsoft Azure ▪ ビーズの配置をWebでデザイン

    ▪ Windows 10 IoT Core ▪ デザインデータのダウンロード ▪ 装置全体の動作を制御
  44. イベントに出展(出店)しよう ▪ 作品の展示、即売 ▪ 来場者との交流 ▪ 出展者同士の交流、懇親会

  45. 国内のメイカーイベント • MakerFaire東京 (8月) • 大垣MiniMakerFaire (12*月) • 山口MiniMakerFaire (9*月)

    *:隔年開催 • メイカーズバザール大阪 (7月) • 北九州MONOCAFE • コミックマーケット (8, 12月) • NT京都 (3月) • NT金沢 (7月) • NT名古屋 (10月) (定期開催されている代表的なもの) ニコニコ動画系 MakerFaire系 その他
  46. イベントに出展(出店)しよう ▪ 参加費¥0~数万円程度 ▪ 販売物の有無で変わってくる ▪ とんでもない 面白い作品に出会えることも

  47. まとめ

  48. まとめ ▪ Raspberry Piは、ハードウェアとソフトウェアの垣根を下げてくれた ▪ アイディアと、ちょっとした電子回路の知識で、IoT機器を作ることができる ▪ データベースをきっかけに、IoT機器を作ってみよう ▪ 作例の紹介と、技術解説

    ▪ モチベーション維持のために ▪ 是非、コンテストや展示会に出品してみよう ▪ 今日をきっかけに、楽しい IoT ライフを!