- Vật liệu thiết yếu:
- Lập trình vi điều khiển PIC:
- Các chức năng trong Thư viện ESP8266:
- Chương trình mẫu:
- Đầu ra mô phỏng:
- Xác minh đầu ra:
- Thêm các chức năng vào Thư viện ESP8266:
Trong bài viết này, chúng ta hãy thảo luận về cách giao tiếp mô-đun WIFI ESP8266 với vi điều khiển PIC. Cho đến nay, bạn có thể đang sử dụng mô-đun ESP8266 như một bộ vi điều khiển độc lập hoặc có thể đã sử dụng nó với thư viện Arduino. Tuy nhiên, khi nói đến các dự án hệ thống nhúng nặng, chúng ta cũng nên biết cách sử dụng nó với vi điều khiển PIC. Điều này sẽ giúp bạn tùy chỉnh các dự án của mình trong quan điểm thiết kế và đồng thời cũng làm cho nó rẻ.
Các mô-đun ESP8266 đi kèm với một phần sụn mặc định được tải vào nó, do đó chúng tôi có thể lập trình mô-đun bằng các lệnh AT. Các lệnh này phải được gửi qua một kênh liên lạc nối tiếp. Kênh này được thiết lập giữa PIC và mô-đun ESP8266 bằng cách sử dụng mô-đun USART trong vi điều khiển PIC . Toàn bộ quá trình làm việc sẽ được theo dõi và báo cáo cho người dùng bằng màn hình LCD 16x2. Do đó, hướng dẫn này giả định rằng bạn có một số kiến thức cơ bản về mô-đun USART trong PIC, Giao diện LCD với PIC và sử dụng lệnh AT trong ESP8266. Nếu không, bạn có thể quay lại các hướng dẫn được liên kết để tìm hiểu chúng trước.
Vật liệu thiết yếu:
Bạn sẽ cần phần cứng sau để hoàn thành hướng dẫn này
- PIC16F877A
- Bộ dao động tinh thể 20MHz
- 7805
- LM317
- ESP8266
- Màn hình LCD 16 * 2
- Lập trình viên PicKit3
- Điện trở (1K, 220ohm, 360ohm)
- Tụ điện (1uF, 0,1uF, 33pF)
- Dây nhảy
- Bộ chuyển đổi 12V để cấp nguồn cho mô-đun PIC và ESP
Phần cứng:
Sơ đồ hoàn chỉnh của dự án được hiển thị ở đây bên dưới
Các sơ đồ bao gồm hai mạch điều chỉnh điện áp, một là mạch điều chỉnh + 5V được sử dụng để cấp nguồn cho vi điều khiển PIC và mạch kia là mạch điều chỉnh 3.3V cấp nguồn cho mô-đun ESP8266. + 5V được điều chỉnh bằng cách sử dụng 7805 (IC điều chỉnh điện áp tuyến tính). 3.3V được điều chỉnh bằng cách sử dụng LM317 (Bộ điều chỉnh điện áp biến đổi). Mô-đun ESP8266 tiêu thụ rất nhiều dòng điện (~ 800mA) do đó nếu bạn đang thiết kế bộ nguồn của riêng mình, hãy đảm bảo rằng nó có thể tạo ra dòng điện cao như vậy. Đồng thời đảm bảo rằng các chân nối đất của PIC và mô-đun ESP8266 được kết nối với nhau.
Vì vậy, bây giờ chúng ta biết rằng PIC hoạt động trên + 5V và ESP8266 hoạt động ở 3,3V volt. Để thiết lập giao tiếp USART giữa hai mô-đun này chúng ta cần có một mạch chuyển đổi logic 5V - 3.3V như hình trên. Mạch này không có gì khác ngoài một bộ chia tiềm năng chỉ đơn giản là chuyển đổi nguồn + 5V đến 3,3V. Điều này sẽ ngăn chân RX có thể chịu được 3.3V của ESP8266 nhận được + 5V.
Tôi đã tạo các mô-đun PIC và ESP trên hai bảng hiệu suất riêng biệt, như được hiển thị trong các hướng dẫn này. Bằng cách này, tôi có thể sử dụng chúng trên toàn cầu cho nhiều dự án tương tự hơn
- Phần cứng LED sử dụng PIC
- Bắt đầu với ESP8266
Bạn có thể làm theo tương tự, hoặc xây dựng bảng mạch của riêng bạn theo phong cách của bạn hoặc chỉ cần kết nối mạch trên với bảng mạch.
Lập trình vi điều khiển PIC:
Để lập trình vi điều khiển PIC gửi “lệnh AT” nối tiếp bằng USART đến mô-đun ESP8266, chúng ta phải sử dụng một thư viện. Thư viện này sẽ giúp bạn tiết kiệm rất nhiều rắc rối, như sử dụng mô-đun lệnh ESP8266 để kiểm tra từng lệnh AT và sau đó tìm cách truyền chúng đến mô-đun ESP. Thư viện này là phần mềm miễn phí ban đầu được phát triển bởi Camil Staps và sau đó nó được cải tiến và sửa đổi bởi Circuit Digest để có thể sử dụng được với Vi điều khiển PIC16F877A của chúng tôi. Bạn có thể tải về tại đây
Thư viện vẫn đang được phát triển, nhưng bạn có thể sử dụng hầu hết các lệnh AT quan trọng trong phần sụn ESP8266. Nếu bạn thấy thiếu bất kỳ lệnh nào bạn cần, hãy cho tôi biết trong phần bình luận và tôi sẽ cố gắng bổ sung cho bạn. Hướng dẫn này sẽ giải thích cho bạn tất cả các lệnh (cho đến nay) có thể được sử dụng thông qua thư viện này. Hơn nữa cũng sẽ hướng dẫn bạn thêm các chức năng của riêng bạn vào thư viện.
Các chức năng trong Thư viện ESP8266:
- Initialize_ESP8266 (): Hàm này sẽ Khởi tạo mô-đun USART của PIC để giao tiếp với mô-đun ESP8266. Nó đặt tốc độ truyền ở 115200 và chuẩn bị chân Rx và Tx của PIC cho giao tiếp USART.
- _esp8266_putch (): Hàm này được sử dụng để gửi một ký tự nối tiếp đến mô-đun ESP8266. Ví dụ: _esp8266_putch ('a') sẽ gửi một ký tự nối tiếp đến ESPmodule.
- _esp8266_getch (): Hàm này được sử dụng để lấy một ký tự từ mô-đun ESP. Ví dụ: nếu ESP đang in “OK” và chúng tôi sử dụng char a = _esp8266_getch (). Sau đó ký tự 'o' sẽ được lưu trong biến a.
- ESP8266_send_string (): Hàm này là phiên bản chuỗi của _esp8266_putch (). Nó có thể gửi một chuỗi hoàn chỉnh đến mô-đun ESP8266. Ví dụ: ESP8266_send_string (“AT / r / n”) sẽ gửi lệnh “AT” đến mô-đun ESP8266.
- esp8266_isStarted (): Nó được sử dụng để kiểm tra xem PIC có thể giao tiếp với mô-đun ESP hay không. Nó gửi lệnh “AT” và đợi “OK” nếu nhận được nó trả về true nếu không nó trả về false.
- esp8266_restart (): Đặt lại mô-đun ESP8266 và trả về true là đặt lại thành công và trả về false nếu không thành công.
- esp8266_mode (): Được sử dụng để đặt chế độ làm việc của mô-đun ESP8266. Như chúng ta biết, nó có thể hoạt động ở ba chế độ khác nhau.
Chế độ ga |
|
Chế độ AP mềm |
|
Cả hai chế độ Trạm và AP |
- esp8266_connect (): Cho phép bạn kết nối với tín hiệu wifi. Ví dụ: esp8266_connect (“home”, ”12345678”) , sẽ cho phép mô-đun của bạn kết nối với tín hiệu wifi có tên home có mật khẩu là 12345678.
- esp8266_disconnect (): Chức năng này ngắt kết nối mô-đun của bạn khỏi bất kỳ kết nối wifi nào đã được kết nối trước đó
- esp8266_ip (): Lấy địa chỉ IP và trả về. Sử dụng chức năng này nếu bạn muốn biết địa chỉ IP của mô-đun ESP8266.
- esp8266_start (): Hàm này được sử dụng để bắt đầu giao tiếp TCP hoặc UDP. Ví dụ esp8266_start ( "TCP", "192.168.101.110", 80) . Sẽ bắt đầu một mạng TCP trong IP và cổng 80 đó.
- esp8266_send (): Hàm này được sử dụng để gửi thông tin đến mạng TCP / UDP. Tập lệnh HTML sẽ được gửi bằng lệnh này. Sau đó, tập lệnh này sẽ xuất hiện trong địa chỉ IP mà giao tiếp đã được thiết lập trước đó.
- esp8266_config_softAP (): Hàm này được sử dụng để cấu hình softAP. Ví dụ esp8266_config_softAP (“office”, ”12345678”); sẽ tạo tín hiệu Wifi có tên office và mật khẩu 12345678 sẽ được sử dụng để truy cập.
- esp8266_get_stationIP (): Hàm này sẽ trả về cho bạn địa chỉ IP / MAC của các máy khách được kết nối với softAP của bạn.
Chương trình mẫu:
Bây giờ chúng ta đã hiểu các chức năng của từng lệnh trong thư viện, chúng ta hãy xem xét một chương trình mẫu nhỏ. Trong chương trình này, chúng tôi sẽ kiểm tra xem kết nối giữa ESP8266 và PIC có thành công hay không và sau đó tạo mạng WIFI (SoftAP) với tên và mật khẩu ưa thích. Chương trình hoàn chỉnh và mô phỏng tương tự sẽ được giải thích cho bạn hiểu.
Một lần nữa nếu bạn chưa đọc hướng dẫn về giao diện PIC với LCD và PIC USART của chúng tôi, vui lòng đọc trước khi tiếp tục vì chỉ khi đó nó mới có ý nghĩa với bạn.
Vì chúng tôi chỉ mới bắt đầu giao tiếp PIC với ESP8266, tôi đã sử dụng màn hình LCD để đảm bảo mọi thứ hoạt động bình thường.
làm {Lcd_Set_Cursor (1,1); Lcd_Print_String ("Không tìm thấy ESP"); } while (! esp8266_isStarted ()); // đợi cho đến khi ESP gửi lại "OK" Lcd_Set_Cursor (1,1); Lcd_Print_String ("ESP được kết nối"); __delay_ms (1500); Lcd_Clear ();
Khi chúng tôi gửi “AT” đến mô-đun ESP8266, nó sẽ trả lời lại bằng “OK”. Điều này đảm bảo rằng mô-đun ESP8266 được kết nối thành công. Hàm esp8266_isStarted () được sử dụng cho cùng một. Chúng tôi gửi tín hiệu AT từ PIC và chúng tôi đợi cho đến khi mô-đun ESP hoạt động trở lại và gửi cho chúng tôi một OK. Nếu chúng tôi nhận được OK, chúng tôi hiển thị rằng "ESP đã được kết nối" trên màn hình LCD.
esp8266_mode (2); Lcd_Set_Cursor (1,1); Lcd_Print_String ("ESP đặt làm AP"); __delay_ms (1500); Lcd_Clear ();
Các dòng mã trên được sử dụng để đặt mô-đun ESP hoạt động ở chế độ “AP mềm”. Hàm esp8266_mode (2); gửi lệnh AT “AT + CWMODE = 3” tới mô-đun và đợi mô-đun phản hồi bằng “OK”
/ * Định cấu hình tên AP và Mật khẩu * / esp8266_config_softAP ("CircuitDigest", "619007123"); Lcd_Set_Cursor (1,1); Lcd_Print_String ("Đã cấu hình AP"); __delay_ms (1500); Lcd_Clear (); / * AP được cấu hình * /
Đoạn mã này được sử dụng để định cấu hình softAP. Ở đây chúng tôi đã đặt tên SSID là “CircuitDigest” và mật khẩu là “619007123”. Để cho biết rằng quá trình đã hoàn tất, chúng tôi sẽ đợi mô-đun phản hồi bằng “OK” và sau đó in AP đã được cấu hình lên màn hình LCD.
Đó là bây giờ chúng tôi đã giao tiếp mô-đun ESP8266 với PIC MCU và đã định cấu hình softAP với tên và mật khẩu mà chúng tôi chọn. Như thường lệ, hãy mô phỏng mã này và xem nó hoạt động như thế nào.
Đầu ra mô phỏng:
Chúng tôi đang sử dụng phần mềm Proteus để mô phỏng đầu ra. Có thể tìm thấy tệp thiết kế tương tự trong tệp đính kèm.
Vì chúng tôi không có mô-đun ESP8266 trong thư viện Proteus, chúng tôi đã sử dụng thiết bị đầu cuối Serial và phản hồi lại với tư cách là người dùng đối với mô-đun PIC. Màn hình mô phỏng sau khi hoàn thành sẽ giống như bên dưới
Đầu ra của mã của chúng tôi được hiển thị trong thiết bị đầu cuối Ảo. Quá trình hoạt động hoàn chỉnh của mô phỏng sẽ được giải thích trong video dưới đây.
Xác minh đầu ra:
Sau khi chương trình được xác minh bằng cách sử dụng mô phỏng, hãy kết xuất nó vào bộ vi điều khiển PIC của bạn. Thực hiện các kết nối như thể hiện trong sơ đồ trên (phần Phần cứng). Bạn sẽ có thể theo dõi tiến trình của mình thông qua màn hình LCD.
Khi màn hình LCD thông báo rằng AP đã được định cấu hình, chúng ta có thể kiểm tra điều đó bằng cách sử dụng cài đặt WIFI trong Điện thoại hoặc Máy tính xách tay. Máy tính xách tay của tôi hiển thị tín hiệu sau theo chương trình của chúng tôi.
Đó là chúng ta đã giao tiếp thành công mô-đun ESP8266 với Vi điều khiển PIC. Đây là một giao diện rất cơ bản và nếu bạn muốn thực hiện bất kỳ dự án phức tạp nào bằng cách sử dụng ESP8266, bạn có thể phải thêm các thư viện của riêng mình hoặc ít nhất là thêm các chức năng của riêng bạn. Hãy tin tôi rằng nó rất dễ làm như vậy, tôi sẽ cung cấp cho bạn một cái nhìn sâu sắc ngắn gọn.
Thêm các chức năng vào Thư viện ESP8266:
Thêm chức năng của riêng bạn sẽ giúp bạn gửi bất kỳ lệnh “AT” nào đến mô-đun ESP8266. Để tiếp tục, bạn cần đọc tài liệu hướng dẫn của mô-đun ESP8266. Bạn có thể gửi trực tiếp bất kỳ lệnh AT nào mà bạn tìm thấy trong sách hướng dẫn tập hợp hướng dẫn đó. Nhưng hãy luôn nhớ thêm “/ r / n” vào cuối mỗi lệnh AT. Ví dụ: nếu bạn muốn thiết lập nhiều kết nối với mô-đun ESP của mình. Sau đó, mở tài liệu hướng dẫn và tìm lệnh AT của chúng tôi sẽ thực hiện công việc này cho bạn. Tại đây, lệnh “AT + CIPMUX = 1” sẽ cho phép bạn thiết lập nhiều kết nối với mô-đun ESP của mình.
Bây giờ tất cả những gì bạn phải làm là gửi “AP + CIPMUX = 1” này tới mô-đun ESP8266 của bạn bằng cổng nối tiếp. Cách khó thực hiện việc này là chỉ cần sử dụng lệnh
_esp8266_print ("AT + CIPMUX = 1 \ r \ n" ")
Điều này sẽ hiệu quả nhưng không phải là cách tốt nhất. Bạn phải đọc lại những gì ESP8266 phản hồi với lệnh của bạn. Trong trường hợp của chúng tôi, nó sẽ trả lời là “OK”. Vì vậy, bạn phải đọc dữ liệu đến từ mô-đun ESP8266 và xác nhận rằng nó là "OK". Ngoài ra, bạn có thể thực hiện hàm này trong đó “1” hoặc “0” có thể được chuyển làm đối số.
Hãy tiếp tục và cố gắng tạo các chức năng của riêng bạn cho thư viện. Nhưng nếu bạn cần trợ giúp, vui lòng sử dụng phần bình luận và tôi sẽ giúp bạn.