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

PIC32MX250F128B jako host USB w MPLAB - obsługa pendrive, przykłady, kody

p.kaczmarek2 26 Lip 2020 16:36 1323 6
  • PIC32MX250F128B jako host USB w MPLAB - obsługa pendrive, przykłady, kody
    Witajcie moi drodzy
    Przedstawię tutaj przykład użycia 32-bitowego mikrokontrolera PIC32MX250F128B w roli hosta USB obsługującego pendrive (zapisującego i odczytującego z niego dane). W temacie opiszę najpierw płytkę którą pod tego PICa zaprojektowałem, a potem przykładowe kody obsługi pendrive w języku C, w środowisku MPLAB X i kompilatorze XC32. Wszystko będzie w załącznikach do pobrania.

    Użyty mikrokontroler - PIC32MX250F128B
    Do przedstawionego tu projektu użyłem 32-bitowego mikrokontrolera PIC32MX250F128B od Microchipa.
    PIC32MX250F128B jako host USB w MPLAB - obsługa pendrive, przykłady, kody
    PIC32MX250F128B pracuje na napięciu 2.3V-3.6V, oferuje 128KB pamięci Flash (w wersji PIC32MX270F256B aż 256KB), 32KB SRAM, dwa interfejsy UART, dwa interfejsy SPI, dwa interfejsy I2C, sprzętowe USB które może pracować zarówno w trybie Device jak i Hosta. Użycie wszystkiego ułatwia w nim funkcjonalność PPS (Peripheral Pin Select), która pozwala w pewnym zakresie zremapować różne funkcjonalności na różne piny (np. możemy sobie wybrać gdzie będzie UART RX).
    Więcej szczegółów o nim znajdziecie u producenta:
    https://www.microchip.com/wwwproducts/en/PIC32MX250F128B
    oraz w nocie katalogowej:
    PIC32MX1XX...01168L.pdf Download (3.72 MB)

    Przykładowy hardware - zaprojektowana płytka
    Specjalnie pod ten projekt przygotowałem prostą płytkę z PIC32MX250F128B w obudowie DIP28. Użyłem do tego darmowej wersji programu Eagle. Na płytce znajduje się tylko to co niezbędne, dodatkowe wyprowadzone są wszystkie piny mikrokontrolera tak by można było za jej pomocą łatwo robić prototypy.
    Cała płytka korzysta z elementów przewlekanych, by każdy mógł ją łatwo złożyć.
    Na płytce znajduje się:
    - PIC32MX250F128B w DIP28 (najlepiej w podstawce; inne PIC32MX220*/PIC32MX270* tu też przypasują; PIC32MX270F256B tu też pasuje, a oferuje aż 256KB zamiast 128KB flash)
    - rezonator kwarcowy 8MHz, on jest niezbędny dla USB (wewnętrzny oscylator PICa bywa zbyt niedokładny)
    - regulator LDO TC1264 by zapewnić 3.3V dla PICa
    - złącze USB typu B tylko do podpięcia zasilania 5V
    - złącze USB żeńskie (to tutaj podłączamy pendrive)
    - złącze DC Jack wraz z 7805 też tylko do podpięcia zasilania
    - zworka za pomocą której wybieramy źródło zasilania układu (albo z USB typu B albo ze złącza jack)
    - dwie diody LED których anody są wyprowadzone na goldpiny (możemy je podłączyć gdzie chcemy i sterować nimi z PICa)
    - złącze ICSP by podłączyć PICKIT3 lub inny programator
    - przycisk RESET
    - dodatkowo w układzie zasilania są dwie diody 1N4001 (lub podobne; warto dać coś o mniejszym spadku napięcia) w celu ochrony układy przed odwrotnym podłączeniem polaryzacji
    Poniżej finalna wersja płytki w programie Eagle:
    PIC32MX250F128B jako host USB w MPLAB - obsługa pendrive, przykłady, kody
    PIC32MX250F128B jako host USB w MPLAB - obsługa pendrive, przykłady, kody
    Wymiary płytki wyszły niecałe 40mm na 77mm.
    Schemat płytki do pobrania:
    pic32logge...schpdf.pdf Download (82.52 kB)Punkty: 0.5 dla użytkownika
    pic32logge...hpng-1.png Download (86.19 kB)Punkty: 0.5 dla użytkownika
    Projekt Eagle do pobrania:
    pic32logge..._eagle.zip Download (84.06 kB)Punkty: 3 dla użytkownika
    Wyeksportowane PCB do gerberów do pobrania:
    pic32logge...erbers.zip Download (239.57 kB)Punkty: 1 dla użytkownika
    Lutowanie płytki
    Płytki zamówiłem w chińskiej firmie, 5 sztuk. Jakby ktoś był chętny, to mi jeszcze ich kilka zostało.
    Tym razem obyło się bez poprawek na płytce, wszystko wyszło bezbłędnie:
    PIC32MX250F128B jako host USB w MPLAB - obsługa pendrive, przykłady, kody PIC32MX250F128B jako host USB w MPLAB - obsługa pendrive, przykłady, kody
    Przygotowałem sobie wszystkie elementy:
    PIC32MX250F128B jako host USB w MPLAB - obsługa pendrive, przykłady, kody
    Lutowanie poszło przyjemnie i sprawnie:
    PIC32MX250F128B jako host USB w MPLAB - obsługa pendrive, przykłady, kody
    Przy projektowaniu płytki specjalnie zdecydowałem się na THT (montaż przewlekany) by łatwo się prototypowało i by w razie czego ktoś inny początkujący mógł skorzystać z mojego projektu.
    PIC32MX250F128B jako host USB w MPLAB - obsługa pendrive, przykłady, kody
    Na koniec sprawdziłem czy wszystko jest ok. Najpierw bez PICa, a potem już z PICem za pomocą najprostszego programu blink, ale o tym już w dalszym akapicie.
    PIC32MX250F128B jako host USB w MPLAB - obsługa pendrive, przykłady, kody

    Użyte IDE i kompilator
    Przedstawiony tu przykłady przeznaczone są dla środowiska MPLAB X IDE v5.20 i kompilatora XC32 v2.20. Kompilator tej w darmowej wersji można pobrać ze stron Microchipa.
    PIC32MX250F128B jako host USB w MPLAB - obsługa pendrive, przykłady, kody
    MPLAB użyłem w połączeniu z programatorem PICKIT3 (MPLAB pozwala bezpośrednio ze swojego IDE programować PICa przez PICKIT3 co jest bardzo wygodne):
    PIC32MX250F128B jako host USB w MPLAB - obsługa pendrive, przykłady, kody

    Użyta biblioteka
    Projekt korzysta z biblioteki opracowanej przez Microchip, opisanej w jego nocie aplikacyjnej AN1045 "Implementing File I/O Functions Using Microchips Memory Disk Drive File System Library", do pobrania tutaj:
    https://www.microchip.com/wwwAppNotes/AppNotes.aspx?appnote=en532040
    Jako załącznik:
    AN1045.pdf Download (350.65 kB)
    Opisana tam jest szczegółowo biblioteka która obsługuje nośniki pamięci Flash (nie tylko przez USB, ale np. też kartę SD przez SPI).
    Biblioteka ta wspiera systemy plików FAT16 i FAT32.

    Biblioteka posiada osobne moduły odpowiedzialne za np. wyszukiwanie plików lub obsługę FAT32, moduły te można wyłączyć by oszczędzić zużycie pamięci. Szczegóły:
    PIC32MX250F128B jako host USB w MPLAB - obsługa pendrive, przykłady, kody

    W załączonym pdfie jest szczegółowy opis funkcji tej biblioteki, a nawet przykłady jej użycia:
    PIC32MX250F128B jako host USB w MPLAB - obsługa pendrive, przykłady, kody
    PIC32MX250F128B jako host USB w MPLAB - obsługa pendrive, przykłady, kody
    Drugim bardzo dobrym źródłem informacji z którego korzystałem jest repozytorium github autorstwa douglaskatz i fkummer, dostępne tutaj:
    https://github.com/douglaskatz/PIC32-Mass-Storage
    Kopia zapasowa repozytorium:
    PIC32-Mass...200726.zip Download (7.12 MB)
    Znajdują się w nim pełne przykłady Write/Read/Seek wcześniej wspomnianej biblioteki.

    Funkcje obsługi plików z biblioteki
    Warto tutaj podkreślić, że funkcje obsługi plików (oraz cały koncept obsługi plików) w tej bibliotece jest taki sam jak ogólnie w języku C (zarówno na Windowsie, jak i na innych platformach).
    Pliki są reprezentowane jako uchwyt do pliku, można je otwierać w różnych trybach (odczyt, zapis, append czyli dopisywanie), można w nich przesuwać kursor (miejsce skąd czytamy), czytać dane oraz zapisywać.
    Kilka podobieństw poniżej:
    Na PIC32 Zazwyczaj w języku C Opis Przykład użycia w kodzie
    FSFILE FILE Typ zmiennej reprezentującej plik FSFILE * myFile
    FSfopen fopen Funkcja otwierająca plik w danym trybie myFile = FSfopen("data.bin","r")
    FSfseek seek Funkcja ustawiająca kursor odczytu/zapisu na danym bajcie w pliku FSfseek(myFile, 0, SEEK_END)
    FSftell ftell Funkcja zwraca bieżącą pozycję kursora w pliku fl = FSftell(myFile)
    FSfread fread Funkcja wczytuje daną ilość razy daną ilość bajtów do pamięci z pliki i automatycznie przesuwa kursor dalej FSfread(&ex,sizeof(ex),1,myFile)
    FSfwrite fwrite Funkcja zapisuje daną ilość bajtów daną ilość razy z pamięci do pliku FSfwrite(txt, 1, stringLength, myFile )
    FSfclose fclose Funkcja zamyka plik i zapisuje zmiany FSfclose(myFile)

    Ogólnie, wszystko działa tak jak normalnie w C, można wzorować się na kodach dla FILE * z sieci, np. stąd:
    https://www.tutorialspoint.com/c_standard_library/c_function_fread.htm
    http://www.cplusplus.com/reference/cstdio/fread/
    https://www.educative.io/edpresso/c-reading-data-from-a-file-using-fread

    Przykład 0 - miganie diodą
    Na samym początku tylko chciałem sprawdzić czy wszystko z PICem jest okej, więc uruchomiłem na nim klasyczny 'blink led', czyli miganie diodą. Kod blinka bazowałem na przykładzie z forum Microchipa, który jest o tyle ciekawie napisany, że robi wszystko "na piechotę" i nie korzysta z użytecznych funkcji bibliotecznych. Ten przykład (tak jak pozostałe tutaj) kompilowałem w MPLAB X kompilatorze XC32, a nie w Mikro C PRO for PIC32 z którego korzystam z reguły.
    Cały kod:
    Kod: c
    Zaloguj się, aby zobaczyć kod

    Pełny projekt do pobrania wraz z .hex:
    PIC32MX250...8MHz.X.zip Download (49.26 kB)Punkty: 0.5 dla użytkownika
    Kod wgrałem poprzez PICKIT3 bezpośrednio z MPLAB. Rezultat działania:



    Przykład 1 - prosty zapis danych na pendrive
    Przykład ten to przykład 'read' z wcześniej wspomnianego PIC32-Mass-Storage. Musiałem go przekonwertować do nowszej wersji MPLAB, dodatkowo zmieniłem pinologię tak by była zgodna z moją płytką i PICem (diody oznaczające stan podłączenia pendrive/zapisu):
    Kod: c
    Zaloguj się, aby zobaczyć kod

    (Pełna wersja w załącznikach)
    Powyższy kod wypisuje też dodatkowe informacje na UART. UART (a dokładniej - UART2, moduł drugi UART) jest zmapowany na piny (RX) i RPB14 (TX) za pomocą PPS, tutaj:
    Kod: c
    Zaloguj się, aby zobaczyć kod

    W razie potrzeby można zmapować UART na inne piny. Dostępne piny dla danych funkcjonalności są opisane w nocie katalogowej w dwóch miejscach, w TABLE 11-2: OUTPUT PIN SELECTION:
    PIC32MX250F128B jako host USB w MPLAB - obsługa pendrive, przykłady, kody
    oraz w TABLE 11-1: INPUT PIN SELECTION:
    PIC32MX250F128B jako host USB w MPLAB - obsługa pendrive, przykłady, kody
    UART podłączyłem poprzez najprostszą przejściówkę na USB:
    PIC32MX250F128B jako host USB w MPLAB - obsługa pendrive, przykłady, kody
    Po stronie komputera do odbioru komunikacji UART użyłem RealTerm:
    PIC32MX250F128B jako host USB w MPLAB - obsługa pendrive, przykłady, kody
    Do pierwszego testu działania użyłem pendrive Kingston 32GB:
    PIC32MX250F128B jako host USB w MPLAB - obsługa pendrive, przykłady, kody
    Przykład ten wymaga odpowiednio sformatowanego pendrive - wspiera system plików FAT32:
    PIC32MX250F128B jako host USB w MPLAB - obsługa pendrive, przykłady, kody
    PIC32MX250F128B jako host USB w MPLAB - obsługa pendrive, przykłady, kody
    Przedstawiony tutaj przykład działa w prosty sposób. Na początku obie diody LED są zgaszone. Po podłączeniu nośnika USB zapala się czerwona dioda LED i rozpoczyna się próba zapisu. Jak zapis się powiedzie to zapala się zielona dioda LED. Potem można odłączyć pendrive i obie diody LED gasną.
    Przed podłączeniem pendrive:
    PIC32MX250F128B jako host USB w MPLAB - obsługa pendrive, przykłady, kody
    Tuż po podłączeniu:
    PIC32MX250F128B jako host USB w MPLAB - obsługa pendrive, przykłady, kody
    Tuż po pomyślnym zapisie:
    PIC32MX250F128B jako host USB w MPLAB - obsługa pendrive, przykłady, kody
    PIC32MX250F128B jako host USB w MPLAB - obsługa pendrive, przykłady, kody
    Po odłączeniu:
    PIC32MX250F128B jako host USB w MPLAB - obsługa pendrive, przykłady, kody
    Rezultat na pendrive:
    PIC32MX250F128B jako host USB w MPLAB - obsługa pendrive, przykłady, kody

    Potem z ciekawości sprawdziłem, czy biblioteka da sobie radę z kartą SD 64GB w przejściówce na USB:
    PIC32MX250F128B jako host USB w MPLAB - obsługa pendrive, przykłady, kody
    Próbowałem zapisać do niej na różne sposoby. Było troszkę kłopotu, bo systemy plików FAT16/FAT32 nie wspierają aż tak dużych partycji. System Windows nie dawał nawet mi możliwości sformatować tego nośnika pod FAT. Musiałem na karcie wydzielić osobną, mniejszą partycje, specjalnie pod zapis danych z PICa.
    Użyłem do tego MiniTool Partition Wizard Free.
    Najpierw skasowałem partycje z karty SD (opcja Delete):
    PIC32MX250F128B jako host USB w MPLAB - obsługa pendrive, przykłady, kody
    Następnie utworzyłem partycję FAT32 o rozmiarze 32GB:
    PIC32MX250F128B jako host USB w MPLAB - obsługa pendrive, przykłady, kody
    Po tym jeszcze trzeba zapisać zmiany (przycisk Apply).
    Tak przygotowany nośnik pamięci podłączyłem do układu i okazało się, że wszystko działa - na karcie SD pojawił się wyczekiwany plik wraz z zawartością:
    PIC32MX250F128B jako host USB w MPLAB - obsługa pendrive, przykłady, kody
    PIC32MX250F128B jako host USB w MPLAB - obsługa pendrive, przykłady, kody
    Czyli ze strony hosta USB nie widać chyba nawet różnicy między pendrive a kartą SD w takiej przejściówce.

    Przykład 2 - zapis dużej ilości danych
    Następnie chciałem sprawdzić czy biblioteka jest w stanie sobie poradzić z większą ilością danych do zapisu. W tym celu nieco zmodyfikowałem poprzedni przykład. Użyłem pętli for by zapisywać do pliku tekstowego kolejne liczby:
    Kod: c
    Zaloguj się, aby zobaczyć kod

    Do zamiany liczby całkowitej (typ int) na napis (tablicę charów) w powyższym kodzie użyłem funkcji sprintf.
    Czas zapisu po podłączeniu pendrive do płytki nieco się wydłużył. Oczywiście, można by go skrócić optymalizując samą metodę zapisu (wywoływać rzadziej FSfwrite, dla większej ilości danych na raz) ale nie to było celem przykładu. Warto też zwrócić tu uwagę na to, że mimo dużej ilości danych tworzonych przez ten program użycie pamięci jest bardzo małe.
    Rezultat na pendrive dla i = 10 000:
    PIC32MX250F128B jako host USB w MPLAB - obsługa pendrive, przykłady, kody
    PIC32MX250F128B jako host USB w MPLAB - obsługa pendrive, przykłady, kody
    Rezultat na pendrive dla i = 100 000:
    PIC32MX250F128B jako host USB w MPLAB - obsługa pendrive, przykłady, kody
    Utworzony plik ma całe 673KB!
    Rezultat na pendrive dla i = 1 000 000:
    PIC32MX250F128B jako host USB w MPLAB - obsługa pendrive, przykłady, kody
    Plik ma prawie 8MB.

    Przykład 3 - listowanie/wyszukiwanie plików
    Następnie sprawdziłem listowanie/wyszukiwanie plików wedle wzorca, czyli funkcje FindFirst i FindNext. Działają one analogicznie do FindFirstFile/FindNextFile z WINAPI. Znajdują pliki i katalogi pasujące do wzorca, przy okazji zwracając ich atrybuty, rozmiar, itp.
    Przykład poniżej:
    Kod: c
    Zaloguj się, aby zobaczyć kod

    W ramach testu przygotowałem kilka plików na pendrive:
    PIC32MX250F128B jako host USB w MPLAB - obsługa pendrive, przykłady, kody
    Następnie sprawdziłem, czy wyszukiwanie działa. Rezultat:
    PIC32MX250F128B jako host USB w MPLAB - obsługa pendrive, przykłady, kody
    Rozmiary plików wyglądają ok. Widać różne wartosci atrybutów dla folderów i plików. Dodatkowo na liście znalezionych znaduje się nazwa 'NEW', czyli nazwa partycji która też jest widoczna w Windowsie.


    Przykład 4 - odczyt pliku linia po linii
    Pliki tekstowe wygodnie jest czytać linia po linii. Nie potrzebujemy wtedy dużego bufora, a możemy tak przetworzyć duże ilości danych. W bibliotece brakowało mi odpowiednika getline, więc napisałem go samodzielnie. Skrócony kod:
    Kod: c
    Zaloguj się, aby zobaczyć kod

    Kod powyżej otwiera plik data.txt, czyta go linia po linii i wypisuje ich zawartości na UART (bez znaków nowych linii z pliku).
    Rezultaty kodu jeśli na pendrive nie ma takiego pliku - program wyświetli odpowiedni komunikat:
    PIC32MX250F128B jako host USB w MPLAB - obsługa pendrive, przykłady, kody
    Natomiast jeśli na pendrive będzie plik:
    PIC32MX250F128B jako host USB w MPLAB - obsługa pendrive, przykłady, kody
    PIC32MX250F128B jako host USB w MPLAB - obsługa pendrive, przykłady, kody
    Wszystko jest okej - plik jest odczytywany poprawnie.

    Przykład 5 - test pliku 1GB i funkcji seek
    (Uwaga - to nie jest przykład Seek z zalinkowanego wcześniej repozytorium. To jest inny przykład, mój własny, dla pliku binarnego.)
    Na koniec chciałem sprawdzić jak biblioteka poradzi sobie z plikiem o rozmiarze ponad 1000MB. Zdecydowałem, że to będzie plik binarny, w którym powtarzać się będzie wielokrotnie jedna struktura danych (tablica znaków i kilka liczb). W ramach przykładu za pomocą funkcji fseek i fread odczytam wartość jednej ze struktur na środku pliku.
    Zdecydowałem się na taką strukturę:
    Kod: c
    Zaloguj się, aby zobaczyć kod

    Struktura ma 76 bajty (na obu użytych platformach typ int jest 32-bitowy, char to jeden bajt; ale warto pamiętać, że rozmiar typów na innych platformach może być inny).
    Na Windowsie, też w języku C przygotowałem program generujący losowo przykładowe dane wedle ustalonej struktury:
    Kod: c
    Zaloguj się, aby zobaczyć kod

    Pełna wersja w załącznikach.

    Do pliku w sumie trafiło 14,000,000 struktur, każda po 76 bajtów. W sumie około 1GB danych.
    Przy okazji zapisałem co jest w pliku na pozycji 7,000,000-tej struktury:
    PIC32MX250F128B jako host USB w MPLAB - obsługa pendrive, przykłady, kody
    Wygenerowany plik powstał obok programu na Windowsie:
    PIC32MX250F128B jako host USB w MPLAB - obsługa pendrive, przykłady, kody
    Plik przerzuciłem na pendrive.
    Do odczytu na PIC32 użyłem następującego kodu:
    Kod: c
    Zaloguj się, aby zobaczyć kod

    Rezultat na UART:
    PIC32MX250F128B jako host USB w MPLAB - obsługa pendrive, przykłady, kody
    Dane odczytane przez PIC zgadzają się z tymi co wygenerowałem na Windowsie.
    Jak widać, PIC poradził sobie z wyłuskaniem danych z pliku o rozmiarze 1GB. Oczywiście należy tu pamiętać, że PIC nie przetworzył całego pliku, tylko odczytał z niego dane z wybranej pozycji.

    Pełne kody/projekty moich przykładów do pobrania
    Kody powyższych przykładów użycia hosta USB do obsługi pendrive/karty SD umieszczam do pobrania poniżej:
    PIC32-Mass...ge-new.zip Download (7.61 MB)Punkty: 1 dla użytkownika
    Zasadniczo jest to zaktualizowane repozytorium wspomniane wcześniej, do którego dodałem kolejne przykłady.
    Zawartość paczki .zip:
    PIC32MX250F128B jako host USB w MPLAB - obsługa pendrive, przykłady, kody

    Dalsze plany
    Na przedstawionej tutaj płytce można zrealizować znacznie więcej ciekawych projektów wykorzystujących tryb hosta USB, np:
    - obsługa myszki USB
    - obsługa klawiatury USB
    - obsługa pada USB
    - obsługa huba USB
    - aktualizacja firmware poprzez bootloader z pendrive
    Mam w planach zrobić niedługo do któregoś z tych tematów podejście. Po zrealizowaniu każdego z pomysłów będę dawać pełen kod i dokumentację na forum.

    Podsumowanie
    Przetestowałem tutaj PIC32MX250F128B w roli hosta USB obsługującego pendrive i kartę SD w czytniczku. W obu przypadkach wszystko zadziałało.
    Biblioteka pozytywnie mnie zaskoczyła - obsługuje nawet system plików FAT32 i jest w stanie przetworzyć pliki nawet o wielkości 1GB. W przyszłości użyję tego w jakiś konkretniejszych projektach.

    Fajne! Ranking DIY
    Potrafisz napisać podobny artykuł? Wyślij do mnie a otrzymasz kartę SD 64GB.
  • PCBwayPCBway
  • #2
    Tomek515
    Poziom 21  
    Jakiś czas temu gość wrzucił swój projekt i bardzo był napięty żeby przypadkiem nie podzielić się rezultatami swojej pracy. Żeby przypadkiem ktoś tego nie skopiował. A ty wrzucasz kolejny świetnie wykonany projekt i podajesz wszytko na tacy. Szacunek :D
  • PCBwayPCBway
  • #3
    p.kaczmarek2
    Poziom 24  
    Dziękuję, ogólnie to jeśli dobrze pójdzie to o hoście USB na PIC32 napiszę jeszcze kilka tematów (też z pełnymi kodami przykładów).

    O PIC32MX250F128B też.

    A niedawno też przeglądałem nieco nowsze układy od Microchipa, i zorientowałem się, że jest też jakiś PIC32 który ma podobno na pokładzie nie jeden, lecz dwa moduły USB:
    PIC32MX250F128B jako host USB w MPLAB - obsługa pendrive, przykłady, kody
    PIC32MK1024GPD064 - 1024KB Flash, 256KB SRAM, 2 USB Modules, 120MHz
    Mam w planach się nim zainteresować - na ten moment dużo o nim nie wiem. Nie wiem nawet na ile te użycie tych dwóch portów USB tam jest wykonalne.
  • #4
    piotr_go
    Konstruktor DIY elektronika
    Tomek515 napisał:
    Jakiś czas temu gość wrzucił swój projekt i bardzo był napięty żeby przypadkiem nie podzielić się rezultatami swojej pracy. Żeby przypadkiem ktoś tego nie skopiował. A ty wrzucasz kolejny świetnie wykonany projekt i podajesz wszytko na tacy

    Cudzym kodem to każdy chętnie się dzieli. Podziel się swoim.
  • #5
    Chivo
    Poziom 23  
    Cześć,

    Gratuluję świetnego projektu i cieszę się , że zdecydowałeś się na udostępnienie materiałów. Jakiś czas temu pytałem o mikrokontrolery PIC bo chciałbym się nimi w wolnej chwili zająć. Czy Twój projekt nadaje się do nauki PIC? Jeśli tak to mógłbym kupić jedną sztukę, masz może też odstąpić zlutowaną płytkę?

    Pozdrawiam, Rafał
  • #6
    p.kaczmarek2
    Poziom 24  
    Płytkę specjalnie zrobiłem tak by była przyjazna nauce (montaż przewlekany, wyprowadzone piny, dwie diody LED do testowania, zabezpieczenie przed przeciwnym podłączeniem zasilania). Choć sam koncept na pewno można by ulepszyć.

    Jak chcesz jedną sztukę, to napisz na PW.

    Do tego ja na tej płytce jeszcze zamierzam zrealizować parę innych przykładów i projektów.
    W tym taką nakładkę:
    PIC32MX250F128B jako host USB w MPLAB - obsługa pendrive, przykłady, kody
    PIC32MX250F128B jako host USB w MPLAB - obsługa pendrive, przykłady, kody
    Tam jest czujnik temperatury TC74A0, czujnik temperatury-wilgotności DHT11 i RTCC MCP7904 z baterią (ogólnie to sam PIC też na płytce ma miejsce na drugi oscylator i można by samym PICu puścić RTCC w trybie low power).
    Celem płytki powyżej będzie prezentacja jak użyć na PIC32MX250F128B protokołu I2C oraz jak obsługiwać DHT-11. Dane będą logowane do pliku .csv na pendrive tak by potem można było zrobić wykres temp wedle godzin. Przy takim projekcie pojawiają się ciekawe problemy do rozwiązania, np. co jak użytkownik wyjmie pendrive a trzeba będzie zapisać kolejny odczyt... kolejka odczytów do zapisu będzie w pamięci przez czas nieobecności pendrive.

    I dla jasności - to projekt bardziej edukacyjny/demonstracyjny, bo równie dobrze odczyt temperatury/wiilgotności mogę zrobić na pic18f67j60 i mieć wykresy dostępne przez przeglądarkę.