Часы с функцией включения ночного света.

Тема в разделе "Глядите, что я сделал", создана пользователем Securbond, 27 янв 2016.

  1. Securbond

    Securbond Гуру

    Вот еще нашел на СИ. но для меня это темный лес, а грамотному человеку возможно пригодится
     

    Вложения:

  2. Alex19

    Alex19 Гуру

    Есть хорошие и плохие новости.

    Начнем с плохих
    1. Библиотеки написаны не плохо и что-то выжать из них придется сильно потрудится, начиная от разбираться в протоколах TCP/IP и MQTT, как и сделать все на С стараясь уходить где возможно от глобальных переменных предпочитая локальные.

    Хорошие новости
    1. Вы можете сократить кол-во подключений с 3 до 1 на отправку, 2 на прослушку. Тем самым выиграть около 350 байт. (о чем сказано в документации, но кто из русских ее читает, только если ни чего не получается).

    Не знаю, сколько у Вас соединений, у Вас 2 подписки.
    Код (C++):
    mqtt.subscribe("/pogoda/sensors/rssi");
    mqtt.subscribe("/pogoda/sensors/bmpp");
    Не знаю о протоколе MQTT, получается 2 на прослушку, 1 на отправку, так?

    В библиотеке NanodeUIP-master, файл uip-conf.h
    Код (C++):
    /**
    * Maximum number of TCP connections.
    *
    * \hideinitializer
    */

    #define UIP_CONF_MAX_CONNECTIONS 3

    /**
    * Maximum number of listening TCP ports.
    *
    * \hideinitializer
    */

    #define UIP_CONF_MAX_LISTENPORTS 3
    Если мои размышления верны, по поводу подключений, меняем UIP_CONF_MAX_CONNECTIONS на 1, а UIP_CONF_MAX_LISTENPORTS на 2.

    2. Уменьшаем буфер приема.
    В библиотеке NanodeUIP-master, файл uip-conf.h
    Код (C++):
    /**
    * uIP buffer size.
    *
    * \hideinitializer
    */

    #define UIP_CONF_BUFFER_SIZE     420
    Меняем на 210, еще спасет 210 байт.

    Но тут есть нюанс, Ваш пакет, плюс еще 40 байт (если не запутался в коде), буфер должен быть, хотя бы на 2 пакета.
    3. Так же можно перейти на Ардуину на Atmega32u4(Iskra Neo, Arduino Leonardo, Arduino Micro, ) там больше оперативной памяти, на 512 байт.

    Другие варианты не предлагаю, с учетом:
    Надеюсь информация будет полезна.
     
    Securbond нравится это.
  3. Securbond

    Securbond Гуру

    Огромное спасибо за столь подробный разбор полетов. Буду пробовать, тем более Микра есть в наличии ))
    Облом... не мико а нано, в ней как и в мини(((
     
    Последнее редактирование: 20 фев 2016
  4. Alex19

    Alex19 Гуру

    Не за что, тут все помогаю по мере сил и времени.

    Micro редкий зверек, тогда попробуйте ограничить соединения пункт 1 и размер буфера 2. Должно хватить, с 2-рым пунктом могут быть проблемы, если пакетов будет много и они большие, а остальные библиотеки буду тормозить работу системы. Но тут, как говорится нужно попробовать.
     
  5. Securbond

    Securbond Гуру

    Урезал до 80% все равно экрану не хватает.
     
  6. Alex19

    Alex19 Гуру

    Что-то сделать больше надо смотреть очень досконально и вникать. Библиотека не маленькая, увы у меня нет столько времени, чтобы определить, что еще ужать в ней. Плюс надо знать протокол.

    Возможно дело не в памяти, а в ошибках и/или не совместимости библиотек использование одних и тех же ресурсов.

    Проверьте на наличие ошибок, оставьте MQTT и экран (просто отобразите на нем Hello), остальное уберите, посмотрите сколько будет памяти, как будет работать. Работает уже можно от чего-то отталкиваться (нет проверяем соединения, на макетках может отойти), постепенно добавляйте библиотеки.

    Если дело в памяти, проблема решается, уход/замена библиотек или просто переходом на другую плату, если ошибка, ее можно искать очень долго.

    UPD. Может есть Arduino Mega 2560 там 8KB, можно протестировать на ней.
     
    Последнее редактирование: 20 фев 2016
    Securbond нравится это.