Глупый метеокороб на E-Ink



    Уже как полтора года назад я купил пару E-Ink экранов с eBay на базе драйвера SSD1606, как раз для метеостанции. И вот 4 месяца назад, перед новыми годом, появился он.

    Скажу сразу, что часов в ней нет, поскольку дома часы есть буквально везде! Но умеет он показывать следующее:

    • текущую температуру по Цельсию;
    • текущую влажность в процентах;
    • текущее давление в мм.рт.ст;
    • историю давления за последние 15 часов в виде графика;
    • напряжение батареи.

    Собственно и все. Необходимый минимум и предельная простота!

    Даже нет вот такого GUI


    Принцип работы


    Контроллер должен по нажатию кнопки выводить на экран актуальную информацию. Большую часть времени контроллер спит, как и дисплей, находящийся в глубоком сне.

    Контроллер периодически просыпается по watchDog и раз в 5 минут делает замеры давления, для построения графика изменения давления.

    С графиком вышло очень интересно, так как давление может меняться очень быстро и сильно (погода в северном городе вообще непредсказуема), то в какой-то момент может возникнуть зашкаливание графа. Для этого раз в пару часов происходит перекалибровка средней точки измерений (давление может идти как вверх, так и вниз). Однако благодаря этому, наглядная разница предыдущих значений упрощает чтение графа (пример на КПДВ).

    Железо


    Основным мозгом является микроконтроллер ATMega328P, в качестве всеметра барометра используется BME280, а для экрана уже описанный ранее E-Ink второй ревизии на базе SSD1606 от Smart-Prototyping.

    Это почти тот же экран, что и waveShare epaper 2,7“, только старее (даташиты у них ну очень похожи).

    Все это работает на аккумуляторе от игрушечного вертолета на 120 мАч. Заряжается аккумулятор при помощи модуля с защитой от глубокого разряда и перезаряда на базе TP4056 с установленным резистором на 47 кОм для зарядки током около 20мА.

    Оптимизация энергопотребления


    Крепкий и здоровый сон наше все! Поэтому нужно спать по максимуму!

    Поскольку софта для работы с экраном не было, только базовый пример кода с комментариями на языке поднебесной и даташит (экран полтора года назад только появился), то большую часть всего пришлось делать самому, благо уже был опыт работы с разными экранами.

    В даташите был найден режим DeepSleep, в нем экран потребляет всего ничего — 1.6мкА!

    Барометр имеет режим замера по требованию (ака standby), в нем датчик потребляет минимум энергии, при этом предоставляя достаточную точность для простой индикации изменений (в даташите указано, что он как раз для метеостанций). Включение этого режима дало потребление на уровне 6,2 мкА. Далее на модуле был перепаян LDO регулятор с LM6206N3 (а может и XC6206, они оба маскируются как 662k) на MCP1700.



    Это дало выигрыш еше на 2 мкА.

    Поскольку нужно добиться минимального энергопотребления, то была использована библиотека LowPower. В ней есть удобная работа с watchDog, на основе чего и сделан сон атмеги. Однако, сам по себе он потребляет около 4мкА. Решение этой проблемы мне видится использованием внешнего таймера на основе Texas Instruments TPL5010 или аналогичным.

    Таже для уменьшения энергопотребления нужно было прошить атмегу другими FUSE битами и загрузчиком, что и было успешно сделано с USBasp, а в файл boards.txt был добавлен

    Следующий текст:
    ## Arduino Pro or Pro Mini (1.8V, 1 MHz Int.) w/ ATmega328p
    ## internal osc div8, also now watchdog, no LED on boot
    ## bootloader size: 402 bytes
    ## http://homes-smart.ru/index.php/oborudovanie/arduino/avr-zagruzchik
    ## http://homes-smart.ru/fusecalc/?prog=avrstudio&part=ATmega328P
    ## http://www.engbedded.com/fusecalc
    ## -------------------------------------------------
    pro.menu.cpu.1MHzIntatmega328=ATmega328 (1.8V, 1 MHz Int., BOD off)

    pro.menu.cpu.1MHzIntatmega328.upload.maximum_size=32256
    pro.menu.cpu.1MHzIntatmega328.upload.maximum_data_size=2048
    pro.menu.cpu.1MHzIntatmega328.upload.speed=9600

    pro.menu.cpu.1MHzIntatmega328.bootloader.low_fuses=0x62
    pro.menu.cpu.1MHzIntatmega328.bootloader.high_fuses=0xD6
    pro.menu.cpu.1MHzIntatmega328.bootloader.extended_fuses=0x07
    pro.menu.cpu.1MHzIntatmega328.bootloader.file=atmega/a328p_1MHz_62_d6_5.hex

    pro.menu.cpu.1MHzIntatmega328.build.mcu=atmega328p
    pro.menu.cpu.1MHzIntatmega328.build.f_cpu=1000000L


    Также положить в папку «bootloaders/atmega/» загрузчик собранный из optiboot:

    a328p_1MHz_62_d6_5.hex
    :107E0000F894112484B714BE81FFDDD082E0809302
    :107E1000C00088E18093C10086E08093C2008CE0BE
    :107E20008093C4008EE0B9D0CC24DD2488248394D0
    :107E3000B5E0AB2EA1E19A2EF3E0BF2EA2D08134A3
    :107E400061F49FD0082FAFD0023811F0013811F43F
    :107E500084E001C083E08DD089C0823411F484E1D4
    :107E600003C0853419F485E0A6D080C0853579F447
    :107E700088D0E82EFF2485D0082F10E0102F00278F
    :107E80000E291F29000F111F8ED068016FC0863583
    :107E900021F484E090D080E0DECF843609F040C049
    :107EA00070D06FD0082F6DD080E0C81680E7D8065C
    :107EB00018F4F601B7BEE895C0E0D1E062D089932E
    :107EC0000C17E1F7F0E0CF16F0E7DF0618F0F60147
    :107ED000B7BEE89568D007B600FCFDCFA601A0E0CC
    :107EE000B1E02C9130E011968C91119790E0982F91
    :107EF0008827822B932B1296FA010C0187BEE895F6
    :107F000011244E5F5F4FF1E0A038BF0751F7F60133
    :107F1000A7BEE89507B600FCFDCF97BEE89526C042
    :107F20008437B1F42ED02DD0F82E2BD03CD0F601D2
    :107F3000EF2C8F010F5F1F4F84911BD0EA94F80143
    :107F4000C1F70894C11CD11CFA94CF0CD11C0EC0EF
    :107F5000853739F428D08EE10CD085E90AD08FE03E
    :107F60007ACF813511F488E018D01DD080E101D09E
    :107F700065CF982F8091C00085FFFCCF9093C600FD
    :107F800008958091C00087FFFCCF8091C00084FDE0
    :107F900001C0A8958091C6000895E0E6F0E098E160
    :107FA000908380830895EDDF803219F088E0F5DF5B
    :107FB000FFCF84E1DECF1F93182FE3DF1150E9F7E5
    :107FC000F2DF1F91089580E0E8DFEE27FF27099494
    :0400000300007E007B
    :00000001FF


    Собственно как вы, скорее всего, догадались, все это делалось на базе Arduino, а именно pro mini на 8МГц 3.3В. С этой платы был выпаян LDO-регулятор mic5203 (слишком прожорлив при малых токах) и отпаян резистор светодиода для индикации питания.

    В итоге удалось добиться энергопотребления в 10 мкАч в спящем режиме, что дает около 462,96 дней работы. От этого числа смело можно вычесть треть, получив тем самым около 10 месяцев, что пока соответствует реальности.

    Версию на ионисторах тестировал, при конечной емкости 3мАч работает не более 6 дней (высокий саморазряд). Расчет емкости ионистора делался по формуле C*V/3,6 = X мАч. Думаю, что версия с солнечной батареей и MSP430 будет вообще вечной.

    Объявления:
    #include <SPI.h>
    #include <Wire.h>
    #include <ssd1606.h>
    #include <Adafruit_BME280.h>
    //#include <BME280_2.h> // local optimisation
    #include <LowPower.h>

    #include <avr/sleep.h>
    #include <avr/power.h>

    #define TIME_X_POS 0
    #define TIME_Y_POS 12

    #define DATE_X_POS 2
    #define DATE_Y_POS 9

    #define WEECK_X_POS 65
    #define WEECK_Y_POS 9

    // ====================================== //
    #define TEMP_X_POS 105
    #define TEMP_Y_POS 15

    #define PRESURE_X_POS 105
    #define PRESURE_Y_POS 12

    #define HUMIDITY_X_POS 105
    #define HUMIDITY_Y_POS 9
    // ====================================== //

    #define BATT_X_POS 65
    #define BATT_Y_POS 15

    #define ONE_PASCAL 133.322

    // ==== for presure history in graph ==== //
    #define MAX_MESURES 171
    #define BAR_GRAPH_X_POS 0
    #define BAR_GRAPH_Y_POS 0
    #define PRESURE_PRECISION_RANGE 4.0 // -/+ 4 mm
    #define PRESURE_GRAPH_MIN 30 // vertical line graph for every N minutes
    #define PRESURE_PRECISION_VAL 10 // max val 100
    #define PRESURE_CONST_VALUE 700.0 // const val what unneed in graph calculations
    #define PRESURE_ERROR -1000 // calibrated value
    // ====================================== //

    #define VCC_CALIBRATED_VAL 0.027085714285714 // == 3.792 V / 140 (real / mesured)
    //#define VCC_CALIBRATED_VAL 0.024975369458128 // == 5.070 V / 203 (real / mesured)
    #define VCC_MIN_VALUE 2.95 // min value to refresh screen
    #define CALIBRATE_VCC 1 // need for battery mesure calibration

    // 37 ~296 sec or 5 min * MAX_MESURES = 14,33(3) hours for full screen
    #define SLEEP_SIZE 37

    #ifdef BME280_ADDRESS
    #undef BME280_ADDRESS
    #define BME280_ADDRESS 0x76
    #endif

    #define ISR_PIN 3 // other mega328-based 2, 3
    #define POWER_OFF_PIN 4 // also DONEPIN

    #define E_CS 6 // CS ~ D6
    #define E_DC 5 // D/C ~ D5
    #define E_BSY 7 // BUSY ~ D7
    #define E_RST 2 // RST ~ D2
    #define E_BS 8 // BS ~ D8

    /*
    MOSI ~ D11
    MISO ~ D12
    CLK ~ D13
    */
    EPD_SSD1606 Eink(E_CS, E_DC, E_BSY, E_RST);
    Adafruit_BME280 bme;

    volatile bool adcDone;
    bool updateSreen = true;
    bool normalWakeup = false;

    float battVal =0;
    uint8_t battValcV =0;

    uint8_t timeToSleep = 0;

    float presure =0;
    float temperature =0;
    float humidity =0;
    float presure_mmHg =0;

    unsigned long presureMin =0;
    unsigned long presureMax =0;

    uint8_t currentMesure = MAX_MESURES;
    uint8_t presureValHistoryArr[MAX_MESURES] = {0};

    typedef struct {
    uint8_t *pData;
    uint8_t pos;
    uint8_t size;
    unsigned long valMax;
    unsigned long valMin;
    } history_t;


    Инициализация:
    void setup()
    {
    saveExtraPower();
    Eink.begin();

    initBME();

    // https://www.arduino.cc/en/Reference/attachInterrupt
    pinMode(ISR_PIN, INPUT_PULLUP);
    attachInterrupt(digitalPinToInterrupt(ISR_PIN), ISRwakeupPin, RISING);

    //drawDefaultGUI();
    drawDefaultScreen();

    // tiiiiny fix....
    checkBME280();
    updatePresureHistory();
    }

    void saveExtraPower(void)
    {
    power_timer1_disable();
    power_timer2_disable();

    // Disable digital input buffers:
    DIDR0 = 0x3F; // on ADC0-ADC5 pins
    DIDR1 = (1 << AIN1D) | (1 << AIN0D); // on AIN1/0
    }

    void initBME(void)
    {
    bme.begin(BME280_ADDRESS); // I2C addr

    LowPower.powerDown(SLEEP_250MS, ADC_OFF, BOD_OFF); // wait for chip to wake up.
    while(bme.isReadingCalibration()) { // if chip is still reading calibration, delay
    LowPower.powerDown(SLEEP_120MS, ADC_OFF, BOD_OFF);
    }
    bme.readCoefficients();

    bme.setSampling(Adafruit_BME280::MODE_FORCED,
    Adafruit_BME280::SAMPLING_X1, // temperature
    Adafruit_BME280::SAMPLING_X1, // pressure
    Adafruit_BME280::SAMPLING_X1, // humidity
    Adafruit_BME280::FILTER_OFF);
    }


    Основной код:
    void loop()
    {
    for(;;) { // i hate func jumps when it's unneed!
    checkVCC();
    if(normalWakeup) {
    checkBME280();
    updatePresureHistory();
    } else {
    normalWakeup = true;
    }

    updateEinkData();
    enterSleep();
    }
    }

    // func to exec in pin ISR
    void ISRwakeupPin(void)
    {
    // Keep this as short as possible. Possibly avoid using function calls
    normalWakeup = false;
    updateSreen = true;
    timeToSleep = 1;
    }

    ISR(ADC_vect)
    {
    adcDone = true;
    }

    void debounceFix(void)
    {
    normalWakeup = true;
    updateSreen = false;
    }

    //https://github.com/jcw/jeelib/blob/master/examples/Ports/bandgap/bandgap.ino
    uint8_t vccRead(void)
    {
    uint8_t count = 4;
    set_sleep_mode(SLEEP_MODE_ADC);
    ADMUX = bit(REFS0) | 14; // use VCC and internal bandgap
    bitSet(ADCSRA, ADIE);
    do {
    adcDone = false;
    while(!adcDone) sleep_mode();
    } while (--count);
    bitClear(ADCSRA, ADIE);
    // convert ADC readings to fit in one byte, i.e. 20 mV steps:
    // 1.0V = 0, 1.8V = 40, 3.3V = 115, 5.0V = 200, 6.0V = 250
    return (55U * 1023U) / (ADC + 1) - 50;
    }

    unsigned long getHiPrecision(double number)
    {
    // what if presure will be more 800 or less 700? ...
    number -= PRESURE_CONST_VALUE; // remove constant value
    number *= PRESURE_PRECISION_VAL; // increase precision by PRESURE_PRECISION_VAL
    return (unsigned long)number; // Extract the integer part of the number
    }

    void checkVCC(void)
    {
    // reconstruct human readable value
    battValcV = vccRead();
    battVal = battValcV * VCC_CALIBRATED_VAL;

    if(battVal <= VCC_MIN_VALUE) { // not enought power to drive E-Ink or work propetly
    detachInterrupt(digitalPinToInterrupt(ISR_PIN));
    // to prevent full discharge: just sleep
    bme.setSampling(Adafruit_BME280::MODE_SLEEP);
    LowPower.powerDown(SLEEP_2S, ADC_OFF, BOD_OFF);
    Eink.sleep(true);
    LowPower.powerDown(SLEEP_FOREVER, ADC_OFF, BOD_OFF);
    }
    }

    void checkBME280(void)
    {
    bme.takeForcedMeasurement(); // wakeup, make new mesure and sleep
    temperature = bme.readTemperature();
    humidity = bme.readHumidity();
    presure = bme.readPressure();
    }

    void updatePresureHistory(void)
    {
    // convert Pa to mmHg; 1 mmHg == 133.322 Pa
    presure_mmHg = (presure + PRESURE_ERROR)/ONE_PASCAL;

    // === calc presure history in graph === //
    if((++currentMesure) >= (MAX_MESURES/3)) { // each 4,75 hours
    currentMesure =0;
    presureMin = getHiPrecision(presure_mmHg - PRESURE_PRECISION_RANGE);
    presureMax = getHiPrecision(presure_mmHg + PRESURE_PRECISION_RANGE);
    }

    // 36 == 4 pixels in sector * 9 sectors
    presureValHistoryArr[MAX_MESURES-1] = map(getHiPrecision(presure_mmHg), presureMin, presureMax, 0, 35);

    for(uint8_t i=0; i < MAX_MESURES; i++) {
    presureValHistoryArr[i] = presureValHistoryArr[i+1];
    }
    }

    void updateEinkData(void)
    {
    if(updateSreen) {
    updateSreen = false;
    Eink.sleep(false);

    // bar history
    Eink.fillRect(BAR_GRAPH_X_POS, BAR_GRAPH_Y_POS, MAX_MESURES, 9, COLOR_WHITE);

    for(uint8_t i=1; i <= (MAX_MESURES/PRESURE_GRAPH_MIN); i++) {
    Eink.drawVLine(BAR_GRAPH_X_POS+i*PRESURE_GRAPH_MIN, BAR_GRAPH_Y_POS, 35, COLOR_DARKGREY);
    }

    for(uint8_t i=0; i <= MAX_MESURES; i++) {
    Eink.drawPixel(i, BAR_GRAPH_Y_POS+presureValHistoryArr[i], COLOR_BLACK);
    }

    #if CALIBRATE_VCC
    Eink.setCursor(BATT_X_POS, BATT_Y_POS);
    Eink.print(battVal);

    Eink.setCursor(BATT_X_POS, BATT_Y_POS-3);
    Eink.print(battValcV);
    #endif

    Eink.setCursor(TEMP_X_POS, TEMP_Y_POS);
    Eink.print(temperature);

    Eink.setCursor(PRESURE_X_POS, PRESURE_Y_POS);
    Eink.print(presure_mmHg);

    Eink.setCursor(HUMIDITY_X_POS, HUMIDITY_Y_POS);
    Eink.print(humidity);

    updateEinkSreen();
    Eink.sleep(true);
    }
    }

    void updateEinkSreen(void)
    {
    Eink.display(); // update Eink RAM to screen
    LowPower.idle(SLEEP_15MS, ADC_OFF, TIMER2_OFF, TIMER1_OFF, TIMER0_OFF, SPI_OFF, USART0_OFF, TWI_OFF);

    Eink.closeChargePump();
    // as Eink display acts not like in DS, then just sleep for 2 seconds
    LowPower.powerDown(SLEEP_2S, ADC_OFF, BOD_OFF);
    }

    void effectiveIdle(void)
    {
    LowPower.idle(SLEEP_30MS, ADC_OFF, TIMER2_OFF, TIMER1_OFF, TIMER0_OFF, SPI_OFF, USART0_OFF, TWI_OFF);
    }

    void drawDefaultScreen(void)
    {
    Eink.fillScreen(COLOR_WHITE);

    Eink.printAt(TEMP_X_POS, TEMP_Y_POS, F("00.00 C"));
    Eink.printAt(PRESURE_X_POS, PRESURE_Y_POS, F("000.00 mm"));
    Eink.printAt(HUMIDITY_X_POS, HUMIDITY_Y_POS, F("00.00 %"));

    #if CALIBRATE_VCC
    Eink.printAt(BATT_X_POS, BATT_Y_POS, F("0.00V"));
    // just show speed in some kart racing game in mushr... kingdom \(^_^ )/
    Eink.printAt(BATT_X_POS, BATT_Y_POS-3, F("000cc"));
    #endif
    }

    void drawDefaultGUI(void)
    {
    Eink.drawHLine(0, 60, 171, COLOR_BLACK); // split 2 areas

    // draw window
    Eink.drawRect(0, 0, 171, 71, COLOR_BLACK);

    // frame for text
    Eink.drawRect(BATT_X_POS, BATT_Y_POS, 102, 32, COLOR_BLACK);
    }

    void snooze(void)
    {
    do {
    LowPower.powerDown(SLEEP_8S, ADC_OFF, BOD_OFF);
    } while(--timeToSleep);
    }

    void disablePower(void)
    {
    digitalWrite(POWER_OFF_PIN, HIGH);
    delay(1);
    digitalWrite(POWER_OFF_PIN, LOW);
    LowPower.powerDown(SLEEP_FOREVER, ADC_OFF, BOD_OFF);
    }

    void enterSleep(void)
    {
    // wakeup after ISR signal;
    timeToSleep = SLEEP_SIZE;
    debounceFix();
    snooze();
    }


    Корпус


    Поскольку 3D принтера не имею, но имею 3D ручку MyRiwell RP800A. Оказалось, что делать планарные и ровные структуры ей не так-то просто. Рисовалось все PLA пластиком, который был на тот момент, поэтому корпус вышел разноцветным, что в прочем придает некий шарм (потом переделаю под дерево, когда приедет пластик с древесной крошкой).

    Первые части рисовались напрямую на бумаге, после чего отрывались. Это оставляло следы на пластике. Более того детали были кривыми и их было нужно как-то выпрямлять!



    Решение оказалось до банального простым — рисовать на стекле, а под него положить «чертежи» нужных элементов корпуса.

    И вот что вышло:



    Кнопка обновления экрана просто обязана была быть красной на белом фоне!



    Задняя стенка сделана с простейшим узором, создавая тем самым вентиляционные отверстия.



    Кнопка была закреплена на горизонтальной распорке внутри (желтым цветом) так же сделанной ручкой.



    Сама кнопка взята от старого компьютерного корпуса (у нее приятный звук).



    Внутри все закреплено термоклеем и пластиком, так, что разобрать это все непросто.



    Конечно же, оставлены разъем для зарядки и обновления прошивки. Корпус, к сожалению, пришлось сделать монолитным для большей прочности.

    Заключение


    Прошло 4 месяца, а после не полной зарядки (до 4В) напряжение на батарее село всего до 3.58В, что гарантирует еще долгий срок службы до следующей зарядки.

    Домашние к этой штуковине сильно привыкли и в случае головных болей или если нужно узнать точный прогноз погоды на ближайшие час-два, то сразу идут к ней и смотрят что было с давлением. На КПДВ например, видно сильное падение давления, как итог пошел сильный снег с ветром.

    Ссылки на репозитории:

    библиотека для экрана
    библиотека для lowPower
    библиотека для BME280

    Обновлено:

    В связи с повышенным интересом к корпусу выложил еще изображения. Экран Smart-Prototyping второй ревизии. Аналог ему на Али здесь.

    Нажми меня:




    P.S. КПДВ было сделано вечером, как итог сегодня ночью выпало очень, очень много снега в Санкт-Петербурге.
    P.P.S Синюю изоленту известным причинам добавлять в опрос не стал.
    Предлагаю решить, из чего корпус лучше:

    Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.

    Поделиться публикацией
    Похожие публикации
    Никаких подозрительных скриптов, только релевантные баннеры. Не релевантные? Пиши на: adv@tmtm.ru с темой «Полундра»

    Зачем оно вам?
    Реклама
    Комментарии 108
    • +11
      Тьфу, показалось, что прибор так причудливо обледенел после дождя с ветром, а вы его просто таким нарисовали ручкой. Какой-то не очень эстетичный вид, может, из дерева было бы лучше выпилить?
      • +13
        Я первую минуту, пока не прочитал теги и не заглянул внутрь поста, был абсолютно убеждён, что это вязаный корпус.
        • +2
          Моя фантазия пошла дальше — термиты. :)
          • +1
            Мне показалось, что корпус обшит белым мехом, как в жигулях накидки на клесла и руль.
            Если будить раз в минуту, то можно и Часы выводить.
            • +1
              да ладно! Это нано-монтажная пена.
              • 0
                На 7й картинке вообще карамель. :)
                • 0
                  Автор, сделай опрос, кому что показалось на КДПВ :)
            • 0
              Скучно с вами. Я увидел прибор, вплавленный в кусок чего что.
            • 0
              Один в один, первое впечатление :)
            • +3
              Ну вы даёте, впервые в истории корпус нарисованный вручную, а им не нравится.
              • 0
                Никто не оспаривает ценность корпуса как культурного объекта)
                Я первую минуту, пока не прочитал теги и не заглянул внутрь поста, был абсолютно убеждён, что это вязаный корпус.

                Ожидаю в скором времени что кто нибудь напишет статью про устройство с вязанным корпусом)
                • 0
                  В начале карьеры ) работал на сборке вязальных машин, и вязать научился, конечно.
                  Открыть, что-ли стартап по вязанию эээ… конструкционных материалов)))
                  • 0
                    Если связать и пропитать эпоксидкой получится неплохой композит кстати. И выглядеть будет стильно)
                    • 0
                      я так ручки ко всяким топорам-молоткам-кувалдам себе делаю — обматываю верёвкой, пропитанной клеем. Получается вечно, шершаво и ухватисто.
                • +2
                  Он выглядит как советская вещь, которую плохо покрасили на заводе, а потом перед каждым праздником красили ещё раз «чтобы было красиво».
                  • 0
                    На мой вкус как-то очень похоже должны выглядеть стены в логове чужих)
                  • +1
                    Почему сразу не нравится? Наоборот, рисунок на столько хорош, что кажется фотографией. Вот только что ж Вы такое рисовали, что получился прибор, вплавленный в кусок чего то? Последствия баллистической посадки зонда на чужую планету? Тогда термопласт и перед сборкой хорошо прогреть.
                • +3
                  Вы не могли бы дать ссылку на дисплей, или полное название?
                  • +1
                    Ответ на ваш запрос оставил в конце статьи.
                  • +1
                    Очень даже ничего. И экономичность, и hand made корпус.
                    • +1
                      Надеюсь это сарказм насчет корпуса.ПРи взгляде на него ощущение что паяльником расплавили какуюто пластмаску и попытались разровнять пальцами.Реально лучше было из фанеры или дощечек склеить и покрасить краской для пола. Вышло бы симпатичнее
                      • +1
                        вы издеваетесь или действительно мы все настолько по разному видим мир? Корпус у ТС вышел замечательный. Это не бездушая акриловая коробка, именно что дизайнерское решение.
                        • +1
                          Никакого сарказма, действительно понравилось.
                      • +1
                        а что такое 132сс во второй строке? Абсолютная влажность? Корпус понравился кстати
                        • +1
                          Это сырое значение напряжения батареи до преобразования во float.
                          В коде указано как и каким образом оно вычисляется.
                        • 0
                          Пожалуй подскажу как сделать корпус дешево и относительно красиво:

                          Рисуем макет в кореле и заказываем панели на лазерную резку рекламщикам из акрила. Для прочности можно сделать перекрывающиеся выступы.
                          Зачищаем и склеиваем цианоакрилатом или эпоксидкой.
                          Стоит — реально копейки рублей 100-200 за небольшой корпус.
                          Если хочется эстетики, панель можно загравировать фрезером или лазером и затереть надписи краской.
                          • +2
                            Где найти рекламщиков из акрила?
                            • +2
                              В Гугле
                              • +3
                                В любом городе есть фирмы которые делают рекламные вывески из пластика.
                                mishutka.net.ru/1/_DSC8012.JPG
                                Вот например пульт управления станком я делал.
                                Это вобще не заморачиваясь. А можно например черный акрил и золотые буковки :)
                                • +1
                                  Не хватает аварийного грибка) или он в чуть другом месте?
                              • 0
                                Или взять те же 100-200 рублей, купить немного пластика и сделать самому. Насчет акрила(но не совсем), акриловые краски отлично ложатся на PLA.
                                • 0
                                  Я режу корпуса старых устройств из подходящего пластика и клею клеем для моделей (раньше применяли для этого дихлорэтан, сейчас что то другое). Выходит очень дешево и для экологии хорошо. Переработка отходов как никак)
                                • +1
                                  В ЧиД корпуса от 50р. В чем смысл что-то резать-клеить, кроме оригинального кривого hm?
                                  • 0
                                    В том что выбор стандартных корпусов очень ограничен.
                                    И они могут не подойти под проектируемое устройство.
                                    Кроме того эстетика. Можно например сделать корпус из прозрачного акрила а потроха сделать красиво и ледами внутри подсветить. Или панель с надписями или… да много чего отличного от серой коробочки.
                                    • 0
                                      Если поднять ценник до 500 то выбор стремительно расширяется. Но главная моя мысль в том, что если корпус не является фичей, как в данном проекте, то, по мне, жаль тратить день жизни на то, что гарантировано выйдет криво и мало функционально
                                      • 0
                                        Какой день, такого качества и точности корпус делается за час максимум.
                                        • 0

                                          Я лучше день потрачу. Или куплю

                                          • 0
                                            По мне так и вовсе лучше купить 3D принтер. Качество возрастет на порядок. Особенно если печатать плоские панели и из них собирать корпус. Тем более цены на них заметно упали. Тот же Anet A6 официально с гарантией в России можно купить за 12к рублей. Сам его буду брать, т.к. надоело рисовать. И 3D ручка то же пригодится, корректировать/дорисовывать/склеивать.
                                • 0
                                  Вот еще идея насчет корпуса. В разных DIY-магазинах продаются деревянные заготовки под шкатулки. Думаю, можно такую приспособить, выпилив в ней отверстия нужных размеров.
                                  • +3

                                    Также можно отпилить низ у обычного полнотелого белого кирпича, выбрать внутренности буром, отверстие под экран дремелем, заложить начинку и склеить на цемент. Можно даже потом лаком не покрывать, это только придаст брутальности изделию.

                                    • +1
                                      Напомнило гиперионский кирпич для предсказания погоды)
                                  • 0
                                    Товарищи, а почем отдают e-ink приличного качества, большие и маленькие? Появился определенный интерес, по поводу использования в поделках.
                                    • 0

                                      Не знаю, как насчёт качества, но вот на Али экран как у автора: https://ru.aliexpress.com/store/product/2-04-inch-24PIN-FPC-E-Paper-E-ink-Screen-SSD1606-Controller-172-72-FH12-24S/1110377_32345889735.html

                                      • 0
                                        Да это и есть он, но у меня модульс разведенной рассыпухой и SPI выводом.
                                        • 0
                                          С такой стоимостью он совсем не интересен. Непонятно почему у всех у них такая дорогая пересылка.
                                          Хотя вот на e-bay есть более вкусные предложения, и даже 3х цветные с бесплатной пересылкой (e-paper), но все равно надо будет как то к ним коннектор колхозить или покупать.
                                          • +1
                                            Проблема в том, что сама по себе технология E-Ink дорогая и защищена патентами.
                                            Мой экран имеет 4 градации серого и как писал выше уже имеет все необходимое для внедрения в поделки.
                                            Вот вам готовый модуль за тысячу.
                                        • 0
                                          Терраэлектроника недавно присылала предложения по чернилам. Цены схожи с али/ибэй, хотя конечно дороже.
                                        • 0
                                          Большой респект за то, что собрал в одном проекте многое по энергосбережению на ардуине и сопутствующих элементах!
                                          • 0
                                            Ух ты сколько клея) Сначала подумал что и корпус из термоклея) Кстати сколько пластика уходит на такой корпус? И сколько по стоимости выходит?
                                            • 0
                                              У меня ушло несколько мотков филамента от тестового комплекта eSUN.
                                              Самое дорогое само собой экран. Полтора года назад он мне вышел 1,7к рублей.
                                              Все остальное примерно одинаковой стоимости около 150Р.
                                              Я скучаю по термоклею. Китай перестал заливать технику им — слишком дорого.
                                              • –2
                                                Термоклей и молярный скотч это основа китайской ширпотребной промышленности)
                                                • +6
                                                  молярный скотч — это что-то из химии?:)
                                                  • +4
                                                    Один моль малярного скотча есть термоклей.
                                                    • +1
                                                      Стоматологии.
                                                • 0
                                                  На самом деле, устройства пистолета термоклея и терморучки отличаются весьма условно. Т.е. наличием/отсутствием моторизованной подачи и толщиной прутка :)
                                                  • +1
                                                    Там только принцип одинаковый.
                                                    В термопистолете нагревательный элемент позистор, чтобы пистолет не сжег хату вскипятил термоклей, подаче клея ручная.
                                                    В 3D ручке нагревательный элемент спираль, рядом с ней термопара и с помощью электроники стабилизируется/выбирается нужная температура, ну и подача с помощью мотора, что заметно влияет на точность и стабильность подачи. Плюс рисование в третьем измерении, что термопистолет по умолчанию не может.
                                                • +1
                                                  Конечно, смотрится как дизайнерская разработка, есть свой стиль.
                                                  Но с точки зрения простоты, не легче было купить монтажную коробку или готовый пластиковый корпус?)
                                                  А так классно получилось.
                                                  А можно было бы «дорисовать» крепление на корпусе для плат, чтобы не использовать термоклей? Или с этим могли быть проблемы потом?
                                                  И еще, возможно на гладкой бы поверхности типа стекла не было бы прилипания, и не нужно было бы использовать бумагу.
                                                  • 0
                                                    И крепления можно было дорисовать и аккуратней выполнить.
                                                    PLA по крайней мере, можно рисовать на чистом стекле, он как остынет легко отстает. И получается ровная блестящая поверхность. Можно перерисовать чертеж маркером прям на стекле, если оно толстое. И рисовать с средней подачей и быстрым передвижением ручки. Получаются тонкие ровные пластины с минимальными щелями. Собирать корпус гладкой поверхностью наружу. Очень не плохо выходит, стоит руку набить.
                                                    Это мой опыт, в т.ч. и создания корпусов. Фото не сделал, а поделки забрали все.
                                                    • 0
                                                      Благодарю за совет! Думаю PLA с древесной крошкой будет создавать впечатление набитых малых веточек залитых смолой после чего отполированных!
                                                      Как насчет прочности таких пластин?
                                                      • 0
                                                        Они не рассыпаются на отдельные волокна и получаются довольно гибкими, но ничего не мешает сделать ребра жесткости. Можно второй слой сделать, либо грубую сетку на быстрой подаче пластика.
                                                        Но в этом возникает необходимость при размерах больше 5-7 см на любую сторону.
                                                        В случае короба жесткости и так хватает.
                                                        P.S. В процессе написания комментов возникла пара идей как избавится от щелей на глянцевой стороне, пойду пробовать. Если не забуду, напишу результаты.
                                                        • 0
                                                          только одно бобина в 1кг будет стоить, как полпринтера :)
                                                          • +1
                                                            1650р. за 450гр.
                                                            За обычный той же фирмы 1к руб. за 1 кило PLA 1.75мм.
                                                            • 0
                                                              посмотрел на али, подешевело раза в два за пару лет.
                                                    • 0
                                                      Вообще, отличный самобытный корпус получился. И у меня пара комментариев по функциям. Честно говоря, когда я понял, что давление может скакать больше, чем я могу позволить показывать на экране, то сразу сделал постоянное масштабирование графика, т.е. средняя точка рассчитывается каждый раз при отображении. Возможно, с вашей реализацией это попросту невозможный вариант.

                                                      И что касается головных болей. Даже не знаю, повезло вам, или нет, что по барометру близкие понимают, что происходит. У нас тут двоих голова болит в разные моменты времени и мы, как ни старались, не смогли увязать это с давлением.

                                                      Пока рабочая версия — комплексное изменение климата, которое, почему-то не всегда сопровождается адекватным изменением давления. К примеру, недавно было довольно высокое давление, однако стало облачно и пошел снег. В общем, как-то все неоднозначно.
                                                      • 0
                                                        Динамическое масштабирование имеет свои побочные эффекты:
                                                        • уменьшает наглядность силы изменения, создавая впечатление незначительного изменения;
                                                        • на перерасчет нужно время и энергия (несмотря на то, что это занимает миллисекунды).

                                                        Смена погоды всегда предвещает изменение давления (в городе где я обитаю это так), поэтому нужно смотреть динамику за последние N часов.
                                                        • 0
                                                          Если у вас болит голова, вам не нужно делать метеостанцию, нужно обратиться к врачу
                                                        • 0
                                                          Версию на ионисторах тестировал, при конечной емкости 3мАч работает не более 6 дней (высокий саморазряд). Расчет емкости ионистора делался по формуле C*V/3,6 = X мАч. Думаю, что версия с солнечной батареей и MSP430 будет вообще вечной.

                                                          Если не секрет почему отказались от этого варианта? Просто микропотребляющее устройство с литиевым аккумулятором который нужно заряжать раз в год несколько необычно. Или просто воткнули что было? Емкий ионистор и солнечная батарея думаю обеспечат вашу метеостанцию энергией даже без прямых солнечных лучей.
                                                          • 0
                                                            Не оказалось под рукой ионисторов с малым саморазрядом, нужным количеством для создания вменяемой емкости, тем самым обеспечив работоспособность около месяца без подзарядки (фух).
                                                            Да, соглашусь, что большинство устройств сегодня живут не дольше недели. Более того если туда на вторую боковую стенку поставить плоский аккумулятор на 350мАч, то можно потерять зарядное устройство (ака Xenium).
                                                            • 0
                                                              около месяца без подзарядки

                                                              А зачем месяц? На случай ядерной зимы?) Днем (или когда в комнате включен свет) солнечная батарея заряжает ионистор, а ночью схема питается от ионистора. С вашим потреблением наверное даже одной фарады хватит с лихвой. Я от фитнес браслета успеваю зарядник потерять, хотя заряжаю раз в месяц наверное)
                                                          • +2
                                                            Можно было обойтись обыкновенной копеешной фанерой + лобзик, но ведь не зря же тридеручку за многоденег покупали.
                                                            • 0
                                                              У меня нет лобзика за многоденег, но у Вас он есть, ведь не зря же вы его покупали?
                                                              • 0
                                                                Нет, но дойти до ближайшего дома быта и взять его за 200₽ я в состоянии.
                                                                • +1
                                                                  Я в состоянии дойти до жены и взять её 3d ручку и пластик и не заплатить ничего.
                                                                  • +5
                                                                    Это уже было в симпсонах:
                                                                    Гомер получает 63 цента за проданный жир.
                                                                    Барт: «Пап, но бекон стоил 27 долларов»
                                                                    Гомер: «Но за него заплатила твоя мама»
                                                                    Барт: «Но ведь она берёт деньги у тебя»
                                                                    Гомер: «А я зарабатываю их на жире! В чём проблема?»
                                                              • 0
                                                                Как-то мне приспичило сделать корпус для ПК, в кладовке был разобранный бабушкин шифоньер, электролобзик и саморезы. Через пару часов эксклюзивный корпус с нетрадиционным расположением компонентов был готов)))
                                                                • 0
                                                                  не было под рукой ни лобзика, ни даже фанеры. вырезал из куска ламината при помощи дрели, ножевки и напильника: www.youtube.com/watch?v=YGBjE0GJ88Y
                                                                  PS: у меня есть и 3D-ручка и принтер, просто в том месте счел более уместным такой материал.
                                                                • 0

                                                                  Можно стенки корпуса обклеить солнечными панелями и вообще забыть про зарядку раз в 10 месяцев.

                                                                  • 0
                                                                    Много панелей и не нужно. Калькулятору одной маленькой хватает. Батарея несколько лет живет.
                                                                    • 0

                                                                      Потребление калькулятор в разы меньше, не стоит сравнивать муху и слона.

                                                                      • 0
                                                                        Калькулятор я вспомнил как самый распространенный аппарат с солнечным элементом. А теперь к цифрам: солнечный элемент 50х30 мм даст ~20-30 мА в хороших условиях, 2-3 мА в реальных, автор же добился "… энергопотребления в 10 мкАч в спящем режиме ..." Соотношение сон/работа как я понял ~ 3/300 "… раз в 5 минут делает замеры давления… ", так что должно хватить одного элемента.
                                                                        • 0

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

                                                                  • 0
                                                                    У меня вопрос к автору и другим владельцам 3D ручек: если сделать подогрев стекла снизу (например феном) можно ли добиться гладкой поверхности? И второе — раз уж к станции приходится подходить, то может сделать индикацию по нажатию кнопки и использовать LCD? И цена ниже и вывод информации симпатичнее.
                                                                    • 0
                                                                      Не нужен никакой подогрев. Пластик пока горячий, отлично прилипает к чистому стеклу, легко отлипая когда остынет. Поверхность получается ровная и блестящая, просто автор её оставил внутри корпуса. Единственное, видны линии(микро щели между полосами пластика) рисования.
                                                                      • 0
                                                                        Вот я как раз про эти щели, уж больно они видны. Наверно сильно быстро застывает пластик из ручки соприкасаясь с холодным стеклом и предыдущим слоем.
                                                                        • 0
                                                                          Выше я описал технологию. Щели получаются практически не заметные.
                                                                          Либо можно рисовать давя на пред идущую линию, тогда щелей вообще нет, но сложно на больших объектах выдержать равномерное давление.
                                                                          Еще как вариант делать узор из щелей.
                                                                        • 0
                                                                          Да, все именно так. Прошу заметить, что PLA ведет себя в этом случае куда лучше чем ABS. Это был очень тяжелый выбор между гладкой стороной внутрь или наружу…
                                                                          • 0
                                                                            OK, а что думаете по второму вопросу, наcчет применения LCD?
                                                                            • 0
                                                                              Не прижилось, так как на E-Ink все же остается информация длительное время, тогда как на LCD она пропадает. Большинство людей неосознанно смотрят и взаимодействуют со многими вещами. В случае E-Ink вы можете просто проходить мимо и бросить взгляд на экран совершенно непринужденно даже не осознавая этого.
                                                                              • 0
                                                                                так как на E-Ink все же остается информация длительное время

                                                                                А не может это быть и недостатком? Например аккумулятор закончился. А картинка на бумаге осталось. А что бы понять что данные устарели нужно вчытываться в текущее время/напряжение батареи.
                                                                                Тут кстати небольшой апдейт можно накатать: при падении напряжения на батарее ниже определенного значения выводить картинку разряда.
                                                                      • 0
                                                                        Нужна еще концентрация CO2
                                                                        • +1
                                                                          Для этого проекта потребление у CO2 датчика все равно что требовать питание рельсотрона с атомной силовой установкой! У некоторых датчиков нужно от 12 мА (MBE680) до 50 мА для поддержки накала!
                                                                          Я бы с удовольствием добавил, это очень полезный показатель, но есть ли экономичные датчики?
                                                                        • +1
                                                                          Имхо, не слишком удачная реализация графика. когда первый раз увидел КПДВ, подумал, что это глюк экрана или что-то похожее.
                                                                          • 0
                                                                            Реализация графика отличная, вопрос в частоте дискретизации
                                                                          • 0
                                                                            В первую секунду показалось, что корпус сделан из макраме.
                                                                            • 0
                                                                              Так оно у вас дома живет или на улице?
                                                                              • 0
                                                                                Обитает оно в теплых, темных и уютных условиях комнаты.
                                                                                • 0
                                                                                  А не рассматривали вариант еще иметь копию устройства за окном? Насколько изменится элементная база…
                                                                                  • +1
                                                                                    Могу подтвердить, что E-ink экраны на морозе «замерзают» напрочь. Тестировал на балконе в -22. Остается только использовать LCD и сегментные индикаторы. Еще нужно использовать другой источник питания (не Li-Ion). Что до пластика? Ну ему сильно все равно на УФ и дождь (непонятно, где там эта биоразлагаемость...).
                                                                                    • 0
                                                                                      Мороз PLA так же не страшен(до -10, ниже не успел проверить), хрупким не становится.
                                                                              • 0
                                                                                Не хватает одного очень важного показателя — температуры точки росы, чтобы понимать насколько близко состояние внутренней атмосферы к опасности роста грибка на многочисленных «холодных» поверхностях в виде окон и наружных стен температуру которых можно померить. Напрямую зависит только от температуры и влажности, но зависимость нелинейная.
                                                                                • +1

                                                                                  Что вы все про корпус?
                                                                                  Зачем нужна кнопка обновления? 10-минутной дискретности вполне хватит.
                                                                                  Питание дисплея тоже можно отключать, изображение при этом не пропадает, а запас энергии остаётся для более долгой работы.

                                                                                  • 0
                                                                                    Есть мнение, что корпус нетипичен для DIY и это вызывает удивление.
                                                                                    Вы говорите про сбережение энергии и хотите выключать экран, но вот только экран во время обновления тратит уйму энергии, а вы хотите делать это целых 144 раза в сутки, когда это нужно от силы раз 5 в день!
                                                                                    Для чего тратить столько энергии? Где тут у Вас экономия?
                                                                                  • 0
                                                                                    А мне корпус понравился — выглядит нескучно и самобытно, в отличие от типовых штампованных изделий за 100 руб/пучок.
                                                                                    • –1
                                                                                      в советское время все корпуса паял из одностороннего стеклотекстолита, получалось вполне прилично, прочно и экранированно.
                                                                                      • +1
                                                                                        Корпус людям покоя не дает…
                                                                                        А у меня вопрос по существу — зачем такая точность в температуре, как и где это используется?
                                                                                        • 0
                                                                                          К вопросу о создании корпуса. Очень хорошо подходит вспененный ПВХ.
                                                                                          Материал просто идеален для моделирования с минимумом инструментов под рукой.
                                                                                          Легко режется и сверлится. Отлично клеится и красится. Весьма прочен и не впитывает воду.
                                                                                          • +1
                                                                                            добавлю — очень хорошо красится карандашами, фломастерами, красками и ЛУТом, но плохо то всего отмывается (в т.ч от грязных рук). И — его дым весьма едкий-ядовитый, т.е. паяльником в него лучше случайно не тыкать, и лазером или струной не резать (хотя гнуть на струне можно) Зато фрезером обрабатывается прекрасно:

                                                                                          • 0
                                                                                            Интересно, а выносного датчика нет, для мониторинга температуры за окном? Было бы интересно добавить туда беспроводной датчик…

                                                                                            Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                                                                            Самое читаемое