ArduiNo(WeMos D1)基礎(一)

ArduiNo(WeMos D1)

1.WeMos D1介紹

在這裏插入圖片描述
特性

  1. 基於ESP-8266EX
  2. Arduino兼容,使用rduino IDE來編程
  3. 11 x I/O 引腳
  4. 1 x ADC 引腳(輸入範圍0-3.3V)
  5. 板載5V 1A開關電源(高輸入電壓24V)

工作中:
和stm32模塊開發類似,集成度高
STM32方案也更經濟便宜

2. ArduiNo開發環境,和keil對比

在這裏插入圖片描述
優點: 集成很多開發庫如串口,網絡,sg90等
各種硬件開發接口,迅捷開發
自帶串口調試工具


缺點: 程序編譯速度慢

WeMos D1在ArduiNo下編程要注意開發環境的配置
工具-----> 板:“WeMos D1”

3. 關於蜂鳴器部分的io口驅動

在這裏插入圖片描述
蜂鳴器引腳:

VCC ---- Wemos 3.3v
GND ---- Wemos GND
I/o ---- Wemos D5
(D5配置成輸出端口,低電平蜂鳴器響,高電平不響)


3-1.編程部分:

Wemos同Arduino
上電後不斷執行loop函數中的代碼,我們核心控制代碼寫入loop

setup函數只調用一次,一般用於硬件相關的初始化,比如IO口,串口,wifi等

void setup() {
   
   
}

void loop() {
   
   
}

基礎控制:蜂鳴器叫喚和不叫喚

void setup() {
   
   
             pinMode(D5, OUTPUT); //設置引腳爲輸出引腳
             digitalWrite(D5, HIGH); //蜂鳴器初始化閉嘴
}

void loop() {
   
   
digitalWrite(D5, HIGH);     // 輸出高電平,蜂鳴器閉嘴
delay(1000);		//這一秒內都得閉嘴
digitalWrite(D5, LOW);     //輸出低電平,蜂鳴器吼起來
delay(1000);		//吼一秒(延時期間,蜂鳴器控制引腳屬於低電平)
}

4.串口通信

通信顧名思義就是傳送數據
電腦和單片機,單片機和單片機之間都可以互相傳數據,
串口是一個有線傳輸的方式,
像usb傳輸一樣,
比如鼠標滑動,單擊就是發生了鼠標數據發送給電腦,從而實現操控



4-1.有關的API

Serial.begin() (初始化函數)

▶描述:開啓串口,通常置用於setup()函數。
▶原型:
		Serial.begin(spend)
		Serial.begin(spend,config)                         
▶參數:
		spend:波特率,一般取值9600,115200等。
		config:設置數據位,校驗位和停止位。默認SERIAL_8N1表示8個數據位,無校驗	。
▶返回值:
		無。	

Serial.println() (串口發送函數)

▶描述:串口輸出數據並換行。
▶原型:
		Serial.println(val)
		Serial.begin(val,format)
▶參數:
		val:打印的值,任何數據類型。
		format:輸出的數據格式。
▶返回值:返回寫入的字節數。

Serial.available() (有數據到來函數)

▶描述:判斷串口緩衝區的狀態,返回從串口緩衝區讀取的字節數。
▶原型:Serial.available()
▶參數:無。
▶返回值:可讀取的字節數。

Serial.read() (串口發送函數)

▶描述:讀取串口數據,一次讀一個字符,讀完後刪除已讀數據。
▶原型:Serial.read()
▶參數:無。
▶返回值:返回串口緩存中第一個可讀字節,當沒有可讀數據是返回-1,整數類型。

4-2.串口控制蜂鳴器

串口控制蜂鳴器

