Upgrade to Pro — share decks privately, control downloads, hide ads and more …

iotlt-sap-20180830.pdf

 iotlt-sap-20180830.pdf

IoTLT札幌 Vol.4での発表資料です。

MinoruInachi

August 31, 2018
Tweet

More Decks by MinoruInachi

Other Decks in Technology

Transcript

  1. ͘͠Έ +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
  2. ඪ४αϙʔτ*$σόΠε 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λονηϯαʔ
  3. 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. +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 Πϯλʔωοτ͚͔ͩ͜͜Αʂ
  5. ͕ͩɺͦΜͳʹ؁͘ͳ͔ͬͨʂ .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ʹॻ͖׵͑ͨ Α͍ࢠ͸·Ͷͪ͠Όμϝ