今日工具

  • 硬件:

    • esp8266
    • DHT11温湿度传感器
  • 软件:
    • Arduino

ESP8266 是一款由乐鑫 Espressif 公司制作的低成本的 Wi-Fi 芯片,具有完整的 TCP / IP 协议栈和微控制器功能。它专为移动设备、可穿戴电子产品和物联网应用设计,功耗很低且价格非常低廉。

我这里使用的 NodeMcu 开发板即搭载了这款芯片。

Arduino IDE 是由 Arduino 官方提供的支持 C 语言的集成开发环境,主要是针对 Arduino 系列的开发板进行编程。

通过简单的配置,可以在原本的编程环境里添加上对 ESP8266 开发板的支持。对于熟悉 Arduino 函数库和开发流程的用户,基本上没有任何使用上的区别。

一、初始化配置

我也是佛了自己,拿个充电线当数据线,在那里疯狂尝试,看了n篇博文,下了n个驱动······
  1. 下载 Arduino IDE 并配置
  • 官网传送门:https://www.arduino.cc/en/main/software
  • 安装正常跟随就好
  • 打开后,进入首选项,找到附加开发板管理器地址,在后面添加信息:

    http://arduino.esp8266.com/stable/package_esp8266com_index.json

  • 点击工具- 开发板 - 开发板管理器,找到esp8266并安装

  • 重启,看到 ESP8266 开发板选项,结束

二、安装驱动

驱动下载地址:蓝奏云

记得用数据线,数据线,数据线!!!

不然驱动安装完了还是识别不了串口,当你发现有CH340出现,则成功

三、测量温湿度(第一个项目)

本实例中,使用 DHT11 温湿度传感器测量室内湿度和温度,再把结果输出到 Arduino IDE的串口监视器中

  • 加载两个依赖库(项目 - 加载库 - 管理库,搜索安装)

    • Adafruit Unified Sensor
    • DHT sensor library
  • 新建工程

    • 源代码:
#include "DHT.h"
#define DHTPIN 5
#define DHTTYPE DHT11 // Initialize DHT sensor
DHT dht(DHTPIN, DHTTYPE, 15); void setup() { // Start Serial
Serial.begin(115200); // Init DHT
dht.begin();
} void loop() { // Reading temperature and humidity
float h = dht.readHumidity();
float t = dht.readTemperature(); // Display data
Serial.print("Humidity: ");
Serial.print(h);
Serial.print(" %\t");
Serial.print("Temperature: ");
Serial.print(t);
Serial.println(" *C "); // Wait a few seconds between measurements.
delay(2000);
}
  • 接线:

    | NodeMcu | DHT11 |

    | :----: | :----: |

    | 3V | VCC |

    | GND | GND |

    | D1 | DATA|

  • 编译运行,记得选对端口

  • 打开串口监视器查看运行结果


地处杭州,人在寝室

四、连接WiFi环境(核心功能)

  • ESP8266WiFi库安装一下

  • 示例代码

// Import required libraries
#include <ESP8266WiFi.h> // WiFi parameters
const char* ssid = "your_wifi_name";
const char* password = "your_wifi_password"; void setup(void)
{
// Start Serial
Serial.begin(115200); // Connect to WiFi
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected"); // Print the IP address
Serial.println(WiFi.localIP());
} void loop() {
}
  • 编译上传

博主用的是手机热点,实测是没什么问题的。

说起这个,我之前暑假就想做物联网了,然后开学前几天,闲鱼捡了一个路由器,奈何学校好像是动态IP,得用老毛子操作一波:|但是我那个路由器又内存太小了,刷不了固件,可能是因为TP-LINK的原因,专家建议以后去买Tenda,可玩性高hhhhh

不过现在也不用路由器咯~

四、 aREST 框架

aREST 框架可以为一些常见的嵌入式开发板提供 RESTful 接口,支持通过串口、Wi-Fi、以太网、蓝牙等硬件发送命令至开发板,激发特定的操作,并将数据以 JSON 的格式返回给控制端用户。

