LiveStreet и Arduino/CraftDuino

Сидел я дома и думал о блогах, LiveStreet и вдруг решил научить вести блог свою плату
CraftDuino — это полностью Arduino-совместимая плата, удобная для быстрого прототипирования и прочих интересных и увлекательных вещей :)
Если Вы никогда не слышали об Arduino — прошу в
или прочитайте любую из статей:
Научить Arduino/CraftDuino вести свои заметки не составило большого труда, но я уже не смог остановиться и написал
Вот как это работает:

плата Arduino/CraftDuino подключается к ПК через USB-шнурок.
На ПК работает скрипт на питоне (lsarduino.py), который через определённые промежутки времени опрашивает плату и высылает данные в БД сайта.
POST-запрос на -=сайт=-/include/ajax/lsarduino_add_note.php
Плата может возвращать всё что угодно —
На стороне сайта так же можно добавить задания для платы, которые потом выгружаются в виде xml-ки.
xml-ка генерируется по адресу -=сайт=-/lsarduino/actions
вида
<?xml version="1.0" encoding="utf-8"?>
<actions>
<action>
<id>14</id>
<userid>1</userid>
<todo>1</todo>
<todotext>test</todotext>
<tododate>2009-11-10 11:37:42</tododate>
<todostatus>1</todostatus>
</action>
</actions>
xml загружается питоновским скриптом на ПК, парсится и через USB-шнурок задания передаются на плату, которая их выполняет.
В примере модуля — плата просто зажигает и гасит светодиод, но через соответствующую развязку может управлять
В данной версии задание — это число от 1 до 9
в примере:
1 — зажечь светодиод
2 — погасить светодиод
для работы из-под питона с последовательным портом потребуется библиотека
для работы pySerial под ОС Windows понадобится ещё библиотека
у меня всё прекрасно работало на Python 2.5.1 :)
в скрипте нужно настроить номер COM-порта Вашей платы:
SERIAL_PORT = 'COM18'
адрес сайта для работы, логин и пароль учётной записи
USER_LS_SITE_NOTE = 'http://ВАШСАЙТ.ru/include/ajax/lsarduino_add_note.php'
USER_LS_SITE_ACTION = 'http://ВАШСАЙТ.ru/include/ajax/lsarduino_set_status.php'
XML_TODO = 'http://ВАШСАЙТ.ru/lsarduino/actions'
USER_LOGIN = 'ВАШ_ЛОГИН'
USER_PASS = 'ВАШ_ПАРОЛЬ'
что делает lsarduino.py:
смотрим main() и видим там только бесконечный цикл, в котором
сначала получаются данные от платы
— для этого ей посылается байт «0» на что плата может вернуть данные или просто сказать «Hello :)»
, а затем считывается xml-ка с заданиями для платы
Получив задание, скрипт изменяет его статус на сайте с «Новый» на «Загружен» и записывает это число в COM-порт.
Ардуина считывает число с порта и в операторе
switch( r )
{
case 0:
Serial.println("Hello :)");
break;
case 1:
digitalWrite(ledPin, HIGH); // sets the LED on
Serial.println("3");
break;
case 2:
digitalWrite(ledPin, LOW); // sets the LED off
Serial.println("3");
break;
default:
Serial.println("4");
break;
}
производит необходимые действия.
Как видите, ардуина так же отвечает в COM-порт о выполнении задания «3» — «Выполнен»
Питоновский скрипт считывает ответ от платы и записывает его в статус задания на сайте
варианты статуса задания:
('1', 'Новый'),
('2', 'Загружен'),
('3', 'Выполнен'),
('4', 'Отклонён'),
('5', 'Не выполнен'),
('6', 'Отменён');
Вот и всё :)
Примечания:
! Обратите внимание: при работе на плате должен быть снят джампер автосброса (AutoReset), чтобы плата не перегружалась каждый раз при открытии COM-порта!
Для большей надёжности – лучше не использовать в питоновском скрипте бесконечный цикл – лучше просто прописать вызов соответствующих функций и периодически вызывать скрипт через cron или планировщик задач (или nncron).
Для этого в архиве есть файл lsarduino-nocycle.py
сообщения и задания прошлых недель удаляются из базы, но если Вы хотите их оставить — просто закомментируйте строчки:
$this->DeleteOldNotes();
$this->DeleteOldTodo();
в конце функции CreateTables()
файла classes\modules\lsarduino\mapper\LsArduino.mapper.class.php
Как теперь можно развить эту идею? Да как угодно – взять за основу этот модуль или сделать свой модуль для того же wordpress-а и дать возможность вашему дому, цветку, коту, etc. Вести свой блог вместе с Вами!
PS кого заинтересовала разработка под Arduino – вот список материалов:
И на закуску: Ардуина и
13 комментариев
Тоже интересно было бы повозиться с ардуино, жаль у нас не продают, да и дорого :(
собственно
А со следующей зарплаты пожалуй закажу у вас плату крафтдуино. Не вкурсе, сколько кстати пересылка на 1000км будет стоить?
Идея классная, реализация тоже. Хотя
тут больше подойдет live streaming (типа Твиттера).
В общем как-бы детектор лжи.