вопрос про Devboard на ESP8266, Espruino и датчик температуры DS18B20

Тема в разделе "Iskra JS, Espruino, Йодо", создана пользователем Joshua, 24 окт 2016.

  1. Joshua

    Joshua Нерд

    прошил на espruino вот такую вот платку: http://www.elecrow.com/wiki/index.php?title=ESP8266_IOT_Boar...



    прошивка 1.87. HTTP сервер заводится, К W-Fi подключается, вроде как все работает, но столкнулся с проблемой: не получается прицепить датчик температуры DS18B20.





    Код (Javascript):
    var ow = new OneWire(D5);

    setInterval(function() {



    var sensor = require("DS18B20").connect(ow); //.....если не спрятать подключение в функцию - то датчик не подхватывает ( по крайней мере так было с Iskra JS)



    sensor.getTemp(function (temp) {



    console.log("Temp is "+temp+"°C");



    });



    }, 1000);
     
    результат:

    Код (Text):

    1v87.tve_master_b3dc05b Copyright 2016 G.Williams
    Espruino is Open Source. Our work is supported
    only by sales of official boards and donations:
    http://espruino.com/Donate
    Flash map 4MB:512/512, manuf 0xe0 chip 0x4016
    >echo(0);
    =undefined
    >Uncaught Error: No DS18B20 found
    at line 1 col 185
    ...ow Error("No DS18B20 found");this.type=parseInt(this.sCode[0...
                                  ^
    in function "c" called from line 1 col 10
    new c(b,a)
             ^
    in function "connect" called from line 1 col 43
    ...quire("DS18B20").connect(ow); //.....\xD0\xB5\xD1\x81\xD0\xB...
                                  ^
    in function called from system
    Uncaught Error: No DS18B20 found
    at line 1 col 185
    ...ow Error("No DS18B20 found");this.type=parseInt(this.sCode[0...
                                  ^


    На искре - все работает, а вот на этой плате так и не понял, какой вывод чему соответствует, и на какой именно по уму надо этот датчик вешать
     
    robotwerter нравится это.
  2. rkit

    rkit Гуру

    Не находид оно сенсора. Подключение проверяй.
     
  3. sys

    sys Злобный Буратино Модератор

    И про резисторы не забыли?
    "... Connect as in the table below, with a 4.7k resistor between data and the 3.3v line..."
    http://www.espruino.com/DS18B20
     
  4. Joshua

    Joshua Нерд

    вот про них я и забыл... а забыл потому, что на амперке-то все ж работало и без них
     
  5. Joshua

    Joshua Нерд

    накинул такую вот конструкцию:

    Код (Javascript):
    var pin = D2; // update for your hardware!
    var ow = new OneWire(pin);
    ds = require("https://raw.githubusercontent.com/espruino/EspruinoDocs/master/devices/DS18B20.js");

    setInterval(function () {
    var s = ow.search();
    console.log({
      search : s
    });
    }, 1000);
    и путем ручного перебора пинов вычислил только два соответствия. а именно:
    D2 в коде - D4 на плате
    D3 в коде - RX на плате.
    больше выходов и соответствий не нашел.

    думаю надо перебором по латинским буквам и цифрам с разным регистром пройтись, но вопрос в диапазоне. какие значения могут быть?
    к тому же мне еще нужно как-то подцепить на i2c часы реального времени. как пины этой шины определить?
     
  6. sys

    sys Злобный Буратино Модератор

  7. Joshua

    Joshua Нерд

    извините, не очень понял. Это как?

    Просканировал сегодня еще модуль ESP-07 с той же прошивкой:
    D2 - GPIO2
    D13 - GPIO13

    Больше двух каналов не нашел, хотя если попытаться вытащить из платы глобальные переменные:


    Код (Javascript):
    let alphabet = 5;
    let numbers = 20;

    let pins = Array(alphabet).fill(0).reduce(function(m, v, a){
        a = String.fromCharCode(a + 65);

        Array(numbers + 1).fill(0).forEach(function(v, n){
            try {
                Function('return ' + a + n)();
            } catch (e) {
                return false;
            }
            return m.push(a + n);
        });

        return m;
    }, []);
    console.log(pins + "");
     
    результатом имеем:

    Код (Text):
    >echo(0);
    D0,D1,D2,D3,D4,D5,D6,D7,D8,D9,D10,D11,D12,D13,D14,D15
    =undefined
     
    Последнее редактирование: 28 окт 2016