Slide 1

Slide 1 text

͖Έ͸$)*3*.&/Λ
 ஌͍ͬͯΔ͔ʁ

Slide 2

Slide 2 text

ීஈ͸ΤϯλʔϓϥΠζܥͷιϑτ΢ΣΞΤϯδχΞ ಀආ׆ಈͱͯ͠ϚΠίϯϘʔυ .JDSP1ZUIPO޷͖ ࣗݾ঺հ

Slide 3

Slide 3 text

݄̔͸͡Ίͷ͋Δ೔ ݄ʹ։࠵͢ΔϋοΧιϯͰ ߨࢣਞͷ໨ॲ͕͍ͭͯͳ͍Α͏Ͱ͢ɻ ʻதུʼ ؀ڥ͸ϥζϕϦʔύΠʴ$IJSJNFO ʢ*P5ϓϩάϥϛϯά؀ڥʣ ͱ͋Δ஌ਓ $IJSJNFO

Slide 4

Slide 4 text

CHIRIMEN OPEN HARDWARE https://chirimen.org/

Slide 5

Slide 5 text

$)*3*.&/ͱ͸ʁ ΢Σϒϒϥ΢β͸ώτ͕ίϯϐϡʔλωοτϫʔΫΛར༻͢ΔͨΊͷॏཁͳ໾ׂ ΛՌ͖ͨͯ͠·ͨ͠ɻ͞Βʹ༷ʑͳΞϓϦέʔγϣϯΛಈ࡞ͤ͞ΔίϯϐϡʔςΟ ϯάϓϥοτϑΥʔϜͱͯ͠ͷ໾ׂ΋૿͍ͯ͠·͢ɻ *P5΍8P5ͱ͍ͬͨίϯηϓτ͕ࣔ͢ɺ͞·͟·ͳϞϊ͕ίϯϐϡʔλωοτ ϫʔΫͰܨ͕Δະདྷͷࣾձʹ͓͍ͯ΋ɺࢲͨͪώτ͸ॏཁͳଘࡏͰ͢ɻ͕ͨͬ͠ ͯɺώτͱϞϊ͕΢ΣϒΛհͯ͠ޓ͍ʹڠௐ͋͑͠Δ؀ڥ͕ඞཁͰ͢ɻͦͯ͠ɺ ͦΕ͸΢Σϒϒϥ΢β֩ʹ࡞ΒΕ͍ͯ͘ͷ͸ͳ͍͔ͱߟ͑·͢ɻ ຊϓϩδΣΫτ͸ɺ͜ͷΑ͏ͳ؀ڥʢϓϥοτϗʔϜʣΛࢀՃऀͷօ͞ΜͱΦʔ ϓϯʹσβΠϯ͠ɺͭ͘Γ͍͋͛ͯ͘͜ͱΛΊ͟͠·͢ɻ·ͨ͜ͷΑ͏ͳࠓޙͷ ৽ͨͳࣾձͰͷl΢ΣϒΒ͠͞zͱ͸Կ͔ɺ΢ΣϒΛհͨ͠ΑΓΑ͍ώτɾϞϊͷ ؔ܎ͱ͸Կ͔ΛɺσΟεΧογϣϯɺϓϩτλΠϓ੍࡞ɺར༻ɺվྑΛ௨ͯ͠ߟ ͑ɺఏҊ͍͖ͯ͠·͢ɻ 〜from 「ABOUT」

Slide 6

Slide 6 text

ݯྲྀ͸ɺ͋ͷ'JSFGPY04

Slide 7

Slide 7 text

$)*3*.&/Ϙʔυɿ&DIJHP3FW ೥݄̕ɺεΠοναΠΤϯε͔Βൢച։࢝ 'JSFGPY04ͷ044൛ɺ#( #PPUUP(FDLP 04͕ಈ࡞ 8FC(1*0"1* 8FC*$"1*ͰηϯαʔΞΫνϡΤʔλʹΞΫηε ։ൃʹ͸1$Λܨ͍Ͱɺ'JSFGPY্ͷ8FC*%&Λ࢖͏ ೥݄̍ɺ׬ച ೖՙͳ͍ঢ়ଶ͕ଓ͖ɺೖखࠔ೉

Slide 8

Slide 8 text

$)*3*.&/GPS3BTQCFSSZ1J ೥݄ϦϦʔε ΋͸΍#(04Ͱ΋ͳ͍ɺ'JSFGPY΋࢖Θͳ͍ 3BTQCJBOͷ্ʹ8FC(1*0"1* 8FC*$"1*Λ࣮૷ ։ൃʹ͸ΦϯϥΠϯ8FCΤσΟλ+4#JO·ͨ͸+4'JEEMFͷར༻Λ૝ఆ

Slide 9

Slide 9 text

͘͠Έ +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

Slide 10

Slide 10 text

ඪ४αϙʔτ*$σόΠε 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λονηϯαʔ

Slide 11

Slide 11 text

νϡʔτϦΞϧ͸ׂͱॆ࣮ https://github.com/chirimen-oh/chirimen-raspi3/wiki/Tutorial

Slide 12

Slide 12 text

