ArduiNo(WeMos D1)
文章目錄
1.WeMos D1介紹
特性
- 基於ESP-8266EX
- Arduino兼容,使用rduino IDE來編程
- 11 x I/O 引腳
- 1 x ADC 引腳(輸入範圍0-3.3V)
- 板載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");
}
}
}
}
小生目前才疏學淺,寫到的都是基礎,一定繼續努力。