Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

自己紹介 ▪ myasu (@etcinitd) ▪ 岡山県在住 ▪ 本業 ▪ 機械メーカーの生産技術 ▪ 生産設備・治具製作、生産ラインの設計・立ち上げ・カイゼン ▪ 業務ではソフトウェア開発の経験無し ▪ 趣味で C# 、データベース ▪ 最近は Windows 10 IoT Core で遊んでます

Slide 4

Slide 4 text

自己紹介 ▪ 電子工作が趣味の人たちの集まり 「えれくら!」 のメンバ ▪ 2~3ヶ月ごとに、電気・電子・メカ工作のもくもく会、情報交換会 ▪ 開催場所:高松・「えれくら!」と、倉敷・「えれくら!大都会」(←主催)

Slide 5

Slide 5 text

データベースとIoT

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

IoT機器を作るきっかけ ▪ データベースと電子回路の勉強を兼ねて、IoTを始めてみよう! ▪ Raspberry Pi ▪ 安価なパソコン(5000円程度) ▪ LinuxとWindowsが動く ▪ インストールも apt-get が使える ▪ 電子部品を直接、つなげられる

Slide 8

Slide 8 text

「Lチカ」の次のステップ

Slide 9

Slide 9 text

はじめの一歩。まずは定番の「Lチカ」 ▪ 「RaspberryPi 入門」で資料を検索してみると・・・ ▪ LEDを光らせてみた・・・“Lチカ” ▪ スイッチを付けてみた ▪ モータを回してみた ▪ Tweetしてみた ▪ Etcetra・・・ ▪ 「はじめの一歩」の参考資料は大量にあるので、ここでは省略

Slide 10

Slide 10 text

次のステップ。自分で1から作ってみたい ▪ まずは、“Lチカ”を試してみた ▪ 自分でオリジナルのツールを作ってみたい! ▪ そのためには、LED光らせつつ、温度を測定しつつ・・・ ▪ 「はじめの一歩」を、色々組み合わせて、使いこなす必要 ▪ 一歩目から二歩目に進むための活用を紹介

Slide 11

Slide 11 text

製作例を持ってきました ▪ 実は、Raspberry Piでデータベースを扱うのは、初めての経験 ▪ センサーと電子回路を複合したIoT端末の作例を紹介

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

今日持ってきた作品その1 ▪ 構成 温度センサ RaspberryPi (OS: Raspbian) シリアル通信 (I2C) Python ドライブIC バーグラフLED シリアル 通信(I2C) LED 点灯

Slide 14

Slide 14 text

今日持ってきた作品その2 ▪ 「在席」状態の検知端末 ▪ オフィスのデスクに在席しているかをチェック ▪ ”人“が、”近くにいる“と、ONする ▪ ONになった時刻、OFFになった時刻を保存 ▪ 保存先は、Raspberry Pi の中の PostgreSQL ▪ 統計・表示ツールは、間に合いませんでした・・・

Slide 15

Slide 15 text

今日持ってきた作品その2 ▪ 構成 RaspberryPi (OS: Raspbian) Python + Psycopg ON/OFF 信号 集電型 赤外線センサ ON/OFF 信号 超音波 距離センサ 在席者 PostgreSQL 判定結果

Slide 16

Slide 16 text

今日持ってきた作品その2 ▪ 仕組み 人がいる (体温を検知) 感度:3mくらいまで(範囲広すぎ) 対象までの 距離を測る 1~200cmくらいまで(人以外にも反応) 「人がいる」&「約60cm以内」の条件が揃ったら「在席」と判断する

Slide 17

Slide 17 text

テーブルに書き込む・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()

Slide 18

Slide 18 text

Raspberry Piと 「二歩目」の電子回路

Slide 19

Slide 19 text

実践! ▪ 実際に“やってみよう!”となると・・・ ▪ センサの測定値を読みながら、 ▪ LEDを10個光らせながら、 ▪ モータを動かしながら、 ▪ 色々な“一歩目”の技術の、複合が必要 ▪ 今日持ってきた作例を元に、詳しく紹介します

Slide 20

Slide 20 text

ケース1:センサーをつないでみたい ▪ 天気 ▪ 温度・湿度センサ ▪ 気圧センサ ▪ ・・・ ▪ 住んでいる環境 ▪ 赤外線センサ ▪ 照度センサ ▪ CO2センサ ▪ ・・・

Slide 21

Slide 21 text

アナログ信号の入力 ▪ 多くのセンサーからは、アナログ信号が出てくる ▪ RaspberryPiには、直接、アナログ信号が取り込めない ▪ アナログ信号を読み込む仕組みを、外付け必要

