Inhoudsopgave:

Tablet/telefoon als Arduino-scherm en een oscilloscoop van $ 2 - Ajarnpa
Tablet/telefoon als Arduino-scherm en een oscilloscoop van $ 2 - Ajarnpa

Video: Tablet/telefoon als Arduino-scherm en een oscilloscoop van $ 2 - Ajarnpa

Video: Tablet/telefoon als Arduino-scherm en een oscilloscoop van $ 2 - Ajarnpa
Video: REWIND - OFFICIAL TRAILER (Bioscoopfilm Céline & Michiel) 2024, November
Anonim
Tablet/telefoon als Arduino-scherm en een oscilloscoop van $ 2
Tablet/telefoon als Arduino-scherm en een oscilloscoop van $ 2
Tablet/telefoon als Arduino-scherm en een oscilloscoop van $ 2
Tablet/telefoon als Arduino-scherm en een oscilloscoop van $ 2
Tablet/telefoon als Arduino-scherm en een oscilloscoop van $ 2
Tablet/telefoon als Arduino-scherm en een oscilloscoop van $ 2

Hoewel je een goedkoop 320x240 LCD-aanraakscherm kunt kopen voor een Arduino-gebaseerd project, kan het handiger zijn - vooral voor het maken van prototypes en het testen van een schets - om een tablet of telefoon te gebruiken als zowel een aanraakscherm als een stroombron voor een projecteren. U kunt een veel hogere resolutie en een mooiere weergave op uw Android-apparaat hebben (al uw lijnen worden bijvoorbeeld voorzien van anti-aliasing).

Het op Android gebaseerde scherm kan worden aangesloten via USB Serial, Bluetooth of WiFi (bijv. ESP8266).

Daartoe schreef ik VectorDisplay (bron hier), een Android-app die is gekoppeld aan een Arduino-bibliotheek die een grote subset van de Adafruit GFX-interface implementeert. U kunt code schrijven die vervolgens gemakkelijk kan worden overgezet naar een stand-alone scherm, of de schets blijven gebruiken met een op Android gebaseerd scherm. En u kunt vanuit de Android-app opdrachten verzenden om de Arduino-schets te besturen. De Arduino-bibliotheek is grotendeels bordonafhankelijk: het zou moeten werken met elk bord dat een USB-serieel poortobject met de naam Serieel biedt of met een ESP8266 via WiFi of met Bluetooth (koppel eerst uw bord).

Als proof-of-concept-toepassing heb ik het kale STM32-O-Scope-project overgezet om VectorDisplay te gebruiken in plaats van het ILI9341-display. Het resultaat is een draagbare, op batterijen werkende 1,7 MS/s-oscilloscoop die niets meer nodig heeft dan een STM32F103C-kaart van $ 2 (met behulp van de op libmaple gebaseerde Arduino-kern), twee draden, een USB OTG-kabel en een Android-apparaat. Natuurlijk krijg je hiermee alleen een bereik van 0 tot ongeveer 3,3 V.

Stap 1: Software installeren

Ik neem aan dat je een Arduino IDE hebt ingesteld voor je favoriete bord en dat je favoriete bord een seriële USB-interface heeft.

Ga naar Schets | Bibliotheek toevoegen | Beheer bibliotheken. Zet "VectorDisplay" in het zoekgebied en klik op "Installeren" zodra het is gevonden.

Download hier de bibliotheekzip.

Pak het uit in een map in uw Arduino/bibliotheken-map.

Download VectorDisplay van Google Play en installeer het op uw Android-apparaat. Mogelijk moet u installatie van onbekende bronnen op uw Android-apparaat inschakelen. De Android-app maakt gebruik van de UsbSerial-bibliotheek en het uitgangspunt was een van de voorbeeld-apps voor de bibliotheek.

Stap 2: Demoschets

Demo schets
Demo schets
Demo schets
Demo schets
Demo schets
Demo schets
Demo schets
Demo schets

Sluit je bord (indien nodig in uploadmodus) aan op je computer en ga naar Bestand | Voorbeelden | Vectorweergave | cirkels in uw Arduino IDE. Klik op de upload-knop (pijl naar rechts).

Start de VectorDisplay-app op uw Android-apparaat. Sluit uw bord aan op het Android-apparaat via een USB OTG-kabel. (Als uw bord een USB-micropoort heeft, zorg er dan voor dat uw USB OTG-hostkant naar het Android-apparaat gaat). U zou nu een toestemmingsverzoek voor VectorDisplay moeten krijgen. Druk op OK.

