Daftar Isi:

Tablet/Telepon Sebagai Layar Arduino, dan Osiloskop $2: 4 Langkah
Tablet/Telepon Sebagai Layar Arduino, dan Osiloskop $2: 4 Langkah

Video: Tablet/Telepon Sebagai Layar Arduino, dan Osiloskop $2: 4 Langkah

Video: Tablet/Telepon Sebagai Layar Arduino, dan Osiloskop $2: 4 Langkah
Video: EYE ON NPI — универсальный измерительный прибор Pokit #EYEonNPI #DigiKey @DigiKey @Adafruit @PokitMeter 2024, November
Anonim
Tablet/Telepon Sebagai Layar Arduino, dan Osiloskop $2
Tablet/Telepon Sebagai Layar Arduino, dan Osiloskop $2
Tablet/Telepon Sebagai Layar Arduino, dan Osiloskop $2
Tablet/Telepon Sebagai Layar Arduino, dan Osiloskop $2
Tablet/Telepon Sebagai Layar Arduino, dan Osiloskop $2
Tablet/Telepon Sebagai Layar Arduino, dan Osiloskop $2

Sementara seseorang dapat membeli layar sentuh LCD 320x240 murah untuk proyek berbasis Arduino, itu bisa lebih nyaman--terutama untuk membuat prototipe dan menguji sketsa--menggunakan tablet atau ponsel sebagai layar sentuh dan sumber daya untuk proyek. Anda dapat memiliki resolusi yang jauh lebih tinggi dan tampilan tampilan yang lebih baik di perangkat Android Anda (mis., semua baris Anda akan anti-alias).

Layar berbasis Android dapat dihubungkan melalui USB Serial, Bluetooth atau WiFi (mis., ESP8266).

Untuk itu saya menulis VectorDisplay (sumber di sini), sebuah aplikasi Android yang berpasangan dengan perpustakaan Arduino yang mengimplementasikan sebagian besar antarmuka Adafruit GFX. Anda dapat menulis kode yang kemudian dapat dengan mudah di-porting menggunakan layar standalone, atau tetap menggunakan sketsa dengan tampilan berbasis Android. Dan Anda dapat mengirim perintah dari aplikasi Android untuk mengontrol sketsa Arduino. Pustaka Arduino sebagian besar tidak bergantung pada papan: ia harus bekerja dengan papan apa pun yang menyediakan objek port serial USB bernama Serial atau dengan ESP8266 melalui WiFi atau dengan Bluetooth (pasangkan papan Anda terlebih dahulu).

Sebagai bukti penerapan konsep, saya mem-porting proyek STM32-O-Scope yang sederhana untuk menggunakan VectorDisplay sebagai pengganti tampilan ILI9341. Hasilnya adalah osiloskop 1.7MS/s portabel (kasar di sekitar tepinya) bertenaga baterai yang membutuhkan tidak lebih dari papan STM32F103C $2 (menggunakan inti Arduino berbasis libmaple), dua kabel, kabel USB OTG, dan perangkat Android. Tentu saja, semua yang Anda dapatkan dengan ini adalah kisaran dari 0 hingga sekitar 3.3V.

Langkah 1: Instal Perangkat Lunak

Saya berasumsi Anda memiliki Arduino IDE yang diatur untuk papan favorit Anda dan papan favorit Anda memiliki antarmuka serial USB.

Buka Sketsa | Sertakan perpustakaan | Kelola perpustakaan. Letakkan "VectorDisplay" di area pencarian dan klik "Instal" setelah ditemukan.

Unduh zip perpustakaan dari sini.

Buka zip ke dalam folder di dalam folder Arduino/perpustakaan Anda.

Unduh VectorDisplay dari Google Play dan instal di perangkat Android Anda. Anda mungkin perlu mengaktifkan penginstalan dari sumber yang tidak dikenal di perangkat Android Anda. Aplikasi Android menggunakan perpustakaan UsbSerial dan titik awalnya adalah salah satu contoh aplikasi untuk perpustakaan.

Langkah 2: Sketsa Demo

Sketsa Demo
Sketsa Demo
Sketsa Demo
Sketsa Demo
Sketsa Demo
Sketsa Demo
Sketsa Demo
Sketsa Demo

Hubungkan papan Anda (dalam mode unggah jika perlu) ke komputer Anda dan buka File | Contoh | Tampilan Vektor | lingkaran di Arduino IDE Anda. Klik tombol unggah (panah kanan).

Mulai aplikasi VectorDisplay di perangkat Android Anda. Colokkan papan Anda ke perangkat Android melalui kabel USB OTG. (Jika papan Anda memiliki port mikro USB, pastikan sisi host USB OTG Anda masuk ke perangkat Android). Anda sekarang harus mendapatkan kueri izin untuk VectorDisplay. Tekan OK.

Jika semuanya berjalan dengan baik, VectorDisplay sekarang akan menampilkan dua tombol di sisi kiri layar: Lingkaran dan Warna. Menekan Lingkaran menggambar lingkaran acak di layar dan Warna mengubah warna menjadi warna acak sebelum lingkaran berikutnya.

Jika Anda melihat sketsa lingkaran di IDE, Anda akan melihat bahwa tampilan vektor serial dideklarasikan dengan:

Tampilan SerialDisplayClass;

dan kemudian diinisialisasi dalam setup() dengan:

Tampilan.mulai();

Kemudian tombol perintah diminta dengan Display.addButton(). Kemudian loop() memanggil Display.readMessage() untuk mencari perintah yang dikirim melalui tombol perintah.

Secara default, sistem koordinat untuk tampilan adalah 240x320. Namun, garis dan teks semuanya digambar menggunakan resolusi penuh layar perangkat Android Anda, dengan antialiasing untuk tampilan yang bagus. Itu sebabnya aplikasi ini disebut Tampilan Vektor.

Langkah 3: API

API di perpustakaan ada di file VectorDisplay.h. Anda harus terlebih dahulu menginisialisasi objek Tampilan. Untuk penggunaan USB, lakukan dengan:

Tampilan SerialDisplayClass;

Inisialisasi koneksi dengan Display.begin().

Ada dua set metode yang tersedia di objek SerialDisplayClass: satu set menggunakan warna 32-bit (termasuk alfa) dan perintah yang cukup dekat dengan protokol serial USB yang digunakan aplikasi VectorDisplay saya, dan set lainnya adalah subset dari standar Metode library Adafruit GFX, menggunakan warna 16-bit. Untuk sebagian besar Anda dapat dengan bebas mencampur dua set perintah, dengan pengecualian bahwa jika Anda menggunakan metode yang kompatibel dengan Adafruit, Anda harus menggunakan perintah warna 16-bit yang namanya diakhiri dengan 565, bukan yang 32-bit.

Anda dapat mengatur sistem koordinat dengan Display.coordinates(width, height). Standarnya adalah lebar=240 dan tinggi=320. Jika Anda ingin meniru tampilan dengan piksel non-persegi, Anda dapat menggunakan Display.pixelAspectRatio(ratio).

Beberapa metode, termasuk pixelAspectRatio(), mengambil argumen FixedPoint32. Ini adalah bilangan bulat 32-bit yang mewakili angka floating point, di mana 65536 mewakili 1,0. Untuk mengonversi bilangan floating point x ke FixedPoint32, lakukan: (FixedPoint32)(65536. * x) (atau cukup TO_FP32(x)).

Selain dapat mengirimkan perintah dari tombol Android, event layar sentuh juga dikirimkan ke MCU.

Untuk penggunaan WiFi, lihat contoh circle_esp8266. Anda harus menekan tombol USB di aplikasi untuk beralih ke mode WiFi.

Untuk Bluetooth, Anda harus dapat melakukan:

Tampilan SerialDisplayClass (MyBluetoothSerial);

…MyBluetoothSerial.begin(115200); Tampilan.mulai();

dan kemudian lanjutkan seperti dalam kasus serial USB, di mana MyBluetoothSerial adalah objek Stream apa pun (mis., Serial2) yang terhubung ke adaptor Bluetooth Anda.

Langkah 4: Osiloskop $2

Osiloskop $2
Osiloskop $2
Osiloskop $2
Osiloskop $2
Osiloskop $2
Osiloskop $2

Untuk osiloskop cepat dan kotor, Anda memerlukan papan pil STM32F103C8 biru atau hitam (lebih mudah ditangani), yang bisa Anda dapatkan di Aliexpress dengan harga di bawah $2. Saya menjelaskan bagaimana mempersiapkan papan untuk digunakan dengan lingkungan Arduino untuk itu dan menginstal sketsa di sini.

Unduh sketsa ini di papan, yang merupakan versi modifikasi dari sketsa STM32-O-Scope Pingumacpenguin. Edit baris #define BOARD_LED agar sesuai dengan papan Anda. Saya menggunakan pil hitam yang LED PB12. Pil biru (dan beberapa pil hitam yang memiliki pinout yang sama dengan pil biru) memiliki LED di PC13.

Hubungkan satu kabel - probe ground - ke ground board dan kabel lain ke pin B0 board. Colokkan papan ke perangkat Android dengan VectorDisplay berjalan, dan Anda memiliki osiloskop portabel bertenaga baterai.

Dalam foto saya memiliki osiloskop yang terhubung ke fototransistor. Jejak di layar berasal dari remote control inframerah TV.

Direkomendasikan: