Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
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 ライフを!