void setup() {
   
   
  pinMode(D5, OUTPUT);    //設置引腳爲輸出引腳
  Serial.begin(115200);       //初始化串口,設置波特率爲115200
  Serial.println(“start”);       //測試串口是否啓動,啓動成功就發送start
}
void loop() {
   
   
  int cmd;
  if ( Serial.available() > 0 ) {
   
      //檢測串口是否有數據
    cmd = Serial.read();          // 讀取串口數據
   
    if (cmd == 1) {
   
                      //如果讀取的數據是1
      digitalWrite(D5, LOW);   // 蜂鳴器響起
    } else {
   
   
      digitalWrite(D5, HIGH);  // 否則(讀取數據非1)蜂鳴器不響
    }
  }

}

5. WeMos和Wifi

(板載無線網卡支持AP(路由), sta(上網設備)模式)

5-1.作爲設備接入wifi(STA模式)

char* ssid = "xxxxx";                           //“wifi熱點名稱”
char* passwd = "xxxxx";            //“wifi熱點密碼”

void initWifiSta()
{
   
   
  WiFi.mode(WIFI_STA);         // 設置STA模式
  WiFi.begin(ssid, passwd);   //連接網絡
  while (WiFi.status() != WL_CONNECTED) {
   
   
         Serial.print(".");
        delay(500);
   }
  Serial.println(WiFi.localIP());  //通過串口打印wemos的IP地址
  delay(500);
    
}

Tips: 注意代碼的大小寫!!!!!!!!,注意中英文符號
#include<ESP8266WiFi.h>

char* ssid = "xxxxx";       //“wifi熱點名稱”            
char* passwd = "xxxxx";  //”wifi熱點密碼”

void initWifiSta()
{
   
   
  WiFi.mode(WIFI_STA);         // 設置STA模式
  WiFi.begin(ssid, passwd);   //連接網絡
  while (WiFi.status() != WL_CONNECTED) {
   
   
         Serial.print(".");
        delay(500);
   }
  
}

void setup() {
   
   
  Serial.begin(115200);
  initWifiSta();
}

void loop() {
   
   
  Serial.println(WiFi.localIP());  //通過串口打印wemos的IP地址
  delay(500);

}

5-2. 架設Wemos爲ftp服務器

服務器兩大要素:1.地址 2.端口號

int port = 8888;  //端口號
WiFiServer server(port); // 設置服務器端口號


void loop() {
   
   
WiFiClient client = server.available();  //服務初始化


while (client.connected()) {
   
     //等待客戶端連接
	while (client.available() > 0) {
   
     //有數據到來,類似串口的那個函數
      		cmd = client.read();//讀取數據
	}
}
}

Tips: 啓動服務器的API:       server.begin();

5-3.編程WeMos服務器,通過手機TCP控制

#include<ESP8266WiFi.h>

char* ssid = "xxxxx";       //“wifi熱點名稱”            
char* passwd = "xxxxx";  //”wifi熱點密碼”

int port = 8888;  //端口號
WiFiServer server(port); // 設置服務器端口號

void initWifiSta()
{
   
   
  WiFi.mode(WIFI_STA);         // 設置STA模式
  WiFi.begin(ssid, passwd);   //連接網絡
  while (WiFi.status() != WL_CONNECTED) {
   
   
         Serial.print(".");
        delay(500);
   }
  Serial.println(WiFi.localIP());  //通過串口打印wemos的IP地址
}

void setup() {
   
   
  Serial.begin(115200);
  //啓動WiFi
  //接入WiFi
  initWifiSta();
  server.begin();//啓動服務器api
}

void loop() {
   
   
  char cmd;
  WiFiClient client = server.available();  //服務初始化
  while (client.connected()) {
   
                //等待客戶端連接
    while (client.available() > 0){
   
            //有數據到來,類似串口的那個函數
        cmd = client.read();//讀取數據
        if(cmd == 1){
   
   
          Serial.println("lpl");
          }else{
   
   
            Serial.println("lck");
            }
      }
  }
}

小生目前才疏學淺,寫到的都是基礎,一定繼續努力。

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章