Elektroda.pl
Elektroda.pl
X
PCBway
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

MiniEmail - niezależny, mikroprocesorowy klient poczty e-mail

Kubald 05 Mar 2013 21:57 11172 2
  • MiniEmail - niezależny, mikroprocesorowy klient poczty e-mail

    Stworzony przez Alexandra Manna i opublikowany w serwisie Circuit Cellar system MiniEmail jest niezależnym, mikroprocesorowym klientem poczty e-mail. Jest cichy, łatwy w użyciu, energooszczędny – i co najważniejsze – odporny na robaki rozsyłane mailami. Kolejną zaletą jest też krótki czas uruchomienia – więc jeśli chcemy szybko napisać maila, a komputer jest akurat wyłączony, można po prostu uruchomić MiniEmaila połączonego z siecią Ethernet i od razu przystąpić do pisania, nie czekając, aż komputer się uruchomi.

    Układy do budowy systemu MiniEmail są relatywnie niedrogie – koszt budowy swojego egzemplarza autor wycenił na $50. Najdroższym podzespołem jest oczywiście wyświetlacz LCD. Schemat blokowy urządzenia można zobaczyć poniżej – nie zostały na nim uwzględnione obwody zasilania, konwertera napięć 5/3,3V, kwarcu i zatrzasków. Strzałki wskazują kierunek przekazywania danych. Urządzenia ujęte w zaokrąglone ramki nie są montowane bezpośrednio na płytce drukowanej.

    MiniEmail - niezależny, mikroprocesorowy klient poczty e-mail

    Głównymi elementami systemu są procesor Atmel ATMega32 i kontroler Ethernetu ENC28J60. Ponieważ cały system to również sporo kodu dla procesora, wymagany był szybki mikrokontroler z odpowiednio dużą pamięcią programu. Urządzenie wykorzystuje prawie wszystkie peryferia ATMegi32, jak interfejs SPI, wewnętrzne pamięci EEPROM i SRAM, liczniki, interfejs szeregowy USART, tryb uśpienia, wszystkie 32 porty we/wy i prawie całe 32 KB pamięci programu. Kość ENC28J60 jest niezależnym, scalonym układem pozwalającym na transmitowanie ramek danych przez sieć Ethernet. Posiada 8 KB wbudowanej pamięci SRAM, która może być dowolnie rozdzielona na bufor dla danych wychodzących i przychodzących i jest zdolny do generowania kilku różnych przerwań (np. kiedy odebrany zostanie nowy pakiet). Sam procesor ATMega32 posiada 128 KB pamięci SRAM. W układzie zastosowano wyświetlacz graficzny o rozdzielczości 128x64 piksele.

    Na poniższym rysunku można zobaczyć schemat całości. Porty A i C mikroprocesora są wykorzystane jako dwie, ośmiobitowe szyny danych, z których jedna jest przyłączona do zatrzasku 74HC573.

    MiniEmail - niezależny, mikroprocesorowy klient poczty e-mail

    Porty wykorzystane są również do sterowania wyświetlaczem LCD i pamięcią SRAM (U3). Dodatkowo, pamięć SRAM potrzebuje podania sygnałów zapisu (*RAM_WR), odczytu (*RAM_RD) i wymaga użycia 17-bitowej szyny adresowej (ADDR16). Do złącza wyświetlacza (CON1) dodatkowo doprowadzone są sygnały CS1, CS2, DI, EN i RW. Sygnały CS1 i CS2 doprowadzone są z portu A mikroprocesora (DATA6 i DATA7) i pozwalają, która połówka wyświetlacza zostaje uaktywniona (dokładniej, do którego kontrolera LCD przesyłane będą dane). Sygnał RW wskazuje na kierunek przesyłu danych (odczyt z wyświetlacza/zapis do kontrolera LCD). DI określa typ instrukcji wysyłanej do LCD. EN jest sygnałem uaktywniającym możliwość odczytu/zapisu do wyświetlacza. Zewnętrzna klawiatura wymaga podłączenia tylko dwu sygnałów: KEY_DATA i KEY_CLOCK. Sygnał zegarowy musi być przyłączony do wyprowadzenia mikrokontrolera generującego przerwanie, INT1. Jeszcze jedno, dodatkowe wyprowadzenie mikrokontrolera steruje zatrzaskiem (LE).

    Do portów B i D procesora podłączony jest m.in. układ MAX232, konwerter poziomów dla interfejsu RS-232, który także dostarcza ujemnego napięcia dla zasilania wyświetlacza LCD. Interfejs szeregowy używany jest tylko do debugowania, w trakcie normalnej pracy nie jest wykorzystywany.

    Oprogramowanie zostało napisane w języku C i jest dostępne na serwerze FTP Circuit Cellar. Fragmenty programu napisane są również w assemblerze.

    Interfejs użytkownika wykorzystuje trzy elementy: menu, pola edytowalne i edytor tekstu. Dodatkowo, specjalnie przygotowany ekran (Mail Menu) pozwala szybko przeglądać zawartość skrzynki pocztowej. Po włączeniu zasilania i wyświetleniu wiadomości powitalnej na ekranie pojawia się menu główne (poniżej; w prawym górnym rogu wyświetlany jest czas, pobrany z Internetu. Strzałka wskazuje aktualnie wybraną pozycję menu).

    MiniEmail - niezależny, mikroprocesorowy klient poczty e-mail

    Wysyłanie e-maili jest o wiele prostsze, niż ich odbieranie. Do tego służy funkcja „Compose mail” z menu głównego. Jej wybranie spowoduje uruchomienie edytora tekstu, pozwalającego wpisać treść e-maila. Następnie można podać adres odbiorcy i treść wiadomości. Dodatkowe pola, jak CC i BCC, nie zostały uwzględnione – ale ponieważ dane te stanowią tylko dodatkową linijkę w nagłówku wiadomości, można łatwo zmodyfikować kod źródłowy, aby je dodać. Niezbędne jest także podanie adresu zwrotnego. Tekst wpisywanej wiadomości przechowywany jest w pamięci EEPROM mikrokontrolera. Wybranie opcji „Send” z menu powoduje podjęcie próby wysłania wiadomości i zwraca informację, czy próba ta powiodła się, czy nie.

    Sprawdzanie wiadomości jest o wiele bardziej skomplikowane, gdyż dotyczy najczęściej nie jednego, a kilku e-maili. System potrafi określić, które z wiadomości przechowywanych na serwerze pocztowym są nowe, a które zostały już przeczytane. Program procesora także odpowiada za wyodrębnienie z nagłówka wiadomości nadawcy e-maila, odbiorcy oraz daty wysłania i wyświetla je na wyświetlaczu LCD.

    Maksymalna ilość wiadomości ograniczona jest wielkością pamięci SRAM i w prezentowany rozwiązaniu wynosi 1024 – jest to liczba niepowtarzalnych wskaźników wiadomości w systemie. Serwer nadaje taki wskaźnik każdej wiadomości, a system używa ich do rozpoznania nowych/przeczytanych wiadomości oraz e-maili przeznaczonych do usunięcia. Nie wszystkie 1024 wskaźniki przechowywane są na raz w pamięci, system przechowuje dane dotyczące 50 wiadomości i pobiera nowe w razie potrzeby.

    Po wybraniu opcji sprawdzenia skrzynki pocztowej na wyświetlaczu pojawia się lista wiadomości, gdzie, oprócz daty i wielkości wiadomości, wyświetlane są 42 pierwsze znaki tematu. Dodatkowo wykorzystane są ikony symbolizujące, czy wiadomość jest nowa, czy przeczytana. Po wybraniu wiadomości i wciśnięciu klawisza „Enter” z serwera pobierana jest treść wiadomości, usuwane są dane nie przeznaczone do wyświetlenia (nagłówek, tagi HTML), przeprowadzane jest dekodowanie Base64 i wiadomość wyświetlana jest jako czysty tekst. System nie obsługuje załączników do e-maili (np. zdjęć).

    Projekt pokazuje, że para ATMega32 i ENC28J60 są bardzo mocnym połączeniem i mogą stanowić bazę wielu ciekawych, łączących się z Internetem, urządzeń. Autor rozbudował swój system MiniEmail np. o możliwość rejestrowania temperatury i sprawdzania jej przez Internet z dowolnego miejsca na świecie.

    Więcej szczegółów dotyczących obsługi urządzenia i dostęp do artykułu w formie pdf znaleźć można na stronie źródłowej.

    Fajne! Ranking DIY
    Potrafisz napisać podobny artykuł? Wyślij do mnie a otrzymasz kartę SD 64GB.
    O autorze
    Kubald
    Poziom 15  
    Offline 
    Specjalizuje się w: spektroskopia exafs/xanes, uc, it
    Kubald napisał 192 postów o ocenie 60, pomógł 0 razy. Mieszka w mieście Kraków. Jest z nami od 2004 roku.
  • PCBway
  • #2
    maxxim
    Poziom 15  
    Raczej ciekawostka niż praktyczne urządzenie ! Mam telefon Samsung działający w domu po wifi .Mały pobór prądu automatycznie sprawdza pocztę , no i skype jest włączony przez cały dzień .
  • PCBway
  • #3
    bombi
    Poziom 12  
    Masz rację w 100% procentach... Ale szacun za robotę... Można też kupić radyjko od chinoli za 10zł albo zrobić samemu za 50zł. Albo rusek zrobił symulator ARM na AVR z odpalonym Linux. Sztuka dla sztuki... i tyle...