Blog (30)
Komentarze (1.1k)
Recenzje (0)

raspberry-pi i wyświetlacz led

@Kaworuraspberry-pi i wyświetlacz led19.03.2013 20:26

... a także barometr i podtrzymywany bateryjnie RTC.

Jak wiemy (lub zaraz się dowiemy), r-pi poza standardowymi złączami "komputerowymi" z rodziny hdmi czy USB, posiada także zestaw szpilek oznaczonych "gpio". Do tego złącza można podłączyć różne dziwne rzeczy jak sensowy, wyświetlacze i całą masą innych bzdur. Po ostatnio stworzonym włączniku urządzeń zasilanych z 230V przyszedł czas na ledowy wyświetlacz z gratisami. A dojdzie jeszcze mała klawiatura sterująca mpd + wyświetlacz LCD (128x64).

Na początek, schemat:

Oraz zmontowany układ podwieszony na żyłce:

Czas na opis. Całość rozmawia z r-pi używając szyny i2c. Za obsługę wyświetlacza oraz czujnika oświetlenia odpowiada mikrokontroler ATmega8, zegar czasu rzeczywistego (RTC) to DS1307, ciśnienie i temperaturę podaje BMP085. A wyświetlacze są pomarańczowe i mają 1,8" wielkości (co powoduje kilka problemów, no nie tyle ich wielość co ilość diód w n ich zamontowanych). r-pi na GPIO ma poziomy napięć LVTTL (3V3) i porty te nie są niczym zabezpieczone. ATmega8 może działać przy napięciu od 2V7 do 5V5. DS1307 potrzebuje 5V, BMP085 jest na 3V3. A LEDy potrzebują przynajmniej 6V. To razem daje trzy poziomy napięć, które skądś trzeba wziąć i odpowiednio skonwertować aby nie wysadziły czegoś w powietrze.

Zasilanie

Do głównej linii zasilającej weźmiemy napięcie 12V, dlaczego? Bo można je wziąć z komputera PC (z serwera, który i tak jest cały czas włączony) i jest większe niż 6V. 5V z zasilania r-pi (bo tak). A 3V3 zrobimy sobie sami. Można by je było wziąć r-pi ale r-pi tylko 50mA może dostarczyć, więc trochę mało.

Sprawa konwersji napięć, szczęśliwie DS1307 i ATmega8 mają piny z otwartym kolektorem (z czymś otwartym, nigdy nie pamiętam). W każdym razie wynikają z tego dwie rzeczy, po pierwsze linie SDA (dane), SCL (zegar) wymagają rezystora podciągającego ich napięcie. Po drugie same układy mogą stan napięcia na nich zmieniać tylko ciągnąć je w dół. Podnosić go nie mogą, a że za stan wysoki uznają napięcie >2,7V, to wystarczy że linie są podciągnięte do 3V3 i nic się nie wysadzi. Jak widać na schemacie pull-upów nie ma, bo r-pi je ma wbudowane.

Z 12V zrobić 3V3 jest bardzo prosto, wystarczy skorzystać z regulatora LV33V (IC3) oraz 2 kondensatorów (C3 i C2). Dalej wystarczy je poprowadzić do zasilania wszystkich układów poza RTC. RTC wymaga zasilania 5V wziętego ze złącza SV1.

C1 powinien być względnie mały i umieszczony blisko pinów zasilania sekcji cyfrowej kontrolera. To dla poprawy jego stabilności.

Zegar RTC

Bardzo prosty do podłączenia DS1307. Potrzebuje tylko zasilania (5V), baterii CR2032, 32,768kHz kryształu, jeśli używamy wyjścia zegarowego (używamy) to musimy je podciągnąć rezystorem do 3V3. Kryształ powinien być jak najbliżej układu, a jego obudowa powinna być połączona z masą, to w celu ochrony przed zakłóceniami. Kiedyś zrobiłem błąd i jej nie uziemiłem... dryf zegara wynosił 1h na dobę. :D

Barometr i termometr

