Часы на esp8266 и max7219 + android управление

Тема в разделе "Глядите, что я сделал", создана пользователем IvanUA, 28 авг 2017.

?

Вы повторили это проект?

  1. Нет (просто ознакомился)

    35 голосов
    13,3%
  2. Да, один раз (попробовал)

    111 голосов
    42,0%
  3. Да, не однократно

    122 голосов
    46,2%
Можно выбрать сразу несколько вариантов.
  1. ПетрЧ

    ПетрЧ Нерд

  2. maximys

    maximys Нуб

    к какому пину я имел ввиду в скетче пин 10 где он на моей плате?
     
  3. Kesik

    Kesik Нерд

    D3
     
    Deniskyn нравится это.
  4. Fedoss

    Fedoss Нерд

    Прогноз для города есть, скеч парсит прогноз с сервера прогноза на 16 дней, а он платный, в бесплатном аккаунте openweather почасовой прогноз на 5 дней. У всех работает прогноз?
     
  5. AlexFBG

    AlexFBG Нерд

    Прогноз работает, так как скетч берет погоду на текущее время и на следующий день. Скетч переделывали?
     
  6. IvanUA

    IvanUA Гуру

    На сколько я понял из беглого прочтения сайта - это практически обычный MQTT брокер.
    Если Вам не хватает количества символов в адресе топика или еще чего, то можно спокойно это поправить в скетче. Просто определитесь что вам нужно и сколько.
    В принципе - это фактически такого же типа запрос как на погоду или курс валют. У меня к сожалению пока нет свободного времени с ним разбираться детально. Может кому интересно будет попробовать, а позже добавим его в общий скетч.
    В скетче прописан порт.
    OneWire ds(D3); // DS18B20 подключен (резистор на 4.7к обязателен)
    Соответственно к нему и подключаете.
    Соответственно корпус на корпус, питание на +3,3В
    Ну и не забывайте что между питанием и портом должен быть подтягивающий резистор.
     
  7. Fedoss

    Fedoss Нерд

    этот скетч еще не переделывал, но GET /data/2.5/forecast/daily?id= делает запрос на сервер прогноза на 16 дней, а он платный, мой API ключ позволяет бесплатно получать погоду на сегодняшний день и на 5 дней почасовой, запрос туда GET /data/2.5/forecast?id=
     
  8. clawham

    clawham Нерд

    Привет!
    Переделываю часики на свой лад!
    Вопервых внешнюю температуру написал брать с народмона, во вторых подключил к ним датчик влажности dht11 и с него комнатную влажность и температуру показываю на экран и отправляю на народмон. ещё сделал индикацию работы OTA с процентами - чтоб было понятно какие именно часы прошиваются :)
    Хочу подправить шрифты и сделать две матрицы в высоту - чем генерировались эти шрифты? нашел пару прог которые конвертят/редактируют шрифты но выгрузка у них совсем в других форматах.
    Код (C++):
    void GetNarodMonTemp()
    {
      // Use WiFiClient class to create TCP connections
      Serial.println("\n\r ***************** \n\r");
      Serial.println("Probing from narodmon...");
      WiFiClient client;
      String line;
      const int httpPort = 80;
      if (!client.connect("narodmon.ru", 80)) {
        Serial.println("connection failed");
        return;
      }
     
        client.println("GET /api/sensorsOnDevice?id=xxxx&uuid=yyyy&api_key=zzzz&lang=en HTTP/1.1");
        client.println("Host: narodmon.ru");
        client.println("User-Agent: arduino-ethernet");
        client.println("Connection: close");
        client.println();
      delay(1000);
      // Read all the lines of the reply from server and print them to Serial
      while(client.available()){
        line = client.readStringUntil('\r');
      }
      Serial.print(line);
      Serial.println();
      Serial.println("closing connection");
     
     
      StaticJsonBuffer<2000> jsonBuffer;
      JsonObject& root = jsonBuffer.parseObject(line);
      if (!root.success()) {
        Serial.println("parseObject() failed");
        return;
      }

    Serial.println();
          /// отправка в Serial
      String owner = root["owner"];
      Serial.print("owner: ");
      Serial.println(owner);
      String name = root["name"];
      Serial.print("name: ");
      Serial.println(name);
      Serial.println();

      int val = 0;
      while(1){
        int sensorsID = root["sensors"][val]["id"];
        if (sensorsID == 0) break;
        Serial.print("sensorsID: ");
        Serial.println(sensorsID);
     
        String name = root["sensors"][val]["name"];
        Serial.print("name: ");
        Serial.println(name);
     
        float value = root["sensors"][val]["value"];
        Serial.print("value: ");
        Serial.print(value);
     
        String unit = root["sensors"][val]["unit"];
        Serial.println(unit);
     
        Serial.println();

        if(root["sensors"][val]["id"]==nnnn)
        {
          String temp = root["sensors"][val]["value"];
            byte  payload[temp.length()];
            temp.getBytes(payload, temp.length());
              Serial.print("Found our temperature: ");
              Serial.println(temp);
             
              t3 = 0;
              t4 = 0;
              if((payload[0] >= 48 && payload[0] < 58) || payload[0] == 45) {
                if(payload[0] == 45) {
                  t5 = -1;
                  if(payload[1] >= 48 && payload[1] < 58) {
                    t3 = payload[1] - 48;
                    if(payload[2] >= 48 && payload[2] < 58) {
                      t3 = t3 * 10 + (payload[2] - 48);
                    }
                  }
                  if(payload[3] == 46) {
                    if(payload[4] >= 48 && payload[4] < 58) t4 = payload[4] - 48;
                  }
                  if(payload[2] == 46) {
                    if(payload[3] >= 48 && payload[3] < 58) t4 = payload[3] - 48;
                  }
                } else {
                  t5 = 1;
                  t3 = payload[0] - 48;
                  if(payload[1] >= 48 && payload[1] < 58) {
                    t3 = t3 * 10 + (payload[1] - 48);
                    if(payload[2] == 46) {
                      if(payload[3] >= 48 && payload[3] < 58) t4 = payload[3] - 48;
                    }
                  }
                  if(payload[1] == 46) {
                    if(payload[2] >= 48 && payload[2] < 58) t4 = payload[2] - 48;
                  }
                }
              }
        }
        val++;
      }
    }
    XXXX - id владельца
    NNNN - id датчика у владельца
    yyyy - любой дллинный уникальный ключ - я взял weatherapikey
    zzzz - на сайте народнома в своем кабинете надо создать ключ апи именно народмона.

    работает прекрасно.
     
    Последнее редактирование: 31 янв 2018
    Kesik, big_alex и IvanUA нравится это.
  9. ПетрЧ

    ПетрЧ Нерд

    отлично)
    может автор внедрит в свой проект
     
  10. IvanUA

    IvanUA Гуру

    Лично я бы использовал другой датчик для этих целей.
    Шрифты в основном брались уже кем то подготовленные, я лишь немного их правил под себя + добавлял недостающие символы. Все делал ручками - без прог.
    Можем поступить следующим образом. Если clawham не возражает можем ссылку на его скетч прилепить в первом сообщении данной темы. Просто мне не особо интересен сервис народмон.
     
  11. clawham

    clawham Нерд

    ни разу не против! и могу выложить квадратичный аккуратный шрифт для сдалека не расплывалось у людей с сильной близорукостью

    по шрифтам ясно ну я уже нашел какую-то карявую прогу и в полуручном режиме оно работает
    по поводу DHT11 - поверил его при влажности 10 30 60 90% по эталонным лабораторным камерам калибровки - отклонение в 1-2%!! !!!! да он дооолгогоооо перестраивается...где-то в пол часа примерно показания устаканиваются...погрешность температуры от 10 до 80 градусов - 5 градусов +- так что зря вы его так не любите - я 5 датчиков проверил и только у одного было смещение в -8% на низких влажностях
     
    Андрей16 и IvanUA нравится это.
  12. IvanUA

    IvanUA Гуру

    Давайте посмотрим на Ваш шрифт)))
     
  13. OPER

    OPER Нуб

    А как из Ардуино ИДЕ вывести BIN файл?
     
  14. Deniskyn

    Deniskyn Гик

    При компиляции скетча, в темпах Иды будет бинарник...
     
  15. OPER

    OPER Нуб

    а где находятся эти файлы?
     
  16. IvanUA

    IvanUA Гуру

    Скетч => Экспорт бинарного файла или Ctrl+Alt+S
    Бинарник будет в папке со скетчем.
     
  17. raum

    raum Нерд

    По какой причине в начале настройки не появляется точка доступа "WiFi-Clock" на сом порте висит это:
    .........Setting AP mode default parameters
    Wifi ip:192.168.4.1

    Connected: 0.0.0.0
    и все, часы идут а скорректироваться нельзя
     
  18. Securbond

    Securbond Гуру

    Редко, но такое бывало. Помогает ребут ESP.
     
  19. Deniskyn

    Deniskyn Гик

    Да, подтверждаю. Ловился такой глюк и ребут помогал.
     
  20. raum

    raum Нерд

    Не помогает :(