Giới thiệu phần cứng
ESP8266 là 1 dòng chip SOC 32 bit do công ty Espressif của Trung Quốc sản xuất
Chip esp8266 rất nhỏ và không phù hợp cho các đơn vị sản xuất thủ công nhỏ lẻ. Do đó, các công ty thứ 3, tiêu biểu như Aithingker đã đóng gói chúng trong các module được tích hợp sẵn anten, dòng module tiêu biểu nhất là ESP8266 12f
Và để phù hợp cho nhu cầu nghiên cứu, học tập, các đơn vị khác lại tiếp tục tích hợp các module esp8266 vào trong các kit, tiêu biểu như kit ESP8266 node mcu
Các bộ kit mini này đều được tích hợp sẵn các khối nguồn , khối nạp code, debug, đèn led báo, các cổng kết nối usb. Do đó newbie có thể nhanh chóng đi vào học lập trình mà không cần phải quá quan tâm tới phần cứng
Hiện này các kit này đều được bán rất nhiều trên shope, các bạn chỉ cần mua thêm 1 dây kết nối usb – micro usb là có thể lập trình được
Cài đặt phần mềm arduino
Để lập trình cho chip esp8266, rất nhiều bên thứ ba đã tạo ra các môi trường lập trình. Tiêu biểu trong số đó là môi trường arduino. Với hệ thống thư viện, tài liệu, cộng đồng vô cùng mạnh mẽ arduino là môi trường lập trình được cả thế giới ưa chuộng.
Các bạn có thể vào trang chủ của arduino https://www.arduino.cc/en/software để tải và cài đặt phần mềm
Phần mềm arduino sẽ tự động cài đặt driver ch340 để nạp chương trình xuống cho esp8266
Chú ý: Trên thị trường có 1 số kit node mcu sử dụng driver cp2102, nếu mua phải loại này thì các bạn có thể tải driver của nó tại đây https://www.silabs.com/developers/usb-to-uart-bridge-vcp-drivers?tab=downloads
Nếu driver được cài đặt thành công, khi mở phần mềm arduino lên và cắm kit node mcu vào máy tính qua cáp usb, các bạn sẽ thấy danh sách các cổng COM trong mục Tool -> Port. Hãy chọn đúng cổng COM nhé, trong trường hợp có nhiều cổng COM, các bạn có thể vào setting -> devices trong window để biết COM nào tương ứng với ch340
Cài đặt esp8266 framework
Để lập trình cho chip esp8266, chúng ta phải cài đặt các thư viện esp8266 vào arduino
Các bạn vào File -> Preferences trong mục Additional Boards Manager URLs các bạn copy dòng sau vào
http://arduino.esp8266.com/stable/package_esp8266com_index.json
Sau đó lưu lại và vào Tool -> Board -> Board manager gõ tìm kiếm esp8266
Nhấn install để cài đặt
Sau khi instal thành công, các bạn chọn Tool -> Board -> ESP8266 Boards -> Node MCU 1.0
Vậy là quá trình thiết lập môi trường lập trình cho esp8266 đã hoàn tất
Lập trình cho esp8266
Nhấp nháy đèn led
Trên module esp8266 12f, nhà sản xuất đã hàn sẵn 1 đèn LED màu xanh lam với chân âm của đèn led được nối vào chân GPIO2 của chip esp8266. Chúng ta sẽ dùng đèn led này để thực hiện demo nhé
1 2 3 4 5 6 7 8 9 10 11 12 |
void setup() { pinMode(2,OUTPUT); } void loop() { digitalWrite(2,LOW); delay(500); digitalWrite(2,HIGH); delay(500); } |
Bây giờ các bạn copy đoạn mã trên vào và ấn vào nút mũi tên ( uppload) để nạp chương trình xuống cho esp8266
Nếu quá trình nạp thành công, chúng ta sẽ nhận được thông báo Done uploading tiến độ nạp cũng được hiển thị trên màn hình console
Bây giờ, chúng ta sẽ thấy đèn led màu xanh lam trên kit node mcu nhấp nháy khoảng nửa giây 1 lần
Hàm loop và hàm setup là hai hàm cơ bản của arduino. Hàm setup sẽ được gọi 1 lần duy nhất khi chương trình khởi động và hàm loop sẽ lặp lại mãi mãi các mã code bên trong nó.
Do đèn led được nối vào chân số 2 nên chúng ta cấu hình chân số 2 là OUTPUT ( ngõ ra) bằng lệnh
1 |
pinMode(2,OUTPUT); |
Bây giờ, để điều khiển led sáng tắt, chúng ta sử dụng hàm digitalWrite
Cụ thể digitalWrite(2,LOW); sẽ xuất mức logic LOW ra chân số 2 ( bật đèn) và digitalWrite(2,HIGH); sẽ xuất mức logic HIGH ra chân số 2 (tắt đèn)
Nếu bạn đang thắc mắc tại sao LOW lại là bật thì nguyên do là đèn led xanh lam được nối chân âm với chân 2 của esp8266. Đèn led sẽ chỉ sáng khi chúng ta xuất mức logic LOW vào chân âm
Lệnh delay(500); tạo ra 1 độ trễ 0.5s giữa quá trình bật tắt. Các bạn có thể tăng giảm con số này để thấy tốc độ nhấp nháy của đèn led thay đổi
Do đoạn mã bật tắt led này được đặt bên trong hàm loop nên nó sẽ được lặp đi lặp lãi mãi mãi. Hãy thư làm 1 ví dụ khác nhé
Yêu cầu: Đèn led nhấp nháy 10 lần khi khởi động sau đó tắt
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
void setup() { pinMode(2,OUTPUT); for(int i=0;i<10;i++) { digitalWrite(2,LOW); delay(500); digitalWrite(2,HIGH); delay(500); } } void loop() { } |
Do đèn led chỉ cần nhấp nháy 10 lần sau đó tắt nên mình sẽ cho đoạn code nhấp nháy vào vòng lặp for 10 lần. Mình sẽ đưa đoạn code này lên hàm setup vì chúng ta không cần lặp lại công việc nháy này mãi mãi
Sử dụng Serial monitor
Trong quá trình chạy chương trình đang chạy, đôi khi chúng ta sẽ cần in một số dữ liệu ra màn hình để quan sát kết quả. Việc này có thể dễ dàng thực hiện nhờ vào các hàm Serial
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
void setup() { Serial.begin(115200); pinMode(2,OUTPUT); for(int i=0;i<10;i++) { digitalWrite(2,LOW); delay(500); digitalWrite(2,HIGH); delay(500); } Serial.println("\nĐã hoàn thành nhấp nháy led 10 lần"); } void loop() { } |
Để sử dụng Serial monitor, chúng ta chỉ cần gọi hàm khởi động Serial ở trong setup
1 |
Serial.begin(115200); |
Ở đoạn code trên, sau khi thực thi xong nhiệm vụ nháy led 10 lần, mình sẽ in dòng chữ đã hoàn thành nhấp nháy lên màn hình. Các bạn ấn vào biểu tượng kính lúp để mở màn hình monitor sau đó ấn upload code
Sau khi nhấp nháy xong, led sẽ tắt và có thông báo in lên trên màn hình