Skip to main content

ESP8266, #1 BLINKING LED, NẠP CODE CHO ESP8266 V1 TRONG ARDUINO

ESP8266 V1 là phiên bản nhỏ gọn nhất trong các phiên bản ESP8266. Mặc dù hạn chế là chỉ có 1 GPIO và 1 UART nhưng bù lại kích thước rất nhỏ gọn.

Để nạp được code cho ESP8266 V1 sử dụng Arduino, bạn làm theo các bước sau:

I. Cài đặt Arduino IDE và thư viện cho board ESP8266

1. Tải Arduino IDE từ địa chỉ https://www.arduino.cc/en/Main/Software. Bạn tìm đến mục Download the Arduino IDE và chọn vào link “Windows ZIP file for non admin install”. Sau đó giải nén file zip rồi chạy file arduino.exe là được.

2. Mở Arduino IDE, vào File > Preferences, ở tab Settings thêm dòng này http://arduino.esp8266.com/stable/package_esp8266com_index.json vào chỗ Additional Boards Manager URLs. Click OK.
Nếu link trên không hoạt động thì hãy sử dụng link này: https://github.com/esp8266/Arduino/releases/download/2.4.2/package_esp8266com_index.json

3. Vào Tools > Board:… > Board Manager. Gõ chữ “esp8266” vào ô tìm kiếm sẽ thấy hiện ra một mục là esp8266 by ESP8266 Community, click chọn và click Install.

II. Phần cứng
Lắp ráp mạch theo sơ đồ sau, vị trí các chân của ESP V1 thì có thể xem ở hình đầu tiên.

Thứ tự chân của C1815 như hình dưới đây

Để nạp được code cần có 1 board USB sang COM TTL (COM hoạt động ở mức 3.3v hoặc 5v). Chúng ta sẽ dùng board FT232RL như hình dưới đây

Cắm FT232RL vào máy tính thông qua cổng usb, cài đặt driver (driver này có thể tìm trên internet). Trên windows có thể kiểm tra xem cổng com đã được cài đặt chưa bằng cách vào Control Panel > Device Manager > Ports (COM & LPT) sẽ thấy tên cổng COMxx xuất hiện. Nhớ tên cổng COM này để thiết lập cho Arduino IDE khi nạp code.

Kết nối:
– Chuyển jumper của FT232RL sang chế độ 3.3v
– Nối GND của FT232RL vào GND của mạch esp8266 ở trên.
– Nối VCC của FT232RL vào 3.3v của mạch esp8266 ở trên.
– Nối Tx của FT232RL vào Rx của mạch esp8266 ở trên.
– Nối Rx của FT232RL vào Tx của mạch esp8266 ở trên.
Chú ý chân Rx phải nối với chân Tx và ngược lại. Nếu nối Tx vào Tx thì sẽ xảy ra hiện tượng nóng chip giao tiếp và có thể gây cháy chip.

III. Nạp code

Đoạn code sau sẽ dùng để nhấp nháy đèn LED D1. Đèn led D1 được nối với GPIO2

void setup() {
  pinMode(2, OUTPUT);
}

void loop() {
  digitalWrite(2, HIGH);
  delay(1000);
  digitalWrite(2, LOW);
  delay(1000);
}

1. Mở Arduino IDE chọn File > New. Nhập vào đoạn code ở trên, lưu file.

2. Vào Tools > Board:… chọn Generic ESP8266 Module.

3. Vào Tools > Port chọn cổng COM của USB TTL

4. Đóng công tắc S1, sau đó nhấn nút B1 để reset chip (xem trên hình chỗ sơ đồ mạch ở trên).

5. Chọn Sketch > Upload và chờ Arduino nạp code. Nếu thành công thì sẽ xuất hiện chữ done.

IV. Ghi chú
– Thay vì dùng board FT232RL để nạp code, bạn cũng có thể sử dụng 1 board arduino, ví dụ arduino uno dùng atmega328 chẳng hạn, nối chân RESET xuống GND và lấy các chân nguồn 3.3, gnd, rx, tx nối vào mạch esp8266 để nạp. Nhưng dùng cách này sẽ có lúc nạp được lúc không, lý do là board arduino cấp dòng không đủ.

– Đối với board ESP8266 v1, đèn led màu xanh dương trên board là nối với chân Tx, và nó cũng chính là GPIO1. Cho nên nếu bạn muốn nhấp nháy đèn led xanh dương trên board ESPv1 thì xuất tín hiện ra chân số 1. Còn đối với board ESP8266 v12F thì đèn led xanh dương trên board lại được nối với chân GPIO2.

– Các điện trở kéo lên 2k2 ở chân GPIO1, GPIO2, Reset là quan trọng, nếu không có các điện trở đó có thể dẫn tới tình trạng không nạp được code.

Comments

Popular posts from this blog

Arduino Nano nạp code không được

Tình trạng Khi bạn nạp code cho arduino nano, IDE sẽ hiển thị là Uploading... rất lâu sau đó báo lỗi: avrdude: stk500_recv(): programmer is not responding avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x5c avrdude: stk500_recv(): programmer is not responding avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x5c avrdude: stk500_recv(): programmer is not responding avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0x5c avrdude: stk500_recv(): programmer is not responding avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0x5c avrdude: stk500_recv(): programmer is not responding avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0x5c avrdude: stk500_recv(): programmer is not responding avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0x5c avrdude: stk500_recv(): programmer is not responding avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0x5c avrdude: stk500_recv(): programmer is not responding avrdude: s

Dùng mạch nạp USBasp để nạp code cho Arduino

Arduino có thể dễ dàng nạp code và chạy chương trình chỉ với thao tác đơn giản cắm board mạch vào máy tính chọn cổng COM và nhấn nút Upload. Để làm được như vậy, bên trong chip vi xử lý được nạp sẵn một đoạn mã lệnh gọi là boot loader. Boot loader luôn luôn được chạy lên đầu tiên, sau đó mới chuyển quyền điều khiển lại cho phần mã của người dùng nạp vào.   Như vậy để các Chip Arduino có thể làm việc được với Arduino IDE thông qua giao tiếp USB-COM thì trong vi điều khiển phải được nạp sẵn boot loader. Các board mạch Arduino bán sẵn trên thị trường như Arduino Uno, Arduino Nano, Arduino Mega 2560,... đều được nạp sẵn boot loader. Như vậy ưu điểm của boot loader là để người dùng dễ dàng tiếp cận, thử nghiệm, và làm ra được sản phẩm nhanh chóng, dễ dàng. Nhưng nhược điểm là boot loader luôn luôn cần một khoảng thời gian từ 1.6s đến 2s để khởi động. Nếu bạn không muốn mất 1.6 - 2s đầu tiên mà muốn chương trình chạy gần như ngay lập tức khi cấp nguồn hoặc reset thì dùng mạch nạp USBasp để n

Thử giao tiếp Arduino với NRF24L01

Module NRF24L01 được điều khiển thông qua giao tiếp SPI và tần số sóng được sử dụng là 2.4GHz để truyền dữ liệu. Mỗi module NRF24L01 có tại một thời điểm chỉ có thể phát tín hiệu trên một kênh. Tuy nhiên cùng một lúc module NRF24L01 lại có thể nhận tín hiệu trên 6 kênh khác nhau, có nghĩa là một module có thể nhận tính hiệu từ 6 module khác. Module này hoạt động trên điện áp 3.3V, nếu bạn cấp nguồn 5V có thể làm hỏng module. Tuy nhiên các chân SPI của module là 5V tolerance, nên bạn vẫn có thể kết nối các chân SPI với Arduino Nano hay UNO.   Chúng ta sẽ sử dụng 3 module NRF24L01, 2 Arduino Nano, 1 Arduino Uno để giao tiếp không dây với nhau. Hình dưới là thứ tự các chân của module NRF24L01 Kết nối với Arduino Nano (Bên trái là NRF24, bên phải là Nano, chân IRQ không dùng) GND <===> GND CE <===> D7 SCK <===> D13 MISO <===> D12 3.3V <===> 3.3V CSN <===> D8 MOSI <===> D11 Kết nối với Arduino UNO GND <===> GND CE <===> 7 SCK <===>