Slide 22

Slide 22 text

アナログ信号の入力 ▪ アナログ・デジタルコンバータを使う(ADC) ▪ 同時に1~8チャネル分のアナログ信号を受付 ▪ アナログ出力のセンサは、だいたい接続可能 ▪ (信号が弱いと、増幅器・アンプが必要) ▪ Raspberry Piとのやりとりは、シリアル通信(SPI) ▪ シリアル通信機能内蔵の素子を使う ▪ アナログ信号を使わず、デジタルデータで直接読み込み ▪ 周辺回路は特になし ▪ シリアル通信機能が無いものが多い 作例1は こちらのタイプ

Slide 23

Slide 23 text

アナログ・デジタルコンバータ (ADC) を使う ▪ 配線の概要 ADC Raspberry PiのGPIOピン 温度 センサ アナログ 信号 シリアル通信 (SPI)

Slide 24

Slide 24 text

ADCを使う・Raspberry Piの準備 ▪ コマンド:raspi-config ▪ SPI通信の有効化の設定 ▪ ファイル:/etc/modules ▪ 「spidev」 を追記 ▪ パッケージの追加 ▪ sudo apt-get install python-spidev (PythonからSPIを使う)

Slide 25

Slide 25 text

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]

Slide 26

Slide 26 text

ケース2: LEDをたくさん点灯したい ▪ Raspberry Pi から直接制御できる数に限りがある ▪ 最大26本まで ▪ Raspberry Pi から取り出せるパワーに限りがある ▪ 全部の出力を足して、50mAまで ▪ LED1個は5~10mAを消費・・・LED5~10個程度までしか動かせない ▪ モータを回すのは、到底無理 ▪ パワーを補強する仕組みを、外付け必要

Slide 27

Slide 27 text

出力端子の増強 ▪ トランジスタアレイ ▪ トランジスタを8セット内蔵 ▪ 1チャネルあたり500mAまで ▪ RaspberryPiの10倍 ▪ モータは回せない ▪ RaspberryPiのIOと1本ずつ配線必要 ▪ IOエキスパンダ ▪ シリアル通信(I2C)コマンドで制御 ▪ 1チャネルあたり25mAまで ▪ 全16チャネル合計125mAまで ▪ LEDを光らせるのには十分 例:東芝・TD62783 例:マイクロチップ・MCP23017

Slide 28

Slide 28 text

IOエキスパンダを使う ▪ 配線の概要 IOエキスパンダ 抵抗器 最大16個まで接続可能 LED ・・・ Raspberry PiのGPIOピン

Slide 29

Slide 29 text

IOエキスパンダを使う・Raspberry Piの準備 ▪ コマンド:raspi-config ▪ I2C通信の有効化の設定 ▪ ファイル:/etc/modules ▪ 「i2cdev」 を追記 ▪ パッケージの追加 ▪ sudo apt-get install i2c-tools (I2Cを制御するコマンド) ▪ sudo apt-get install python-smbus (PythonからI2Cを使う)

Slide 30

Slide 30 text

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)

Slide 31

Slide 31 text

シリアル通信(I2C)の便利なところ ▪ I2Cは省配線 ▪ 通信線2本 ▪ 制御対象ごとにアドレス ▪ 通信バスにぶら下げられる ▪ 電源2本 ▪ Raspberry PiのIO端子直結だと ▪ 一本一本、全部配線が必要 ▪ 一方で、プログラムとIOが1対1で 対応するので、分かり易い 温度センサ RaspberryPi ドライブIC バーグラフLED 電源2本 通信線2本

Slide 32

Slide 32 text

“オモチャ“で終わらせないために ▪ 今日、展示している状態は、本当は良くない ▪ 配線がむき出しの状態 ▪ 配線が容易に外れてしまう ▪ 長期間、設置したままだと、ホコリをかぶってしまう ▪ 些細なトラブルの原因となる

Slide 33

Slide 33 text

長く使うための、ひと工夫 ▪ きちんとケースに入れること! ▪ 配線が外れない ▪ ホコリが入らない ▪ 些細なトラブルを、未然に防ぐことができる ▪ 電池駆動ではなく、ACアダプタを使う ▪ 結構消費電力は大きい ▪ どちらも、些細なトラブルで、データが欠落するのを防ぐために重要

Slide 34

Slide 34 text

ケースを作る ▪ 市販のケースを使う ▪ プラスチック製、アルミ製、ステンレス製 ▪ 100円ショップで売っている入れ物を活用 ▪ ペン立て、トレイ、タッパー ▪ ぴったり合うケースが見つからない ▪ 穴開け加工が大変・・・ ▪ 「ファブスペース」を活用して、オリジナルのケースを製作 (ペン立てを使った例)

