IskraJS & PZEM-016

Тема в разделе "Iskra JS, Espruino, Йодо", создана пользователем AntonMZ, 26 сен 2018.

  1. AntonMZ

    AntonMZ Нерд

    Добрый день.

    Просьба сильно не пинать по данной теме.
    Никак не могу совладать с IskraJS и PZEM-016 (измеритель).
    В PZEM-016, согласно инструкции, на выходе UART поверх 485 (Physical layer use UART to RS485 communication interface).
    К IskraJS есть RS485 модуль, пробовал через него, не взлетело, данных нет.
    Пробовал цепляться напрямую с PZEM-016 на A0/А1 порты искры, тоже ничего не выводит.
    Подскажите пожалуйста куда копать, а то темный лес какой-то...
     
  2. ИгорьК

    ИгорьК Гуру

    Ну, насколько помню, там непростой протокол обмена. Сначала надо задать вопрос, чтобы получить ответ.
    А это зря - можете повредить Искру.
     
  3. ИгорьК

    ИгорьК Гуру

    http://bit.ly/2meXKEh
    Здесь про 004 модель, но думаю, 016- то же, но через rs485.
     
  4. parovoZZ

    parovoZZ Гуру

    это как? И UART и RS-485 - это физические интерфейсы. Одно поверх другого быть не могет.

    А 016 от 004Т только наличием корпуса отличается?
     
  5. parovoZZ

    parovoZZ Гуру

    тады модуль на max485 и вперед с пестней.
     
  6. AntonMZ

    AntonMZ Нерд

    В инструкции написано "Physical layer to use UART to RS485 communication interface.
     
  7. parovoZZ

    parovoZZ Гуру

    И в чем противоречие? UART преобразуется в 485. Так всегда делали и делают. ))) I2C и USART в 485 не преобразовывается.
     
  8. ИгорьК

    ИгорьК Гуру

    upload_2018-9-26_17-12-47.png

    Что там написано? В кружочке! Это надо же - к ногам Искры присоединять!
     
  9. ИгорьК

    ИгорьК Гуру

    upload_2018-9-26_17-16-3.png

    А здесь вообще все нарисовано
     
    Mitrandir нравится это.
  10. AntonMZ

    AntonMZ Нерд

    В кружке написано ровно тоже самое что и на картинке.
    На модуле RS485 от Искры тоже самое.
    Соединяю A/B контакты модуля и PZEM.
    Код беру самый простой.

    Код (C++):
    var rs485 = require('@amperka/rs-485').connect({
      dirPin: P3,
    });

    rs485.write("0x0000");
    a = rs485.available();
    console.log(a);
    Модуль RS485 от амперки моргает диодами при отправке запроса (DIR+TX), но в ответ ничего не приходит (не моргает RX). 0x0000 уже заменял разными значениями, ничего не меняется.

    Такие же коды от PZEM в инструкции.
    [​IMG]
     
  11. ИгорьК

    ИгорьК Гуру

    А протокол там - modbus, если это что-то вам говорит.
    В частности, как я и предполагал: пока не спросишь - не ответит.
     
  12. AntonMZ

    AntonMZ Нерд

    Вопрос только какие параметры все же передавать, те которые я указал на картинке и правильно ли код написан, что сначала делается запрос (write), а потом сразу же запрос ответа (available).
    Просто на PZEM нет никаких индикаторов, не могу понять, работает оно или нет...
     
  13. ИгорьК

    ИгорьК Гуру

    Не... Не выйдет. Задай модулю вопрос правильно, да еще посчитай crc16 - и будет щастье.
     
  14. ИгорьК

    ИгорьК Гуру

    MODBUS - секретное слово.
    Если в PZEM-004t был UART и тоже некислая "постановка вопросов", то здесь еще веселее.
    Ищи примеры работы Искры по протоколу MODBUS.
     
  15. ИгорьК

    ИгорьК Гуру

  16. ИгорьК

    ИгорьК Гуру

  17. parovoZZ

    parovoZZ Гуру

    Мда... Не по Сеньке шапка...
     
  18. AntonMZ

    AntonMZ Нерд

    Все с чего-то начинают...
     
  19. AntonMZ

    AntonMZ Нерд

  20. ИгорьК

    ИгорьК Гуру

    С мигания лампочками, а не с протокола MODBUS.
     
    parovoZZ нравится это.