LiveStreet и Arduino/CraftDuino



Здесь я уже писал, как ардуина может читать RSS-ленту. Используя тот же принцип можно сделать следующий шаг и научить ардуину вести свой блог 😉

Научить Arduino/CraftDuino вести свои заметки не составило большого труда, но я уже не смог остановиться и написал небольшой модуль для LiveStreet, который не только сохраняет данные от Arduino/CraftDuino, но и позволяет через сайт управлять своей платой 🙂

Вот как это работает:

плата Arduino/CraftDuino подключается к ПК через USB-шнурок.
На ПК работает скрипт на питоне (lsarduino.py), который через определённые промежутки времени опрашивает плату и высылает данные в БД сайта.
POST-запрос на -=сайт=-/include/ajax/lsarduino_add_note.php

Плата может возвращать всё что угодно — влажность земли в горшке с цветком, освещённость вашей комнаты, температуру воды в аквариуме… нафантазировать можно всё что угодно 🙂

На стороне сайта так же можно добавить задания для платы, которые потом выгружаются в виде xml-ки.
xml-ка генерируется по адресу -=сайт=-/lsarduino/actions
вида



14
1
1
test
2009-11-10 11:37:42
1

xml загружается питоновским скриптом на ПК, парсится и через USB-шнурок задания передаются на плату, которая их выполняет.

В примере модуля — плата просто зажигает и гасит светодиод, но через соответствующую развязку может управлять кофейником, светом, моторчиком робота… опять же — фантазиям предела нет 🙂

В данной версии задание — это число от 1 до 9
в примере:
1 — зажечь светодиод
2 — погасить светодиод

для работы из-под питона с последовательным портом потребуется библиотека
pySerial

для работы pySerial под ОС Windows понадобится ещё библиотека
pyWin32

у меня всё прекрасно работало на 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. Вести свой блог вместе с Вами!


Добавить комментарий

Makeblock
  1. ок. Суть программы «один» — обработка статического изображения с применением специального фильтра, на выходе имеем обработанную картинку. Суть программы «два»…

  2. разумеется — реализация другая, но суть та же 🙂 можно реализовать Генератор и для фильма. используем считывание видео (OpenCV шаг…

  3. как это та же??? Тут рассматривается по сути своей просто фильтр для обработки картинок, а там механизм в который загружаешь…

  4. а вот теперь действительно генератор комиксов soft.compulenta.ru/666850/ Странички формируются на основании видеофильмов. программа анализирует видеофрагмент, идентифицирует говорящего героя, формирует панели…

2.0 2в1 3D AR Arduino DIY iPhone Дополненная реальность ИИ автоматизация бизнес будущее велосипед видео вопрос генератор датчик дизайн игра идея интернет интерфейс камера карта книга концепт лампа магазин магнит маркетинг машинное обучение микро-идея музыка поиск проект растение реклама рисунок робот робототехника сайт светодиод сервис сервомашинка стартап стимпанк тренд управление часы электричество