Форум обсуждения систем  

Вернуться   Форум обсуждения систем "Умный дом", проектов Ардуино, OpenWRT и других DIY устройств > Форум умного дома > Сделай сам

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 03.06.2011, 10:34   #1
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9821
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию Связываем Wi-Fi Роутер Asus wl500gp и Arduino

На текущий момент статья устарела, сейчас есть не дорогие, миниатюрные, с более мощным процессором роутеры WT3020
Обсуждение в разделе CyberWrt.
Теперь благодаря CyberWrt роутер можно превратить в робота или любое другое устройство за 2 клика
И для этого не нужно иметь специальных знаний, все настройки производятся из браузера Вашего ПК

Автор статьи: natural.
Предлагается такой способ автоматизации домашнего хозяйства при помощи wl500gp. Покупается arduino или его клон, я взял arduino nano (джидаи могут спаять такой сами ) Он представляет из себя avr-микроконтроллер с распаенным usb, размером 45х18мм. У arduino 14 цифровых входа\выхода, 8 аналоговых, таймеры, ацп и много другого интересного. С помощью скриптового языка python организуется связь роутера и мк.
И так, для примера заливаем такой код в мк:
PHP код:
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(ledPinOUTPUT);     
}

void loop()
{
  
// if we get a valid byte
  
if (Serial.available() > 0) {
    
// get incoming byte:
    
byte inByte Serial.read();
    switch (
inByte)
    {
        case 
'H':
        
digitalWrite(ledPinHIGH);   // set the LED on
        
Serial.print("Led is ON");
        break;
        case 
'L':
        
digitalWrite(ledPinLOW);   // 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. делаем пассы руками над роутером:
Цитата:
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. Как-то так:
Цитата:
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-радиомодули, и т.п. и развлекаться с автоматизацией.
Я, например, успешно научил Carduino работать с flash-памятью SST25vf010 по SPI-интерфейсу, программатора нет, а надо было прошить.
Сейчас собираюсь прошить Carduino код чтоб работать с lcd дисплеем от motorola c350, благо есть успешный опыт его подключения к мк от тов. Pashgan, что на chipenable.ru. На экранчик можно будет выводить, например, количество свободного места на роутере, загрузку проца роутера, или температуру за бортом.
Вобщем тема arduino интересная (http://www.arduino.cc/ тут народ много чего выделывает), arduino - автоматизация автомобиля.
Admin вне форума   Ответить с цитированием
 


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 10:25. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Яндекс.Метрика