ESP8266/NodeMCU Lua

Тема в разделе "Arduino & Shields", создана пользователем Securbond, 26 мар 2016.

  1. Мих

    Мих Нуб

    Да уж ESP покруче любой pi pi pi будет:) ИгорьК, спасибо.
     
  2. ИгорьК

    ИгорьК Гуру

    Вы просто еще не понимаете основ и особенностей - не спешите делать выводы. Все работает очень стабильно.
    Перезагрузка при отключении BME280 происходит по причине попытки арифметических действий с отсутствующими данными nil.
    Причем, если это блуждающая ошибка в программе - модуль перезагружается и работает дальше, а не виснет, как в любых других системах.
     
  3. Мих

    Мих Нуб

    Вы правы. Буду вникать в матчасть:)
     
  4. Мих

    Мих Нуб

    Добрый вечер! Кому нибудь приходилось иметь дело с ccs811?
    Вот пытаюсь общаться с ним. Откликается на HW_ID, HW Version и т.п., однако отказывается записывать в MEAS_MODE( Может кто нибудь подскажет, что я делаю не так
    Код (C++):
    [code=cpp]lighton=0
    pin=4
    gpio.mode(pin,gpio.OUTPUT)

    sda, scl = 1, 2
    i2c.setup(0, sda, scl, i2c.SLOW) -- call i2c.setup() only once
    id=0
    addrccs811=0x5A

    gpio.write(pin,gpio.LOW)
    print ("1")
    -- SW_RESET
          i2c.start(id)
          i2c.address(id, addrccs811 ,i2c.TRANSMITTER)
          i2c.write(id,0xFF,0x11,0xE5,0x72,0x8A)
          i2c.stop(id)

    tmr.create():alarm(1000, tmr.ALARM_SINGLE, function()
    print("2")
    -- MEAS_MODE=Mode 4 – Constant power mode, sensor measurement every 250ms
          i2c.start(id)
          i2c.address(id, addrccs811 ,i2c.TRANSMITTER)
          i2c.write(id,0x01,0x40)
          i2c.stop(id)
    end)

    print("3")

    --gpio.write(pin,gpio.LOW)

    tmr.alarm(3,2000,1,function()
    if lighton==0 then
    lighton=1
    --gpio.write(pin,gpio.HIGH)
    --Hardware ID. The value is 0x81
          i2c.start(id)
          i2c.address(id, addrccs811 ,i2c.TRANSMITTER)
          i2c.write(id,0x20)
          i2c.stop(id)    
          i2c.start(id)
          i2c.address(id, addrccs811,i2c.RECEIVER)
          cid0=i2c.read(id,1)
          i2c.stop(id)
    --Error ID. When the status register reports an error its source is located in this register
          i2c.start(id)
          i2c.address(id, addrccs811 ,i2c.TRANSMITTER)
          i2c.write(id,0xe0)
          i2c.stop(id)    
          i2c.start(id)
          i2c.address(id, addrccs811,i2c.RECEIVER)
          cid=i2c.read(id,1)
          i2c.stop(id)
    --MEAS_MODE R/W 1 byte Measurement mode and conditions register
          i2c.start(id)
          i2c.address(id, addrccs811 ,i2c.TRANSMITTER)
          i2c.write(id,0x01)
          i2c.stop(id)    
          i2c.start(id)
          i2c.address(id, addrccs811,i2c.RECEIVER)
          cid2=i2c.read(id,1)
          i2c.stop(id)


     
        print ("Hardware ID,Error ID,MEAS_MODE",string.byte(cid0),string.byte(cid),string.byte(cid2))
    else

    lighton=0
    --gpio.write(pin,gpio.LOW)


    end
    end)
    tmr.alarm(0,5000, tmr.ALARM_AUTO, function()
       
    --      i2c.start(id)
    --      i2c.address(id, addrccs811 ,i2c.TRANSMITTER)
    --      i2c.write(id,0x01,0x40)
    --      i2c.stop(id)
    --ALG_RESULT_DATA  
          i2c.start(id)
          i2c.address(id, addrccs811 ,i2c.TRANSMITTER)
          i2c.write(id,0x02)
          i2c.stop(id)    
          i2c.start(id)
          i2c.address(id, addrccs811,i2c.RECEIVER)
          cid3=i2c.read(id,4)
             i2c.stop(id)
    eco3= cid3:byte(1)*256+cid3:byte(2)
    eco4= cid3:byte(3)*256+cid3:byte(4)

        print ("ALG_RESULT_DATA",string.format("%.01f",eco3),string.format("%.01f",eco4))

       end)
    [/code]
     
  5. ИгорьК

    ИгорьК Гуру

    Недочитали что-то из даташита. Раз откликается - значит рабочий и правильно соединен. Остается слать на него правильный код.
     
  6. Мих

    Мих Нуб

    Так по даташиту для инициализации нужно MEAS_MODE записать байт <>0 Записываю одно, а считываю другое. Пытался подсмотреть реализацию на Си под iot, там вроде(более 10 лет с asm и си дело не имел) как у меня.Вот теперь и не знаю, что и думать:(
     
  7. Bubastic

    Bubastic Нерд

    А нет ли примера на Lua как прикрутить к ESP KY-037 и слать это все :) на народный мониторинг ?
    Уточню, У KY-037 есть цифровой и аналоговый выход, а задача стоит видеть на НМ некий уровень шума
     
    Последнее редактирование: 24 мар 2018
  8. Bubastic

    Bubastic Нерд

    На аналоговом выходе наверно какое то 0-255? Это можно просто посылать в мониторинг?
     
    Последнее редактирование: 26 мар 2018
  9. ИгорьК

    ИгорьК Гуру

    На аналоговом выходе напряжение от 0 до 3.3 или 5 в - надо смотреть даташит.
    Его несложно измерить. Измерение выдает результат от 0 до 1024.
    Надо помнить, что есп измеряет напряжение только от 0 до 1 вольта, нужен резистивный делитель.
     
  10. Bubastic

    Bubastic Нерд

    ааа... :( ,

    а это не оно?
     
  11. ИгорьК

    ИгорьК Гуру

    Начать лучше с определения максимального выходного напряжения от датчика. Оно каково?
     
  12. Bubastic

    Bubastic Нерд

    на аналоговом max. 3.28v
     
  13. Bubastic

    Bubastic Нерд

    попадалась информация, что BME-280 очень плохо себя ведет на улице, мол врет.
     
  14. ИгорьК

    ИгорьК Гуру

    Шут его знает, я не очень понимаю зачем он нужен на улице. Давление оно плюс/минус одинаковое внутри помещения и снаружи.

    Чет мне кажется, вот это самое лучшее решение для мониторинга температура/влажность на улице:
    [​IMG]
    А давление можно и в помещении измерять, если оно вообще необходимо.
     
    Последнее редактирование: 26 мар 2018
  15. ИгорьК

    ИгорьК Гуру

    дык.... еще раз, что там на мониторинг слать надо - аналоговый выход этого датчика?

    Иди тудой.
     
    Последнее редактирование: 26 мар 2018
  16. Bubastic

    Bubastic Нерд

    да, спасибо, попробую,
    хотя уже прикрутил на коленках примитивно, даже в мониторинге показывает, но результатом не доволен, надо искать что то более качественное чем KY-037
     
    Последнее редактирование: 28 мар 2018
  17. ИгорьК

    ИгорьК Гуру

    Вы не забыли там резистивный делитель сделать? Иначе все будет не правильно.
     
  18. Bubastic

    Bubastic Нерд

    Поправьте меня если не прав. У меня плата NodeMCU v3, прочитал в нескольких источниках, что у них на Dev плате уже стоит делитель 220K/100K

    Пытаюсь с Вашим примером разобраться и понимаю, что не слова не понимаю :)
     
  19. ИгорьК

    ИгорьК Гуру

    Не. Найдите даташит и убедитесь в этом сами. Без всяких источников. Взялись за МК - привыкайте к такому подходу. Сэкономите много времени и железа.
     
  20. ИгорьК

    ИгорьК Гуру

    А оно вам надо? :)