วันอาทิตย์ที่ 11 ธันวาคม พ.ศ. 2554

มาเล่นไมโคร ไม่ง้อเครื่อง burn กันดีกว่า


Oct 20, '08 12:51 PM
สำหรับ ทุกคน
  หลังจากที่พยายามลง ทำบอร์ด ett-stamp เป็น wiring io มาตั้งนาน ตอนนี้ Wiring IO (Version ATmega64) เริ่มทำงานได้ 

แต่ก่อนจะไปถึงขั้นนั้นนะครับ ผมจะมาแนะนำเทคนิคที่น่าสนใจอีกอัน วิธี boot-loader ลงใน mcu ใน blog นี้จะใส่ bootloader ลงใน  ETT-STAMP-64 ครับสำหรับคนที่ชอบ AVR Studio ท่านจะได้ไม่ต้องเปลี่ยนโปรแกรมเลย และยังประหยัดเงิน ไม่ต้องใช้ เครื่องโปรแกรม อีกแล้ว เหมาะมากกับ class หรือ  workshop  จะได้ไม่ต้องมีเยอะ ประหยัดเงิน ไว้ทำซื้ออย่างอื่นดีกว่า ช่วยชาติครับ

Boot loader เป็น firmware ส่วนมากจะทำหน้าที่ ช่วย upload data เข้าไปใน flash หรือ eeprom หรือเรียกให้ง่าย ทำให้ mirco-controller  burn ตัวมันเองได้ (เผาตัวเองได้)

bootloader มีกันหลายแบบ มีทั้ง upload ผ่าน mmc  card ได้ upload ผ่าน lan อย่างพวก Embeded linux
ส่วนอันที่ผมจะมาแนะนำ upload ผ่านสาย serial ครับ หรือจะใช้ usb2serial ก้อได้ notebook เหมาะมาก

วิธีทำก้อไม่ยากครับ  แต่ขอแนะนำว่า ผู้ใช้ต้องคุ้นเคยกับ AVR มาพอสมควรนะครับ บทความนี้ ไม่เหมาะกับมือใหม่มากๆๆ

ส่วน bootloader ผมได้มาจากที่เขาพัฒนา bootloader ไว้แล้วอีกที่ อันนี้ที่ผม เอามาใช้ มาจาก http://www.avride.com/article/wiring/
ของคุณ
Worapoht Kornkaewwattanakul พัฒนาเพิ่มเติมไว้

ผมขออนุญาตินำมาใช้ และ ขออนุญาติ เอามาเผยแพร่ความรู้ ให้สมาชิกในเวปด้วยนะครับ

ส่วนของ bootloader ส่วนนี้จะทำให้ ATmega มี Protocol สื่อสาร แบบเดียวกับ เครื่องโปรแกรม STK-500v2 ของ ATmel ซึ่งทำให้ ท่าน burn เข้า mcu โดยไม่ต้องมีเครื่องโปรแกรมได้

ซึ่งจาก source code เขาไว้ใช้งานกับ ATmega128 ในส่วนใน src เขาได้ทดสอบกับ  ATmega8, ATmega16 ,ATmega32 ,ATmega8515 ,ATmega8535, ATmega162, ATmega128 ซึ่งยังไม่มี ATmega64 ผมเลยพยายามเพิ่มเติมส่วนที่จำเป็น

ผมมีบอร์ด ETT-ATmega64 อยู่นานแล้ว ยังไม่ผ่านจ่ายไฟ เข้า VCC  ซึ่งถ้าท่านใช้ ATmega ตัวอื่นๆ ลองทำต่อวิธีผม น่าจะทำให้นำไปใช้งานได้เลย

วิธีการแก้ไขให้ src  ใช้ ATmega64 ได้นะครับ ต้องแก้ไข file ส่วนของ Makefile กับ stk500boot.c

ใน Makefile

เลือก MCU ใหม่

เปลี่ยน
MCU = atmega128

เป็น
MCU = atmega64

ในส่วน Bootloader Address ครับ ตำแหน่ง start ของ bootloader (ขอบคุณท่าน DEV-Zone ที่วันนั้นแนะนำในเวปบอร์ด)

# Bootloader
# Please adjust if using a different AVR
# 0x0e00*2=0x1C00 for ATmega8  512 words Boot Size
# 0xFC00*2=0x1F800 for ATmega128  1024 words Boot Size
# 0x7C00*2=0x0F800 for ATmega64  1024 words Boot Size
#BOOTLOADER_ADDRESS = 1F800
BOOTLOADER_ADDRESS = 0F800

ผมได้เปลี่ยนจาก
BOOTLOADER_ADDRESS = 1F800

เป็น
BOOTLOADER_ADDRESS = 0F800

ตัวเลขได้มาจากใน datasheet Atmel64 ส่วนของ bootloader support
หัวข้อ ตาราง Boot Size Configuration ขึ้นอยู่กันขนาด bootloader ที่ทำขึ้นมา ซึ่ง firmware นี้ขนาดไม่เกิน 1024 words

boot reset address อยู่ที่ 0x7C00 ซึ่งเปลี่ยน word ทำกันคูณสอง ได้ 0xF800

BOOTSZ1 BOOTSZ0  BootSize  Application          BootLoader    EndApp   BootReset
                                                Flash Section      Flash Section   Section   Address
1              1               512          0x0000-0x7DFF   0x7E00-0x7FFF   0x7DFF   0x7E00
1              0               1024        0x0000-0x7BFF   0x7C00-0x7FFF  0x7BFF   0x7C00
0              1               2048        0x0000-0x77FF   0x7800-0x7FFF    0x77FF    0x7800
0              0               4096        0x0000-0x6FFF   0x7000-0x7FFF    0x6FFF   0x7000
(คัดลอกจาก datasheet ของ ATmega64)

และในส่วนของ source code  stk500boot.c

เพิ่ม Signature Bytes ของ Atmega64 เข้าไป
#define SIGNATURE_BYTES 0x1E9602

ซึ่งดูได้จากใน datasheet อีกเช่นกันครับ

นอกนั้นไม่จำเป็นต้องแก้ไขอะไรครับ ในขั้นนี้ ท่านจะสามารถ compile source ได้แล้ว
compile โดยพิมพ์ make ที่ ไดเร็กทรอรีนั้น  ซึ่งไม่ีมี error เกิดขึ้นก้อใช้งานได้ครับ

ส่วนใน รายละเอียด bootloader จาก src ทำอะไรบ้างให้ท่านศึกษาด้วยตัวเองนะครับ มันละเอียดมาก
โดยสรุปหลักๆ bootloader จะมี LED แสดงผลเมื่อเข้าทำงานในส่วน และการใช้งานbootloader มีสองแบบ

แบบแรก จะ start bootloader ตั้งแต่แรก ที่ จ่ายไฟ ให้ mcu แล้วกลับไปทำงานปกติ ถ้าไม่มีการใช้ภายเวลาที่กำหนด
แบบที่สอง จะ start bootloader เมื่อ pin ที่กำหนด active low

ซึ่งในบางส่วน ท่านอาจจะต้องเพิ่ม hardware LED เพื่อแสดงสถานนะของ mcu หรือ เพื่อ Switch เพื่อ เข้า bootloader

โดย default bootloader นี้ จะใช้ switch กับ LED ผมทดสอบต่อแบบ defalut ก่อนครับ

ท่านอยากแก้ไขอะไร ผมจะตัวอย่างให้ เช่น อยากให้มี LED แสดง ท่านไป comment ในส่วน (ใส่ // หรือ /* .......................... */)

//#define REMOVE_BOOTLOADER_LED            // no LED to show active bootloader

แล้วกำหนด led อยู่ pin ไหน ท่านแก้ไขได้ที่ ส่วนนี้ของไฟล์
/*
 * LED on pin "PROGLED_PIN" on port "PROGLED_PORT"
 * indicates that bootloader is active
 * PG2 -> LED on Wiring board
 */
#define PROGLED_PORT PORTG
#define PROGLED_DDR  DDRG
#define PROGLED_PIN  PING2

อันนี้ อยู่ port G,pin2

นี้เป็นการยกตัวอย่างให้ดูนะครับ จริงๆ เอาละเอียด มันจะเยอะมาก ก้อให้ท่านไปศึกษา ดูกันต่อเอง

ตัวอย่างที่ต่อบน บอร์ดผม Atmega64 เพิ่ม Switch ที่ช่อง E2  กับเพิ่ม LED ที่ช่อง G2 ตามวงจรของ WiringIO ครับ

หลังจากนั้น compile ได้แล้ว ท่านก้อ flash เข้าไปครับ
และกำหนด fusebit ดังนี้ครับ
- กำหนดขนาด firmware อันนี้กำหนด 1kWords  (program BOOTSZ01)
- เลือกให้เข้า BOOT Reset Vector (program BOOTRST)
- Lock Mode 3 ป้องกันเขียนในโปรแกรมส่วน bootloader  (program BootLock 11 and BootLock 12)

เข้าไปดูที่ http://www.avride.com/article/wiring/
ถ้าท่านใช้ pony-prog จะ fusebit ดังรูปครับ

หรือใช้ avr-dude ใช้ fuse-bit แบบนี้นะครับ
(โปรแกรม คำนวณ fuse-bit ส่วนตัว)
Atmega64
High-Byte=0x2c
Low-Byte=0ef
Ext-Byte ใส่ตอนหลังได้

ทดสอบการใช้งาน
ท่าน ต้องทดสอบก่อน compile มาแล้วใช้ได้หรือ ป่าว บาง avr-gcc มันมีปัญหาแปลก อย่าง คอมไฟล์เลอร์ คนล่ะเวอร์ชั่น คอมไฟล์ไฟล์เดียวกันทำงานไม่ได้ ถ้าไม่ได้ อันนี้ ผมเสียใจด้วยนะครับ ผมคงอธิบายทั้งหมดไม่ได้ทั้งหมด มันจะเยอะมาก ต้องพยายามแก้ๆ ไปครับ :D

ทดสอบแรก ถ้าท่านต่อวงจร ถูกต้อง ให้ท่านกด switch prog กับ reset ถ้าไฟ led ติด ก้อ bootloader ทำงานแล้ว
หรือ ท่านใช้แบบ ไม่มีสวิตซ์ ไฟจะกระพริบ สองที่ แสดงว่า bootloader ทำงานแล้วเช่นกัน ดังรูปครับ ไฟ led ติด (สีแดงเล็กๆ) แผ่นวงจรผม อาจจะดูยุ่งๆหน่อยครับ พื้นที่มีจำกัด

ทดสอบใช้งานกับ AVR-Studio

อันแรกต้อง config comport ก่อนครับ เลือก AUTO ก้อได้ครับ
จากนั้น AVR-Studio ถ้า AVR-Studio เข้ามาถึงหน้าต่างนี้ ท่านประสบความสำเร็จแล้ว (ฮ่าๆ)

ตอน นี้ท่านก้อสามารถ flash โปรแกรม หรือ เปลี่ยน fusebit ก้อได้ครับ (เปลี่ยนได้บางตัวนะครับ) ส่วน erase chip ไม่ทำงานนะครับ แต่ทุกครั้งที่ flash ใหม่ ที่ตัว firmware  จะลบเองครับ


***ทุก ครั้งก่อนจะ connect ท่านต้องเข้า bootloader mode ก่อน ไม่งั้น โปรแกรม AVRISP หาไม่เจอ และต้องปิดหน้าต่าง AVRISP ถึงจะสามารถใช้ serial port ได้เหมือนเดิม

เขียนโปรแกรมง่าย ทดสอบกันไฟกระพริบเทพก่อน (ตอนนี้ผมสามารถทำไฟกระพริบได้กับทุก MCU แล้ว)

#include                    
#include               // Delay functions


void delay_ms(unsigned int i)
{
    for(;i>0;i--)
        _delay_ms(1);
}


int main(void)
{
  PORTB=0x00;                          // PB7..0 = 0
  DDRB=0x01;                             // PB0    = Output

  while (1)
  {
    PORTB = 0x00;  
    delay_ms(200);
    PORTB = 0xFF;
    delay_ms(200);
  }

  return 0;
}

จากนั้นกด flash to current settings ที่เมนูของ avr-studio ได้ไฟกระพริบแล้ว (สวยงาม)
ไฟดับ
ไฟติด

เอาล่ะครับ ยาวมากๆ หวังว่าคงจะมีประโยชน์กับเพื่อน สมาชิกบ้างนะครับ เอาไว้เจอกันใหม่ในโปรแกรมหน้า สวัสดีครับ :D
เอกสารแนบ:atmega64_bootlooader_stk-500v2.rar
รายการบล็อกSep 23, '08 11:59 PM
สำหรับ ทุกคน

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

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

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

ไม่ ต้องถึงขนาดเปิด datasheet เพื่อหาวิธีใช้งาน ไม่ต้องรู้ศัพท์ทางเทคนิค เราก้อควบคุมอุปกรณ์เราได้แล้ว ส่วน software ที่ใช้พัฒนาอยู่ในรูปแบบ ของภาษา C/C++ และเป็นระบบเปิด ที่เราสามารถเข้าถึงได้ทุกส่วน

ถ้ายังสงสัยกว่า arduino เป็นอย่างไง ใช้ทำอะไรได้บ้าง ขอให้ไปศึกษาเพิ่มเติมก่อนนะครับ จากที่นี้ครับ http://www.arduino.cc  หรือ เอาไทยๆ จาก เวป http://logicthai.net/ หรือ http://www.avride.com/pop_thai/
หรือ จะเข้าไปอ่านที่นี้
http://todbot.com/blog/2006/09/25/arduino-the-basic-stamp-killer/

What is Arduino
Arduino is two things:
A software programming environment, with a GUI and style based off
of Processing, and a packaging of AVR GCC, AVR LIBC, and AVRlib. In many ways the Arduino environment is like WinAVR, but cross-platform.

A hardware board, based on an Atmel AVR processor, arranged in a standardized way. Arduino isn’t restricted to just this board however, and many Arduino-compatible boards have been created


เขาเปรียบเทียบ arduino กับให้คำจำกัดความของโปรเจคนี้ได้สั้นๆ เข้าใจง่ายสุดแล้ว (ผมขี้เกียจแปล ก๊อบปี้มาเลย)

ต้อง ยอมรับ เลยนะครับ ในตอนแรกผมไม่ได้สนใจ โปรเจคนี้มากนัก  คิดว่ามันคงเหมือน basic stamp ทำอะไรไม่ได้มาก เขียนโปรแกรมซับซ้อนมากก้อไม่ได้ ด้วยความที่ arduino เป็นระบบเปิดสามารถ เข้าถึง source code ได้ทั้งหมด แกนหลักของมันคือ c ++ เป็น core i/o ของ arduino ออกแบบมาให้ยืดหยุ่น เพิ่มเติมอะไรได้ง่ายครับ ผมว่าเอามาทำงานด้านตั้งแต่ basic จน advance ได้เลยนะครับ สามารถออกแบบ library แล้วใช้ arduino เป็นเหมือน high level  เรียกใช้ library ของเราอีกที่ แล้วแต่มุมมองของคนเอาไปใช้เลยนะครับ

ส่วน ที่ผมยังไม่ชอบมาก ส่วนของ IDE มันทำงานแบบหลายๆ ไฟล์ เอามาเปรียบเทียบไฟล์กันไม่ได้ ส่วน serial monitor ก้อเหมาะกับการรับข้อความมากกว่า แต่คงมีการพัฒนาไปได้อีกยาว

เข้า เรื่องของเราต่อ หลังจากประกอบบอร์ดเสร็จแล้ว ถ้าใครยังไม่มีบอร์ด เข้าไปที่นี้ก่อน ไปทำบอร์ดมาก่อนครับ :D หรือจะซื้อเอาก้อได้ ตอนนี้มีหลายที่ ที่เอามาขายแล้ว

อุปกรณ์ที่เราต้องมีนะครับ
- บอร์ด I/O Arduino หรือไม่ก้อได้ ต่อบน bred board (บอร์ดทดลอง) ตัวหลักของ arduino ไม่ได้อยู่ที่บอร์ดนะครับ ต่างจาก ค่ายอื่นมากๆ อาจจะใช้งานง่าย แต่บอร์ดต้องซื้อเอา
-อุปกรณ์อีกอย่าง flash avr จะเป็น avrisp, ett avr-isp, usbasp  ยังไม่มี เข้าไปเลือกซื้อ ตามนี้เลยครับ http://etteam.com/product/03000AVR.html



สำหรับ มือใหม่มากๆ ส่วนนี้ อาจจะพยายามมากหน่อยนะครับ เราต้อง flash bootloader เข้าไปก่อน
firmware ส่วนนี้ เป็นตัวช่วย download โปรแกรมที่เขียนลง chip โดยผ่านสาย serial ไม่ต้องมีเครื่อง flash ใด ไม่ลำบากมาก ลุยส่วนนี้ให้ได้ก่อน ต่อไปบอร์ดพัง เราแค่เปลี่ยน ชิป มันไม่กี่บาทครับ ไม่ไหวจริงรบกวนเพื่อนๆ ช่วยล่ะครับ

ขั้นแรกเราต้องเลือกบอร์ดก่อนครับ หรือ เลือกรุ่นบอร์ดก่อนครับครับ เข้าที่ tools->board



แต่ในกรณี บอร์ดเราทำเอง แนะแนวให้เลือก Arduino NG ดูชิปที่เราใช้เป็น ATmega8 กับ ATmega168
จากนั้น  Burn Bootloader อันนี้ต้องมาดูก่อนว่าเรามีอุปกรณ์ตัวไหนแล้วเลือก

ส่วนผมมีตัว ett avr-isp (ตัวล่ะ 150 บาท) ก่อนจะใช้ต้องมาทำ connector ใหม่ก่อนนะครับ CISP ใช้ 6 pin ในเมนูจะมี paralell programmer แต่ก้อดันไม่ใช้อีก งั้นทำไงดีล่ะ เอาแบบเดิมก้อไปใช้โปรแกรม ponyprog burn แล้วเปลี่ยน fusebit  ซึ่งตามรูปเป็นของ ATmega168


** บอร์ด Arduino มีปัญหา กับ ตัว ETT ISP จะ burn เข้าไม่ได้นะครับ ที่ขา SPI ต่อกับ LED ไว้ ต้องเอาก่อนจะทำการ burn ได้ครับ **

แต่ผมมีอีกวิธีครับ เข้าไปเพิ่ม programmer  ตัว burn นี้ล่ะ ไหนจะใช้ arduino แล้ว
วิธีเข้าไปที่ directory ของ arduino -> hardware

หาไฟล์ programmers.txt

เข้าไปเพิ่ม

####################################

ettparallel.name=ETT ISP Parallel Programmer
ettparallel.protocol=pony-stk200
ettparallel.force=true
#ettparallel.delay=200

######################################


หลัง จากนั้นปิดโปรแกรม แล้วเปิดใหม่ จะเห็น ett isp ที่เพิ่มเข้าไป ดังตัวอย่างดังรูปข้างล่าง ตอนนี้น่าจะ burn ได้แล้ว ถ้าใช้ตัว programmer  ตัวอื่นเพิ่มได้ด้วยวิธีนี้เช่นกันครับ


ตอน นี้เรามี bootloader จะใช้งานได้แล้ว สำหรับ Arduino NG เราจะโหลดโปรแกรมเข้าไปได้ หลังจาก reset ซึ่งจะเห็นได้จากไฟกระพริบ เข้าโหมด boot loader

มาลองกับโปรแกรมแรก กันก่อน ด้วยไฟกระพริบกันก่อน ก่อนจะพากับไฟกระพริบเทพ

กดที่ file->  sketchbook -> example -> digital -> blink

แล้วจึงกด upload ตอนนี้ท่านจะได้เห็นไฟกระพริบแล้ว

หลังจากโม้ไปสักเยอะ หวังว่า คงจะทำให้เริ่มสนุก และ อยากเล่น arduino มากขึ้นนะครับ

เอกสารแนบ:Arduino S3v3 manual.pdf
เอกสารแนบ:BOM.xls
กลับมาลงบทความอีกครั้ง หลังจากที่มีเรื่องวุ่นวายใจ เริ่มคิดได้หรือเริ่มได้คิดก้อได้ครับ บ่อยครั้งมีสิ่งสูญหายไป หรือโดนลักขโมย เรามักไปคิดมาก น้อยใจชะตากรรม โทษสังคม ทั้งที่ของบางอย่างที่หายไป ก้อเป็นของที่ไม่ค่อยได้ใช้ด้วยช้ำ บางที่ของที่เรามีอยู่ ไม่ได้ใช้นาน ก้อเก่า และตกรุ่น เราก้อพาลไม่อยากได้อีกล่ะ สิ่งของ ทรัพย์สิน มันไม่ได้อยู่ยันยื่น แต่มีบางอย่างที่ มันไม่สูญหายไปไหนได้นะครับ สิ่งความรู้ที่อยู่ในหัวเรานิ ซึ่งยิ่งให้ เรายิ่งได้มากนะครับ ผมเลยกลับมาทำสิ่งนี้ดีกว่า แบ่งปันความรู้

ช่วงนี้ผมเน้นการประหยัด ทั้งเงิน ทั้งเวลาล่ะครับ ตามปกติอยากได้แผ่นวงจร ส่งร้านที่รับทำ ส่วนมากจะใช้เวลา 3-5 วัน  ทำด่วน กับ บวกหลายร้อยครับ แต่บางที่เราอยากทำบอร์ดทดลองขึ้นมาก่อน หรือ เรียกว่า prototype ไม่ใช้ phototype (ตามภาษาช่าง) จะให้รอนานนั้น คงไม่ไหว วิธีที่ทำบอร์ดขั้นทดลอง วิธีแรก หนีไม่ wirelap กับแผ่นวงจรอเนกประสงค์วิธีที่สอง ออกแบบลายวงจร แล้วใช้ กรดกัดลายวงจร เองเลย


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

ซึ่งศึกษาได้จาก
http://www.thaimicrotron.com/Trick/PCB/DIYPCB.htm

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

ซึ่งผมก้อหามาหลายวิธีล่ะ ตั้งแต่ ใช้ CNC กัดลายวงจร ปัญหา คือเสียเวลามาก ตั้งแต่ setup ชิ้นงานบนเครื่อง
หัว tools กัดเล็กมาก หักง่าย จะเอา PCB แผ่นเดียว ทำขนาดนี้ เดินสายด้วย wirelap ดีกว่า โปรเจค CNC กัด PCB เลยเก็บไว้ดีกว่า

แต่มาวันนี้ ผมขอเสนออีกวิธี เป็นอีกตัวเลือกแล้วกันครับ

ผม ได้หาวิธี จากใน google คือเจออีกวิธี  เรียกว่า toner transfer  แต่แทนที่เข้าจะใช้ แผ่นใส  อันนี้ใช้กระดาษ glossy photo ราคาแผ่นล่ะ 4-6 บาทและแต่เกรด บางเวป เล่นไปถูกกว่านั้น ใช้กระดาษจากหนังสือ มาใช้เลยด้วยซ้ำ

เข้าไปดูในนี้ได้นะครับ
http://www.headwize.com/projects/garbz2_prj.php



วิธี ทำการพิมพ์วงจรลงกระดาษ glossy photo ครับ ให้ลายวงจรกลับด้านด้วยนะครับ (mirror) แล้วตัดขนาดให้พอเหมาะ เอามารีดลงแผ่นวงจร ด้านทองแดง ส่วนกระดาษที่ผมใช้ เป็น glossy photo 120 gram ยี่ห้อ Hi-jet (รับบริจาคจากเพื่อนมา ยังจะประหยัดไปได้อีก) ควรใช้กระดาษมันด้านเดียว ลอกง่ายกว่า ถูกกว่าครับ หาได้ฟรี อะไรก้อใช้ได้ครับ ฮ่าๆ

ตอนรีด ไม่ต้องรีดนานมาก หรือกดหนักมากๆ แต่ต้องร้อนและเอาให้ทั่ว ก้อพอ เคยทดลองรีดนาน หมึกจะละลายเลอะ เหมือนกันครับ อันนี้ต้องไปหาเทคนิคกันเอาเอง

รีดเสร็จ โยนลงน้ำ ควรปล่อยให้กระดาษมันปล่อย แล้วเอานิ้วถูให้มันลอกออกมานะครับ ซึ่งกระดาษ glossy ลอกง่ายกว่า แผ่นมากครับ ไม่รู้ว่ามันออกแบบ มาไว้ทำ toner transfer เลยหรือป่าว

จากนั้น เราต้องเอาเยื่อกระดาษทั้งหมด ออกไป ตามช่องว่าง ต้องเอาออกให้หมดนะครับ กรดมันกัดไม่ได้ อาจจะใช้แปรงสีฟัน ขัดมันออกไป แล้ว ใช้กรดกัดเหมือนเดิมครับ

ผมได้ทดลองกัดลายวงจรดู ผมกัดขนาดเส้น 10 mil space 10mil ได้  จะเห็นได้จาก แผ่นวงจร Lilypad footprint คมมาก smt กัดลายออกมาได้ละเอียดดี


พวก silk screen ก้อรีดได้เช่นกันครับ ดังที่เห็นตัวอย่างข้างต้นครับ  ขอให้สนุกกับการทำบอร์ดใช้เองนะครับ
หลังจากไม่ได้ update blog มานาน ถึงเวลาแอบมา update บ้างล่ะ

หลัง จากที่ฝันอยากได้ gps มานานแล้ว เนื่องด้วยราคามันแพง เหลือเกิน สมัยก่อนหลายปีที่แล้ว เอาแค่เล็กๆ บอกตำแหน่งได้ราคาเกือบหมื่นแล้ว ยิ่งมีจอสีบอกตำแหน่งได้ ราคาก้อฝันไปได้เลย จิงผมไม่ได้ อยากได้ function อะไรแบบนั้นหรอก อยากเอามาทำเป็นนาฬิกา sync เวลา ผ่านดาวเทียว atomic clock เลยนะครับ ฟังดูอย่างไงก้อหรูสักจริงๆ  ,เอามาทำ datalog บันทึกตำแหน่ง latitude, longitude เอามาใส่ google map ดูเส้นทางที่เดินไป เอาไปประยุกต์ อุปกรณ์ติดตามแฟนสาวได้ (เผื่อไว้ก่อน) เมกะโปรเจค มันช่างเยอะเหลือเกิน แต่ติดอยู่ที่ หา module มาเล่นไม่ได้เลย เสียดายเงิน

ด้วย ความโชคดีครับ ประกอบกับจังหวะที่ดี ผมหามาได้จากบ้านหม้อ รอจนบ้านหม้อมีขาย เลยมีเลยเอามาเล่น หาของเล่นตามฤดูกาลครับ ราคาจะไม่แพงมีเพื่อนเล่นด้วยเยอะ ฮ่าๆ gps module ที่หามาได้ ขายกับ สามตัวพันบาท

เอามาวางเทียบกับ sd-flash ตัวเท่าๆกันเลย เล็กมาก โดย chip ตัวนี้มาจาก samsung thailand โรงงานบ้านเรา ไม่ธรรมดานะครับ บอร์ดแบบนี้ ในไทยก้อทำได้

ส่วนที่ชอบนะครับ บอร์ดนี้มี เสา GPS แบบ Active Antenna เห็นเขาเรียกกันแบบนี้นะครับ มีเสาในตัวล่ะครับ โดย Chipset เป็นตระกลู SiRF StarIII รับดาวเทียมได้ 20 ดวง ก้อมีข้อดีครับ ทำเป็นอุปกรณ์ hand held เล็กๆ ได้สบายมาก แต่มันไม่มีเสา เวลารับสัญญาณ จะลำบากหน่อย อยู่ในตึก บางที่อาจจะหาตัวมันเองไม่เจอเลย

สเ๊ป๊กเต็มๆ หาอ่านที่ได้ที่นี้ครับ คิดว่าเป็นตัวใกล้เคียง
http://www.sparkfun.com/commerce/product_info.php?products_id=465

ก่อน จะไปถึง mega project ต่อๆไป เราต้องเข้าใจพื้นฐานมันก่อนครับ ระบบจีพีเอส คือระบบหาตำแหน่งอ้างอิงเทียบกับโลกโดยใช้ดาวเทียมบนฟ้าเป็นตัวระบุตำแหน่ง พิกัด (เส้นรุ้ง-เส้นแวง)
โดย วิธีคำนวน delay time จากการส่งสัญญาณระหว่างดาวเทียมกับตัวรับ ซึ่งต้องอาศัยดาวเทียมหลายๆดวง 4 ดวงขึ้นไป เพื่อมาคำนวนหาตำแหน่งที่แม่นยำ

เอาแบบละเอียด กว่านี้ เข้ามาดูที่นี้เลยครับ
http://th.wikipedia.org/wiki/GPS

โดย ตัว module ที่ได้มา จะทำหน้าที่ส่งสัญญาณกับดาวเทียมและส่งข้อมูลพิกัดมาให้แล้ว ซื่ึ่งเป็น format NMBA บอกตำแหน่งพิกัด กับข้อมูลเกี่ยวกับดาวเทียมเอาไปวัดความน่าเชื่อถือของข้อมูล (ทำไมมันช่างเต็มไปด้วยข้อมูลเทคนิดแบบนี้นะ) สรุปง่ายๆ มันมาตราฐานแล้ว เอามาต่อคอมได้เลยล่ะครับ จะได้ข้อมูลพิกัดมาเลยครับ ผมได้ลองเอาบอร์ดที่ทำไว้เป็น usb2serial มาต่อกับ module ดังรูปเป็น usb2serial แบบทำมือ handmade แบบจีนแดงไม่กล้าทำตาม


ใน ขั้นแรก ผมก้อหาโปรแกรมมาลองก่อน จากคำแนะนำจากเพื่อนๆใน เวป www.electoday.com ได้มาสองโปรแกรม u-center จาก u-blox กับ Mapking 2007

โปรแกรมแรก u-center


หาโหลตได้ที่นี้ครับ http://www.u-blox.com/products/u_center.html


อีก โปรแกรม MapKing2007 อันนี้สามารถเอาตำแหน่ง ไปแสดงบนแผนที่ พร้อมทั้งบันทึกตำแหน่ง เพื่อเอามา playback ได้อีกด้วย ดังรูปที่เห็น แสดงข้อมูลของตัวผมเองครับ

เริ่มต้นการทดลองโมดูลง่ายๆก่อน ต่อไปคงเอาไว้ศึกษาข้อมูล Format NMBA ก่อน
นี้เป็นตัวอย่างข้อมูลที่ได้มาครับ
อ่านออกแต่บรรทัดสุดท้าย วัน เวลา พิกัด อะไรต่อก้อไม่แน่ใจ

$GPGSA,A,1,22,18,09,,,,,,,,,,,,*1E
$GPGSV,3,1,12,18,45,016,23,09,44,043,30,22,27,330,28,21,77,179,21*7B
$GPGSV,3,2,12,24,38,149,25,14,36,283,17,06,21,215,25,30,20,154,21*74
$GPGSV,$GPGGA,114008.804,1339.7094,N,10028.2090,E,0,03,,27.4,M,-27.4,M,,0000*6F

ข้อมูลเต็มไปด้วยตัวเลข เดี่ยวหาข้อมูล มาแกะก่อน จะมาเล่าให้ฟังกันต่อไปครับ

ไม่มีความคิดเห็น: