【雕爷学编程】Arduino动手做(175)---机智云ESP8266开发板模块4

news2024/11/15 18:02:52

37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来—小小的进步或是搞不掂的问题,希望能够抛砖引玉。

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百七十五:ESP8266机智云开发板 ESP12F wifi模块(支持云端的智能硬件开发套件)

在这里插入图片描述
知识点:机智云 (www.gizwits.com)
机智云是亚洲最大的智能硬件自助开发和云服务平台,产品及服务涵盖终端管理、连接管理、应用支持和业务分析等主要功能,为有志于进军物联网的开发者提供智能硬件一站式开发工具及云端运维服务,提供 IoT 开源嵌入式代码库、云端 API 接口、APP 端 SDK,方便开发者进行二次开发,同时支持公有云、私有云、混合云以及全球化部署,是目前 IoT 技术最成熟、云端应用功能最完善、全球量产客户最多、最受 IoT 开发者喜爱的量产级别智能硬件开发及云服务平台,被业界及媒体公认为物联网第三方云服务第一品牌。

在这里插入图片描述

ESP8266机智云开发板模块
(官方简介)这是一个支持云端的智能硬件开发套件,史上最简单最具性价比的物联网开发板,不需要你懂网络、TCP/IP、HTP、MQTT底层复杂的知识,只要你会C语音,即可用安信可的机智云SDK快速实现二次开发,这个DEMO板可以用手机流量控制板载的RGB七彩灯,手机端APP,可以通过光敏电阻显示环境亮度。代码只要少作修改半个小时即可做出一款属于你自己的远程控制设备,系统免费生成APP(安卓、IOS),开放SDK,你只需要做下APP端UI界面即可研发成一个成品。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
ESP8266
1、低功耗、高集成度的 Wi-Fi 芯片
2、仅需 7 个元器件
3、超宽工作温度范围:-40°C 至 +125°C
4、ESP8285 - ESP8266 内封 8 Mbit Flash
5、高度集成——ESP8266EX 是业内集成度最高的 Wi-Fi 芯片,最小封装尺寸仅为 5mm x 5mm。ESP8266EX 高度集成了天线开关、射频 balun、功率放大器、低噪放大器、过滤器和电源管理模块,仅需很少的
电路,可将所占 PCB 空间降到最低。
6、32 位 Tensilica MCU——ESP8266EX 内置 Tensilica L10632 位微型控制器 (MCU),具有超低功耗和 16 位 RSIC,时钟速度最高可达 160 MHz。支持实时操作系统 (RTOS),目前 Wi-Fi 协议栈只用了 20% 的 MIPS,其他均可用于用户编程和开发。
7、低功耗——ESP8266EX 专为移动设备、可穿戴电子产品和物联网应用而设计,通过多项专有技术实现了最低功耗。ESP8266EX 有三种运行模式:激活模式、睡眠模式和深度睡眠模式,能够延长电池寿命。
8、性能稳定——ESP8266EX 集成了更多的元器件,性能稳定,易于制造,工作温度范围达到 -40°C 到 +125°C。

在这里插入图片描述

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百七十五: ESP8266 Witty Cloud ESP-12F WiFi模块 Witty Cloud 机智云开发板 ESP Witty
项目四:扫描可用的 WiFi 网络

实验开源代码

/*
  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验一百三十五: ESP8266 Witty Cloud ESP-12F WiFi模块 机智云开发板 ESP Witty
  项目四:扫描可用的 WiFi 网络
*/

#include <ESP8266WiFi.h>

const int greenPin = 12;

void setup() {
  Serial.begin(115200);
  pinMode(greenPin, OUTPUT);
  digitalWrite(greenPin, HIGH);
  delay (6000);
  digitalWrite(greenPin, LOW);
  Serial.println(F("\nESP8266 WiFi 扫描"));

  // 设置 WiFi 为站模式
  WiFi.mode(WIFI_STA);

  // 如果之前已连接,则断开与 AP 的连接
  WiFi.disconnect();
  delay(100);
}

void loop() {
  String ssid;
  int32_t rssi;
  uint8_t encryptionType;
  uint8_t* bssid;
  int32_t channel;
  bool hidden;
  int scanResult;

  Serial.println(F("正在开始WiFi扫描..."));

  scanResult = WiFi.scanNetworks(/*async=*/false, /*hidden=*/true);

  if (scanResult == 0) {
    Serial.println(F("未找到网络"));
  } else if (scanResult > 0) {
    Serial.printf(PSTR("%d 个网络找到:\n"), scanResult);

    // Print unsorted scan results
    for (int8_t i = 0; i < scanResult; i++) {
      WiFi.getNetworkInfo(i, ssid, encryptionType, rssi, bssid, channel, hidden);

      Serial.printf(PSTR("  %02d: [CH %02d] [%02X:%02X:%02X:%02X:%02X:%02X] %ddBm %c %c %s\n"),
                    i,
                    channel,
                    bssid[0], bssid[1], bssid[2],
                    bssid[3], bssid[4], bssid[5],
                    rssi,
                    (encryptionType == ENC_TYPE_NONE) ? ' ' : '*',
                    hidden ? 'H' : 'V',
                    ssid.c_str());
      delay(0);
    }
  } else {
    Serial.printf(PSTR("WiFi 扫描错误 %d"), scanResult);
  }

  // 在再次扫描之前稍等片刻
  delay(5000);
  Serial.println(F(""));
}

项目四:扫描可用的 WiFi 网络

项目串口返回情况

在这里插入图片描述
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百七十五: ESP8266 Witty Cloud ESP-12F WiFi模块 机智云开发板 ESP Witty
项目五:扫描可用的 WiFi 网络之二,按钮输入用于启动扫描和板载 LED亮起以指示扫描何时进行
在每个回路上,还要检查连接到 LDR 的模拟输入并调整RGB 绿色 LED 的亮度以匹配测量的亮度。

实验开源代码

/*
  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验一百三十五: ESP8266 Witty Cloud ESP-12F WiFi模块 机智云开发板 ESP Witty
  项目五:扫描可用的 WiFi 网络之二,按钮输入用于启动扫描和板载 LED亮起以指示扫描何时进行
  在每个回路上,还要检查连接到 LDR 的模拟输入并调整RGB 绿色 LED 的亮度以匹配测量的亮度。
*/

#include "ESP8266WiFi.h"

const int BUTTON_PIN = 4;    // 定义按钮所连接的引脚
const int ON_BOARD_LED = 2;  // 定义板载 LED 连接到的引脚
const int RGB_G_PIN = 12;    // RGB 绿色 LED
const int LDR_PIN = A0;      // 定义 LDR光敏电阻 连接的模拟引脚

//===============================================================================
//  初始化
//===============================================================================

void setup() {
  pinMode(ON_BOARD_LED, OUTPUT);       // 将 LED_BUILTIN 引脚初始化为输出
  pinMode(BUTTON_PIN, INPUT_PULLUP);   // 使用内置上拉初始化按钮引脚
  digitalWrite(ON_BOARD_LED, HIGH);    // 确保 LED 关闭
  Serial.begin(115200);                // 设置通信速率为 115200

  // 将 WiFi 设置为站模式,如果之前已连接,则与 AP 断开连接
  WiFi.mode(WIFI_STA);
  WiFi.disconnect();
  delay(100);
  Serial.println("WiFi扫描 初始化完成");
}

//===============================================================================
// 主要程序
//===============================================================================

void loop() {
  int btn_Status = HIGH;
  int lightIntensity;
  lightIntensity = analogRead(LDR_PIN);  // 读取光照强度
  analogWrite( RGB_G_PIN, map(lightIntensity, 40, 1023, 0, 1023));
  btn_Status = digitalRead (BUTTON_PIN);  // 检查按钮状态
  if (btn_Status == LOW) {                // 按钮按下,所以做点什么
    Serial.print("光强度读数: ");
    Serial.println(lightIntensity);
    Serial.println("扫描开始......");
    Serial.println("");
    digitalWrite(ON_BOARD_LED, LOW);       // 打开 LED
    // 无线上网。扫描网络将返回找到的网络数量
    int n = WiFi.scanNetworks();
    Serial.println("扫描完成!");
    Serial.println("");
    if (n == 0)
      Serial.println("没有找到网络");
    else
    {
      Serial.print("找到网络=");
      Serial.print(n);
      Serial.println("个");

      for (int i = 0; i < n; ++i)
      {
        // 为找到的每个网络打印 SSID 和 RSSI
        Serial.print(i + 1);
        Serial.print(": ");
        Serial.print(WiFi.SSID(i));
        Serial.print(" (");
        Serial.print(WiFi.RSSI(i));
        Serial.print(")");
        Serial.println((WiFi.encryptionType(i) == ENC_TYPE_NONE) ? " : 不安全" : " : 加密");
        delay(10);
      }
    }
    Serial.println("");
    digitalWrite(ON_BOARD_LED, HIGH);    // 关闭 LED
  }
}

项目五:扫描可用的 WiFi 网络之二,按钮输入用于启动扫描和板载 LED亮起以指示扫描何时进行
在每个回路上,还要检查连接到 LDR 的模拟输入并调整RGB 绿色 LED 的亮度以匹配测量的亮度。

项目串口返回情况

在这里插入图片描述

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百七十五: ESP8266 Witty Cloud ESP-12F WiFi模块 机智云开发板 ESP Witty
项目六:尝试连接WiFi 网络(绿灯亮)

实验开源代码

/*
  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验一百三十五: ESP8266 Witty Cloud ESP-12F WiFi模块 机智云开发板 ESP Witty
  项目六:尝试连接WiFi 网络(绿灯亮)
*/

#include <ESP8266WiFi.h>
const char* ssid = "zhz2";
const char* password = "12345678";

void setup() {
  Serial.begin(115200);
  delay(10);
  pinMode(12, OUTPUT);
  pinMode(13, OUTPUT);
  pinMode(15, OUTPUT);
  digitalWrite(12, LOW);
  digitalWrite(13, LOW);
  digitalWrite(15, LOW);

  // 我们将首先连接到 Wi-Fi 网络:

  Serial.println();
  Serial.println();
  Serial.print("连接到 ");
  Serial.println(ssid);
  Serial.println("尝试连接WiFi 网络......");
  WiFi.begin(ssid, password);

  /*
    我们等到状态指示ESP8266已连接到Wi-Fi网络,
    此后,将显示Wi-Fi连接消息以及路由器分配给它的IP地址。
    您的路由器需要具备DHCP功能并且已激活DHCP功能:
  */

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
    Serial.println("");
  }
  Serial.println("Wi-Fi 已连接");
  Serial.println("IP地址: ");
  Serial.println(WiFi.localIP());
}

void loop() {
  if (WiFi.status() == WL_CONNECTED)
    digitalWrite(12, HIGH);//连接后绿灯亮
}

项目六:尝试连接WiFi 网络(绿灯亮)

项目串口返回情况

在这里插入图片描述

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百七十五: ESP8266 Witty Cloud ESP-12F WiFi模块 机智云开发板 ESP Witty
项目七:尝试连接多个WiFi 网络

  • 在启动时快速连接到以前的 WiFi 网络
  • 注册多个网络(至少 1 个)
  • 以最强信号 (RSSI) 连接到 WiFi
  • 当连接失败或丢失时回退以连接到下一个 WiFi
  • 回退以连接到 WiFi 扫描未报告的隐藏 SSID

实验开源代码

/*
  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验一百三十五: ESP8266 Witty Cloud ESP-12F WiFi模块 机智云开发板 ESP Witty
  项目七:尝试连接多个WiFi 网络
  - 在启动时快速连接到以前的 WiFi 网络
  - 注册多个网络(至少 1 个)
  - 以最强信号 (RSSI) 连接到 WiFi
  - 当连接失败或丢失时回退以连接到下一个 WiFi
  - 回退以连接到 WiFi 扫描未报告的隐藏 SSID
*/

#include <ESP8266WiFiMulti.h>

ESP8266WiFiMulti wifiMulti;

// 每个 AP 的 WiFi 连接超时。连接时间较长时增加。
const uint32_t connectTimeoutMs = 5000;

void setup() {
  // 不要在闪存中保存 WiFi 配置 - 可选
  WiFi.persistent(false);
  pinMode(12, OUTPUT);
  pinMode(15, OUTPUT);
  digitalWrite(12, LOW);
  digitalWrite(15, LOW);
  Serial.begin(115200);
  Serial.println("\nESP8266 Multi WiFi example");

  // 设置 WiFi 为站模式
  WiFi.mode(WIFI_STA);

  // 注册多个WiFi网络
  wifiMulti.addAP("zhz", "12345678");
  wifiMulti.addAP("zhz2", "12345678");
  wifiMulti.addAP("zhz_5G", "12345678");
  // 更多是可能的
}

void loop() {
  // 保持WiFi连接
  if (wifiMulti.run(connectTimeoutMs) == WL_CONNECTED) {
    Serial.print("WiFi 已连接: ");
    Serial.print(WiFi.SSID());
    Serial.print(" ");
    Serial.println(WiFi.localIP());
    digitalWrite(12, HIGH);//连接后绿灯亮
  } else {
    Serial.println("WiFi未连接!");
    digitalWrite(15, HIGH);//未连接红灯亮
  }
  delay(1000);
}

项目七:尝试连接多个WiFi 网络

  • 在启动时快速连接到以前的 WiFi 网络
  • 注册多个网络(至少 1 个)
  • 以最强信号 (RSSI) 连接到 WiFi
  • 当连接失败或丢失时回退以连接到下一个 WiFi
  • 回退以连接到 WiFi 扫描未报告的隐藏 SSID

项目串口返回情况

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/806487.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

互联网广告投放算法是怎么回事?这本书给你答案

目录 内容简介 作者简介 读者对象 书本目录 文末自购链接 广告平台的建设和完善是一项长期工程。例如&#xff0c;谷歌早于2003年通过收购Applied Semantics开展Google AdSense 项目&#xff0c;而直到20年后的今天&#xff0c;谷歌展示广告平台仍在持续创新和提升。广告平…

QT编写的串口助手

QT编写的串口助手 提前的知识 创建UI界面工程 找帮助文档 添加串口的宏

list与erase()

运行代码&#xff1a; //list与erase() #include"std_lib_facilities.h" //声明Item类 struct Item {string name;int iid;double value;Item():name(" "),iid(0),value(0.0){}Item(string ss,int ii,double vv):name(ss),iid(ii),value(vv){}friend istr…

2023-07-11——华中科技大计算机组成原理

windows下用nginx配置https服务器 1.安装nginx 先到nginx官网下在nginx http://nginx.org/en/download.html 将下载好的文件解压出来修改文件名为 nginx ,然后拷贝到C盘下&#xff0c;目录如下&#xff1a; 运行 nginx start nginx 验证 在浏览器中输入 localhost 访问即可&a…

随笔:信息系统项目管理师(软考高级2023)考试指南

1、软考的级别设置 1、全国计算机软件资格考试设三个级别层次&#xff0c;五个专业&#xff0c;共有27种岗位资格考试 2、除了初级信息处理技术员为上机考试&#xff0c;其他均为笔试 3、信息系统项目管理师、系统规划与管理师、系统集成项目管理工程师考试形式相对考验记忆…

ObjectArx 设置填充透明度问题

初始化透明度参数AcCmTransparency对象时,需要调用setAlpha设置透明度值,这里传入的值是0255,但cad特性面板上显示的是090,且经过测试发现,传入值与特性面板显示的值也是不同的,比如传入90,显示64,百度搜索了个寂寞,最后还是在谷歌找到了答案,原来设置的值和特性面板…

【Rasa】入门案例学习

Rasa初体验--构建对话机器人 NLU数据 version: "3.1"nlu:- intent: greetexamples: |- Hi- Hey!- Hello- Good day- Good morning- intent: subscribeexamples: |- I want to get the newsletter- Can you send me the newsletter?- Can you sign me up for the ne…

寄存器分配:图着色算法

寄存器分配&#xff1a;图着色算法 背景活跃分析寄存器冲突图图着色算法溢出 背景 在编译器的中间表示中&#xff0c;一般会设定虚拟寄存器有无限多个&#xff08;方便优化&#xff09;&#xff0c;而真实的物理寄存器是有限的&#xff0c;因而编译器后端在将中间表示翻译成目…

初步了解C++模板

一、函数模板 如果我们要写一个交换两个变量值的函数Swap&#xff0c;那么我们得对每一种类型都写一个&#xff0c;以便适用不同类型的参数&#xff0c;但是有了模板之后&#xff0c;可以简化操作 template<class T> void Swap(T& x, T& y) {T tmp x;x y;y …

