Ардуино и wifi роутер

Ардуино и wifi роутер

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

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

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. делаем пассы руками над роутером:

эти хитрые строчки надо добавить в post-boot, незабыв апосля: flashfs save && flashfs commit && flashfs enable.
Теперь подключаем arduino. Выполняем:
lsusb
dmesg
Должны увидеть упоминания про FTDI FT232BM.
Значит все ок и роутер дал девайсу имя /dev/ttyUSB0.
2. Ставим 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, и пишем в него (или то же самое можно делать в скрипте):

Читайте также:  Маршрутизатор mikrotik hap lite classic rb941 2nd
>>> 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 — автоматизация автомобиля.

Продолжение про arduino+wl500gp. Проделана работа по подключению arduino к wl500gp и к lcd-экранчику от телефона motorola c350. Экранчик позволяет рисовать цветную графику.
Что из этого получилось см. на фото. Еще приатачен скрипт для python3. И проект к arduino.
LCD показывает температуру от датчика DS18B20. Роутер периодически отправляет в arduino строку с количеством свободного места на диске и загрузке процессора. Для этого на роутере крутится скрипт на python3 и отсылает команды в роутер используя формат Firmata.
Далее можете подключать к выводам arduino реле, лампочки, моторчики, датчики, RFM-радиомодули и т.п. и развлекаться с автоматизацией.
распиновка lcd

Нашел интересную статью, выкладываю перевод

UberFridge является доморощенный регулятор температуры брожения пива, который я построил из моего старого холодильника. Он работает на Arduino Nano и маршрутизаторе Asus WL520GU. Он может контролировать температуру брожения пива с точностью 0,1°C . Температуру графиков и настроек можно просматривать в веб-интерфейс по WiFi.

До сих пор мое пиво бродило в ведре на кухне. Поскольку пиво обычно бродит около 20° С, это нормально когда не жарко. Но прошлым летом мне пришлось остановить пивоварение на несколько месяцев, так как температура в доме поднялась до 26° C. Для того, чтобы варить круглый год и иметь больше контроля над температурой брожения я начал UberFridge проект. Краткий обзор возможностей, можно посмотреть на видео:

Характеристики
2 датчика температуры: один в брожения пива и один в холодильнике.
ПИД-регулятор пива температуры точностю 0,1° C
Интеллектуальный датчик включения-выключения контроль за температурой холодильника, чтобы держать в диапазоне -0.5 до +0.5 ° C .
Режимы работы: постоянная температура пива, постоянная температура холодильника или профиль температуры пива
4 × 20 символов OLED-дисплей
Запись данных через USB в формате JSON и CSV
Веб-интерфейс по WiFi
Графики пива и история температуры холодильника
Изменение режима работы и установки температуры
Температурный профиль в течении долгого времени может быть установлен в таблицы Google
Arduino можно перепрограммировать через веб-интерфейс

Читайте также:  Сменить пароль роутера zyxel keenetic lite 2

Связь между подсистемами
Самая большая проблема в создании моей бродильни в том, что она работает на самых разных уровнях, все с разными языками программирования. Я новичок в программировании на Python, PHP и JavaScript, так что я многому научился при создании этого проекта.

Arduino- алгоритм контроля температуры и интерфейс на холодильнике. (C ++)
Маршрутизатор- прошивка DD-WRT Linux с Optware с USB Flash 4GB . (Команды оболочки, в основном, выполняются на PHP)
Python скрипт, выполняет на маршрутизаторе переговоры с Arduino через USB-порт и общается с веб-сервером через AF_UNIX . Температура регистрируется в файлах формата JSON для веб-сервера и CSV файлов для архивирования. (Python с gviz_api и pyserial)
Маршрутизатор работает как веб-сервер Lighttpd для обеспечения веб-интерфейса, где можно рассматривать графики и настройки могут быть изменены. (PHP)
Интерфейс создан с JQuery UI и API визуализаций Google. Графики создаются на стороне клиента, путем объединения нескольких файлов JSON в одной графе. Температурный профиль может быть создан в таблицы Google и загружены в холодильник по нажатию кнопки. (JavaScript + AJAX запросы к PHP)

