Trong phần này các bạn sẽ thực hành qua 9 bài tập cơ bản sau: • BÀI TẬP 1: CÀI ĐẶT CÔNG CỤ PHẦN MỀM. • BÀI TẬP 2: BẬT SÁNG LED KẾT NỐI VỚI GPIO. • BÀI TẬP 3: ĐỌC TRẠNG THÁI CHÂN GPIO. • BÀI TẬP 4: TẠO HÀM DELAY VỚI SYSTEM TIMER. • BÀI TẬP 5: GIAO DIỆN SPI. • BÀI TẬP 6: GIAO DIỆN I2C. • BÀI TẬP 7: THỰC HÀNH VỚI LCD 16X2. • BÀI TẬP 8: ĐIỀU KHIỂN ĐỘNG CƠ. 8.1: TỔNG QUAN CÁC LOẠI ĐỘNG CƠ 8.2: ĐIỀU KHIỂN ĐỘNG CƠ BƯỚC ĐƠN CỰC 8.3: ĐIỀU KHIỂN ĐỘNG CƠ SERVO VỚI STM32 • BÀI TẬP 9: GIAO TIẾP MÔ ĐUN BLUETOOTH VỚI STM32 Sau đây chúng ta lần lượt thưc hành với các hướng dẫn chi tiết trình bày trong mỗi bài tập.
Trường đại học cơng nghệ Đồng Nai Khóa luận tốt nghiệp K13: (2017 – 2021) PHỤ LỤC: BÀI TẬP THỰC HÀNH VỚI ARM Chúng ta tìm hiểu lý thuyết ARM qua chương Còn nhiều chủ đề ARM mà người cần phải tìm hiểu đọc vi xử lý hay vi điều khiển như: Tổ chức nhớ ghi; Truyền thông ( giao tiếp UART); Điều khiển LED ma trận; Oled; Ngắt STM32; Điều chế độ rộng xung Chỉ có tập giúp bạn đọc hiểu rõ phần lý thuyết khơ khan trình bày Trong phần bạn thực hành qua tập sau: BÀI TẬP 1: CÀI ĐẶT CÔNG CỤ PHẦN MỀM BÀI TẬP 2: BẬT SÁNG LED KẾT NỐI VỚI GPIO BÀI TẬP 3: ĐỌC TRẠNG THÁI CHÂN GPIO BÀI TẬP 4: TẠO HÀM DELAY VỚI SYSTEM TIMER BÀI TẬP 5: GIAO DIỆN SPI BÀI TẬP 6: GIAO DIỆN I2C BÀI TẬP 7: THỰC HÀNH VỚI LCD 16X2 BÀI TẬP 8: ĐIỀU KHIỂN ĐỘNG CƠ 8.1: TỔNG QUAN CÁC LOẠI ĐỘNG CƠ 8.2: ĐIỀU KHIỂN ĐỘNG CƠ BƯỚC ĐƠN CỰC 8.3: ĐIỀU KHIỂN ĐỘNG CƠ SERVO VỚI STM32 BÀI TẬP 9: GIAO TIẾP MÔ ĐUN BLUETOOTH VỚI STM32 Sau thưc hành với hướng dẫn chi tiết trình bày tập Đề tài: Thiết kế kít thí nghiệm vi điều khiển ST Page | Trường đại học cơng nghệ Đồng Nai Khóa luận tốt nghiệp K13: (2017 – 2021) BÀI TẬP 1: CÀI ĐẶT CÔNG CỤ PHẦN MỀM 1.1 Thư viện STM32 LL Thư viện STM32 LOW LEVEL (LL) thư viện để lập trình sêri STM32 Thư viện LL cung cấp lớp hướng tới chuyên gia với kích thước nhẹ tốc độ nhanh, lớp gần với phần cứng so với thư viện lớp trừu tượng phần cứng (HAL) LL HAL bổ sung bao gồm loạt yêu cầu ứng dụng Bạn trộn chương trình LL với chương trình HAL Bạn chọn cách sử lý thiết bị ngoại vi, tức với LL HAL Ví dụ: bạn sử dụng LL cho thiết bị ngoại vi nhỏ gọn GPIO UART sử dụng HAL cho thiết bị ngoại vi cần cấu hình phần mềm nặng USB Ethernet Thư viện LL sử dụng chế độ độc lập (không có thư viện HAL) Thư viện LL hoạt động cách viết trực tiếp vào ghi ngoại vi, chương trình hiệu gọn Thư viện LL thay thư viện ngoại vi chuẩn (SPL), bị ngưng sử dụng ST Mặt khác, thư viện HAL hiệu thư viện LL, cho phép di chuyển chương trình dễ dàng dịng STM32 khác Cả LL HAL tạo cách sử dụng STM32cubeMX 1.2 STM32F103 STM32F103 vi điều khiển 32 bit STMicroelectronics, dựa xử lý ARM cortex-M3 Tốc độ xung nhịp xử lý lên tới 72 Mhz Nó có nhớ flash 64 Kbyte 20 Kbyte SRAM Có số bo phát triển cho vi điều khiển có sẵn thị trường Đề tài: Thiết kế kít thí nghiệm vi điều khiển ST Page | Trường đại học cơng nghệ Đồng Nai Khóa luận tốt nghiệp K13: (2017 – 2021) Trong hướng dẫn sử dụng bo phát triển STM32 Blue pill, hình trang bên Nó có 40 chân phù hợp với bảng mạch Nó có ADC 12 bit, định (timer) lên đến giao diện truyền thông (3 x USART, x I2C, x SPI, x CAN, x USB) Đề tài: Thiết kế kít thí nghiệm vi điều khiển ST Page | Trường đại học cơng nghệ Đồng Nai Khóa luận tốt nghiệp K13: (2017 – 2021) BÀI TẬP 2: BẬT SÁNG LED KẾT NỐI VỚI GPIO 2.1 GIPO TRONG STM32F103 STM32F103 GPIO chân chung cấu hình làm đầu vào đầu Trong hướng dẫn này, tơi giải thích cách sử dụng STM32F103 GPIO để điều khiển bật/tắt đèn LED STM32F103 GPIO cấu hình chế độ khác (chế độ đầu vào, chế độ đầu ra, chế độ đầu vào tương tự chế độ chức thay thế) Để điều khiển bật / tắt đèn LED, cần định cấu hình chân GPIO chế độ đầu 2.2 Chế độ đầu GPIO Có chế độ đầu cho GPIO, đầu mở cống đầu đẩy-kéo Điện áp logic STM32F103 GPIO 3,3V, điện áp đầu chân 3,3V Đây đặc điểm chân GPIO cấu hình chế độ đầu ra: Hình 2.1 Đây đặc điểm chân gpio cấu hình chế độ đầu Đề tài: Thiết kế kít thí nghiệm vi điều khiển ST Page | Trường đại học cơng nghệ Đồng Nai Khóa luận tốt nghiệp K13: (2017 – 2021) Driver đầu bật Trong chế độ thoát mở, “0” ghi liệu đầu kích hoạt N-MOS “1” ghi liệu đầu rời cổng trạng thái Hi-Z (P-MOS khơng kích hoạt chế độ thoát nước mở) Trong chế độ đẩy-kéo, “0” ghi liệu đầu kích hoạt N-MOS “1” ghi liệu đầu kích hoạt P-MOS Đầu vào kích hoạt schmitt kích hoạt Điện trở kéo lên kéo xuống yếu bị vơ hiệu hóa Dữ liệu diện chân GPIO lấy mẫu vào ghi liệu đầu vào chu kỳ đồng hồ APB2 Truy cập đọc vào ghi liệu đầu vào nhận trạng thái GPIO chế độ thoát mở Một quyền truy cập đọc vào ghi liệu đầu nhận giá trị ghi cuối chế độ push-pull 2.3 Mạch LED Đây mạch LED mà sử dụng hướng dẫn Cấu hình đèn LED hoạt động mức thấp Khi PA0 mức thấp “0”, đèn LED bật Khi PA0 cao “1”, đèn LED tắt Chế độ đầu mà sử dụng chế độ kéo đầu ra, vậy, ghi “0” vào ghi liệu đầu ra, N-MOS bật, đèn LED bật (dịng điện chạy từ Vdd sang Vss thơng qua đèn LED điện trở) Khi ghi “1” vào ghi liệu đầu ra, P-MOS bật, đèn LED tắt (dịng điện khơng thể chạy từ Vdd sang Vdd) Đề tài: Thiết kế kít thí nghiệm vi điều khiển ST Page | Trường đại học cơng nghệ Đồng Nai Khóa luận tốt nghiệp K13: (2017 – 2021) 2.4 CHƯƠNG TRÌNH VÍ DỤ Để cấu hình PA0 chế độ đẩy-kéo đầu ra, phải thực bước sau: Bật đồng hồ ngoại vi cho GPIOA GPIOA kết nối với bus APB2 Khởi tạo GPIOA cách sử dụng cấu trúc GPIO_InitTypeDef Đây mã để làm cho đèn LED nhấp nháy #include "stm32f10x.h" #include "stm32f10x_rcc.h" #include "stm32f10x_gpio.h" void delay(unsigned int nCount); GPIO_InitTypeDef GPIO_InitStruct; int main (void) { // Enable clock for GPIOA RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); // Configure PA0 as push-pull output GPIO_InitStruct.GPIO_Pin = GPIO_Pin_0; GPIO_InitStruct.GPIO_Speed = GPIO_Speed_2MHz; GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_Init(GPIOA, &GPIO_InitStruct); while (1) { /* Toggle LED on PA0 */ // Reset bit will turn on LED (because the logic is interved) GPIO_ResetBits(GPIOA, GPIO_Pin_0); delay(1000); // Set bit will turn off LED (because the logic is interved) GPIO_SetBits(GPIOA, GPIO_Pin_0); delay(1000); } } // Delay function void delay(unsigned int nCount) { unsigned int i, j; for (i = 0; i < nCount; i++) for (j = 0; j < 0x2AFF; j++); } Đề tài: Thiết kế kít thí nghiệm vi điều khiển ST Page | Trường đại học công nghệ Đồng Nai Khóa luận tốt nghiệp K13: (2017 – 2021) Cũng sử dụng chế độ xả mở đầu để điều khiển đèn LED Mạch LED Khi ghi “0” vào ghi liệu đầu ra, N-MOS bật, đèn LED bật (dịng điện chạy từ Vdd sang Vss thông qua đèn LED điện trở) Khi ghi “1” vào ghi liệu đầu ra, PA0 trạng thái Hi-Z (dịng điện khơng thể chạy PA0 Hi-Z / nổi), đèn LED tắt Đề tài: Thiết kế kít thí nghiệm vi điều khiển ST Page | Trường đại học công nghệ Đồng Nai Khóa luận tốt nghiệp K13: (2017 – 2021) BÀI TẬP 3: ĐỌC TRANG THÁI CHÂN GPIO Giải thích cách sử dụng STM32F103 GPIO để đọc nút nhấn STM32F103 GPIO cấu hình chế độ khác (chế độ đầu vào, chế độ đầu ra, chế độ đầu vào tương tự chế độ chức thay thế) Để đọc nút, cần định cấu hình chân GPIO chế độ đầu vào kỹ thuật số 3.1 Chế độ đầu vào GPIO STM32F103 GPIO có chế độ đầu vào kỹ thuật số: đầu vào với kéo lên bên trong, đầu vào với kéo xuống bên đầu vào Điện áp logic STM32 3,3V, điện áp logic cho chân đầu vào GPIO 3,3V, có số chân có khả chịu 5V Chúng ta sử dụng mức logic 5V đến chân đầu vào chịu 5V Bảng cho thấy mức điện áp I / O chân đầu vào STM32F103 Đặc điểm chân GPIO cấu hình chế độ đầu vào thể hình bên Driver đầu bị tắt Đề tài: Thiết kế kít thí nghiệm vi điều khiển ST Page | Trường đại học công nghệ Đồng Nai Khóa luận tốt nghiệp K13: (2017 – 2021) Đầu vào Trigger Schmitt kích hoạt Điện trở kéo lên kéo xuống yếu có kích hoạt hay khơng tùy thuộc vào cấu hình đầu vào (kéo lên, kéo xuống thả nổi) Hình 3.1 Mạch điện nút nhấn Dữ liệu diện chân GPIO lấy mẫu vào ghi liệu đầu vào chu kỳ đồng hồ APB2 Quyền truy cập đọc vào ghi liệu đầu vào đạt trạng thái chân GPIO 3.2 MẠCH ĐIỆN NÚT NHẤN Đây mạch nút cho hướng dẫn Tôi thêm đèn LED mạch để hiển thị trạng thái nút (được nhấn hay không) Đối với chế độ đầu vào GPIO, sử dụng chế độ đầu vào có kéo lên bên trong, mạch nút hoạt động mức thấp (khi nhấn nút, logic ghi liệu đầu vào “0”) Chế độ đầu GPIO cho đèn LED chế độ mở hoạt động mức thấp Đề tài: Thiết kế kít thí nghiệm vi điều khiển ST Page | Trường đại học công nghệ Đồng Nai Khóa luận tốt nghiệp K13: (2017 – 2021) 3.3 CHƯƠNG TRÌNH VÍ DỤ Đây mã ví dụ mục đích mã bật đèn led nhấn nút tắt đèn led không nhấn #include "stm32f10x.h" #include "stm32f10x_rcc.h" #include "stm32f10x_gpio.h" GPIO_InitTypeDef GPIO_InitStruct; int main(void) { // Enable clock for GPIOA RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); // Cofigure PA0 as open-drain output GPIO_InitStruct.GPIO_Pin = GPIO_Pin_0; GPIO_InitStruct.GPIO_Speed = GPIO_Speed_2MHz; GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_OD; GPIO_Init(GPIOA, &GPIO_InitStruct); // Cofigure PA1 as input with internal pull-up resistor GPIO_InitStruct.GPIO_Pin = GPIO_Pin_1; GPIO_InitStruct.GPIO_Speed = GPIO_Speed_2MHz; GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IPU; GPIO_Init(GPIOA, &GPIO_InitStruct); while (1) { // If button on PA1 is pressed (button circuit is active low) if (!(GPIO_ReadInputData(GPIOA) & GPIO_Pin_1)) { // Turn on LED on PA0 (LED circuit is active low) GPIO_ResetBits(GPIOA, GPIO_Pin_0); } else { // Turn off LED on PA0 GPIO_SetBits(GPIOA, GPIO_Pin_0); } } } Đề tài: Thiết kế kít thí nghiệm vi điều khiển ST Page | 10 Trường đại học công nghệ Đồng Nai Khóa luận tốt nghiệp K13: (2017 – 2021) Chúng sử dụng chiết áp Chiết áp bên phải sử dụng để thay đổi độ tương phản hình LCD Nó có ba chân, chân trái + 5V chân phải GND chân kết nối với V0 hình LCD Chiết áp bên trái sử dụng để thay đổi vị trí trục động servo cách điều khiển điện áp đầu vào tương tự, chân trái có đầu vào 3,3V bên phải có GND đầu trung tâm kết nối với (PA3) STM32 Lập trình STM32 cho Động Servo Giống hướng dẫn trước chúng tôi, chúng tơi lập trình STM32F103C8 với Arduino IDE thơng qua cổng USB mà không cần sử dụng lập trình FTDI Chúng ta tiến hành lập trình giống Arduino Mã hồn chỉnh đưa bên kết thúc dự án Đầu tiên, bao gồm tệp thư viện cho chức servo LCD: #include Đề tài: Thiết kế kít thí nghiệm vi điều khiển ST Page | 142 Trường đại học cơng nghệ Đồng Nai Khóa luận tốt nghiệp K13: (2017 – 2021) #include Sau khai báo chân cho hình LCD khởi tạo Cũng khai báo số biến khác cho PWM chiết áp: const int rs = PB0, en = PB1, d4 = PB10 , d5 = PB11 , d6 = PC13, d7 = PC14; LiquidCrystal lcd(rs,en,d4,d5,d6,d7); int servoPin = PA0; int potPin = PA3; Ở tạo servo biến với kiểu liệu Servo gắn vào chân PWM khai báo trước Servo servo; servo.attach(servoPin); Sau đọc giá trị Analog từ chân PA3 chân ADC chuyển đổi điện áp tương tự (0-3.3) thành dạng kỹ thuật số (0-4095) analogRead(potPin); Vì đầu kỹ thuật số có độ phân giải 12-bit, cần lấy giá trị phạm vi độ (0-170), chia giá trị ADC (0-4096) theo góc tối đa 170 độ nên chia cho 24 angle = (reading/24); Câu lệnh làm cho động servo quay trục theo góc cho servo.write(angle); Đề tài: Thiết kế kít thí nghiệm vi điều khiển ST Page | 143 Trường đại học công nghệ Đồng Nai Khóa luận tốt nghiệp K13: (2017 – 2021) CHƯƠNG TRÌNH ĐIỀU KHIỂN #include //including servo library #include //including LCD display library const int rs = PB0, en = PB1, d4 = PB10 , d5 = PB11 , d6 = PC13, d7 = PC14; //declaring pin names and pin numbers of lcd int servoPin = PA0; int potPin = PA3; Servo servo; //declare and initialize pin for servo output PWM //potentiometer ADC input // creating variable servo with datatype Servo void setup() { lcd.begin(16,2); //setting lcd as 16x2 lcd.setCursor(0,0); //setting cursor at first row and first column lcd.print("CIRCUIT DIGEST"); //puts CIRCUIT DIGEST in LCD lcd.setCursor(0,1); //setting cursor at second row and first column lcd.print("SERVO WITH STM32"); //puts SERVO WITH STM32 in LCD delay(3000); lcd.clear(); // delays for seconds //clears lcd display servo.attach(servoPin); //it connects pin PA0 with motor as control feedback by providing pulses } void loop() { lcd.clear(); //clears lcd Đề tài: Thiết kế kít thí nghiệm vi điều khiển ST Page | 144 Trường đại học công nghệ Đồng Nai int angle; int reading; reading = analogRead(potPin); Khóa luận tốt nghiệp K13: (2017 – 2021) //declare varible angle as int //declare varible reading as int //read analog value from pin PA3 angle = (reading/24); //it divides ADC the value according to max angle 170 deg servo.write(angle); //it puts angle value at servo lcd.setCursor(0,0); //setting cursor at first row and first column lcd.print("ANGLE:"); lcd.print(angle); delay(100); //puts ANGLE in LCD //puts value at angle //delay in time } Đề tài: Thiết kế kít thí nghiệm vi điều khiển ST Page | 145 Trường đại học công nghệ Đồng Nai Khóa luận tốt nghiệp K13: (2017 – 2021) BÀI TẬP 9: GIAO TIẾP MÔ ĐUN BLUETOOTH VỚI STM32 Trong giới ngày Bluetooth trở nên phổ biến hầu hết thiết bị điện thoại di động, máy tính xách tay hệ thống thơng tin giải trí tơ sử dụng Bluetooth để giao tiếp không dây Bluetooth không sử dụng để truyền liệu mà để điều khiển không dây thiết bị Bluetooth khác, sử dụng tai nghe Bluetooth, bạn nghe hát khơng dây từ điện thoại di động sử dụng hệ thống âm tô để phát hát từ điện thoại di động Bluetooth cơng nghệ khơng dây hoạt động tần số 2.4GHz Tín hiệu Bluetooth bình thường nằm phạm vi bán kính 10 mét Bluetooth công nghệ không dây sử dụng phổ biến dự án nhúng với điều kiện phạm vi giao tiếp bị hạn chế Bluetooth có thêm ưu điểm tiêu thụ điện thấp chi phí vận hành thấp Nó thường sử dụng để giao tiếp vi điều khiển với Điện thoại thông minh cách sử dụng ứng dụng Bluetooth Chúng thấy giao tiếp mô-đun Bluetooth với vi điều khiển khác Arduino, 8051, PIC, v.v Bây hướng dẫn này, giao diện mô-đun Bluetooth HC-05 với STM32F103C8 BẬT / TẮT đèn LED thiết bị di động Android Đề tài: Thiết kế kít thí nghiệm vi điều khiển ST Page | 146 Trường đại học cơng nghệ Đồng Nai Khóa luận tốt nghiệp K13: (2017 – 2021) LINH KIỆN CẦN THIẾT STM32F103C8 Mô-đun Bluetooth (HC-05) Đèn LED Điện thoại di động Android Breadboard Kết nối dây Phần mềm: Thiết bị đầu cuối Bluetooth (Ứng dụng Android) MƠ-ĐUN BLUETOOTH (HC-05) Nó chủ yếu sử dụng mơ-đun Bluetooth dự án nhúng Nó mô-đun Bluetooth nối tiếp sử dụng giao tiếp nối tiếp có phạm vi 100m hoạt động 5V (tối thiểu 3,3V) Nó sử dụng để kết nối không dây hai vi điều khiển với điện thoại di động máy tính xách tay Vì có nhiều ứng dụng android nên hữu ích để tạo dự án điều khiển Bluetooth khơng dây.Nó sử dụng giao tiếp USART giao tiếp với vi điều khiển có giao thức truyền thơng USART.Nó có ăng-ten tích hợp Nó có cấu hình Master / Slave thay đổi chế độ lệnh AT, hữu ích thiết bị gửi liệu (master đến slave) từ PC (MASTER) đến slave (MCU bất kỳ) Một thiết bị kết nối với thiết bị khác thiết bị phụ khơng kết nối với kết nối khác ngồi thiết bị Các chế độ hoạt động Nó có hai chế độ AT Command Mode & Data Mode Khi Bluetooth bật, chuyển sang chế độ liệu mặc định Chế độ sử dụng để truyền liệu Để vào chế độ AT Command khởi động, cần nhấn vào nút diện mô-đun để thay đổi cài đặt mặc định mơ-đun cấu hình / phụ Đề tài: Thiết kế kít thí nghiệm vi điều khiển ST Page | 147 Trường đại học công nghệ Đồng Nai Khóa luận tốt nghiệp K13: (2017 – 2021) Các chân Mô-đun Bluetooth Chân EN (BẬT) - Chân sử dụng để đặt Chế độ Dữ liệu Chế độ Lệnh AT Theo mặc định, chế độ DATA MODE Khi nhấn nút khởi động, chuyển sang chế độ lệnh AT + Chân 5V - Chân sử dụng để cấp nguồn cho mô-đun Chân GND - Chân sử dụng để nối đất cho mô-đun Chân TX - Chân để kết nối với chân RX MCU Chân RX - Chân kết nối với chân TX MCU STATE - Chân cho biết trạng thái mô-đun, xem bên báo Chỉ báo LED Nó có báo led (đỏ) cung cấp trạng thái mô-đun bluetooth Khi mô-đun bluetooth không kết nối với thiết bị nào, tín hiệu mức thấp đèn led màu đỏ nhấp nháy liên tục cho biết mô-đun không cặp Khi mô-đun bluetooth kết nối với thiết bị nào, tín hiệu mức cao đèn led màu đỏ nhấp nháy kèm theo số độ trễ cho biết mơ-đun cặp Đề tài: Thiết kế kít thí nghiệm vi điều khiển ST Page | 148 Trường đại học cơng nghệ Đồng Nai Khóa luận tốt nghiệp K13: (2017 – 2021) CỔNG USART STM32 Các cổng giao tiếp nối tiếp USART STM32F103C8 (BLUE PILL) hiển thị hình ảnh chân bên Đây màu xanh lam có (PA9TX1, PA10- RX1, PA2-TX2, PA3- RX2, PB10-TX3, PB11- RX3) Nó có ba kênh liên lạc SƠ ĐỒ MẠCH VÀ KẾT NỐI Các kết nối mạch để giao tiếp Mô-đun Bluetooth với STM32 thực Kết nối STM32F103C8 mô-đun Bluetooth (HC-05) Chân TX (PA9) STM32F103C8 kết nối với chân RX mô-đun Bluetooth Đề tài: Thiết kế kít thí nghiệm vi điều khiển ST Page | 149 Trường đại học cơng nghệ Đồng Nai Khóa luận tốt nghiệp K13: (2017 – 2021) Chân RX (PA10) STM32F103C8 kết nối với chân TX mô-đun Bluetooth Chân VCC (+ 5V) mô-đun Bluetooth kết nối với chân 5V STM32F103C8 Chân GND mô-đun Bluetooth kết nối với chân GND STM32F103C8 Các kết nối khác Chân (PA0) STM32 (Blue Pill) kết nối với chân dương đèn LED thông qua điện trở nối tiếp Đèn LED sử dụng màu hỗn hợp Đã dẫn chân khác kết nối với GND STM32 Lập trình STM32F103C8 Giao tiếp Bluetooth với STM32 giống arduino lập trình STM32 giống Arduino IDE Xem hướng dẫn để lập trình STM32 với USB Arduino IDE Đề tài: Thiết kế kít thí nghiệm vi điều khiển ST Page | 150 Trường đại học cơng nghệ Đồng Nai Khóa luận tốt nghiệp K13: (2017 – 2021) Như nói, dự án này, giao diện mô-đun Bluetooth (HC-05) với STM32F103C8 sử dụng Điện thoại thông minh Android có ứng dụng Android Terminal Bluetooth để BẬT TẮT đèn LED Lưu ý: Phải tháo chân RX & TX tải mã lên STM32F103C8 Mã hoàn chỉnh cho dự án đưa cuối hướng dẫn với Video trình diễn Mã hóa cho dự án đơn giản Có thể sử dụng mã Arduino tương tự nên thay đổi mã pin Bởi chúng tơi có ba chân USART STM32F103C8, chúng tơi phải định chân cắm mà sử dụng để kết nối mô-đun Bluetooth Đầu tiên cần đặt tên cho chân với số chân tương ứng với kiểu liệu int sau const int pinout = PA0; Tiếp theo, cần có biến để lưu trữ liệu nối tiếp từ điện thoại di động Android Dữ liệu ký tự số nguyên sau char inputdata = 0; Tiếp theo void setup (), phải bắt đầu giao tiếp nối tiếp STM32 Blue Pill mô-đun Bluetooth cách cho tốc độ truyền 9600 Serial1.begin (9600); Chúng sử dụng Serial1 chúng tơi kết nối HC-05 với TX1 RX1 STM32 Đề tài: Thiết kế kít thí nghiệm vi điều khiển ST Page | 151 Trường đại học cơng nghệ Đồng Nai Khóa luận tốt nghiệp K13: (2017 – 2021) Chúng ta sử dụng Serial2 Serial3 theo chân phải kết nối Một tin nhắn giới thiệu gửi dạng liệu nối tiếp tới serial1, tức tới mô-đun Bluetooth HC05 Mô-đun tiếp tục gửi liệu đến ứng dụng Bluetooth Terminal điện thoại di động Android Vì vậy, chúng tơi sử dụng câu lệnh Serial1.print ("STK BOOKS \ n"); Serial1.print ("BLUETOOTH VOI STM32 \ n"); Tiếp theo, cần đặt pinmode (PA0) làm đầu ra, kết nối dẫn đến chân Vì sử dụng pinMode (pinout, OUTPUT); Tiếp theo vòng lặp void (), chạy liệu sau để đọc liệu nối tiếp bật / tắt đèn LED cho phù hợp void loop() { If (Serial1.available() > 0) { inputdata = Serial1.read(); if(inputdata == '1') { digitalWrite(pinout, HIGH); Serial1.print("LED ON\n"); } else if(inputdata == '0') { digitalWrite(pinout, LOW); Đề tài: Thiết kế kít thí nghiệm vi điều khiển ST Page | 152 Trường đại học cơng nghệ Đồng Nai Khóa luận tốt nghiệp K13: (2017 – 2021) Serial1.print("LED OFF\n"); } } } Ở sử dụng tuyên bố mã thực thi cổng Serial1 có liệu nhận từ mô-đun Bluetooth tuyên bố sử dụng Serial1.available ()> Ngược lại, khơng vào được, đợi bắt đầu giao tiếp nối tiếp Bây lưu trữ liệu nhận inputdata biến = Serial1.read () Sau đó, kiểm tra giá trị gửi từ ứng dụng thiết bị đầu cuối Bluetooth Vì vậy, giá trị 1, in LED BẬT làm cho chân (PA0) trở nên CAO câu lệnh DigitalWrite (pinout, HIGHT) giá trị 0, in LED OFF làm cho chân (PA0) trở nên OFF Các bước để kết nối mô-đun Bluetooth với điện thoại Android Bước 1: - Mở Bluetooth từ di động sau tải mã vào STM32 từ Arduino IDE cấp nguồn cho mạch HÃY NHỚ xóa chân RX TX TẢI LÊN mã Bước 2: - Trong thiết bị có sẵn, chọn HC-05 nhập mật 1234 Đề tài: Thiết kế kít thí nghiệm vi điều khiển ST Page | 153 Trường đại học công nghệ Đồng Nai Khóa luận tốt nghiệp K13: (2017 – 2021) Bước 3: - Sau ghép nối, mở ứng dụng Bluetooth Terminal chọn kết nối thiết bị chọn HC-05 hình bên Bước 4: - Sau kết nối với Mô-đun Bluetooth HC-05, cung cấp giá trị đầu cuối để BẬT TẮT đèn LED Bạn nhận thông báo đèn LED Bật Tắt Đề tài: Thiết kế kít thí nghiệm vi điều khiển ST Page | 154 Trường đại học cơng nghệ Đồng Nai Khóa luận tốt nghiệp K13: (2017 – 2021) CHƯƠNG TRÌNH ĐIỀU KHIỂN /PROGRAM FOR BLUETOOTH INTERFACE WITH STM32F103C8 //CIRCUIT DIGEST //Pramoth Thangavel const int pinout = PA0; // declare pinout with int data type and pin value char inputdata = 0; //Variable for storing received data void setup() { Serial1.begin(9600); //Sets the baud rate for bluetooth pins Serial1.print("CIRCUIT DIGEST\n"); Serial1.print("BLUETOOTH WITH STM32\n"); Đề tài: Thiết kế kít thí nghiệm vi điều khiển ST Page | 155 Trường đại học cơng nghệ Đồng Nai Khóa luận tốt nghiệp K13: (2017 – 2021) pinMode(pinout, OUTPUT); //Sets digital pin PA0 as output pin for led } void loop() { if(Serial1.available() > 0) // Send data only when you receive data: { inputdata = Serial1.read(); //Read the incoming data & store into data if(inputdata == '1') { digitalWrite(pinout, HIGH); Serial1.print("LED ON\n"); } else if(inputdata == '0') { digitalWrite(pinout, LOW); Serial1.print("LED OFF\n"); } } } Đề tài: Thiết kế kít thí nghiệm vi điều khiển ST Page | 156 ... kích hoạt N-MOS “1” ghi liệu đầu rời cổng trạng thái Hi-Z (P-MOS khơng kích hoạt chế độ thoát nước mở) Trong chế độ đẩy-kéo, “0” ghi liệu đầu kích hoạt N-MOS “1” ghi liệu đầu kích hoạt P-MOS ... LINH KIỆN CẦN THIẾT STM32F103C8 Arduino Uno LED (2-Nos) Nút nhấn (2-Nos) Breadboard Kết nối dây Điện trở (4-Nos [10k-2 & 2,2k-2]) Đề tài: Thiết kế kít thí nghiệm vi điều khiển ST... liệu đầu ra, N-MOS bật, đèn LED bật (dịng điện chạy từ Vdd sang Vss thông qua đèn LED điện trở) Khi ghi “1” vào ghi liệu đầu ra, PA0 trạng thái Hi-Z (dịng điện khơng thể chạy PA0 Hi-Z / nổi), đèn