แสดงบทความที่มีป้ายกำกับ อาร์ดุยโน แสดงบทความทั้งหมด
แสดงบทความที่มีป้ายกำกับ อาร์ดุยโน แสดงบทความทั้งหมด

05 กรกฎาคม 2559

อาร์ดุยโน : PWM

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

ในตอนนี้ ครูจะแนะนำการส่งข้อมูลออกอีกแบบหนึ่ง จากเดิมที่เคยแนะนำเรื่องการส่งข้อมูลออกจากอาร์ดุยโนแบบดิจิทัลแล้ว คราวนี้จะพาทดลองส่งข้อมูลออกแบบแอนะล็อก หรือที่เรียกว่า PWM (Pulse Width Modulation)

พัลส์ (Pulse) กับความกว้างของพัลส์

มาเริ่มที่คำแรกก่อนเลย คำว่า พัลส์ ก็คือ สัญญาณไฟฟ้าที่มีลักษณะเป็นลูกคลื่น หรือมีสัญญาณไฟฟ้าเป็นลูกๆ โดยความหมายแล้วก็คล้ายๆ กับสัญญาณดิจิทัล ก็คือเคยพูดถึงมาแล้วนั่นเอง (คลิก ถ้าต้องการทบทวน)


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



การกำเนิดสัญญาณพัลส์จะมีความถี่เป็นค่าที่ระบุชัดเจนว่ามีความถี่เท่าใด อย่างเช่นในอาร์ดุยโนเนี่ย ความถี่ที่ใช้ในการสร้างพัลส์คือ 490 Hz (โดยประมาณ) โดยใช้โวลท์เตจที่ระดับสูงสุดเป็น 5 โวลท์ (หรือ 3.3 โวลท์ในบางรุ่น) เพราะฉะนั้นพัลส์ 1 ลูก แต่ละแท่งของมันจะสูง 5 โวลท์ ต่ำสุดก็คือ 0 โวลท์ เนื่องจากถูกกำหนดให้ผลิตพัลส์ที่ความถี่ \(f\) =490 Hz  มันจึงมีคาบเวลา \(T\) =  \(\frac{1}{490}\) วินาทีหรือประมาณ 2 มิลลิวินาที  ดังนั้นความกว้างของพัลส์โดยปกติก็คือ  \(\frac{T}{2} = \frac{1}{980} \) วินาที หรือประมาณ 1 มิลลิวินาที

Duty Cycle หรือดิวตี้ไซเคิ้ล

มีบางคนแปลคำคำนี้ว่า "วัฏจักรหน้าที่" แต่ครูขอใช้ทับศัพท์ดีกว่า นะ

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

\(D = \frac{PW}{T}*100 \%\)

หรือ \(D = PW*f*100 \%\)

D ก็คือ ดิวตี้ไซเคิ้ล นิยมบอกกันในรูปของเปอร์เซ็นต์ PW ก็คือความกว้างของพัลส์(ในรูปของเวลา) T ก็คือคาบเวลา \( f \) ก็คือ ความถี่

ค่าดิวตี้ไซเคิ้ลสามารถคำนวณกลับไปเป็นกำลังเฉลี่ยได้ โดยใช้ความสัมพันธ์ต่อไปนี้

\(P_{average} =P_{peak}*D \)
 

ไดอะแกรมแสดงค่าดิวตี้ไซเคิ้ลค่าต่างๆ



analogWrite(pin_number, value)

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

คำสั่งที่ใช้ก็คือ analogWrite(pin_number,value)
pin_number ก็คือ ขาที่เราจะส่งพัลส์ที่กำหนดค่าดิวตี้ไซเคิ้ลออกไป ซึ่งขาที่สามารถส่งค่าที่แบบนี้ออกไปได้ก็คือ 3,5,6,9,10,11
value ก็คือ ค่าดิวตี้ไซเคิ้ลแต่แทนที่จะเป็น 1 ถึง 100 ในอาร์ดุยโนเราจะกำหนดค่านี้จาก 1-256

ทดลอง

 ต่ออุปกรณ์ดังภาพ


ในที่นี้ครูใช้ขา 11 ส่งออกพัลส์ไปยัง LED โดยควบคุมจากสัญญาณแอนะล็อกซึ่งใช้ตัวต้านทานปรับค่าได้ ต่อเข้าที่ขา A5

สเก็ตช์


ตัวแปรที่ใช้ในที่นี้มี 3 ตัวแปร คือ

  •  ledPin คือขาที่จะต่อเข้ากับ LED (ในที่นี้่คือ 11)
  • inputPin คือขาที่จะรับสัญญาณแอนะล็อกเข้าทางอินพุท ในที่นี้คือ A5
  • inputValue คือตัวแปรที่ใช้รับค่าแอนะล็อกเข้ามา ซึ่งจะมีค่าระหว่าง 0-1023

จากโปรแกรมตัวแปร inputValue จะรับค่า 0-1023 จากฟังก์ชั่น analogRead() แต่เวลาที่จะนำไปใช้ในฟังก์ชั่น analogWrite() จะใช้เกิน 256 ไม่ได้ เราจึงต้องหารค่า inputValue ด้วย 4 ก่อน

เมื่อเราบิดโวลุ่มมาซีกหนึ่งจะสังเกตเห็นการเปลี่ยนแปลงของหลอด LED โดยมันจะมืดลงด้านหนึ่ง และเมื่อบิดมาอีกด้านหนึ่งความสว่างของ LED ก็จะสว่างขึ้นจนสว่างมากที่สุด

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

ขอบคุณที่ติดตาม แล้วพบกันใหม่นะครับ

11 มิถุนายน 2559

อาร์ดุยโน : serial monitor

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

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


จุดประสงค์ของการเล่น


  1. เพื่อทำความเข้าใจกับการติดต่อสื่อสารระหว่างบอร์ดอาร์ดุยโนกับคอมพิวเตอร์ผ่านพอร์ตแบบอนุกรม
  2. เพื่อทำความเข้าใจกับการอ่านข้อมูลเข้าทางแอนะล็อก

ลุย

ต่ออุปกรณ์ดังภาพ



ครูเพิ่งหา VR แบบเกือกม้าเจอ ก็เลยเอามาใช้ในตัวอย่างนี้ซะเลย ใครมีแบบโวลุ่มก็เอามาใช้ได้เหมือนกันนะครับ ต่อด้านหนึ่งของ VR เข้ากับ 5 โวลท์ อีกด้านหนึ่งต่อเข้ากับกราวด์ ส่วนตรงกลางต่อเข้า A5 ของทางเข้าแอนะล็อก เสร็จแล้วก็เสียบสาย USB เข้าคอมพิวเตอร์ได้เลย


เปิด IDE แล้วก็คลิก File > Examples > Basics > ReadAnalogVoltage




ครั้งนี้ ย้อนกลับมาเล่นกับโค้ดมาตรฐานที่อาร์ดุยโนเผยแพร่ดู



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

เราจะเห็นตัวเลขแสดงแรงดันไฟฟ้าปรากฏขึ้น แต่อาจวิ่งเร็วเกินไป จนดูไม่ทัน ลองเพิ่มบรรทัดคำสั่งนี้ ลงไปด้านล่างสุดของโปรแกรม

delay(1000);

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

Serial.print(voltage);
Serial.println("  volts");
delay(1000);

นี่คือผลลัพธ์ (ค่อยๆ หมุน VR ไปด้วย)




การทำงานของโปรแกรม

Serial.begin(9600);

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

serial.Println(voltage);

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

ถ้ายังไม่เข้าใจอีก ก็ทิ้งคำถามไว้นะครับ

ขอบคุณที่ติดตาม



10 มิถุนายน 2559

อาร์ดุยโน : นำเข้าสัญญาณแอนะล็อก

ลองเล่นอินพุท-เอาท์พุทกับสัญญาณดิจิทัลแล้ว มาในตอนนี้ ลองเล่นการนำเข้าสัญญาณแอนะล็อกกันบ้าง

ก่อนอื่นเราลองทำมาทำความเข้าใจกับสัญญาณแอนะล็อกกันสักหน่อยก่อน

สัญญาณแอนะล็อกเป็นสัญญาณที่ค่าสัญญาณทางไฟฟ้ามีการเปลี่ยนแปลงแบบต่อเนื่อง หมายความว่า เมื่อจะมีการเปลี่ยนแปลงแรงดันไฟฟ้า ระหว่าง 0 ถึง 5 โวลท์ มันจะค่อยๆ เปลี่ยนแปลง เช่นจาก 0.1, 0.2, 0.3, .... ไปเรื่อยๆ จนกระทั่งถึง 5 โวลท์ ซึ่งแตกต่างจากสัญญาณดิจิทัล ที่มันจะมีเพียง 2 สถานะ คือ ประมาณ 0 โวลท์ กับประมาณ 5 โวลท์ เท่านั้น ใครยังไม่เข้าใจ ลองอ่านเรื่อง สัญญาณแอนะล็อก กับสัญญาณดิจิทัล เมื่อบทความที่แล้วดูอีกที

อาร์ดุยโนจัดการสัญญาณแอนะล็อกอย่างไร

เมื่อมีสัญญาณแอนะล็อก ซึ่งอยู่ในรูปแรงดันไฟฟ้า(voltage)ที่มีการเปลี่ยนแปลงอย่างต่อเนื่องเข้ามายังขาเข้าแอนะล็อก ไม่ว่าขาไหนช่องใดก็ตาม อาร์ดุยโนก็ต้องแปลงมันให้เป็นดิจิทัลอยู่ดี การแปลงนี้เรียกว่า ADC (Analog to Digital Converter) วิธีการแปลงก็คือ มันจะแบ่งระดับของแรงดันไฟฟ้าขาเข้าออกเป็น 1024 ระดับ (210) คือตั้งแต่ค่า 00000000002 (010) จนถึง 11111111112 (102310) ตัวเลขที่ห้อยท้ายหมายถึงฐานของเลขที่เราต้องการอ้างถึงนะครับ

สมมติว่าแรงดันไฟฟ้าที่ผ่านเข้ามายังช่องแอนะล็อก มีตั้งแต่ 0 โวลท์ ถึงสูงสุด 5 โวลท์ นั่นคือ
แรงดันไฟฟ้าที่เข้ามา 0 โวลท์ จะถูกแปรผลเป็นตัวเลข 0
แรงดันไฟฟ้าที่เข้ามา 0.005 โวลท์ จะถูกแปรผลเป็นตัวเลข 1
แรงดันไฟฟ้าที่เข้ามา 0.010 โวลท์ จะถูกแปรผลเป็นตัวเลข 2
แรงดันไฟฟ้าที่เข้ามา 0.015 โวลท์ จะถูกแปรผลเป็นตัวเลข 3
.
.
.
แรงดันไฟฟ้าที่เข้ามา 4.995 โวลท์ จะถูกแปรผลเป็นตัวเลข 1022
แรงดันไฟฟ้าที่เข้ามา 5.000 โวลท์ จะถูกแปรผลเป็นตัวเลข 1023

โดย...

ในแต่ละวินาทีอาร์ดุยโนจะทำการจัดเก็บข้อมูลแปลงค่าแอนะล็อกเป็นดิจิทัล 10,000 ครั้ง  หรือจะพูดอีกแบบหนึ่งก็คือ อาร์ดุยโนจะเก็บข้อมูลทุกๆ 0.0001 วินาทีอย่างต่อเนื่องเป็นสายของตัวเลขยาวเหยียดตามระยะเวลาที่สัญญาณแอนะล็อกส่งเข้ามา


จุดประสงค์การทดลอง

  • เพื่อทำความเข้าใจกับการจัดการสัญญาณป้อนเข้าแบบแอนาล็อกของอาร์ดุยโน

อุปกรณ์การทดลอง

  1. บอร์ด Arduino UNO
  2. ตัวต้านแบบปรับค่าได้ 10kΩ (แบบเกือกม้าก็ได้ แบบมือหมุนก็ได้)
  3. สายไฟ
  4. magnetic buzzer (ลำโพงขนาดเล็กๆ นิยมนำมาทำเป็นเสียงออด)
ต่ออุปกรณ์ดังรูป


ขยายให้เห็นชัดๆ ต่อจะได้ไม่ผิด



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

เขียนและรันโปรแกรม 


  1. เปิด IDE
  2. คลิก File > New
  3. บันทึกไฟล์ให้เรียบร้อย เสียบสาย USB จากบอร์ดเข้ายังคอมพิวเตอร์
  4. คลิก  เพื่อทำการตรวจสอบ คอมไพล์และอัพโหลด(ในคลิกเดียว) ถ้ามีปัญหาอะไร IDE ก็จะแจ้ง ครูเชื่อว่าถ้าพิมพ์ตามที่ครูบอกก็จะไม่มีปัญหาอะไร
  5. ตอนนี้ควรจะได้ยินเสียงออด (ฟังดูน่ารำคาญอยู่ ) ลองหมุนปรับโวลุ่มดู จะเห็นว่าเสียงออดมีการแปรเปลี่ยนได้ ด้านหนึ่งจะได้ยินเสียงต่ำ ด้านหนึ่งจะได้ยินเสียงสูง

การทำงานของโปรแกรม

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


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

aValue=analogRead(5);
digitalWrite(9, HIGH);
delayMicroseconds(1000+10*aValue);
digitalWrite(9, HIGH);
delayMicroseconds(1000+10*aValue);

ค่า aValue คือ ค่าตัวเลขที่ได้จากฟังก์ชั่น analogRead(5);
ถัดมาก็เซตสถานะสัญญาณดิจิทัลช่อง 9 เป็น HIGH แรงดัน 5 โวลท์จะถูกจ่ายออกไปที่บัซเซอร์ ถัดมาอีกบรรทัดหนึ่งเป็นคำสั่งที่เลื่อนเวลาออกไป เป็นเวลา 1000+10*aValue  ในหน่วยไมโครวินาที ค่า aValue จะมีค่าจะอยู่ระหว่าง 0-1023 ดังได้กล่าวมาแล้ว เมื่อเอามาคูณ 10 แล้วบวกกับ 1000 ก็จะกลายเป็นจาก 1000-11230 ไมโครวินาที จากนั้นก็เซตสถานะสัญญาณดิจิทัลของช่อง 9 เป็น LOW (0 โวลท์) แล้วก็รอไปอีกเท่าช่วงเวลาเดิม ก่อนวนกลับไปเริ่มทำใหม่

แล้วเสียงเกิดได้อย่างไร 

ปกติความถี่เสียง(ƒ) ที่เราได้ยินคือ 20-20000 Hz หรือหากเราคิดเป็นคาบ(T) คือ 0.05-0.00005 วินาที หรือ 50000 ไมโครวินาที - 50 ไมโครวินาที

ทีนี้ไปพิจารณาการรอจังหวะสถานะ HIGH และสถานะ LOW รวมกัน (ครบ 1 ลูกคลื่น) จะมีค่าระหว่าง 2000 - 22460 ไมโครวินาที ซึ่งคิดเป็นความถี่เสียงที่ได้คือ 45-500 Hz

สรุป

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

ขอบคุณที่ติดตามครับ

07 มิถุนายน 2559

อาร์ดุยโน : นำเข้าสัญญาณดิจิทัล

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

สัญญาณดิจิทัล เป็นสัญญาณที่มีสองสถานะ เช่นถ้าเราใช้แรงเคลื่อนไฟฟ้า 5 โวลท์ เป็นระดับอ้างอิง สัญญาณจะมีสองระดับ คือ 0 โวลท์ (อยู่ในสถานะ LOW) กับ 5 โวลท์ (อยู่ในสถานะ HIGH) ซึ่งใครที่ทำการทดลองตามครูเมื่อคราวที่แล้ว จะเห็นได้ว่าเมื่อเราใช้คำสั่ง digitalWrite(pinNumber, state) หมายถึง การสั่งให้ส่งสัญญาณดิจิทัลออกไปยังหมายเลขช่องที่ระบุใน pinNumber เช่น pinNumber = 10 ส่วน state เซตเป็น LOW  ก็จะมีแรงเคลื่อนไฟฟ้า 0 โวลท์ ออกที่ขาหมายเลข10 (LED ดับ) แต่หากระบุ state เป็น HIGH แรงเคลื่อนไฟฟ้าที่ช่องหมายเลข 10 จะมีแรงเคลื่อนไฟฟ้ากลายเป็น 5 โวลท์ (LED สว่าง)

สิ่งที่เราจะทำในครั้งนี้ก็คือ เซตสถานะจากภายนอกให้เป็น LOW (0 โวลท์) หรือ HIGH (5 โวลท์) แล้วให้ช่องรับข้อมูลของอาร์ดุยโนรับไปปฏิบัติงานต่อไป

จุดประสงค์ของการทำการทดลองหรือเล่นในครั้งนี้ 

  1. รู้จักสัญญาณดิจิทัลและสร้างสัญญาณดิจิทัลง่ายๆ เพื่อป้อนเข้าสู่บอร์ดอาร์ดุยโน
  2. เขียนโปรแกรมสั่งให้อาร์ดุยโนนำสัญญาณดิจิทัลขาเข้า มาควบคุม LED ให้ติดหรือดับ ผ่านช่องทางดิจิทัลขาออก

อุปกรณ์ต้องใช้ 

  1. บอร์ด Arduino UNO 1 บอร์ด
  2. เบรดบอร์ด 1 แผ่น
  3. สวิทช์กดติด ปล่อยดับ (push button) 1 ตัว
  4. หลอด LED 1 หลอด
  5. ตัวต้านทาน 10k , 220 Ω อย่างละตัว
  6. สายไฟสำหรับเสียบแผ่นบอร์ด

ลุย 

ต่ออุปกรณ์ดังภาพ

ขยายหน่อยให้เห็นชัดๆ ตัวต้านทาน 10k คือตัวนอน 220 Ω คือตัววางตั้ง

 


การทำงาน

      เมื่อกดสวิทช์ กระมีกระแสไฟฟ้าจากแหล่งจ่ายกำลัง 5 โวลท์ที่เราต่อออกจากบอร์ด ไหลผ่านตัวต้านทาน 10k ซึ่งจำให้เกิดความต่างศักย์ตกคร่อมที่ตัวต้านทานนี้ เกิดเป็นสถานะ HIGH ป้อนเข้าสู่ช่อง 11 ของพอร์ทดิจิทัล และเมื่อเราปล่อย กระแสไฟฟ้าไม่สามารถไหลผ่านตัวต้านทาน 10k ได้ ก็จะเกิดเป็นสถานะ LOW ขึ้น เราจะใช้ 2 สถานะนี้ในการควบคุมการกระพริบของ LED ที่เราต่อไว้ที่ขา 0 ของพอร์ทดิจิท้ล

ตรวจสอบความเรียบร้อยของสายไฟให้ดีก่อนนะครับ เตรียมสาย USB ไว้อย่าเพิ่งเสียบเข้ากับเครื่องคอมพิวเตอร์ รอก่อน

การดำเนินการทางซอฟท์แวร์
  1. เปิด IDE
  2. คลิก File > New
    พิมพ์โค้ดของโปรแกรมเข้าไปดังแสดงในภาพ

  3. คลิก File > Save
    ตั้งชื่อไฟล์ในโฟลเดอร์ที่เราต้องการ ครูตั้งชื่อไฟล์นี้ว่า digital_IN
  4. เสียบสาย USB จากบอร์ดอาร์ดุยโน เข้ากับเครื่องคอมพิวเตอร์
  5. คลิกที่ปุ่ม  เพื่อคอมไพล์ ตรวจสอบและอัพโหลดไฟล์ที่คอมไพล์แล้วไปยังหน่วยความจำแฟลชของอาร์ดุยโน
  6. ทดลองกดปุ่มสวิทช์กดติด ปล่อยดับ โดยกดแช่ไว้นิ่งๆ (เซตสถานะของสัญญาณดิจิทัลให้เป็น HIGH) สลับกับการปล่อย (เซตสถานะของสัญญาณดิจิท้ลให้เป็น LOW) แล้วเปรียบเทียบความแตกต่าง โดยสังเกตการกระพริบของ LED ทั้งสองสถานะเปรียบเทียบกัน

ผล

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

การทำงานของโปรแกรม

โปรแกรมนี้เราพิมพ์ขึ้นมาโล้นๆ เลย ไม่มีคอมเมนต์ใดๆ ทั้งสิ้นให้เสียเวลาล่ะ เริ่มต้นขึ้นมาก็
int button;

นี่เป็นการประกาศตัวแปร ให้เป็นแบบ int (หรือจะประกาศให้เป็นก boolean ก็ได้) ตั้งชื่อตัวแปรว่า button ตั้งไว้เฉยๆ ยังไม่มีการกำหนดค่าใดๆ 
จากนั้นในส่วนของการตั้งค่า ก็มีการตั้งค่าให้ช่อง 0 เป็นขาส่งออก(OUTPUT) ช่อง 11 เป็นขารับข้อมูล (INPUT) ด้วยโค้ดต่อไปนี้

pinMode(0, OUTPUT);
pinMode(11, INPUT);

ส่วนการวนรอบ(loop() ) เริ่มต้นก็มีการอ่านข้อมูลสถานะจากช่อง 11 โดยค่าที่ได้นำมาเก็บไว้ในตัวแปรชื่อ button ดังโค้ดคำสั่งต่อไปนี้

button=digitalRead(11);

แล้วก็นำมาตรวจสอบกับเงื่อนไขว่า button นี้สถานะอย่างไร HIGH หรือ LOW โดยใช้นิพจน์

if (button==HIGH) 

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

  digitalWrite(0, HIGH);
  delay(100);
  digitalWrite(0, LOW);
  delay(100);

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

  digitalWrite(0, HIGH);
  delay(1000);
  digitalWrite(0, LOW);
  delay(2000);

สรุป

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

if (เงื่อนไขหรือตัวแปรที่ต้องการตรวจสอบ) { 
ข้อความคำสั่ง เมื่อเงื่อนไขเป็นจริง ;
}
else {
ข้อความคำสั่ง เมื่อเงื่อนไขเป็นเท็จ ;
}

เริ่มสนุกขึ้นแล้วนะครับ

แล้วพบกันใหม่ ตอนต่อไปครับ



06 มิถุนายน 2559

อาร์ดุยโน : ไฟแอล อี ดี กระพริบ ตอนสอง

ด้วยความที่ไม่อยากให้แต่ละตอนยาวเกินไป ครูจึงแบ่งไฟแอล อี ดี กระพริบด้วยอาร์ดุยโน เป็นสองตอน และตอนนี้ก็ตามมาอย่างเร็ว เพราะเดี๋ยวอุปกรณ์จะเคลื่อนย้ายซะก่อน

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


LED ตัวที่สองนี้ อาโนดถูกต่อเข้ากับช่องหมายเลข 5 (digital) ส่วนคาโทดต่อเข้ากับตัวต้านทาน 220 โอห์ม ส่วนของด้านหนึ่งของตัวต้านทานต่อเข้ากับกราวด์ซึ่งเราใช้สายโยงมายังต้วต้านทานตัวแรกได้เลยครับ แล้วมันจะมาลงกราวด์ที่บอร์ดด้วยกัน

ตรวจดูความเรียบร้อยอีกครั้ง ก่อนเสียบสาย USB เข้ากับคอมพิวเตอร์ แล้วดำเนินการ ดังนี้

  1. เปิด IDE
  2. เปิดไฟล์โปรแกรมที่เราได้แก้ไขไว้ เมื่อตอนที่แล้วขึ้นมา
  3. พิมพ์แก้ไขโปรแกรม ดังต่อไปนี้
  4. คลิกปุ่ม  เพื่อคอมไฟล์ ตรวจสอบ และอัพโหลด พร้อมกันเลยทีเดียว

คราวนี้ก็จะสังเกตเห็นหลอด LED ทั้งสองหลอดผลัดกันติด ผลัดกันดับช่วงเวลาละ 1 วินาที

อธิบายการทำงาน

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

ทีนี้มาดูส่วนส่วนแรก ซึ่งเป็นการประกาศตัวแปร ที่มีประเภทของตัวแปรเป็นจำนวนเต็ม โดยใช้คีย์เวิร์ดว่า int แล้วตามด้วยชื่อตัวแปร led1, led2 สำหรับเก็บหมายเลขพอร์ทดิจิทัล 10 และ 5 ตามลำดับ ส่วน delayTime1, delayTime2 สำหรับเก็บตัวเลขค่าหน่วงเวลาของการเกิดแสงสว่างของหลอดที่ 1 และ 2 ตามลำดับ

ต่อจากนั้นก็เป็นส่วน void setup()  ซึ่งเป็นการตั้งค่าให้พอร์ทดิจิทัล ทำหน้าที่เป็นเอาท์พุทส่งค่าไปยังภายนอก 
   pinMode(led1, OUTPUT) ;  //เป็นการเซ็ตพอร์ท led1 เป็นเอาท์พุด
   pinMode(led2, OUTPUT);  //เป็นการเซ็ตพอร์ท led2 เป็นเอาท์พุต

ส่วนที่สาม void loop() เป็นส่วนของการวนรอบการทำงานไม่สิ้นสุด ซึ่งก็จะเหมือนกับตัวอย่างในตอนที่แล้ว เพียงแต่ในตอนนี้ จะมีการควบคุมหลอด 2 หลอด โดยให้หลอดที่หนึ่ง led1 สว่างก่อน จากนั้นหน่วงเวลาตามค่าที่ตั้งไว้ที่ delayTime1 แล้วให้หลอดที่สอง led2 สว่าง จากนั้นก็หน่วงเวลาไว้อีกตามค่า delayTime2 จากนั้นก็ปิด แล้ววนรอบกลับไปทำซ้ำใหม่ ..... เรื่อยๆ ไม่รู้จบ

หากเราต้องการเปลี่ยนจังหวะการหน่วงเวลา ก็ทำได้โดยการแก้ไขค่าของตัวแปร delayTime1 กับ delayTime2 เราก็จะได้รูปแบบการกระพริบที่แปลกๆ ออกไปอย่างง่ายดาย 

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

แล้วพบกันใหม่ครับ


อาร์ดุยโน : ไฟแอล อี ดี กระพริบ ตอนแรก

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

สำหรับใครที่ยังไม่รู้จัก LED ลองเข้าไป "รู้จักและเล่นกับ หลอด LED"  ก่อนนะครับ

จุดประสงค์ของครูในการเขียนบทความนี้ ก็เพื่อให้ผู้เริ่มเรียนรู้อาร์ดุยโน ได้ในสิ่งเหล่านี้
  1. รู้จักการใช้ Arduino IDE เพื่อเขียนโปรแกรมและอัพโหลดโปรแกรมลงอาร์ดุยโน
  2. ฝึกการใช้ Digital Output แบบง่ายๆ โดยใช้ LED ในการแสดงผล
อุปกรณ์ที่จำเป็นต้องมี
  1. บอร์ดอาร์ดุยโน (จะของแท้ ของเทียม ของเทียบก็ได้ สำหรับครูใช้ของเทียบ)
  2. หลอด LED 2 หลอด สีอะไรก็ได้
  3. ตัวต้านทาน 220 โอห์ม 2 ตัว
  4. แผ่นเบรดบอร์ด พร้อมสายไฟสำหรับเสียบเบรดบอร์ด
  5. คอมพิวเตอร์ที่ติดตั้ง Arduino Software (IDE) แล้ว (ใครยังไม่มี ไปดาวน์โหลดฟรี  ได้ที่ https://www.arduino.cc/en/Main/Software )

    *** IDE คำนี้ครูจะใช้บ่อยมาก ความหมายก็คือ ชุดโปรแกรมมาตรฐานของอาร์ดุยโนที่เผยแพร่ ผ่านเว็บไซต์ arduino.cc 

เริ่มต้นการทดลอง

ทดลองใช้หลอด LED  กับตัวต้านทาน 220 โอห์มอย่างละอันก่อน ต่อสายไฟเข้ากับช่องเสียบ ดังแสดงในภาพ


ภาพที่แสดงนี้ครูแคปเจอร์มาจากหน้าจอของโปรแกรม Fritzing ครับ ในภาพครูต่อสายไฟเส้นหนึ่งจาก ช่อง 10 ของ Digital เข้าไปยังอาโนดของหลอด LED ซึ่งเสียบอยู่บนบอร์ดทดลอง จากนั้นนำความต้านทาน 220 โอห์ม (ถ้าไม่มีก็เอาใกล้เคียงก็พอได้ครับ) แล้วอีกด้านหนึ่งของตัวต้านทาน ต่อเข้ากราวด์ (GND) บนบอร์ดอาร์ดุยโน



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

ถึงเวลา IDE

  1. เปิด IDE ของอาร์ดุยโนขึ้นมา
  2. คลิก File > Examples > 01. Basics > Blink

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



    เลื่อนเคอร์เซอร์ไปเปลี่ยนเลข 13 ให้เป็นเลข 10 ให้หมด ซึ่งมีอยู่ 3 ที่(ทำตามไปก่อน ครูจะอธิบายเหตุผลทีหลัง)
  4. คลิก File > Save as ... แล้วเลือกโฟลเดอร์ที่จะเก็บไฟล์ต้นฉบับโปรแกรมของเราไว้ (อาจสร้างใหม่เลยก็ได้) แล้วตั้งชื่อไฟล์ที่เราจำได้ง่าย ของครูตั้งว่า test_blink แล้วก็คลิก Save
  5. คลิกปุ่มเครื่องหมายถูก เพื่อตรวจสอบและคอมไพล์โปรแกรม ถ้าทำตามครู มันควรจะขึ้นข้อความที่แถบดำๆ ด้านล่าง ดังแสดงให้ภาพ



    หากไม่ขึ้นดังภาพ ปิดโปรแกรมแล้วย้อนกลับไปทำใหม่
  6. เมื่อเสร็จขั้นตอน 5 แล้ว ทีนี้ก็คลิกที่ปุ่มลูกศรขวา  เพื่ออัพโหลดโค้ดที่คอมไฟล์แล้ว (Object Code) ไปยังส่วนความจำแฟลชของอาร์ดุยโน
  7. สังเกตการหลอด LED ซึ่งตอนนี้มันจะติด 1 วินาที ดับ 1 วินาที สลับกันไปอย่างไม่มีสิ้นสุด หรือจนกว่าจะถอดสาย USB 

ทำความเข้าใจกับโครงสร้างของภาษาซีใน IDE

Comments

คอมเมนต์ในภาษาซี คือ ส่วนของข้อความที่เมื่อสั่งคอมไพล์แล้ว IDE จะไม่นำไปรวมในการคอมไพล์ มีไว้สำหรับสื่อสาร หรือบอกให้คนที่มาอ่านโปรแกรมเข้าใจสิ่งที่เราเขียนมากยิ่งขึ้น  คอมเมนต์จะมีสองลักษณะ คือ

  • อยู่ภายในเครื่องหมาย /* ........... คอมเมนต์ ........... */   และ
  • อยู่หลังจากเครื่องหมาย // .......... คอมเมนต์

















ตัวอย่างการคอมเมนต์ในการเขียนโปรแกรม ซึ่งครูนำมาจากโค้ดตัวอย่างใน IDE

Function

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

เมื่ออ้างถึงฟังก์ชั่น จะต้องมีเครื่องหมายวงเล็บเปิด-ปิด ด้วยเสมอ  จากตัวอย่างที่ครูนำมาแสดง จะมี 2 ฟังก์ชั่นคือ setup() และ loop()  ซึ่งสองฟังก์ชั่นนี้เป็นฟังก์ชั่นหลักที่จะต้องมีอยู่ด้วยเสมอในการเขียนโปรแกรมบน IDE

Statements

Statements หรือ ข้อความคำสั่ง (ที่ครูจะใช้ในการเรียกเป็นภาษาไทย) ก็คือ ข้อความที่เราพิมพ์ เพื่อสั่งให้อาร์ดุยโนทำงาน ซึ่งแต่ละข้อความคำสั่งจะต้องจบด้วยเครื่องหมายเซมิโคลอน (;) จากตัวอย่างที่ครูนำมาให้เล่น จะมีดังนี้
   pinMode(10, OUTPUT);   // หมายถึงการตั้งค่าให้ช่องที่ 10 ของ Digital IO ใช้ส่งข้อมูลออก
   digitalWrite(10, HIGH);   // หมายถึง การตั้งค่าสถานะช่องที่ 10 ให้อยู่ในสถานะเป็น 1 ซึ่งจะมีความต่างศักย์ไฟฟ้า เท่ากับ +5 โวลท์
   delay(1000); // หมายถึง ให้มีการหน่วงเวลาไว้ 1000 มิลลิวินาที
   digitalWrite(10, LOW);   // หมายถึง การตั้งค่าสถานะช่องที่ 10 ให้อยู่ในสถานะเป็น 0 ซึ่งจะมีความต่างศักย์ไฟฟ้า เท่ากับ 0 โวลท์

ข้อความคำสั่งอยู่จะอยู่ภายในฟังก์ชั่นหลักของ IDE โดยมีเครื่องหมายวงเล็บปีกกา {......} ล้อมเอาไว้


Variables 

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

  • จำนวนเต็ม (integer) เป็นตัวแปรที่สามารถเก็บจำนวนเต็มตั้งแต่ -32,768 ถึง 32,767 ในการสร้างตัวแปรชนิดจำนวนเต็มนี้จะใช้หน่วยความจำ 2 ไบต์ (16 บิต) 
  • อักขระ (charactor)  เป็นตัวแปรที่ใช้เก็บตัวอักขระหรือตัวอักษรต่างๆ ได้ 1 ตัว ตัวแปรนี้จะใช้หน่วยความจำ 1 ไบต์ (8 บิต) รหัสที่ใช้เก็บเป็นรหัสแอสกี้ ซึ่งเราสามารถดูรหัสได้ที่ https://en.wikipedia.org/wiki/ASCII
  • บูลีน (Boolean) ใช้เก็บ "จริง" กับ "เท็จ" ใช้หน่วยความจำ 1 ไบต์ (8 บิต)
ครูแนะนำตัวแปรง่ายๆ เบื้องต้นเพียงแค่นี้ก่อนนะครับ เพราะเรายังไม่ได้ใช้งาน แม้ในต้วอย่างที่ครูยกมาในครั้งนี้ แต่เราจะลองใช้ตัวแปรในตอนต่อไป ซึ่งครูจะพาให้รู้จักตัวแปร และเริ่มใช้งานกัน

สรุปการเรียนรู้ในครั้งนี้

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

ครั้งต่อไป เราจะเริ่มเล่นกับตัวแปร และใช้ LED เป็น 2 ตัว อย่าลืมติดตามนะครับ



01 มิถุนายน 2559

อาร์ดุยโน : ของแท้ ของเทียม ของที่เข้ากันได้

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

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

อาร์ดุยโนของแท้ 

อาร์ดุยโนเป็นโครงการที่ริเริ่มในประเทศอิตาลี ดังนั้นบอร์ดของอาร์ดุยโนของแท้จึงผลิตที่อิตาลี โดยทีมงานของอาร์ดุยโน ซึ่งดูข้อมูลได้ที่เว็บไซต์ของเขาเองที่ www.arduino.cc

แต่ด้วยเหตุที่โครงการของอาร์ดุยโนตั้งแต่แรกนั้น เป็นโครงการโอเพ่นซอร์ส ทั้งฮาร์ดแวร์และซอฟท์แวร์ ดังนั้นคำว่า "ของแท้" จึงอาจใช้คำว่า "ต้นฉบับ" แทนก็ได้ เพราะว่าทีมงานของอาร์ดุยโนเมื่อออกแบบขึ้นมาแล้วแทนที่จะทำเองแต่เพียงผู้เดียว เขากลับเผยแพร่พิมพ์เขียวต้นฉบับของงานให้เป็นสาธารณะ ด้วย (GPL : General Public License) แต่ยังคงสงวนคำว่า "อาร์ดุยโน" และเครื่องหมายการค้าไว้ใช้เฉพาะตัวเองอยู่ โดยจะสังเกตคำว่า TM ตัวเล็กๆ มุมบนด้านขวา (ตอนหลังนี่มีคำว่า Genuino ขึ้นมาอีก นี่ก็ของแท้เหมือนกันแต่สำหรับขายนอกประเทศสหรัฐอเมริกา ????  วุ่นวายดีนะครับ)


เพราะฉะนั้นบอร์ดไหน ที่มีตราสัญลักษณ์เช่นนี้ ก็ถือได้ว่าเป็น "ของแท้" การหาซื้อบอร์ดประเภทนี้ ต้องซื้อกับร้านค้าที่ arduino.cc รับรองให้เป็นตัวแทนจำหน่ายได้เท่านั้น (ไม่แน่ใจว่าประเทศไทยมีหรือเปล่า) ยกเว้นการซื้อของหิ้ว หรือไม่ก็มือสอง


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

อาร์ดุยโนของเทียม (Counterfeit)

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

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

ในเว็บของอาร์ดุยโนเอง ก็ได้ให้ข้อสังเกตเกี่ยวกับ "ของแท้" กับ "ของเทียม" อยู่เหมือนกันนะครับ ซึ่งเมื่อเปรียบเทียบดูแล้ว ต้องบอกเลยว่า "ของเทียม" ทำได้เหมือน "ของแท้" มากๆ จนแทบแยกไม่ออก ลองฝึกแยกดูนะครับ จากหน้าเว็บนี้ https://www.arduino.cc/en/Products/Counterfeit

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

อาร์ดุยโนที่เข้ากันได้(กับของแท้)

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

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

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

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


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

ขอบคุณที่ติดตามนะครับ

30 พฤษภาคม 2559

อาร์ดุยโน : ซอฟท์แวร์

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

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

ซอฟท์แวร์ของอาร์ดุยโน

อาร์ดุยโนเป็นระบบคอมพิวเตอร์เล็กๆ ที่ถูกออกแบบมาเพื่อความเรียบง่ายในการนำไปใช้งาน  อาร์ดุยโนใช้ตัวประมวลผลขนาด 8 บิท ที่สัญญาณนาฬิกา 16 MHz หน่วยความจำชั่วคราว(SRAM) มีเพียง 2 KB และหน่วยความจำแฟลช 32 KB ด้วยพลังการประมวลผลขนาดนี้ หน่วยความจำเท่านี้ ย่อมไม่สามารถใส่ระบบปฏิบัติการใดๆ ได้  อาร์ดุยโนมีเพียงบูตโหลดเดอร์(Boot Loader)ชุดคำสั่งเล็กๆ ที่คอยเริ่มต้นการทำงานเท่านั้น  ต่อจากนั้นก็เป็นในส่วนชุดคำสั่งที่เราเป็นผู้เขียนเพื่อสั่งงานทันที ชุดคำสั่งในส่วนนี้ ภาษาของอาร์ดุยโน เรียกกันว่า "สเก็ตช์" (Sketch)

สเก็ตช์ เป็นชุดคำสั่งที่เขียนขึ้นมาด้วยภาษาระดับสูง ภาษาที่ว่านี้ก็คือ ภาษา C, C++ จากนั้นก็จะผ่านการคอมไพล์(Compile)กลายเป็นชุดคำสั่งที่ชิปอาร์ดุยโนเข้าใจและนำไปปฏิบ้ติงานได้ แต่การเขียนโปรแกรมนี้เราต้องทำบนคอมพิวเตอร์ตั้งโต๊ะ และโน็ตบุ้ค ดังนั้นเมื่อคอมไพล์แล้วเราต้องอัดโปรแกรมนี้(ภาษาอาร์ดุยโน เรียกว่า อัพโหลด) เข้าไปยังหน่วยความจำแฟลชของชิป แล้วมันจึงจะทำงาน

กระบวนการของซอฟท์แวร์ที่เรากล่าวมาทั้งหมดนี้ รวมอยู่ภายในสิ่งที่เราจะเรียกต่อไปว่า IDE ซึ่งมาจากคำว่า Integrated Development Environment  ซึ่งเราสามารถดาวน์โหลดได้ฟรี จากเว็บไซต์ของอาร์ดุยโนโดยตรง หรือจะคลิก ที่นี่ ซึ่งครูได้ทำลิงค์ไว้เรียบร้อยแล้ว

การติดตั้ง

ย้ำกันอีกครั้งหนึ่งว่า การพัฒนาซอฟท์แวร์(หรือการเขียนโปรแกรมนั่นเอง) สำหรับอาร์ดุยโนนั้น เราต้องทำบนเครื่องคอมพิวเตอร์ ทำบนอาร์ดุยโนโดยตรงไม่ได้ ดังนั้นเราต้องดาวน์โหลดโปรแกรมมาก่อน ตามลิงค์ที่ให้ไว้ ซึ่งเราต้องดาวน์โหลดให้ตรงกับระบบปฏิบัติการของเครื่องคอมพิวเตอร์ที่เราใช้ สำหรับครูใช้ระบบปฏิบัติการ Microsoft Windows ก็ต้องเลือก Windows Installer หรือไม่ก็ ZIP file for non-admin install  (ครูเลือกหัวข้อที่สอง)

ในส่วนของ Installer เมื่อได้มาแล้วก็ติดตั้งไปตามขั้นตอน Next Next Next เดี๋ยวก็เสร็จ ถ้าเป็น ZIP file ก็แตกไฟล์นี้ไปเก็บไว้ในโฟลเดอร์ที่เราต้องการ

ไฟล์ต่างๆ ของครูอยู่ตรงนี้


ในกรณีของครูต้องไปสร้างไอคอนเข้าโปรแกรมเองบนเดสก์ท็อป


ทดลองเข้าโปรแกรม

เวลาเข้าโปรแกรมก็ดับเบิ้ลคลิกผ่านตรงนี้เข้าไปเลยครับ


หน้าตาที่เรียบง่ายของโปรแกรม


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

ขอบคุณที่ติดตามครับ

27 พฤษภาคม 2559

อาร์ดุยโน : ฮาร์ดแวร์

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

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

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



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

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

เข้าใจสเปคของ ATMega328P

ลองป้อนข้อมูล ATMega328P ไปที่ช่องของกูเกิ้ล เราจะพบข้อมูลคล้ายๆ อย่างนี้ ซึ่งจะบอกค่าเฉพาะบางอย่างของมัน



นี่คือเรื่องแรกที่เราควรเรียนรู้ครับ คือ อ่านสเปคให้ออก ซึ่งครูจะแนะนำเฉพาะตัวสำคัญๆ เท่านั้นนะครับ

ในคอลัมน์ซ้ายมือ คำว่า Parameter เป็นการอ้างถึงขนาดหรือค่าต่างๆ ของหน่วยย่อยที่อยู่ภายในชิป ส่วน Value หมายถึง ตัวเลขที่บอกค่าในหน่วยย่อยนั้น

Flash (kBytes): 32 kBytes 

Flash หรือ Flash Memory หมายถึง หน่วยความจำแบบแฟลช ซึ่งเป็นหน่วยความจำชนิดหนึ่งที่สามารถเขียนและอ่านได้ ในขณะที่ไม่มีไฟฟ้าเลี้ยงวงจรมันก็สามารถเก็บข้อมูลไว้ได้ ถ้าจะว่าไปแล้วมันก็เหมือนกัน sd-card หรือแผ่นเก็บข้อมูลที่เราใช้ในโทรศัพท์มือถือรุ่นใหม่ๆ ที่เราใช้เก็บรูปภาพนั่นเอง ค่า 32 kBytes หมายถึงขนาดของความจุข้อมูลของมัน 32x1024=32,768 bytes นั่นเอง (น้อยมากๆ เลยใช่ไหมครับ เทียบไม่ได้เลยกับหน่วยเก็บข้อมูลที่มีอยู่ในโทรศัพท์มือถือเราที่เราใช้ ซึ่งเก็บได้หลายจิ๊กกะไบท์)

Pin Count : 32

หมายถึง จำนวนช่องเสียบหรือขาที่เชื่อมต่อกับอุปกรณ์รอบๆ ตัว ซึ่งมี 32 ช่อง

Max. Operating Freq. (MHz): 20  

หมายถึง ความถี่สัญญาณนาฬิกา หรือบางทีก็เรียกสั้นๆ ว่า คล็อก (clock) ค่านี้ยิ่งมีค่ามากแปลว่ามันยิ่งมีความเร็วในการประมวลผลมากตามไปด้วย ในที่นี้เราจะเห็นค่า 20 เมกะเฮิร์ตซ์ ซึ่งเป็นค่ามากที่สุดที่ชิปประมวลผลรุ่นนี้จะสามารถรับได้ ในทางปฏิบัติผู้ออกแบบเขาจะให้ใช้งานที่ 16 MHz คือ ใช้ไม่เต็มกำลังนัก เป็นไปได้ว่าผู้ออกแบบไม่ต้องการให้ชิปร้อนเร็วและมากเกินไปขณะทำงาน ซึ่งจะมีผลต่ออายุการใช้งานของตัวชิปด้วย

CPU : 8 bit-AVR

เป็นคำย่อของหน่วยประมวลผล ตัวเลข 8 bit หมายถึง จำนวนบิทหรือสายสัญญาณที่ CPU จะประมวลผล หรือจะพูดอีกอย่างหนึ่งว่า มันจะประมวลผลข้อมูลครั้งละ 8 บิทในแต่ละรอบการทำงานก็ได้ ส่วน AVR มาจากคำว่า Advanced Virtual RISC เป็นคำที่อธิบายไปแล้วอาจจะยากไปสำหรับระดับที่เรากำลังคลานเตาะแตะแบบนี้ เอาเป็นว่ามันเป็นรูปแบบของการออกแบบตัวประมวลผลแบบหนึ่งก็แล้วกัน ว่ากันว่ามันง่ายต่อการเข้าถึงและพัฒนา แล้วก็เหมาะกับมือใหม่อย่างเราๆ

เอาแค่นี้ก่อน ทีนี้ถ้าคลิกตรงคำว่า + more ก็จะเจอสเปคอีกหลายสิบบรรทัด เอาเฉพาะที่สำคัญๆ ก็แล้วกันนะครับ

SRAM (kBytes): 2

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

EEPROM (Bytes): 1024

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

คงหมดแล้วล่ะ ที่สำคัญๆ ที่เราควรรู้จัก สำหรับตัวชิป ATMega328P

สิ่งที่ควรรู้จักเพิ่มเติมเกี่ยวกับบอร์ดอาร์ดุยโนตัวนี้

CH340G

เป็นชิปที่ทำหน้าที่ในการติดต่อสื่อสารกับเครื่องคอมพิวเตอร์ผ่านพอร์ท USB ตัวนี้แหละที่ทำให้บางคนบอกว่า บอร์ดนี้เป็นอาร์ดุยโนปลอม เพราะว่าตัวบอร์ด Made in Italy นั้นจะใช้ชิป FTDI หรือ ATMega8U2 หรือ ATMega16U2 แล้วแต่รุ่นเป็นตัวติดต่อกับพอร์ท USB ของคอมพิวเตอร์  แต่ตัวที่ว่าปลอมนี้ใช้ CH340G ซึ่งทำให้ราคาถูกลงมาก แต่ถ้ามันทำงานได้เหมือนกัน ครูฟิสิกส์ว่า จะไปสนใจมันทำไม (แรงมั๊ย! ) บางคนอาจเป็นกังวลใจว่า เฮ้ย!  แล้วมันไปละเมิดลิขสิทธิ์เขาหรือเปล่า คำตอบ คือ เปล่าเลย โปรเจคต์ของ อาร์ดุยโน เป็นโอเพ่นซอร์ส ทั้งฮาร์ดแวร์/ซอฟท์แวร์ ใครจะเอาไปต่อยอดไปพัฒนาต่อก็ได้ ขอให้อยู่ในเงื่อนไขคือ ต้องเป็นโอเพ่นซอร์สต่อไป เพราะฉะนั้นนี่ไม่ใช่ของปลอมหรอกครับ ถ้าจะเรียกให้เหมาะ ครูว่าน่าจะเรียกว่า บอร์ดที่เลียนแบบอาร์ดุยโน น่าจะถูกต้องกว่า (ประเภทของบอร์ด ครูจะได้พูดถึงอีกที เพราะสับสนกันพอสมควร)

ถ้าอยากเห็นตัวชิปนี้ ก็ดูรูปข้างบน ตัวที่อยู่เหนือขึ้นไปจาก ATMega328P วางในแนวขวาง ถัดลงมาด้านล่างจากพอร์ท USB

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

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

21 พฤษภาคม 2559

รู้จัก Arduino

Arduino คืออะไร


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

จุดประสงค์ของการออกแบบ Arduino นั้นก็เพื่อทำให้มันง่ายต่อการเรียนรู้อิเล็กทรอนิกส์และราคาไม่แพง ดังนั้นมันจึงเหมาะสำหรับนักเรียน นักศึกษา หรือแม้แต่บุคคลทั่วไปที่สนใจศึกษาการทำงานของมัน ซึ่งเริ่มตั้งแต่อิเล็กทรอนิกส์ง่ายๆ จนไปถึงระบบการควบคุมอัตโนมัติที่เริ่มมีความซับซ้อน คนที่สนใจความเป็นมาของมันสามารถศึกษารายละเอียดได้ที่ https://www.arduino.cc/en/Guide/Introduction#

หาซื้อได้ที่ไหน

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

แล้วครูฟิสิกส์เอามาทำอะไร

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

นอกจากเรียนรู้การทำงานซึ่งเป็นส่วนสำคัญในวิชาอิเล็กทรอนิกส์เบื้องต้นแล้ว ยังสามารถเรียนรู้การเขียนโปรแกรมควบคุมอีกด้วย ซึ่งสามารถประยุกต์เอาไปใช้งานต่างๆ ได้อีกมากมายตั้งแต่ง่ายๆ จนไปถึงที่ซับซ้อน นี่เรียกได้ว่าเข้ายุคเข้าสมัย เพราะเราสามารถเชื่อมอุปกรณ์ที่ว่านี้เข้ากับระบบเครือข่ายอินเทอร์เนตได้ เข้าใกล้สิ่งที่เรียกว่า "อะไรๆ ก็อินเทอร์เน็ต" หรือ IoT: Internet Of Thing) ไปกับเขาด้วย   แต่.... จุดเน้นที่ครูเอามาเล่นเป็นหลักในบล็อกของครูฟิสิกส์นี้ ก็คือ การประยุกต์ที่เกี่ยวข้องกับฟิสิกส์ครับ เชื่อว่าหากผู้ติดตามบทความเป็นนักเรียนแล้ว อาจได้แนวคิดมากมายในการนำไปสร้างเป็นโครงงาน รวมถึงเล่นอะไรสนุกๆ แบบงานอดิเรกได้เลยล่ะ

สิ่งที่ต้องมี

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

อันดับต่อมาคือการดาวน์โหลดชุดโปรแกรมสำหรับการเขียนโปรแกรมการติดต่อสื่อสารและควบคุมบอร์ด หรือที่เรียกว่า IDE (Integrated Development Environment) ซึ่งก็มีอีกหลายตัวอีก  ครูแนะนำเอาโครงการของอาร์ดุยโนเองก่อน โดยดาวน์โหลดได้ที่ https://www.arduino.cc/en/Main/Software  ซึ่งเป็นโอเพ่นซอร์สซอฟท์แวร์ ที่เราเอามาใช้งานได้ฟรีๆ เมื่อได้มาแล้วก็ติดตั้งลงในคอมพิวเตอร์ของเราเตรียมไว้

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