Зачем использовать Asus WL-500GU-маршрутизатор?
Чтобы раскрыть весь потенциал с открытым исходным кодом для маршрутизатора, вы можете установить DD-WRT и Optware. Это превращает роутер в WiFi + Линукс. Эта статья дает некоторые указания на действия, которые необходимо принять.
Зачем использовать Asus WL-500GU-маршрутизатор?
Asus WL-500GU маршрутизатор является одним из немногих DD-WRT подходящих маршрутизаторов, которые имеют порт USB. Это делает его отличным выбором для общения с Arduino. С концентратором USB подключенному к маршрутизатору можно подключить Arduino и USB Flash для хранения софта. Версия Asus WL-500GU имеет самую большую по обьему память, но Вы можете выбрать любой маршрутизатор Asus, и если вы хотите запустить памяти тяжелые скрипты Python то не забывайте про память.
Я купил свой маршрутизатор б/у за 15 евро, сравните эту стоимость с WiFi и MMC шилдом для Arduino за 50 долларов каждый.

Наличие маршрутизатора вместо шилда WiFi имеет много преимуществ:
-Маршрутизатор может работать как веб-сервер
-Много места для хранения (4 Гб), с файловой системой
-Доступ к файлам через SSH
-Маршрутизатор может быть WiFi клиентом в домашней сети или точкой доступа в отсутствие других сетей.

Читайте также:  Узнать номер симки роутера мегафон

Установка DD-WRT на маршрутизаторе
Для установки DD-WRT на маршрутизаторе, чтобы раскрыть его потенциал, следуйте за этим руководством по DD-WRT вики . Я запускаю DD-WRT v24-sp2 (05/17/11) mini-USB, FTP ( SVN пересмотра 17084M NEWD Эко). Он упал в несколько раз, но пока стабильный. Я не знаю, является ли это лучшим выбором или нет?
Сначала я следовал этому руководству по TodBot начал с DD-WRT и Arduino, но только до момента установки драйверов. Я не использую JFFS, потому что я использую USB Flash, а не во внутренней памяти маршрутизатора. Я также не использоваю прокси ser2net чтобы напрямую общаться с Arduino, но я запрашиваю JavaScript PHP что бы спросить Python и чтобы поговорить с Arduino.
Мне потребовалось время, чтобы найти работающие драйверы, поэтому я их выкладываю здесь для вашего удобства.
Я не делал заметки во время установки DD-WRT, поэтому, пожалуйста, используйте инструкцию для помощи.

Установка Optware
Optware превращает ваш маршрутизатор в полнофункциональный Linux, и даже больше возможностей, чем в DD-WRT. Он поставляется со стандартным веб-сервер Lighttpd, автоматическая установка для хранения USB и многое другое.
Потому что она поставляется с менеджером пакетов очень проста в установке питона, pyserial, а все остальное мы узнаем позже. Просто для удовольствия я даже установил Irssi, клиента IRC, чтобы я мог общаться с моим холодильником. Работал очень хорошо на самом деле!
До сих пор самый простой способ установить Optware является Optware, правильный путь к Брату. Для этого мне потребовалось некоторое время, чтобы выяснить:

Эта команда отключает уведомление, что приводит к ошибкам при Wget пытаясь загрузить исходник для Optware. Запустите его, прежде чем будете пытаться установить. Я добавил его к моей команде запуска в DD-WRT веб-интерфейс (administration->commands). Я также загрузил драйвера USB Serial в код запуска, так что мой код запуска выглядит так:

echo 0 >/proc/sys/net/ipv4/tcp_ecn
insmod /opt/serialdrivers/usbserial.o
insmod /opt/serialdrivers/ftdi_sio.o
insmod /opt/serialdrivers/acm.o

Я использовал GParted Live CD, чтобы создать необходимые разделы на USB Flash. Я использую 2 Гб раздел Optware, 512 Мб своп и 1,5 ГБ для данных.
После установки Optware, отключить все услуги, которые Вам не нужны, так как для скрипта на Python будет нужно много памяти. Только сервисы я запустил автомонтирование, reloc_syslog, Lighttpd и fixtables.
Наконец установил программы, необходимые для UberFridge с ipkg-OPT

Источник

Оцените статью
Adblock
detector