İçindekiler:

Arduino Ekranı Olarak Tablet/Telefon ve 2$ Osiloskop: 4 Adım
Arduino Ekranı Olarak Tablet/Telefon ve 2$ Osiloskop: 4 Adım

Video: Arduino Ekranı Olarak Tablet/Telefon ve 2$ Osiloskop: 4 Adım

Video: Arduino Ekranı Olarak Tablet/Telefon ve 2$ Osiloskop: 4 Adım
Video: Eski telefon ve tabletten osiloscop yapımı 2024, Temmuz
Anonim
Arduino Ekranı Olarak Tablet/Telefon ve 2$ Osiloskop
Arduino Ekranı Olarak Tablet/Telefon ve 2$ Osiloskop
Arduino Ekranı Olarak Tablet/Telefon ve 2$ Osiloskop
Arduino Ekranı Olarak Tablet/Telefon ve 2$ Osiloskop
Arduino Ekranı Olarak Tablet/Telefon ve 2$ Osiloskop
Arduino Ekranı Olarak Tablet/Telefon ve 2$ Osiloskop

Arduino tabanlı bir proje için ucuz bir 320x240 LCD dokunmatik ekran satın alınabilse de, bir tablet veya telefonu hem dokunmatik ekran hem de güç kaynağı olarak kullanmak - özellikle prototipleme ve bir eskizi test etmek için - daha uygun olabilir. proje. Android cihazınızda çok daha yüksek bir çözünürlüğe ve daha iyi görünen bir ekrana sahip olabilirsiniz (örneğin, tüm satırlarınız kenar yumuşatılır).

Android tabanlı ekran, USB Seri, Bluetooth veya WiFi (örn., ESP8266) aracılığıyla bağlanabilir.

Bu amaçla, Adafruit GFX arabiriminin büyük bir alt kümesini uygulayan bir Arduino kitaplığıyla eşleşen bir Android uygulaması olan VectorDisplay (buradaki kaynak) yazdım. Daha sonra bağımsız bir ekran kullanmak için kolayca taşınabilen bir kod yazabilir veya taslağı Android tabanlı bir ekranla kullanmaya devam edebilirsiniz. Arduino taslağını kontrol etmek için Android uygulamasından komutlar gönderebilirsiniz. Arduino kitaplığı büyük ölçüde karttan bağımsızdır: Seri adlı bir USB seri bağlantı noktası nesnesi sağlayan herhangi bir kartla veya WiFi üzerinden bir ESP8266 veya Bluetooth ile çalışmalıdır (önce kartınızı eşleştirin).

Konsept uygulamasının bir kanıtı olarak, ILI9341 ekranının yerine VectorDisplay'i kullanmak için çıplak kemik STM32-O-Scope projesini taşıdım. Sonuç, 2 dolarlık bir STM32F103C kartından (libmaple tabanlı Arduino çekirdeği kullanılarak), iki kablodan, bir USB OTG kablosundan ve bir Android cihazdan başka bir şey gerektirmeyen, taşınabilir, pille çalışan 1.7MS/sn bir osiloskoptur.. Tabii ki, bununla elde ettiğiniz tek şey 0 ile yaklaşık 3.3V arasında bir aralıktır.

1. Adım: Yazılımı Yükleyin

Favori kartınız için ayarlanmış bir Arduino IDE'niz olduğunu ve favori kartınızın bir USB seri arabirimine sahip olduğunu varsayıyorum.

Sketch'e Git | Kitaplığı dahil et | Kitaplıkları yönetin. Arama alanına "VectorDisplay" yazın ve bulunduğunda "Yükle"ye tıklayın.

Kütüphane zip dosyasını buradan indirin.

Arduino/libraries klasörünüzün içindeki bir klasöre açın.

VectorDisplay'i Google Play'den indirin ve Android cihazınıza yükleyin. Android cihazınızda bilinmeyen kaynaklardan yüklemeyi etkinleştirmeniz gerekebilir. Android uygulaması UsbSerial kitaplığını kullanır ve başlangıç noktası kitaplık için örnek uygulamalardan biridir.

2. Adım: Demo Kroki

Demo Kroki
Demo Kroki
Demo Kroki
Demo Kroki
Demo Kroki
Demo Kroki
Demo Kroki
Demo Kroki

Tahtanızı (gerekirse yükleme modunda) bilgisayarınıza bağlayın ve Dosya | Örnekler | VektörEkran | Arduino IDE'nizdeki daireler. Yükle düğmesine tıklayın (sağ ok).

Android cihazınızda VectorDisplay uygulamasını başlatın. Kartınızı USB OTG kablosuyla Android cihazına takın. (Kartınızda bir USB mikro bağlantı noktası varsa, USB OTG ana bilgisayar tarafınızın Android cihazına gittiğinden emin olun). Şimdi VectorDisplay için bir izin sorgusu almalısınız. Tamam tuşuna basın.

Her şey yolunda giderse, VectorDisplay şimdi ekranın sol tarafında iki düğme gösterecektir: Daire ve Renk. Daire'ye basmak, ekranda rastgele bir daire çizer ve Renk, bir sonraki daireden önce rengi rastgele bir renge değiştirir.

IDE'deki daire çizimine bakarsanız, seri vektör görüntüsünün şu şekilde bildirildiğini göreceksiniz:

Seri EkranSınıf Ekranı;

ve ardından setup() içinde şu şekilde başlatıldı:

Display.begin();

Ardından Display.addButton() ile komut düğmeleri istenir. Ardından loop(), komut düğmeleri aracılığıyla gönderilen komutları aramak için Display.readMessage() öğesini çağırır.

Varsayılan olarak, ekranın koordinat sistemi 240x320'dir. Bununla birlikte, çizgiler ve metinlerin tümü, iyi bir görünüm için kenar yumuşatma ile Android cihazınızın tam çözünürlüğü kullanılarak çizilir. Bu nedenle uygulamaya Vektör Ekranı denir.

3. Adım: API

Kütüphanedeki API, VectorDisplay.h dosyasındadır. Önce bir Display nesnesi başlatmanız gerekir. USB kullanımı için şunu yapın:

Seri EkranSınıf Ekranı;

Bağlantıyı Display.begin() ile başlatın.

SerialDisplayClass nesnesinde kullanılabilen iki yöntem kümesi vardır: bir küme 32 bit renk (alfa dahil) ve VectorDisplay uygulamamın kullandığı USB seri protokolüne oldukça yakın komutlar kullanır ve diğer küme standardın bir alt kümesidir. 16 bit renk kullanan Adafruit GFX kitaplık yöntemleri. Adafruit uyumlu yöntemleri kullanıyorsanız, adları 32-bit olanlar yerine 565 ile biten 16-bit renk komutlarını kullanmanız dışında, çoğunlukla iki komut grubunu özgürce karıştırabilirsiniz.

Koordinat sistemini Display.coordinates(genişlik, yükseklik) ile ayarlayabilirsiniz. Varsayılan genişlik=240 ve yükseklik=320'dir. Kare olmayan piksellere sahip bir ekrana öykünmek istiyorsanız Display.pixelAspectRatio(ratio) öğesini kullanabilirsiniz.

pixelAspectRatio() dahil olmak üzere birkaç yöntem bir FixedPoint32 bağımsız değişkeni alır. Bu, kayan noktalı bir sayıyı temsil eden 32 bitlik bir tamsayıdır, burada 65536 1.0'ı temsil eder. X kayan noktalı bir sayıyı FixedPoint32'ye dönüştürmek için şunları yapın: (FixedPoint32)(65536. * x) (veya sadece TO_FP32(x)).

Android düğmelerinden komut gönderebilmenin yanı sıra, ekrana dokunma olayları da MCU'ya gönderilir.

WiFi kullanımı için, çevreler_esp8266 örneğine bakın. WiFi moduna geçmek için uygulamadaki USB düğmesine basmanız gerekecek.

Bluetooth için şunları yapabilmeniz gerekir:

Seri EkranSınıf Ekranı(MyBluetoothSerial);

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

ve ardından, MyBluetoothSerial'in Bluetooth adaptörünüze bağlı olan Stream nesnesi (örn., Serial2) olduğu USB seri durumunda olduğu gibi devam edin.

Adım 4: 2$'lık Osiloskop

2$'lık Osiloskop
2$'lık Osiloskop
2$'lık Osiloskop
2$'lık Osiloskop
2$'lık Osiloskop
2$'lık Osiloskop

Hızlı ve kirli osiloskop için, Aliexpress'den 2 doların altına alabileceğiniz mavi veya siyah (başa çıkması daha kolay) bir hap STM32F103C8 kartına ihtiyacınız olacak. Kartın Arduino ortamı ile kullanıma nasıl hazırlanacağını ve eskizlerin nasıl kurulacağını burada anlatıyorum.

Pingumacpenguin'in STM32-O-Scope taslağının değiştirilmiş bir versiyonu olan bu taslağı tahtaya indirin. #define BOARD_LED satırını panonuza uyacak şekilde düzenleyin. LED'i PB12 olan siyah bir hap kullanıyorum. Mavi haplar (ve mavi hap ile aynı pin çıkışına sahip bazı siyah haplar) PC13'te LED'e sahiptir.

Bir kabloyu (toprak probu) kartın toprağına ve diğer kabloyu da kartın B0 pinine bağlayın. Kartı VectorDisplay'in çalıştığı bir Android cihaza takın ve taşınabilir, pille çalışan bir osiloskopa sahip olun.

Fotoğrafta bir fototransistöre bağlı osiloskop var. Ekrandaki iz, bir TV kızılötesi uzaktan kumandasından geliyor.

Önerilen: