Spisu treści:

Arduino IDE: tworzenie niestandardowych płytek: 10 kroków
Arduino IDE: tworzenie niestandardowych płytek: 10 kroków

Wideo: Arduino IDE: tworzenie niestandardowych płytek: 10 kroków

Wideo: Arduino IDE: tworzenie niestandardowych płytek: 10 kroków
Wideo: Arduino millis i maszyna stanów zamiast delay 2024, Lipiec
Anonim
Arduino IDE: tworzenie niestandardowych płytek
Arduino IDE: tworzenie niestandardowych płytek
Arduino IDE: tworzenie niestandardowych płytek
Arduino IDE: tworzenie niestandardowych płytek
Arduino IDE: tworzenie niestandardowych płytek
Arduino IDE: tworzenie niestandardowych płytek

W ciągu ostatnich sześciu miesięcy spędziłem dużo czasu na portowaniu różnych bibliotek na płytkę Robo HAT MM1 opracowaną przez Robotics Masters. Doprowadziło to do odkrycia wielu informacji o tych bibliotekach, o tym, jak działają za kulisami, a co najważniejsze - co zrobić, aby w przyszłości dodać nowe tablice.

Jest to pierwszy z serii wpisów, które zrobię, aby pomóc innym, którzy chcą przenieść biblioteki na swoje tablice. Wiele źródeł informacji może być niejasnych lub trudnych do zrozumienia dla osób postronnych. Mam nadzieję, że zdemistyfikuję i wyjaśnię, jak osiągnąć udany port dla wszystkich.

Dzisiaj przyjrzymy się platformie Arduino. Ma ponad 700 000 różnych wariantów płytek na całym świecie i jest jedną z najpopularniejszych platform elektronicznych dla edukacji, przemysłu i producentów.

Po wielu wyszukiwaniach w Google mogłem znaleźć tylko bardzo ograniczone źródła informacji o tym, jak to zrobić. Pomyślałem więc, że opiszę szczegółowo, jak to zrobiłem.

No to ruszamy!

Krok 1: Zanim zaczniesz

Zanim zaczniesz przenosić bibliotekę oprogramowania lub oprogramowanie układowe na swoją płytę główną, musisz znać kilka kluczowych punktów dotyczących używanej technologii i być w stanie odpowiedzieć na poniższe pytania.

  1. Jakiego procesora używasz?
  2. Jakiej architektury używa?
  3. Czy mam dostęp do arkusza danych tego mikroprocesora?
  4. Czy na rynku jest podobna płyta, która wykorzystuje ten sam mikroprocesor?

To są bardzo ważne. Będzie to miało wpływ na wiele aspektów Twojego podejścia do procesu rozwoju.

Płyty Arduino zwykle używają ograniczonej liczby typów procesorów i architektur. Najpopularniejszym jest seria ATMEGA wykorzystująca architekturę AVR (Arduino Uno). Istnieją nowsze generacje Arduino, które stają się coraz bardziej popularne przy użyciu procesorów SAMD (ARM) i innych mocniejszych procesorów. Dlatego ważne jest, aby sprawdzić, którego używasz.

Arkusz danych dla mikroprocesora jest absolutnie niezbędny, aby upewnić się, że płyta reaguje zgodnie z oczekiwaniami podczas kompilacji oprogramowania układowego. Bez tego nie będziesz w stanie ustawić poprawnych funkcji wyjścia pinów ani skonfigurować portów szeregowych.

Gdy masz już wszystkie potrzebne informacje na temat używanego procesora, możesz zacząć przeglądać oprogramowanie i modyfikować je, aby działało na niestandardowej płycie.

Krok 2: Przegląd

Najtrudniejszą częścią każdego projektu jest znalezienie dobrego punktu wyjścia. Nie inaczej jest. Miałem problemy ze znalezieniem dobrych samouczków z wystarczającą ilością szczegółów na temat tworzenia niestandardowych płyt dla Arduino. Większość samouczków pokazuje, jak „dodać niestandardową tablicę”, ale nie jak „utworzyć niestandardową tablicę”. Oto krótkie podsumowanie tego, co się z tym wiąże.

  1. Pobierz istniejące definicje tablicy i kopie
  2. Aktualizacja plików definicji (variant.h, varient.cpp)
  3. Utwórz wpis na tablicy (board.txt)
  4. Zaktualizuj wersję tablicy (platform.txt)
  5. Przygotowanie do instalacji (json)
  6. Instalowanie płytki w Arduino IDE

Każdy krok zostanie szczegółowo wyjaśniony poniżej. Odbędzie się również obszerna dyskusja na temat interakcji poszczególnych plików, aby wyjaśnić, jak wszystko działa za Arduino IDE.

W tym samouczku pokażę, jak stworzyć niestandardową płytkę dla procesorów SAMD. Dokładniej, SAMD21G18A - czyli mikroprocesor używany na płycie Robo HAT MM1, którą portowałem.

Zakładam również, że masz już pobrane Arduino IDE 1.8 lub nowsze. Użyłem Arduino 1.8.9 w momencie pisania.

Krok 3: Pobieranie istniejących tablic

Pobieranie istniejących tablic
Pobieranie istniejących tablic
Pobieranie istniejących tablic
Pobieranie istniejących tablic
Pobieranie istniejących tablic
Pobieranie istniejących tablic

Pierwszym krokiem jest pobranie najbliższego wariantu płytki Arduino, który pasuje do Twojej płytki. W przypadku płyt SAMD jest to Arduino Zero.

Od Arduino IDE 1.6 metoda pobierania nowych płyt do środowiska polegała na dodawaniu specjalnych plików JSON dostarczanych przez programistów, a następnie instalowaniu niestandardowych płyt za pomocą „Menedżera płyt”. Poprzednie wersje Arduino IDE wykorzystywały inną metodę, o której nie będziemy dzisiaj dyskutować. W dalszej części tego samouczka stworzymy własny plik JSON, jednak najpierw musimy dodać płytkę Arduino Zero za pomocą tej metody.

Na szczęście dla nas płyta, którą chcemy pobrać, nie potrzebuje pliku JSON, ponieważ plik JSON jest wstępnie dołączony do Arduino IDE - więc wystarczy zainstalować płytkę z „Boards Manager”.

W tym celu przejdź do „Narzędzia”, a następnie rozwiń menu „Płyta”. W górnej części menu „Tablica” znajduje się „Menedżer tablic”. Kliknij tę opcję menu, aby wyświetlić Menedżera tablic.

(Zobacz obrazy)

Po otwarciu Boards Manager przejrzy wszystkie pliki JSON, które zapisał w Arduino IDE, a następnie pobierze ustawienia z pliku. Powinieneś zobaczyć długą listę dostępnych płyt Arduino, które możesz zainstalować.

(Zobacz obrazy)

Interesuje nas tylko płyta „Arduino SAMD Boards (32-bity ARM Cortex-M0+)” do tego samouczka, ale w tym momencie możesz odejść i zainstalować potrzebną płytę. Wyszukaj i zainstaluj płytę „Arduino SAMD Boards (32-bit ARM Cortex-M0+)”. Można to zrobić, klikając tekst z listy, a następnie przycisk „Zainstaluj” po prawej stronie, który pojawi się po kliknięciu tekstu. Instalacja zajmie kilka minut.

Aby uzyskać więcej informacji na temat instalacji nowych płyt: Adafruit ma tutaj świetny samouczek, który wyjaśnia, jak zainstalować swoje płyty Feature M0.

Teraz, gdy pliki tablicy zostały zainstalowane, jesteśmy w stanie je skopiować, aby można je było modyfikować dla niestandardowej tablicy.

Krok 4: Znajdowanie i kopiowanie plików tablicy

Znajdowanie i kopiowanie plików tablicy
Znajdowanie i kopiowanie plików tablicy
Znajdowanie i kopiowanie plików tablicy
Znajdowanie i kopiowanie plików tablicy
Znajdowanie i kopiowanie plików tablicy
Znajdowanie i kopiowanie plików tablicy

W systemie Windows pliki tablicy znajdują się w (pamiętaj, aby zmienić nazwę użytkownika na swoją nazwę użytkownika):

C:\Users\nazwa użytkownika\AppData\Local\Arduino15\packages

W tym folderze musisz wejść trochę głębiej, aby dostać się do plików, które musisz skopiować, aby zmodyfikować. W tym samouczku przejdziemy i pobierzemy pliki płyty Arduino Zero, które zostaną zainstalowane (pamiętaj, aby zmienić nazwę użytkownika na swoją nazwę użytkownika):

C: Użytkownicy Nazwa użytkownika AppData Lokalny Arduino15 pakiety arduino sprzęt samd

Skopiuj folder o numerze wersji znajdujący się w tym katalogu do nowego folderu w folderze Dokumenty lub wybranym folderze. Na potrzeby tego samouczka umieszczę je w nowym folderze o nazwie „tablice niestandardowe” w Dokumentach.

Folder zawiera wiele folderów i katalogów. Te, których będziemy używać, są zaznaczone w tabeli na zrzucie ekranu.

Krok 5: Tworzenie wariantu

Tworzenie wariantu
Tworzenie wariantu
Tworzenie wariantu
Tworzenie wariantu
Tworzenie wariantu
Tworzenie wariantu
Tworzenie wariantu
Tworzenie wariantu

Jesteśmy teraz gotowi do rozpoczęcia tworzenia własnego wpisu na tablicy. W tym samouczku użyję Robo HAT MM1 jako przykładu. Jak wcześniej wspomniano, jest to płytka oparta na SAMD, która jest najbardziej zbliżona do Arduino Zero.

Zaczniemy od przejścia do folderu variants i skopiowania znajdującego się tam folderu arduino_zero. Zmienimy nazwę nowego wariantu płyty na „robohatmm1”. Możesz nazwać swoją, jak chcesz.

(Zobacz zdjęcie)

Wewnątrz folderu robohatmm1 znajdują się dwa piny, które musimy rozpocząć edycję: wariant.cpp i wariant.h. Otwórz oba.

Zajęło mi to trochę czasu, więc wyjaśnię to tutaj, aby zaoszczędzić trochę czasu. Plik wariant.cpp zawiera bardzo dużą tablicę pinów, do której odwołuje się cały wariant variant.h. Wszystkie referencje pinów w Variant.h są referencjami do konfiguracji pinów w określonej pozycji w tablicy variant.cpp.

(Zobacz zrzut ekranu z dwoma plikami)

Tak więc większość twoich edycji będzie miała miejsce w obu tych plikach, ale musisz upewnić się, że jeśli zmienisz kolejność pinów w variants.cpp - musisz zmienić referencje w pliku nagłówkowym (variants.h). W przypadku Robo HAT MM1 musiałem zmienić tylko niektóre piny i funkcje. Dokonano tego w wariantach.h. Dodałem kilka nowych pinów PWM, ponieważ SAMD21 jest w stanie obsłużyć 12 kanałów PWM. Dodałem również kilka nazw dla Servos, Signals (zamiast ADC/Digital) i niestandardowe mapowanie do odpowiednich funkcji - takich jak SPI, UART i I2C.

Ważną rzeczą, na którą należy zwrócić uwagę, jest dokładne sprawdzenie, czy odwołania do tablicy, których używasz dla funkcji opisanych w variants.h, zgadzają się z pinem w varaints.cpp - któremu teraz przyjrzymy się.

Variants.cpp to bardzo potężny i ważny plik. Wykonuje całą ciężką pracę polegającą na ustawieniu pinów, aby dopasować ustawienia sprzętowe. Najłatwiej to wyjaśnić za pomocą przykładu i wyjaśnienia każdej części.

(Zobacz tabelę na zrzucie ekranu)

Przykład (wyciąg z options.cpp)

{ PORTA, 22, PIO_SERCOM, PIN_ATTR_NONE, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE }, // SDA

Jest to pierwszy pin w tablicy variants.cpp dla Robo HAT MM1. Tabela z arkusza danych została dostarczona jako obrazek (szara tabela).

(Zobacz obrazy)

Ten konkretny pin jest używany do funkcji I2C Data Pin. Patrząc na tabelę, widzimy, że ten pin może być użyty jako pin I2C SDA (dobry początek!). Pin nosi nazwę „PA22”, co jest skrótem od PORTA na pinie 22. Od razu możemy ustawić PORT i numer pinu dla tego pinu.

Następną rzeczą, którą musimy zrobić, to ustawić pin jako port komunikacji szeregowej. Pin posiada komunikację szeregową dostępną poprzez funkcję C (PIO_SERCOM) za pomocą SERCOM 3 i D za pomocą SERCOM5 (PIO_SERCOM_ALT). Na potrzeby Robo HAT MM1 używamy SERCOM3 do komunikacji I2C. To jest w funkcji C; znany jako. PIO_SERCOM dla variants.cpp.

Ponieważ planujemy używać tego pinu tylko jako I2C SDA, nie ma potrzeby ustawiania żadnej z innych funkcji. Wszystkie można ustawić jako opcje „Nie” lub „Nie” z poprzedniej tabeli. Jeśli jednak chcielibyśmy użyć innych funkcji - moglibyśmy przejść przez arkusz danych i umieścić je wszystkie w odpowiednich miejscach. To wszystko w arkuszu danych.

Modyfikowanie plików wariantów może zająć trochę czasu. Bądź ostrożny i zawsze trzykrotnie sprawdzaj.

Krok 6: Utwórz definicję tablicy

Utwórz definicję tablicy
Utwórz definicję tablicy

Gdy masz już gotowe pliki wariantów, powinno to być proste. Większość pracy będzie polegała na kopiowaniu i wklejaniu lub modyfikowaniu i aktualizowaniu plików.

Zaczynając od boards.txt.

(Zobacz zdjęcie)

Będziesz chciał skopiować i wkleić definicję tablicy, która już tam jest. Jeszcze raz polecam Arduino Zero.

Dla uproszczenia zmień tylko nazwę płyty (pierwsza linia), usb_product, usb_manufacturer i wariant (robohat). Możesz później dostosować inne argumenty do własnych potrzeb - na przykład niestandardowy bootloader lub różne USB VID/PID do identyfikacji twojej płyty.

Wariant planszy musi być zgodny z nazwą nadaną folderowi utworzonemu na początku. W tym samouczku nazwałem go „robohatmm1”.

Zaleca się również zmianę pierwszej części każdej linii, aby pasowała do nazwy tablicy. Na zrzucie ekranu zmieniono go na „robo_hat_mm1”. Powinieneś wybrać nazwę swojej tablicy w tym samym formacie.

To wszystko dla boards.txt, chyba że chcesz wprowadzić dalsze modyfikacje, o których mowa powyżej.

Krok 7: Zaktualizuj wersję tablicy

Zaktualizuj wersję tablicy
Zaktualizuj wersję tablicy

W plikach platform.txt zmień nazwę na nazwę swojej niestandardowej tablicy. Zmień również numer wersji. Zapamiętaj, co to ustawiłeś, będziemy potrzebować później.

Krok 8: Utwórz plik pakietu JSON

Utwórz plik pakietu JSON
Utwórz plik pakietu JSON
Utwórz plik pakietu JSON
Utwórz plik pakietu JSON

Aby zainstalować swoją płytkę w Arduino IDE, musisz utworzyć plik JSON, który zaimportujesz. Plik JSON informuje Arduino IDE, gdzie pobrać pliki do zainstalowania płyty, jakie dodatkowe pakiety są potrzebne i kilka innych bitów metadanych.

Bardzo ważne jest, aby zapisać ten plik poza folderem, w którym właśnie pracowaliśmy.

Większość pliku można skopiować i wkleić do swojego. Musisz tylko zmienić sekcję „tablice” i inne metadane u góry pliku. Zobacz zrzut ekranu, aby dowiedzieć się, co należy zaktualizować.

(Zobacz zdjęcie)

  • Sekcja czerwona: to metadane, których użytkownicy mogą używać do znajdowania pomocy. Ma bardzo małe znaczenie techniczne.
  • Sekcja Niebieska: Wszystko to jest ważne. Pokazują w Arduino IDE. Nazwa, architektura i wersja będą widoczne dla każdego, kto próbuje zainstalować pakiet. W tym miejscu należy umieścić numer wersji z pliku ports.txt. Druga niebieska sekcja to lista płyt wchodzących w skład pakietu. Możesz mieć wiele tablic.
  • Zielona sekcja: Ta sekcja wymaga dalszych wyjaśnień.

(Zobacz tabelę na obrazach)

Po utworzeniu pliku zip, uzyskaniu sumy kontrolnej pliku zip i rozmiaru pliku, możesz teraz przesłać plik zip do lokalizacji. Musisz umieścić ten adres URL w polu „url”. Jeśli nazwa lub którykolwiek z powyższych szczegółów jest nieprawidłowy, Twoja niestandardowa tablica nie zostanie zainstalowana.

Upewnij się również, że plik pakiet_nazwa_tablicy_indeks.json został przesłany do publicznej lokalizacji w Internecie. GitHub to dobra opcja.

Plik tablicy niestandardowej Robo HAT MM1 można znaleźć tutaj.

Krok 9: Ostatni krok - zainstaluj niestandardową tablicę

Ostatni krok - zainstaluj niestandardową tablicę!
Ostatni krok - zainstaluj niestandardową tablicę!
Ostatni krok - zainstaluj niestandardową tablicę!
Ostatni krok - zainstaluj niestandardową tablicę!

Wszystko idzie dobrze, powinieneś być teraz w stanie dołączyć plik JSON do Arduino IDE i zainstalować niestandardową tablicę.

Dołączenie pliku JSON jest łatwe! W Arduino IDE - po prostu przejdź do „Plik”> „Preferencje” i skopiuj i wklej lokalizację (URL) swojego pakietu_nazwa_tablicy_index.json do sekcji „Additional Boards Manager URLs” na dole menu Preferencje.

(Zobacz zdjęcie)

Następnie naciśnij OK.

Przeprowadź przez powyższe instrukcje dotyczące instalowania nowych płyt, jeśli zapomniałeś. Pamiętaj, aby tym razem poszukać swojej niestandardowej tablicy!

(Zobacz zdjęcie)

Aby uzyskać więcej informacji na temat instalacji nowych płyt: Adafruit ma tutaj świetny samouczek, który wyjaśnia, jak zainstalować swoje płyty Feature M0.

Krok 10: Wniosek

Wniosek
Wniosek
Wniosek
Wniosek

Fajnie było tworzyć niestandardowe płytki Arduino. Jest jeszcze wiele do eksperymentowania w przyszłości (dodawanie dodatkowych portów szeregowych), ale było to wspaniałe doświadczenie edukacyjne!

Koniecznie sprawdź także kampanię Crowd Supply. Kończy się 11 czerwca 2019 r.

www.crowdsupply.com/robotics-masters/robo-…

Mam nadzieję, że to ci pomogło lub dobrze się bawiłeś!

Dziękuję!

Zalecana: