Сделал корпус для сенсора bme280 и на макетку его

Тема в разделе "Глядите, что я сделал", создана пользователем Vitaliy-Sh, 21 мар 2020.

  1. Vitaliy-Sh

    Vitaliy-Sh Нерд

    Сделал тройка модуль с датчиком i2c BME280 и независимым 3мм светодиодом (сопротивление поставил несколько кОм, что бы ярко не светил, про нагрев не знаю).

    В Компас 3D начертил корпус под датчик - https://www.thingiverse.com/thing:4234390

    Собираю домашнюю метеостанцию на Iskra JS, данные (температура, влажность, давление, освещенность) можно посмотреть на экранчике при нажатии на кнопку. Также пока данные отсылаются на dweet (при долгом нажатии высвечивается на экране ссылка), но будет использоваться blynk. При считывании данных с датчика подмигивает светодиод на модуле с BME280.
     

    Вложения:

    Un_ka нравится это.
  2. Vitaliy-Sh

    Vitaliy-Sh Нерд

    Вот скрипт на JS если кому интересно. Данные отправляются в Blynk и Вweetio.

    Код (Javascript):
    I2C1.setup({scl:SCL,sda:SDA});

    var SSID = '******';
    var PASSWORD = '*********';
    var NAME = '******'; //ключ для Вweetio
    var AUTH = '**************************'; //ключ Blynk
    var temp_act, press_act, hum_act, lx;

    var dweet = require('@amperka/dweetio').connect(NAME);
    var dweetsite = dweet.follow();

    var Blynk = require('https://raw.githubusercontent.com/vshymanskyy/blynk-library-js/master/blynk-espruino.js');

    var bme = require('BME280').connect(I2C1);

    function start(){
      screen.clear();
      screen.setFontVector(22);
      screen.on();
      screen.drawString('POEHALI', 5, 5);
      screen.flip();
      setTimeout("screen.off()", 3000);
    }

    var screen = require("SSD1306").connect(I2C1, start, { height : 32, width : 128, contrast : 0});

    var myButton = require('@amperka/button')
      .connect(P11, {
        debounce: 100,
        holdTime: 3
    });

    var light = require('@amperka/light-sensor').connect(A1);


    setInterval(function() {

      digitalPulse(P7, 1, 1000); //при считывании и отправке данных независимый светодиод на модуле BME280 загорается на 1 сек.

      screen.clear();
      screen.setFontVector(11);

      bme.readRawData();
      var temp_cal = bme.calibration_T(bme.temp_raw);
      var press_cal = bme.calibration_P(bme.pres_raw);
      var hum_cal = bme.calibration_H(bme.hum_raw);

      temp_act = (temp_cal / 100.0).toFixed(1);
      press_act = (press_cal * 0.0075).toFixed(0);
      hum_act = (hum_cal / 1024.0).toFixed(0);
      lx = light.read('lx').toFixed(0);

      screen.drawString('T:  ' + temp_act + ' C' + '  H:  ' + hum_act + '%', 0, 2);
      screen.drawString('P:  ' + press_act + ' mm Hg  ' + lx + ' lx', 0, 18);

      screen.flip();
      dweet.send({
        Temperature: temp_act,
        Humidity: hum_act,
        Pressure: press_act,
        Lightness: lx,
      });
       
    }, 60000);


    function blynkInit() {
      var blynk = new Blynk.Blynk(AUTH);

      var v1 = new blynk.VirtualPin(1);
      var v2 = new blynk.VirtualPin(2);
      var v3 = new blynk.VirtualPin(3);
      var v4 = new blynk.VirtualPin(4);

      v1.on('read', function() {
        v1.write(temp_act);
      });
      v2.on('read', function() {
        v2.write(hum_act);
      });
      v3.on('read', function() {
        v3.write(press_act);
      });
      v4.on('read', function() {
        v4.write(lx);
      });

      blynk.on('connect', function() {
        console.log('Blynk ready.');
        screen.clear();
        screen.on();
        screen.setFontVector(18);
        screen.drawString('Blynk ready', 10, 5);
        screen.flip();
        setTimeout('screen.off()', 5000);
      });
      blynk.on('disconnect', function() {
       console.log('DISCONNECT');
      });
    }


    myButton.on('press', function() {
      screen.on();
      setTimeout("screen.off()", 10000);
    });

    myButton.on('hold', function() {
      screen.clear();
      screen.on();
      screen.setFontBitmap();
      screen.drawString(dweetsite, 0, 15);
      screen.flip();
      setTimeout('screen.off()', 30000);
    });


    var wifi = require('@amperka/wifi').setup(function(err) {
      wifi.connect(SSID, PASSWORD, function(err) {
        blynkInit();
      });
    });
     
    Последнее редактирование: 21 мар 2020