สารบัญ:

DemUino - โฮมคอมพิวเตอร์/คอนโทรลเลอร์: 7 ขั้นตอน
DemUino - โฮมคอมพิวเตอร์/คอนโทรลเลอร์: 7 ขั้นตอน

วีดีโอ: DemUino - โฮมคอมพิวเตอร์/คอนโทรลเลอร์: 7 ขั้นตอน

วีดีโอ: DemUino - โฮมคอมพิวเตอร์/คอนโทรลเลอร์: 7 ขั้นตอน
วีดีโอ: DemUino 2024, พฤศจิกายน
Anonim
Image
Image
เบิร์น Bootloader
เบิร์น Bootloader

คอมพิวเตอร์ที่ได้รับแรงบันดาลใจจาก Arduino โดย DemeterArt ใช้ประโยชน์สูงสุดจากแป้นพิมพ์ PS2 เก่าของคุณ แฮ็คลงในคอมพิวเตอร์ส่วนบุคคลที่ปรับแต่งเพื่อควบคุมสิ่งต่าง ๆ! ฉันต้องการสร้างคอมพิวเตอร์ที่บ้านของตัวเองมาโดยตลอด สไตล์ย้อนยุค ไม่มีอะไรหรูหรา แต่มีความสามารถพิเศษที่ปรับให้เข้ากับความชอบของฉัน ดังนั้นฉันจึงใช้ atmega328 MCU และชุดพัฒนา Arduino

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

เยี่ยมชมเว็บไซต์ของฉันเพื่ออ่านเรื่องราวทั้งหมดและดาวน์โหลดไฟล์ที่เกี่ยวข้องทั้งหมด

www.sites.google.com/site/demeterart

ขั้นตอนที่ 1: คุณสมบัติ

  • อ้างอิงจาก ATMEGA328 พร้อมแฟลช 32KB, SRAM 2KB และ EEPROM 1KB
  • รองรับโหมดโต้ตอบและแบทช์
  • ตัวแก้ไขบรรทัดและโหมดรายการขณะแก้ไข
  • 8 อักขระที่กำหนดเองสำหรับกราฟิกผู้ใช้
  • 60 ขั้นตอนโปรแกรมหมายเลข 00, …, 99
  • 'ถ้า' เงื่อนไข 'ในขณะที่' และ 'สำหรับ' ลูปบวกคำสั่ง 'goto' และ 'ย่อย' สำหรับการแตกแขนง
  • นิพจน์เลขคณิตและคณิตศาสตร์พื้นฐานพร้อมการทดสอบบูลีน
  • ตัวแปรระบบอนุญาตสำหรับเหตุการณ์หมดเวลา ค่าเฉลี่ย rms ค่าต่ำสุดและสูงสุดจากพินอะนาล็อก ฯลฯ
  • ตัวแปรผู้ใช้ 26 ตัวเพื่อโต้ตอบกับตัวแปรระบบและคำสั่ง
  • 104 ไบต์ของอาร์เรย์ที่กำหนดแอดเดรสของผู้ใช้หรือจำนวนเต็มสั้น 52 ตัว
  • ความสามารถในการอ่าน/เขียนข้อมูลโปรแกรมและโค้ด on-the-fly (ตัวแปร p)
  • แอพมินิออสซิลโลสโคปพร้อมตัวละครที่ปรับแต่งสำหรับกราฟิกหลอก
  • บันทึกและโหลดโปรแกรมและข้อมูลไปยัง/จาก EEPROM
  • โหลด/บันทึกโปรแกรมและตัวแปรจาก/ไปยัง PC
  • autoexec ในการโหลดและรันโปรแกรมจาก EEPROM หลังจากการรีเซ็ตแต่ละครั้ง
  • 9 GPIO พิน (รวม SPI) พร้อมใช้งานบนตัวเชื่อมต่อ DB15 ภายนอก
  • BUZZER สำหรับเอฟเฟกต์เสียง

ขั้นตอนที่ 2: สิ่งที่คุณต้องการ

แป้นพิมพ์ ps/2 แบบเก่าที่หนาพอที่จะติดตั้งตัวแสดงอักขระ pcb LCD (รูปแบบขนานยอดนิยม) ชิป MAX232 สำหรับพอร์ต RS232 atmel atmega328PU ชุดพัฒนา Arduino พร้อม IDE 1.0.1 LM7805 regulator 5V วงจรเรียงกระแสสะพาน Buzzer, ตัวเก็บประจุ, ปุ่มกดรีเซ็ต, ขั้วต่อ ฯลฯ

ขั้นตอนที่ 3: เบิร์น Bootloader

ดังนั้นหลังจากซื้อชิป atmega328PU ที่ 'ว่างเปล่า' ก็จะต้องตัดสินใจ ฉันใช้โปรแกรมเมอร์พิเศษทั้งภายนอกหรือ ISP หรือฉันจะเบิร์น Arduino bootloader ลงในสัตว์ร้ายและทำให้หน่วยโปรแกรมสามารถตั้งโปรแกรมผ่านพอร์ต UART ได้หรือไม่ ฉันเลือกอย่างหลังเพื่อทำให้ชีวิตของฉันง่ายขึ้น! bootloader ใหม่นี้ใช้หน่วยความจำแฟลชเพียงครึ่งกิโลไบต์ ทำให้เหลือโปรแกรมผู้ใช้และข้อมูลสแตติกมากกว่า 31KB เล็กน้อย ไซต์ Arduino ครอบคลุมกรณีของการเบิร์น bootloader บนชิปใหม่ เมื่อพูดถึงการใช้ avrdude เพื่อเบิร์นชิปเป้าหมายจริง ๆ กระบวนการล้มเหลวด้วยข้อผิดพลาดที่ระบุ ID ที่ไม่ถูกต้องสำหรับ MCU โดยเฉพาะ ดังนั้นหลังจากการค้นหาบางอย่าง ฉันพบผู้ชายคนนี้ที่เข้าใจถูก และฉันก็ทำตามขั้นตอนของเขา ข้อแตกต่างเพียงอย่างเดียวคือ 2 ไฟล์การกำหนดค่า avrdude.conf และ boards.txt ที่ avrdude และ arduino IDE 1.0.1 ต้องการเพื่อให้เป็นไปได้ หลังจากคัดลอกไฟล์ 2 ไฟล์ไปยังตำแหน่งที่เหมาะสม (สำรองไฟล์เก่าก่อน) ตัวเลือก 'arduino328' จากเครื่องมือ -> บอร์ดพร้อมใช้งานและ avrdude ดำเนินการเบิร์นฟิวส์และบูตโหลดเดอร์ ตอนนี้ชิปพร้อมที่จะตั้งโปรแกรมจากภายในเครื่องใหม่แล้ว!

ขั้นตอนที่ 4: การสร้างหน่วย

การสร้างหน่วย
การสร้างหน่วย
การสร้างหน่วย
การสร้างหน่วย

บอร์ดเจาะรูพร้อมแถบทองแดงถูกใช้เป็นวิธีประกอบที่รวดเร็วพร้อมซ็อกเก็ต DIP สำหรับชิป คุณก็รู้ เผื่อไว้! จากนั้นรูและรอยตัดสำหรับขั้วต่อ ปุ่มรีเซ็ต และจอ LCD ถูกเปิดผ่านแป้นพิมพ์พลาสติกที่ทนทานและหนาเป็นพิเศษ ใช่ นั่นสร้างเมื่อ 25 ปีที่แล้ว! มีสายไฟที่เล็ดลอดออกมาจาก pcb ไปยังอุปกรณ์ต่อพ่วงต่างๆ การตรวจสอบความต่อเนื่องเบื้องต้นแล้วต่อแหล่งจ่ายไฟโดยไม่มีชิปที่บรรจุอยู่เพียงเพื่อตรวจสอบซ็อกเก็ตสำหรับแรงดันไฟฟ้าที่เหมาะสม จากนั้นมาในไอซี 2 ตัวและเคสคีย์บอร์ดถูกปิดอย่างแน่นหนาโดยใช้สแน็ปพลาสติกที่ด้านล่าง หน่วยพร้อมที่จะเขียนภาพร่างในคอนโทรลเลอร์!

ฉันขอแนะนำให้ใช้ตัวเก็บประจุแบบไม่มีขั้ว 1uF/16V สำหรับปั๊มชาร์จ MAX232 ค้นหาตัวเก็บประจุดีคัปปลิ้ง 100nF สำหรับชิปสองตัวให้ใกล้เคียงกับพิน VCC และ GND ที่เกี่ยวข้องมากที่สุด ใช้การเชื่อมต่อแบบดาวสำหรับกำลังไฟฟ้าและกราวด์ที่อ้างอิงถึงตัวควบคุม LM7805 สวิตช์ 2 อาจเป็นจัมเปอร์ขึ้นอยู่กับการติดตั้ง แต่ควรมีไว้เพื่อหลีกเลี่ยงการรีเซ็ต MCU ที่ไม่ต้องการจากโฮสต์พีซีในบางกรณีเท่านั้น ไม่ว่าในกรณีใด สวิตช์จะต้องปิดเพื่อให้ Arduino IDE เขียนสเก็ตช์ผ่านการรีเซ็ต MCU เป้าหมาย (พิน DTR ของ RS232) ในกรณีของฉัน การเชื่อมต่อเป็นแบบถาวร (ปิดเสมอ) ใช้ตัวต้านทานแบบอนุกรมสำหรับออดเพื่อแยกความจุ nF หลายตัวออกจากประตูขับ … คุณไม่มีทางรู้หรอก.. ค้นหา XTAL และตัวเก็บประจุโหลด 18-22pF ให้ใกล้เคียงพินที่เกี่ยวข้องของคอนโทรลเลอร์มากที่สุด

เนื่องจากบริดจ์เรกติไฟเออร์ หน่วยอาจได้รับพลังงานจากทั้งอะแดปเตอร์ไฟ AC และ DC ในกรณีของ DC จะมีแรงดันตก 1.5 V ระหว่างอะแด็ปเตอร์และอินพุตไปยังตัวควบคุม ในกรณีของ AC อินพุตของตัวควบคุมจะอยู่ที่ประมาณ 1.4 เท่าของเอาต์พุต RMS ของอะแดปเตอร์หรือน้อยกว่าเนื่องจากการโหลด หากความแตกต่างระหว่างอินพุตของตัวควบคุมและเอาต์พุต (+5V) มีขนาดใหญ่ พูด 7 โวลต์ พลังงานที่ใช้โดยตัวควบคุมจะเข้าใกล้ 0.5 วัตต์ และควรใช้ฮีทซิงค์ขนาดเล็กเพื่อติดตั้งชิป (มีให้) มีที่ว่างสำหรับการทำงานเป็นเวลานานในสภาพอากาศร้อน

ฟิวส์อินพุต AC สามารถเลือกได้ขึ้นอยู่กับโหลดภายนอกของคุณ (ผ่านขั้วต่อ DB15) ปัจจัยอื่นๆ ที่ส่งผลต่อการเลือกฟิวส์ ได้แก่ ตัวต้านทานจำกัดกระแสสำหรับไฟแบ็คไลท์ LED ของ LCD, ตัวเก็บประจุแบบบริดจ์สำหรับกระแสไฟชาร์จ และความจุกระแสไฟของหม้อแปลงไฟฟ้าที่จ่าย

ขั้นตอนที่ 5: แผนผัง

แผนผัง
แผนผัง

ขั้นตอนที่ 6: ซอฟต์แวร์ที่รันออนบอร์ด

นี่คือภาพร่างที่ทำให้ทุกอย่างเกิดขึ้น… และ 32KB ไม่เพียงพอ! คุณสามารถใช้มันโดยไม่มีการแก้ไข ในกรณีนี้ฉันจะขอบคุณสำหรับการอ้างอิงถึงชื่อของฉัน หรือเปลี่ยนแปลงได้ตามต้องการและลืมฉัน;-)

นี่คือเอกสารโดยละเอียดเกี่ยวกับเครื่อง

สรุปคำสั่งและนิพจน์

“: บรรทัดความคิดเห็นที่ไม่สามารถพิมพ์ได้

ai: แนบอินเตอร์รัปต์ 0 (พิน D2)

ar: อ่านอนาล็อก

aw: 'การเขียนแบบแอนะล็อก' ต่อ Arduino หรือมากกว่า pwm

ca: การจับภาพแบบอะนาล็อกในอาร์เรย์

cl: ล้างการแสดงผล cno: return *Prgm index of line number

di: รอชุดพัลส์และวัดระยะเวลาและระยะเวลา

dl: ล่าช้า

ทำ: ร่วมกับ 'wh'

dr: ดิจิตอลอ่านพินใดก็ได้

dw: ดิจิตอลเขียนพินใด ๆ

ed: โหมดตัวแก้ไข / โหลดโปรแกรมจาก PC / กำหนดหมายเลขใหม่

el: ฟังก์ชั่นการเข้าถึง EEPROM

end: คำสั่ง END ของโปรแกรม

ensb: สิ้นสุดรูทีนย่อย

es: ฟังก์ชั่นการเข้าถึง EEPROM

fl: ตัวกรองค่าเฉลี่ยเคลื่อนที่อย่างง่าย

fr: for-next loop (fr-nx)

go: ข้ามไปที่ขั้นตอนของโปรแกรม

gosb: ดำเนินการดำเนินการกับรูทีนย่อยต่อไป

gt: รอการป้อนข้อมูลของผู้ใช้

if: ทดสอบเงื่อนไขแล้วข้ามไปที่ขั้นตอน

io: GPIO 1-9 บิต

ld: โหลด/รวมโปรแกรมจาก EEPROM

lp:: คีย์บอร์ดควบคุมลูปในโหมดโต้ตอบ

ls: รายการโหมด / ส่งโปรแกรมไปยังพีซีทีละบรรทัด

ml: ได้เวลา

mm: แสดงหน่วยความจำว่าง

nos: แปลงตัวเลขเป็นสตริง

nx: ร่วมกับ 'fr'

pl: พล็อตอาร์เรย์ cxx

pm: ตั้งพินสำหรับเข้าหรือออก

pr: พิมพ์ข้อความหรือค่าหรืออักขระที่กำหนดเอง

rgc: คำสั่งคัดลอกช่วงสำหรับอาร์เรย์

rgs: range set คำสั่งสำหรับ arrays

rn: รันโปรแกรมใน RAM

rs: ซอฟต์รีเซ็ต

rx: รับตัวละครผ่าน RS232

si: อินพุตอนุกรมแบบซิงโครนัสพร้อมนาฬิกาและหมุดข้อมูล

sm: แอพ mini oscilloscope sno: แปลงสตริงเป็นตัวเลข

ดังนั้น: เอาต์พุตอนุกรมแบบซิงโครนัสพร้อมนาฬิกาและหมุดข้อมูล

sub: ประกาศรูทีนย่อย

sv: บันทึกโปรแกรมไปที่ EEPROM

tn: เสียงบี๊บ

tx: ส่งหมายเลขผ่าน RS232

wh: do-while loop ใช้ร่วมกับ 'do'

ขั้นตอนที่ 7: วิดีโอคลิปของมินิแอพ 'sm' ที่กำลังรันอยู่

เยี่ยมชมเว็บไซต์ของฉันเพื่ออ่านเรื่องราวทั้งหมดและดาวน์โหลดไฟล์ที่เกี่ยวข้องทั้งหมด

www.sites.google.com/site/demeterart

แนะนำ: