ขั้นตอนการติดตั้งชุดพัฒนาโปรแกรม ESP32 สำหรับ Arduino IDE
Review Breadboard Power Supply
ทำความรู้จักและใช้งานโมดูลจ่ายไฟสำหรับแผงต่อวงจร หรือ Breadboard ที่มีไว้เพื่อการทดสอบวงจรนั้นเองโดยในที่นี้จะแนะนำ การใช้งานสินคา้จากประเทศจีน ซึ่งสามารถหากซื้อได้ในราคาถูกมากเลยทีเดียวไม่ว่า จะเป็นการสั่งซื้อจากร้านค้าภายในประเทศ หรือการสั่ง จากเว็ป สั่งสินค้าอย่าง aliexpress.com ดังตัวอย่างที่แสดงไว้ดังรูป ซึ่งจะเป็ น 2รุ่นที่จะพูดถึงในครั้งนี้
การเปลี่ยน XTAL สำหรับบอร์ด PIC-331 Series
บอร์ดไมโครคอนโทรลเลอร์รุ่น PIC-331 Series จะมี XTAL 20.0MHz มาให้เป็น
ค่ามาตรฐาน แต่ด้วยบอร์ดไมโครคอนโทรลเลอร์นี้ สามารถเลือกเปลี่ยนชิพได้หลาก
หลายเบอร์ อีกทั้งบางโปรเจ็คต้องการทดสอบที่ความถี่ใช้งานที่แตกต่างกันออกไป
การจะใช้วิธีถอดเปลี่ยน XTAL สำหรับ PCB แบบสองหน้า หรือ PTH ก็อาจดูไม่ง่าย
นักสำหรับนักพัฒนาบางท่าน ดังนั้นบทความตอนนี้จะนำเสนอ วิธีการที่จะช่วยให้
การเปลี่ยนความถี่ XTAL ของบอร์ดรุ่นนี้ให้ง่ายขึ้น โดยไม่ต้องถอด XTAL เดิมออก
ดังนี้
AVR-AP1 Upload cable by USB to UART
ปกติบอร์ด AVR-AP1 สามารถโหลดโปรแกรมผ่านพอร์ต RS232 ซึ่งได้เตรียมไว้ภายในบอร์ดแล้ว แต่อย่างไรก็ดี หากเราไม่มีสาย RS232 เราสามารถประยุกต์ใช้สายแปลงสัญญาณ USB to UART โดยในที่นี้ใช้เป็นโมดูลที่ใช้ชิพ CH340 ซึ่งมีราคาค่อนข้างต่ำและหาได้ง่ายในท้องตลาดมาทำเป็นสาย Upload program เพื่อโหลดโปรแกรมผ่าน Arduino IDE ได้
Arduino IDE Setup for ESP8266
การพัฒนาโปรแกรม ESP8266 ด้วย Arduino IDE จำเป็นต้องติดตั้งไลบรารีบอร์ดเพิ่มเติม โดยจะแสดงขั้นตอนการติดตั้งด้วย Board Manager
ไขปัญหาการใช้งานพอร์ต SPI ของบอร์ด PIC-331
AVR-AP1 Microcontroller Board
บอร์ดประยุกต์การใช้งานไมโครคอนโทรลเลอร์ AVR สามารถรองรับการใช้งานกับชิพไมโครคอนโทรลเลอร์ขนาด 28 ขา (PDIP-28) ออกแบบให้มีวงจรรับสัญญาณอินพุตดิจิตอลผ่านวงจรออปโต้ไอโซเลเตอร์และมีรีเลย์เอาต์พุต เหมาะสำหรับนำไปประยุกต์ใช้งานระบบควบคุมขนาดเล็กได้อย่างลงตัว สะดวกต่อการพัฒนาโปรแกรมด้วย Arduino IDE
แนะนำบอร์ดไมโครคอนโทรลเลอร์ AVR-AP1
ทดสอบ Upload program ให้กับบอร์ด AVR-AP1
ตัวอย่างโปรแกรม
1.โปรแกรม RELAY_0 ติด-ดับ สลับกันทุก 1 วินาที
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 |
/****************************************************************************** Project Blink_Relay0 Description Blinking output relay 0 Programmer Mr.Ukrit Tantasutanon Date 2015-08-22 Hardware AVR-AP1 (MCU=ATmega328, XTAL=8.0Mhz, Vcc=3.3V) I/O interface RELAY_0 = Pin 8 ****************************************************************************** MICRO RESEARCH TECHNOLOGY LTD.,PART , www.micro-research.co.th ******************************************************************************/ #define BUZZER 4 #define RELAY_0 8 #define RELAY_1 5 #define RELAY_2 6 #define RELAY_3 7 // the setup function runs once when you press reset or power the board void setup() { // initialize digital pin 13 as an output. pinMode(BUZZER, OUTPUT); pinMode(RELAY_0, OUTPUT); pinMode(RELAY_1, OUTPUT); pinMode(RELAY_2, OUTPUT); pinMode(RELAY_3, OUTPUT); } // the loop function runs over and over again forever void loop() { digitalWrite(RELAY_0, HIGH); // turn the LED on (HIGH is the voltage level) delay(1000); // wait for a second digitalWrite(RELAY_0, LOW); // turn the LED off by making the voltage LOW delay(1000); // wait for a second } |
Note: จากโปรแกรมตัวอย่างสามารถอ้างอิงการใช้งานเอาต์พุตอื่นได้จากชื่อที่ define ไว้แล้ว เช่น RELAY_1, RELAY_2, RELAY_3 และ BUZZER เป็นต้น
ขั้นตอนการดาวโหลดโปรแกรม SST89E516RD2
ไมโครคอนโทรลเลอร์ตระกูล MCS-51 นั้นได้รับความนิยมมายาวนาน สำหรับเบอร์ไมโครคอนโทรลเลอร์ที่ได้รับความนิยมมาก คือ P89V51RD2 ของบริษัท NXP (Philips เดิม) แต่ด้วยปัจจุบันนี้ บริษัทดังกล่าวได้หยุดสายการผลิตชิพเบอร์นี้ไปแล้ว
อย่างไรก็ดี ยังมีทางเลือกใหม่สำหรับนักพัฒนาไมโครคอนโทรลเลอร์ MCS-51 โดยจะนำเสนอเป็นชิพไมโครคอนโทรลเลอร์ที่มีคุณสมบัติเทียบเท่าเบอร์เดิมคือ P89V51RD2 มาเป็นเบอร์ SST89E516RD / SST89E516RD2 เป็นของบริษัท SST เดิม และปัจจุบันได้รวมเป็นส่วนหนึ่งของบริษัทใหญ่คือ Microchip แล้วนั้นเอง
ชิพไมโครคอนโทรลเลอร์นี้ ยังคงมีความสามารถในการโปรแกรมแบบ ISP หรือ In-System Programming ผ่านพอร์ตสื่อสารอนุกรม หากแต่โปรแกรมที่ใช้งานนั้นแตกต่างกัน โดยจะใช้เป็นโปรแกรมที่ชื่อว่า SSTFlashFlex51
VDO แสดงขั้นตอนการดาวโหลดโปรแกรม SST89E516RD
บอร์ดไมโครคอนโทรลเลอร์รุ่น MCS-331A
บอร์ดไมโครคอนโทรลเลอร์รุ่น MAP-101
EXI-16IO Series : Arduino sample code
ตัวอย่างโปรแกรมการใช้งานบอร์ด EXI-16IO Series ซึ่งเป็นบอร์ดขยาย IO จำนวน 16 บิต ด้วยชิพ MCP23017 โดยจัดวงจรให้ขยาย Input แบบ Opto-Isolator ขนาด 8 ช่อง และ Output relay ขนาด 8 ช่อง ผ่านการสื่อสารแบบ I2C Bus ด้วยสานสัญญาณเพียง 2 เส้น (SDA,SCL) และยังสามารถกำหนด Address ให้กับบอร์ดได้ เพื่อให้สามารถใช้งานบอร์ดได้พร้อมกันถึง 8 บอร์ด
Hardware Interface , I2C Bus
ตัวอย่างการเชื่อมต่อกับบอร์ดไมโครคอนโทรลเลอร์ รุ่น AVR-AP2 กับ EXO-16IO
Hardware I/O assignment
- GPA 0..7 = Relay output
- GPB 0..7 = Input opto-isolator
Arduino Sample Code
โดยในตัวอย่างนี้เป็นโค็ดสำหรับ Arduino ร่วมกับไลบรารีของ Adafruit_MCP23017
Library download link :
https://github.com/adafruit/Adafruit-MCP23017-Arduino-Library
ตัวอย่างโปรแกรม
1. Toggle_GPA0 , โปรแกรมควบคุมให้ Relay output ช่องแรก ON/OFF สลับกัน ทุกๆ 1 วินาที
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 |
/****************************************************************************** Project Toggle_GPA0 Description Toggle GPA bit-0 , Blink LED Programmer Mr.Ukrit Tantasutanon Date 2015-08-22 Hardware AVR-AP2 (MCU=ATmega328, XTAL=16.0Mhz, Vcc=5.0V) I/O interface LED = GPA-0 SDA,SCL = I2C Bus interface to MCP23017 Libraries Wire , Adafruit_MCP23017 ****************************************************************************** MICRO RESEARCH TECHNOLOGY LTD.,PART , www.micro-research.co.th ******************************************************************************/ #include <Wire.h> #include "Adafruit_MCP23017.h" Adafruit_MCP23017 mcp; void setup() { mcp.begin(); // Use default address 0 mcp.pinMode(0, OUTPUT); // Set pin to output mode } void loop() { delay(1000); mcp.digitalWrite(0, HIGH); delay(1000); mcp.digitalWrite(0, LOW); } |
2. GPA_Moving_Relay , โปรแกรมควบคุมให้ Relay ทำงานทีละตัว แบบเรียงกันไปจนครบทั้ง 8 ตัว และวนซ้ำเรื่อยไป
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 |
/****************************************************************************** Project GPA_Moving_Relay Description 8 Bit LED moving on GPB-IO port Programmer Mr.Ukrit Tantasutanon Date 2015-08-22 Hardware AVR-AP2 (MCU=ATmega328, XTAL=16.0Mhz, Vcc=5.0V) I/O interface Output Relay= GPA-IO , 8 Bit SDA,SCL = I2C Bus interface to MCP23017 Libraries Wire , Adafruit_MCP23017 ****************************************************************************** MICRO RESEARCH TECHNOLOGY LTD.,PART , www.micro-research.co.th ******************************************************************************/ #include <Wire.h> #include "Adafruit_MCP23017.h" Adafruit_MCP23017 mcp; unsigned int GPIO_BA; unsigned char Output_GPA=0x01; unsigned char Input_GPB; void setup() { unsigned char i; mcp.begin(); // Use default address 0 for (i=0;i<=7;i++) mcp.pinMode(i, OUTPUT); // Set pin to output mode for GPA } void loop() { GPIO_BA = (unsigned int)(Input_GPB)<<8 | Output_GPA; mcp.writeGPIOAB(GPIO_BA); if (Output_GPA==0x80) Output_GPA=0x01; else Output_GPA<<=1; delay(500); } |
3. GPB_input_to_GPA_output , โปรแกรมอ่านสัญญาณอิพุตจาก Opto-Isolator แล้วส่งค่าออกไปยัง Relay output ทันที
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 |
/****************************************************************************** Project GPB_input_to_GPA_output Description Read input from GPB port then send output to GPA port Programmer Mr.Ukrit Tantasutanon Date 2015-08-22 Hardware AVR-AP2 (MCU=ATmega328, XTAL=16.0Mhz, Vcc=5.0V) I/O interface Input port = GPB-IO , 8 Bit Output Relay= GPA-IO , 8 Bit SDA,SCL = I2C Bus interface to MCP23017 Libraries Wire , Adafruit_MCP23017 ****************************************************************************** MICRO RESEARCH TECHNOLOGY LTD.,PART , www.micro-research.co.th ******************************************************************************/ #include <Wire.h> #include "Adafruit_MCP23017.h" Adafruit_MCP23017 mcp; unsigned int GPIO_BA; unsigned char Output_GPA; unsigned char Input_GPB; void setup() { unsigned char i; mcp.begin(); // Use default address 0 for (i=0;i<=7;i++) mcp.pinMode(i, OUTPUT); // Set pin to output mode for GPA } void loop() { // Read a single port, A or B, and return its current 8 bit value. // Parameter b should be 0 for GPIOA, and 1 for GPIOB. Input_GPB = mcp.readGPIO(1); // Invert active low input signal to active high relay output Output_GPA = ~Input_GPB; GPIO_BA = (unsigned int)(Input_GPB)<<8 | Output_GPA; mcp.writeGPIOAB(GPIO_BA); delay(10); } |