--- title: 'Arduino ESP8266網路程式基礎入門' disqus: hackmd --- ***    *** ## 目錄 [TOC] ## 開發環境 **[ ](https://www.arduino.cc/)** ### 使用原因: *** **這次的主題只需要ESP8266這塊板子,所以直接使用arduino來實作。 以下是arduino的一些優點:** **1. 開放平台:Arduino允許使用者用其硬體和軟體來開發專案。使用者可以簡單連接電路和撰寫程式,而不需要複雜的設計和製造。 2. 易於學習:Arduino使用類似C語言的編程語言,並提供了許多範例。初學者可以輕鬆開發自己的專案。 3. 低成本:硬體價格實惠,而且有很多廠商可以供應,因此成本比其他單晶片低廉得多。 4. 模塊化:Arduino硬體可以搭配各種擴展板,使用者能靈活地擴展和升級專案。** *** 使用者故事 -- ```gherkin= Feature: Arduino WiFi Connection Scenario: Successful WiFi Connection Given the ESP8266 module is powered on and initialized When the ESP8266 successfully connects to the WiFi network with the provided SSID and password Then the WiFi connection status is displayed as "WiFi connected" And the MAC address of the ESP8266 is printed And the IP address of the ESP8266 is printed And the subnet mask of the network is printed And the default gateway IP address is printed And the DNS server IP address is printed And the DHCP server IP address (usually the same as the default gateway) is printed And the student ID "s1091839" is displayed Scenario: Failed WiFi Connection Given the ESP8266 module is powered on and initialized When the ESP8266 fails to connect to the WiFi network with the provided SSID and password Then the WiFi connection status is displayed as "WiFi connection failed" And the student ID "s1091839" is displayed ``` > Read more about Gherkin here: https://docs.cucumber.io/gherkin/reference/ 實作部分 --- ### 電路視圖:  ### 線路視圖:  ### 元件清單:  ### 程式碼: ```cpp #include <ESP8266WiFi.h> #include <WiFiClient.h> const char* ssid = "plus"; // WiFi網路名稱 const char* password = "1234bbc@"; // WiFi網路密碼 void setup() { Serial.begin(9600); WiFi.begin(ssid, password); // 連接到WiFi網路 while (WiFi.status() != WL_CONNECTED) { delay(1000); Serial.print("."); } if (WiFi.status() == WL_CONNECTED) { Serial.println(""); Serial.println("WiFi connected"); Serial.println("studentID:s1091839"); Serial.print("MAC address: "); Serial.println(WiFi.macAddress()); // 打印ESP8266的MAC地址 Serial.print("IP address: "); Serial.println(WiFi.localIP()); // 打印ESP8266的IP地址 Serial.print("Subnet Mask: "); Serial.println(WiFi.subnetMask()); // 打印ESP8266的子網路遮罩 Serial.print("Gateway: "); Serial.println(WiFi.gatewayIP()); // 打印ESP8266的預設閘道IP地址 Serial.print("DNS Server: "); Serial.println(WiFi.dnsIP()); // 打印ESP8266的DNS伺服器IP地址 Serial.print("DHCP Server: "); IPAddress dhcpServer = WiFi.gatewayIP(); // 獲取DHCP伺服器的IP地址,通常與預設閘道相同 Serial.println(dhcpServer); } else { Serial.println(""); Serial.println("WiFi connection failed"); Serial.println("studentID:s1091839"); } } void loop() { // 在這裡添加代碼邏輯 } ``` ### 輸出:  ### 問題: *** 目前想法是看能否不把WiFi密碼寫死,在執行階段提供一個Web介面,輸入要連線的WiFi名稱及密碼。 *** ### 優化內容: > **仍在嘗試,完成後就會顯示** ### 輸出: > **同上。** :::info **尚未完成優化,有任何想法歡迎留言!** ::: 使用者流程 --- ```sequence Title: Arduino WiFi Connection User->Arduino: 啟動程序 Arduino->ESP8266: 初始化ESP8266模組 Arduino->ESP8266: 設定WiFi網路名稱和密碼 Arduino->ESP8266: 嘗試連接到WiFi網路 ESP8266->WiFi Network: 發送連接請求,使用提供的SSID和密碼 WiFi Network-->ESP8266: 驗證WiFi網路連接 ESP8266-->Arduino: 返回WiFi連接狀態(成功/失敗) Note over Arduino: 如果WiFi連接成功 Arduino->ESP8266: 獲取ESP8266的MAC地址 ESP8266-->Arduino: 返回MAC地址 Arduino->Serial Monitor: 顯示MAC地址 Arduino->ESP8266: 獲取ESP8266的IP地址 ESP8266-->Arduino: 返回IP地址 Arduino->Serial Monitor: 顯示IP地址 Arduino->ESP8266: 獲取ESP8266的子網路遮罩 ESP8266-->Arduino: 返回子網路遮罩 Arduino->Serial Monitor: 顯示子網路遮罩 Arduino->ESP8266: 獲取ESP8266的預設閘道IP地址 ESP8266-->Arduino: 返回預設閘道IP地址 Arduino->Serial Monitor: 顯示預設閘道IP地址 Arduino->ESP8266: 獲取ESP8266的DNS伺服器IP地址 ESP8266-->Arduino: 返回DNS伺服器IP地址 Arduino->Serial Monitor: 顯示DNS伺服器IP地址 Arduino->ESP8266: 獲取ESP8266的DHCP伺服器IP地址 ESP8266-->Arduino: 返回DHCP伺服器IP地址 Arduino->Serial Monitor: 顯示DHCP伺服器IP地址 Arduino->Serial Monitor: 顯示學生ID "s1091839" Note over Arduino: 如果WiFi連接失敗 Arduino->Serial Monitor: 顯示WiFi連接失敗訊息 Arduino->Serial Monitor: 顯示學生ID "s1091839" ``` > Read more about sequence-diagrams here: http://bramp.github.io/js-sequence-diagrams/ 項目時間軸 --- ```mermaid gantt title 時間規劃 section 項目 WiFi設置 :2022-03-21, 1d 連接WiFi程式碼開發 :2022-03-21, 1d 偵錯 :2022-03-21, 1d section 優化 尋找改善空間 :2022-03-22, 2d 成果驗收(優化尚未完成) :2022-03-23, 2d ``` > Read more about mermaid here: http://mermaid-js.github.io/mermaid/ ## 附錄&常見問題 :::info **Find this document incomplete?** Leave a comment! ::: ###### tags: `Arduino` `Arduino_ESP8266` `WiFi_Connection` `ipconfig` `互動式微控原理與應用`
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up