ݸਓతʹ͸࣋ͬͯͳ͍σόΠε͹͔ΓͰ೉ّ

Slide 13

Slide 13 text

ख࣋ͪͷ୅ସ඼ͰؤுͬͯΈͨ #.&
 Թ౓ɾ࣪౓ɾؾѹηϯαʔ -
 ϞʔλʔυϥΠόʔ %"*40ͷ64#ઔ෩ػ

Slide 14

Slide 14 text

͜͏ͳΔͱɺσʔλγʔτௐ΂Δͷ͸ඞਢ #.&
 Թ౓ɾ࣪౓ɾؾѹηϯαʔ -
 ϞʔλʔυϥΠόʔ

Slide 15

Slide 15 text

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)); #.&໘౗͘͞ա͗

Slide 16

Slide 16 text

ͱ͜ΖͰʜ

Slide 17

Slide 17 text

͏͢͏͢ɺ
 ײ͍ͮͯΔ͔΋͠Ε·ͤΜ͕ʜ

Slide 18

Slide 18 text

+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 Πϯλʔωοτ͚͔ͩ͜͜Αʂ

Slide 19

Slide 19 text

"NCJFOUʹଌఆσʔλΛ͋͛ͯΈΑ͏ͱࢥͬͨʜ https://ambidata.io/

Slide 20

Slide 20 text

"NCJFOUʹσʔλΛ͋͛Δํ๏ ௚઀࢖͑Δ"1*͸ແ͔͕ͬͨɺதͰ΍͍ͬͯΔ͜ͱ ͸ׂͱ؆୯ 3&45GVM"1*ͰσʔλΛ1045͢Ε͹Α͍ 63-͸IUUQBNCJEBUBJPBQJWDIBOOFMTνϟϯωϧ*%EBUB σʔλ CPEZ ͸+40/ܗࣜͰ༩͑Δ \XSJUF,FZϥΠτΩʔ Eσʔλ Eσʔλ ʜ^ ͳͷͰɺ+BWB4DSJQUͷGFUDIͰ΋࢖͑͹Α͍ͷ͔ͱ ҆қʹߟ͑ͨ

Slide 21

Slide 21 text

͕ͩɺͦΜͳʹ؁͘ͳ͔ͬͨʂ .JYFE$POUFOU໰୊ +4#JO΍+4'JEEMF͸IUUQT͕ͩ"NCJFOUͷ3&45GVM"1*͸IUUQͳͷͰ
 ϦΫΤετ͕ϒϩοΫ͞ΕΔ )5.-ΛϩʔΧϧʹμ΢ϯϩʔυͯ͠ಈ͔ͯ͠ճආ ΫϩευϝΠϯ੍໿໰୊ $034 $SPTT0SJHJO3FTPVSDF4IBSJOH Λ࢖͏ʹ͸αʔόଆͷରԠ͕ඞཁ IUUQϔομͷNPEFΛOPDPSTʹͯͯ͠͠Έͨ $POUFOU5ZQF໰୊ BQQMJDBUJPOKTPOΛࢦఆͯ͠΋UFYUQMBJOͰ1045͞Εͯ͠·͏ OPDPSTͰ͸ͦ͏͍͏΋ͷΒ͍͠ μʔςΟͳखஈͰ͋Δ͕ɺɺɺ ϔομΛॻ͖׵͑Δ$ISPNFϓϥάΠϯΛ࢖ͬͯ$POUFOU5ZQFΛڧҾʹ
 BQQMJDBUJPOKTPOʹॻ͖׵͑ͨ Α͍ࢠ͸·Ͷͪ͠Όμϝ

Slide 22

Slide 22 text

No content

Slide 23

Slide 23 text

8FCϒϥ΢βͰ+BWB4DSJQU࢖ͬͯ *P5͍ͨ͠ͳΒଞʹ΋બ୒ࢶ͋Δ

Slide 24

Slide 24 text

Mongoose OS https://mongoose-os.com/

Slide 25

Slide 25 text

obniz https://obniz.io/

Slide 26

Slide 26 text

·ͱΊ $)*3*.&/͸'JSFGPY04༝དྷͷٕज़Λ*P5ʹద༻ ͢ΔࢼΈ 8FCϑϩϯτΤϯυ্Ͱ8FC(1*0*$"1*Λ࢖ͬ ͯηϯαʔʗΞΫνϡΤʔλʹΞΫηε ઐ༻Ϙʔυ͸ೖखࠔ೉ͳঢ়گ ୅ΘΓʹ3BTQCFSSZ1Jͷ3BTQCJBO্Ͱಈ͘΋ ͷ͕ग़͍ͯΔ 8FCٕज़ͰϓϩάϥϛϯάͰ͖Δͱݴͬͯ΋)8 ஌ࣝ͸ඞཁ 8P5Λ͏͍ͨͬͯΔׂʹ͸֎ͱͷ࿈ܞ͕໘౗ͳͷ ͰɺԿΒ͔ͷվળ͸ඞཁͩΖ͏ ͍Ζ͍ΖͱϥΠόϧͬΆ͍ͷ΋ग़͖͍ͯͯΔ