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

builderscon tokyo 2018 Day1 産業でガチ利用されるRaspberry Piの話

builderscon tokyo 2018 Day1 産業でガチ利用されるRaspberry Piの話

https://builderscon.io/tokyo/2018/session/824f1750-4c2b-43e2-b942-e610b3c88c6c

「え、Raspberry Piっておもちゃでしょ?」

いえいえ、何をおっしゃいます。Raspberry Piは我々が見つけた最高のプロトタイピング環境であり最強のゲートウェイデバイスです。

進化を続けるRaspberry Piは電子部品へのインターフェースに加え今やWi-FiやBluetooth、HDMI出力やカメラモジュールなどのインターフェースを標準搭載しています。

そして産業利用する上で最も重要な品質を、わずか一台5000円という低価格で実現しました。製造台数と品質は比例するのです。
※私は回し者ではありません

この発表では以下の内容について話します。

なぜRaspberry Piを産業活用で選ぶのか
弊社でのRaspberry Pi採用の実績
手軽に使えるRaspberry Piのソースコードを交えた利用例
より強固なデバイスにするための基板拡張とそれを支えるソフトウェア技術
それでもRaspberry Piではだめな場合はどうするか?
他、Raspberry Piの利便性を高める方法や、安全に使うためのノウハウなど

Kazuhiro Homma

September 07, 2018
Tweet

More Decks by Kazuhiro Homma

Other Decks in Technology

