Cytron ได้ผลิตบอร์ด Arduino ตัวล่าสุดชื่อ Maker Uno RP2040 บอร์ดพัฒนาที่ผสมผสานฟอร์มแฟคเตอร์ Arduino/Maker Uno ร่วมกับชิปประมวลผล Raspberry Pi RP2040 และมีหน่วยความจำแฟลชขนาดใหญ่ ทำให้สามารถเขียนโปรแกรมด้วย Arduino IDE (C/C++), Micropython, CircuitPython ทำให้สามารถเข้าถึงได้ทั้งสำหรับผู้เริ่มต้นและผู้ใช้ขั้นสูง
บอร์ดพร้อมกับ Layout การเชื่อมต่อให้มีความสะดวกมากขึ้น เช่น การเพิ่ม Maker Port จำนวน 1 พอร์ต สำหรับเซนเซอร์, Grove Port จำนวน 6 พอร์ต, พอร์ตการเชื่อมต่อ Servo 4 พอร์ต ทำให้ลดระยะเวลาในการเชื่อมต่อ บอร์ดยังมีตัวเลือกการจ่ายไฟสองแบบคือ USB (5V) ผ่านช่องเสียบ USB-C หรือแบตเตอรี่ LiPo/Li-Ion เซลล์เดียวผ่านขั้วต่อ LiPo
สเปคของ Cytron Maker Uno RP2040
- ฟอร์มแฟคเตอร์ Arduino/Maker Uno
- ขับเคลื่อนโดย Raspberry Pi RP2040
- Dual-core Arm Cortex-M0+ microcontroller
- 264 KB internal RAM
- หน่วยความจำแฟลช 2MB
- ขั้วต่อ LiPo เซลล์เดียวพร้อมวงจรป้องกันการชาร์จเกิน/ดิสชาร์จในตัว สามารถชาร์จได้ผ่าน USB
- 6x Grove Ports (Digital I/O, PWM Output, UART, I2C, Analog Input)
- 1x Maker Ports, เข้ากันได้กับ Qwiic, STEMMA QT และ Grove (ผ่านสายแปลง)
- 4x Servo Ports
- 1x USB-C สำหรับจ่ายไฟและเขียนโปรแกรม
- 16x ไฟ LED แสดงสถานะสำหรับ GPIO
- 1xPiezo Buzzer พร้อมสวิตช์ปิดเสียง
- 1x ปุ่มกดที่ผู้ใช้สามารถตั้งโปรแกรมได้
- 1x ปุ่มรีเซ็ต
- 1x ปุ่มบูต
- 2x RGB LEDs (WS2812)
- ขนาด 60.96 x 9.40 ซม.
บริษัท Cytron ที่ส่ง Maker Uno RP2040 kit พร้อมกับอุปกรณ์เสริมต่าง ๆ โดยในบทความนี้เราจะเริ่มต้นใช้งาน Maker Uno RP2040 บนโปรแกรม Arduino IDE เริ่มจากทดสอบการเขียนโปรแกรม Blink ไฟกระพริบ, ไฟ LED แบบ RGB, กดปุ่มไฟติด, buzzer ทำให้มีเสียง, ใช้งานร่วมกับ Micro Servo Motor, อ่านค่าเซนเซอร์ด้วย Maker Soil Module และวัดระยะห่างวัดถุด้วยโมดูลเซนเซอร์ Ultrasonic HC-SR04, แสดงข้อความบนโมดูล OLED SSD1315
แกะกล่อง Cytron Maker Uno RP2040 kid
ในกล่อง Maker Uno RP2040 kit ประกอบด้วยบอร์ด Maker Uno RP2040 พร้อมสายเคเบิล female to grove ถึง 4 เส้น, สายเคเบิ้ล USB ตัวบอร์ดและ Silicone Rubber Feet 4 ชิ้น, เซนเซอร์ Maker Soil Moisture พร้อมสายเคเบิล grove to grove 1 เส้น, เซอร์โวมอเตอร์ SG90 Micro Servo พร้อมุปกรณ์เสริม, เซนเซอร์อัลตราโซนิก HC-SR04 พร้อมสายเคเบิล female to grove ถึง 1 เส้น, จอแสดงผล OLED ขนาด 0.96 นิ้ว แบบ I2C (128×64 pixel)
เรามาดูคุณสมบัติของอุปกรณ์เสริมแต่ละตัวกัน
- Maker Soil Moisture Sensor
เซ็นเซอร์ความชื้นในดินของ Maker วัดความชื้นในดินโดยการตรวจจับแบบคาปาซิทีฟ ซึ่งการมีน้ำในดินจะเพิ่มความจุของหัววัด เอาต์พุตของเซนเซอร์คือเอาต์พุตแบบอะนาล็อกระดับความชื้นที่สูงขึ้นจะทำให้แรงดันไฟขาออกลดลง
- HC-SR04 Ultrasonic Sensor
เซ็นเซอร์วัดระยะอัลตราโซนิก HC-SR04 ใช้วัดระยะทางแบบไม่สัมผัสตั้งแต่ 2 ซม. ถึง 400 ซม. โดยมีช่วงความแม่นยำสูงสุด 3 มม.
- SG90 Micro Servo
อุปกรณ์มอเตอร์ ที่สามารถควบคุมการหมุนที่แม่นยำ เซอร์โว SG90 มีขนาดเล็กแรงบิด 1.2-1.4 kg/cm. สามารถหมุน แบบต่อเนื่อง 360 องศาไปกลับได้
- OLED I2C 0.96Inch 128×64 Blue Display SSD1306 driver
จอแสดงผล OLED (Organic Light-Emitting Diode) ขนาดเล็กที่สวยงามซึ่งมีความละเอียด 128×64 ที่ขนาดหน้าจอ 0.96 นิ้วนี้ SSD1306 driver, I2C สำหรับแสดงผล มีประโยชน์มากเมื่อคุณต้องการเพิ่มจอภาพให้กับโปรเจ็กต์ของคุณ จอแสดงผล OLED จึงสามารถสร้างข้อความ/รูปภาพที่มีคอนทราสต์สูง และสามารถอ่านได้ง่ายแม้ภายใต้แสงจ้า มันสามารถแสดงข้อมูลได้มากมายแม้จะมีขนาดกะทัดรัด
เริ่มต้นใช้งาน Maker Uno RP2040 ร่วมกับอุปกรณ์ต่างๆ บน Arduino IDE
เริ่มจากเปิดเครื่อง Maker Uno RP2040 สามารถจ่ายไฟ 2 ตัวเลือกคือใช้สาย USB Type-C (5V) และแบตเตอรี่ Li-Po/Li-Ion เซลล์เดียว (3.7V) ในรีวิวเราจะใช้สาย USB Type-C (5V) เพื่อเชื่อมต่อ Maker Uno RP2040 กับโน๊ตบุ๊ก
ต่อไปเรามาดูการเขียนโปรแกรม Maker Uno RP2040 สามารถเขียนโปรแกรมได้ด้วย Arduino IDE (C/C++), Micropython, CircuitPython ในรีวิวนี้เราจะเริ่มต้นใช้งานกับโปรแกรม Arduino IDE โดยการติดตั้งโปรแกรม Arduino IDE
Cytron มี Tutorials บทช่วยสอนที่มีคำแนะนำวิธีการติดตั้งและตัวอย่างการใช้งานอย่างละเอียด ก่อนที่จะเริ่มเขียนโค้ดมี 3 ขั้นตอนที่ต้องทำ
1. เพิ่ม Maker Uno RP2040
- ไปที่ เมนู File->Preferences, ที่ช่อง “Additional Boards Manager URLs” ให้วางลิงก์นี้: https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json แล้วเลือก OK
- ค้นหา “Uno RP2040” หากแพ็คเกจบอร์ดแล้วคลิก Install
- ติดตั้งสำเร็จ คุณจะพบบอร์ด Maker Uno RP2040 อยู่ใน Arduino IDE เพียงเลือกจาก Tool > Board > Raspberry Pi Pico/RP2040 > Cytron Maker Uno RP2040
2. เข้าสู่โหมด Bootloader เชื่อมต่อ Maker Uno RP2040 กับโน้ตบุ๊กแล้วเปิดเครื่อง กดปุ่ม BOOT ค้างไว้แล้วกด RESET (กดเพียงครั้งเดียว! ) จะมีไดรฟ์ใหม่ชื่อ RPI-RP2 ปรากฎขึ้น
3. เลือกบอร์ดและพอร์ต COM ที่ถูกต้อง
- เลือกบอร์ด Maker Uno RP2040 จาก Tool> Board> Raspberry Pi Pico/RP2040> Cytron Maker Uno RP2040
- เลือกพอร์ต COM โดยไปที่ Tool> Port (ในครั้งแรกพอร์ต COM จะเป็น “UF2_Board” หลังจากอัปโหลด sketch บอร์ดจะรีเซ็ต และจะมีพอร์ต COM ปรากฎขึ้น) ตอนนี้เราก็พร้อมที่จะเริ่มเขียนโค้ดแล้ว
เปิดโปรแกรม Arduino IDE และตรวจสอบให้แน่ใจว่าได้เลือกบอร์ดและพอร์ต COM ที่ถูกต้อง แล้วโค้ดตามนี้
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
/* DESCRIPTION: This example code will use Maker Uno RP2040 to light up any of two onboard GPIOs LEDs alternately. For this code, GPIOs LED for GPO and GP1 pin are selected. Each LED will be blinking every each 0.5 second alternately. AUTHOR : Cytron Technologies Sdn Bhd WEBSITE : www.cytron.io EMAIL : [email protected] */ // Pin assignments for LEDs const int ledPin1 = 0; const int ledPin2 = 1; void setup() { // initialize leds on GP0 and GP1 pins as output. pinMode(ledPin1, OUTPUT); pinMode(ledPin2, OUTPUT); } void loop() { // led GP0 is light up for 0.5s then turned off. digitalWrite(ledPin1, HIGH); delay(500); digitalWrite(ledPin1, LOW); delay(500); // led GP1 is light up for 0.5s then turned off. digitalWrite(ledPin2, HIGH); delay(500); digitalWrite(ledPin2, LOW); delay(500); } |
เลือก Verify และเลือก Upload sketch ไปยัง Maker Uno RP2040 ของคุณ
ผลลัพธ์ที่ได้คือจะมี LED ไฟกะพริบบนบอร์ด 2 ดวง (GP0 และ GP1) สลับกันทุกๆ 0.5 วินาที
เปิดโปรแกรม Arduino IDE และตรวจสอบให้แน่ใจว่าได้เลือกบอร์ดและพอร์ต COM ที่ถูกต้อง แล้วโค้ดตามนี้
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
/* DESCRIPTION: This example code will use Maker Uno RP2040 to light up the on-board RGB leds. The RGB LEDs will sequentially changing their colors individually. AUTHOR : Cytron Technologies Sdn Bhd WEBSITE : www.cytron.io EMAIL : [email protected] REFERENCE: Adafruit_NeoPixel library link: https://github.com/adafruit/Adafruit_NeoPixel/tree/master */ #include <Adafruit_NeoPixel.h> // Declare pin number of the Neopixel LED and the number of the LED const int neoPin = 25; const int numPixels = 2; // Initialize the NeoPixel RGB LEDs on pin GP25 Adafruit_NeoPixel pixels(numPixels, neoPin, NEO_GRB + NEO_KHZ800); void setup() { pixels.begin(); // Initialize NeoPixel library pixels.clear(); // Set all pixel colors to 'off' pixels.show(); // Send the updated pixel colors to the hardware. } void loop() { // pixels.Color() takes RGB values, from 0,0,0 up to 255,255,255 // NeoPixels are numbered from 0 to (number of pixels - 1). pixels.setPixelColor(0, pixels.Color(200, 0, 0)); // Red pixels.setPixelColor(1, pixels.Color(200, 0, 200)); // Magenta pixels.show(); // Send the updated pixel colors to the hardware. delay(1000); pixels.setPixelColor(0, pixels.Color(0, 200, 0)); // Green pixels.setPixelColor(1, pixels.Color(200, 200, 0)); // Yellow pixels.show(); // Send the updated pixel colors to the hardware. delay(1000); pixels.setPixelColor(0, pixels.Color(0, 0, 200)); // Blue pixels.setPixelColor(1, pixels.Color(0, 200, 200)); // Cyan pixels.show(); // Send the updated pixel colors to the hardware. delay(1000); pixels.setPixelColor(0, pixels.Color(0, 0, 0)); // Black (turn off the LED) pixels.setPixelColor(1, pixels.Color(0, 0, 0)); // Black (turn off the LED) pixels.show(); // Send the updated pixel colors to the hardware. delay(1000); } |
เลือก Verify และ เลือก Upload sketch ไปยัง Maker Uno RP2040 ของคุณ
ผลลัพธ์ที่ได้คือไฟ LED RGB จะสว่างแยกกันใน 3 สีที่แตกต่างกันตามลำดับจนกว่าจะดับลง จากนั้นจึงทำซ้ำ
เปิดโปรแกรม Arduino IDE และตรวจสอบให้แน่ใจว่าได้เลือกบอร์ดและพอร์ต COM ที่ถูกต้อง แล้วโค้ดตามนี้
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
/* DESCRIPTION: This example code will show how to use the User button on the Maker Uno RP2040 as an Input. In this code, the button will be used to control an on-board LED. If the button is pressed, the LED will light up for 0.5 second then turned off AUTHOR : Cytron Technologies Sdn Bhd WEBSITE : www.cytron.io EMAIL : [email protected] */ // Declare pin assignments for LED and button. const int ledPin1 = 8; const int btn1 = 2; void setup() { // initialize leds GP1 pins as output and the user button as output pinMode(ledPin1, OUTPUT); pinMode(btn1, INPUT_PULLUP); } void loop() { // check button 1 (GP2) is pressed if (!digitalRead(btn1)) { // led GP0 is light up for 0.5s then turned off. digitalWrite(ledPin1, HIGH); delay(500); digitalWrite(ledPin1, LOW); } } |
เลือก Verify และ เลือก Upload sketch ไปยัง Maker Uno RP2040 ของคุณ
ผลลัพธ์ที่ได้คือเมื่อกดปุ่ม USER 1 ครั้งจะทำให้ไฟ LED ติดขึ้นเป็นเวลา 0.5 วินาทีแล้วจึงดับลง
เปิดโปรแกรม Arduino IDE และตรวจสอบให้แน่ใจว่าได้เลือกบอร์ดและพอร์ต COM ที่ถูกต้อง แล้วโค้ดตามนี้
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
/* DESCRIPTION: This example code will use the the buzzzer on the Maker Uno RP2040 to play the tones. The User button also used in this code. Upon startup, a short melody will be played and then the code will wait for the button press to play another set of short tones. AUTHOR : Cytron Technologies Sdn Bhd WEBSITE : www.cytron.io EMAIL : [email protected] */ // Declare pin assigment for buzzer and button const int buzzerPin = 8; const int btn1 = 2; // Create an array of the melody note frequency with its corresponding duration for each note int melody_note[10] = {659, 659, 0, 659, 0, 523, 659, 0, 784, 0}; // [E5, E5, REST, E5, REST, C5, E5, REST, G5] int melody_duration[10] = {150, 150, 150, 150, 150, 150, 150, 150, 200, 150}; void setup(){ // Initialize buzzer pin as output pinMode(buzzerPin, OUTPUT); // Initialize buttons pinMode(btn1, INPUT_PULLUP); // Play melody during start up play_melody(buzzerPin); } void loop(){ // Check button 1 (GP2) is pressed if (!digitalRead(btn1)) { // Play tones tone(buzzerPin,262,100); delay(100); tone(buzzerPin,659,100); delay(100); tone(buzzerPin,784,100); delay(100); noTone(buzzerPin); } } void play_melody(int pin){ for(int i=0; i<10; i++){ if(melody_note[i] == 0){ noTone(pin); } else{ tone(pin, melody_note[i], 100); } delay(int(melody_duration[i])); } } |
เลือก Verify และ เลือก Upload sketch ไปยัง Maker Uno RP2040 ของคุณ
ผลลัพธ์ที่ได้คือ buzzer จะเล่นตัวอย่างทำนองเพลงธีม Mario Bros จากนั้นตอบสนองต่อการกดปุ่มเพื่อเล่นเสียงสั้นๆ
Maker Uno RP2040 มีพอร์ตการเชื่อมต่อ Servo จำนวน 4 พอร์ต สามารถเชื่อมต่อไมโครเซอร์โวมอเตอร์เข้ากับพอร์ตเซอร์โวพอร์ตใดพอร์ตหนึ่ง เราจะทดสอบการทำงานโดยเชื่อมต่อไมโครเซอร์โว SG90 เข้ากับพอร์ต S1 (GP14) บน Maker Uno RP2040
เปิดโปรแกรม Arduino IDE และตรวจสอบให้แน่ใจว่าได้เลือกบอร์ดและพอร์ต COM ที่ถูกต้อง แล้วโค้ดตามนี้
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
/* DESCRIPTION: This example code will use Maker UNO RP2040 to control four servo motors connected to the onboard servo ports. The servo motor will sweep from 0° to 180° with an increment of 1° every 10 milliseconds. Then the servos moves back from 180 degrees to 0 degrees with a decrement of 1 degree every each 10 milliseconds. AUTHOR : Cytron Technologies Sdn Bhd WEBSITE : www.cytron.io EMAIL : [email protected] */ // Include the servo library #include <Servo.h> // Create servo objects for each servos Servo servo1; Servo servo2; Servo servo3; Servo servo4; void setup() { // Attach each servo object to their corresponding pins servo1.attach(14); servo2.attach(15); servo3.attach(16); servo4.attach(17); } void loop() { // Move the servos from 0 degress to 180 degrees with with an increment of 1 degree per step for (int pos = 0; pos <= 180; pos += 1) { servo1.write(pos); // Set Servo 1 position to 'pos' degrees servo2.write(pos); // Set Servo 2 position to 'pos' degrees servo3.write(pos); // Set Servo 3 position to 'pos' degrees servo4.write(pos); // Set Servo 4 position to 'pos' degrees delay(10); // Pause for 15 milliseconds to control the speed of servo movement } // Move the servos from 180 degress to 0 degrees with with a decrement of 1 degree per step for (int pos = 200; pos >= 0; pos -= 1) { servo1.write(pos); // Set Servo 1 position to 'pos' degrees servo2.write(pos); // Set Servo 2 position to 'pos' degrees servo3.write(pos); // Set Servo 3 position to 'pos' degrees servo4.write(pos); // Set Servo 4 position to 'pos' degrees delay(10); // Pause for 15 milliseconds to control the speed of servo movement } } /* NOTE: This code is written for standard servo motors. If you are using 360 degree continous rotation servo, the servo.write (pos) function behave differently than standard servo. It controls speed rather than position. A value near 90 means no movement, 0 is full speed in one direction and 180 is full speed in other direction */ |
เลือก Verify และ เลือก Upload sketch ไปยัง Maker Uno RP2040 ของคุณ
ผลลัพธ์ที่ได้คือเซอร์โวมอเตอร์จะหมุนอย่างราบรื่นจาก 0° ถึง 180° เพิ่มขึ้น 1° ทุกๆ 10 มิลลิวินาที เมื่อถึง 180° มันจะกลับทิศทางและเคลื่อนกลับไปที่ 0° โดยลดลง 1° ทุกๆ 10 มิลลิวินาที
อ่านแบบแอนะล็อก
พอร์ต Grove Port ทั้งหมด 6 พอร์ต, มี 3 พอร์ต (3 = A0, 4 = A1, 5= A2,5) ที่มีพินอะนาล็อก สามารถใช้เพื่ออ่านค่าเซนเซอร์แบบแอนะล็อก
เราจะใช้ Maker Soil Module เอาต์พุตของเซนเซอร์เป็นเอาต์พุตแบบอะนาล็อก โดยเชื่อมต่อโมดูล Maker Soil เข้ากับ Maker Uno กับพอร์ต Grove 5 ของ Maker Uno RP2040 รูปด้านล่างแสดงการเชื่อมต่อระหว่างโมดูลกับ Maker Uno RP2040 ใช้สายเคเบิล Grove-to-Female
เราจะทำการวัดความชื้นในแก้วน้ำ เปิดโปรแกรม Arduino IDE และตรวจสอบให้แน่ใจว่าได้เลือกบอร์ดและพอร์ต COM ที่ถูกต้อง แล้วโค้ดตามนี้
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
/* DESCRIPTION: This example code will use Maker Uno RP2040 to read the analog input from Maker Soil Module and then show the result on serial monitor. This code also applicable to any analog sensor. CONNECTION: Grove 5 of Maker Uno RP2040 : Maker Soil Module GP29 - OUT pin of the Maker Soil Module AUTHOR : Cytron Technologies Sdn Bhd WEBSITE : www.cytron.io EMAIL : [email protected] */ int sensorPin = 29; // select the input pin for the potentiometer int raw_value = 0; float voltage_value = 0; void setup() { // declare the sensorPin as an OUTPUT: pinMode(sensorPin, INPUT); Serial.begin(9600); // enable adc resolution to 12-bit (default 10-bit) analogReadResolution(12); } void loop() { // read the value from the sensor: raw_value = analogRead(sensorPin); // Convert the raw ADC value to voltage (3.3V is the board's voltage reference) voltage_value = (raw_value * 3.3) / 4095; Serial.print("Raw Value : "); Serial.println(raw_value); Serial.print("Voltage Value : "); Serial.println(voltage_value); Serial.println("---------------------------"); delay(1000); } |
เลือก Verify และ เลือก Upload sketch ไปยัง Maker Uno RP2040 ของคุณ
ผลลัพธ์ที่ได้คือ การอ่านค่าจากเซนเซอร์ควรแสดงบน serial monitor
แสดงค่าความชื้นเป็น 2296 2297 2285 ….
อ่านดิจิทัล
สำหรับเซนเซอร์ดิจิทัล สามารถใช้พอร์ต Grove และ Maker ใดก็ได้ ในรีวิวนี้เราจะใช้โมดูลเซนเซอร์ Ultrasonic สำหรับการวัดระยะห่างจากกลอ่ง โดยเชื่อมต่อโมดูลเซนเซอร์ Ultrasonic กับพอร์ต Grove 6 ของ Maker Uno RP2040 ผ่านสายเคเบิล female to grove (ขา GP20 สีขาวต่อกับขาสัญญาณ ECHO, ขา GP21 สีเหลืองต่อกับขาสัญญาณ TRIG, GND สีดำต่อกับขาสัญญาณ GND, 3.3 V สีแดงต่อกับขาสัญญาณ VCC)
เปิดโปรแกรม Arduino IDE และตรวจสอบให้แน่ใจว่าได้เลือกบอร์ดและพอร์ต COM ที่ถูกต้อง แล้วโค้ดตามนี้
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
/* DESCRIPTION: This example code will use Maker UNO RP2040 with Ultrasonic Sensor HC-SR04P to measure distance and then display the readings on serial monitor. CONNECTION: HC-SR04P - Grove 6 of Maker UNO RP2040 or GP20 - Echo pin of HC-SR04P GP21 - Trig pin of HC-SR04P AUTHOR : Cytron Technologies Sdn Bhd WEBSITE : www.cytron.io EMAIL : [email protected] REFERENCE: Code adapted from www.HowToMechatronics.com: https://howtomechatronics.com/tutorials/arduino/ultrasonic-sensor-hc-sr04/ */ // defines pins numbers const int echoPin = 20; const int trigPin = 21; // defines variables long duration; int distance; void setup() { pinMode(trigPin, OUTPUT); // Sets the trigPin as an Output pinMode(echoPin, INPUT); // Sets the echoPin as an Input Serial.begin(9600); // Starts the serial communication } void loop() { // Clears the trigPin digitalWrite(trigPin, LOW); delayMicroseconds(2); // Sets the trigPin on HIGH state for 10 micro seconds digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); // Measure the response from the echoPin duration = pulseIn(echoPin, HIGH); // Calculate the distance from duration value // Use 343 metres per second as the speed of sound distance = duration * 0.034 / 2; // Prints the distance on the Serial Monitor Serial.print("Distance : "); Serial.print(distance); Serial.println(" cm"); delay(100); } |
เลือก Verify และ เลือก Upload sketch ไปยัง Maker Uno RP2040 ของคุณ
เปิด Serial Monitor เพื่อรับข้อความแสดงค่าระยะห่างของเซนเซอร์และกล่อง ค่าแสดงประมาณ 28 ซม.
Maker Uno RP2040 มีตัวควบคุม I2C 2 ตัว ที่สามารถใช้งานได้บน พอร์ต Maker และพอร์ต Grove 6
เราจะทดสอบเขียนโปรแกรมแสดงข้อความบนโมดูล OLED SSD1315 โดยเชื่อมต่อโมดูล OLED เข้ากับพอร์ต Grove 6 โดยใช้สายสายเคเบิล female to grove (ขา GP20 สีขาวต่อกับขาสัญญาณ SDA, ขา GP21 สีเหลืองต่อกับขาสัญญาณ SCL, GND สีดำต่อกับขาสัญญาณ GND, 3.3 V สีแดงต่อกับขาสัญญาณ VCC)
เปิดโปรแกรม Arduino IDE และตรวจสอบให้แน่ใจว่าได้เลือกบอร์ดและพอร์ต COM ที่ถูกต้อง แล้วโค้ดตามนี้
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
/* DESCRIPTION: This example code will demonstrate how to use Maker UNO RP2040 with OLED Display SSD1315 to display text. CONNECTION: Grove 6 of Maker UNO RP2040 - OLED Display SSD1315 Grove GP20 - SDA GP21 - SCL AUTHOR : Cytron Technologies Sdn Bhd WEBSITE : www.cytron.io EMAIL : [email protected] REFERENCE: Code adapted from: https://wiki.seeedstudio.com/Grove-OLED-Display-0.96-SSD1315/ */ #include <Arduino.h> #include <U8g2lib.h> #ifdef U8X8_HAVE_HW_SPI #include <SPI.h> #endif #ifdef U8X8_HAVE_HW_I2C #include <Wire.h> #endif U8G2_SSD1306_128X64_NONAME_F_SW_I2C u8g2(U8G2_R0, /* clock(SCL)*/ SCL, /*data(SDA)*/ SDA, /* reset=*/ U8X8_PIN_NONE); void setup(void) { u8g2.begin(); } void loop(void) { u8g2.clearBuffer(); u8g2.setFont(u8g2_font_ncenB08_tr); // Adjusted coordinates for better positioning u8g2.drawStr(5, 15, "Hello"); u8g2.drawStr(5, 30, "Cnx-Software"); u8g2.sendBuffer(); delay(1000); } |
เลือก Verify และเลือก Upload sketch ไปยัง Maker Uno RP2040 แต่สิ่งที่ได้คือ “Compitation error: u8g2lib.: No cuch file or directory”
เราจึงต้องไป ดาวน์โหลด Library U8g2 แล้วเรากลับไปที่ดูที่โค้ดอีกครั้ง เลือก Verify และเลือก Upload sketch แต่ไม่มีข้อความปรากฎบนหน้าจอ ซึ่งโค้ดทุกอย่างถูกต้อง ฉันจึงไปหาโมดูล OLED อันเก่าที่ฉันมีอยู่ และผลลัพธ์ที่ได้คือ โมดูล OLED จะแสดง “Hello” ในบรรทัดแรกและ “Cnx-Software” ในบรรทัดที่สอง
การเริ่มต้นใช้งานบอร์ด Maker Uno RP2040 บนโปรแกรม Arduino IDE ทดสอบการเขียนโปรแกรม Blink ไฟกระพริบ, ไฟ LED แบบ RGB, กดปุ่มไฟติด, buzzer ทำให้มีเสียง, ใช้งานร่วมกับ Micro Servo Motor เพื่อทดสอบการหมุนของเซอร์โวมอเตอร์, การอ่านค่าเซนเซอร์ด้วย Maker Soil Module วัดความชื้นในแก้วน้ำ, การอ่านค่าเซนเซอร์วัดระยะห่างวัดถุด้วยโมดูลเซนเซอร์ Ultrasonic HC-SR04, แสดงข้อความบนโมดูล OLED SSD1315 ผ่านพิน I2C, สามารถนำไปใช้งานได้ง่าย สะดวก ไม่ซับซ้อนพร้อมมี Tutorials บทช่วยสอนที่มีคำแนะนำวิธีการติดตั้งและตัวอย่างการใช้งานอย่างละเอียด เหมาะสำหรับเหมาะสำหรับผู้เริ่มต้นใช้งานในการศึกษา ไม่เพียงเท่านั้นคุณยังสามารถนำไปต่อยอด ใช้บอร์ดร่วมกับอุปกรณ์เสริมที่มีประโยชน์อื่นๆ เพื่อยกระดับประสบการณ์การเรียนรู้และจุดประกายความคิดสร้างสรรค์ในระดับสูงต่อไปได้
ขอขอบคุณ Cytron ที่ส่งชุด Maker Uno RP2040 kid มาให้เราได้ทำการรีวิว สามารถซื้อบอร์ด Maker Uno RP2040 ราคาประมาณ 500฿, Maker Soil Moisture Sensor ราคา 160฿, HC-SR04 Ultrasonic Sensor ราคาประมาณ 30฿, SG90 Micro Servo ราคา 58฿, OLED I2C 0.96Inch 128×64 Blue Display ราคา 190฿ บนเว็ปไซด์ของ Cytron (Thailand)
บรรณาธิการข่าวและบทความภาษาไทย CNX Software ได้มีความสนใจในด้านเทคโนโลยี โดยเฉพาะ Smart Home และ IoT