สารบัญ:

คอมพิวเตอร์พื้นฐานพกพา: 6 ขั้นตอน (พร้อมรูปภาพ)
คอมพิวเตอร์พื้นฐานพกพา: 6 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: คอมพิวเตอร์พื้นฐานพกพา: 6 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: คอมพิวเตอร์พื้นฐานพกพา: 6 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: ระบบปฏิบัติการและการใช้งานคอมพิวเตอร์พกพาEP.6 2024, พฤศจิกายน
Anonim
คอมพิวเตอร์พื้นฐานพกพา
คอมพิวเตอร์พื้นฐานพกพา
คอมพิวเตอร์พื้นฐานพกพา
คอมพิวเตอร์พื้นฐานพกพา

คำแนะนำนี้อธิบายกระบวนการของฉันในการสร้างคอมพิวเตอร์พกพาขนาดเล็กที่ใช้พื้นฐาน คอมพิวเตอร์ถูกสร้างขึ้นโดยใช้ชิป ATmega 1284P AVR ซึ่งเป็นแรงบันดาลใจให้ชื่อคอมพิวเตอร์โง่ (HAL 1284)

งานสร้างนี้ได้รับแรงบันดาลใจอย่างมากจากโปรเจ็กต์ที่น่าทึ่งที่นี่และ SuperCON BASIC Badge

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

สำหรับโครงการนี้ ฉันยังได้สร้างคู่มือ มันกล่าวถึงข้อบกพร่องและคุณสมบัติเฉพาะบางอย่างสำหรับจอภาพที่เลือก แต่ที่สำคัญที่สุด มันมีรายการการทำงานพื้นฐาน

หลังจากเผยแพร่แล้ว ฉันได้จัดทำวิดีโอนำเสนอโครงการ

ขั้นตอนที่ 1: ส่วนที่ฉันใช้

อะไหล่ที่ผมใช้
อะไหล่ที่ผมใช้
อะไหล่ที่ผมใช้
อะไหล่ที่ผมใช้
อะไหล่ที่ผมใช้
อะไหล่ที่ผมใช้

สำหรับไอซีหลัก:

  • ATmega 1284P
  • คริสตัล 16MHz
  • 2x 22pf ตัวเก็บประจุเซรามิก
  • ตัวต้านทาน 10KΩ (สำหรับการรีเซ็ตแบบดึงขึ้น)
  • ปุ่ม 4 พิน (สำหรับรีเซ็ต)
  • ตัวต้านทาน 470Ω (สำหรับวิดีโอคอมโพสิต)
  • ตัวต้านทาน 1kΩ (สำหรับการซิงค์วิดีโอคอมโพสิต)
  • จัมเปอร์ 3 พิน (สำหรับสัญญาณวิดีโอ)
  • Buzzer แบบพาสซีฟ

สำหรับการควบคุมแป้นพิมพ์:

  • ATmega 328P (เหมือนกับที่ใช้ใน Arduino Uno)
  • คริสตัล 16MHz
  • 2x 22pf ตัวเก็บประจุเซรามิก
  • ตัวต้านทาน 12x10KΩ (สำหรับดึงขึ้นและปุ่มรีเซ็ต)
  • ปุ่ม 51x 4-pin (สำหรับคีย์บอร์ดจริง)

สำหรับพลังงาน:

  • L7805 ตัวควบคุมแรงดันไฟฟ้า
  • 3mm LED
  • ตัวต้านทาน 220Ω (สำหรับ LED)
  • 2x 0.1µF ตัวเก็บประจุด้วยไฟฟ้า
  • 0.22 µF ตัวเก็บประจุแบบอิเล็กโทรไลต์ (คุณสามารถแทนที่ 0.22 นี้และ 0.1 หนึ่งตัวสำหรับ 0.33 อัน ฉันยังได้รับแจ้งว่าค่าไม่สำคัญจริงๆ แต่ฉันไม่ค่อยเก่งเรื่องตัวเก็บประจุ)
  • 2x จัมเปอร์ 2 พิน (สำหรับอินพุตพลังงานและสำหรับสวิตช์หลัก)

GPIO (อาจเพิ่มอีกสองสามเหตุผล):

  • จัมเปอร์ 7 พิน
  • จัมเปอร์ 8 พิน 2x
  • จัมเปอร์ 2 พิน (สำหรับ 5V และ GND)
  • จัมเปอร์ 3-4 พิน (สำหรับการสื่อสารแบบอนุกรม)

ไม่ใช่ PCB:

  • จอแสดงผล LCD ขนาด 4 นิ้วพร้อมวิดีโอคอมโพสิต (ของฉันมีแรงดันไฟฟ้าขาเข้าระหว่าง 7-30V)
  • ที่ใส่เครื่องพิมพ์ 3 มิติสำหรับจอแสดงผล
  • สวิตช์บางชนิด

ขั้นตอนที่ 2: วงจร

The Circuit
The Circuit

วงจรไม่สวยนักและส่วนหลักของ IC-region ได้รับแรงบันดาลใจจาก dan14 ที่ถูกกล่าวว่าเป็น Arduino ที่ค่อนข้างตรงไปตรงมาบน Breadboard-circuit แป้นพิมพ์เป็นตารางธรรมดาและควบคุมโดย ATmega328 ชิป AVR สองตัวสื่อสารผ่าน UART Serial pins

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

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

PCB
PCB
PCB
PCB

PCB มี 2 ชั้นและสร้างขึ้นโดยใช้เส้นทางอัตโนมัติ (โอ้ ช่างเป็นหลุมอะไร!) มีปุ่มและไฟ LED แสดงสถานะการทำงานที่ด้านหน้าและส่วนที่เหลือที่ด้านหลัง ฉันมี PCB ของฉันที่สร้างด้วย JCL PCB และพวกเขาก็ทำได้ดีมากด้วย ไฟล์ที่จำเป็นในการสร้าง PCB ใหม่ควรอยู่ในไฟล์ Eagle จากเมื่อก่อน

ฉันขอแนะนำให้คุณออกแบบ PCB ใหม่ เนื่องจากฉันมีบางสิ่งที่ฉันอยากทำแตกต่างออกไป ถ้าคุณชอบการออกแบบของฉัน ฉันยังมี (ในขณะที่เขียน) กระดานที่ไม่ได้ใช้สี่แผ่นซึ่งฉันเต็มใจที่จะขายมากกว่า

กระดานมีรูเจาะสี่รูที่ฉันใช้สำหรับติดตั้งจอ LCD

ขั้นตอนที่ 4: การอัปโหลดรหัส

กำลังอัปโหลดรหัส
กำลังอัปโหลดรหัส
กำลังอัปโหลดรหัส
กำลังอัปโหลดรหัส
กำลังอัปโหลดรหัส
กำลังอัปโหลดรหัส

แน่นอนว่าทั้ง 1284 และ 328 ต้องการรหัสและรหัสที่ฉันใช้สามารถพบได้ที่นี่: https://github.com/PlainOldAnders/HAL1284 ภายใต้ ArduinoSrc/src ฉันแค่ใช้ Arduino IDE เพื่อแก้ไขและอัปโหลดโค้ด แต่ก่อนหน้านั้น คุณจะต้องเบิร์น bootloaders บนไอซี:

ATMega328:

อันนี้ง่าย ในแง่ที่ว่ามีการสนับสนุนมากมายเกี่ยวกับวิธีการเบิร์น bootloader และรหัสอัปโหลดไปยัง IC นี้ ฉันมักจะทำตามคำแนะนำนี้ ส่วนใหญ่เพราะฉันลืมรายละเอียดเฉพาะ

รหัสสำหรับ 328 (ภายใต้ ArduinoSrc/ปุ่มกด) ค่อนข้างง่าย มันอาศัยไลบรารี Adafruit_Keypad-master- โดยสิ้นเชิง ในกรณีที่มีการเปลี่ยนแปลงเกี่ยวกับ lib ฉันได้รวมเวอร์ชันที่ฉันใช้ใน github-page ภายใต้ ArduinoSrc/lib

ATmega1284:

มันค่อนข้างยากสำหรับฉันเมื่อได้รับ IC ครั้งแรก ฉันเริ่มต้นด้วยการรับ bootloader จากที่นี่ และทำตามคำแนะนำในการติดตั้ง ในการเบิร์น bootloader ฉันเพียงแค่ทำสิ่งเดียวกันกับ 328 และได้รับความช่วยเหลือจากที่นี่ สำหรับ IC ทั้งสองฉันเพิ่งใช้ Arduino Uno สำหรับทั้งการเบิร์น bootloader และอัปโหลดรหัส (ลบ IC ออกจาก Arduino Uno เมื่ออัปโหลด)

โค้ด (ภายใต้ ArduinoSrc/HAL1284Basic) ซับซ้อนเกินไปสำหรับฉัน แต่ฉันสามารถแก้ไขโค้ดบางส่วนได้:

ฉันเพิ่มคำสั่งสองสามคำสั่ง (ที่ทำเครื่องหมายด้วย [A] ใน manual.pdf) และฉันก็เปลี่ยนคำสั่งอื่นๆ ด้วย:

โทน: คำสั่ง tone เพิ่งใช้ฟังก์ชันโทนของ Arduino มาก่อน แต่เมื่อใช้ไลบรารี TVout สิ่งนี้ทำให้ออดทำงานไม่ถูกต้อง ฉันเปลี่ยนเป็นใช้ฟังก์ชันโทนของ TVout แต่นี่หมายความว่าโทนพินต้องเป็นพิน 15 (สำหรับ atmega1284)

การสื่อสารแบบอนุกรม: เนื่องจากแป้นพิมพ์เป็นแบบ DIY จึงใช้การสื่อสารแบบอนุกรมเพื่ออ่านอักขระ เนื่องจากมีการใช้ atmega1284 ที่นี่ จึงมีสายการสื่อสารซีเรียลสองสาย และเมื่อเปิดใช้งาน "sercom" รหัสยังช่วยให้เขียนผ่านพอร์ตอนุกรม (จากคอมพิวเตอร์หรืออะไรก็ตาม)

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

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

การประกอบ
การประกอบ
การประกอบ
การประกอบ
การประกอบ
การประกอบ

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

ที่ยึดจอภาพที่ใช้ในที่นี้ ยังได้รับการออกแบบเพื่อใช้เป็นสวิตช์สลับ (เชื่อมต่อกับจัมเปอร์ "สวิตช์" บน PCB) และปุ่มควบคุมสามปุ่มสำหรับจอภาพ ตัวยึดยึดด้วยสลักเกลียว M3 และสเปเซอร์พลาสติก

สำหรับปลั๊กไฟ ฉันใช้ตัวเชื่อมต่อ JST PCB แม้ว่าแจ็คแบบลำกล้องจะเรียบกว่าเล็กน้อย ในการจ่ายไฟให้กับบอร์ด ฉันสลับระหว่างแหล่งจ่ายไฟ 12V หรือแบตเตอรี่ 18650 สามก้อนเป็นชุด คาวบอยที่นุ่มนวลกว่าฉันอาจออกแบบที่ใส่แบตเตอรี่แบบเรียบสำหรับบอร์ดได้

ขั้นตอนที่ 6: ข้อบกพร่องและงานในอนาคต

ปุ่มลูกศร: ปุ่มลูกศรถูกวางโดยไม่ได้ตั้งใจและใช้งานไม่ได้มากนัก ทำให้การนำทางลำบาก

ไฟล์ I/O: มีความสามารถของไฟล์ I/O อยู่แต่ไม่ได้ใช้งาน เพื่อต่อสู้กับสิ่งนี้ ซอฟต์แวร์ HAL1284Com สามารถอัปโหลดไฟล์ไปยังบอร์ดได้ นอกจากนี้ยังสามารถอัปโหลดไปยัง EEPROM

PEEK/POKE: PEEK และ POKE ยังไม่ผ่านการทดสอบ และฉันไม่แน่ใจว่าที่อยู่คืออะไร

ตัวแบ่ง: บางครั้งตัวแบ่ง (Esc) ยุ่งกับโค้ดทั้งหมด เมื่ออยู่ในลูปไม่สิ้นสุด

พิน 7: พิน PWM 7 อาจทำได้ยากเมื่อพยายาม DWRITE High หรือ AWRITE 255 ใช้งานได้ดีกับ AWRITE 254

คนงี่เง่า: เป็นการดีที่จะสามารถอัปโหลดผ่าน UART1 ได้เช่นกัน แต่การอัปโหลดทำได้ผ่าน UART0 เท่านั้น ดังนั้นการอัปโหลดจะต้องทำโดยการแยกไอซีหลักออก หน้าจอและตัวควบคุมแรงดันไฟฟ้า 5 จะร้อนเกินไปเล็กน้อยเมื่อใช้งานเป็นเวลานาน

แนะนำ: