Предлагается такой способ автоматизации домашнего хозяйства при помощи wl500gp. Покупается arduino или его клон, я взял freeduino nano (freeduino.ru) около 900р (джидаи могут запаять такой сами ) Он представляет из себя avr-микроконтроллер с распаенным usb, размером 45х18мм. У freeduino 14 цифровых входа\выхода, 8 аналоговых, таймеры, ацп и много другого интересного. С помощью скриптового языка python организуется связь роутера и мк.
И так, для примера заливаем такой код в мк:
Code:
int ledPin = 9; // LED connected to digital pin 9
void setup()
{
// start serial port at 9600 bps:
Serial.begin(9600);
// initialize the digital pin as an output:
pinMode(ledPin, OUTPUT);
}
void loop()
{
// if we get a valid byte
if (Serial.available() > 0) {
// get incoming byte:
byte inByte = Serial.read();
switch (inByte)
{
case 'H':
digitalWrite(ledPin, HIGH); // set the LED on
Serial.print("Led is ON");
break;
case 'L':
digitalWrite(ledPin, LOW); // set the LED oFF
Serial.print("Led is OFF");
break;
}
}
}
Т.е. по приходу символа 'H' мк выдаст логическую 1 на выходе 9, а по приходу 'L' выдаст логический 0. Если между выводом 9 и Gnd припаять светодиод катодом к Gnd через резистор 100 ом, то увидим как он будет зажигаться. А используя Serial Monitor, который поставляется вместе с arduino и служит для отладки, можно увидеть ответ от мк: "Led is ON","Led is OFF"
Теперь осталось научить роутер общаться с arduino через usb.
1. делаем пассы руками над роутером:
Code:
insmod ftdi_sio
mknod /dev/ttyUSB0 c 188 0
chmod 666 /dev/ttyUSB0
stty -crtscts -hupcl 9600 < /dev/ttyUSB0
эти хитрые строчки надо добавить в post-boot, незабыв апосля: flashfs save && flashfs commit && flashfs enable.
Теперь подключаем arduino. Выполняем:
lsusb
dmesg
Должны увидеть упоминания про FTDI FT232BM.
Значит все ок и роутер дал девайсу имя /dev/ttyUSB0.
2. Ставим python3. Как-то так:
Code:
ipkg update
ipkg install python3
3. Ставим pyserial, он облегчит нам доступ из скриптов питона к arduino. http://pyserial.sourceforge.net/. Т.е. загружаем и распаковываем pyserial-2.5-rc2.tar.gz (ну или более поздний, если будет). И запускаем установку: python setup.py install. Однако если в системе установлен питон более старой версии, то надо явно указать что ставим для питона3: python3 setup.py install. Либо в скрипте setup.py указать путь к третьему питону, либо предварительно пошаманить в каталоге с бинарями: ln -s python3.1 python.
4. Теперь запускаем python3, и пишем в него (или то же самое можно делать в скрипте):
>>> import serial
>>> ser = serial.Serial('/dev/ttyUSB0', 9600, timeout=2)
>>> ser.write(b'H')
>>> ser.read(9)
>>> ser.write(b'L')
>>> ser.read(9)
>>> ser.close()
Коментировать не буду, и так понятно. Есть документация к pyserial. Есть еще полезная команда ser.inWaiting(), возвращает кол-во байт в буфере, но она почему-то в скриптах не работает.
Далее можете подключать к выводам мк реле, лампочки, моторчики, датчики, RFM-радиомодули, и т.п. и развлекаться с автоматизацией.
Я, например, успешно научил freeduino работать с flash-памятью SST25vf010 по SPI-интерфейсу, программатора нет, а надо было прошить.
Сейчас собираюсь прошить freeduino код чтоб работать с lcd дисплеем от motorola c350, благо есть успешный опыт его подключения к мк от тов. Pashgan, что на chipenable.ru. На экранчик можно будет выводить, например, количество свободного места на роутере, загрузку проца роутера, или температуру за бортом.
Вобщем тема arduino интересная (http://www.arduino.cc/ тут народ много чего выделывает), есть клон carduino - автоматизация автомобиля.