百题千解计划【CSDN每日一练】订班服(附解析+多种实现方法:Python、Java、C、C++、C#、Go、JavaScript)

如果决意去做一件事了,就不要再问自己和别人值不值得,心甘情愿才能理所当然,理所当然才会义无反顾。 🎯作者主页: 追光者♂🔥 🌸个人简介: 💖[1] 计算机专业硕士研究生💖 🌟[2] 2022年度博客之星人工智能领域TOP4🌟 🏅[3] 阿里云社区特邀专…

大数据处理框架-Spark DataFrame构造、join和null空值填充

1、Spark DataFrame介绍 DataFrame是Spark SQL中的一个概念&#xff0c;它是一个分布式的数据集合&#xff0c;可以看作是一张表。DataFrame与RDD的主要区别在于&#xff0c;前者带有schema元信息&#xff0c;即DataFrame所表示的二维表数据集的每一列都带有名称和类型。 2、构…

Statefulset部署应用

上一部分我们分享到了使用 RS 没有办法让自己管理的多个 pod 都有一个独立的持久化声明&#xff0c;RS 没有办法在指定模板中对不同的 pod 做差异化处理 使用多个 RS 来分别管理自己的的一个 pod&#xff0c;当我们扩缩容的时候&#xff0c;也会出现问题&#xff0c;老的 pod …

10. Mybatis 项目的创建

目录 1. Mybatis 概念 2. 第一个 Mybits 查询 2.1 创建数据库和表 2.2 添加 Mybatis 框架支持 2.3 添加配置文件 2.4 配置 MyBatis 中的 XML 路径 2.5 添加业务代码 在学习 Mybatis 之前&#xff0c;我们需要知道 Mybatis 和 Spring 没有任何的关系。如果一定要强调二者…

UniSSOView 任意命令执行复现

免责声明 技术文章仅供参考,任何个人和组织使用网络应当遵守宪法法律,遵守公共秩序,尊重社会公德,不得利用网络从事危害国家安全、荣誉和利益,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失,均由使…

什么是专业级OV通配符https证书

通配符SSL证书指的是SSL数字证书中可以用一张SSL数字证书保护主域名以及主域名下所有子域名的数字证书。我们按照验证方式将通配符SSL数字证书分为DV基础型和OV企业型通配符SSL证书两种&#xff0c;专业级的OV通配符SSL证书指的是需要验证域名所有权以及申请主体真实性的OV企业…

NI-DAQ Win10+QT+Cmake 开发环境搭建

文章目录 一.安装DAQ采集卡驱动二.NI MAX软件的使用三. QT利用Cmake构建工具搭建NI DAQ开发环境 一.安装DAQ采集卡驱动 到NI官网&#xff0c;选择技术支持&#xff0c;软件下载 搜索DAQ-mx NI测量设备均附带NI-DAQmx驱动软件。NI-DAQmx驱动软件是一个用途广泛的库&#xff0c;…

win10误删u盘文件怎么恢复数据?用5步解决数据丢失问题

求助&#xff0c;求助&#xff0c;Windows10电脑把U盘里面的文件误删了&#xff0c;其中一个txt文档对我比较重要&#xff0c;请问如何恢復? ——Win10误删U盘文件怎么恢复数据&#xff1f;在使用Windows 10操作系统时&#xff0c;有时候我们可能会不小心删除了U盘中的重要文件…

认可功能介绍 - 技术声誉靠认可

需求 大家在学习和工作中&#xff0c; 经常碰到一些热心帮助自己的人&#xff0c; 我们怎么向他们表示感谢呢&#xff1f; 各位博主在 CSDN 也做了很多贡献&#xff0c;也有不少用户在做各种各样的社区活动&#xff0c;这些活动给我们的领军人物什么回馈呢&#xff1f; 这些…

UG\NX二次开发 使用UF_MODL_create_symb_thread创建”螺纹符号“例子

文章作者:里海 来源网站:https://blog.csdn.net/WangPaiFeiXingYuan 简介: 使用UF_MODL_create_symb_thread创建”螺纹符号“例子 效果: 代码: #include <stdio.h> #include <string.h> #include <uf.h> #include <uf_modl.h> #include <…

aardio - 关于 loadcode 和 loadcodex 的用法

关于 loadcode 和 loadcodex 的用法&#xff0c;资料较少&#xff0c;我简单写了几种用法&#xff0c;作为抛砖引玉。 大家还有其他使用技巧&#xff0c;请跟帖&#xff1a; import consoletest1 /** myTestFunc1 function(){ return myFunc1; } **/ loadcodex(test1); co…