Pro Yearly is on sale from $80 to $50! »

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の利便性を高める方法や、安全に使うためのノウハウなど

D10028d8eef9ccf032c79a6719e9b373?s=128

Kazuhiro Homma

September 07, 2018
Tweet

Transcript

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

  2. ࣗݾ঺հ • HN @kazuph • WebΤϯδχΞ(3.5 year) • IoTΤϯδχΞ(4.0 year)

    • גࣜձࣾPhotosynthͰ೔ຊͰ࠷ॳʹग़ՙ͞Εͨε ϚʔτϩοΫʮAkerunʯͱ͍͏IoT੡඼Λͭͬ͘ ͯ·͢
  3. ࿩͢͜ͱ • ͳͥRaspberry PiΛ࢈ۀ׆༻ͰબͿͷ͔ • ฐࣾͰͷRaspberry Pi࠾༻ͷ࣮੷ • ΑΓڧݻͳσόΠεʹ͢ΔͨΊͷج൘֦ு •

    ͦΕͰ΋Raspberry PiͰ͸ͩΊͳ৔߹͸Ͳ͏ ͢Δ͔ʁ
  4. ͳͥRaspberry PiΛ
 ࢈ۀ׆༻ͰબͿͷ͔ʁ

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


    ௥Ճύʔπͳ͠ʹ׬શͳIoTରԠ͕࣮ݱͨ͠
  6. Raspberry Pi࢈ۀར༻ • ߴ͍඼࣭ • ଞࣾͱൺ΂ͯඇৗʹ҆Ձ • ൚༻తͳ։ൃ؀ڥ • ҆ఆڙڅ

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

    ιχʔͷ޻৔ʹͯੜ࢈ʢӳࠃɺ೔ຊɺதࠃʣ
  8. ଞࣾͱൺ΂ͯඇৗʹ҆Ձ • ௨ৗ35$ఔ౓ˠ೔ຊͰ͸4000ԁڧ • ଞࣾ੡͸5ສԁલޙ • ߪೖͷίϛοτͰσΟεΧ΢ϯτ͸Մೳ • ࠷ۙ਺ສԁҎԼͷϞσϧ΋ग़͖͕ͯͨɾɾɾ
 ※͍͢·ͤΜɺ͜ͷล͸ΦʔϓϯՁ֨Λᨳ͍ͬͯΔاۀ͕ଟ͍ͷͰ


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

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

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

  12. ฐࣾͰͷRaspberry Pi
 ࠾༻ͷ࣮੷

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

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

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

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

    ࢼ࡞࣌ͷݴޠ • NodeɺPythonɺGolang
  17. ૊ࠐ੡඼ͷσόοά༻్ J-LinkͷARMϏϧυ͕
 ͋Δͷ͕஍ຯʹศར

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

  19. ޻৔ग़ՙπʔϧ

  20. ޻৔ग़ՙπʔϧ

  21. RaspPiͰRaspPiΛݕࠪ

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

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

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


    + Shell(όΠφϦॻࠐ)
 + Cʢݕࠪ༻νΣοΧʔʣ • nRF52΁ͷྲྀ͠ࠐΈπʔϧJlinkʴshell(expect)
  25. nRF52 + Jlink + expect શ෦ਧͬඈ͹͢΍ͭ ϚΠίϯΠϝʔδΛॻ͖ࠐΉ܅ ୭͔ͷ໾ʹཱͭʁ (6*͡Όͳͯ͘$-*Ͱ0,

  26. ޻৔ͰAnsible • ੡඼(૬ख)͕Linuxϕʔεͷ৔߹ • RaspPi→RaspPi • ࠷ॳͷLinuxΠϝʔδ΋࡞੒ͨ͠ • ޻৔Ͱ͸ݕࠪͱޙย෇͚ʹ࢖༻ •

    ֤ݸମ͝ͱʹ࣮ߦ͢Δ • ೚ҙͷίϚϯυΛྲྀͯ͠໭Γ஋ΛνΣοΫ • APIʹݕࠪ৘ใΛૹ৴ • ૊Έཱͯ”ޙ”ݕࠪ༻ͷ
 ࣗյϓϩάϥϜΛྲྀ͠ࠐΉ • ݕࠪͰ͖Δঢ়ଶ”Ͱ͸ͳ͘͢”
  27. ޻৔Ͱͷग़ՙπʔϧ૯ׅ • Raspberry Pi͚ͩͰߏஙՄೳ • 2016೥͔Β࿈ଓՔಇதͰަ׵ͳ͠ • LinuxͷࢿݯΛϑϧ׆༻ͯ͠ݕ͕ࠪՄೳ • Webαʔόʔ

    • RESTΫϥΠΞϯτ • PIN IOɺUSB IOɺΞφϩάIO͕ඞཁͳ৔߹͸Arduino • BLE௨৴ॲཧ • ϓϩϏδϣχϯάπʔϧ
  28. 
 
 
 ※IoTͰΑ͋͘Δߏ੒ͷ͏ͪͷҰ͚ͭͩΛදͯ͠·͢ IoTήʔτ΢ΣΠ &EHF %FWJDF &EHF %FWJDF &EHF

    %FWJDF ɾ
 ɾ
 ɾ (BUFXBZ %FWJDF #MVFUPPUI )551 4  .255 4 $MPVE )551 4 4NBSU1IPOF
  29. ͳͥIoTήʔτ΢ΣΠͱͯ͠બΜ͔ͩʁ • ࠷ॳ͸඼࣭ʹରͯ͠ջٙతͩͬͨ • ҎԼͷ߲໨͕ޙԡ͠ • ޻৔πʔϧͱͯ͠ͷ࣮੷ • ࣮ࡍʹෛՙࢼݧͯ͠ͷ࣮੷ •

    3B͔Βඪ४ͰBLEରԠͨ͜͠ͱͰͷݪՁ࡟ݮ • Wi-FiɺBLEυϯάϧ͸ͦΕͧΕ਺ઍԁ
  30. ෛՙࢼݧ࣮੷ • ࢼݧ߲໨ • CPUɺIOɺUSBɺແઢ/༗ઢLANɺ
 BLEɺిݯܥɺSDΧʔυ • ਺ສʙඦສճͷON/OFF΍࿈ଓॲཧΛ͠ ͯ໰୊ͳ͍͜ͱΛ֬ೝ

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

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

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

  34. ιϑτ΢ΣΞߏ੒ • Raspberry Pi • Node(noble, express) • ௨৴ •

    HTTPS…APIͱͷ௨৴ • MQTTS…pub/subɺϦΞϧλΠϜ༻్ • SPI…֦ுج൘ͱͷ௨৴ • ֦ுج൘ʢnRF52ʣ • CʹͯLEDɺα΢ϯμɺSPI • ࣮͸DFUҎ֎ͰBLE͸࢖ͬͯͳ͍
  35. ϩάઓུ • جຊతʹ͸ී௨ͷαʔόʔͱҰॹ • ҧ͏෦෼ • ༰ྔ͕গͳ͍ˠ͙͢࡟আ • IOͷ্ݶ͕͋ΔˠͰ͖Δ͚ͩΦϯϝϞϦ •

    ઀ଓͰ͖ͳ͍ˠS3ʹ೔࣍Ξοϓϩʔυ
  36. ηΩϡϦςΟΛͲ͏͢Δ͔ʁ • SDΧʔυΛ࢖͏Ҏ্͸த਎Λൈ͔ΕΔ • ߟ͑ํ • େࣄͳ΋ͷΛSDΧʔυʹஔ͔ͳ͍ • ΫϨσϯγϟϧΛ͢΂֦ͯுج൘(nRF52)ʹೖΕΔ •

    ιʔείʔυͷ҉߸ԽΛ͢Δ • OSΛ࠷৽ʹอͭ • ࢓༷ͱͯ͠ήʔτ΢ΣΠىҼͰ
 ΫϦςΟΧϧͳॲཧ͕࣮ߦ͞Εͳ͍Α͏ʹ͢Δ • ֎෦ػؔʹηΩϡϦςΟݕূͯ͠΋Β͏
  37. ιϑτ΢ΣΞΞοϓσʔτ • SSH❌ɺ೚ҙͷίϚϯυ࣮ߦ❌ • ͏ͪͰ͸ΞϓϦέʔγϣϯ΋apt • पลπʔϧͷηΩϡϦςΟɾΞοϓσʔτ • ߏ੒มߋ࣌ʹ͸ႈ౳ੑͷ͋ΔεΫϦϓτΛ࡞੒ͯ͠ରԠ •

    Πϝʔδ࡞੒ͱ͔͸ਏ͍ • ϥζύΠҎ֎ͷ֦ுج൘(nRF52)΋͋Δͱ… • ผͷ࢓૊Έʹ৐͔ͬͬͯ΋͍͍͔΋…ϕεϓϥڞ༗͠߹͍͍ͨ
  38. લੈ୅͔Βͷ৐Γ׵͑ • લੈ୅΋Debianϕʔεͩͬͨ • ϝΠϯͷ෦෼͸΄΅ॻ͖׵͑ͯ͠ͳ͍ • ৽نͷΠϯλʔϑΣʔε(֦ுج൘ɺUSB)෦෼Λΰ ϦΰϦॻ͍ͨ • ʴηΩϡϦςΟରࡦ

    • ͍ͭͰʹϦϑΝΫλ(ָ͍͠ʂ)
  39. ͦΕͰ΋Raspberry PiͰ
 ͩΊͳ৔߹ʹͲ͏͢Δ͔ʁ

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

  41. ͍҆୅ସ • BLE͚ͩͰ͍͍ͳΒnRF52 • ΄΅σϑΝΫτ • ͏ͪ΋2೥લ͔Βຊ൪ར༻ • Wi-Fi΋΄͍͠৔߹͸ίϯϘνοϓ •

    ESP32͕͍͍͔΋ʁਖ਼௚σϑΝΫτͳ͍(ೝࣝ) • ଞࣾ੡඼ͰESPͷ΍ͭΛݟͨ͜ͱ͋Δ͕ • ESPͰ͸ͳ͍͕BLEͱWi-FiΛಉ࣌ʹ࢖͑ͳ͍໰୊ͳͲ
 ະ૝ఆͷ໰୊ʹରॲ͢Δඞཁ͕͋ΔՄೳੑ
  42. ి஑ۦಈ • ͦ΋ͦ΋ͷ࢓༷ͰWi-FiΛબ୒Ͱ͖ͳ͍৔߹͕ଟ͍ • ి஑ͩͱ਺࣌ؒ • SIM΍LPWAͳͲ΋ಉ༷ʢLPWA΋޻෉͸Ͱ͖Δ͕ΰχϣΰχϣ…ʣ • ߏ੒ •

    NݸͷBLEΤοξσόΠεʴڅిήʔτ΢ΣΠ • ෺ཧతɺిؾతʹ෼཭͢Δඞཁ͕͋Δ
  43. ηΩϡϦςΟ • ૊ΈࠐΈܥͷઐ༻νοϓͷ৔߹େ఍֎͔Βͷ
 ΞΫηεΛ๷͙࢓૊ΈΛඋ͍͑ͯΔ • ഁյ͢Δ͜ͱͰத਎ΛऔΓग़͢͜ͱ΋Ͱ͖Δ͕ɺ
 ͦͷ৔߹͸੡඼͕յΕΔͷͰແҙຯԽ͢Δʢ࢓༷͕͍͍ʣ • ڞ௨ͷΫϨσϯγϟϧΛආ͚Δ

  44. ᠘ • ΄΅͢΂ͯͷNon-OSܥͷίϯϘνοϓ͸
 Wi-Fi 5GHzରԠͯ͠ͳ͍ • ʢฐࣾͷήʔτ΢ΣΠ͸ॳظͷ2015೥͔Β 5GHzରԠࡁΈʣ

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

  46. ·ͱΊ

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

    • Raspberry Piʹ͸େྔͷιϑτ΢ΣΞ
 ࢿݯ͕͋ΔͷͰࢼ࡞ɾ։ൃίετΛѹॖͰ͖Δ
  48. ຊ൪ར༻͸඼࣭”໋” Raspberry PiΛ࢖͓͏ʂ

  49. ͓ΘΓ