CraftDuino v2.0
  • - это CraftDuino - наш вариант полностью Arduino-совместимой платы.
  • CraftDuino - настоящий конструктор, для очень быстрого прототипирования и реализации идей.
  • Любая возможность автоматизировать что-то с лёгкостью реализуется с CraftDuino!
Просто добавьте CraftDuino!

Arduino/CraftDuino и RSS

Ардуино с лёгкостью может соединить ваш сайт в Интернете и реальный мир!
Представляете какой простор для фантазии?

В принципе, здесь уже нет ничего незнакомого.
Задача крайне простая.
Работать с Интернетом будет программа на ПК, которую можно написать на любом языке программирования. Ардуина же будет подключена к ПК через USB-ный шнурок (или COM-ский в случае Serial-платы) и слушать, что будет говорить ей программа, работающая на ПК.

Для примера напишем скрипт на питоне, который получает RSS-поток с главной страницы Хабра и ищет в названии новости ключевое слово и если его находит – выдаёт это слово в СОМ-порт для Arduino.


Для работы с RSS используем библиотеку feedparser.
Для работы из-под питона с последовательным портом потребуется библиотека
pySerial
для работы pySerial под ОС Windows понадобится ещё библиотека
pyWin32


#!/usr/local/bin/python
# -*- coding: utf-8 -*-
#
#

import sys
import os

#
# для задержки
import time

#
# для работы с RSS используем библиотеку feedparser
# http://www.feedparser.org
#
import feedparser

#
# для работы с COM-портом нужна библиотека
# pySerial, кроме того, под винду понадобится еще pyWin32
#
import serial
SERIAL_PORT = 'COM1'
SERIAL_SPEED = 9600

#
# для поиска подстроки в строке
#
import string
import re
from operator import truth

#
# слово для поиска
word = "Google"
#
# RSS для загрузки
rss = "http://habrahabr.ru/rss"

def parse_word_in_habr_rss():

    d = feedparser.parse(rss)

    #print d.feed.title
    l = len(d.entries)
    for i in range(l):
        e = d.entries[i]
        title = d['items'][i].title
        if check4me(word,title):
            print "[!] We get it: "+word
            print title
            print e.links[0].href
            talk_to_com()

    return None

#
# возвращает true, если str1 содержится в str2
#
def check4me(str1,str2):
        s=str1.lower()+"+"
        s2=str2.lower()
        #print s,s2
        return truth(re.search(s, s2))

#
# отправляем слово в COM-порт
#
def talk_to_com():
     ser = serial.Serial(SERIAL_PORT, SERIAL_SPEED)
     ser.write(word)

#-----------------------------------------
#
# begin here :)
#

def main():
    print "[i] Start..."

    while 1:
        parse_word_in_habr_rss()
        time.sleep(10)

    print "[i] done."
    return None

if __name__ == "__main__":
    main()


Вот и вся программа.
Номер и скорость работы с СОМ-портом задаются в строчках
SERIAL_PORT = 'COM1'
SERIAL_SPEED = 9600


Ключевое слово и адрес RSS задаются переменными
#
# слово для поиска
word = "Google"
#
# RSS для загрузки
rss = "http://habrahabr.ru/rss"


При запуске данного файла – выполнится функция main() в которой в бесконечном цикле через каждые 10 секунд вызывается функция parse_word_in_habr_rss()
, которая загружает RSS-поток и пробегается по новостям и с помощью функции check4me проверяет, содержится ли в названии новости ключевое слово.
Если содержится вызывается функция talk_to_com(), открывающая порт и записывающая в него ключевое слово.

Далее уже всё зависит от вашей фантазии :) Ардуина, получив данные может их проверить, а затем просто помигать светодиодом, пропищать пьезоэлементом или порулить сервомоторчиком. Или всё сразу :)

Ссылки:
www.feedparser.org
  • +1
  • 10 ноября 2009, 18:27
  • admin

Комментарии (1)

RSS свернуть / развернуть

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.