Модуль измерения атмосферного давления 1-WIRE.

Модуль измерения атмосферного давления пригодится для организации домашней метеостанции. Иногда важно или интересно знать значение атмосферного давления. Подключив этот модуль к системе SYREMO у вас появится возможность в любой момент времени знать весьма важный показатель состояния атмосферы. Например, через мобильный телефон посмотреть на состояние барометра. Данные отображаются в милиметрах ртутного столба или в килопаскалях, кому как понятней. Показания барометра отображаются на главной странице мониторинга в виде цифрового показателя.

Загрузка...

Модуль измерения атмосферного давления подключается к шине данных 1-WIRE. В системе удаленного мониторинга SYREMO данные о давлении и температуре передаются и сохраняются на сервере.

Модуль измерения атмосферного давления 1-WIRE.
Модуль измерения атмосферного давления 1-WIRE.

В любой момент можно зайти на персональную страницу мониторинга и посмотреть текущее состояние атмосферного давления или график изменения давления за день или за неделю. Можно создавать оповещения или логические условия с этим параметром. Например, можно настроить SMS оповещение о резких скачках атмосферного давления.

Пример кода для микроконтроллера для чтения датчика по шине 1-wire:

w1_init();
w1_write(0xCC);
w1_write(0x44);//запуск преобразования атмосферного давления и температуры
delay_ms(100); //Подождать 0,1 секунду. Это время необходимо для считывания данных с датчика давления BMP180.

w1_init(); //reset
w1_write(0x55);
w1_write(rom_codes[devices][0]); //для датчика rom_codes[0]=0x20
w1_write(rom_codes[devices][1]); //для датчика rom_codes[1]=0x19
w1_write(rom_codes[devices][2]); //для датчика rom_codes[2]=0x19
w1_write(rom_codes[devices][3]);
w1_write(rom_codes[devices][4]);
w1_write(rom_codes[devices][5]);
w1_write(rom_codes[devices][6]);
w1_write(rom_codes[devices][7]);
w1_write(0xAA);
w1_write(0x00);
w1_write(0x00);
crc=0;atmo=0;termo=0;
read1=w1_read();crc=crc8(crc,read1);
atmo=atmo+read1*16777216;
read1=w1_read();crc=crc8(crc,read1);
atmo=atmo+read1*65536;
read1=w1_read();crc=crc8(crc,read1);
atmo=atmo+read1*256;
read1=w1_read();crc=crc8(crc,read1);
atmo=atmo+read1; //вычисление значения давления. Значение в Паскалях. Если умножить на 0,0075, то получим мм.рт.ст.
read1=w1_read();crc=crc8(crc,read1);
read1=w1_read();crc=crc8(crc,read1);
read1=w1_read();crc=crc8(crc,read1);
termo=read1*256; //если 7-бит read1 равен единице, значит температура отрицательная
read1=w1_read();crc=crc8(crc,read1);
termo=(termo+read1)/10;
//вычисление значения температуры. Если температура отрицательная - инвертировать два байта температуры
read1=w1_read();crc=crc8(crc,read1);
read1=w1_read();crc=crc8(crc,read1);
read1=w1_read();crc=crc8(crc,read1);
read1=w1_read();crc=crc8(crc,read1);
read1=w1_read();crc=crc8(crc,read1);
read1=w1_read();crc=crc8(crc,read1);
read1=w1_read();crc=crc8(crc,read1);
read1=w1_read();crc=crc8(crc,read1);
read1=w1_read(); //чтение crc от датчика. read1 должно быть равно crc

Модуль измерения атмосферного давления 1-WIRE.
Модуль измерения атмосферного давления 1-WIRE.
Модуль измерения атмосферного давления 1-WIRE.