Spisu treści:

Tablet / telefon jako ekran Arduino i oscyloskop o wartości 2 USD: 4 kroki
Tablet / telefon jako ekran Arduino i oscyloskop o wartości 2 USD: 4 kroki

Wideo: Tablet / telefon jako ekran Arduino i oscyloskop o wartości 2 USD: 4 kroki

Wideo: Tablet / telefon jako ekran Arduino i oscyloskop o wartości 2 USD: 4 kroki
Wideo: Сделайте осциллограф своими руками 10 долларов против обычного осциллографа 450 долларов с 2024, Czerwiec
Anonim
Tablet / telefon jako ekran Arduino i oscyloskop o wartości 2 USD
Tablet / telefon jako ekran Arduino i oscyloskop o wartości 2 USD
Tablet / telefon jako ekran Arduino i oscyloskop o wartości 2 USD
Tablet / telefon jako ekran Arduino i oscyloskop o wartości 2 USD
Tablet / telefon jako ekran Arduino i oscyloskop o wartości 2 USD
Tablet / telefon jako ekran Arduino i oscyloskop o wartości 2 USD

Chociaż można kupić tani ekran dotykowy LCD o rozdzielczości 320x240 do projektu opartego na Arduino, wygodniej jest - zwłaszcza do prototypowania i testowania szkicu - używać tabletu lub telefonu jako ekranu dotykowego i źródła zasilania dla projekt. Możesz mieć znacznie wyższą rozdzielczość i lepiej wyglądający wyświetlacz na swoim urządzeniu z Androidem (np. wszystkie linie będą wygładzone).

Ekran z systemem Android można podłączyć przez port szeregowy USB, Bluetooth lub WiFi (np. ESP8266).

W tym celu napisałem VectorDisplay (źródło tutaj), aplikację na Androida, która łączy się z biblioteką Arduino, która implementuje duży podzbiór interfejsu Adafruit GFX. Możesz napisać kod, który następnie można łatwo przenieść, aby używać samodzielnego ekranu, lub nadal używać szkicu z wyświetlaczem opartym na systemie Android. Możesz też wysyłać polecenia z aplikacji na Androida, aby sterować szkicem Arduino. Biblioteka Arduino jest w dużej mierze niezależna od płyty: powinna działać z każdą płytą, która zapewnia obiekt portu szeregowego USB o nazwie Serial lub z ESP8266 przez Wi-Fi lub Bluetooth (najpierw sparuj płytę).

Jako dowód zastosowania koncepcji, przeportowałem projekt bare-bones STM32-O-Scope, aby używać VectorDisplay zamiast wyświetlacza ILI9341. Rezultatem jest (szorstki na krawędziach) przenośny, zasilany bateryjnie oscyloskop 1,7 MS/s, który wymaga jedynie płytki STM32F103C o wartości 2 USD (przy użyciu rdzenia Arduino opartego na libmaple), dwóch przewodów, kabla USB OTG i urządzenia z systemem Android. Oczywiście wszystko, co masz dzięki temu, to zakres od 0 do około 3,3V.

Krok 1: Zainstaluj oprogramowanie

Zakładam, że masz skonfigurowane Arduino IDE dla swojej ulubionej płyty i że twoja ulubiona płyta ma interfejs szeregowy USB.

Przejdź do szkicu | Dołącz bibliotekę | Zarządzaj bibliotekami. Umieść "VectorDisplay" w obszarze wyszukiwania i kliknij "Zainstaluj" po znalezieniu.

Pobierz plik zip biblioteki stąd.

Rozpakuj do folderu w folderze Arduino/libraries.

Pobierz VectorDisplay z Google Play i zainstaluj go na swoim urządzeniu z Androidem. Może być konieczne włączenie instalacji z nieznanych źródeł na urządzeniu z Androidem. Aplikacja na Androida korzysta z biblioteki UsbSerial, a punktem wyjścia była jedna z przykładowych aplikacji dla biblioteki.

Krok 2: Szkic demonstracyjny

Szkic demonstracyjny
Szkic demonstracyjny
Szkic demonstracyjny
Szkic demonstracyjny
Szkic demonstracyjny
Szkic demonstracyjny
Szkic demonstracyjny
Szkic demonstracyjny

Podłącz swoją tablicę (w razie potrzeby w trybie przesyłania) do komputera i przejdź do Plik | Przykłady | Wyświetlanie wektora | kręgi w twoim Arduino IDE. Kliknij przycisk przesyłania (strzałka w prawo).

Uruchom aplikację VectorDisplay na swoim urządzeniu z Androidem. Podłącz swoją płytę do urządzenia z systemem Android za pomocą kabla USB OTG. (Jeśli twoja płyta ma port micro USB, upewnij się, że strona hosta USB OTG przechodzi do urządzenia z systemem Android). Powinieneś teraz otrzymać zapytanie o pozwolenie dla VectorDisplay. Wciśnij OK.

