Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
iotlt-sap-20180830.pdf
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
MinoruInachi
August 31, 2018
Technology
510
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
iotlt-sap-20180830.pdf
IoTLT札幌 Vol.4での発表資料です。
MinoruInachi
August 31, 2018
More Decks by MinoruInachi
See All by MinoruInachi
Gateway H2 モジュールで スマートホーム入門
minoruinachi
0
310
この夏の散財とRP2040搭載ゲーム機Thumbyを ブレッドボード上で再現してみた話
minoruinachi
0
230
マイコン内蔵LEGOブロック用に カスタムデバイスを繋げてみる (挑戦編)
minoruinachi
0
210
Wio LTEで心拍数計測
minoruinachi
0
290
Wio Extension - RTC を MicroPython から使う
minoruinachi
0
2.1k
Pythonとラズパイで ラジコンカーを自動操縦に!
minoruinachi
1
880
LEGO BOOST で大人も遊ぼう! 〜ラズパイカメラ連携編〜
minoruinachi
1
870
M5GOについてちょっと語ってみる
minoruinachi
0
810
M5Stackに手を出そう!
minoruinachi
1
1k
Other Decks in Technology
See All in Technology
[チョークトーク資料]AWS DevOps Agent を使いこなす / AWS Dev Ops Agent Chalk Talk AWS Summit Japan 2026
kinunori
3
710
現場のトークンマネジメント
dak2
1
150
10年間のブログ発信を振り返って見えたWebアプリケーションエンジニアとしての軌跡
stefafafan
0
170
生成 AI 実践ガイド (概略版) AIガバナンス編
asei
0
150
Claude Codeをどのように キャッチアップしているか
oikon48
13
8.7k
Oracle AI Database@Azure:サービス概要のご紹介
oracle4engineer
PRO
6
2k
秘密度ラベル初心者が第1歩でつまづかないための「設計・運用」ポイント
seafay
PRO
1
410
手塩にかけりゃいいってもんじゃない
ming_ayami
0
620
新しいUbuntu/GNOMEが使いたいからXからWaylandへ移行頑張ってるの巻 2026-06-20
nobutomurata
0
160
データサイエンスを価値につなげるプロジェクト設計 〜 DS一年目が現場で得た気づき 〜
ysd113
1
290
FPC(フレキシブル)基板にZephyr実装してみた。
iotengineer22
0
140
When Platform Engineering Meets GenAI
sucitw
0
150
Featured
See All Featured
Believing is Seeing
oripsolob
1
150
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
490
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
270
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
210
AI: The stuff that nobody shows you
jnunemaker
PRO
8
720
Paper Plane (Part 1)
katiecoart
PRO
0
9.2k
Mobile First: as difficult as doing things right
swwweet
225
10k
We Are The Robots
honzajavorek
0
250
What's in a price? How to price your products and services
michaelherold
247
13k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
390
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
250
Transcript
͖Έ$)*3*.&/Λ ͍ͬͯΔ͔ʁ
ීஈΤϯλʔϓϥΠζܥͷιϑτΣΞΤϯδχΞ ಀආ׆ಈͱͯ͠ϚΠίϯϘʔυ .JDSP1ZUIPO͖ ࣗݾհ
݄̔͡Ίͷ͋Δ ݄ʹ։࠵͢ΔϋοΧιϯͰ ߨࢣਞͷॲ͕͍ͭͯͳ͍Α͏Ͱ͢ɻ ʻதུʼ ڥϥζϕϦʔύΠʴ$IJSJNFO ʢ*P5ϓϩάϥϛϯάڥʣ ͱ͋Δਓ $IJSJNFO
CHIRIMEN OPEN HARDWARE https://chirimen.org/
$)*3*.&/ͱʁ Σϒϒϥβώτ͕ίϯϐϡʔλωοτϫʔΫΛར༻͢ΔͨΊͷॏཁͳׂ ΛՌ͖ͨͯ͠·ͨ͠ɻ͞Βʹ༷ʑͳΞϓϦέʔγϣϯΛಈ࡞ͤ͞ΔίϯϐϡʔςΟ ϯάϓϥοτϑΥʔϜͱͯ͠ͷׂ૿͍ͯ͠·͢ɻ *P58P5ͱ͍ͬͨίϯηϓτ͕ࣔ͢ɺ͞·͟·ͳϞϊ͕ίϯϐϡʔλωοτ ϫʔΫͰܨ͕Δະདྷͷࣾձʹ͓͍ͯɺࢲͨͪώτॏཁͳଘࡏͰ͢ɻ͕ͨͬ͠ ͯɺώτͱϞϊ͕ΣϒΛհͯ͠ޓ͍ʹڠௐ͋͑͠Δڥ͕ඞཁͰ͢ɻͦͯ͠ɺ ͦΕΣϒϒϥβ֩ʹ࡞ΒΕ͍ͯ͘ͷͳ͍͔ͱߟ͑·͢ɻ ຊϓϩδΣΫτɺ͜ͷΑ͏ͳڥʢϓϥοτϗʔϜʣΛࢀՃऀͷօ͞ΜͱΦʔ ϓϯʹσβΠϯ͠ɺͭ͘Γ͍͋͛ͯ͘͜ͱΛΊ͟͠·͢ɻ·ͨ͜ͷΑ͏ͳࠓޙͷ
৽ͨͳࣾձͰͷlΣϒΒ͠͞zͱԿ͔ɺΣϒΛհͨ͠ΑΓΑ͍ώτɾϞϊͷ ؔͱԿ͔ΛɺσΟεΧογϣϯɺϓϩτλΠϓ੍࡞ɺར༻ɺվྑΛ௨ͯ͠ߟ ͑ɺఏҊ͍͖ͯ͠·͢ɻ 〜from 「ABOUT」
ݯྲྀɺ͋ͷ'JSFGPY04
$)*3*.&/Ϙʔυɿ&DIJHP3FW ݄̕ɺεΠοναΠΤϯε͔Βൢച։࢝ 'JSFGPY04ͷ044൛ɺ#( #PPUUP(FDLP 04͕ಈ࡞ 8FC(1*0"1* 8FC*$"1*ͰηϯαʔΞΫνϡΤʔλʹΞΫηε ։ൃʹ1$Λܨ͍Ͱɺ'JSFGPY্ͷ8FC*%&Λ͏ ݄̍ɺച ೖՙͳ͍ঢ়ଶ͕ଓ͖ɺೖखࠔ
$)*3*.&/GPS3BTQCFSSZ1J ݄ϦϦʔε #(04Ͱͳ͍ɺ'JSFGPYΘͳ͍ 3BTQCJBOͷ্ʹ8FC(1*0"1* 8FC*$"1*Λ࣮ ։ൃʹΦϯϥΠϯ8FCΤσΟλ+4#JO·ͨ+4'JEEMFͷར༻Λఆ
͘͠Έ +4#JO +4'JEEMF ΦϯϥΠϯWebΤσΟλ Web GPUO/I2C API QPMZpMMKT I2C σόΠεAPI
JD"%5KT JD"%5KT JD"%5KT Raspberry Pi 3 / Raspbian Chromium HTML wss://localhost:33330/ WebSocket node srv.js /sys/class/gpio/gpioXX /dev/i2c-1 Raspberry Pi 3 Hardware GPIO I2C
ඪ४αϙʔτ*$σόΠε JD"%4KT "%ίϯόʔλ JD"%5KT Թηϯαʔ JD(1:&KT ֎ઢڑηϯαʔ JD1$"KT 18.αʔϘϞʔλʔυϥΠόʔ JD4KT
Χϥʔηϯαʔ JD7&.-KT 67ηϯαʔ JDDBO[BJCMJOLKT *̎$4MBWFσόΠε։ൃϘʔυ JDHSPWFBDDFMFSPNFUFSKT (SPWFՃηϯαʔ JDHSPWFHFTUVSFKT (SPWFδΣενϟʔηϯαʔ JDHSPWFMJHIUKT (SPWF*$ޫηϯαʔ JDHSPWFPMFE%JTQMBZKT (SPWF0-&%σΟεϓϨΠ JDHSPWFUPVDIKT (SPWFλονηϯαʔ
νϡʔτϦΞϧׂͱॆ࣮ https://github.com/chirimen-oh/chirimen-raspi3/wiki/Tutorial
ݸਓతʹ࣋ͬͯͳ͍σόΠε͔ΓͰّ
ख࣋ͪͷସͰؤுͬͯΈͨ #.& Թɾ࣪ɾؾѹηϯαʔ - ϞʔλʔυϥΠόʔ %"*40ͷ64#ઔ෩ػ
͜͏ͳΔͱɺσʔλγʔτௐΔͷඞਢ #.& Թɾ࣪ɾؾѹηϯαʔ - ϞʔλʔυϥΠόʔ
var BME280 = function(i2cPort,slaveAddress){ this.i2cPort = i2cPort; this.i2cSlave = null;
this.slaveAddress = slaveAddress; }; BME280.prototype = { init: function(){ return new Promise((resolve, reject)=>{ this.i2cPort.open(this.slaveAddress).then((i2cSlave)=>{ this.i2cSlave = i2cSlave; //console.log("init ok:"+this.i2cSlave); this.digT = []; this.digP = []; this.digH = []; this.temp = 0.0; this.pres = 0.0; this.hum = 0.0; this.t_fine = 0.0; var osrs_t = 1; // Temperature oversampling x 1 var osrs_p = 1; // Pressure oversampling x 1 var osrs_h = 1; // Humidity oversampling x 1 var mode = 3; // Normal mode var t_sb = 5; // Tstandby 1000ms var filter = 0; // Filter off var spi3w_en = 0; // 3-wire SPI Disable var ctrl_meas_reg = (osrs_t << 5) | (osrs_p << 2) | mode; var config_reg = (t_sb << 5) | (filter << 2) | spi3w_en; var ctrl_hum_reg = osrs_h; this.writeReg(0xF2,ctrl_hum_reg) this.writeReg(0xF4,ctrl_meas_reg) this.writeReg(0xF5,config_reg) resolve(); },(err)=>{ reject(err); }); }); }, writeReg: function(reg_address, data){ return new Promise(async (resolve, reject)=>{ if(this.i2cSlave == null){ reject("i2cSlave Address does'nt yet open!"); } else { await this.i2cSlave.write8(reg_address,data); resolve(); } }); }, callibParam: function(){ return new Promise(async (resolve, reject)=>{ if(this.i2cSlave == null){ reject("i2cSlave Address does'nt yet open!"); }else{ var calib = []; for(var i=0x88; i<0x88+24; i++){ calib.push(await this.i2cSlave.read8(i)); } calib.push(await this.i2cSlave.read8(0xA1)); for(i=0xE1; i<0xE1+7; i++){ calib.push(await this.i2cSlave.read8(i)); } this.digT.push((calib[1] << 8) | calib[0]); this.digT.push((calib[3] << 8) | calib[2]); this.digT.push((calib[5] << 8) | calib[4]); this.digP.push((calib[7] << 8) | calib[6]); this.digP.push((calib[9] << 8) | calib[8]); this.digP.push((calib[11]<< 8) | calib[10]); this.digP.push((calib[13]<< 8) | calib[12]); this.digP.push((calib[15]<< 8) | calib[14]); this.digP.push((calib[17]<< 8) | calib[16]); this.digP.push((calib[19]<< 8) | calib[18]); this.digP.push((calib[21]<< 8) | calib[20]); this.digP.push((calib[23]<< 8) | calib[22]); this.digH.push(calib[24]); this.digH.push((calib[26]<< 8) | calib[25]); this.digH.push(calib[27]); this.digH.push((calib[28]<< 4) | (0x0F & calib[29])); this.digH.push((calib[30]<< 4) | ((calib[29] >> 4) & 0x0F)); #.&໘͘͞ա͗
ͱ͜ΖͰʜ
͏͢͏͢ɺ ײ͍ͮͯΔ͔͠Ε·ͤΜ͕ʜ
+4#JO +4'JEEMF ΦϯϥΠϯWebΤσΟλ Web GPUO/I2C API QPMZpMMKT I2C σόΠεAPI JD"%5KT
JD"%5KT JD"%5KT Raspberry Pi 3 / Raspbian Chromium HTML wss://localhost:33330/ WebSocket node srv.js /sys/class/gpio/gpioXX /dev/i2c-1 Raspberry Pi 3 Hardware GPIO I2C Πϯλʔωοτ͚͔ͩ͜͜Αʂ
"NCJFOUʹଌఆσʔλΛ͋͛ͯΈΑ͏ͱࢥͬͨʜ https://ambidata.io/
"NCJFOUʹσʔλΛ͋͛Δํ๏ ͑Δ"1*ແ͔͕ͬͨɺதͰ͍ͬͯΔ͜ͱ ׂͱ؆୯ 3&45GVM"1*ͰσʔλΛ1045͢ΕΑ͍ 63-IUUQBNCJEBUBJPBQJWDIBOOFMTνϟϯωϧ*%EBUB σʔλ CPEZ +40/ܗࣜͰ༩͑Δ \XSJUF,FZϥΠτΩʔ Eσʔλ
Eσʔλ ʜ^ ͳͷͰɺ+BWB4DSJQUͷGFUDIͰ͑Α͍ͷ͔ͱ ҆қʹߟ͑ͨ
͕ͩɺͦΜͳʹ͘ͳ͔ͬͨʂ .JYFE$POUFOU +4#JO+4'JEEMFIUUQT͕ͩ"NCJFOUͷ3&45GVM"1*IUUQͳͷͰ ϦΫΤετ͕ϒϩοΫ͞ΕΔ )5.-ΛϩʔΧϧʹμϯϩʔυͯ͠ಈ͔ͯ͠ճආ ΫϩευϝΠϯ੍ $034 $SPTT0SJHJO3FTPVSDF4IBSJOH Λ͏ʹαʔόଆͷରԠ͕ඞཁ IUUQϔομͷNPEFΛOPDPSTʹͯͯ͠͠Έͨ
$POUFOU5ZQF BQQMJDBUJPOKTPOΛࢦఆͯ͠UFYUQMBJOͰ1045͞Εͯ͠·͏ OPDPSTͰͦ͏͍͏ͷΒ͍͠ μʔςΟͳखஈͰ͋Δ͕ɺɺɺ ϔομΛॻ͖͑Δ$ISPNFϓϥάΠϯΛͬͯ$POUFOU5ZQFΛڧҾʹ BQQMJDBUJPOKTPOʹॻ͖͑ͨ Α͍ࢠ·Ͷͪ͠Όμϝ
None
8FCϒϥβͰ+BWB4DSJQUͬͯ *P5͍ͨ͠ͳΒଞʹબࢶ͋Δ
Mongoose OS https://mongoose-os.com/
obniz https://obniz.io/
·ͱΊ $)*3*.&/'JSFGPY04༝དྷͷٕज़Λ*P5ʹద༻ ͢ΔࢼΈ 8FCϑϩϯτΤϯυ্Ͱ8FC(1*0*$"1*Λͬ ͯηϯαʔʗΞΫνϡΤʔλʹΞΫηε ઐ༻Ϙʔυೖखࠔͳঢ়گ ΘΓʹ3BTQCFSSZ1Jͷ3BTQCJBO্Ͱಈ͘ ͷ͕ग़͍ͯΔ 8FCٕज़ͰϓϩάϥϛϯάͰ͖Δͱݴͬͯ)8 ࣝඞཁ
8P5Λ͏͍ͨͬͯΔׂʹ֎ͱͷ࿈ܞ͕໘ͳͷ ͰɺԿΒ͔ͷվળඞཁͩΖ͏ ͍Ζ͍ΖͱϥΠόϧͬΆ͍ͷग़͖͍ͯͯΔ