ESP-8266/ESP32 NodeMCU Lua: азы программирования.

Тема в разделе "ESP8266, ESP32", создана пользователем ИгорьК, 25 июл 2017.

  1. ИгорьК

    ИгорьК Гуру

    В верхнем положении датчик замкнут, в нижнем - разомкнут. Что он будет выдавать будет зависеть от подключения. Верно?

    upload_2023-6-22_10-13-28.png

    Второй вариант, то есть резистор на VCC - предпочтительнее. Хотя, зависит от обстоятельств. Здесь надо размышлять, что случится, если произойдет обрыв в цепи датчика.
     
    Последнее редактирование: 22 июн 2023
  2. obuhanoe

    obuhanoe Гик

    Уже понял, что нужен именно цифровой.
    По схеме которую привел, там указано - что через резистор на GND, а не VCC.
    Да именно так. приводил пример по ссылке, там для ардуины был пример
    У меня выдает 1 в нижнем положении и 0 в верхнем.
    Почему считате предпочтительнее?
     
  3. ИгорьК

    ИгорьК Гуру

    В Интернетах написано много забавных вещей. Их надо обдумывать и не всегда принимать на веру.

    Смотрите. Вы напрямую подаете питающее напряжение всего устройства на ногу, которое "убегает" дальше по проводу в "неизвестном" направлении. Провод этот зело длинный и любой его "коротыш" в непотребное место порушит питание всей железки. Другое дело, когда пин подтянут к питанию через резистор. Здесь уже замыкание влияет только на показания ноги, но не на работоспособность всего устройства.


    upload_2023-6-22_12-59-47.png



    upload_2023-6-22_13-4-53.png
     
    Последнее редактирование: 22 июн 2023
    obuhanoe нравится это.
  4. obuhanoe

    obuhanoe Гик

    Сделал как на второй схеме, теперь значения как Вы писали ранее:
    Замкнут (верхнее положение) и возвращается 1, разомкнут (нижнее положение) - значение 0.
    Игорь, спасибо за помощь.
     
    ИгорьК нравится это.
  5. ИгорьК

    ИгорьК Гуру

    А я делаю технологичнее :) В бочке стоит клапан от бачка унитаза. Бочка (их две) наполняется не по датчику, а по времени. Время с запасом 25% от пустой бочки.
    Никаких датчиков.
     
  6. obuhanoe

    obuhanoe Гик

    У меня набор тоже по времени, датчик как говорится для страховки. Если вода ранее не вылилась и бочка полная, чтобы набор воды не начинался и не было перелива.
     
  7. ИгорьК

    ИгорьК Гуру

    Для страховки нужно делать... с аналоговым входом, речь с которого начиналась. Нужно формировать разное напряжение когда датчик включен и когда выключен. Отсутствие его или полное напряжение VCC будет говорить о том, что датчик оборван/закорочен.

    Хотя здесь я не советчик . Сам не делал.

    https://www.bizkit.ru/2021/02/15/19009/


    upload_2023-6-22_13-21-24.png
     
    Последнее редактирование: 22 июн 2023
  8. obuhanoe

    obuhanoe Гик

    то есть подключение точное такое же, только в ADC пин, и видимо считывать нужно с пина через модуль adc nodemcu?
     
  9. ИгорьК

    ИгорьК Гуру

    Типовое включение на картинке. Здесь если датчик оторван или линия замкнута будут крайние значения АЦП, а при включении и выключение - некие другие.
     
  10. obuhanoe

    obuhanoe Гик

    Для меня такое уже сложно - со схемами и электрикой дружу плохо :)
    Оставлю как есть, без обрыва и замыкания.
     
  11. ИгорьК

    ИгорьК Гуру

    Попробуйте, интересно же :) Четыре резистора и чтение аналогового сигнала. Опытным путем определяете правильные значения и вставляете их в код :)
     
  12. obuhanoe

    obuhanoe Гик

    Попробовать можно, но как это все городить в щитке, где установлена esp32 - ума не приложу.
    На макетке проверить проверить думаю смогу, а дальше.....:)
     
  13. ИгорьК

    ИгорьК Гуру


    Два резистора добавляется к ESP, два уходят к датчику. Что получается хорошо видно по ссылке:

    upload_2023-6-22_13-39-31.png


    upload_2023-6-22_13-40-15.png


    upload_2023-6-22_13-42-44.png


    upload_2023-6-22_13-43-54.png
     
    8bitai и obuhanoe нравится это.
  14. obuhanoe

    obuhanoe Гик

    Буду разбираться, спасибо что убедили. ;)
     
  15. ИгорьК

    ИгорьК Гуру

  16. obuhanoe

    obuhanoe Гик

    Соединил, надеюсь правильно, значения считываю (проверяю в esp8266):
    Код (Lua):
    print(adc.read(0))
    Значения получаю в нижнем положении 670-680, в верхнем 1000-1005.
    При обрыве - 1024
    При замыкании - 10-15.
    Если двигать плавно, значения другие не принимаются.

    Напряжение замерил, правда вместо 0,47кОм, был только 0,55кОм:
    Если смотреть на картинки то у меня на:
    1. 3,07В
    2. 2,05В
    3, 3,17В
    4. 0В

    Напряжения же программно не измеришь, верно?
    Реализации необходимо завязывать на значения полученные из adc.read(0)?
     
    Последнее редактирование: 22 июн 2023
    ИгорьК нравится это.
  17. ИгорьК

    ИгорьК Гуру

    Ну да, все необходимые значения вы получили. Напряжение измеряется напряжометром ( :) ), здесь только числа до 1024. Возможно "на местности" они слегка изменятся из-за дины провода.
     
    obuhanoe нравится это.
  18. 8bitai

    8bitai Нерд

    Всё зависит какому измеренному вами напряжению U соответствует число 1024 получаемое контроллером
    к примеру если U=1вольт тогда U/1024=0.0009765625вольт <соответствует каждой единице полученного числа
    тогда к примеру если вы получаете число 512 то теоретически
    print(adc.read(0)*(1/1024)) покажет вам 0.5вольт
     
    ИгорьК нравится это.
  19. obuhanoe

    obuhanoe Гик

    Доброго всем дня.
    Подскажите, есть датчики температуры с точностью до 0,1 (одно десятой) чтобы можно было использовать в Nodemcu Lua?
    Спасибо
     
  20. ИгорьК

    ИгорьК Гуру

    В NodeMCU можно использовать, пожалуй, любые датчики. Проблема с тем что вам нужно - о каком датчике речь.

    Датчик искать лучше в других темах.
     
    obuhanoe нравится это.