使用 aREST 框架既可以在本地网络环境中控制联网设备,也可以借助云端平台进行远程操作或监控。

结合之前的温湿度项目,可以将连接 Wi-Fi 后的 NodeMcu 开发板作为一个实现了 REST API 的本地服务器,通过访问其 IP 地址来获取相应的温湿度数据(JSON 格式)。

  • 实例代码
// Import required libraries
#include "ESP8266WiFi.h"
#include <aREST.h>
#include "DHT.h" // DHT11 sensor pins
#define DHTPIN 5
#define DHTTYPE DHT11 // Create aREST instance
aREST rest = aREST(); // Initialize DHT sensor
DHT dht(DHTPIN, DHTTYPE, 15); // WiFi parameters
const char* ssid = "wifi-name";
const char* password = "wifi-pass"; // The port to listen for incoming TCP connections
#define LISTEN_PORT 80 // Create an instance of the server
WiFiServer server(LISTEN_PORT); // Variables to be exposed to the API
float temperature;
float humidity; void setup(void)
{
// Start Serial
Serial.begin(115200); // Init DHT
dht.begin(); // Init variables and expose them to REST API
rest.variable("temperature",&temperature);
rest.variable("humidity",&humidity); // Give name and ID to device
rest.set_id("1");
rest.set_name("esp8266"); // Connect to WiFi
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected"); // Start the server
server.begin();
Serial.println("Server started"); // Print the IP address
Serial.println(WiFi.localIP());
} void loop() { // Reading temperature and humidity
humidity = dht.readHumidity();
temperature = dht.readTemperature(); // Handle REST calls
WiFiClient client = server.available();
if (!client) {
return;
}
while(!client.available()){
delay(1);
}
rest.handle(client);
}

输入ip地址访问,需在一个WiFi环境下

还想连接 OLED 显示出来,明天再做吧,晚上报名了阿里云的 ECS课堂,先重置了ECS,这几天还会做些IoT的项目ovo

end

IOT(esp8266)的更多相关文章

  1. ESP8266 系统环境搭建

    1. 前言 因为ESP8266/ESP32这个开发环境没少折腾,是真没见过这么难搞又不清晰的环境. 简单开发可以使用Arduino IDE ,这个平台还是挺好的.开发使用Arduino的函数库,很高效 ...

  2. ESP8266文档阅读2A-SDK-Espressif IoT SDK 使用手册v1.0.1.pdf

    2A-SDK-Espressif IoT SDK 使用手册v1.0.1.pdf 1.前言 本⽂文主要介绍基于ESP8266物联⺴⽹网模块的SDK相关使⽤用⽅方法,包括开发⼯工具使⽤用以及SDK软件包架 ...

  3. 通过阿里云的IOT平台控制ESP8266

    通过阿里云的IOT平台控制ESP8266 #include <ESP8266WiFi.h> /* 依赖 PubSubClient 2.4.0 */ #include <PubSubC ...

  4. esp8266 IOT Demo 固件刷写记录

    将编译好的固件按照下面地址刷写到esp8266 出现下面错误是因为刷写的设置不对,按照图上设置: load 0x40100000, len 26828, room 16 tail 12chksum 0 ...

  5. ESP8266开发课堂之 - 建立一个新项目

    项目架构 ESP8266项目开发并非使用IDE自动管理工程文件,而是使用了诸多第三方程序如Python,以及使用了Makefile管理依赖与控制编译,所以项目的创建与日常维护较为复杂,本篇将详述创建一 ...

  6. 使用Web页面配置ESP8266的参数

    前言 使用Web页面配置ESP8266的参数相对于使用串口AT指令配置更加直观和简单.与配置路由器方式类似. 基本思路 基本思路是ESP8266工作AP模式下,作为TCP Server监听TCP Cl ...

  7. [IOT] 自制蓝牙工牌办公室定位系统 (一)—— 阿里物联网平台概览及打通端到云(硬核·干货)

    目录:老少皆宜.超长干货文警告 1.快速入门创建产品 -- 小白,打包带走去吹牛 2.代码分析 -- 老炮,快速了解能用上 2.1 从start.sh分析开发环境如何自动构建 2.2 从sample. ...

  8. ESP8266开发笔记

    自1999年MIT的Kevin Ash-ton教授首次提出物联网(IoT)的概念至今已经有20年了.放眼现在国内外的物联网市场,真可谓是百家争鸣,方兴未艾,无数家软硬件公司在这里舞浪弄潮,逐鹿其中,上 ...

  9. 微信硬件平台(一) 公众号 ESP8266 Arduino LED

    微信硬件平台 本文目的,使用微信公众号控制ESP8266的LED开和关.进一步使用微信当遥控器(避免写APP或者IOS或者小程序),控制一切设备.给两个关键的总教程参考. 官网教程  微信硬件平台 微 ...

