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

Arduino уведомляет о новых письмах

После первого знакомства с Arduino и Hello-World-овского мигания светодиодом, хочется сдлеать какой-нибудь прикольный проект.
Например, уведомление (мигание лампочкой или поднятие флажка) о получении новой почты на ящик gmail.
Чтобы это реализовать требуется всего лишь:
— Плата Arduino – 1 шт.
— USB-кабель типа A-B для поключения Arduino к компьютеру – 1 шт.
— Светодиод – 1 шт.

Таким образом, задача выглядит следующим образом:
1. узнать, что на почте есть непрочитанные письма
2. сообщить об этом Arduino
3. Контроллер Arduino должен принять сообщение и, в зависимости от его содержания — выполнить заданное действие (помигать светодиодом).

Первая и вторая задача решаются написанием простой программы на любом удобном языке программирования.
Например, вот как это дело можно реализовать на C#:
По таймеру, каждые 10 секунд, программа проверяет состояние почтового ящика и если есть непрочитанные письма – то по COM-порту передается значение «1», а если новых писем нет — то «2».
Для общения программы на C# с Arduino, используется стандартный компонент SerialPort, а для соединения с почтовым ящиком gmail и поиска непрочитанных писем используется Mail.dll, которую можно найти на lesnikowski.com (DLL-ка отлично документирована, поэтому проблем с использованием возникнуть не должно).
Сам код:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Lesnikowski.Client.IMAP; //используем в пространстве имен типы из подключенной Mail.dll 
using Lesnikowski.Mail; 
using Lesnikowski.Mail.Headers;
using Lesnikowski.Mail.Headers.Constants;

namespace Arduino_Mail_Notification
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

         private void timer1_Tick(object sender, EventArgs e) //обработчик срабатывания таймера
         {
             using (Imap imap = new Imap())
             {
                 imap.ConnectSSL("imap.gmail.com"); //подключаемся к IMAP-серверу
                 imap.Login("полный_адрес_e-mail", "пароль"); //заходим под собой
                 imap.SelectInbox(); //заходим в папку со входящими письмами
                 List<long> uids = imap.SearchFlag(Flag.Unseen); //выбираем все непрочитанные письма

                 serialPort1.PortName = "COM15"; //задаем имя COM-порта, с которым работает Arduino
                 serialPort1.Open(); //открываем COM-порт

                 if (uids.Count > 0) //если есть непрочитанные письма
                     serialPort1.Write("1"); //посылаем плате Arduino значение "1"
                 else //в противном случае
                     serialPort1.Write("2"); //посылаем плате Arduino значение "2"
                     
                 serialPort1.Close(); //закрываем COM-порт
                 imap.Close(); //закрываем соединение с IMAP-сервером
             }
         }

      }
}

Осталось написать скетч для Arduino, который бы считывал команду с последовательно порта и в зависимости от содержания: «1»(есть письма) или «2» (нет писем), выполнял «физическое уведомление». Например, зажигал светодиод:
int ledPin=13; //Плюс нашего диода подключен к 13му выходу на плате
int ser=0; //В эту переменную получаем с программы на C# "1"(есть письма) или "2" (нет писем)

void setup() {
  pinMode(ledPin,OUTPUT); //13 вывод на плате определяем как выход
  Serial.begin(9600);//работаем с COM-портом на скорости 9600 бит/с
}

void loop () 
{
  ser = Serial.read();//читаем полученное значение
  if (ser == '1') //если это  1
  {
      digitalWrite(ledPin,HIGH); //зажигаем диод
  }
  if (ser =='2') //если 2
  {
      digitalWrite(ledPin, LOW);//диод выключаем
  }
}


А если ещё добавить, например, сервомашинку и немного оформить это дело, то может получиться что-то вроде этого:




А ещё

А ещё, можно сделать, чтобы ваш цветок напоминал о поливе через Twitter или собрать простенького робота, который будет сообщать о Twitter-сообщениях:
.
В общем, с ардуино главная проблема — это придумать идею или выбрать из готовых проектов ;)

автор проекта: imaksymenko
Полное авторское описание на хабре:
Уведомление о непрочитанном входящем письме с помощью Arduino

По теме:
Практическое программирование Arduino — программирование работы с COM-портом.
Arduino/CraftDuino и RSS
LiveStreet и Arduino/CraftDuino
Почему Arduino побеждает и почему он здесь, чтобы остаться?
Arduino как фреймворк
  • 0
  • 28 января 2012, 12:16
  • admin

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

RSS свернуть / развернуть
+
0
Вот если бы он без компьютера почту проверял…
avatar

snop

  • 29 января 2012, 03:04
+
0
да пусть с компом, но без С# от компа то можно езернет шилдом отвязаться потом
avatar

vworld

  • 30 января 2012, 08:51
+
0
Вот это было бы интереснее — способен ли arduino вообще справиться с этой задачей без компьютера.
avatar

snop

  • 30 января 2012, 20:32

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