Mundarija:

Planshet/telefon Arduino ekrani sifatida va 2 dollarlik osiloskop: 4 qadam
Planshet/telefon Arduino ekrani sifatida va 2 dollarlik osiloskop: 4 qadam

Video: Planshet/telefon Arduino ekrani sifatida va 2 dollarlik osiloskop: 4 qadam

Video: Planshet/telefon Arduino ekrani sifatida va 2 dollarlik osiloskop: 4 qadam
Video: Как использовать SSD1306 128x32 OLED-дисплей I2C с кодом Arduino 2024, Iyul
Anonim
Planshet/telefon Arduino ekrani sifatida va 2 dollarlik osiloskop
Planshet/telefon Arduino ekrani sifatida va 2 dollarlik osiloskop
Planshet/telefon Arduino ekrani sifatida va 2 dollarlik osiloskop
Planshet/telefon Arduino ekrani sifatida va 2 dollarlik osiloskop
Planshet/telefon Arduino ekrani sifatida va 2 dollarlik osiloskop
Planshet/telefon Arduino ekrani sifatida va 2 dollarlik osiloskop

Arduino-ga asoslangan loyiha uchun 320x240 o'lchamli LCD sensorli ekranni arzon narxda sotib olish mumkin bo'lsa-da, planshet yoki telefonni sensorli ekran va quvvat manbai sifatida ishlatish ayniqsa qulayroq bo'ladi. loyiha Siz Android qurilmangizda ancha yuqori aniqlikdagi va yaxshi ko'rinadigan displeyga ega bo'lishingiz mumkin (masalan, barcha satrlaringiz taxallusga qarshi bo'ladi).

Android-ga asoslangan ekran USB Serial, Bluetooth yoki WiFi orqali ulanishi mumkin (masalan, ESP8266).

Shu maqsadda men "Adafruit GFX" interfeysining katta qismini bajaradigan Arduino kutubxonasi bilan bog'laydigan "AndroidDisplay" (bu yerdagi manba) Android ilovasini yozdim. Siz kod yozishingiz mumkin, shundan so'ng uni mustaqil ekran yordamida osongina ko'chirish mumkin, yoki Android-ga asoslangan displey bilan eskizdan foydalanishni davom ettirishingiz mumkin. Va siz Android ilovasidan Arduino eskizini boshqarish uchun buyruqlar yuborishingiz mumkin. Arduino kutubxonasi asosan bortga bog'liq emas: u USB seriyali portli Serial nomli har qanday karta bilan yoki ESP8266 Wi-Fi orqali yoki Bluetooth bilan ishlashi kerak (birinchi navbatda kartani juftlang).

Kontseptsiya qo'llanilishining isboti sifatida men STM32-O-Scope loyihasini ILI9341 displeyi o'rniga VectorDisplay-dan foydalanish uchun o'tkazdim. Natijada-portativ, batareyali 1,7MS/s osiloskop, 2 dollarlik STM32F103C kartasidan (libmaple asosidagi Arduino yadrosidan foydalangan holda), ikkita sim, USB OTG kabeli va Android qurilmasidan boshqa hech narsa talab qilinmaydi.. Albatta, bu bilan siz 0 dan 3.3V gacha bo'lgan diapazonni olasiz.

1 -qadam: Dasturiy ta'minotni o'rnating

O'ylaymanki, sizda Arduino IDE -ni sevimli taxtangiz uchun o'rnatilgan va sizning sevimli kartangiz USB ketma -ket interfeysiga ega.

Sketch | ga o'ting Kutubxonani o'z ichiga | Kutubxonalarni boshqarish. Qidiruv maydoniga "VectorDisplay" ni qo'ying va topgandan so'ng "O'rnatish" ni bosing.

Bu yerdan kutubxona zipini yuklab oling.

Arduino/libraries papkasidagi papkani oching.

Google Play -dan VectorDisplay -ni yuklab oling va uni Android qurilmangizga o'rnating. Android qurilmangizga noma'lum manbalardan o'rnatishni yoqishingiz kerak bo'lishi mumkin. Android ilovasi UsbSerial kutubxonasidan foydalanadi va boshlang'ich nuqtasi kutubxona uchun namunali ilovalardan biri edi.

2 -qadam: Demo eskiz

Demo eskiz
Demo eskiz
Demo eskiz
Demo eskiz
Demo eskiz
Demo eskiz
Demo eskiz
Demo eskiz

Kengashni (agar kerak bo'lsa yuklash rejimida) kompyuterga ulang va Fayl | ga o'ting Misollar | VectorDisplay | Arduino IDE doiralaringiz. Yuklash tugmasini bosing (o'ng o'q).

Android qurilmangizda VectorDisplay ilovasini ishga tushiring. Kengashni USB OTG kabeli orqali Android qurilmasiga ulang. (Agar sizning kartangizda USB mikro porti bo'lsa, USB OTG xosti tomoni Android qurilmasiga o'tishiga ishonch hosil qiling). Endi siz VectorDisplay uchun ruxsat so'rovini olishingiz kerak. OK ni bosing.

Agar hammasi yaxshi bo'lsa, VectorDisplay endi ekranning chap tomonida ikkita tugmani ko'rsatadi: aylana va rang. Davrani bosish ekranda tasodifiy doira chizadi va Rang keyingi doiradan oldin rangni tasodifiy rangga o'zgartiradi.

Agar siz IDE doirasidagi chizmalarga qarasangiz, ketma -ket vektorli displey e'lon qilinganini ko'rasiz:

SerialDisplayClass displeyi;

va keyin setup () da ishga tushiriladi:

Display.begin ();

Keyin Display.addButton () yordamida buyruq tugmalari talab qilinadi. Keyin loop () buyruqlar tugmalari orqali yuborilgan buyruqlarni qidirish uchun Display.readMessage () ni chaqiradi.

Odatiy bo'lib, displeyning koordinata tizimi 240x320. Biroq, chiziqlar va matnlarning barchasi Android qurilmangiz ekranining to'liq aniqligi yordamida chizilgan, yaxshi ko'rinish uchun antialiasing. Shuning uchun dastur vektorli displey deb nomlangan.

3 -qadam: API

Kutubxonadagi API VectorDisplay.h faylida. Avval Display ob'ektini ishga tushirishingiz kerak. USB -dan foydalanish uchun quyidagilarni bajaring:

SerialDisplayClass displeyi;

Display.begin () bilan ulanishni boshlang.

SerialDisplayClass ob'ektida ikkita usul mavjud: bitta to'plamda 32-bitli rang (alfa bilan birga) va mening VectorDisplay ilovam ishlatadigan USB seriyali protokoliga juda yaqin buyruqlar ishlatiladi, ikkinchisi esa standartning kichik to'plamidir. Adafruit GFX kutubxona usullari, 16-bitli ranglardan foydalangan holda. Ko'pincha siz ikkita buyruqlar to'plamini bemalol aralashtira olasiz, bundan tashqari, agar siz Adafruit-ga mos keladigan usullardan foydalansangiz, 32-bit o'rniga 565 bilan tugaydigan 16-bitli rangli buyruqlardan foydalanishingiz kerak.

Koordinatalar tizimini Display.coordinates (kenglik, balandlik) yordamida o'rnatishingiz mumkin. Standart - kenglik = 240 va balandlik = 320. Agar siz kvadrat piksel bo'lmagan displeyga taqlid qilmoqchi bo'lsangiz, Display.pixelAspectRatio (nisbat) dan foydalanishingiz mumkin.

Ba'zi usullar, shu jumladan pixelAspectRatio (), FixedPoint32 argumentini oladi. Bu suzuvchi nuqta raqamini ifodalovchi 32-bitli butun son, bu erda 65536 1.0 ni bildiradi. O'zgaruvchan nuqta x raqamini FixedPoint32 ga aylantirish uchun quyidagilarni bajaring: (FixedPoint32) (65536. * X) (yoki faqat TO_FP32 (x)).

Android tugmalaridan buyruq yuborish imkoniyatidan tashqari, ekran sensorli hodisalar ham MCUga yuboriladi.

Wi -Fi -dan foydalanish uchun, circ_esp8266 misolini ko'ring. Wi -Fi rejimiga o'tish uchun ilovadagi USB tugmasini bosish kerak.

Bluetooth uchun siz quyidagilarni qilishingiz kerak:

SerialDisplayClass displeyi (MyBluetoothSerial);

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

va USB -ketma -ket korpusidagi kabi davom eting, bu erda Bluetooth adapteriga MyBluetoothSerial - bu Stream ob'ekti (masalan, Serial2) ulangan.

4 -qadam: 2 dollarlik osiloskop

2 dollarlik osiloskop
2 dollarlik osiloskop
2 dollarlik osiloskop
2 dollarlik osiloskop
2 dollarlik osiloskop
2 dollarlik osiloskop

Tez va iflos osiloskop uchun sizga ko'k yoki qora (ishlov berish osonroq) tabletka STM32F103C8 kerak bo'ladi, uni Aliexpress -da 2 dollardan past narxda sotib olishingiz mumkin. Men taxtani Arduino muhiti bilan ishlashga qanday tayyorlashni va bu erda eskizlarni o'rnatishni tasvirlayman.

Pingumacpenguinning STM32-O-Scope eskizining o'zgartirilgan versiyasi bo'lgan ushbu eskizni taxtadan yuklab oling. Kengashingizga mos keladigan #define BOARD_LED qatorini tahrirlang. Men qora tabletkadan foydalanaman, uning LEDi PB12. Moviy tabletkalarda (va ko'k tabletkada bir xil bo'lgan qora tabletkalarda) PC13 diodli LED mavjud.

Bir simni-topraklama probini taxtaning eriga va boshqa simni taxtaning B0 piniga ulang. Kengashni VectorDisplay ishlaydigan Android qurilmasiga ulang va sizda portativ, batareyali osiloskop mavjud.

Suratda menda fototransistorga ulangan osiloskop bor. Ekrandagi iz televizorning infraqizil masofadan boshqarish pultidan.

Tavsiya: