<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Blog &#187; плата</title>
	<atom:link href="http://karta39.ru/blog/tag/%d0%bf%d0%bb%d0%b0%d1%82%d0%b0/feed/" rel="self" type="application/rss+xml" />
	<link>http://karta39.ru/blog</link>
	<description>Разные мысли и идеи :)</description>
	<lastBuildDate>Tue, 21 Feb 2012 08:02:27 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>LiveStreet и Arduino/CraftDuino</title>
		<link>http://karta39.ru/blog/2010/01/23/livestreet-arduino-craftduino/</link>
		<comments>http://karta39.ru/blog/2010/01/23/livestreet-arduino-craftduino/#comments</comments>
		<pubDate>Sat, 23 Jan 2010 08:47:04 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[идеи]]></category>
		<category><![CDATA[разработка]]></category>
		<category><![CDATA[Arduino]]></category>
		<category><![CDATA[CraftDuino]]></category>
		<category><![CDATA[livestreet]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[блог]]></category>
		<category><![CDATA[идея]]></category>
		<category><![CDATA[модуль]]></category>
		<category><![CDATA[плата]]></category>
		<category><![CDATA[управлять]]></category>

		<guid isPermaLink="false">http://karta39.ru/blog/?p=465</guid>
		<description><![CDATA[
Здесь я уже писал, как ардуина может читать RSS-ленту. Используя тот же принцип можно сделать следующий шаг и научить ардуину вести свой блог 

Научить Arduino/CraftDuino вести свои заметки не составило большого труда, но я уже не смог остановиться и написал небольшой модуль для LiveStreet, который не только сохраняет данные от Arduino/CraftDuino, но и позволяет через [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://idea2.ru/files/lsarduino/DSC01297-.jpg"/><br />
<a href="http://robocraft.ru/blog/arduino/104.html">Здесь</a> я уже писал, как ардуина может читать RSS-ленту. Используя тот же принцип можно сделать следующий шаг и научить ардуину вести свой блог <img src='http://karta39.ru/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /><br />
<span id="more-465"></span><br />
Научить Arduino/CraftDuino вести свои заметки не составило большого труда, но я уже не смог остановиться и написал <a href="http://idea2.ru/files/lsarduino/lsarduino.zip">небольшой модуль</a> для LiveStreet, который не только сохраняет данные от Arduino/CraftDuino, но и позволяет через сайт управлять своей платой <img src='http://karta39.ru/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
<cut></p>
<p>Вот как это работает:<br />
<img src="http://idea2.ru/files/lsarduino/1-.png"/><br />
плата Arduino/CraftDuino подключается к ПК через USB-шнурок.<br />
На ПК работает скрипт на питоне (lsarduino.py), который через определённые промежутки времени опрашивает плату и высылает данные в БД сайта.<br />
POST-запрос на -=сайт=-/include/ajax/lsarduino_add_note.php</p>
<p>Плата может возвращать всё что угодно &#8211; <a href="http://www.robocraft.ru/blog/projects/26.html">влажность</a> земли в горшке с цветком, освещённость вашей комнаты, температуру воды в аквариуме&#8230; нафантазировать можно всё что угодно <img src='http://karta39.ru/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>На стороне сайта так же можно добавить задания для платы, которые потом выгружаются в виде xml-ки.<br />
xml-ка генерируется по адресу -=сайт=-/lsarduino/actions<br />
вида<br />
<code><?xml version="1.0" encoding="utf-8"?><br />
<actions><br />
	<action><br />
		<id>14</id><br />
		<userid>1</userid><br />
		<todo>1</todo><br />
		<todotext>test</todotext><br />
		<tododate>2009-11-10 11:37:42</tododate><br />
		<todostatus>1</todostatus><br />
	</action><br />
</actions></code></p>
<p>xml загружается питоновским скриптом на ПК, парсится и через USB-шнурок задания передаются на плату, которая их выполняет.</p>
<p>В примере модуля &#8211; плата просто зажигает и гасит светодиод, но через соответствующую развязку может управлять <a href="http://ukrduino.blogspot.com">кофейником</a>, светом, моторчиком робота&#8230; опять же &#8211; фантазиям предела нет <img src='http://karta39.ru/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  </p>
<p>В данной версии задание &#8211; это число от 1 до 9<br />
в примере:<br />
	1 &#8211; зажечь светодиод<br />
	2 &#8211; погасить светодиод</p>
<p>для работы из-под питона с последовательным портом потребуется библиотека<br />
<a href="http://pyserial.sourceforge.net">pySerial</a></p>
<p>для работы pySerial под ОС Windows понадобится ещё библиотека<br />
<a href="http://starship.python.net/crew/mhammond/win32/Downloads.html">pyWin32</a> </p>
<p>у меня всё прекрасно работало на Python 2.5.1 <img src='http://karta39.ru/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>в скрипте нужно настроить номер COM-порта Вашей платы:<br />
SERIAL_PORT = &#8216;COM18&#8242;</p>
<p>адрес сайта для работы, логин и пароль учётной записи<br />
USER_LS_SITE_NOTE = &#8216;http://ВАШСАЙТ.ru/include/ajax/lsarduino_add_note.php&#8217;<br />
USER_LS_SITE_ACTION = &#8216;http://ВАШСАЙТ.ru/include/ajax/lsarduino_set_status.php&#8217;<br />
XML_TODO = &#8216;http://ВАШСАЙТ.ru/lsarduino/actions&#8217;<br />
USER_LOGIN = &#8216;ВАШ_ЛОГИН&#8217;<br />
USER_PASS = &#8216;ВАШ_ПАРОЛЬ&#8217;</p>
<p>что делает lsarduino.py:<br />
смотрим main() и видим там только бесконечный цикл, в котором</p>
<p>сначала получаются данные от платы<br />
- для этого ей посылается байт &laquo;0&#8243; на что плата может вернуть данные или просто сказать &laquo;Hello <img src='http://karta39.ru/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> &raquo;</p>
<p>, а затем считывается xml-ка с заданиями для платы<br />
Получив задание, скрипт изменяет его статус на сайте с &laquo;Новый&raquo; на &laquo;Загружен&raquo; и записывает это число в COM-порт.<br />
Ардуина считывает число с порта и в операторе<br />
<code>switch( r )<br />
    {<br />
      case 0:<br />
        Serial.println("Hello <img src='http://karta39.ru/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> ");<br />
        break;<br />
      case 1:<br />
        digitalWrite(ledPin, HIGH);   // sets the LED on<br />
        Serial.println("3");<br />
      break;<br />
      case 2:<br />
         digitalWrite(ledPin, LOW);    // sets the LED off<br />
        Serial.println("3");<br />
      break;<br />
      default:<br />
        Serial.println("4");<br />
      break;<br />
    }</code><br />
производит необходимые действия.<br />
Как видите, ардуина так же отвечает в COM-порт о выполнении задания &laquo;3&#8243; &#8211; &laquo;Выполнен&raquo;<br />
Питоновский скрипт считывает ответ от платы и записывает его в статус задания на сайте</p>
<p>варианты статуса задания:<br />
	(&#8216;1&#8242;, &#8216;Новый&#8217;),<br />
	(&#8216;2&#8242;, &#8216;Загружен&#8217;),<br />
	(&#8216;3&#8242;, &#8216;Выполнен&#8217;),<br />
	(&#8216;4&#8242;, &#8216;Отклонён&#8217;),<br />
	(&#8216;5&#8242;, &#8216;Не выполнен&#8217;),<br />
	(&#8216;6&#8242;, &#8216;Отменён&#8217;);</p>
<p>Вот и всё <img src='http://karta39.ru/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><a href="http://idea2.ru/files/lsarduino/lsarduino.zip">Скачать модуль</a>. (распространяется бесплатно при условии сохранения копирайтов <img src='http://karta39.ru/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><u>Примечания:</u></p>
<p>! Обратите внимание: при работе на плате должен быть снят джампер автосброса (AutoReset), чтобы плата не перегружалась каждый раз при открытии COM-порта !</p>
<p>Для большей надёжности – лучше не использовать в питоновском  скрипте бесконечный цикл – лучше просто прописать вызов соответствующих функций и периодически вызывать скрипт через cron или планировщик задач (или nncron).<br />
Для этого в архиве есть файл lsarduino-nocycle.py</p>
<p>сообщения и задания прошлых недель удаляются из базы, но если Вы хотите их оставить &#8211; просто закомментируйте строчки:</p>
<p><code>$this->DeleteOldNotes();<br />
$this->DeleteOldTodo();</code><br />
в конце функции CreateTables()<br />
файла classes\modules\lsarduino\mapper\LsArduino.mapper.class.php</p>
<p>Как теперь можно развить эту идею?  Да как угодно – взять за основу этот модуль или сделать свой модуль для того же wordpress-а и дать возможность вашему дому, цветку, коту, etc. Вести свой блог вместе с Вами!</p>
<script type="text/javascript" src="http://odnaknopka.ru/wp/ok2.utf8.js"></script><script type="text/javascript">okbm("http://karta39.ru/blog/2010/01/23/livestreet-arduino-craftduino/","LiveStreet и Arduino/CraftDuino")</script>]]></content:encoded>
			<wfw:commentRss>http://karta39.ru/blog/2010/01/23/livestreet-arduino-craftduino/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic Page Served (once) in 0.341 seconds -->