Transcript

  1. ࢈ۀͰΨνར༻͞ΕΔ
    Raspberry Piͷ࿩
    גࣜձࣾPhotosynth @kazuph

    View full-size slide

  2. ࣗݾ঺հ
    • HN @kazuph
    • WebΤϯδχΞ(3.5 year)
    • IoTΤϯδχΞ(4.0 year)
    • גࣜձࣾPhotosynthͰ೔ຊͰ࠷ॳʹग़ՙ͞Εͨε
    ϚʔτϩοΫʮAkerunʯͱ͍͏IoT੡඼Λͭͬ͘
    ͯ·͢

    View full-size slide

  3. ࿩͢͜ͱ
    • ͳͥRaspberry PiΛ࢈ۀ׆༻ͰબͿͷ͔
    • ฐࣾͰͷRaspberry Pi࠾༻ͷ࣮੷
    • ΑΓڧݻͳσόΠεʹ͢ΔͨΊͷج൘֦ு
    • ͦΕͰ΋Raspberry PiͰ͸ͩΊͳ৔߹͸Ͳ͏
    ͢Δ͔ʁ

    View full-size slide

  4. ͳͥRaspberry PiΛ

    ࢈ۀ׆༻ͰબͿͷ͔ʁ

    View full-size slide

  5. Raspberry Pi
    • ҎલΑΓిࢠ޻࡞΍ڭҭ༻్Ͱ࢖ΘΕ͍ͯΔ
    γϯάϧϘʔυίϯϐϡʔλʔ
    • ࠷৽൛ͷ3B(+)Ͱ͸Wi-Fi(+5GHz)ʹՃ͑
    Bluetooth Low EnergyʹରԠͨ͜͠ͱͰ

    ௥Ճύʔπͳ͠ʹ׬શͳIoTରԠ͕࣮ݱͨ͠

    View full-size slide

  6. Raspberry Pi࢈ۀར༻
    • ߴ͍඼࣭
    • ଞࣾͱൺ΂ͯඇৗʹ҆Ձ
    • ൚༻తͳ։ൃ؀ڥ
    • ҆ఆڙڅ

    View full-size slide

  7. ߴ͍඼࣭
    • ੈքφϯόʔϫϯͷ੡଄਺ʢ͓ͦΒ͘ಉछͰʣ
    • 2012೥4݄ʹ࠷ॳͷϞσϧ͕ൃച։࢝
    • 2018೥3݄࣌఺Ͱ1900ສ୆ग़ՙ
    • ଞࣾ͸ɾɾɾʁ
    • ιχʔͷ޻৔ʹͯੜ࢈ʢӳࠃɺ೔ຊɺதࠃʣ

    View full-size slide

  8. ଞࣾͱൺ΂ͯඇৗʹ҆Ձ
    • ௨ৗ35$ఔ౓ˠ೔ຊͰ͸4000ԁڧ
    • ଞࣾ੡͸5ສԁલޙ
    • ߪೖͷίϛοτͰσΟεΧ΢ϯτ͸Մೳ
    • ࠷ۙ਺ສԁҎԼͷϞσϧ΋ग़͖͕ͯͨɾɾɾ

    ※͍͢·ͤΜɺ͜ͷล͸ΦʔϓϯՁ֨Λᨳ͍ͬͯΔاۀ͕ଟ͍ͷͰ

    ɹՁ֨͸ࡌͤ·ͤΜ

    View full-size slide

  9. ൚༻తͳ։ൃ؀ڥ
    • σϑΥͷOS͕Debian
    • ΄΅sshͰೖͬͯaptͰࣄ଍ΓΔ
    • ARM༻Ϗϧυ΋૿͍͑ͯΔ
    • GolangɺTensorFlowɺJlink(ϚΠίϯͷ
    ॻ͖ࠐΈɾσόοά༻ͷϓϩʔϒʣɺɺɺ

    View full-size slide

  10. ҆ఆڙڅ
    • ͜ͷੈ͔Β͠͹Β͘Raspberry Pi͸ফ໓͠ͳ͍
    ͩΖ͏ͱ͍͏҆৺ײ
    • ޓ׵Ϙʔυ΋ग़͍ͯΔ

    (ASUSͷTinker-BoardͳͲ)

    View full-size slide

  11. Raspberry Pi࢈ۀར༻
    • ߴ͍඼࣭…⭕
    • ଞࣾͱൺ΂ͯඇৗʹ҆Ձ…⭕
    • ൚༻తͳ։ൃ؀ڥ…⭕
    • ҆ఆڙڅ…⭕

    View full-size slide

  12. ฐࣾͰͷRaspberry Pi

    ࠾༻ͷ࣮੷

    View full-size slide

  13. ฐࣾͰͷ࣮ࡍͷར༻
    • ࣮੡඼ͷϓϩτλΠϐϯά
    • ૊ࠐ੡඼σόοά༻్
    • ޻৔Ͱͷग़ՙπʔϧ
    • [New!]IoTήʔτ΢ΣΠ

    View full-size slide

  14. ࣮੡඼ͰͷϓϩτλΠϐϯά

    View full-size slide

  15. ࣮੡඼ͰͷϓϩτλΠϐϯά

    View full-size slide

  16. ࣮੡඼ͰͷϓϩτλΠϐϯά
    • Raspberry PiͰࢼ࡞ͯ͠ຊ൪੡඼΁స༻
    • ԿΒ͔ͷLinux OS
    • ARM
    • ࢼ࡞࣌ͷݴޠ
    • NodeɺPythonɺGolang

    View full-size slide

  17. ૊ࠐ੡඼ͷσόοά༻్
    J-LinkͷARMϏϧυ͕

    ͋Δͷ͕஍ຯʹศར

    View full-size slide

  18. ૊ࠐ੡඼ͷσόοά༻్

    View full-size slide

  19. ޻৔ग़ՙπʔϧ

    View full-size slide

  20. ޻৔ग़ՙπʔϧ

    View full-size slide

  21. RaspPiͰRaspPiΛݕࠪ

    View full-size slide

  22. ޻৔πʔϧ։ൃࡇΓʢ࣏۩ࡇΓʣ

    View full-size slide

  23. ޻৔ग़ՙπʔϧ(ϚΠίϯͷ৔߹)
    1.αʔόʔͰੜ੒ͨ͠ϚΠίϯ༻όΠφϦͷμ΢ϯϩʔυʢݸମ͝ͱʹϢχʔΫ
    ͳIDɺΫϨσϯγϟϧʣ
    2.ج൘ʹ౥ࡌ͞Ε͍ͯΔϚΠίϯ΁ྲྀ͠ࠐΈ
    3.ͦͷ··ج൘ࣗମͷݕࠪ
    1.ηϯαʔ৘ใɺిѹɺIOͳͲͷνΣοΫ
    2.BLEͷνΣοΫʢج൘BLEϚΠίϯ㲗RaspPiʣ
    4.αʔόʔʹݕࠪ݁ՌΛૹ৴
    5.ج൘Λࡌͤସ͑ͯ1΁໭Δ

    View full-size slide

  24. ޻৔ग़ՙπʔϧ(ϚΠίϯͷ৔߹)
    • RaspPi→Jlink→BLEϚΠίϯ
    • RaspPi→Arduino→ج൘ͷ෦඼ͷશମ
    • Golang(Web Server, BLE) 

    + Shell(όΠφϦॻࠐ)

    + Cʢݕࠪ༻νΣοΧʔʣ
    • nRF52΁ͷྲྀ͠ࠐΈπʔϧJlinkʴshell(expect)

    View full-size slide

  25. nRF52 + Jlink + expect
    શ෦ਧͬඈ͹͢΍ͭ ϚΠίϯΠϝʔδΛॻ͖ࠐΉ܅
    ୭͔ͷ໾ʹཱͭʁ
    (6*͡Όͳͯ͘$-*Ͱ0,

    View full-size slide

  26. ޻৔ͰAnsible
    • ੡඼(૬ख)͕Linuxϕʔεͷ৔߹
    • RaspPi→RaspPi
    • ࠷ॳͷLinuxΠϝʔδ΋࡞੒ͨ͠
    • ޻৔Ͱ͸ݕࠪͱޙย෇͚ʹ࢖༻
    • ֤ݸମ͝ͱʹ࣮ߦ͢Δ
    • ೚ҙͷίϚϯυΛྲྀͯ͠໭Γ஋ΛνΣοΫ
    • APIʹݕࠪ৘ใΛૹ৴
    • ૊Έཱͯ”ޙ”ݕࠪ༻ͷ

    ࣗյϓϩάϥϜΛྲྀ͠ࠐΉ
    • ݕࠪͰ͖Δঢ়ଶ”Ͱ͸ͳ͘͢”

    View full-size slide

  27. ޻৔Ͱͷग़ՙπʔϧ૯ׅ
    • Raspberry Pi͚ͩͰߏஙՄೳ
    • 2016೥͔Β࿈ଓՔಇதͰަ׵ͳ͠
    • LinuxͷࢿݯΛϑϧ׆༻ͯ͠ݕ͕ࠪՄೳ
    • Webαʔόʔ
    • RESTΫϥΠΞϯτ
    • PIN IOɺUSB IOɺΞφϩάIO͕ඞཁͳ৔߹͸Arduino
    • BLE௨৴ॲཧ
    • ϓϩϏδϣχϯάπʔϧ

    View full-size slide




  28. ※IoTͰΑ͋͘Δߏ੒ͷ͏ͪͷҰ͚ͭͩΛදͯ͠·͢
    IoTήʔτ΢ΣΠ
    &EHF
    %FWJDF
    &EHF
    %FWJDF
    &EHF
    %FWJDF
    ɾ

    ɾ

    ɾ
    (BUFXBZ
    %FWJDF
    #MVFUPPUI
    )551 4

    .255 4

    $MPVE
    )551 4

    4NBSU1IPOF

    View full-size slide

  29. ͳͥIoTήʔτ΢ΣΠͱͯ͠બΜ͔ͩʁ
    • ࠷ॳ͸඼࣭ʹରͯ͠ջٙతͩͬͨ
    • ҎԼͷ߲໨͕ޙԡ͠
    • ޻৔πʔϧͱͯ͠ͷ࣮੷
    • ࣮ࡍʹෛՙࢼݧͯ͠ͷ࣮੷
    • 3B͔Βඪ४ͰBLEରԠͨ͜͠ͱͰͷݪՁ࡟ݮ
    • Wi-FiɺBLEυϯάϧ͸ͦΕͧΕ਺ઍԁ

    View full-size slide

  30. ෛՙࢼݧ࣮੷
    • ࢼݧ߲໨
    • CPUɺIOɺUSBɺແઢ/༗ઢLANɺ

    BLEɺిݯܥɺSDΧʔυ
    • ਺ສʙඦສճͷON/OFF΍࿈ଓॲཧΛ͠
    ͯ໰୊ͳ͍͜ͱΛ֬ೝ

    View full-size slide

  31. BLEੑೳ
    ※ ͍͡Ίͯ܅ɾɾɾʁ

    View full-size slide

  32. IoTήʔτ΢ΣΠߏ੒
    • Raspberry Piɹʴɹ֦ுج൘

    View full-size slide

  33. ిݯपΓ
    • Raspberry Pi͚ͩͰ͸ɾɾɾ
    • ཕαʔδରࡦࡁΈͷACΞμϓλʔͰରԠ
    • ֦ுج൘ʹͯ੩ిؾରࡦ͸ผ్ඞཁ

    View full-size slide

  34. ιϑτ΢ΣΞߏ੒
    • Raspberry Pi
    • Node(noble, express)
    • ௨৴
    • HTTPS…APIͱͷ௨৴
    • MQTTS…pub/subɺϦΞϧλΠϜ༻్
    • SPI…֦ுج൘ͱͷ௨৴
    • ֦ுج൘ʢnRF52ʣ
    • CʹͯLEDɺα΢ϯμɺSPI
    • ࣮͸DFUҎ֎ͰBLE͸࢖ͬͯͳ͍

    View full-size slide

  35. ϩάઓུ
    • جຊతʹ͸ී௨ͷαʔόʔͱҰॹ
    • ҧ͏෦෼
    • ༰ྔ͕গͳ͍ˠ͙͢࡟আ
    • IOͷ্ݶ͕͋ΔˠͰ͖Δ͚ͩΦϯϝϞϦ
    • ઀ଓͰ͖ͳ͍ˠS3ʹ೔࣍Ξοϓϩʔυ

    View full-size slide

  36. ηΩϡϦςΟΛͲ͏͢Δ͔ʁ
    • SDΧʔυΛ࢖͏Ҏ্͸த਎Λൈ͔ΕΔ
    • ߟ͑ํ
    • େࣄͳ΋ͷΛSDΧʔυʹஔ͔ͳ͍
    • ΫϨσϯγϟϧΛ͢΂֦ͯுج൘(nRF52)ʹೖΕΔ
    • ιʔείʔυͷ҉߸ԽΛ͢Δ
    • OSΛ࠷৽ʹอͭ
    • ࢓༷ͱͯ͠ήʔτ΢ΣΠىҼͰ

    ΫϦςΟΧϧͳॲཧ͕࣮ߦ͞Εͳ͍Α͏ʹ͢Δ
    • ֎෦ػؔʹηΩϡϦςΟݕূͯ͠΋Β͏

    View full-size slide

  37. ιϑτ΢ΣΞΞοϓσʔτ
    • SSH❌ɺ೚ҙͷίϚϯυ࣮ߦ❌
    • ͏ͪͰ͸ΞϓϦέʔγϣϯ΋apt
    • पลπʔϧͷηΩϡϦςΟɾΞοϓσʔτ
    • ߏ੒มߋ࣌ʹ͸ႈ౳ੑͷ͋ΔεΫϦϓτΛ࡞੒ͯ͠ରԠ
    • Πϝʔδ࡞੒ͱ͔͸ਏ͍
    • ϥζύΠҎ֎ͷ֦ுج൘(nRF52)΋͋Δͱ…
    • ผͷ࢓૊Έʹ৐͔ͬͬͯ΋͍͍͔΋…ϕεϓϥڞ༗͠߹͍͍ͨ

    View full-size slide

  38. લੈ୅͔Βͷ৐Γ׵͑
    • લੈ୅΋Debianϕʔεͩͬͨ
    • ϝΠϯͷ෦෼͸΄΅ॻ͖׵͑ͯ͠ͳ͍
    • ৽نͷΠϯλʔϑΣʔε(֦ுج൘ɺUSB)෦෼Λΰ
    ϦΰϦॻ͍ͨ
    • ʴηΩϡϦςΟରࡦ
    • ͍ͭͰʹϦϑΝΫλ(ָ͍͠ʂ)

    View full-size slide

  39. ͦΕͰ΋Raspberry PiͰ

    ͩΊͳ৔߹ʹͲ͏͢Δ͔ʁ

    View full-size slide

  40. Raspberry PiΛ࢖͑ͳ͍ͱ͖
    • 4000ԁ͢Βߴ͍ͱ͖ɺίϯγϡʔϚ༻్
    • ి஑ۦಈ͍ͤͨ͞
    • ηΩϡϦςΟతʹΫϦςΟΧϧͳॲཧΛ͢Δ

    View full-size slide

  41. ͍҆୅ସ
    • BLE͚ͩͰ͍͍ͳΒnRF52
    • ΄΅σϑΝΫτ
    • ͏ͪ΋2೥લ͔Βຊ൪ར༻
    • Wi-Fi΋΄͍͠৔߹͸ίϯϘνοϓ
    • ESP32͕͍͍͔΋ʁਖ਼௚σϑΝΫτͳ͍(ೝࣝ)
    • ଞࣾ੡඼ͰESPͷ΍ͭΛݟͨ͜ͱ͋Δ͕
    • ESPͰ͸ͳ͍͕BLEͱWi-FiΛಉ࣌ʹ࢖͑ͳ͍໰୊ͳͲ

    ະ૝ఆͷ໰୊ʹରॲ͢Δඞཁ͕͋ΔՄೳੑ

    View full-size slide

  42. ి஑ۦಈ
    • ͦ΋ͦ΋ͷ࢓༷ͰWi-FiΛબ୒Ͱ͖ͳ͍৔߹͕ଟ͍
    • ి஑ͩͱ਺࣌ؒ
    • SIM΍LPWAͳͲ΋ಉ༷ʢLPWA΋޻෉͸Ͱ͖Δ͕ΰχϣΰχϣ…ʣ
    • ߏ੒
    • NݸͷBLEΤοξσόΠεʴڅిήʔτ΢ΣΠ
    • ෺ཧతɺిؾతʹ෼཭͢Δඞཁ͕͋Δ

    View full-size slide

  43. ηΩϡϦςΟ
    • ૊ΈࠐΈܥͷઐ༻νοϓͷ৔߹େ఍֎͔Βͷ

    ΞΫηεΛ๷͙࢓૊ΈΛඋ͍͑ͯΔ
    • ഁյ͢Δ͜ͱͰத਎ΛऔΓग़͢͜ͱ΋Ͱ͖Δ͕ɺ

    ͦͷ৔߹͸੡඼͕յΕΔͷͰແҙຯԽ͢Δʢ࢓༷͕͍͍ʣ
    • ڞ௨ͷΫϨσϯγϟϧΛආ͚Δ

    View full-size slide


  44. • ΄΅͢΂ͯͷNon-OSܥͷίϯϘνοϓ͸

    Wi-Fi 5GHzରԠͯ͠ͳ͍
    • ʢฐࣾͷήʔτ΢ΣΠ͸ॳظͷ2015೥͔Β
    5GHzରԠࡁΈʣ

    View full-size slide

  45. ʢϥζύΠ͡Όͳ͍ͳΒʣ
    nRF52(BLE)Ͱ͍͍Α

    View full-size slide

  46. ·ͱΊ
    • Raspberry Pi͕׬શʹ඼࣭໘ͰଞΛѹ౗͍ͯ͠Δ
    • Raspberry Pi͕׬શʹIoTϨσΟʔͱͳͬͨ
    • Raspberry Pi஋ஈ΋(ಉྨͷதͰ͸)΄΅࠷҆
    • Raspberry Piʹ͸େྔͷιϑτ΢ΣΞ

    ࢿݯ͕͋ΔͷͰࢼ࡞ɾ։ൃίετΛѹॖͰ͖Δ

    View full-size slide

  47. ຊ൪ར༻͸඼࣭”໋”
    Raspberry PiΛ࢖͓͏ʂ

    View full-size slide