Страница 1 из 2

Raspberry PI rev2 I/O_RTC_1W

Добавлено: Вт авг 05, 2014 8:35 am
f00fc7c8
Здравствуйте.
Делался к 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 контроль открытия дверей, датчика движения. функции задержки планировал сделать на таймерах, но как обычно... временный вариант.

Re: Raspberry PI rev2 I/O_RTC_1W

Добавлено: Вт авг 05, 2014 9:58 pm
shemnik69
Вот это подарок. Спасибо!!!!
То что не хватало для нормальной работы. ... теперь GPIO весь наш.. В ответ сообщаю что сейчас в разработке плата на которой Малинка как "шилд" а сама плата это расширитель портов с питанием и прочими прибамбасами. Подобною видел на Ибей но как то руки не дошли .. Как отработаю то выложу для всех.

Re: Raspberry PI rev2 I/O_RTC_1W

Добавлено: Сб ноя 29, 2014 12:43 am
AlexK-71
Доброго времени суток.
Очень интересна эта тема. Прочитав это и 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

Добавлено: Пт дек 05, 2014 4:38 pm
f00fc7c8
Доброго времени.
Библиотеку использовал немного другую: git clone git://git.drogon.net/wiringPi
Установка по инструкции... (давно это было, но помню были грабли - но какие?)
Если после усердных попыток не получится, разберёмся.
В папку со скриптом cycle_gpio.php - использующим библиотеку, положить файл wiringpi.php, или как больше нравиться.
With best regards, Sergey.

Re: Raspberry PI rev2 I/O_RTC_1W

Добавлено: Пн дек 08, 2014 11:51 pm
AlexK-71
Спасибо за ответ.
Установил по этой инструкции 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__));
?>
При запуске из терминала (убрал "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.

ЗЫ.

Работает вот такой цикл:
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);
}

?>
и такой
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);
}

?>
Но работают только если запускать вручную, а автоматом не отрабатывают команды:

system ( "gpio mode 2 out" );
system ( "gpio mode 3 in" );
system ( "gpio read 3").

Вот как то так пока не победил.

Re: Raspberry PI rev2 I/O_RTC_1W

Добавлено: Вт дек 09, 2014 4:17 pm
f00fc7c8
Библиотека другая.
Пока не запустил, попробуй http://wiringpi.com/.
Потом будет из чего выбирать...

Re: Raspberry PI rev2 I/O_RTC_1W

Добавлено: Сб дек 13, 2014 12:00 am
AlexK-71
Доброго времени суток.

С библиотекой разобрался. Моя библиотека та же, что и у Вас. Проблема возникала со второй библиотекой (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

Добавлено: Ср янв 21, 2015 1:25 pm
AlexK-71
Разобрался со входами, всем спасибо.
Сейчас работает такой цикл:

Код: Выделить всё

<?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__));

?>
setGlobal не запускает метод, getURL работает, как то странно не то что через раз, а раз из 5-10.
А функция file_get_contents четко и не требует ни каких доп библиотек.

Сейчас пытаюсь разобраться с выходами. Из методов не отрабатывает команды exec ('sudo gpio write X Y') и кжется exec('php /var/www/scripts/gpio.php').

Re: Raspberry PI rev2 I/O_RTC_1W

Добавлено: Ср янв 21, 2015 1:54 pm
zelevova
sudo - возможно требует пароль ввести вот и не отрабатывает. Можно в настройках системы указать что пароль запрашивать не нужно.

Re: Raspberry PI rev2 I/O_RTC_1W

Добавлено: Ср янв 21, 2015 4:00 pm
AlexK-71
zelevova писал(а):sudo - возможно требует пароль ввести вот и не отрабатывает. Можно в настройках системы указать что пароль запрашивать не нужно.
Не из php-скрипта все отрабатывается, а вот из метода в объекте нет. Да и скрипт из метода не запускается "exec('php /var/www/scripts/gpio.php')", сам скрипт gpio.php работает...
Возможно в методе не работает команда exec()...