Skocz do zawartości

Przeszukaj forum

Pokazywanie wyników dla tagów 'DIY'.

  • Szukaj wg tagów

    Wpisz tagi, oddzielając przecinkami.
  • Szukaj wg autora

Typ zawartości


Kategorie forum

  • Elektronika i programowanie
    • Elektronika
    • Arduino i ESP
    • Mikrokontrolery
    • Raspberry Pi
    • Inne komputery jednopłytkowe
    • Układy programowalne
    • Programowanie
    • Zasilanie
  • Artykuły, projekty, DIY
    • Artykuły redakcji (blog)
    • Artykuły użytkowników
    • Projekty - roboty
    • Projekty - DIY
    • Projekty - DIY (początkujący)
    • Projekty - w budowie (worklogi)
    • Wiadomości
  • Pozostałe
    • Oprogramowanie CAD
    • Druk 3D
    • Napędy
    • Mechanika
    • Zawody/Konkursy/Wydarzenia
    • Sprzedam/Kupię/Zamienię/Praca
    • Inne
  • Ogólne
    • Ogłoszenia organizacyjne
    • Dyskusje o FORBOT.pl
    • Na luzie
    • Kosz

Szukaj wyników w...

Znajdź wyniki, które zawierają...


Data utworzenia

  • Rozpocznij

    Koniec


Ostatnia aktualizacja

  • Rozpocznij

    Koniec


Filtruj po ilości...

Data dołączenia

  • Rozpocznij

    Koniec


Grupa


Znaleziono 57 wyników

  1. Amatorską elektroniką zainteresowałem się po raz pierwszy w połowie lat dziewięćdziesiątych, będąc jeszcze dzieciakiem ze szkoły podstawowej. Moja aktywność na tym polu ograniczała się wówczas głównie do składania cudzych konstrukcji z pojedynczych tranzystorów, analogowych układów scalonych czy bramek logicznych. Brakowało mi wiedzy i narzędzi, aby zająć się czymś poważniejszym. Szczególnie wejście w świat mikrokontrolerów nie wchodziło w grę - zakup programatora i podręczników z kieszonkowego nie wchodził w grę, a i same elementy do tanich nie należały. Największą popularnością cieszyła się wówczas rodzina 8051, szczególnie w wykonaniu firmy Atmel (np. AT89C2051 albo AT89C51). Tematem mikrokontrolerów zająłem się wiele lat później, na początku obecnej dekady, standardowo zaczynając od AVR-ów. Kilka lat temu przy okazji zakupów na Allegro zauważyłem jednak w ofercie jednego ze sprzedawców stare układy AT89C51, co spowodowało natychmiastowy "atak" nostalgii. Od razu zamówiłem kilka sztuk. Dopiero potem zorientowałem się, że nie dysponuję programatorem. Na szczęście okazało się, że te można bez większych problemów kupić na najpopularniejszym chińskim serwisie aukcyjnym. Czekając na przesyłkę zorientowałem się w temacie programowania tych mikrokontrolerów w czasach współczesnych, wczytując się w dokumentację kompilatora SDCC. Po kilku tygodniach dysponowałem już podstawami wiedzy i zestawem narzędzi potrzebnych do realizacji projektu. Na tym etapie musiałem odpowiedzieć sobie na pytanie o jego temat. Szukałem czegoś, co byłoby popularną konstrukcją wśród amatorów elektroników w czasach, gdy ja zaczynałem zajmować się tym hobby. Zegar binarny zdawał się być oczywistą odpowiedzią. Urządzenie powstawało głównie wieczorami, w ciągu kilku tygodni. Składają się na nie dwie jednostronne płytki drukowane. Pierwsza zawiera wyświetlacz oparty na LED-ach oraz zestaw przycisków, druga logikę sterującą. Składają się na nią mikrokontroler AT89C51, zegar czasu rzeczywistego DS1307 z gniazdem baterii podtrzymującej, układ zasilania oraz niewielki głośnik piezoelektryczny. Przeznaczenie tego ostatniego jest dość specyficzne - co sekundę, przy odświeżaniu zawartości wyświetlacza generuje on dźwięk przypominający "tykanie" klasycznego zegara mechanicznego. Celem projektu było stworzenie urządzenia w stylu lat dziewięćdziesiątych, bez współczesnych ulepszeń w stylu automatycznej synchronizacji czasu za pomocą łączności sieciowej albo modułu GSM. Zegar nie robi nic poza wyświetlaniem czasu w formie binarnej (a właściwie BCD), a ustawia się go ręcznie. Oprogramowanie sterujące zostało napisane w języku C i skompilowane za pomocą kompilatora SDCC, szczelnie wypełniając dostępne 4kB pamięci flash mikrokontrolera.Obudowa urządzenia została wycięta laserowo. Za pomocą tego samego narzędzia został na niej wygrawerowany rysunek. Obecnie w realizacji (z uwagi na brak czasu i ważniejsze projekty) jest projekt bliźniaczego zegara, który tym razem będzie korzystał ze współczesnej elektroniki, opartej na module ESP8266.
  2. W ramach pracy magisterskiej wykonałem dedykowany sterownik do stacji uzdatniania wody, jako alternatywę dla sterowników PLC. Sam temat pracy został zaproponowany przeze mnie dlatego, że lubię robić coś bardziej kreatywnego niż pisanie suchego tekstu. Promotorowi bardzo się to spodobało i nie było żadnego problemu aby przystąpić do tego zagadnienia. Pewnie niektórzy się zastanowią dlaczego akurat stacja uzdatniania wody? W tamtym czasie pracowałem w automatyce przemysłowej i głównie robiliśmy właśnie takie obiekty. Zawsze były one robione na sterownikach PLC, są to drogie zabawki. Pomyślałem, że można zrobić prototyp takiego dedykowanego sterownika do tego rodzaju pracy, a w przyszłości dostosować go do różnych obiektów, gdzie jest różna ilość zaworów, pomp, zbiorników itp, ale zawsze jest ta sama część wspólna czyli sterowanie samym procesem uzdatniania. Sterownik został oparty o procesor Atmega128, a wszystko zostało dopasowane do obudowy na szynę DIN Z104J. Podstawowe cechy to: 32 wejścia cyfrowe 16 wyjść cyfrowych 5 wejść analogowych zegar RTC RS485 zdalny dostęp przez przeglądarkę www Sam procesor ma zbyt małą ilość wyprowadzeń aby obsłużyć wszystkie sygnały sterujące. Aby zwiększyć ilości wejść/wyjść wykorzystałem ekspandery na I2C - PCF8574. Podzieliłem całość na logiczne moduły, podobnie jak to jest w sterownikach PLC: 4 moduły DI - cyfrowe sygnały wejściowe 2 moduły DO - cyfrowe sygnały wyjściowe 1 moduł AI - analogowe sygnały wejściowe moduł RS485 Na wejściach cyfrowych do zabezpieczenia zastosowałem optoizolatory takie jak są wykorzystane np. tutaj TLP281. Na poniższym schemacie przedstawiony jest jeden taki blok. Masy są rozdzielone, co może w prost nie wynika ze schematu. Układ wyjściowy jest zrealizowany w oparciu o UDN2987 Moduł Analogowy został skonstruowany tak aby przyjmować sygnały prądowe 4..20mA. Jest to przemysłowy standard najczęściej wykorzystywany w czujnikach. Cechuje go prostota obsługi i uniwersalność, a fakt, że dolny zakres pomiarowy to 4mA ułatwia to detekcję wadliwego czujnika. W celu pokazania całego procesu uzdatniania wody wykonałem model o wymiarach 100cm x 50cm ukazujący różne etapy pracy takiej stacji, jak: uzdatnianie płukanie zbiorników ze złożem uzdatniającym napowietrzanie zbiorników napełnianie zbiornika retencyjnego chlorowanie układu w celu dezynfekcji dostarczanie uzdatnionej wody do odbiorców Na makiecie umieszczone zostały diody sygnalizujące otwarcie poszczególnych zaworów, co pozwala w łatwy sposób zaobserwować jak zachodzi cały proces pracy takiej stacji. Zamontowane są również potencjometry przy przepływomierzach, są one wpięte w pętle prądową aby zachować zgodność z prawdziwymi czujnikami przepływu. Na tej podstawie można zliczać ile wody zostało uzdatnionej, dobierać interwały pracy i wyznaczać potrzebę płukania filtrów. Całe sterowanie wykonałem w oparciu o web serwer z wykorzystaniem ASP.NET, tworząc taką mini SCADe. Wizualizacja wiernie odzwierciedla cały model. Serwer to aplikacja na system Windows, do którego podpięty jest moduł USB <-> RS485 zapewniający komunikację ze sterownikiem. Mamy podgląd na żywo całego procesu, dane są odświeżane automatycznie na bieżąco. W aplikacji możemy ustawić wszystkie parametry pracy sterownika, podglądać alarmy i włączać na żądanie wybrane etapy takie jak płukanie filtrów czy pobieranie wody ze studni głębinowej. Sam proces uzdatniania wody może nie jest technologicznie skomplikowany, ale jest bardzo ciekawy od strony automatyki. Jako ciekawostkę dodam, że złoże które znajduje się w zbiornikach filtrujących to po prostu odpowiednie kruszywo wiążące konkretne cząsteczki z wody, najczęściej jest to odżelaziacz i odmanganiacz.
  3. Masz gotowy wspaniały bulbulator oparty na chipie ESP8266 (np na modułach WiFi ESP8266 Wemos NodeMCU V3 32MB, ArduCam ESP8266-12E WiFi IoT, Adafruit Feather Huzzah ESP8266, Adafruit Huzzah ESP8266, SparkFun Thing - Dev Board - moduł WiFi ESP8266). Tworzy on stronę WWW, którą możesz zdalnie doglądać jego pracy. Niestety posiadasz łącze stałe ze zmiennym IP. W jaki sposób możesz więc połączyć się z nim będąc poza domem? Z pomocą przychodzą usługi typu Dynamic DNS. Jedną z nich jest polski serwis https://freedns.42.pl, z którego od lat korzystam. Zapewnia on przykładowy skrypt Pythona do uaktualniania rekordów DNS. Niestety nie skorzystamy z niego bezpośrednio w Arduino. Musimy więc napisać własny szkic. Celem podejrzenia danych wysyłanych do serwera nieco zmodyfikowałem gotowy skrypt Pythona podmieniając server = "https://freedns.42.pl/xmlrpc.php" na adres localhost swojego własnego programu napisanego w C++, który zapisał nagłówek i dane przekazywane do serwera. Tak oto powstał szkic Arduino zawierający trzy funkcje: publicIP() - sprawdzająca aktualne publiczne IP gethostbyname(String host) - sprawdzająca IP przypisane do domeny w rekordach DNS - rekord adresów (A) updateDynDNS() - odpowiedzialna za uaktualnienie wpisu w serwisie FreeDNS Możemy teraz cyklicznie wywoływać w pętli loop polecenia: String myIP = publicIP(); String hostIP = gethostbyname(dnsset.subdomain + "." + dnsset.domain); if (myIP != hostIP) { dnsset.newaddress = myIP; updateDynDNS(); Serial.println("FreeDNS IP: " + hostIP); Serial.println("Public IP: " + myIP); } Sprawdzamy więc nasze aktualne publiczne IP, potem IP przypisane do domeny w DNS. Jeśli się nie zgadzają - wtedy uruchamiamy "machinę" odpowiedzialną za komunikację z FreeDNS. Polecam użyć jakiegoś timera czy skorzystać z funkcji millis(), nie blokującego działanie innych funkcji delay() Cały kod źródłowy programu: #include <ESP8266HTTPClient.h> #include <ESP8266WiFi.h> #include <WiFiClientSecure.h> struct FreeDNSsettings { String domain; String subdomain; String newaddress; String user; String password; String ttl; } dnsset; void setup() { dnsset.domain = "TwojaDomena.pl"; dnsset.subdomain = "Nazwa subdomeny"; dnsset.user = "Uzytkownik w serwisie freedns.42.pl"; dnsset.password = "haslo uzytkownika"; dnsset.ttl = "120"; Serial.begin(9600); //Serial connection WiFi.softAPdisconnect(); WiFi.disconnect(); WiFi.mode(WIFI_STA); WiFi.begin("Siec WiFi", "i haslo do niej"); //WiFi connection while (WiFi.status() != WL_CONNECTED) { //Wait for the WiFI connection completion delay(500); Serial.println("Waiting for connection"); } } void loop() { if (WiFi.status() == WL_CONNECTED) { //Check WiFi connection status String myIP = publicIP(); String hostIP = gethostbyname(dnsset.subdomain + "." + dnsset.domain); if (myIP != hostIP) { dnsset.newaddress = myIP; updateDynDNS(); Serial.println("FreeDNS IP: " + hostIP); Serial.println("Public IP: " + myIP); } } else { Serial.println("Error in WiFi connection"); } delay(15 * 60 * 1000); } String publicIP() { String myIP; HTTPClient http; http.begin("http://ip.42.pl/raw"); //Specify request destination int httpCode = http.GET(); //Send the request if (httpCode > 0) { //Check the returning code myIP = http.getString(); //Get the request response payload } return myIP; } String gethostbyname(String host) { IPAddress ipAddress; WiFi.hostByName(host.c_str(), ipAddress); return String(ipAddress[0]) + String(".") + \ String(ipAddress[1]) + String(".") + \ String(ipAddress[2]) + String(".") + \ String(ipAddress[3]); } void updateDynDNS() { String xml = "<?xml version='1.0'?>\r\n" "<methodCall>\r\n" "<methodName>xname.updateArecord</methodName>\r\n" "<params>\r\n" "<param>\r\n" "<value><struct>\r\n" "<member>\r\n" "<name>name</name>\r\n" "<value><string>" + dnsset.subdomain + "</string></value>\r\n" "</member>\r\n" "<member>\r\n" "<name>zone</name>\r\n" "<value><string>" + dnsset.domain + "</string></value>\r\n" "</member>\r\n" "<member>\r\n" "<name>newaddress</name>\r\n" "<value><string>" + dnsset.newaddress + "</string></value>\r\n" "</member>\r\n" "<member>\r\n" "<name>oldaddress</name>\r\n" "<value><string>*</string></value>\r\n" "</member>\r\n" "<member>\r\n" "<name>updatereverse</name>\r\n" "<value><string>0</string></value>\r\n" "</member>\r\n" "<member>\r\n" "<name>user</name>\r\n" "<value><string>" + dnsset.user + "</string></value>\r\n" "</member>\r\n" "<member>\r\n" "<name>ttl</name>\r\n" "<value><string>" + dnsset.ttl + "</string></value>\r\n" "</member>\r\n" "<member>\r\n" "<name>password</name>\r\n" "<value><string>" + dnsset.password + "</string></value>\r\n" "</member>\r\n" "</struct></value>\r\n" "</param>\r\n" "</params>\r\n" "</methodCall>"; String http = "POST /xmlrpc.php HTTP/1.1\r\n" "Host: freedns.42.pl\r\n" "Accept-Encoding: gzip\r\n" "Content-Type: text/xml\r\n" "User-Agent: Python-xmlrpc/3.5\r\n" "Content-Length: " + String(xml.length()) + "\r\n" "\r\n"; xml = http + xml; WiFiClientSecure client; IPAddress ipAddress; WiFi.hostByName("freedns.42.pl", ipAddress); client.connect(ipAddress, 443); client.print(xml); } Biblioteka WiFiClientSecure występuje w środowisku ESP8266 relatywnie od niedawna. Jeśli macie problemy z kompilacją szkicu właśnie z jej powodu - uaktualnijcie obsługę ESP w Arduino IDE. Po niewielkich modyfikacjach przypuszczalnie (niestety chwilowo nie mogę tego sprawdzić) uaktualniacz DNS działać będzie również z mikrokontrolerem ESP32. Chyba wystarczy podmienić nazwy dołączanych bibliotek na: #include <HTTPClient.h> #include <WiFi.h> #include <WiFiClientSecure.h>
  4. Niewątpliwie procesory, bądź mikroprocesory stanowią ogromną część elektroniki użytkowej. Prawie w każdym urządzeniu, poczynając od najprostszych, a kończąc na najbardziej zaawansowanych komputerach, najważniejsza jest jednostka centralna. Czasy największej świetności ośmiobitowe procesory mają już za sobą, ale nadal stanowią ważną część elektroniki. Wiele urządzeń nadal z nich korzysta. Moją przygodę z elektroniką cyfrową rozpocząłem od programowania mikroprocesorów firmy Atmel były to dokładniej procesory Atmega8 oraz Atmega328. Mimo wielkich możliwości jakie dają mikrokontrolery bardziej interesowała mnie strona hardware’owa tych układów. Na ich podstawie oraz procesorów takich jak Intel 4004, 8080 stopniowo poznawałem budowę oraz działanie mikroprocesorów. W pewnym momencie stwierdziłem że nie jest to takie trudne i sam zbuduję własny procesor. Był to DCE 4 (D-digital, C-computer, E-electronic, 4 ponieważ była to jednostka czterobitowa). Następnie rozpocząłem prace nad ośmiobitowym procesorem DCE 84. Jednak i on z upływem czasu wydał mi się bardzo prosty. Prezentowany mikroprocesor DCE 812 zaprojektowałem korzystając z rozwiązań zastosowanych w DCE 84 bazując na pełnej architekturze harwardzkiej (gdzie pamięć dla programu i danych jest fizycznie rozdzielona). Schemat blokowy układu można znaleźć poniżej. Do budowy zostały użyte podstawowe układy logiczne wykonane w technologii CMOS (przykładowo bramki AND) oraz gotowe układy pamięci RAM (UL6516 2k x 8bit) oraz ROM(dwa układy 28c64 8k x 8bit) , ponieważ budowa własnych pamięci nie była możliwa z powodu braku czasu i środków. Elementy takie jak ALU, układ sterowania, zegar, oraz obsługa pamięci i poszczególnych rejestrów roboczych została zaprojektowana przeze mnie od podstaw. Fizycznie układ powstał stosunkowo niedawno i nie obyło się bez komplikacji. Zmiana układu obsługującego pamięć RAM sprawiła, że układ działa zgodnie z założeniami. Pozwala on na wykonywanie podstawowych działań matematycznych oraz prostych programów stworzonych w języku C++ i przekonwertowanych na polecenia dla tego procesora. Najbardziej zaawansowanym programem, który udało mi się uruchomić było generowanie kolejnych liczb z ciągu Fibonacciego. Praca mikroprocesora zostaje rozpoczęta od wciśnięcia fizycznego przycisku RESET, który ustawia stan "0" na wyjściach wszystkich wewnętrznych rejestrów. Uzyskujemy poprzez to adres zero na wyjściu licznika rozkazów co powoduje rozpoczęcie pracy od pierwszego wprowadzonego rozkazu (lista rozkazów widoczna na zdjęciu poniżej). Następnie układ zaczyna liczyć od 0 do 15 wewnątrz układu sterowania do każdej z tych mikrooperacji przypisane jest odpowiednie działanie zgodne z rozkazem wprowadzonym do pamięci ROM może to być np. zapis do rejestru B, reset licznika rozkazów. Po wykonaniu wszystkich mikrooperacji licznik rozkazów zwiększa swoją wartość o jeden co skutkuje przejściem do kolejnego rozkazu i cały cykl wykonywany jest ponownie. Programowanie procesora realizowane jest poprzez odpowiednie przełączniki które umożliwiają przełączanie układu między stanem pracy a programowaniem. Wprowadzanie danych oraz wybieranie adresów również realizowane jest w ten sposób. Odpowiednie przełączniki służą również do sterowania zegarem procesora. Generowanie impulsów może odbywać się automatycznie z częstotliwością ok. 10Hz lub manualnie poprzez wciśnięcie przycisku. Obecnie projektuje kolejną wersje własnego procesora tym razem staram się wszystko umieścić w jednym układzie FPGA (Korzystam z tej płytki). Postępy w pracach można obserwować na moim blogu https://rafal-bartoszak.blogspot.com/ Dodatkowo wstawiam też link do filmu gdzie można zobaczyć działanie układu.
  5. Witam forumowiczów, na wstępie wspomnę iż dopiero rozpoczynam swoją przygodę z elektroniką toteż proszę o wyrozumiałość jeśli pojawi się taka potrzeba. Mam do przygotowania urządzenie którego opis przygotowałem poniżej. Urządzenie ma posiadać wbudowaną pamięć w której przechowywane będą pliki audio oraz pliki tekstowe (.txt, .xlsx, .csv, itp.) które powinny mieć możliwość łatwej aktualizacji (np. podłączenie tabletu lub telefonu przez bluetooth lub usb / wifi / wbudowany slot na kartę SIM i aktualizacja przez internet (preferowane jeśli cena nie okaże się zaporowa)). Pamięć nie powinna być potrzebna większa niż 100 megabajtów. Urządzenie ma być zamknięte w niesprecyzowanej jeszcze obudowie z jednym przyciskiem zewnętrznym po naciśnięciu którego na podstawie zawartości plików tekstowych oraz aktualnej godziny odtwarzany ma być wybrany przez algorytm plik audio. Urządzenie powinno być dostosowane do działania w warunkach zewnętrznych. Zasilanie urządzenia ma pochodzić z sieci energetycznej, ewentualnie z baterii połączonej z panelem fotowoltaicznym. W pierwszej kolejności muszę ustalić platformę która będzie najlepsza (najtańsza ze spełniających założenia). Po wstępnym sprawdzeniu rozwiązań doszedłem do wniosku, że najlepszą platformą do realizacji powyższego zadania będzie Arduino ewentualnie Raspberry pi‎. Oba rozwiązania wydają się oferować wszystko czego potrzebuję. Czy mam rację i powinienem wybrać jedno z tych rozwiązań? Może coś przeoczyłem i wspomniane rozwiązania uniemożliwiają realizację któregoś z opisanych wymagań? Czy może jest jakieś inne które spełni wymagania a w realizacji okaże się tańsze? Z góry dziękuję za zainteresowanie i odpowiedź. W przypadku zainteresowania wątkiem chętnie będę go kontynuować ponieważ wybór rozwiązania to dopiero pierwszy krok na długiej drodze do powstania prototypu.
  6. Jednym z moich pierwszych "poważniejszych" projektów, jakie zrealizowałem w ramach nauki programowania mikrokontrolerów był EtherGeiger - sieciowy detektor promieniowania jonizującego. Projekt stworzony w 2014 roku miał być swoistym żartem, nawiązującym swoją tematyką do Fallouta i post-apokaliptycznych filmów science-fiction. Wszystko zaczęło się od zakupionego na Allegro radzieckiego detektora Geigera typu STS-5. Przyrząd ten wymaga do działania wysokiego napięcia, w okolicy 400V. Jest ono wytwarzane przez przetwornicę typu flyback, pracującą na popularnym układzie MC34063A. Sercem pierwszej wersji urządzenia był mikrokontroler Atmega328, a za komunikację ze światem zewnętrznym odpowiadał układ ENC28J60, zwykle stosowany w popularnych modułach, tutaj przylutowany bezpośrednio do płytki urządzenia. Oprogramowanie sterujące pracą urządzenia zostało napisane w języku C, przy pomocy środowiska Atmel Studio. Poza pomiarem promieniowania tła urządzenie zbierało także informacje o temperaturze otoczenia, ciśnieniu atmosferycznym i wilgotności względnej. Wykorzystane zostały w tym celu moduły BMP280 oraz DHT11/DHT22. Wyniki pomiarów były przekazywane do serwera odpalonego na Raspberry Pi, który był odpowiedzialny za ich zapisywanie. W przypadku wykrycia wartości przekraczającej ustaloną wcześniej normę, oprogramowanie wysłałoby powiadomienie na telefon, za pośrednictwem serwisu Pushover. Projekt będący w zamierzeniach jedynie żartem (o pewnej wartości dydaktycznej) dwukrotnie okazał się być bardzo przydatny, gdy do mediów społecznościowych zaczęły trafiać fake newsy mówiące o awariach elektrowni atomowych i chmurze radioaktywnego pyłu, zmierzającego rzekomo nad Polskę. W ubiegłym roku projekt doczekał się nowej wersji, opartej na mikrokontrolerze PIC32MX270F265B. Pozwoliło to na dodanie nowych funkcji, m.in. wyposażenie urządzenia w PenDrive'a do lokalnego zapisywania pomiarów (w przypadku jego braku dane są zapisywane we wbudowanej pamięci SPI Flash). Zastosowany został także pojedynczy czujnik temperatury, ciśnienia i wilgotności, typu BME280. Planowana jest także rozbudowa tej wersji o dodatkową płytkę z wyświetlaczem LCD.
  7. Historia tego projektu sięga kilka lat wstecz, kiedy to zetknąłem się z tematem wykorzystania routerów na OpenWRT do budowy odbiorników internetowej radiofonii (link, link, link). Początkowo planowałem wykonanie własnej wersji takiego urządzenia w oparciu o przerobiony router i kartę dźwiękową na USB, w międzyczasie jednak pojawiło się pierwsze Raspberry Pi. W oparciu o "Malinę" powstał niezbyt elegancki prototyp, wykorzystujący płytkę stykową, wyświetlacz HD44780 oraz kilka przycisków. Zdjęcia tej wersji niestety nie zachowały się. Radio pracowało w oparciu o Raspbiana Wheezy oraz program MPD. Odtwarzaniem można było sterować za pomocą przycisków, interfejsu WWW albo z poziomu telefonu z Androidem, za pomocą klienta MPD. Niestety dały o sobie znać problemy wynikające z kiepskiej jakości sygnału na wyjściu audio RasPi - szczególnie przy niskim poziomie głośności słyszalne były "artefakty" w postaci wysokich, przerywanych pisków. Stało się dla mnie jasne, że w finalnej wersji projektu konieczne będzie zastosowanie lepszego układu DAC. W tym momencie projekt został na jakiś czas odłożony na półkę. W międzyczasie w moim domu na rynku pojawił się Chromecast audio, co spowodowało dodatkowy spadek motywacji do skończenia projektu, który utracił sporo praktycznej użyteczności. Wraz z premierą Raspberry Pi Zero zero postanowiłem mimo wszystko dokończyć go, z myślą o efekcie "dydaktycznym". W efekcie powstała płytka wyposażona w złącze do podłączenia RasPi Zero oraz kolorowego ekranu LCD na magistrali SPI. Ponieważ pierwsza wersja RasPi Zero nie była wyposażona w moduł WiFi, na PCB zostało przewidziane miejsce pod gniazdko ethernetowe oraz kontroler ENC28J60. Po premierze RPi Zero W płytka została podmieniona, dzięki czemu obecnie urządzenie może korzystać z łączności bezprzewodowej. W roli przetwornika audio wykorzystany został układ WM8731. Na płytce znalazło się także miejsce dla odbiornika podczerwieni, dzięki czemu możliwe jest sterowanie za pomocą pilota. Nazwa eMPeDocles jest oczywiście nawiązaniem do programu MPD, który odpowiada za odtwarzanie internetowych streamów oraz plików muzycznych z lokalnego dysku sieciowego. Na chwilę obecną do zrobienia pozostało już tylko wykonanie obudowy (skłaniam się ku wycinanej laserowo z pleksi) oraz napisanie prostego interfejsu graficznego w Qt. W planach jest także dodanie funkcji prostego menadżera podcastów.
×
×
  • Utwórz nowe...