Raspberry PI rev2 I/O_RTC_1W
Модератор: immortal
Raspberry PI rev2 I/O_RTC_1W
Здравствуйте.
Делался к Rаspberry модуль ввода/вывода. Опторазвязка, RTC DS1307, 1-wire Master DS 2482.
Печатка в Sprint Layout 6. Большинство элементов подписано.
Схема по мотивам: http://raspberrypi.ru/blog/readblog/276.html
Работает сносно. На печатке ошибка во входом оптопар - выделил цветом. (обнаружил когда вытравил).
Из эмулятора DS18b20, с сайта: http://www.tm3d.de/index.php/1-wire-device-mit-avr
прекрасно получаются альтернативные устройства- выдающие себя за датчик температуры.
Прикладываю печатку и прошивку на attiny25 для контроля шлейфа ОПС - для использования
с обычным датчиком дыма. В штатном режиме датчик сообщает температуру 85. При обрыве шлейфа и аварии 125 и 0 градусов соответственно. Преобразователь на 33063 необходим для повышения (10-13)V АКБ до стабильных 15V Опорное напряжение Aref выставить в районе 4.9V.
Плата выглядит сумбурно, т.к. планировалась универсально для датчика протечки воды и измерителя мощности.
Прикладываю цикл cycle_gpio.php контроль открытия дверей, датчика движения. функции задержки планировал сделать на таймерах, но как обычно... временный вариант.
Делался к Rаspberry модуль ввода/вывода. Опторазвязка, RTC DS1307, 1-wire Master DS 2482.
Печатка в Sprint Layout 6. Большинство элементов подписано.
Схема по мотивам: http://raspberrypi.ru/blog/readblog/276.html
Работает сносно. На печатке ошибка во входом оптопар - выделил цветом. (обнаружил когда вытравил).
Из эмулятора DS18b20, с сайта: http://www.tm3d.de/index.php/1-wire-device-mit-avr
прекрасно получаются альтернативные устройства- выдающие себя за датчик температуры.
Прикладываю печатку и прошивку на attiny25 для контроля шлейфа ОПС - для использования
с обычным датчиком дыма. В штатном режиме датчик сообщает температуру 85. При обрыве шлейфа и аварии 125 и 0 градусов соответственно. Преобразователь на 33063 необходим для повышения (10-13)V АКБ до стабильных 15V Опорное напряжение Aref выставить в районе 4.9V.
Плата выглядит сумбурно, т.к. планировалась универсально для датчика протечки воды и измерителя мощности.
Прикладываю цикл cycle_gpio.php контроль открытия дверей, датчика движения. функции задержки планировал сделать на таймерах, но как обычно... временный вариант.
- Вложения
-
- cycle_gpio.7z
- GPIO
- (1.17 КБ) 330 скачиваний
-
- 18b20_Smoke_sensor.7z
- attiny source
- (10.16 КБ) 283 скачивания
-
- SMART_UNI.7z
- ATTINY25-DS18B20
- (17.5 КБ) 284 скачивания
-
- home_smart_3_8.7z
- I/O_MOD
- (28.82 КБ) 311 скачиваний
Re: Raspberry PI rev2 I/O_RTC_1W
Вот это подарок. Спасибо!!!!
То что не хватало для нормальной работы. ... теперь GPIO весь наш.. В ответ сообщаю что сейчас в разработке плата на которой Малинка как "шилд" а сама плата это расширитель портов с питанием и прочими прибамбасами. Подобною видел на Ибей но как то руки не дошли .. Как отработаю то выложу для всех.
То что не хватало для нормальной работы. ... теперь GPIO весь наш.. В ответ сообщаю что сейчас в разработке плата на которой Малинка как "шилд" а сама плата это расширитель портов с питанием и прочими прибамбасами. Подобною видел на Ибей но как то руки не дошли .. Как отработаю то выложу для всех.
Re: Raspberry PI rev2 I/O_RTC_1W
Доброго времени суток.
Очень интересна эта тема. Прочитав это и http://smartliving.ru/forum/viewtopic.p ... berry+gpio понял, что необходима библиотека WiringPi-PHP, но ни как не могу ее установить.
Делаю так:
pi@raspberrypi ~ $ git clone https://github.com/WiringPi/WiringPi-PHP.git
pi@raspberrypi ~ $ cd WiringPi-PHP
pi@raspberrypi ~/WiringPi-PHP $ git clone https://github.com/WiringPi/WiringPi.git
pi@raspberrypi ~/WiringPi-PHP $ ./build.sh
и получаю:
./build.sh: line 3: php-config: command not found
../wiringpi_wrap.c:717:18: fatal error: zend.h: No such file or directory
compilation terminated.
gcc: error: wiringpi_wrap.o: No such file or directory
В Linux не силен. Подскажите пожалуйста, что не так, чего не хватает?
Спасибо.
Очень интересна эта тема. Прочитав это и http://smartliving.ru/forum/viewtopic.p ... berry+gpio понял, что необходима библиотека WiringPi-PHP, но ни как не могу ее установить.
Делаю так:
pi@raspberrypi ~ $ git clone https://github.com/WiringPi/WiringPi-PHP.git
pi@raspberrypi ~ $ cd WiringPi-PHP
pi@raspberrypi ~/WiringPi-PHP $ git clone https://github.com/WiringPi/WiringPi.git
pi@raspberrypi ~/WiringPi-PHP $ ./build.sh
и получаю:
./build.sh: line 3: php-config: command not found
../wiringpi_wrap.c:717:18: fatal error: zend.h: No such file or directory
compilation terminated.
gcc: error: wiringpi_wrap.o: No such file or directory
В Linux не силен. Подскажите пожалуйста, что не так, чего не хватает?
Спасибо.
> AlexK-71
Доброго времени.
Библиотеку использовал немного другую: git clone git://git.drogon.net/wiringPi
Установка по инструкции... (давно это было, но помню были грабли - но какие?)
Если после усердных попыток не получится, разберёмся.
В папку со скриптом cycle_gpio.php - использующим библиотеку, положить файл wiringpi.php, или как больше нравиться.
With best regards, Sergey.
Библиотеку использовал немного другую: git clone git://git.drogon.net/wiringPi
Установка по инструкции... (давно это было, но помню были грабли - но какие?)
Если после усердных попыток не получится, разберёмся.
В папку со скриптом cycle_gpio.php - использующим библиотеку, положить файл wiringpi.php, или как больше нравиться.
With best regards, Sergey.
Re: Raspberry PI rev2 I/O_RTC_1W
Спасибо за ответ.
Установил по этой инструкции http://www.xodustech.com/guides/raspberry-pi-php-gpio (у меня не хватало php5-dev). Но установилось все равно криво, т.к. их тестовый index.php (последний абзац) открывается в пустой страницей.
Для упрощения Ваш пример сократил до:
При запуске из терминала (убрал "cycle_" из имени, что бы не стартовал автоматом, wiringpi.php в папке scripts) получаю:
pi@raspberrypi /var/www/scripts $ php gpio.php
PHP Warning: dl(): Dynamically loaded extensions aren't enabled in /var/www/scripts/wiringpi.php on line 22
PHP Fatal error: Call to undefined function wiringPiSetup() in /var/www/scripts/wiringpi.php on line 31
Получается криво встал WiringPi-PHP.
ЗЫ.
Работает вот такой цикл:
и такой
Но работают только если запускать вручную, а автоматом не отрабатывают команды:
system ( "gpio mode 2 out" );
system ( "gpio mode 3 in" );
system ( "gpio read 3").
Вот как то так пока не победил.
Установил по этой инструкции http://www.xodustech.com/guides/raspberry-pi-php-gpio (у меня не хватало php5-dev). Но установилось все равно криво, т.к. их тестовый index.php (последний абзац) открывается в пустой страницей.
Для упрощения Ваш пример сократил до:
SPOILERSPOILER_SHOW
// connecting to database
$db = new mysql(DB_HOST, '', DB_USER, DB_PASSWORD, DB_NAME);
ini_set("enable_dl","On");
include('wiringpi.php');
wiringpi::wiringPiSetup();
wiringpi::pinMode(2,1);
wiringpi::pinMode(3,0);
wiringpi::pullUpDnControl(3,2);
while(1)
{
echo date("H:i:s") . " running " . basename(__FILE__) . "\n";
// на всякий случай каждый час пишем в лог, что цикл работает -- можно убрать
if (!$updated_time || (time() - $updated_time) > 1 * 60 * 60)
{
//Log activity every hour
DebMes("Cycle running OK: ".basename(__FILE__));
$updated_time=time();
}
if (time()-$checked_time>10) {
$checked_time=time();
setGlobal((str_replace('.php', '', basename(__FILE__))).'Run', time());
}
if (file_exists('./reboot'))
{
$db->Disconnect();
exit;
}
if ((wiringpi::digitalRead(3))==0)
{
sg('Sens_wPi3.status',0);
}
else
{
sg('Sens_wPi3.status',1);
};
}
DebMes("Unexpected close of cycle: " . basename(__FILE__));
?>
$db = new mysql(DB_HOST, '', DB_USER, DB_PASSWORD, DB_NAME);
ini_set("enable_dl","On");
include('wiringpi.php');
wiringpi::wiringPiSetup();
wiringpi::pinMode(2,1);
wiringpi::pinMode(3,0);
wiringpi::pullUpDnControl(3,2);
while(1)
{
echo date("H:i:s") . " running " . basename(__FILE__) . "\n";
// на всякий случай каждый час пишем в лог, что цикл работает -- можно убрать
if (!$updated_time || (time() - $updated_time) > 1 * 60 * 60)
{
//Log activity every hour
DebMes("Cycle running OK: ".basename(__FILE__));
$updated_time=time();
}
if (time()-$checked_time>10) {
$checked_time=time();
setGlobal((str_replace('.php', '', basename(__FILE__))).'Run', time());
}
if (file_exists('./reboot'))
{
$db->Disconnect();
exit;
}
if ((wiringpi::digitalRead(3))==0)
{
sg('Sens_wPi3.status',0);
}
else
{
sg('Sens_wPi3.status',1);
};
}
DebMes("Unexpected close of cycle: " . basename(__FILE__));
?>
pi@raspberrypi /var/www/scripts $ php gpio.php
PHP Warning: dl(): Dynamically loaded extensions aren't enabled in /var/www/scripts/wiringpi.php on line 22
PHP Fatal error: Call to undefined function wiringPiSetup() in /var/www/scripts/wiringpi.php on line 31
Получается криво встал WiringPi-PHP.
ЗЫ.
Работает вот такой цикл:
SPOILERSPOILER_SHOW
<?php
system ( "gpio mode 2 out" );
system ( "gpio mode 3 in" );
// system ( "gpio write 2 1" );
$i=0;
while(1) {
echo "Working...\n";
if ($i>1) {
//здесь нужные нам действия (раз в 10 секунд)
file_get_contents("http://192.168.1.60:80/objects/?object= ... s=".system ( "gpio read 3"));
//----
$i=0;
}
$i++;
sleep(1);
}
?>
system ( "gpio mode 2 out" );
system ( "gpio mode 3 in" );
// system ( "gpio write 2 1" );
$i=0;
while(1) {
echo "Working...\n";
if ($i>1) {
//здесь нужные нам действия (раз в 10 секунд)
file_get_contents("http://192.168.1.60:80/objects/?object= ... s=".system ( "gpio read 3"));
//----
$i=0;
}
$i++;
sleep(1);
}
?>
SPOILERSPOILER_SHOW
<?php
chdir(dirname(__FILE__).'/../');
include_once("./config.php");
include_once("./lib/loader.php");
include_once("./lib/threads.php");
set_time_limit(0);
// connecting to database
$db = new mysql(DB_HOST, '', DB_USER, DB_PASSWORD, DB_NAME);
ini_set("enable_dl","On");
system ( "gpio mode 0 out" );
system ( "gpio mode 2 out" );
system ( "gpio mode 3 in" );
// system ( "gpio write 2 1" );
$i=0;
while(1) {
echo "Working...\n";
if ($i>1) {
//здесь нужные нам действия (раз в 10 секунд)
setGlobal('Sens_wPi3.updatedTimestamp',time());
setGlobal('Sens_wPi3.status',system ( "gpio read 3"));
//----
$i=0;
}
$i++;
sleep(1);
}
?>
chdir(dirname(__FILE__).'/../');
include_once("./config.php");
include_once("./lib/loader.php");
include_once("./lib/threads.php");
set_time_limit(0);
// connecting to database
$db = new mysql(DB_HOST, '', DB_USER, DB_PASSWORD, DB_NAME);
ini_set("enable_dl","On");
system ( "gpio mode 0 out" );
system ( "gpio mode 2 out" );
system ( "gpio mode 3 in" );
// system ( "gpio write 2 1" );
$i=0;
while(1) {
echo "Working...\n";
if ($i>1) {
//здесь нужные нам действия (раз в 10 секунд)
setGlobal('Sens_wPi3.updatedTimestamp',time());
setGlobal('Sens_wPi3.status',system ( "gpio read 3"));
//----
$i=0;
}
$i++;
sleep(1);
}
?>
system ( "gpio mode 2 out" );
system ( "gpio mode 3 in" );
system ( "gpio read 3").
Вот как то так пока не победил.
Re: Raspberry PI rev2 I/O_RTC_1W
Доброго времени суток.
С библиотекой разобрался. Моя библиотека та же, что и у Вас. Проблема возникала со второй библиотекой (WiringPi-PHP). Нужно было сделать:
To choose the pin mapping type that you wish to use, create an ini file /etc/php5/conf.d/wiringpi.ini and adding the following:
extension=wiringpi.so
wiringpi.pinmaptype=[PINS|GPIO|USER]
(Это отсюда https://github.com/WiringPi/WiringPi-PHP)
Блин ну почему по линуксу все расписано кусочками и в разных местах...
После этого Ваш цикл стал запускаться из консоли, причем запускаю от pi, а работает от root и грузит проц до 100%. А если запускается автоматом то сразу же закрывается (16:17:27 DEBUG [root]: Closing thread: php -q ./scripts/cycle_gpio3.php --params "a:0:{}" (at /var/www/lib/general.class.php:417) ).
Вот как то пока так. Буду разбираться с циклами, наверно проблема с правами.
Спасибо.
С библиотекой разобрался. Моя библиотека та же, что и у Вас. Проблема возникала со второй библиотекой (WiringPi-PHP). Нужно было сделать:
To choose the pin mapping type that you wish to use, create an ini file /etc/php5/conf.d/wiringpi.ini and adding the following:
extension=wiringpi.so
wiringpi.pinmaptype=[PINS|GPIO|USER]
(Это отсюда https://github.com/WiringPi/WiringPi-PHP)
Блин ну почему по линуксу все расписано кусочками и в разных местах...
После этого Ваш цикл стал запускаться из консоли, причем запускаю от pi, а работает от root и грузит проц до 100%. А если запускается автоматом то сразу же закрывается (16:17:27 DEBUG [root]: Closing thread: php -q ./scripts/cycle_gpio3.php --params "a:0:{}" (at /var/www/lib/general.class.php:417) ).
Вот как то пока так. Буду разбираться с циклами, наверно проблема с правами.
Спасибо.
Re: Raspberry PI rev2 I/O_RTC_1W
Разобрался со входами, всем спасибо.
Сейчас работает такой цикл:
setGlobal не запускает метод, getURL работает, как то странно не то что через раз, а раз из 5-10.
А функция file_get_contents четко и не требует ни каких доп библиотек.
Сейчас пытаюсь разобраться с выходами. Из методов не отрабатывает команды exec ('sudo gpio write X Y') и кжется exec('php /var/www/scripts/gpio.php').
Сейчас работает такой цикл:
Код: Выделить всё
<?php
chdir(dirname(__FILE__).'/../');
include_once("./config.php");
include_once("./lib/loader.php");
include_once("./lib/threads.php");
set_time_limit(0);
// connecting to database
$db = new mysql(DB_HOST, '', DB_USER, DB_PASSWORD, DB_NAME);
ini_set("enable_dl","On");
exec ('sudo gpio mode 0 out');
exec ('sudo gpio mode 2 out');
exec ('sudo gpio mode 3 in');
exec ('sudo gpio mode 1 in');
exec ('sudo gpio mode 4 in');
exec ('sudo gpio mode 5 in');
exec ('sudo gpio mode 6 in');
exec ('sudo gpio mode 3 down');
exec ('sudo gpio mode 1 down');
exec ('sudo gpio mode 4 up');
exec ('sudo gpio mode 5 up');
exec ('sudo gpio mode 6 up');
$wPi_arr = array(3,1,4,5,6);
$i=0;
while(1) {
//echo "Working...\n";
echo date("H:i:s") . " running " . basename(__FILE__) . "\n";
if ($i>1) {
//здесь нужные нам действия (раз в 10 секунд)
foreach ($wPi_arr as $wPi) {
$gpio=exec ( 'sudo gpio read '.$wPi);
$urlcmd='http://localhost/objects/?object=Sens_wPi'.$wPi.'&op=m&m=statusChanged&status='.$gpio;
//getURL($urlcmd);
file_get_contents($urlcmd);
//setGlobal('Sens_wPi'.$wPi.'.status',$gpio);
//echo $urlcmd."\n";
//echo getGlobal('Sens_wPi'.$wPi.'.updatedTimestamp')."\n";
//echo getGlobal('Sens_wPi'.$wPi.'.status')."\n";
}
//----
$i=0;
}
$i++;
sleep(1);
}
DebMes("Unexpected close of cycle: " . basename(__FILE__));
?>А функция file_get_contents четко и не требует ни каких доп библиотек.
Сейчас пытаюсь разобраться с выходами. Из методов не отрабатывает команды exec ('sudo gpio write X Y') и кжется exec('php /var/www/scripts/gpio.php').
Re: Raspberry PI rev2 I/O_RTC_1W
sudo - возможно требует пароль ввести вот и не отрабатывает. Можно в настройках системы указать что пароль запрашивать не нужно.
Majordomo (GitHub) на cubietruck + MegaD + 1-wire
CONNECT: http://connect.smartliving.ru/profile/311
CONNECT: http://connect.smartliving.ru/profile/311
Re: Raspberry PI rev2 I/O_RTC_1W
Не из php-скрипта все отрабатывается, а вот из метода в объекте нет. Да и скрипт из метода не запускается "exec('php /var/www/scripts/gpio.php')", сам скрипт gpio.php работает...zelevova писал(а):sudo - возможно требует пароль ввести вот и не отрабатывает. Можно в настройках системы указать что пароль запрашивать не нужно.
Возможно в методе не работает команда exec()...