Als alles goed gaat, toont VectorDisplay nu twee knoppen aan de linkerkant van het scherm: Cirkel en Kleur. Als u op Cirkel drukt, wordt een willekeurige cirkel op het scherm getekend en Kleur verandert de kleur in een willekeurige kleur vóór de volgende cirkel.

Als je naar de cirkelschets in de IDE kijkt, zul je zien dat de seriële vectorweergave wordt gedeclareerd met:

SerialDisplayClass-weergave;

en vervolgens geïnitialiseerd in setup() met:

Toon.begin();

Vervolgens worden opdrachtknoppen opgevraagd met Display.addButton(). Vervolgens roept loop() Display.readMessage() aan om te zoeken naar opdrachten die via de opdrachtknoppen worden verzonden.

Het coördinatensysteem voor de weergave is standaard 240x320. Lijnen en tekst worden echter allemaal getekend met de volledige resolutie van het scherm van uw Android-apparaat, met anti-aliasing voor een goed uiterlijk. Daarom heet de app Vector Display.

Stap 3: API

De API in de bibliotheek bevindt zich in het VectorDisplay.h-bestand. U moet eerst een Display-object initialiseren. Voor USB-gebruik, doe dat met:

SerialDisplayClass-weergave;

Initialiseer de verbinding met Display.begin().

Er zijn twee sets methoden beschikbaar in het SerialDisplayClass-object: de ene set gebruikt 32-bits kleuren (inclusief alfa) en opdrachten die redelijk dicht bij het USB-seriële protocol liggen dat mijn VectorDisplay-app gebruikt, en de andere set is een subset van de standaard Adafruit GFX-bibliotheekmethoden, met 16-bits kleur. Voor het grootste deel kun je de twee sets commando's vrij mixen, met de uitzondering dat als je de Adafruit-compatibele methoden gebruikt, je de 16-bits kleurcommando's moet gebruiken waarvan de namen eindigen op 565 in plaats van de 32-bits.

U kunt het coördinatensysteem instellen met Display.coordinates(width, height). De standaardwaarde is breedte=240 en hoogte=320. Als u een weergave met niet-vierkante pixels wilt emuleren, kunt u Display.pixelAspectRatio(ratio) gebruiken.

Een paar van de methoden, waaronder pixelAspectRatio(), gebruiken een FixedPoint32-argument. Dit is een 32-bits geheel getal dat een getal met drijvende komma vertegenwoordigt, waarbij 65536 1,0 vertegenwoordigt. Om een drijvende-kommagetal x naar FixedPoint32 te converteren, doet u: (FixedPoint32)(65536. * x) (of gewoon TO_FP32(x)).

Naast het kunnen verzenden van opdrachten vanaf Android-knoppen, worden schermaanraakgebeurtenissen ook naar de MCU verzonden.

Zie het voorbeeld circles_esp8266 voor WiFi-gebruik. Je moet op de USB-knop in de app drukken om over te schakelen naar wifi-modus.

Voor Bluetooth zou je het volgende moeten kunnen doen:

SerialDisplayClass Display (MyBluetoothSerial);

… MyBluetoothSerial.begin(115200); Toon.begin();

en ga dan verder zoals in het USB-seriële geval, waarbij MyBluetoothSerial het Stream-object (bijv. Serial2) is dat op uw Bluetooth-adapter is aangesloten.

Stap 4: Een oscilloscoop van $ 2

Een oscilloscoop van $ 2
Een oscilloscoop van $ 2
Een oscilloscoop van $ 2
Een oscilloscoop van $ 2
Een oscilloscoop van $ 2
Een oscilloscoop van $ 2

Voor de snelle en vuile oscilloscoop heb je een blauw of zwart (gemakkelijker te hanteren) pill STM32F103C8-bord nodig, dat je op Aliexpress voor minder dan $ 2 kunt krijgen. Ik beschrijf hoe je het bord klaarmaakt voor gebruik met de Arduino-omgeving ervoor en installeer schetsen hier.

Download deze schets op het bord, een aangepaste versie van de STM32-O-Scope-schets van Pingumacpenguin. Bewerk de #define BOARD_LED-lijn zodat deze overeenkomt met uw bord. Ik gebruik een zwarte pil waarvan de LED PB12 is. De blauwe pillen (en sommige zwarte pillen die dezelfde pinout hebben als de blauwe pil) hebben de LED op PC13.

Sluit een draad - aardsonde - aan op de aarde van het bord en een andere draad op de B0-pin van het bord. Sluit het bord aan op een Android-apparaat waarop VectorDisplay draait, en je hebt een draagbare oscilloscoop op batterijen.

Op de foto heb ik de oscilloscoop aangesloten op een fototransistor. Het spoor op het scherm is afkomstig van een infraroodafstandsbediening van een tv.

Aanbevolen: