Да простят меня гуру … но потратил полтора дня на подключение Raspberry PI по usb к Funduino Mega 2560
(c подключенными: DHT22 и датчиком движения).
Вкладываю свой вариант (нахватал везде понемногу):
1.Устанавливаем python-serial
sudo apt-get install python-serial
2.Как писал ser009 нужно настроить систему для получения состояния датчиков
Создаём Class: Input
Добавляем метод: status_d_input
С кодом:
$this->setProperty('status',$params['status']);
$this->setProperty('updatedTimestamp',time());
delay(20);
создаём свойства: status (Хранить историю (дней):7) и
updatedTimestamp (Хранить историю (дней):7)
Добавляем объекты: D8, DHT_H1, DHT_T1
3.Вот скетч для Arduino:
Код: Выделить всё
#include <Arduino.h>
#include <DHT.h>
#define DHTPIN 2
#define DHTTYPE DHT22
#define PIN_PIR (8)
DHT dht(DHTPIN, DHTTYPE);
int old_D8; // хранения старого значения входа D8
long time = 0;
void setup()
{
pinMode(8,INPUT);
old_D8=digitalRead(8);
Serial.begin(9600);
dht.begin();
}
void loop() //основной цикл программы
{
time++;
// Serial.println(time);
int current_D8=digitalRead(8); // считываем состояние дискретного входа D8 и записываем данные в массив current_D8
if (current_D8!=(int)old_D8) // если значение current_D8 неравно old_D8
{
old_D8=(int)current_D8;
if ((int)old_D8==1) // передаём только срабатывания датчика
{
Serial.print("D8:status_d_input:status:");
Serial.print((int)current_D8);
Serial.println(":");
delay(20); // от дребезга
}
}
if (time>18000000) //примерно 5минут
{
time=0;
float h = dht.readHumidity();
float t = dht.readTemperature();
Serial.print("DHT_T1:status_d_input:status:");
Serial.print(t);
Serial.println(":");
Serial.print("DHT_H1:status_d_input:status:");
Serial.print(h);
Serial.println(":");
}
}
Перед заливкой в настройках выбрать Плату и Последовательный порт.
4.В папке /usr/local/bin/ создаём файл «usb_arduino»
Со следующим содержимым:
Код: Выделить всё
#!/bin/sh
ARDUINO_PORT=/dev/ttyACM0
stty -F $ARDUINO_PORT raw speed 9600
while read LINE; do
#date
echo $LINE # для теста можно удалить
str=$LINE
len=`expr length $str` # длинна строки
pos=`expr index $str :` # координата первого двоеточия
pos=`expr $pos - 1`
st1=`expr substr $str 1 $pos`
pos=`expr $pos + 2`
str=`expr substr $str $pos $len`
len=`expr length $str` # длинна изъятой строки
pos=`expr index $str :`
pos=`expr $pos - 1`
st2=`expr substr $str 1 $pos`
pos=`expr $pos + 2`
str=`expr substr $str $pos $len` # изъятие строки после двоеточия
len=`expr length $str` # длинна изъятой строки
pos=`expr index $str :`
pos=`expr $pos - 1`
st3=`expr substr $str 1 $pos`
pos=`expr $pos + 2`
str=`expr substr $str $pos $len` # изъятие строки после двоеточия
len=`expr length $str`
pos=`expr index $str :`
pos=`expr $pos - 1`
st4=`expr substr $str 1 $pos`
URL='http://localhost/objects/?object='$st1'&op=m&m='$st2'&'$st3'='$st4
wget -q -T 5 -O - $URL
done < $ARDUINO_PORT
подключаем всё и проверяем - в консоли пишем «usb_arduino»
Если всё работает можно добавить скрипт на автозапуск.
PS: Буду рад если это кому поможет, мне данной информации очень не хватало.