builderscon tokyo 2018 Day1 産業でガチ利用されるRaspberry Piの話
by
Kazuhiro Homma
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
࢈ۀͰΨνར༻͞ΕΔ Raspberry Piͷ גࣜձࣾPhotosynth @kazuph
Slide 2
Slide 2 text
ࣗݾհ • HN @kazuph • WebΤϯδχΞ(3.5 year) • IoTΤϯδχΞ(4.0 year) • גࣜձࣾPhotosynthͰຊͰ࠷ॳʹग़ՙ͞Εͨε ϚʔτϩοΫʮAkerunʯͱ͍͏IoTΛͭͬ͘ ͯ·͢
Slide 3
Slide 3 text
͢͜ͱ • ͳͥRaspberry PiΛ࢈ۀ׆༻ͰબͿͷ͔ • ฐࣾͰͷRaspberry Pi࠾༻ͷ࣮ • ΑΓڧݻͳσόΠεʹ͢ΔͨΊͷج൘֦ு • ͦΕͰRaspberry PiͰͩΊͳ߹Ͳ͏ ͢Δ͔ʁ
Slide 4
Slide 4 text
ͳͥRaspberry PiΛ ࢈ۀ׆༻ͰબͿͷ͔ʁ
Slide 5
Slide 5 text
Raspberry Pi • ҎલΑΓిࢠ࡞ڭҭ༻్ͰΘΕ͍ͯΔ γϯάϧϘʔυίϯϐϡʔλʔ • ࠷৽൛ͷ3B(+)ͰWi-Fi(+5GHz)ʹՃ͑ Bluetooth Low EnergyʹରԠͨ͜͠ͱͰ Ճύʔπͳ͠ʹશͳIoTରԠ͕࣮ݱͨ͠
Slide 6
Slide 6 text
Raspberry Pi࢈ۀར༻ • ߴ͍࣭ • ଞࣾͱൺͯඇৗʹ҆Ձ • ൚༻తͳ։ൃڥ • ҆ఆڙڅ
Slide 7
Slide 7 text
ߴ͍࣭ • ੈքφϯόʔϫϯͷʢ͓ͦΒ͘ಉछͰʣ • 20124݄ʹ࠷ॳͷϞσϧ͕ൃച։࢝ • 20183݄࣌Ͱ1900ສग़ՙ • ଞࣾɾɾɾʁ • ιχʔͷʹͯੜ࢈ʢӳࠃɺຊɺதࠃʣ
Slide 8
Slide 8 text
ଞࣾͱൺͯඇৗʹ҆Ձ • ௨ৗ35$ఔˠຊͰ4000ԁڧ • ଞࣾ5ສԁલޙ • ߪೖͷίϛοτͰσΟεΧϯτՄೳ • ࠷ۙສԁҎԼͷϞσϧग़͖͕ͯͨɾɾɾ ※͍͢·ͤΜɺ͜ͷลΦʔϓϯՁ֨Λᨳ͍ͬͯΔاۀ͕ଟ͍ͷͰ ɹՁ֨ࡌͤ·ͤΜ
Slide 9
Slide 9 text
൚༻తͳ։ൃڥ • σϑΥͷOS͕Debian • ΄΅sshͰೖͬͯaptͰࣄΓΔ • ARM༻Ϗϧυ૿͍͑ͯΔ • GolangɺTensorFlowɺJlink(ϚΠίϯͷ ॻ͖ࠐΈɾσόοά༻ͷϓϩʔϒʣɺɺɺ
Slide 10
Slide 10 text
҆ఆڙڅ • ͜ͷੈ͔Β͠Β͘Raspberry Piফ໓͠ͳ͍ ͩΖ͏ͱ͍͏҆৺ײ • ޓϘʔυग़͍ͯΔ (ASUSͷTinker-BoardͳͲ)
Slide 11
Slide 11 text
Raspberry Pi࢈ۀར༻ • ߴ͍࣭…⭕ • ଞࣾͱൺͯඇৗʹ҆Ձ…⭕ • ൚༻తͳ։ൃڥ…⭕ • ҆ఆڙڅ…⭕
Slide 12
Slide 12 text
ฐࣾͰͷRaspberry Pi ࠾༻ͷ࣮
Slide 13
Slide 13 text
ฐࣾͰͷ࣮ࡍͷར༻ • ࣮ͷϓϩτλΠϐϯά • ࠐσόοά༻్ • Ͱͷग़ՙπʔϧ • [New!]IoTήʔτΣΠ
Slide 14
Slide 14 text
࣮ͰͷϓϩτλΠϐϯά
Slide 15
Slide 15 text
࣮ͰͷϓϩτλΠϐϯά
Slide 16
Slide 16 text
࣮ͰͷϓϩτλΠϐϯά • Raspberry PiͰࢼ࡞ͯ͠ຊ൪స༻ • ԿΒ͔ͷLinux OS • ARM • ࢼ࡞࣌ͷݴޠ • NodeɺPythonɺGolang
Slide 17
Slide 17 text
ࠐͷσόοά༻్ J-LinkͷARMϏϧυ͕ ͋Δͷ͕ຯʹศར
Slide 18
Slide 18 text
ࠐͷσόοά༻్
Slide 19
Slide 19 text
ग़ՙπʔϧ
Slide 20
Slide 20 text
ग़ՙπʔϧ
Slide 21
Slide 21 text
RaspPiͰRaspPiΛݕࠪ
Slide 22
Slide 22 text
πʔϧ։ൃࡇΓʢ࣏۩ࡇΓʣ
Slide 23
Slide 23 text
ग़ՙπʔϧ(ϚΠίϯͷ߹) 1.αʔόʔͰੜͨ͠ϚΠίϯ༻όΠφϦͷμϯϩʔυʢݸମ͝ͱʹϢχʔΫ ͳIDɺΫϨσϯγϟϧʣ 2.ج൘ʹࡌ͞Ε͍ͯΔϚΠίϯྲྀ͠ࠐΈ 3.ͦͷ··ج൘ࣗମͷݕࠪ 1.ηϯαʔใɺిѹɺIOͳͲͷνΣοΫ 2.BLEͷνΣοΫʢج൘BLEϚΠίϯ㲗RaspPiʣ 4.αʔόʔʹݕࠪ݁ՌΛૹ৴ 5.ج൘Λࡌͤସ͑ͯ1Δ
Slide 24
Slide 24 text
ग़ՙπʔϧ(ϚΠίϯͷ߹) • RaspPi→Jlink→BLEϚΠίϯ • RaspPi→Arduino→ج൘ͷ෦ͷશମ • Golang(Web Server, BLE) + Shell(όΠφϦॻࠐ) + Cʢݕࠪ༻νΣοΧʔʣ • nRF52ͷྲྀ͠ࠐΈπʔϧJlinkʴshell(expect)
Slide 25
Slide 25 text
nRF52 + Jlink + expect શ෦ਧͬඈͭ͢ ϚΠίϯΠϝʔδΛॻ͖ࠐΉ܅ ୭͔ͷʹཱͭʁ (6*͡Όͳͯ͘$-*Ͱ0,
Slide 26
Slide 26 text
ͰAnsible • (૬ख)͕Linuxϕʔεͷ߹ • RaspPi→RaspPi • ࠷ॳͷLinuxΠϝʔδ࡞ͨ͠ • Ͱݕࠪͱޙย͚ʹ༻ • ֤ݸମ͝ͱʹ࣮ߦ͢Δ • ҙͷίϚϯυΛྲྀͯ͠ΓΛνΣοΫ • APIʹݕࠪใΛૹ৴ • Έཱͯ”ޙ”ݕࠪ༻ͷ ࣗյϓϩάϥϜΛྲྀ͠ࠐΉ • ݕࠪͰ͖Δঢ়ଶ”Ͱͳ͘͢”
Slide 27
Slide 27 text
Ͱͷग़ՙπʔϧ૯ׅ • Raspberry Pi͚ͩͰߏஙՄೳ • 2016͔Β࿈ଓՔಇதͰަͳ͠ • LinuxͷࢿݯΛϑϧ׆༻ͯ͠ݕ͕ࠪՄೳ • Webαʔόʔ • RESTΫϥΠΞϯτ • PIN IOɺUSB IOɺΞφϩάIO͕ඞཁͳ߹Arduino • BLE௨৴ॲཧ • ϓϩϏδϣχϯάπʔϧ
Slide 28
Slide 28 text
※IoTͰΑ͋͘Δߏͷ͏ͪͷҰ͚ͭͩΛදͯ͠·͢ IoTήʔτΣΠ &EHF %FWJDF &EHF %FWJDF &EHF %FWJDF ɾ ɾ ɾ (BUFXBZ %FWJDF #MVFUPPUI )551 4 .255 4 $MPVE )551 4 4NBSU1IPOF
Slide 29
Slide 29 text
ͳͥIoTήʔτΣΠͱͯ͠બΜ͔ͩʁ • ࠷ॳ࣭ʹରͯ͠ջٙతͩͬͨ • ҎԼͷ߲͕ޙԡ͠ • πʔϧͱͯ͠ͷ࣮ • ࣮ࡍʹෛՙࢼݧͯ͠ͷ࣮ • 3B͔Βඪ४ͰBLEରԠͨ͜͠ͱͰͷݪՁݮ • Wi-FiɺBLEυϯάϧͦΕͧΕઍԁ
Slide 30
Slide 30 text
ෛՙࢼݧ࣮ • ࢼݧ߲ • CPUɺIOɺUSBɺແઢ/༗ઢLANɺ BLEɺిݯܥɺSDΧʔυ • ສʙඦສճͷON/OFF࿈ଓॲཧΛ͠ ͯͳ͍͜ͱΛ֬ೝ
Slide 31
Slide 31 text
BLEੑೳ ※ ͍͡Ίͯ܅ɾɾɾʁ
Slide 32
Slide 32 text
IoTήʔτΣΠߏ • Raspberry Piɹʴɹ֦ுج൘
Slide 33
Slide 33 text
ిݯपΓ • Raspberry Pi͚ͩͰɾɾɾ • ཕαʔδରࡦࡁΈͷACΞμϓλʔͰରԠ • ֦ுج൘ʹͯ੩ిؾରࡦผ్ඞཁ
Slide 34
Slide 34 text
ιϑτΣΞߏ • Raspberry Pi • Node(noble, express) • ௨৴ • HTTPS…APIͱͷ௨৴ • MQTTS…pub/subɺϦΞϧλΠϜ༻్ • SPI…֦ுج൘ͱͷ௨৴ • ֦ுج൘ʢnRF52ʣ • CʹͯLEDɺαϯμɺSPI • ࣮DFUҎ֎ͰBLEͬͯͳ͍
Slide 35
Slide 35 text
ϩάઓུ • جຊతʹී௨ͷαʔόʔͱҰॹ • ҧ͏෦ • ༰ྔ͕গͳ͍ˠ͙͢আ • IOͷ্ݶ͕͋ΔˠͰ͖Δ͚ͩΦϯϝϞϦ • ଓͰ͖ͳ͍ˠS3ʹ࣍Ξοϓϩʔυ
Slide 36
Slide 36 text
ηΩϡϦςΟΛͲ͏͢Δ͔ʁ • SDΧʔυΛ͏Ҏ্தΛൈ͔ΕΔ • ߟ͑ํ • େࣄͳͷΛSDΧʔυʹஔ͔ͳ͍ • ΫϨσϯγϟϧΛ֦ͯ͢ுج൘(nRF52)ʹೖΕΔ • ιʔείʔυͷ҉߸ԽΛ͢Δ • OSΛ࠷৽ʹอͭ • ༷ͱͯ͠ήʔτΣΠىҼͰ ΫϦςΟΧϧͳॲཧ͕࣮ߦ͞Εͳ͍Α͏ʹ͢Δ • ֎෦ػؔʹηΩϡϦςΟݕূͯ͠Β͏
Slide 37
Slide 37 text
ιϑτΣΞΞοϓσʔτ • SSH❌ɺҙͷίϚϯυ࣮ߦ❌ • ͏ͪͰΞϓϦέʔγϣϯapt • पลπʔϧͷηΩϡϦςΟɾΞοϓσʔτ • ߏมߋ࣌ʹႈੑͷ͋ΔεΫϦϓτΛ࡞ͯ͠ରԠ • Πϝʔδ࡞ͱ͔ਏ͍ • ϥζύΠҎ֎ͷ֦ுج൘(nRF52)͋Δͱ… • ผͷΈʹ͔͍͍͔ͬͬͯ…ϕεϓϥڞ༗͠߹͍͍ͨ
Slide 38
Slide 38 text
લੈ͔ΒͷΓ͑ • લੈDebianϕʔεͩͬͨ • ϝΠϯͷ෦΄΅ॻ͖͑ͯ͠ͳ͍ • ৽نͷΠϯλʔϑΣʔε(֦ுج൘ɺUSB)෦Λΰ ϦΰϦॻ͍ͨ • ʴηΩϡϦςΟରࡦ • ͍ͭͰʹϦϑΝΫλ(ָ͍͠ʂ)
Slide 39
Slide 39 text
ͦΕͰRaspberry PiͰ ͩΊͳ߹ʹͲ͏͢Δ͔ʁ
Slide 40
Slide 40 text
Raspberry PiΛ͑ͳ͍ͱ͖ • 4000ԁ͢Βߴ͍ͱ͖ɺίϯγϡʔϚ༻్ • ిۦಈ͍ͤͨ͞ • ηΩϡϦςΟతʹΫϦςΟΧϧͳॲཧΛ͢Δ
Slide 41
Slide 41 text
͍҆ସ • BLE͚ͩͰ͍͍ͳΒnRF52 • ΄΅σϑΝΫτ • ͏ͪ2લ͔Βຊ൪ར༻ • Wi-Fi΄͍͠߹ίϯϘνοϓ • ESP32͕͍͍͔ʁਖ਼σϑΝΫτͳ͍(ೝࣝ) • ଞࣾͰESPͷͭΛݟͨ͜ͱ͋Δ͕ • ESPͰͳ͍͕BLEͱWi-FiΛಉ࣌ʹ͑ͳ͍ͳͲ ະఆͷʹରॲ͢Δඞཁ͕͋ΔՄೳੑ
Slide 42
Slide 42 text
ిۦಈ • ͦͦͷ༷ͰWi-FiΛબͰ͖ͳ͍߹͕ଟ͍ • ిͩͱ࣌ؒ • SIMLPWAͳͲಉ༷ʢLPWAͰ͖Δ͕ΰχϣΰχϣ…ʣ • ߏ • NݸͷBLEΤοξσόΠεʴڅిήʔτΣΠ • ཧతɺిؾతʹ͢Δඞཁ͕͋Δ
Slide 43
Slide 43 text
ηΩϡϦςΟ • ΈࠐΈܥͷઐ༻νοϓͷ߹େ֎͔Βͷ ΞΫηεΛ͙ΈΛඋ͍͑ͯΔ • ഁյ͢Δ͜ͱͰதΛऔΓग़͢͜ͱͰ͖Δ͕ɺ ͦͷ߹͕յΕΔͷͰແҙຯԽ͢Δʢ༷͕͍͍ʣ • ڞ௨ͷΫϨσϯγϟϧΛආ͚Δ
Slide 44
Slide 44 text
᠘ • ΄΅ͯ͢ͷNon-OSܥͷίϯϘνοϓ Wi-Fi 5GHzରԠͯ͠ͳ͍ • ʢฐࣾͷήʔτΣΠॳظͷ2015͔Β 5GHzରԠࡁΈʣ
Slide 45
Slide 45 text
ʢϥζύΠ͡Όͳ͍ͳΒʣ nRF52(BLE)Ͱ͍͍Α
Slide 46
Slide 46 text
·ͱΊ
Slide 47
Slide 47 text
·ͱΊ • Raspberry Pi͕શʹ࣭໘ͰଞΛѹ͍ͯ͠Δ • Raspberry Pi͕શʹIoTϨσΟʔͱͳͬͨ • Raspberry Piஈ(ಉྨͷதͰ)΄΅࠷҆ • Raspberry PiʹେྔͷιϑτΣΞ ࢿݯ͕͋ΔͷͰࢼ࡞ɾ։ൃίετΛѹॖͰ͖Δ
Slide 48
Slide 48 text
ຊ൪ར༻࣭”໋” Raspberry PiΛ͓͏ʂ
Slide 49
Slide 49 text
͓ΘΓ