Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #3 from sergejey/alpha
Alpha
- Loading branch information
Showing
22 changed files
with
2,652 additions
and
999 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Original file line | Diff line number | Diff line change |
---|---|---|---|
@@ -0,0 +1,19 @@ | |||
<? | |||
/* | |||
* Copyright (c) 2016, Andrey_B | |||
* http://ab-log.ru | |||
* Подробнее см. LICENSE.txt или http://www.gnu.org/licenses/ | |||
*/ | |||
|
|||
/* | |||
Скрипт для работы с датчиком атмосферного давления BMP180 | |||
Использует драйвер BMP180 и библиотеку I2C-PHP | |||
*/ | |||
|
|||
define("SCL", "8"); | |||
define("SDA", "9"); | |||
define("MD", "http://192.168.0.14/sec/?"); | |||
// Вариант реализации I2C: 1 - полностью программный; 2 - частично аппаратный (прошивка 3.43beta1 и выше) | |||
//define("V", "2"); | |||
require_once("mod_i2c_bmp180.php"); | |||
echo get_pressure()."\n"; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Original file line | Diff line number | Diff line change |
---|---|---|---|
@@ -0,0 +1,30 @@ | |||
<? | |||
/* | |||
* Copyright (c) 2016, Andrey_B | |||
* http://ab-log.ru | |||
* Подробнее см. LICENSE.txt или http://www.gnu.org/licenses/ | |||
*/ | |||
|
|||
/* | |||
Скрипт для получения данных температуры и влажности датчика HTU21D | |||
Использует драйвер HTU21D и библиотеку I2C-PHP | |||
*/ | |||
|
|||
define("SCL", "8"); | |||
define("SDA", "9"); | |||
define("MD", "http://192.168.0.14/sec/?"); | |||
|
|||
// Вариант реализации I2C: 1 - полностью программный; 2 - частично аппаратный (прошивка 3.43beta1 и выше) | |||
define("V", "2"); | |||
|
|||
require_once("mod_i2c_htu21d.php"); | |||
|
|||
$temperature = get_htu21d_temperature(); | |||
echo "Temperature: ".$temperature."\n"; | |||
|
|||
$humidity = get_htu21d_humidity(); | |||
echo "Humidity: ".$humidity."\n"; | |||
|
|||
$hum_compensated = $humidity + (25 - $temperature) * -0.15; | |||
echo "Humidity (compensated): ".$hum_compensated."\n"; | |||
?> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Original file line | Diff line number | Diff line change |
---|---|---|---|
@@ -0,0 +1,34 @@ | |||
<? | |||
/* | |||
* Copyright (c) 2016, Andrey_B | |||
* http://ab-log.ru | |||
* Подробнее см. LICENSE.txt или http://www.gnu.org/licenses/ | |||
*/ | |||
|
|||
/* | |||
Скрипт для отображение данных на дисплее OLED с контроллером SSD1306 | |||
Использует драйвер SSD1306 и библиотеку I2C-PHP | |||
*/ | |||
|
|||
define("SCL", "8"); | |||
define("SDA", "9"); | |||
define("MD", "http://192.168.0.14/sec/?"); | |||
|
|||
// Вариант реализации I2C: 1 - полностью программный; 2 - частично аппаратный (прошивка 3.43beta1 и выше) | |||
define("V", "2"); | |||
|
|||
require_once("mod_i2c_ssd1306.php"); | |||
|
|||
ssd1306_init(); | |||
ssd1306_clear_display(); | |||
|
|||
/*** Отображение текста ***/ | |||
ssd1306_write_text("Температура: 24.62", "verdana_10", 0, 0); // | |||
//ssd1306_write_text("22.82 ", "verdana_10", 84, 0); | |||
ssd1306_write_text("Влажность: 47%", "verdana_10", 0, 2); | |||
ssd1306_write_text(" ХОРОШЕГО ДНЯ!", "mistral_10", 0, 5); | |||
|
|||
/*** Отображение графики ***/ | |||
//ssd1306_draw_pic("ab_log_logo"); | |||
|
|||
?> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Original file line | Diff line number | Diff line change |
---|---|---|---|
@@ -0,0 +1,26 @@ | |||
<? | |||
/* | |||
* Copyright (c) 2016, Andrey_B | |||
* http://ab-log.ru | |||
* Подробнее см. LICENSE.txt или http://www.gnu.org/licenses/ | |||
*/ | |||
|
|||
/* | |||
Скрипт для работы с датчиком освещенности TLS2591 | |||
Использует драйвер BH1750 и библиотеку I2C-PHP | |||
*/ | |||
|
|||
define("SCL", "34"); | |||
define("SDA", "35"); | |||
define("MD", "http://192.168.0.14/sec/?"); | |||
|
|||
// Вариант реализации I2C: 1 - полностью программный; 2 - частично аппаратный (прошивка 3.43beta1 и выше) | |||
define("V", "1"); | |||
|
|||
require_once("mod_i2c_tsl2591.php"); | |||
|
|||
$lux = get_lux(); | |||
|
|||
echo "Lux: $lux\n"; | |||
|
|||
?> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Original file line | Diff line number | Diff line change |
---|---|---|---|
@@ -0,0 +1,193 @@ | |||
<? | |||
/* | |||
* Copyright (c) 2016, Andrey_B | |||
* http://ab-log.ru | |||
* Подробнее см. LICENSE.txt или http://www.gnu.org/licenses/ | |||
*/ | |||
|
|||
/* | |||
Это драйвер для датчика атмосферного давления BMP180 для библиотеки I2C-PHP | |||
*/ | |||
|
|||
require_once("mod_i2c_lib.php"); | |||
$b5 = 0; | |||
|
|||
function hexdecs($hex) | |||
{ | |||
// ignore non hex characters | |||
$hex = preg_replace('/[^0-9A-Fa-f]/', '', $hex); | |||
|
|||
// converted decimal value: | |||
$dec = hexdec($hex); | |||
|
|||
// maximum decimal value based on length of hex + 1: | |||
// number of bits in hex number is 8 bits for each 2 hex -> max = 2^n | |||
// use 'pow(2,n)' since '1 << n' is only for integers and therefore limited to integer size. | |||
$max = pow(2, 4 * (strlen($hex) + (strlen($hex) % 2))); | |||
|
|||
// complement = maximum - converted hex: | |||
$_dec = $max - $dec; | |||
|
|||
// if dec value is larger than its complement we have a negative value (first bit is set) | |||
return $dec >= $_dec ? -$_dec : $dec; | |||
} | |||
|
|||
function get_calibration() | |||
{ | |||
$cal_regaddr = array("AC1" => "AA", "AC2" => "AC", "AC3" => "AE", "AC4" => "B0", "AC5" => "B2", "AC6" => "B4", "B1" => "B6", "B2" => "B8", "MB" => "BA", "MC" => "BC", "MD" => "BE" ); | |||
$cfg_data = ""; | |||
|
|||
echo "Reading calibration data "; | |||
|
|||
i2c_init(); | |||
i2c_start(); | |||
|
|||
foreach ( $cal_regaddr as $key => $value ) | |||
{ | |||
i2c_send("EE"); | |||
i2c_send($value); | |||
i2c_stop(); | |||
i2c_start(); | |||
i2c_send("EF"); | |||
$msb = i2c_read(); | |||
$lsb = i2c_read(1); | |||
if ( strlen($msb) == 1 ) | |||
$msb = "0$msb"; | |||
if ( strlen($lsb) == 1 ) | |||
$lsb = "0$lsb"; | |||
|
|||
if ( $key == "AC4" || $key == "AC5" || $key == "AC6" ) | |||
{ | |||
$val = hexdec($msb); | |||
$val = $val << 8; | |||
$val = $val + hexdec($lsb); | |||
} | |||
else | |||
$val = hexdecs($msb.$lsb); | |||
|
|||
//echo "$key => MSB: $msb; LSB: $lsb; Val: $val\n"; | |||
$cfg_data .= $val.";"; | |||
echo "."; | |||
} | |||
echo " done\n"; | |||
|
|||
$cfg = fopen("mod_i2c_bmp180.cfg", "w"); | |||
fwrite($cfg, $cfg_data); | |||
fclose($cfg); | |||
|
|||
} | |||
|
|||
function get_temperature() | |||
{ | |||
global $b5; | |||
|
|||
if ( !file_exists("mod_i2c_bmp180.cfg") ) | |||
get_calibration(); | |||
|
|||
$cfg = explode(";", file_get_contents("mod_i2c_bmp180.cfg")); | |||
|
|||
i2c_init(); | |||
i2c_start(); | |||
|
|||
i2c_send("EE"); | |||
i2c_send("F4"); | |||
i2c_send("2E"); | |||
i2c_stop(); | |||
i2c_start(); | |||
i2c_send("EE"); | |||
i2c_send("F6"); | |||
i2c_stop(); | |||
i2c_start(); | |||
i2c_send("EF"); | |||
$msb = i2c_read(); | |||
$lsb = i2c_read(1); | |||
i2c_stop(); | |||
|
|||
if ( strlen($msb) == 1 ) | |||
$msb = "0$msb"; | |||
if ( strlen($lsb) == 1 ) | |||
$lsb = "0$lsb"; | |||
|
|||
$ut = hexdec($msb.$lsb); | |||
//echo "MSB: $msb; LSB: $lsb; UT: $ut\n"; | |||
$x1 = round(($ut - $cfg[5]) * $cfg[4] / 32768); | |||
$x2 = round($cfg[9] * 2048 / ($x1 + $cfg[10])); | |||
$b5 = $x1 + $x2; | |||
$t = round(($b5 + 8) / 16); | |||
//echo "temp: $t ($x1, $x2, $b5)\n"; | |||
return $t / 10; | |||
} | |||
|
|||
function get_pressure() | |||
{ | |||
global $b5; | |||
|
|||
if ( !file_exists("mod_i2c_bmp180.cfg") ) | |||
get_calibration(); | |||
|
|||
$cfg = explode(";", file_get_contents("mod_i2c_bmp180.cfg")); | |||
|
|||
get_temperature(); | |||
$oss = 1; | |||
|
|||
i2c_init(); | |||
i2c_start(); | |||
|
|||
i2c_send("EE"); | |||
i2c_send("F4"); | |||
i2c_send("74"); | |||
i2c_stop(); | |||
//usleep(50000); | |||
i2c_start(); | |||
i2c_send("EE"); | |||
i2c_send("F6"); | |||
i2c_stop(); | |||
i2c_start(); | |||
i2c_send("EF"); | |||
$msb = i2c_read(); | |||
$lsb = i2c_read(); | |||
$xlsb = i2c_read(1); | |||
i2c_stop(); | |||
|
|||
if ( strlen($msb) == 1 ) | |||
$msb = "0$msb"; | |||
if ( strlen($lsb) == 1 ) | |||
$lsb = "0$lsb"; | |||
if ( strlen($xlsb) == 1 ) | |||
$xlsb = "0$xlsb"; | |||
$up = hexdec($msb.$lsb.$xlsb); | |||
$up = $up >> (8 - $oss); | |||
//echo "MSB: $msb; LSB: $lsb; XLSB: $xlsb; UP: $up\n"; | |||
|
|||
$b6 = $b5 - 4000; | |||
$x1 = round(($cfg[7] * ($b6 * $b6 / 4096)) / 2048); | |||
$x2 = round($cfg[1] * $b6 / 2048); | |||
$x3 = $x1 + $x2; | |||
$b3 = ($cfg[0] * 4 + $x3); | |||
$b3 = $b3 << $oss; | |||
$b3 = round(($b3 + 2)/4); | |||
$x1 = round($cfg[2] * $b6 / 8192); | |||
$x2 = round(($cfg[6] * ($b6 * $b6 / 4096)) / 65536); | |||
$x3 = round((($x1 + $x2) + 2) / 4); | |||
$b4 = round($cfg[3] * ($x3 + 32768) / 32768); | |||
$temp = 50000 >> $oss; | |||
$b7 = ($up - $b3) * ($temp); | |||
if ($b7 < 2147483648 ) | |||
$p = round(($b7 * 2) / $b4); | |||
else | |||
$p = round(($b7 / $b4) * 2); | |||
$x1 = round(($p / 256) * ($p / 256)); | |||
$x1 = round(($x1 * 3038) / 65536); | |||
$x2 = round((-7357 * $p) / 65536); | |||
$p = round($p + ($x1 + $x2 + 3791) / 16); | |||
$p_mm = round($p / 133.322, 2); | |||
|
|||
return ($p_mm); | |||
|
|||
//$p0 = $p / pow(1 - 70/44330, 5.255); | |||
//$p_mm = round($p / 133.322, 2); | |||
//$p0_mm = round($p0 / 133.322, 2); | |||
//echo "Pa: $p; Pa_mm: $p_mm / $p0_mm\n"; | |||
|
|||
} | |||
|
Oops, something went wrong.