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. Вести свой блог вместе с Вами!

Ссылки
http://arduino.cc/en/Tutorial/WebServer
http://code.google.com/p/webduino/

По теме
Ардуино что это и зачем?
Arduino, термины, начало работы
Состав стартера (точка входа для начинающих ардуинщиков)
Возможные ошибки при работе с Arduino

Купить Arduino или CraftDuino — можно в нашем Магазине.


0 комментариев на «“LiveStreet и Arduino/CraftDuino”»

  1. для программиста в принципе ничего сложного,
    одно только пока не понятно — если у компа не статичный IP, то как к нему обратиться из интернета?

    • В данном случае, сам ПК (скрипт на питоне) инициализирует обмен данными. Так что его IP значения не имеет 😉

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

Arduino

Что такое Arduino?
Зачем мне Arduino?
Начало работы с Arduino
Для начинающих ардуинщиков
Радиодетали (точка входа для начинающих ардуинщиков)
Первые шаги с Arduino

Разделы

  1. Преимуществ нет, за исключением читабельности: тип bool обычно имеет размер 1 байт, как и uint8_t. Думаю, компилятор в обоих случаях…

  2. Добрый день! Я недавно начал изучать программирование под STM32 и ваши уроки просто бесценны! Хотел узнать зачем использовать переменную типа…

3D-печать AI Android Arduino Bluetooth CraftDuino DIY IDE iRobot Kinect LEGO OpenCV Open Source Python Raspberry Pi RoboCraft ROS swarm ИК автоматизация андроид балансировать бионика версия видео военный датчик дрон интерфейс камера кибервесна манипулятор машинное обучение наше нейронная сеть подводный пылесос работа распознавание робот робототехника светодиод сервомашинка собака управление ходить шаг за шагом шаговый двигатель шилд юмор

OpenCV
Робототехника
Будущее за бионическими роботами?
Нейронная сеть - введение