Wifi slot и аналоговые датчики

Тема в разделе "ESP8266, ESP32", создана пользователем Тихон, 4 окт 2018.

  1. Тихон

    Тихон Нуб

    Пытаясь повторить первый эксперимент из йодо IoT на wifi slot, столкнулся с проблемой работы датчика в итоге выводил не значение, а Nan. Возможно что-то с библиотекой термометра. Скрин ниже.
    Снимок экрана 2018-10-04 в 20.15.28.png

    После попробовал подключить потенциометр через его библиотеку и выводить данные в консоль. Получил ошибку ERROR: only output and input are valid for D16 и одно и то же значение на любое положение ручки потенциометра. Скрин ниже.
    Снимок экрана 2018-10-04 в 20.28.37.png

    Наверное под wifi slot все библиотеки надо заново писать.
    Помогите, пожалуйста!
     
  2. Daniil

    Daniil Гуру

    Любопытный вывод
     
  3. insolor

    insolor Нерд

    Я прошил в WiFi Slot Micropython, пока с аналоговыми датчиками получилось работать только подключая их к пину A0 (хинт: перемычка rx с обратной стороны платы должна быть перерезана, иначе датчик на A0 будет мешать вводу-выводу через последовательный порт). Судя по скудному описанию здесь http://wiki.amperka.ru/wifi-slot#аналоговый_мультиплексор и схеме,

    [​IMG]
    А именно, этот кусок:

    [​IMG]

    выбирать текущий аналоговый пин можно посылая последовательность 1 и 0 на D15 (пин подключен на вход счетчика, переключающегося по нисходящему фронту). Но выбрать другой пин в качестве аналогового пока не получилось (даже когда я просек, что D15 нужно переключить в OUT режим). Возможно я слишком быстро или слишком медленно переключал 1 и 0.

    Как применительно к espruino это все будет работать - нужно пробовать.
     
    Последнее редактирование: 27 ноя 2018
  4. insolor

    insolor Нерд

    С espruino пока результаты такие же у Тихона, так что перезаливаю обратно прошивку micropython.
     
  5. acos

    acos Официальный гик Администратор

    Привет парни. Изините. Мой косяк.
    Дело в том что на wifiSlot стоит мультиплексор АЦП. Под ардуино я борду написал, а вот для эспруино ещё ничего не сделано. Если поможете с этим, буду признателен. Вот код для arduino:
    Код (C++):
    extern "C" int analogRead(uint8_t pin) {

      static uint8_t currentAin = 0;

      delay(0);
      if (pin >= ANALOG_INPUT_HARDWARE) {
        return 0;
      }
      uint8_t ain = analog_pin_to_mux_channel[pin];
      if (ain == (uint8_t)NOT_A_PIN) {
        return 0;
      }
      if (currentAin > ain) {
        for (int i = 0; i < (8 - currentAin); ++i)
        {
          digitalWrite(ANALOG_INPUT_SELECTOR_PIN, HIGH);
          digitalWrite(ANALOG_INPUT_SELECTOR_PIN, LOW);
          digitalWrite(ANALOG_INPUT_SELECTOR_PIN, HIGH);
          digitalWrite(ANALOG_INPUT_SELECTOR_PIN, LOW);
        }
        currentAin = 0;
      }
      for (int i = currentAin; i < ain; ++i)
      {
        digitalWrite(ANALOG_INPUT_SELECTOR_PIN, HIGH);
        digitalWrite(ANALOG_INPUT_SELECTOR_PIN, LOW);
        digitalWrite(ANALOG_INPUT_SELECTOR_PIN, HIGH);
        digitalWrite(ANALOG_INPUT_SELECTOR_PIN, LOW);
      }
      currentAin = ain;
      return __analogRead(ANALOG_INPUT_HARDWARE);
    }

    void initVariant() {
      // we need to reset analog mux. When ANALOG_INPUT_SELECTOR_PIN is high
      // on ~0.4 ms, mux channel is becoming 0.
      // Mux channel is swithing on back \_ front. But there is no switching
      // - rc reset is still high when ANALOG_INPUT_SELECTOR_PIN became low
      uint16_t resetDelay = 777;
      pinMode(ANALOG_INPUT_SELECTOR_PIN, OUTPUT);
      digitalWrite(ANALOG_INPUT_SELECTOR_PIN, HIGH);
      delayMicroseconds(resetDelay);
      digitalWrite(ANALOG_INPUT_SELECTOR_PIN, LOW);
      delayMicroseconds(resetDelay);
    }
    При старте мы прижимаем ANALOG_INPUT_SELECTOR_PIN на 777 микросекунд, потому что тогда счётчик каналов АЦП сбросится, и первым каналом станет A0.

    [​IMG]

    Больше кода тут:

    https://github.com/esp8266/Arduino/tree/master/variants/wifi_slot

    Хотите помочь?
     
  6. Тихон

    Тихон Нуб

    Спасибо! Не посмотрите ещё у меня nfc сканер не работает с WiFi slot - спасибо!
    http://forum.amperka.ru/threads/Ошибка-wifi-slot-с-nfc-rfid-сканером.16501/