Schemat trochę oszukuje, BMP085 nie jest w konstrukcji podłączony bezpośrednio do wszystkiego. Bezpośrednio to układ jest połączony z modułem GY-65, który zawiera kilka elementów potrzebnych aby potrzebnych do jego poprawnego działania.

Notka: z modułu trzeba wymontować dwa rezystory, które podciągają SDA i SCL do zasilania. Te rezystory są już obecne w r-pi, a co za dużo to nie zdrowo.

Czujnik oświetlenia

Czujnik oświetlenia zamontowany mamy w celu automatycznej regulacji jasności LEDów, nie chcielibyśmy aby nocą waliły po oczach jak małe słońca, albo za dnia, w słońcu nie dało sie nic odczytać. Układ jest banalnie prosty, składa się z fotorezystora (R2, RPP130), rezystora ograniczająco-podciągającego R3 i końcówki ADC kontrolera, który w praktyce mierzy spadek napięcia na fotorezystorze. ;)

Wyświetlacz

Wyświetlacz to najbardziej skomplikowany element układu, i coś przez co musiałem robić układ dwa razy. Też mi się zachciało używać dużych wyświetlaczy, pfff. Wszystkie problemy wynikają z tego, że w każdym segmencie są 3 diody LED, całość połączona szeregowo (i ma wspólna anodę, znaczy +). Jedna dioda ma spadek napięcia na poziomie 1V8. Diody są trzy więc w sumie 5,4V. Co oznacza, że napięcie musi wynosić więcej niż około 6V. Z tego wynika, że nie możemy sterować segmentami bezpośrednio z portów kontrolera, i musimy użyć tranzystorów. Oryginalnie sekcje podłączone do anody wyświetlacza wyglądały dokładnie tak jak te sterujące segmentami. Jednak po wykonaniu układu okazało się, że to nie działa jak powinno. Układ sterowania segmentami działał poprawnie. A nawet lepiej niż poprawnie, okazuje się, że można zamienić tam emiter z kolektorem i układ działa tak samo... magia.

Problemem było jednak tranzystory na anodzie, które zawsze były włączone i wyłączały się tylko przy podłączeniu do +12V, czego oczywiście nie można było zrobić, takie napięcie rozwaliłoby kontroler. Problem rozwiązało dodanie drugiego tranzystora (PNP) i 2 rezystorów.

Soft

Software po stronie r-pi jest banalnie prosty (na razie, bo to wersja do testowania wyświetlacza), i wygląda tak:


#include <cstdio>
#include <ctime>
#include <wiringPi.h>
#include <wiringPiI2C.h>
#include <unistd.h>

int main()
{
        int dev = wiringPiI2CSetup (0x4A);
        if (!dev)
        {
                return 1;
        }

        wiringPiI2CWriteReg8(dev, 0x02, 0x88);
        wiringPiI2CWriteReg8(dev, 0x03, 0x88);

        sleep(1);

        int mmp = 0;
        for(;;)
        {
                time_t tme = time(NULL);
                tm * t = localtime(&tme);

                int hh = (t->tm_hour % 10) | ((t->tm_hour / 10) << 4);
                int mm = (t->tm_min % 10) | ((t->tm_min / 10) << 4);

                if (mm != mmp)
                {
                        wiringPiI2CWriteReg8(dev, 0x02, hh);
                        wiringPiI2CWriteReg8(dev, 0x03, mm);
                        mmp = mm;
                }

                sleep(1);
        }

        close(dev);
        return 0;
}

A kod kontrolera udostępniony i opisany będzie przy następnej okazji. A na koniec galeria:

Tutaj sprawdzałem czy wymiary wyprowadzeń wyświetlacza pasują do tego co nabazgrałem na płytce drukowanej.

A tutaj widzimy badanie czemu to draństwo nie działa prawidłowo.

A tutaj płytka w nadsiarczanie sodowym, spędziła tam cale 6h, a potem się zepsuła. ;P

Szanowna Użytkowniczko! Szanowny Użytkowniku!
×
Aby dalej móc dostarczać coraz lepsze materiały redakcyjne i udostępniać coraz lepsze usługi, potrzebujemy zgody na dopasowanie treści marketingowych do Twojego zachowania. Twoje dane są u nas bezpieczne, a zgodę możesz wycofać w każdej chwili na podstronie polityka prywatności.

