[STM32 PLC] Cách để có PLC 85K từ board BluePill (STM32F103C8T6)

Chào mọi người, mình là D.G.B chắc hẳn các bạn mới bắt đầu học tập nghiên cứu PLC thì khó khăn lớn nhất là không có PLC thật để test và nghiên cứu. Với nhiều bạn sinh viên chưa có điều kiện thì một board PLC giá rẻ tầm 500K đến 700K là một vấn đề lớn. Vậy liệu còn PLC nào giá rẻ hơn nữa không?




Về bản chất, bộ não bên trong của PLC cũng là một con vi điều khiển. Lấy ví dụ cho dễ hiểu thì mình có một board PLC Mitsubishi FX3U-24MT (tất nhiên là hàng nhái của TQ 😂)






Lần đầu nhìn vào board cũng không bất ngờ lắm hóa ra nó là con STM32F103VCT6. Câu hỏi của mình lúc đó là nếu cái board BluePill của mình cũng chạy được như cái board PLC của Trung Quốc thì làm sao vì nó cùng là STM32F103 mà.

Dành cho bạn nào chưa biết STM32 hoặc chưa học vi điều khiển thì STM32 là dòng vi điều khiển 32 bit của hãng STMicroelectronics. Board BluePill là một sự lựa chọn hợp lí cho các bạn mới học lập trình STM32, các bạn có thể tìm hiểu trên google (hoặc Tổng quan về bluepill). Và gần trường mình (IUH) nó có giá 85K, lí do tại sao mình gọi nó là PLC 85K.

Quay lại vấn đề chính, làm sao để nó chạy như một con PLC. Sau 1h nghiên cứu trên google mình tìm được trang web hướng dẫn của mấy anh Nga (Ngố):

                Blue-pill-blue-tablet-STM32F103-as-a-PLC

Link forum hỗ trợ:

            Iteplica.ru-forum

Cảm ơn các anh Nga (Ngố) đã chia sẽ source cho cộng đồng. Mình khuyến khích các bạn hãy ghé qua trang web đó trước khi đọc tiếp.
Sau đây mình sẽ hướng dẫn các bạn làm một con PLC "giống" Fx2n, đây là phiên bản PLC dành cho các bạn mới bắt đầu học PLC còn vì sao phần cuối mình sẽ nói.
Các bạn cần chuẩn bị:
Đầu tiên các bạn phải tải và cài đặt STM32 Virtual COM Port Driver trước vì mình sẽ không dùng RS232 để kết nối với máy tính mà dùng cổng micro usb để kết nối.

Cài driver cho FT232RL.

Các bạn giải nén file STM32_PLC đã tải về ở Source File.

Chuyển jump boot0 từ 0 sang 1 để boot vào System memory.

Chuyển jump nguồn của FT232RLvề 3.3V, vì STM32 hoạt động ở điện áp 3.3V.


Kết nối FT232RL với BluePill.
                FT232RL                            BluePill
                VCC                                    3.3V
                GND                                   GND
                RX                                      PA9
                TX                                      PA10

Cắm cáp rồi mới mở phần mềm Flash Loader lên. Chọn đúng cổng COM của FT232RL. Nhấn Next.

Nhấn Next, ở đây nếu dòng Remove protection hiện lên thì bạn cứ nhấn vào rồi nãy next.

Tại đây chọn STM32F1_MED-density_128K, nhấn next.

Sẽ có hai version PLC cho bạn chọn, hai version đó khác nhau như nào mình cũng chưa rõ.

Nếu bạn chọn version g37 thì chọn đường dẫn Download from file tới STM32F1_PLC_G37.bin, setup như hình rồi nhấn next.

Phần mềm sẽ nạp chương trình vào Bluepill.

Sau đó sẽ tự động kiểm tra (verify) chương trình đã nạp vào và file nạp để tránh lỗi trong quá trình nạp.

Khi chương trình nạp xong nhấn Close.

Giờ bạn tháo dây kết nối với FT232RL, chuyển jump boot0 về 0.

Dùng cáp micro usb cắm vào máy tính, mở device manager lên nếu thấy cổng com như hình dưới thì chúc mừng bạn đã có một con PLC 85K theo đúng nghĩa. Hãy nhớ cổng COM để connect trong GXWorks2.

Nếu không may có lỗi như hình dưới, có thể là do jump bị lỏng tips đơn giản là đặt Bluepill xuống bàn dùng ngón cái ấn lên jump boot rồi lắc nhẹ qua lại(😂😂😂😂).



Hướng dẫn connect với GXWorks2:

Tạo project mới chọn FX2N/FX2NC.

Connection Destination -> Serial USB.

Chọn đúng cổng COM -> OK.

Chọn Connection Test.


Các có thể xem video (tiện subscribe cho mình nếu thấy hay 😃):

Vì sao đây chỉ là PLC dành cho học tập?

Đơn giản vì so với một PLC chính hãng nó "thua rất nhiều", trên con PLC 85K này các bạn không dùng được ADC DAC như FX2N chính hãng. Source này chỉ mô phỏng lại chức năng ngõ vào, ngõ ra digital (với ngõ ra có PWM dùng để tạo xung) và truyền thông. Mình sẽ giải thích các chức năng rõ hơn ở blog sau vì blog này với mình khá dài rồi.
Dưới đây là bảng chức năng của các chân trên Bluepill. Các bạn có thể tìm hiểu thêm trên trang web gốc vẫn còn nhiều chức năng hay mình chưa giới thiệu.

Output: 

Y0

PA7 ( PWM3 Channel 2)

Y1

PB0 ( PWM3 Channel 3)

Y2

PB1 ( PWM3 Channel 4)

Y3

PB11 ( PWM2 Channel 4)

Y4

PA0( PWM2 Channel 1)

Y5

PA4

Y6

PA4

Y7

PA6 ( PWM3 Channel 1)

Y10

PB13( PWM1 Channel 1)

Y11

PB14 ( PWM1 Channel 2)

Y12

PB15 ( PWM1 Channel 3)

Y13

PB12
























Input: (pulldown tức là đã có điện trở kéo xuống gnd sẵn tại ngõ vào, khi bạn muốn tác động ngõ vào phải nối lên vcc tại ngõ vào đó)

X0

PA15 (pulldown)

X1

PB3 (pulldown)

X2

PB4 (pulldown)

X3

PB5 (pulldown)

X4

PB9 (pulldown)

X5

PB8 (pulldown)

X6

PB7 (pulldown)

X7

PB6 (pulldown)


Truyền thông: 

UART1

 

RX

PA10

TX

PA9

DE(RS485)

PA8

UART2

 

RX

PA13

TX

PA2

DE(RS485)

PA1

Onewire

 

BUS

PB10

 

Dùng điện trở 4k7 nối từ PB10 lên VCC

LED báo run

PC13 ( Led xanh trên BluePill)



Cảm ơn các bạn đã đọc bài viết của mình, nếu có thắc mắc gì hay làm không được các bạn cứ comment phía dưới mình sẽ trả lời.



Nhận xét