当前位置: 首页 > news >正文

arduino D1 UNO R3 使用记录(保姆级教程)

之前贪便宜花了19.9买了个这个D1,不过一直没用。最近闲来无事想着拿这个做个东西,发现还不太容易用(主要是被这个名字误导了,其实应该是WEMOS D1),折腾了半天可算折腾完了,记录一下使用过程,省的以后忘了。

1.首先,要认清板子

我买的这个板子长这样,上面的wifi模块是ESP-12F。

2.连接到电脑

我买的是microusb口的,使用一根microusb线连接到电脑就好。

3.CH340驱动安装

首先先不着急安装,直接搜索设备管理器打开,看下端口这款有没有这个CH340,如果有了那就不用安装了。

如果显示的是个感叹号,或者等半天还没自动安装好驱动,那就下载官方驱动,南京沁恒微电子股份有限公司,装上就好了,直到端口变成我图里这样。

4.Arduino ide的设置

这个不需要特别版本的Arduinoide,随便在网上找个下了就行。打开arduino的ide,文件->首选项,把下面这个链接粘贴到附加开发板管理器网址栏里:https://arduino.esp8266.com/stable/package_esp8266com_index.json。然后点击好。

再点击工具,开发板->开发板管理器,搜8266安装就好了,这里安装可能会提示失败也可能会提很慢,建议拿工具加个速(不方便说,clash v2ray都可以)。

5.下载验证

这是一个灯闪烁的代码,直接复制进去就好。

void setup() {pinMode(LED_BUILTIN, OUTPUT);     
}void loop() {digitalWrite(LED_BUILTIN, LOW);   delay(200);                     digitalWrite(LED_BUILTIN, HIGH);  delay(200);                     
}

烧录设置就按我图上这样设置就好,主要是板子选LOLIN(WEMOS)D1 R2这个,然后波特率设置115200就好,端口COMx就按照之前设备管理器里的那个ch340出现的端口。

设置完毕后点击对号旁边的→进行烧录下载。

烧录完毕,ESP12F角上的灯就会开始闪烁。

6. WIFI 测试

文件->示例里的ESP8266例程随便选一个。

烧录下载完毕之后,打开工具->串口监视器,如果输出一堆乱码了不要慌,把串口监视器右下角的波特率设置一下,就会发现窗口里显示出了wifi扫描的结果。

至此,这块板子已经可以根据例程去进行各种开发了。

7.联网使用

7.1 接入家庭网络(Station,STA模式)

这个模式是作为一个物联网设备接入家里的网络使用,例如通过这个板子控制继电器去开关灯。

这里我让8266去连接家里的wifi(直接复制用的话需要改一下ssid和密码,不改的话你也连不到我家的wifi),连接成功后会创建一个udp服务器。

#include <ESP8266WiFi.h>
#include <WiFiUdp.h>const char* ssid = "xiaomi4g";
const char* password = "123456789";
WiFiUDP udp;
unsigned int localUdpPort = 4210;  // 本地监听端口void setup() {Serial.begin(115200);WiFi.begin(ssid, password);while (WiFi.status() != WL_CONNECTED) {delay(1000);Serial.println("Connecting to WiFi..");}Serial.println("Connected to the WiFi network");udp.begin(localUdpPort);Serial.printf("Now listening at IP %s, UDP port %d\n", WiFi.localIP().toString().c_str(), localUdpPort);
}void loop() {int packetSize = udp.parsePacket();if (packetSize) {// 接收数据并处理char packetBuffer[255];int len = udp.read(packetBuffer, 255);if (len > 0) {packetBuffer[len] = 0;}Serial.printf("Received %d bytes from %s, port %d (\"%s\")\n", len, udp.remoteIP().toString().c_str(), udp.remotePort(), packetBuffer);String content=String(packetBuffer);//Serial.println(content);String gowork="666";if(content==gowork){Serial.println("i want to do something");//todo  这里可以控制引脚高电平低电平去控制继电器之类的东西}else{ Serial.println("nothing to do ");}}
}

运行后会显示如下图所示,注意这个192.168.31.114就是esp8266创建的udp服务器地址,监听端口是4210。

然后手机端下载个网络调试助手,然后选择udp客户端,连接这个服务器的ip和端口就行。这个之前说过就不细说了。

发送666 就会执行你想让它干的事。多条指令的话就在代码里多加几个if else好了。

7.2 独立WIFI (Access Point,AP模式)

独立WIFI适用于没有外部网络的情况下,不同设备间进行通信。一般大学生毕设做遥控小车什么的可以用这种模式。在这里我设置了一个Arduino的WiFi,密码是123456789.

#include <ESP8266WiFi.h>
#include <WiFiUdp.h>const char* ssid = "Arduino";
const char* password = "123456789";
WiFiUDP udp;
unsigned int localUdpPort = 4210;  // 本地监听端口void setup() {Serial.begin(115200);// 配置ESP8266为接入点模式bool result = WiFi.softAP(ssid, password);if(result == true){Serial.println("配置为接入点成功");IPAddress IP = WiFi.softAPIP();Serial.print("AP IP地址:");Serial.println(IP);} else {Serial.println("配置为接入点失败");}udp.begin(localUdpPort);Serial.printf("Now listening at IP %s, UDP port %d\n", WiFi.localIP().toString().c_str(), localUdpPort);
}void loop() {int packetSize = udp.parsePacket();if (packetSize) {// 接收数据并处理char packetBuffer[255];int len = udp.read(packetBuffer, 255);if (len > 0) {packetBuffer[len] = 0;}Serial.printf("Received %d bytes from %s, port %d (\"%s\")\n", len, udp.remoteIP().toString().c_str(), udp.remotePort(), packetBuffer);String content=String(packetBuffer);Serial.println(content);String gowork="666";if(content==gowork){Serial.println("i want to do something");//todo}else{ Serial.println("nothing to do ");}}
}

运行成功后,会显示下面的界面,显示udp服务器ip为192.168.4.1,监听端口4210.。

然后打开手机就可以看到Arduino这个信号满格的wifi了。连接上之后设置好udp服务的ip与端口就可以正常通信了。

8.接入Blinker(俗称 “上云端”)

8.1 手机blinker

注意免费额度只有1个设备,多个设备上云的可以上官网购买服务(不是广告,我是白嫖党,就是说一下在哪能增加设备。有能力也可以自己买个域名搭个web服务自己建个云,blinker比较适用于大学生做个毕设啥的, 或者自己做个喂猫喂鱼的机器用)。

首先,上点灯科技 (diandeng.tech)这里下载手机blinker应用。点击右上角加号添加设备。选择独立设备。

8.2 Arduino IDE添加blinker的库

还是上点灯科技 (diandeng.tech)这里下载,下载下来应该是个zip包,然后在ArduinoIDE的项目->加载库->添加.ZIP库。

添加完就可以看见例程了。

也可以直接用以下代码,注意要把密钥更改一下,这个相当于你的设备在blinker云端的身份证号。(密钥在你手机端的blinker,左侧有三个横杠,点进去有个设备管理,点到设备之后会显示有个*********的。把那个替换到底下的代码里的auth那)。

还要注意改wifi名,改成你家里的网,这样就能在公司控制你家的设备了。

整体的信息流程就是板子->你家路由器->基站->blinker公司的服务器->基站->你的手机,反过来也一样。

/* ******************************************************************* Download latest Blinker library here:* https://github.com/blinker-iot/blinker-library/archive/master.zip* * * Blinker is a cross-hardware, cross-platform solution for the IoT. * It provides APP, device and server support, * and uses public cloud services for data transmission and storage.* It can be used in smart home, data monitoring and other fields * to help users build Internet of Things projects better and faster.* * Make sure installed 2.7.4 or later ESP8266/Arduino package,* if use ESP8266 with Blinker.* https://github.com/esp8266/Arduino/releases* * Make sure installed 1.0.5 or later ESP32/Arduino package,* if use ESP32 with Blinker.* https://github.com/espressif/arduino-esp32/releases* * Docs: https://diandeng.tech/doc*       * * ****************************************************************** * Blinker 库下载地址:* https://github.com/blinker-iot/blinker-library/archive/master.zip* * Blinker 是一套跨硬件、跨平台的物联网解决方案,提供APP端、设备端、* 服务器端支持,使用公有云服务进行数据传输存储。可用于智能家居、* 数据监测等领域,可以帮助用户更好更快地搭建物联网项目。* * 如果使用 ESP8266 接入 Blinker,* 请确保安装了 2.7.4 或更新的 ESP8266/Arduino 支持包。* https://github.com/esp8266/Arduino/releases* * 如果使用 ESP32 接入 Blinker,* 请确保安装了 1.0.5 或更新的 ESP32/Arduino 支持包。* https://github.com/espressif/arduino-esp32/releases* * 文档: https://diandeng.tech/doc*       * * *****************************************************************/#define BLINKER_WIFI#include <Blinker.h>char auth[] = "xxxxxxx";//替换自己设备的密钥
char ssid[] = "xiaomi4g";
char pswd[] = "123456789";// 新建组件对象
BlinkerButton Button1("btn-abc");
BlinkerNumber Number1("num-abc");int counter = 0;// 按下按键即会执行该函数
void button1_callback(const String & state)
{BLINKER_LOG("get button state: ", state);digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));
}// 如果未绑定的组件被触发,则会执行其中内容
void dataRead(const String & data)
{BLINKER_LOG("Blinker readString: ", data);counter++;Number1.print(counter);
}void setup()
{// 初始化串口Serial.begin(115200);BLINKER_DEBUG.stream(Serial);BLINKER_DEBUG.debugAll();// 初始化有LED的IOpinMode(LED_BUILTIN, OUTPUT);digitalWrite(LED_BUILTIN, HIGH);// 初始化blinkerBlinker.begin(auth, ssid, pswd);Blinker.attachData(dataRead);Button1.attach(button1_callback);
}void loop() {Blinker.run();
}

然后在手机端添加个button和number组件,再把名字改成btn-abc,num-abc就好了。代码烧录下载好之后就会发现你的手机里会显示你的设备上线了,你点一下按钮这个板子的灯就会亮灭。

http://www.xdnf.cn/news/876691.html

相关文章:

  • CET6 仔细阅读 24年12月第三套-C1 恐惧这一块
  • 电商接口计费标准是什么?
  • FART 精准脱壳:通过配置文件控制脱壳节奏与范围
  • 【算法题】最长回文子串
  • 多线程与fork使用
  • 从繁琐到简易:3 款P图工具解锁图片编辑新体验
  • 在集成小刀knife4时报错找不到@EnableSwagger2WebMvc注解
  • 22. 括号生成【 力扣(LeetCode) 】
  • 蓝牙防丢器应用方案
  • hadoop集群单词统计(ssh与web)
  • AI助力Java开发:减少70%重复编码,实战效能提升解析
  • 如何在 git dev 中创建合并请求
  • 具备强大的数据处理和分析能力的智慧地产开源了
  • 【项目实践】SMBMS(Javaweb版)(二)登录功能
  • 《动手深度学习》8.2文本预处理—代码分析
  • Kafka消息队列笔记
  • 打包成windows exe
  • json 支持复杂结构预览、大模型服务部署体验优化|ModelWhale 版本更新
  • Ansible自动化运维全解析:从设计哲学到实战演进
  • 手写Promise中的实例方法catch
  • 如何做出更明智的选择:从吃馒头看经济学思维
  • 嵌入式学习Day32
  • 三维坐标转换
  • AXPM11584:颠覆传统,发现新可能
  • 灰狼优化算法MATLAB实现,包含种群初始化和29种基准函数测试
  • Mask篇 (含引导层、不规则遮罩)
  • 深入解析Java17核心新特性(密封类、模式匹配增强、文本块)
  • Python 类型注释 - typing
  • 关于Dify聊天对话名称无法自动生成的原因和解决方法
  • ReviewHub:实现Booster与设计工具端无缝链接的评审协作平台