MyTetra Share
Делитесь знаниями!
О, смотри-ка какое хорошее место. Дайте два!
Как мигнуть светодиодом в Arduino через USB с помощью Питона
05.12.2010
16:00
Раздел: Компьютер - Аппаратное обеспечение - Arduino

Индикация о новом сообщении Gmail через Arduino

Неделю назад получил бандероль с Freeduino 2009 — полный аналог Arduino Duemilanove.

Хочу показать простенький пример. В данном примере Arduino будет Вас информировать о новых сообщениях на Gmail. Так как, пока не приобрел LCD дисплей, в качестве индикации будет моргать светодиод.

Приложение состоит из 2-х частей. Первая часть на ПК — скрипт на Python, который с помощью cron запускается каждые n минут, проверяет сообщения и отправляет количество непрочитанных писем по последовательному порту в Arduino. Вторая часть на Arduino — скейтч, который проверяет значение отправляемое с ПК и если писем больше нуля то начинает моргать светодиод.

Схема подключения светодиода:

Скрипт на Python, для работы требуется библиотека PySerial:

import urllib, re, serial

gml = ''

username = "***"

password = "***"

adr = "https://"+username+":"+password+"@mail.google.com/mail/feed/atom"

cont = urllib.urlopen(adr)

s = cont.read()

reg = re.compile(r"<fullcount>\d+</fullcount>")

gmlcnt = reg.search(s).group()

reg2 = re.compile(r"\d+")

gml = reg2.search(gmlcnt).group()

ser = serial.Serial('/dev/ttyUSB0', 9600)

ser.write(gml)

ser.close()

Скетч для Arduino:

int ledPin = 13;

int mail = 0;

int i = 0;

void setup(){

Serial.begin(9600);

pinMode(ledPin, OUTPUT);

}

void led_blink(){

if (i == 1){

digitalWrite(ledPin, HIGH);

delay(500);

digitalWrite(ledPin, LOW);

delay(1000);

}

delay(1000);

}

void loop(){

if (Serial.available() > 0){

mail = Serial.read();

if (char(mail) != '0'){

i = 1;

}

else{

i = 0;

digitalWrite(ledPin, LOW);

}

}

led_blink();

}

В crontab прописываете путь до скрипта и интервал между запусками. В Arduino заливаете скейтч и наслаждаетесь миганию светодиода при получении новых сообщений.

← Содержание ...
 
MyTetra Share v.0.35
Яндекс индекс цитирования