Kliknij "PRZECHODZĘ DO SERWISU" lub na symbol "X" w górnym rogu tej planszy, jeżeli zgadzasz się na przetwarzanie przez Wirtualną Polskę i naszych Zaufanych Partnerów Twoich danych osobowych, zbieranych w ramach korzystania przez Ciebie z usług, portali i serwisów internetowych Wirtualnej Polski (w tym danych zapisywanych w plikach cookies) w celach marketingowych realizowanych na zlecenie naszych Zaufanych Partnerów. Jeśli nie zgadzasz się na przetwarzanie Twoich danych osobowych skorzystaj z ustawień w polityce prywatności. Zgoda jest dobrowolna i możesz ją w dowolnym momencie wycofać zmieniając ustawienia w polityce prywatności (w której znajdziesz odpowiedzi na wszystkie pytania związane z przetwarzaniem Twoich danych osobowych).

Od 25 maja 2018 roku obowiązuje Rozporządzenie Parlamentu Europejskiego i Rady (UE) 2016/679 (określane jako "RODO"). W związku z tym chcielibyśmy poinformować o przetwarzaniu Twoich danych oraz zasadach, na jakich odbywa się to po dniu 25 maja 2018 roku.

Kto będzie administratorem Twoich danych?

Administratorami Twoich danych będzie Wirtualna Polska Media Spółka Akcyjna z siedzibą w Warszawie, oraz pozostałe spółki z grupy Wirtualna Polska, jak również nasi Zaufani Partnerzy, z którymi stale współpracujemy. Szczegółowe informacje dotyczące administratorów znajdują się w polityce prywatności.

O jakich danych mówimy?

Chodzi o dane osobowe, które są zbierane w ramach korzystania przez Ciebie z naszych usług, portali i serwisów internetowych udostępnianych przez Wirtualną Polskę, w tym zapisywanych w plikach cookies, które są instalowane na naszych stronach przez Wirtualną Polskę oraz naszych Zaufanych Partnerów.

Dlaczego chcemy przetwarzać Twoje dane?

Przetwarzamy je dostarczać coraz lepsze materiały redakcyjne, dopasować ich tematykę do Twoich zainteresowań, tworzyć portale i serwisy internetowe, z których będziesz korzystać z przyjemnością, zapewniać większe bezpieczeństwo usług, udoskonalać nasze usługi i maksymalnie dopasować je do Twoich zainteresowań, pokazywać reklamy dopasowane do Twoich potrzeb. Szczegółowe informacje dotyczące celów przetwarzania Twoich danych znajdują się w polityce prywatności.

Komu możemy przekazać dane?

Twoje dane możemy przekazywać podmiotom przetwarzającym je na nasze zlecenie oraz podmiotom uprawnionym do uzyskania danych na podstawie obowiązującego prawa – oczywiście tylko, gdy wystąpią z żądaniem w oparciu o stosowną podstawę prawną.

Jakie masz prawa w stosunku do Twoich danych?

Masz prawo żądania dostępu, sprostowania, usunięcia lub ograniczenia przetwarzania danych. Możesz wycofać zgodę na przetwarzanie, zgłosić sprzeciw oraz skorzystać z innych praw wymienionych szczegółowo w polityce prywatności.

Jakie są podstawy prawne przetwarzania Twoich danych?

Podstawą prawną przetwarzania Twoich danych w celu świadczenia usług jest niezbędność do wykonania umów o ich świadczenie (tymi umowami są zazwyczaj regulaminy). Podstawą prawną przetwarzania danych w celu pomiarów statystycznych i marketingu własnego administratorów jest tzw. uzasadniony interes administratora. Przetwarzanie Twoich danych w celach marketingowych realizowanych przez Wirtualną Polskę na zlecenie Zaufanych Partnerów i bezpośrednio przez Zaufanych Partnerów będzie odbywać się na podstawie Twojej dobrowolnej zgody.