随机推荐

  1. 操作系统-中断(2)IA-32/Linux的向量中断方式

    一.Intel定义下的异常和中断 不同体系和教材往往对异常和中断有不同的定义. Intel定义:中断是一种典型的由I/O设备触发的.与当前正在执行的指令无关的异步事件:而异常是处理器执行一条指令时,由 ...

  2. MySQL添加外键报错 - referencing column 'xx' and referenced column 'xx' in foreign key constraint 'xx' are incompatible

    MySQL给两个表添加外键时,报错 翻译意思是:外键约束“xx”中的引用列“xx”和引用列“xx”不兼容 说明两个表关联的列数据类型不一致,比如:varchar 与 int,或者 int无符号 与 i ...

  3. php的负整数和正整数相加(负数以补码的形式存在内存,正数以原码的形式存在内存)

    首先先理解原码,反码,补码 十进制为例 原码: 5的原码:00000101 反码:11111010 补码:补码在末尾加1即   11111011  (正数的补码就是其负数,即5的补码就是-5) 正数在 ...

  4. Python中的协程,为什么说它的底层是生成器?

    我们曾经在golang关于goroutine的文章当中简单介绍过 协程 的概念,我们再来简单review一下.协程又称为是微线程,英文名是Coroutine.它和线程一样可以调度,但是不同的是线程的启 ...

  5. springboot2.x基础教程:Swagger详解给你的接口加上文档说明

    相信无论是前端还是后端开发,都或多或少地被接口文档折磨过.前端经常抱怨后端给的接口文档与实际情况不一致.后端又觉得编写及维护接口文档会耗费不少精力,经常来不及更新.其实无论是前端调用后端,还是后端调用 ...

  6. JS中的数组,添加删除元素,判断是否存在一个值的方法总结

    一.添加元素: 1:在最后添加,返回数组长度:arr.push(...); 2:在最前面添加,返回数组长度:arr.unshift(...); 3:在指定位置添加,没有返回值:arr[i] = xxx ...

  7. 「查缺补漏」巩固你的Nginx知识体系

    Nginx篇 基本介绍 Nginx是一款轻量级的 Web服务器 / 反向代理服务器 / 电子邮件(IMAP/POP3)代理服务器,主要的优点是: 支持高并发连接,尤其是静态界面,官方测试Nginx能够 ...

  8. 详解 Python 的二元算术运算,为什么说减法只是语法糖?

    原题 | Unravelling binary arithmetic operations in Python 作者 | Brett Cannon 译者 | 豌豆花下猫("Python猫&q ...

  9. 腾讯云 云开发 部署 Blazor网站

    Blazor 应用程序除了在 Github Pages/Gitee Pages等静态资源部署以外,现在你有了一个新的选择,那就是使用云开发静态网站功能来部署啦! 系统依赖 在进行后续的内容前,请先确保 ...

  10. odoo10甘特图gantt view

    odoo10中的gantt图示例 1.Gantt属性说明 甘特图视图的根元素是<gantt />,它没有子节点但可以采用以下属性: date_start (required) 提供每条记录 ...