สารบัญ:

Magic Answers Ball พร้อม Arduino Pro Mini และจอแสดงผล TFT: 7 ขั้นตอน
Magic Answers Ball พร้อม Arduino Pro Mini และจอแสดงผล TFT: 7 ขั้นตอน

วีดีโอ: Magic Answers Ball พร้อม Arduino Pro Mini และจอแสดงผล TFT: 7 ขั้นตอน

วีดีโอ: Magic Answers Ball พร้อม Arduino Pro Mini และจอแสดงผล TFT: 7 ขั้นตอน
วีดีโอ: Need A New Password? Just Shake This Magic 8 Ball! 2024, ธันวาคม
Anonim
Magic Answers Ball พร้อม Arduino Pro Mini และจอแสดงผล TFT
Magic Answers Ball พร้อม Arduino Pro Mini และจอแสดงผล TFT
Magic Answers Ball พร้อม Arduino Pro Mini และจอแสดงผล TFT
Magic Answers Ball พร้อม Arduino Pro Mini และจอแสดงผล TFT
Magic Answers Ball พร้อม Arduino Pro Mini และจอแสดงผล TFT
Magic Answers Ball พร้อม Arduino Pro Mini และจอแสดงผล TFT

ไม่นานมานี้ ฉันกับลูกสาวได้แยกลูกบอล Magic 8 ออกเพื่อที่เธอจะได้แทนที่คำตอบยี่สิบคำตอบด้วยลูกที่เธอเลือก นี่เป็นของขวัญสำหรับเพื่อนของเธอ นั่นทำให้ฉันนึกถึงวิธีการทำในระดับที่ใหญ่ขึ้น เรามีคำตอบมากกว่า 20 คำตอบได้ไหม ด้วยเวอร์ชันอิเล็กทรอนิกส์ เราทำได้!

นี่จะอธิบายวิธีที่ฉันถอด Mattel Magic 8 Ball (ขออภัย Mattel) และใช้จอแสดงผล TFT แบบกลมเพื่อแสดงการตอบสนองเพิ่มเติมจำนวนมากอย่างไม่น่าเชื่อ (การ์ด micro-SD ที่เล็กที่สุดที่ฉันพบคือ 8GB ดังนั้นจึงเกินความสามารถจริงๆ สำหรับ ใช้ทำอะไร) ลูกบอลใช้กระดาน Sparkfun Wake-on-shake เพื่อกระตุ้นการตอบสนองและปิดลูกบอลหลังจากนั้นเพื่อประหยัดแบตเตอรี่ บอร์ดชาร์จใช้เพื่อให้สามารถชาร์จแบตเตอรี่จากการเชื่อมต่อ USB

เสบียง

อะไหล่:

Arduino Pro Mini 328 - 3.3V/8MHz

SparkFun Wake on Shake

แบตเตอรี่ลิเธียมไอออน - 400mAh

ออแกไนเซอร์ 12 ชิ้น TP4056 โมดูลการชาร์จ 5 โวลต์ Micro USB 1A 18650 ลิเธียมแบตเตอรี่ชาร์จคณะกรรมการที่มีโมดูลชาร์จป้องกัน (คุณต้องการเพียงหนึ่งในเหล่านี้ แต่ 12 แพ็คน้อยกว่า $9)

DAOKI 5Pcs Micro SD Storage Board (อีกครั้งคุณต้องการเพียงอันเดียว แต่ 5 แพ็คยังน้อยกว่า $9)

DFRobot โมดูลแสดงผล TFT LCD ขนาด 2.2 นิ้ว

Kingston 8 GB microSD (คุณอาจมีอันเก่าวางอยู่รอบบ้านของคุณ)

Perma-Proto Quarter-sized Breadboard PCB (คุณสามารถใช้ PCB อะไรก็ได้ที่คุณต้องการ)

เมจิก 8 บอล

FTDI Basic breakout 3.3V (คุณอาจมีหนึ่งในนั้นอยู่แล้วหากคุณได้ทำโปรเจ็กต์ที่คล้ายกันกับ Arduino Pro Mini หรือบอร์ดที่คล้ายกัน)

ตัวเรือน 4 ขาพร้อมชุดขั้วต่อสายไฟ JST XH ชาย/หญิง 2.54 มม. JST XH (อุปกรณ์เสริม แต่แนะนำสำหรับเชื่อมต่อแบตเตอรี่)

อุปกรณ์พื้นฐานอื่นๆ:

Sugru Moldable Glue (สามารถใช้เทปพันสายไฟและกาวร้อนได้ แต่ฉันชอบอันนี้มากกว่า)

เทปพันท่อ

เทปโฟมสองหน้า

ลวด

เครื่องมือ:

หัวแร้ง

เครื่องมือโรตารี่ที่คุณเลือก (เช่น Dremel)

ที่หนีบเฟอร์นิเจอร์

ขั้นตอนที่ 1: ตัด Magic 8 Ball ในครึ่ง

ตัด Magic 8 Ball ในครึ่ง
ตัด Magic 8 Ball ในครึ่ง
ตัด Magic 8 Ball ในครึ่ง
ตัด Magic 8 Ball ในครึ่ง

ก่อนอื่นคุณจะต้องแบ่ง Magic 8 Ball ออกเป็นสองส่วน ฉันยึดของฉันไว้กับโต๊ะทำงานโดยให้ด้านแบนราบโดยใช้ที่หนีบเฟอร์นิเจอร์ ใช้ Dremel ที่มีจานตัดแบบพื้นฐานแล้วตัดตามตะเข็บของลูกบอล คุณจะต้องตัดให้ลึกเท่าที่จานตัดจะอนุญาต ค่อยเป็นค่อยไป แม้หลังจากที่คุณกรีดจนสุดทางแล้ว คุณอาจต้องใช้ไขควงปากแบนหรือสิ่วในการแยกขั้นสุดท้าย มีกระบอกสูบที่บรรจุของเหลว "เวทย์มนตร์" และ icosahedron (รูปร่างยี่สิบด้าน - ใช่ ฉันต้องมองขึ้นไป) ข้างใน ทิ้งมันไปหรือใช้ในโครงการอื่น ถ้าคุณใช้มันในโครงการอื่น บอกผมว่าคุณทำอะไรลงไป ผมจะได้รู้ว่าต้องทำอย่างไรกับของผม

คุณจะเหลือสองส่วนตามที่แสดงในภาพ ฉันทำมาแล้วสามครั้งแล้ว และครั้งล่าสุดที่ริมฝีปากขาวเรียบเนียนมากกว่ามีสันเขา ดังนั้นลูกของคุณอาจดูแตกต่างจากในภาพเล็กน้อย

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

ขั้นตอนที่ 2: เตรียมลูกบอล

เตรียมบอล
เตรียมบอล
เตรียมบอล
เตรียมบอล
เตรียมบอล
เตรียมบอล

มีการดัดแปลงสองอย่างที่เราจะต้องทำกับครึ่งพลาสติกของลูกบอล

ก่อนอื่น ในครึ่งเปิด อันที่มีเครื่องหมาย "8" ติดอยู่ เราจะต้องโกนพื้นที่ที่ใหญ่พอสำหรับบอร์ดชาร์จ USB ของเราที่จะนั่งโดยที่พอร์ต USB ยื่นออกมา ฉันใช้ Dremel ของฉันโดยติดดรัมขัดหยาบ คุณต้องการให้บางที่สุดเท่าที่จะทำได้โดยไม่ต้องทำความสะอาด จากนั้นตัดช่องเล็กๆ ให้ใหญ่พอที่จะให้พอร์ต USB โผล่ออกมาด้านนอกได้ ฉันใช้คาลิปเปอร์วัดพอร์ต USB แต่คุณอาจจะต้องจับตาดูสิ่งนี้หากต้องการ อีกครั้ง ฉันใช้ Dremel กับสิ่งที่แนบมาด้วยการตัดขนาดเล็กเพื่อเปิดช่อง สองภาพแรกแสดงช่องเปิดและสิ่งที่ดูเหมือนกับบอร์ด USB ด้านหลัง

ประการที่สอง อีกครึ่งหนึ่งที่มีรูทั้งสองด้านและปากพลาสติกสีขาว เตรียมพื้นที่สำหรับวางจอแสดงผล ด้านในของช่องเปิดที่วางจอแสดงผล มีสันพลาสติกและหน้าแปลนยาง (?) ที่ด้านในของช่องเปิด นำหน้าแปลนออกแล้วพักไว้ เราจะนำสิ่งนั้นกลับมาในภายหลัง แต่เราต้องการให้พ้นทางสำหรับขั้นตอนนี้ จอแสดงผลมีการอัดขึ้นรูปสี่เหลี่ยมด้านหนึ่งซึ่งจะไม่อนุญาตให้วางราบในช่องเปิดหากสันเขาบางส่วนไม่ได้ถูกถอดออก ใช้ถังขัดหยาบบน Dremel อีกครั้ง โกนให้มากที่สุด เข้ามาจากรูที่หน้าจอจะเป็นมุมที่ดีที่สุด ควรมีลักษณะเหมือนภาพเมื่อเสร็จแล้ว หมายเหตุ รูปภาพแสดงตำแหน่ง แต่อย่าเพิ่งติด

ขั้นตอนที่ 3: เตรียมการตอบสนองบนการ์ด Micro-SD

ขั้นตอนนี้ซับซ้อนกว่าที่คุณคิดเล็กน้อย หากคุณไม่ต้องการสร้างรายการคำตอบของคุณเอง ให้ข้ามไปยังย่อหน้าสุดท้ายของขั้นตอนนี้

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

แม้ว่าจอแสดงผลจะเป็นทรงกลม แต่ก็เป็นหน้าจอสี่เหลี่ยมเสมือนที่ใช้งานได้จริง โดยมีเพียงพิกเซลที่มองเห็นได้ภายในวงกลม จอแสดงผลสามารถแสดงข้อความหลายขนาดได้ แต่เราใช้เฉพาะเวอร์ชันที่เล็กที่สุดซึ่งมีขนาด 6 x 8 พิกเซลเท่านั้น การใช้ขนาดนี้มีอักขระที่แสดงผลได้ 315 ตัวบนหน้าจอ (21 อักขระต่อบรรทัด คูณ 15 บรรทัด) แต่มองเห็นได้เพียง 221 ตัว และแต่ละบรรทัดมีจำนวนอักขระที่มองเห็นต่างกัน เห็นปัญหา?

ฉันเขียนโปรแกรม Java เพื่อบันทึกไฟล์การตอบสนองที่ไม่ได้จัดรูปแบบและแปลงเป็นระเบียนที่อยู่กึ่งกลางอย่างสมบูรณ์ ซึ่งสามารถแสดงได้อย่างง่ายดายบน TFT แบบกลม (ลิงก์สำหรับดาวน์โหลดไฟล์ "FormatToPicksFileFullyCentered.java")

โดยไม่ต้องอธิบายโค้ดทั้งหมด แนวคิดทั่วไปคือเราพยายามย้อนกลับจากจุดศูนย์กลาง (ish) และแทรกช่องว่างเพื่อให้แน่ใจว่าเราจะไม่แยกคำในบรรทัดที่มองเห็นได้ จากนั้นทำสิ่งเดียวกันจาก ศูนย์ไปข้างหน้า สุดท้าย เราวนซ้ำทุกบรรทัดและจัดกึ่งกลางแต่ละบรรทัดภายในบรรทัดอักขระทั้ง 21 บรรทัดเพื่อสร้างบันทึกขนาด 316 ไบต์ (315 อักขระที่เป็นตัวอักษรและตัวเลขคละกันพร้อมอักขระขึ้นบรรทัดใหม่) โค้ดนี้ใช้งานได้จริงผ่านฟอนต์สามแบบ x 3 x 2 และ x 1 เพื่อดูว่าฟอนต์ใดเป็นฟอนต์ที่ใหญ่ที่สุดที่สามารถใช้ได้และยังคงพอดีกับข้อความ การจัดกึ่งกลางของแบบอักษร x 2 และ x 3 ผิดไปเล็กน้อย ขออภัย ระวังอักขระที่ใช้มากกว่าหนึ่งไบต์ เหล่านี้สามารถทิ้งไฟล์ที่ส่งออก

คัดลอกไฟล์ "picks.txt" ลงในการ์ด micro-SD

หากคุณไม่ต้องการประสบปัญหาในการสร้างรายการตัวเลือกของคุณเอง เราได้รวมรายการตัวเลือกที่คุณสามารถคัดลอกลงในการ์ด SD และใช้งานได้ ฉันไม่สามารถอัปโหลดไฟล์.txt ไปยังคำสั่งสอนได้ในขณะนี้ ดังนั้นนี่คือลิงค์สำหรับดาวน์โหลดไฟล์ picks.txt

ขั้นตอนที่ 4: อัปโหลดโค้ดไปยัง Arduino Mini

อัปโหลดโค้ดไปยัง Arduino Mini
อัปโหลดโค้ดไปยัง Arduino Mini
อัปโหลดโค้ดไปยัง Arduino Mini
อัปโหลดโค้ดไปยัง Arduino Mini
อัปโหลดโค้ดไปยัง Arduino Mini
อัปโหลดโค้ดไปยัง Arduino Mini

ก่อนอื่น หากคุณไม่เคยใช้ Arduino Pro Mini มาก่อน คุณไม่สามารถเพียงแค่เสียบสาย USB และดาวน์โหลด คุณต้องใช้บอร์ด FTDI และเชื่อมต่อสายไฟเข้ากับพินที่เหมาะสมบนมินิ ฉันจะไม่ให้การกวดวิชาในที่นี้ มีมากมายในเว็บ สำหรับฉัน ฉันไม่ต้องการบัดกรีตัวเชื่อมต่อถาวรบนบอร์ดไมโครคอนโทรลเลอร์ซึ่งจะใช้เพียงครั้งเดียวในการดาวน์โหลดโค้ด ดังนั้นฉันจึงสร้างคลิปเล็กๆ น้อยๆ ที่สามารถใช้เพื่อตั้งโปรแกรมมินิโดยไม่ต้องบัดกรี (ดูรูป) สิ่งนี้ได้รับแรงบันดาลใจจากผลิตภัณฑ์อย่าง Fiddy แต่ฉันไม่สามารถเข้าถึงเครื่องพิมพ์ 3 มิติได้ง่ายๆ ดังนั้นฉันจึงสร้างคลิปมันฝรั่งทอดเอง หากมีคนสนใจฉันจะทำการสอนเพื่อสิ่งนั้น

ไปที่รหัส โค้ดนี้มีส่วนที่น่าสนใจสองสามส่วน แต่ส่วนใหญ่เป็นแบบตรงไปตรงมา

ในฟังก์ชันการตั้งค่า มีโค้ดจำนวนพอสมควรที่เกี่ยวข้องกับการสุ่มเมล็ดพันธุ์ที่ดี วิธีการทั่วไปของการใช้การอ่านแบบอะนาล็อกจากพินที่ไม่ได้เชื่อมต่อนั้นไม่ได้ให้การตอบสนองที่หลากหลายเพียงพอในประสบการณ์ของผม ฉันได้รับตัวเลขระหว่าง 477 ถึง 482 เนื่องจากฟังก์ชันสุ่มของ Arduino มีเพียงหนึ่งลำดับเท่านั้น และเมล็ดกำหนดตำแหน่งที่จะเริ่มต้นในลำดับนั้น ช่วงที่แคบเช่นนี้จะไม่ให้การตอบสนองที่เป็นไปได้เพียงพอในท้ายที่สุด โปรดทราบว่ารหัสนี้จะเริ่มต้นใหม่ทุกครั้งที่บอร์ด Wake-on-shake ปิดและเปิดเครื่องใหม่ ดังนั้นตำแหน่งลำดับเริ่มต้นที่กำหนดโดยเมล็ดจึงมีความสำคัญ เพื่อช่วยในเรื่องนี้ ฉันเขียนไฟล์ขนาดเล็กมากลงในการ์ด SD เพื่อติดตามเมล็ดพันธุ์ล่าสุด และเพิ่มค่าใหม่ที่มาจากพินที่ไม่ได้เชื่อมต่อ

เมื่อเลือกการเลือกในฟังก์ชันลูปและอ่านลงในอาร์เรย์อักขระแล้ว เราไม่สามารถพิมพ์ทั้งสตริงได้ การแสดงผลมีการจำกัดความยาวของสตริงที่สามารถจัดการได้ในแต่ละครั้ง ด้วยเหตุผลนั้น เราจึงต้องวนรอบแต่ละสิบห้าบรรทัด และส่งไปยังการแสดงทีละครั้ง

ห้องสมุดภายนอกที่จำเป็น:

ห้องสมุด ST7687S

DFRobot-Display Library

ขั้นตอนที่ 5: วางสายส่วนประกอบ

วางสายส่วนประกอบ
วางสายส่วนประกอบ
วางสายส่วนประกอบ
วางสายส่วนประกอบ

ถึงเวลาทำการบัดกรีสายไฟทั้งหมด ฉันมักจะทำผิดพลาดกับสายไฟที่ยาวกว่าที่ฉันต้องการจริง ๆ เล็กน้อย แต่นั่นก็จบลงด้วยดี

ในแผนผังที่แนบมา จอแสดงผล TFT จะแสดงด้วยตัวเชื่อมต่อแทนที่จะเป็นรูปภาพของจอแสดงผลทั้งหมด (ซึ่งฉันหาส่วน Fritzing ไม่พบ) ฉันได้ติดฉลากสายไฟ/หมุดตามวิธีการติดฉลากบนชิ้นส่วนแล้ว ในทำนองเดียวกัน การ์ด SD ไม่ใช่การ์ดเดียวกับที่ฉันใช้ แต่ฉันติดป้ายกำกับสายไฟ/หมุดสำหรับชิ้นส่วนที่ระบุไว้

มีส่วนประกอบหนึ่งที่ฉันไม่ได้ประสานกันในขั้นตอนนี้: แบตเตอรี่ แต่ฉันใช้ขั้วต่อสี่พินโดยถอดหมุดกลางสองตัวออก (ภาพที่สอง) สิ่งนี้ให้ฉันทดสอบส่วนประกอบทั้งหมดที่ต่อสายเข้าด้วยกันแล้วถอดแบตเตอรี่ออกในขณะที่ฉันติดทุกอย่างเข้ากับลูกบอล

สุดท้าย ฉันใช้ PCB เขียงหั่นขนมถาวรขนาดหนึ่งในสี่เพื่อให้พลังงานและการเชื่อมต่อที่ใช้ร่วมกันง่ายขึ้น คุณจะเห็นว่าในภาพประกอบ

ทดสอบว่าทุกอย่างทำงาน

ขั้นตอนที่ 6: แนบส่วนประกอบเข้ากับ Ball

แนบส่วนประกอบเข้ากับลูกบอล
แนบส่วนประกอบเข้ากับลูกบอล
แนบส่วนประกอบเข้ากับลูกบอล
แนบส่วนประกอบเข้ากับลูกบอล
แนบส่วนประกอบเข้ากับลูกบอล
แนบส่วนประกอบเข้ากับลูกบอล
แนบส่วนประกอบเข้ากับลูกบอล
แนบส่วนประกอบเข้ากับลูกบอล

ขั้นแรกให้วางจอแสดงผลไว้และใช้ Sugru เพื่อรักษาความปลอดภัย (สองภาพแรก) อย่าลืมหน้าแปลนที่คุณถอดออกก่อนหน้านี้ คุณควรใส่กลับเข้าที่ก่อนที่จะยึดจอแสดงผลให้เข้าที่

ต่อไป ฉันติดแผ่นโปรโตบอร์ดไว้ที่ด้านล่างของครึ่งลูกที่ว่างเปล่า ฉันเก็บบัดกรีทั้งหมดของฉันไว้ที่ด้านหนึ่งของกระดาน ดังนั้นฉันจึงยังมีอีกครึ่งกระดานที่ฉันสามารถพันเทปได้ จากนั้นฉันก็ติดแบตเตอรี่ที่ด้านบนของโปรโตบอร์ดครึ่งหนึ่ง (ภาพที่สาม)

ตอนนี้ทั้งสองส่วนเชื่อมต่อกันด้วยสายไฟ พิจารณาว่ารู USB จะไปสิ้นสุดที่ใดเมื่อคุณประกอบสองส่วนเข้าด้วยกัน หากริมฝีปากสีขาวมีหนามยื่นออกมา โปรดจำไว้ว่าต้องลงมาตรงกลางที่เสี้ยวหนึ่งของริมฝีปากสีขาว เพราะเราจะยึดแผงชาร์จ USB ไว้ระหว่างสันพลาสติกสองอันบนริมฝีปาก

ใช้เทปโฟมสองหน้าชิ้นเล็กๆ ติดบอร์ดชาร์จ USB เทปสองหน้าไม่ควรปิดทับด้านล่างของบอร์ดชาร์จทั้งหมด เนื่องจากปลายสายที่ติดสายไฟไว้จะห้อยอยู่เหนือขอบตรงกลางของขอบปากสีขาว ดังนั้นควรปิดเทปไว้ประมาณสามในสี่ของพื้นผิวด้านล่างของกระดาน วางเทปไว้ที่ด้านล่างของกระดานก่อน จากนั้นกดให้ตรงจุดที่คุณต้องการ ขั้วต่อ USB ควรอยู่ที่ขอบลูกบอล ติดกับพื้นที่สีดำของพลาสติกโดยไม่ต้องออกนอกลูกบอล สุดท้าย ใช้ Sugru มากกว่าด้านบนของกระดานและยึดทั้งสองด้าน นี่เป็นเพียงการเพิ่มความแข็งแกร่งเมื่อเสียบสายเคเบิลเข้ากับพอร์ต USB

ใส่การ์ด micro-SD ลงในโมดูลการ์ด SD ทันที

คุณสามารถยึดส่วนประกอบอื่น ๆ กับริมฝีปากขาวได้หากต้องการ ฉันเพิ่งเก็บส่วนประกอบที่เหลือไว้ด้านหลังจอแสดงผล

ขั้นตอนที่ 7: ใส่สองส่วนกลับเข้าด้วยกัน

ใส่ทั้งสองครึ่งกลับเข้าด้วยกัน
ใส่ทั้งสองครึ่งกลับเข้าด้วยกัน
ใส่ทั้งสองครึ่งกลับเข้าด้วยกัน
ใส่ทั้งสองครึ่งกลับเข้าด้วยกัน

ตรวจสอบอีกครั้งว่าคุณได้ใส่การ์ด SD และคุณได้ทดสอบส่วนประกอบทั้งหมดเข้าด้วยกันแล้ว

โอเค ถ้าคุณพร้อม ทำงูยาวจากกาว Sugru แล้วทาให้ทั่วขอบครึ่งลูกด้วยปากสีขาว (รูปแรก) ควรวางกาวตรงทางแยกที่ส่วนขาวดำของพลาสติกมารวมกัน การใส่กาวที่นี่ช่วยให้แน่ใจว่าคุณมีพันธะที่แข็งแรงในขณะที่ลดปริมาณกาวที่บีบออกจากรอยแตกหลังจากที่ทั้งสองส่วนเชื่อมต่อกัน

กดทั้งสองส่วนเข้าด้วยกันเพื่อให้แน่ใจว่าพอร์ต USB ติดผ่านรูที่ตัดไว้ก่อนหน้านี้ ใช้ที่หนีบเฟอร์นิเจอร์ หนีบทั้งสองส่วนเข้าด้วยกันให้แน่นพอที่จะเก็บครึ่งส่วนไว้ด้วยกัน ไม่จำเป็นต้องหนีบให้แน่น กาว Sugru จะแข็งตัวในเวลาประมาณ 24 ชั่วโมง

หากคุณมีกาวที่บีบออกจากข้อต่อ ให้ขูดออกด้วยนิ้วหรือผ้าเรียบ/กระดาษเช็ดมือ

แนะนำ: