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

ChugokuDB19

myasu
February 18, 2017

 ChugokuDB19

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

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

myasu

February 18, 2017
Tweet

More Decks by myasu

Other Decks in Technology

Transcript

  1. 自己紹介 ▪ myasu (@etcinitd) ▪ 岡山県在住 ▪ 本業 ▪ 機械メーカーの生産技術

    ▪ 生産設備・治具製作、生産ラインの設計・立ち上げ・カイゼン ▪ 業務ではソフトウェア開発の経験無し ▪ 趣味で C# 、データベース ▪ 最近は Windows 10 IoT Core で遊んでます
  2. 今日持ってきた作品その2 ▪ 構成 RaspberryPi (OS: Raspbian) Python + Psycopg ON/OFF

    信号 集電型 赤外線センサ ON/OFF 信号 超音波 距離センサ 在席者 PostgreSQL 判定結果
  3. テーブルに書き込む・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()
  4. ケース1:センサーをつないでみたい ▪ 天気 ▪ 温度・湿度センサ ▪ 気圧センサ ▪ ・・・ ▪

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

    Raspberry Piとのやりとりは、シリアル通信(SPI) ▪ シリアル通信機能内蔵の素子を使う ▪ アナログ信号を使わず、デジタルデータで直接読み込み ▪ 周辺回路は特になし ▪ シリアル通信機能が無いものが多い 作例1は こちらのタイプ
  6. ADCを使う・Raspberry Piの準備 ▪ コマンド:raspi-config ▪ SPI通信の有効化の設定 ▪ ファイル:/etc/modules ▪ 「spidev」

    を追記 ▪ パッケージの追加 ▪ sudo apt-get install python-spidev (PythonからSPIを使う)
  7. 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]
  8. ケース2: LEDをたくさん点灯したい ▪ Raspberry Pi から直接制御できる数に限りがある ▪ 最大26本まで ▪ Raspberry

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

    モータは回せない ▪ RaspberryPiのIOと1本ずつ配線必要 ▪ IOエキスパンダ ▪ シリアル通信(I2C)コマンドで制御 ▪ 1チャネルあたり25mAまで ▪ 全16チャネル合計125mAまで ▪ LEDを光らせるのには十分 例:東芝・TD62783 例:マイクロチップ・MCP23017
  10. IOエキスパンダを使う・Raspberry Piの準備 ▪ コマンド:raspi-config ▪ I2C通信の有効化の設定 ▪ ファイル:/etc/modules ▪ 「i2cdev」

    を追記 ▪ パッケージの追加 ▪ sudo apt-get install i2c-tools (I2Cを制御するコマンド) ▪ sudo apt-get install python-smbus (PythonからI2Cを使う)
  11. 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)
  12. シリアル通信(I2C)の便利なところ ▪ I2Cは省配線 ▪ 通信線2本 ▪ 制御対象ごとにアドレス ▪ 通信バスにぶら下げられる ▪

    電源2本 ▪ Raspberry PiのIO端子直結だと ▪ 一本一本、全部配線が必要 ▪ 一方で、プログラムとIOが1対1で 対応するので、分かり易い 温度センサ RaspberryPi ドライブIC バーグラフLED 電源2本 通信線2本
  13. 長く使うための、ひと工夫 ▪ きちんとケースに入れること! ▪ 配線が外れない ▪ ホコリが入らない ▪ 些細なトラブルを、未然に防ぐことができる ▪

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

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

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

    ▪ 岡山県 • 津山市 • 岡山市(2カ所) • 倉敷市(3カ所) • 瀬戸内市 ▪ 広島県 ▪ 福山市 ▪ 安芸高田市
  17. 国内の主なコンテスト ▪ 電子工作系 ▪ 「みんなのラズパイコンテスト」(日経BP) ▪ 「ソレノイドコンテスト」(タカハ機工・福岡) ▪ 「ものづくり文化祭」(オリジナルマインド・長野) ▪

    ロボットコンテスト系 ▪ (地区大会→全国) ▪ 相撲ロボットコンテスト、マイクロマウスコンテスト、マイコンカーラリー、RoboOne ▪ (地方大会) ▪ 知能ロボットコンテスト(仙台)、かわさきロボット競技会 ▪ ものづくり系ハッカソンなど
  18. 国内のメイカーイベント • MakerFaire東京 (8月) • 大垣MiniMakerFaire (12*月) • 山口MiniMakerFaire (9*月)

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