Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
iotlt-sap-20180830.pdf
Search
MinoruInachi
August 31, 2018
Technology
530
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
330
この夏の散財とRP2040搭載ゲーム機Thumbyを ブレッドボード上で再現してみた話
minoruinachi
0
250
マイコン内蔵LEGOブロック用に カスタムデバイスを繋げてみる (挑戦編)
minoruinachi
0
230
Wio LTEで心拍数計測
minoruinachi
0
310
Wio Extension - RTC を MicroPython から使う
minoruinachi
0
2.1k
Pythonとラズパイで ラジコンカーを自動操縦に!
minoruinachi
1
910
LEGO BOOST で大人も遊ぼう! 〜ラズパイカメラ連携編〜
minoruinachi
1
890
M5GOについてちょっと語ってみる
minoruinachi
0
850
M5Stackに手を出そう!
minoruinachi
1
1k
Other Decks in Technology
See All in Technology
Kiro Crewをはじめよう
kizawa2020
1
160
⾮構造化データを価値に変える AI エージェント基盤とその組織
ivry_presentationmaterials
0
190
エンタメ企業のM&Aを支えるデータ基盤 ― 統合から店舗のリアルタイム分析まで / Data Engineering Summit 2026
genda
0
170
Claude Code本は、どのように執筆チームで書かれたか
oikon48
1
380
ブラウザとサーバーから考えるAI時代のフロントエンド監視
shogo4131
3
940
How to Design Configuration for Rails Applications
willnet
1
770
分析の民主化を支えるメタデータ整備の実践
kakehashi
PRO
4
1.4k
Benchmarking Disaggregated Serving on vLLM + Dynamo with a Real Coding-Agent Workload
nttcom
1
190
実践! SRE × AI - ABEMA における AIOps -
tetsuya28
8
3.1k
分析AIエージェントを育てる、動く環境を育てる
codatum
1
1.1k
go-sqletch
moznion
0
140
AIカンパニーへの転換を支えた、エンジニアの仕事の再定義
kworkdev
PRO
2
1.2k
Featured
See All Featured
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
1
630
The untapped power of vector embeddings
frankvandijk
2
1.9k
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
400
Google's AI Overviews - The New Search
badams
0
1.6k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
69
67k
A better future with KSS
kneath
240
18k
How to make the Groovebox
asonas
2
2.5k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2.1k
Product Roadmaps are Hard
iamctodd
55
13k
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
460
A Soul's Torment
seathinner
8
3.8k
Embracing the Ebb and Flow
colly
88
5.2k
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Λ͏͍ͨͬͯΔׂʹ֎ͱͷ࿈ܞ͕໘ͳͷ ͰɺԿΒ͔ͷվળඞཁͩΖ͏ ͍Ζ͍ΖͱϥΠόϧͬΆ͍ͷग़͖͍ͯͯΔ