Slide 35

Slide 35 text

“ファブスペース”とは ▪ 工作機械を借りられる場所 ▪ 3Dプリンタ、レーザ加工機、NC加工機、自動刺繍ミシンなど ▪ 市民工房「ファブラボ」 ▪ 全国に20カ所 ( “β“を含むと更にたくさん) ▪ ”ファブラボ“とは呼ばず、小売店独自で展開しているところもある ▪ 例)DMM.Make・・・通販OK、金属用の3Dプリンタあり ▪ 例)岡山・・・ホームセンター(DAIKI)、ゲーム・カード店(メディオ)など

Slide 36

Slide 36 text

中国地方東部の “ファブスペース” ▪ 鳥取県「ファブラボとっとり」 ▪ 鳥取市 ▪ 倉吉市 ▪ 米子市 ▪ 岡山県 • 津山市 • 岡山市(2カ所) • 倉敷市(3カ所) • 瀬戸内市 ▪ 広島県 ▪ 福山市 ▪ 安芸高田市

Slide 37

Slide 37 text

ファブラボとっとり ▪ 公営のファブスペース ▪ 2014年から稼働 ▪ 米子市内 ▪ ファブラボとっとりWest (写真はファブラボとっとりEast) ぶんぶん堂 米子店内 (鳥取県米子市新開2丁目4-1) ↑レーザ加工機 ↓3Dプリンタ

Slide 38

Slide 38 text

更に次のステップへ

Slide 39

Slide 39 text

モチベーションを維持するために ▪ とりあえずIoTっぽいものを作って、遊んでみた ▪ 次は何を作ろう・・・ ▪ ハードウェアを複雑に、ソフトウェアを作り込み ▪ でも、モチベーションが続かないと、次へと繋がらない ▪ どうやってモチベーションを保つ? ▪ 作ったものを、誰かに便利に使ってもらうこと ▪ 楽しさを共有できること

Slide 40

Slide 40 text

コンテストに出品しよう ▪ 「目標」(締め切り)があると、開発が進む!(?) ▪ 中には賞金の出るコンテストもある

Slide 41

Slide 41 text

国内の主なコンテスト ▪ 電子工作系 ▪ 「みんなのラズパイコンテスト」(日経BP) ▪ 「ソレノイドコンテスト」(タカハ機工・福岡) ▪ 「ものづくり文化祭」(オリジナルマインド・長野) ▪ ロボットコンテスト系 ▪ (地区大会→全国) ▪ 相撲ロボットコンテスト、マイクロマウスコンテスト、マイコンカーラリー、RoboOne ▪ (地方大会) ▪ 知能ロボットコンテスト(仙台)、かわさきロボット競技会 ▪ ものづくり系ハッカソンなど

Slide 42

Slide 42 text

「みんなのラズパイコンテスト」に応募してみた ▪ 香川・岡山で活動している交流会「えれくら!」 ▪ メンバー有志で共同製作

Slide 43

Slide 43 text

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

Slide 44

Slide 44 text

イベントに出展(出店)しよう ▪ 作品の展示、即売 ▪ 来場者との交流 ▪ 出展者同士の交流、懇親会

Slide 45

Slide 45 text

国内のメイカーイベント • MakerFaire東京 (8月) • 大垣MiniMakerFaire (12*月) • 山口MiniMakerFaire (9*月) *:隔年開催 • メイカーズバザール大阪 (7月) • 北九州MONOCAFE • コミックマーケット (8, 12月) • NT京都 (3月) • NT金沢 (7月) • NT名古屋 (10月) (定期開催されている代表的なもの) ニコニコ動画系 MakerFaire系 その他

Slide 46

Slide 46 text

イベントに出展(出店)しよう ▪ 参加費¥0~数万円程度 ▪ 販売物の有無で変わってくる ▪ とんでもない 面白い作品に出会えることも

Slide 47

Slide 47 text

まとめ

Slide 48

Slide 48 text

まとめ ▪ Raspberry Piは、ハードウェアとソフトウェアの垣根を下げてくれた ▪ アイディアと、ちょっとした電子回路の知識で、IoT機器を作ることができる ▪ データベースをきっかけに、IoT機器を作ってみよう ▪ 作例の紹介と、技術解説 ▪ モチベーション維持のために ▪ 是非、コンテストや展示会に出品してみよう ▪ 今日をきっかけに、楽しい IoT ライフを!