สารบัญ:

แท็บเล็ต/โทรศัพท์เป็นหน้าจอ Arduino และออสซิลโลสโคปราคา 2 เหรียญ: 4 ขั้นตอน
แท็บเล็ต/โทรศัพท์เป็นหน้าจอ Arduino และออสซิลโลสโคปราคา 2 เหรียญ: 4 ขั้นตอน

วีดีโอ: แท็บเล็ต/โทรศัพท์เป็นหน้าจอ Arduino และออสซิลโลสโคปราคา 2 เหรียญ: 4 ขั้นตอน

วีดีโอ: แท็บเล็ต/โทรศัพท์เป็นหน้าจอ Arduino และออสซิลโลสโคปราคา 2 เหรียญ: 4 ขั้นตอน
วีดีโอ: การทำออสชิสโลสโคปไว้ใช้งานบนAndroid 2024, พฤศจิกายน
Anonim
แท็บเล็ต/โทรศัพท์เป็นหน้าจอ Arduino และออสซิลโลสโคปมูลค่า $2
แท็บเล็ต/โทรศัพท์เป็นหน้าจอ Arduino และออสซิลโลสโคปมูลค่า $2
แท็บเล็ต/โทรศัพท์เป็นหน้าจอ Arduino และออสซิลโลสโคปมูลค่า $2
แท็บเล็ต/โทรศัพท์เป็นหน้าจอ Arduino และออสซิลโลสโคปมูลค่า $2
แท็บเล็ต/โทรศัพท์เป็นหน้าจอ Arduino และออสซิลโลสโคปราคา $2
แท็บเล็ต/โทรศัพท์เป็นหน้าจอ Arduino และออสซิลโลสโคปราคา $2

แม้ว่าเราจะสามารถซื้อหน้าจอสัมผัส LCD ขนาด 320x240 ราคาถูกสำหรับโปรเจ็กต์ที่ใช้ Arduino ได้ แต่ก็สะดวกกว่า โดยเฉพาะอย่างยิ่งสำหรับการสร้างต้นแบบและการทดสอบสเก็ตช์ เพื่อใช้แท็บเล็ตหรือโทรศัพท์เป็นทั้งหน้าจอสัมผัสและแหล่งพลังงานสำหรับ โครงการ. คุณสามารถมีความละเอียดสูงกว่ามากและแสดงผลบนอุปกรณ์ Android ของคุณที่ดูดีขึ้นได้ (เช่น บรรทัดทั้งหมดของคุณจะถูกป้องกันนามแฝง)

หน้าจอที่ใช้ Android สามารถเชื่อมต่อผ่าน USB Serial, Bluetooth หรือ WiFi (เช่น ESP8266)

ด้วยเหตุนี้ฉันจึงเขียน VectorDisplay (ที่มาที่นี่) ซึ่งเป็นแอป Android ที่จับคู่กับไลบรารี Arduino ที่ใช้ชุดย่อยขนาดใหญ่ของอินเทอร์เฟซ Adafruit GFX คุณสามารถเขียนโค้ดที่สามารถพอร์ตได้อย่างง่ายดายเพื่อใช้หน้าจอแบบสแตนด์อโลน หรือใช้ภาพสเก็ตช์ต่อไปกับจอแสดงผลบน Android และคุณสามารถส่งคำสั่งจากแอพ Android เพื่อควบคุมร่าง Arduino ไลบรารี Arduino ส่วนใหญ่ไม่ขึ้นกับบอร์ด: ควรทำงานกับบอร์ดใดๆ ที่มีอ็อบเจ็กต์พอร์ตอนุกรม USB ชื่อ Serial หรือกับ ESP8266 ผ่าน WiFi หรือ Bluetooth (จับคู่บอร์ดของคุณก่อน)

เพื่อเป็นหลักฐานในการประยุกต์ใช้แนวคิด ฉันได้ย้ายโปรเจ็กต์ STM32-O-Scope เปล่าเพื่อใช้ VectorDisplay แทนจอแสดงผล ILI9341 ผลลัพธ์ที่ได้คือออสซิลโลสโคปแบบพกพา 1.7MS/s แบบพกพา (แบบคร่าวๆ) ที่ใช้พลังงานจากแบตเตอรี่ ซึ่งไม่ต้องการอะไรมากไปกว่าบอร์ด STM32F103C มูลค่า $2 (โดยใช้แกน Arduino ที่ใช้ libmaple) สายไฟสองเส้น สาย USB OTG และอุปกรณ์ Android. แน่นอน สิ่งที่คุณได้รับจากสิ่งนี้คือช่วงตั้งแต่ 0 ถึงประมาณ 3.3V

ขั้นตอนที่ 1: ติดตั้งซอฟต์แวร์

ฉันคิดว่าคุณมี Arduino IDE ที่ตั้งค่าไว้สำหรับบอร์ดโปรดของคุณ และบอร์ดโปรดของคุณมีอินเทอร์เฟซแบบอนุกรม USB

ไปที่ Sketch | รวมห้องสมุด | จัดการห้องสมุด ใส่ "VectorDisplay" ในพื้นที่ค้นหาแล้วคลิก "ติดตั้ง" เมื่อพบ

ดาวน์โหลด zip ห้องสมุดจากที่นี่

เปิดเครื่องรูดลงในโฟลเดอร์ภายในโฟลเดอร์ Arduino/ไลบรารีของคุณ

ดาวน์โหลด VectorDisplay จาก Google Play และติดตั้งบนอุปกรณ์ Android ของคุณ คุณอาจต้องเปิดใช้งานการติดตั้งจากแหล่งที่ไม่รู้จักบนอุปกรณ์ Android ของคุณ แอพ Android ใช้ไลบรารี UsbSerial และจุดเริ่มต้นเป็นหนึ่งในแอพตัวอย่างสำหรับไลบรารี

ขั้นตอนที่ 2: ร่างสาธิต

ร่างสาธิต
ร่างสาธิต
ร่างสาธิต
ร่างสาธิต
ร่างสาธิต
ร่างสาธิต
ร่างสาธิต
ร่างสาธิต

เชื่อมต่อบอร์ดของคุณ (ในโหมดอัพโหลดหากจำเป็น) กับคอมพิวเตอร์ของคุณและไปที่ File | ตัวอย่าง | VectorDisplay | วงกลมใน Arduino IDE ของคุณ คลิกที่ปุ่มอัปโหลด (ลูกศรขวา)

เริ่มแอป VectorDisplay บนอุปกรณ์ Android ของคุณ เสียบบอร์ดของคุณเข้ากับอุปกรณ์ Android ผ่านสาย USB OTG (หากบอร์ดของคุณมีพอร์ตไมโคร USB ตรวจสอบให้แน่ใจว่าฝั่งโฮสต์ USB OTG ของคุณไปที่อุปกรณ์ Android) ตอนนี้คุณควรได้รับการสอบถามการอนุญาตสำหรับ VectorDisplay กดตกลง

หากทุกอย่างเป็นไปด้วยดี VectorDisplay จะแสดงปุ่มสองปุ่มทางด้านซ้ายของหน้าจอ: วงกลมและสี การกด Circle จะวาดวงกลมแบบสุ่มบนหน้าจอ และ Color จะเปลี่ยนสีเป็นสีสุ่มก่อนวงกลมถัดไป

หากคุณดูภาพสเก็ตช์วงกลมใน IDE คุณจะเห็นว่ามีการประกาศการแสดงเวกเตอร์ซีเรียลด้วย:

จอแสดงผล SerialDisplayClass;

แล้วเริ่มต้นใน setup() ด้วย:

Display.begin();

จากนั้นขอปุ่มคำสั่งด้วย Display.addButton() จากนั้น loop() จะเรียก Display.readMessage() เพื่อค้นหาคำสั่งที่ส่งผ่านปุ่มคำสั่ง

โดยค่าเริ่มต้น ระบบพิกัดสำหรับจอแสดงผลคือ 240x320 อย่างไรก็ตาม เส้นและข้อความทั้งหมดถูกวาดโดยใช้ความละเอียดเต็มของหน้าจออุปกรณ์ Android ของคุณ โดยมีการลบรอยหยักเพื่อให้ดูดี นั่นเป็นเหตุผลที่แอปเรียกว่า Vector Display

ขั้นตอนที่ 3: API

API ในไลบรารีอยู่ในไฟล์ VectorDisplay.h คุณต้องเริ่มต้นวัตถุ Display ก่อน สำหรับการใช้งาน USB ให้ทำดังนี้

จอแสดงผล SerialDisplayClass;

เริ่มต้นการเชื่อมต่อกับ Display.begin()

มีวิธีการสองชุดในวัตถุ SerialDisplayClass: ชุดหนึ่งใช้สี 32 บิต (รวมถึงอัลฟ่า) และคำสั่งที่ค่อนข้างใกล้เคียงกับโปรโตคอลอนุกรม USB ที่แอป VectorDisplay ของฉันใช้ และชุดอื่น ๆ เป็นชุดย่อยของมาตรฐาน วิธีการไลบรารี Adafruit GFX โดยใช้สี 16 บิต โดยส่วนใหญ่ คุณสามารถผสมชุดคำสั่งสองชุดได้อย่างอิสระ ยกเว้นว่าหากคุณใช้วิธีที่เข้ากันได้กับ Adafruit คุณควรใช้คำสั่งสี 16 บิตที่ชื่อลงท้ายด้วย 565 แทนที่จะเป็นคำสั่งแบบ 32 บิต

คุณสามารถตั้งค่าระบบพิกัดด้วย Display.coordinates(กว้าง สูง) ค่าเริ่มต้นคือ และ หากคุณต้องการจำลองการแสดงผลด้วยพิกเซลที่ไม่ใช่สี่เหลี่ยมจัตุรัส คุณสามารถใช้ Display.pixelAspectRatio(อัตราส่วน)

วิธีการบางอย่าง รวมถึง pixelAspectRatio() ใช้อาร์กิวเมนต์ FixedPoint32 นี่คือจำนวนเต็ม 32 บิตซึ่งแทนจำนวนจุดทศนิยม โดยที่ 65536 แทน 1.0 ในการแปลงเลขทศนิยม x เป็น FixedPoint32 ให้ทำ: (FixedPoint32)(65536. * x) (หรือเพียงแค่ TO_FP32(x))

นอกจากจะสามารถส่งคำสั่งจากปุ่ม Android แล้ว ยังส่งเหตุการณ์การแตะหน้าจอไปยัง MCU ด้วย

สำหรับการใช้งาน WiFi โปรดดูที่ตัวอย่าง circles_esp8266 คุณจะต้องกดปุ่ม USB ในแอปเพื่อเปลี่ยนเป็นโหมด WiFi

สำหรับบลูทูธ คุณควรจะทำสิ่งต่อไปนี้ได้

จอแสดงผล SerialDisplayClass (MyBluetoothSerial);

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

จากนั้นดำเนินการเช่นเดียวกับในกรณีอนุกรม USB โดยที่ MyBluetoothSerial เป็นวัตถุ Stream (เช่น Serial2) ที่เชื่อมต่อกับอะแดปเตอร์ Bluetooth ของคุณ

ขั้นตอนที่ 4: ออสซิลโลสโคปราคา 2 เหรียญ

ออสซิลโลสโคปราคา 2 เหรียญ
ออสซิลโลสโคปราคา 2 เหรียญ
ออสซิลโลสโคปราคา 2 เหรียญ
ออสซิลโลสโคปราคา 2 เหรียญ
ออสซิลโลสโคปราคา 2 เหรียญ
ออสซิลโลสโคปราคา 2 เหรียญ

สำหรับออสซิลโลสโคปที่รวดเร็วและสกปรก คุณจะต้องใช้บอร์ด STM32F103C8 สีน้ำเงินหรือสีดำ (จัดการง่ายกว่า) ซึ่งคุณสามารถซื้อได้ใน Aliexpress ในราคาต่ำกว่า $2 ฉันอธิบายวิธีเตรียมบอร์ดสำหรับใช้กับสภาพแวดล้อม Arduino และติดตั้งสเก็ตช์ที่นี่

ดาวน์โหลดภาพสเก็ตช์นี้บนกระดาน ซึ่งเป็นเวอร์ชันดัดแปลงของภาพร่าง STM32-O-Scope ของ Pingumacpenguin แก้ไข #define BOARD_LED บรรทัดให้ตรงกับบอร์ดของคุณ ฉันกำลังใช้ยาสีดำที่มี LED เป็น PB12 เม็ดสีน้ำเงิน (และเม็ดสีดำบางเม็ดที่มีพินเหมือนกับเม็ดสีฟ้า) มีไฟ LED ที่ PC13

เชื่อมต่อสายดินหนึ่งสาย - โพรบกราวด์ - เข้ากับกราวด์ของบอร์ดและอีกสายหนึ่งเข้ากับพิน B0 ของบอร์ด เสียบบอร์ดเข้ากับอุปกรณ์ Android โดยที่ VectorDisplay ทำงาน และคุณมีออสซิลโลสโคปแบบพกพาที่ใช้พลังงานจากแบตเตอรี่

ในภาพฉันมีออสซิลโลสโคปติดอยู่กับโฟโตทรานซิสเตอร์ ร่องรอยบนหน้าจอมาจากรีโมทคอนโทรลอินฟราเรดของทีวี

แนะนำ: