ประเภท: บทความเด่น » อิเล็กทรอนิคส์ในทางปฏิบัติ
จำนวนการดู: 67360
ความคิดเห็นเกี่ยวกับบทความ: 7
การเชื่อมต่อและการเขียนโปรแกรม Arduino สำหรับผู้เริ่มต้น
การศึกษาไมโครคอนโทรลเลอร์ดูซับซ้อนและเข้าใจยากไหม? ก่อนการปรากฏตัวของ Arudino มันไม่ง่ายเลยจริงๆและต้องมีโปรแกรมเมอร์และอุปกรณ์อื่น ๆ
Arduino คืออะไร
นี่คือคอนสตรัคเตอร์อิเล็กทรอนิกส์ วัตถุประสงค์เริ่มต้นของโครงการคือเพื่อให้ผู้คนเรียนรู้วิธีการตั้งโปรแกรมอุปกรณ์อิเล็กทรอนิกส์ได้อย่างง่ายดายในขณะที่อุทิศเวลาน้อยที่สุดให้กับชิ้นส่วนอิเล็กทรอนิกส์
การชุมนุมของวงจรที่ซับซ้อนที่สุดและการเชื่อมต่อของบอร์ดสามารถดำเนินการได้โดยไม่ต้องบัดกรีเหล็กและด้วยความช่วยเหลือของจัมเปอร์ที่มีการเชื่อมต่อที่ถอดออกได้ "พ่อ" และ "แม่" ด้วยวิธีนี้คุณสามารถเชื่อมต่อทั้งการ์ดเชื่อมต่อและการ์ดเอ็กซ์แพนชันซึ่งในพจนานุกรมของผู้แปลนั้นเรียกว่า“ โล่”

บอร์ด Arduino ตัวแรกที่ซื้อสำหรับมือใหม่คืออะไร?
คณะกรรมการฐานและเป็นที่นิยมมากที่สุดถือว่า Arduino uno. ค่าธรรมเนียมนี้มีลักษณะคล้ายกับบัตรเครดิต ค่อนข้างใหญ่ โล่ส่วนใหญ่ที่วางขายนั้นสมบูรณ์แบบสำหรับเธอ มีซ็อกเก็ตอยู่บนบอร์ดสำหรับเชื่อมต่ออุปกรณ์ภายนอก

ในร้านค้าในประเทศสำหรับปี 2560 ราคาอยู่ที่ประมาณ 4-5 ดอลลาร์ สำหรับรุ่นที่ทันสมัย Atmega328 คือหัวใจของเธอ
บอร์ด Arduino ภาพและฟังก์ชั่นการถอดรหัสของแต่ละขา Arduino UNO pinout
ไมโครคอนโทรลเลอร์ในบอร์ดนี้เป็นชิปขนาดยาวในแพ็คเกจ DIP28 ซึ่งหมายความว่ามี 28 ขา
บอร์ดยอดนิยมอันดับต่อไปจะมีราคาถูกกว่าสองเท่าก่อนหน้านี้สองเท่า - 2-3 ดอลลาร์ นี่คือคณะกรรมการ Arduino นาโน. บอร์ดจริงนั้นสร้างขึ้นโดย Atmega328 เดียวกันโดยมีฟังก์ชั่นคล้ายกับ UNO มีความแตกต่างในขนาดและโซลูชั่นการจับคู่กับ USB มากขึ้นในภายหลัง ความแตกต่างอีกประการหนึ่งคือปลั๊กในรูปแบบของเข็มมีไว้สำหรับเชื่อมต่ออุปกรณ์กับแผงวงจร

จำนวนพิน (ขา) ของบอร์ดนี้เท่ากัน แต่คุณสามารถสังเกตได้ว่าไมโครคอนโทรลเลอร์นั้นทำในแพ็คเกจ TQFP32 ขนาดกะทัดรัดยิ่งขึ้น ADC6 และ ADC7 จะถูกเพิ่มเข้าไปในเคสอีกสองขา“ เสริม” ที่ซ้ำกันกับบัสกำลัง ขนาดของมันค่อนข้างเล็ก - ประมาณขนาดของนิ้วหัวแม่มือของคุณ
บอร์ดยอดนิยมอันดับสามคือ Arduino Pro Miniมันไม่มีพอร์ต USB สำหรับเชื่อมต่อกับคอมพิวเตอร์ฉันจะบอกวิธีการสื่อสารในภายหลัง

Arduino Nano vs Pro เปรียบเทียบขนาดมินิ
นี่เป็นบอร์ดที่เล็กที่สุดในบรรดาทั้งหมดที่ได้รับการพิจารณาไม่เช่นนั้นจะคล้ายกับสองก่อนหน้านี้และ Atmega328 ยังคงเป็นหัวใจของมัน เราจะไม่พิจารณาบอร์ดอื่น ๆ เนื่องจากเป็นบทความสำหรับผู้เริ่มต้นและการเปรียบเทียบบอร์ดเป็นหัวข้อของบทความแยกต่างหาก
Arduino Pro Mini pinoutในส่วนด้านบนแผนภาพการเชื่อมต่อ USB-UART, ขา“ GRN” - เป็นสายไปยังวงจรรีเซ็ตไมโครคอนโทรลเลอร์มันอาจจะเรียกว่าแตกต่างกันซึ่งคุณจำเป็นต้องค้นหาในภายหลัง
ผลการ:
ถ้า UNO สะดวกสำหรับการสร้างต้นแบบแล้ว Nano และ Pro Mini จะสะดวกสำหรับโครงการรุ่นสุดท้ายของคุณเพราะใช้พื้นที่น้อย

จะเชื่อมต่อ Arduino กับคอมพิวเตอร์ได้อย่างไร?
Arduino Uno และ Nano เชื่อมต่อกับคอมพิวเตอร์ผ่าน USB ในเวลาเดียวกันไม่มีการสนับสนุนฮาร์ดแวร์สำหรับพอร์ต USB โซลูชันวงจรสำหรับการแปลงระดับจะใช้ที่นี่โดยปกติจะเรียกว่า USB เป็นอนุกรมหรือ USB-UART (rs-232) ในขณะเดียวกัน bootloader พิเศษของ Arduino จะถูกส่งไปยังไมโครคอนโทรลเลอร์
ใน Arduino Uno การมัดนี้จะถูกนำไปใช้กับไมโครคอนโทรลเลอร์ที่รองรับ USB - ATmega16U2 (AT16U2) ปรากฎว่าจำเป็นต้องมีไมโครคอนโทรลเลอร์เพิ่มเติมบนบอร์ดสำหรับการกระพริบไมโครคอนโทรลเลอร์หลัก
ใน Arduino Nano สิ่งนี้นำมาใช้โดยชิป FT232R หรืออะนาล็อก CH340 นี่ไม่ใช่ไมโครคอนโทรลเลอร์ - มันเป็นเครื่องแปลงระดับความจริงข้อนี้ทำให้ง่ายต่อการประกอบ Arduino Nano ตั้งแต่เริ่มต้นด้วยมือของคุณเอง
โดยทั่วไปแล้วไดรเวอร์จะถูกติดตั้งโดยอัตโนมัติเมื่อเชื่อมต่อกับบอร์ด Arduino อย่างไรก็ตามเมื่อฉันซื้อ Arduino Nano ของจีนอุปกรณ์ดังกล่าวได้รับการยอมรับ แต่มันใช้งานไม่ได้สติกเกอร์ทรงกลมที่มีข้อมูล ณ วันที่วางจำหน่ายนั้นติดอยู่ที่ตัวแปลงผมไม่ทราบว่ามันถูกทำตามวัตถุประสงค์จริงหรือไม่
ก่อนหน้านี้ฉันไม่พบสิ่งนี้และคิดว่าตัวแปลง USB-UART ทั้งหมดมารวมกันใน FT232 ฉันต้องดาวน์โหลดไดรเวอร์พวกเขาหาง่ายมากโดยการร้องขอจาก“ ไดรเวอร์ Arduino ch340” หลังจากการติดตั้งง่าย - มันใช้งานได้!
ด้วยพอร์ต USB เดียวกันไมโครคอนโทรลเลอร์สามารถขับเคลื่อนได้เช่นกัน หากคุณเชื่อมต่อกับอะแดปเตอร์จากโทรศัพท์มือถือระบบของคุณจะทำงาน
ฉันควรทำอย่างไรหากบอร์ดของฉันไม่มี USB
Arduino Pro Mini นั้นเล็กกว่า สิ่งนี้ทำได้โดยการถอดตัวเชื่อมต่อ USB สำหรับเฟิร์มแวร์และตัวแปลง USB-UART เดียวกัน ดังนั้นจะต้องซื้อแยกต่างหาก ตัวแปลงที่ง่ายที่สุดบน CH340 (ราคาถูกที่สุด), CPL2102 และ FT232R สำหรับต้นทุนการขายเริ่มต้นที่ $ 1
เมื่อซื้อให้ใส่ใจกับแรงดันไฟฟ้าของอะแดปเตอร์นี้ที่ออกแบบมาสำหรับ Pro mini มีให้ในเวอร์ชั่น 3.3 และ 5 V ซึ่งจัมเปอร์มักจะอยู่ที่ตัวแปลงเพื่อเปลี่ยนแรงดันไฟฟ้า

เมื่อกระพริบ Pro Mini ก่อนที่จะเริ่มต้นคุณต้องคลิกที่ RESET อย่างไรก็ตามในตัวแปลงที่มี DTR คุณไม่จำเป็นต้องทำเช่นนี้แผนภาพการเชื่อมต่อในรูปด้านล่าง

พวกเขาเข้าร่วมโดยอาคารพิเศษ "Mama-Mama" (หญิง - หญิง)

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

จะเขียนโปรแกรมสำหรับ Arduino ได้อย่างไร?
ในการทำงานกับสเก็ตช์ (ชื่อของเฟิร์มแวร์เป็นภาษาของ Arduino) มีสภาพแวดล้อมแบบบูรณาการพิเศษสำหรับการพัฒนา Arduino IDE คุณสามารถดาวน์โหลดได้ฟรีจากเว็บไซต์อย่างเป็นทางการหรือจากแหล่งเนื้อหาใด ๆ โดยทั่วไปจะไม่มีปัญหาในการติดตั้ง
นี่คือรูปลักษณ์ของอินเตอร์เฟสโปรแกรม คุณสามารถเขียนโปรแกรมด้วยภาษา C AVR ที่ง่ายขึ้นซึ่งพัฒนาขึ้นเป็นพิเศษสำหรับ arduino ในความเป็นจริงมันเป็นชุดของห้องสมุดที่เรียกว่า Wiring เช่นเดียวกับใน C AVR ที่บริสุทธิ์ การใช้มันช่วยให้โค้ดง่ายขึ้นและเพิ่มความเร็วในการทำงาน
ที่ด้านบนของหน้าต่างจะมีเมนูที่คุ้นเคยซึ่งคุณสามารถเปิดไฟล์การตั้งค่าเลือกบอร์ดที่คุณทำงานด้วย (Uno, Nano และอื่น ๆ อีกมากมาย) และเปิดโครงการพร้อมตัวอย่างโค้ดแบบสำเร็จรูป ด้านล่างเป็นชุดปุ่มสำหรับทำงานกับเฟิร์มแวร์ปุ่มที่คุณจะเห็นในภาพด้านล่าง

ที่ด้านล่างของหน้าต่างเป็นพื้นที่สำหรับแสดงข้อมูลเกี่ยวกับโครงการสถานะของรหัสเฟิร์มแวร์และการปรากฏตัวของข้อผิดพลาด
พื้นฐานการเขียนโปรแกรม Arduino IDE
ที่จุดเริ่มต้นของรหัสคุณจะต้องประกาศตัวแปรและเชื่อมต่อไลบรารีเพิ่มเติมหากมีอยู่สิ่งนี้จะทำดังนี้:
#include biblioteka.h; // เชื่อมต่อไลบรารีด้วยชื่อ“ Biblioteka.h”
#define peremennaya 1234; // ประกาศตัวแปรที่มีค่า 1234
คำสั่ง Define อนุญาตให้คอมไพเลอร์เลือกชนิดของตัวแปร แต่คุณสามารถตั้งค่าได้ด้วยตนเองเช่นจำนวนเต็ม int หรือทศนิยมจุดลอย
int led = 13; // สร้างตัวแปร“ นำ” และกำหนดค่าเป็น“ 13”
โปรแกรมสามารถกำหนดสถานะของพินเป็น 1 หรือ 0 1 เป็นหน่วยทางลอจิคัลหากพิน 13 เป็น 1 จากนั้นแรงดันที่ขาทางกายภาพของมันจะเท่ากับแรงดันไฟฟ้าของไมโครคอนโทรลเลอร์ (สำหรับ arduino UNO และ Nano - 5 V)
สัญญาณดิจิตอลจะถูกบันทึกโดยใช้คำสั่ง digitalWrite (พินค่า) ตัวอย่างเช่น:
digitalWrite (LED, สูง); // เขียนหน่วยเพื่อปักหมุด 13 (เราประกาศไว้ข้างบน) บันทึก หน่วย
อย่างที่คุณสามารถเข้าใจการเข้าถึงพอร์ตโดยการกำหนดหมายเลขบนกระดานตัวเลขที่สอดคล้องกัน นี่คือตัวอย่างที่คล้ายกับรหัสก่อนหน้า:
digitalWrite (สูง 13); // ตั้งค่าพิน 13 เป็นหนึ่ง
บ่อยครั้งที่ฟังก์ชั่นการหน่วงเวลาตามต้องการถูกเรียกใช้โดยคำสั่ง delay () ค่าของการตั้งค่าเป็นมิลลิวินาทีโดยใช้ไมโครวินาที
delayMicroseconds () ล่าช้า (1,000); // ไมโครคอนโทรลเลอร์จะรอ 1,000 ms (1 วินาที)
การตั้งค่าพอร์ตสำหรับอินพุตและเอาต์พุตถูกตั้งค่าในฟังก์ชัน void setup {} พร้อมคำสั่ง:
การตั้งค่าเป็นโมฆะ () {
pinMode (NOMERPORTA, OUTPUT / INPUT); // อาร์กิวเมนต์ - ชื่อตัวแปรหรือหมายเลขพอร์ตอินพุตหรือเอาต์พุตให้เลือก
}
Void loop {}
ทำความเข้าใจกับโปรแกรม Blink แรก
ในฐานะที่เป็น“ สวัสดีโลก” สำหรับไมโครคอนโทรลเลอร์มีโปรแกรม LED กระพริบลองวิเคราะห์รหัส:
ในการเริ่มต้นด้วยคำสั่ง pinMode เราบอกไมโครคอนโทรลเลอร์ให้กำหนดพอร์ตที่มี LED ไปยังเอาต์พุตคุณสังเกตเห็นแล้วว่ารหัสไม่ได้ประกาศตัวแปร“ LED_BUILTIN” ความจริงก็คือใน Uno, Nano และบอร์ดอื่น ๆ จากโรงงาน LED ในตัวเชื่อมต่อกับพิน 13 และเชื่อมกับบอร์ด คุณสามารถใช้เพื่อบ่งชี้ในโครงการของคุณหรือตรวจสอบโปรแกรมกะพริบของคุณได้ง่ายที่สุด
ต่อไปเราตั้งค่าเอาท์พุทที่ LED ถูกบัดกรีให้เป็นเอกภาพ (5 V) บรรทัดถัดไปทำให้ MK รอ 1 วินาทีจากนั้นตั้ง LED_BUILTIN พินเป็นศูนย์รอหนึ่งวินาทีและโปรแกรมจะวนซ้ำเป็นวงกลมดังนั้นเมื่อ LED_BUILTIN เป็น 1 - LED ( และโหลดอื่น ๆ ที่เชื่อมต่อกับพอร์ต) จะถูกเปิดใช้งานเมื่ออยู่ที่ 0 มันจะถูกปิด
ทุกอย่างทำงานและทุกอย่างชัดเจนหรือไม่ จากนั้นไปต่อ!
เราอ่านค่าจากพอร์ตอะนาล็อกและใช้ข้อมูลการอ่าน
ไมโครคอนโทรลเลอร์ AVR Atmega328 มีตัวแปลงอนาล็อกเป็นดิจิตอล 10 บิตในตัว ADC ขนาด 10 บิตช่วยให้คุณอ่านค่าแรงดันไฟฟ้าได้ตั้งแต่ 0 ถึง 5 โวลต์โดยเพิ่มขึ้น 1/1024 ของช่วงความกว้างทั้งหมดของสัญญาณ (5 V)
เพื่อให้ชัดเจนยิ่งขึ้นให้พิจารณาสถานการณ์สมมติว่าแรงดันไฟฟ้าที่อินพุตอนาล็อกคือ 2.5 V จากนั้นไมโครคอนโทรลเลอร์จะอ่านค่าจากขา "512" หากแรงดันไฟฟ้าเป็น 0 - "0" และถ้า 5 V - (1023) 1023 - เนื่องจากการนับไปจาก 0 นั่นคือ 0, 1, 2, 3, ฯลฯ สูงสุด 1023 - รวม 1024 ค่า
นี่คือลักษณะที่ปรากฏในโค้ดโดยใช้ร่างมาตรฐาน“ analogInput” เป็นตัวอย่าง
int sensorPin = A0;
int ledPin = 13;
int sensorValue = 0;
การตั้งค่าเป็นโมฆะ () {
pinMode (ledPin, OUTPUT);
}
void loop () {
sensorValue = analogRead (sensorPin);
digitalWrite (ledPin, HIGH);
ความล่าช้า (sensorValue);
digitalWrite (ledPin, LOW);
ความล่าช้า (sensorValue);
}

รูปแบบการเชื่อมต่อของโพเทนชิออมิเตอร์กับ Arduino โดยการเปรียบเทียบเอาต์พุตส่วนกลางที่คุณสามารถเชื่อมต่อกับอินพุตอะนาล็อกใด ๆ
ประกาศตัวแปร:
-
Ledpin - กำหนดพินด้วย LED ในตัวไปยังเอาต์พุตและตั้งชื่อเฉพาะ
-
sensorPin - อินพุตแบบอะนาล็อกตั้งค่าตามการทำเครื่องหมายบนบอร์ด: A0, A1, A2, ฯลฯ ;
-
sensorValue - ตัวแปรสำหรับการจัดเก็บค่าการอ่านจำนวนเต็มและทำงานต่อไปได้
รหัสทำงานดังนี้: sensorValue บันทึกค่าอะนาล็อกที่อ่านด้วย sensorPin (คำสั่ง analogRead) - ที่นี่การทำงานกับสัญญาณอะนาล็อกสิ้นสุดลงจากนั้นทุกอย่างเป็นไปตามตัวอย่างก่อนหน้านี้
เราเขียนหน่วยเป็น ledPin LED จะเปิดและรอเวลาเท่ากับค่าของ sensorValue เช่น จาก 0 ถึง 1,023 มิลลิวินาที ปิด LED และรออีกครั้งในช่วงเวลานี้หลังจากที่รหัสซ้ำ
ดังนั้นด้วยตำแหน่งของโพเทนชิออมิเตอร์เราจึงตั้งความถี่กระพริบของ LED
ฟังก์ชั่นแผนที่สำหรับ Arudino
ฟังก์ชั่นบางอย่างสำหรับแอคทูเอเตอร์ (ฉันไม่ทราบ) สนับสนุน“ 1023” เป็นอาร์กิวเมนต์ตัวอย่างเซอร์โวถูก จำกัด ด้วยมุมการหมุนนั่นคือโดยการปฏิวัติครึ่งหนึ่ง (180 องศา) (ครึ่งการปฏิวัติ) ของเซอร์โวมอเตอร์
ตอนนี้เกี่ยวกับไวยากรณ์: map (ค่าที่เราแปลคืออินพุตขั้นต่ำ, อินพุตสูงสุด, เอาต์พุตต่ำสุด, เอาต์พุตสูงสุด)
ในรหัสดูเหมือนว่านี้:
(แผนที่ (อะนาล็อกอ่าน (หม้อ), 0, 1023, 0, 180));
เราอ่านค่าจากโพเทนชิออมิเตอร์ (analogRead (pot)) จาก 0 ถึง 1,023 และที่เอาต์พุตเราได้รับตัวเลขตั้งแต่ 0 ถึง 180
ค่าแผนที่ค่า:
-
0=0;
-
1023=180;
ในทางปฏิบัติเราใช้สิ่งนี้กับการทำงานของรหัสเซอร์โวเดียวกันดูที่รหัสด้วย Arduino IDE ถ้าคุณอ่านส่วนก่อนหน้าอย่างระมัดระวังแล้วมันไม่จำเป็นต้องมีคำอธิบาย

และไดอะแกรมการเชื่อมต่อ

บทสรุป Arduino เป็นเครื่องมือที่สะดวกมากสำหรับการเรียนรู้วิธีการทำงานกับไมโครคอนโทรลเลอร์ และถ้าคุณใช้ Pure C AVR หรือที่บางครั้งเรียกว่า“ Pure C” คุณจะลดน้ำหนักรหัสลงอย่างมากและพอดีกับหน่วยความจำของไมโครคอนโทรลเลอร์มากขึ้นคุณจะได้รับแผ่นดีบั๊กจากโรงงานด้วยเฟิร์มแวร์ USB

ความคิดเห็นของผู้เขียน:
ฉันชอบ arduino มันเป็นเรื่องน่าเสียดายที่โปรแกรมเมอร์ไมโครคอนโทรลเลอร์ที่มีประสบการณ์หลายคนวิพากษ์วิจารณ์มันอย่างไม่มีเหตุผลว่ามันง่ายเกินไป ตามหลักการแล้วมีเพียงภาษาที่เรียบง่าย แต่ไม่มีใครบังคับให้คุณใช้รวมถึงคุณสามารถแฟลชไมโครคอนโทรลเลอร์ผ่านช่องเสียบ ICSP และกรอกรหัสที่คุณต้องการโดยไม่ต้องใช้ bootloaders ใด ๆ ที่คุณไม่ต้องการ
สำหรับผู้ที่ต้องการเล่นกับอุปกรณ์อิเล็กทรอนิกส์ในฐานะตัวสร้างขั้นสูงมันสมบูรณ์แบบ แต่สำหรับโปรแกรมเมอร์ที่มีประสบการณ์แล้วบอร์ดที่ไม่ต้องการการประกอบจะมีประโยชน์เช่นกัน!
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ Arduino และคุณสมบัติการใช้งานในรูปแบบต่าง ๆ ดู e-book -Arduino สำหรับหุ่น คู่มือการปฏิบัติภาพประกอบ.
ดูได้ที่ e.imadeself.com
: