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");
            }
      }
  }
}

小生目前才疏学浅,写到的都是基础,一定继续努力。

在这里插入图片描述

  • 14
    点赞
  • 76
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值