Jeśli wszystko pójdzie dobrze, VectorDisplay pokaże teraz dwa przyciski po lewej stronie ekranu: Okrąg i Kolor. Naciśnięcie Kółka rysuje losowe kółko na ekranie, a Kolor zmienia kolor na losowy kolor przed następnym kółkiem.

Jeśli spojrzysz na szkic okręgów w IDE, zobaczysz, że szeregowy wyświetlacz wektorowy jest zadeklarowany z:

SerialDisplayClass Wyświetlacz;

a następnie zainicjowany w setup() za pomocą:

Wyświetl.początek();

Następnie przyciski poleceń są wymagane za pomocą Display.addButton(). Następnie loop() wywołuje Display.readMessage() w celu wyszukania poleceń wysyłanych za pomocą przycisków poleceń.

Domyślnie układ współrzędnych dla wyświetlacza to 240x320. Jednak linie i tekst są rysowane w pełnej rozdzielczości ekranu urządzenia z systemem Android, z antyaliasingiem zapewniającym dobry wygląd. Dlatego aplikacja nazywa się Vector Display.

Krok 3: API

API w bibliotece znajduje się w pliku VectorDisplay.h. Musisz najpierw zainicjować obiekt Display. W przypadku użycia USB zrób to za pomocą:

SerialDisplayClass Wyświetlacz;

Zainicjuj połączenie za pomocą Display.begin().

W obiekcie SerialDisplayClass dostępne są dwa zestawy metod: jeden zestaw używa 32-bitowego koloru (w tym alfa) i poleceń, które są bardzo zbliżone do protokołu szeregowego USB, którego używa moja aplikacja VectorDisplay, a drugi zestaw jest podzbiorem standardu Metody biblioteki Adafruit GFX, wykorzystujące 16-bitowy kolor. W większości możesz dowolnie mieszać oba zestawy poleceń, z wyjątkiem tego, że jeśli używasz metod zgodnych z Adafruit, powinieneś używać 16-bitowych poleceń kolorów, których nazwy kończą się na 565 zamiast 32-bitowych.

Możesz ustawić układ współrzędnych za pomocą Display.coordinates(szerokość, wysokość). Wartość domyślna to szerokość=240 i wysokość=320. Jeśli chcesz emulować wyświetlacz z pikselami niekwadratowymi, możesz użyć Display.pixelAspectRatio(ratio).

Kilka metod, w tym pixelAspectRatio(), przyjmuje argument FixedPoint32. Jest to 32-bitowa liczba całkowita reprezentująca liczbę zmiennoprzecinkową, gdzie 65536 oznacza 1,0. Aby przekonwertować liczbę zmiennoprzecinkową x na FixedPoint32, wykonaj: (FixedPoint32)(65536. * x) (lub po prostu TO_FP32(x)).

Oprócz możliwości wysyłania poleceń z przycisków Androida, zdarzenia dotyczące dotyku ekranu są również wysyłane do MCU.

W przypadku korzystania z Wi-Fi zobacz przykład circles_esp8266. Aby przełączyć się w tryb Wi-Fi, musisz nacisnąć przycisk USB w aplikacji.

W przypadku Bluetooth powinieneś być w stanie zrobić:

Wyświetlacz SerialDisplayClass (MyBluetoothSerial);

… MójBluetoothSerial.begin(115200); Wyświetl.początek();

a następnie postępuj tak jak w przypadku portu szeregowego USB, gdzie MyBluetoothSerial to dowolny obiekt Stream (np. Serial2) podłączony do adaptera Bluetooth.

Krok 4: Oscyloskop o wartości 2 USD

Oscyloskop o wartości 2 USD
Oscyloskop o wartości 2 USD
Oscyloskop o wartości 2 USD
Oscyloskop o wartości 2 USD
Oscyloskop o wartości 2 USD
Oscyloskop o wartości 2 USD

Do szybkiego i brudnego oscyloskopu potrzebna będzie płytka STM32F103C8 w kolorze niebieskim lub czarnym (łatwiejsza w obsłudze), którą można dostać na Aliexpress za niecałe 2 dolary. Opiszę jak przygotować płytkę do pracy ze środowiskiem Arduino i zainstalować szkice tutaj.

Pobierz ten szkic na tablicy, który jest zmodyfikowaną wersją szkicu STM32-O-Scope firmy Pingumacpenguin. Edytuj linię #define BOARD_LED, aby pasowała do Twojej tablicy. Używam czarnej pigułki, której dioda LED to PB12. Niebieskie pigułki (i niektóre czarne pigułki, które mają taki sam pinout jak niebieska pigułka) mają diodę LED na PC13.

Podłącz jeden przewód - sondę uziemiającą - do uziemienia płyty, a drugi przewód do styku B0 płyty. Podłącz płytkę do urządzenia z systemem Android z uruchomionym VectorDisplay i masz przenośny, zasilany bateryjnie oscyloskop.

Na zdjęciu mam oscyloskop podpięty do fototranzystora. Ślad na ekranie pochodzi z pilota telewizyjnego na podczerwień.

Zalecana: