基于Arduino、BMP280、RC2202A开发的无线传感系统——测量温度和气压

news2024/9/20 22:13:50

核心器件

1. Arduino UNO

在这里插入图片描述

2. BMP280

可测量温度,气压(气压可换算为高度)。功耗为为微瓦级。
在这里插入图片描述

3. OLED 128x32

在这里插入图片描述

4. RC2202A

目前最低功耗的蓝牙模块(功耗微瓦级),只支持从模式。
在这里插入图片描述

接线方式

在这里插入图片描述

代码

#include <Adafruit_SSD1306.h>
#include <Adafruit_BMP280.h>
#include <SoftwareSerial.h>

#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 32
#define OLED_RESET -1
#define RX 3
#define TX 2

Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
Adafruit_BMP280 bmp;
SoftwareSerial BT(RX, TX);

static const unsigned char PROGMEM degree[] = {//“°”字模 16x16
0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x24,0x00,0x24,0x00,0x18,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};
static const unsigned char PROGMEM yes[] = {//“√”字模 10x10
0x00,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x02,0x00,0x02,0x00,0x1A,0x00,0x0C,0x00,
0x04,0x00,0x00,0x00,
};
static const unsigned char PROGMEM no[] = {//“×”字模 10x10
0x00,0x00,0x00,0x00,0x21,0x00,0x12,0x00,0x0C,0x00,0x0C,0x00,0x12,0x00,0x21,0x00,
0x00,0x00,0x00,0x00,
};

void setup() {
  //Serial.begin(9600);
  BT.begin(9600);
  bmp.begin();
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  display.clearDisplay();
  display.display();
  display.setTextColor(WHITE);
  display.setTextSize(1); 
  display.print("Xidian University");
  display.setCursor(26, 18);
  display.setTextSize(2);
  display.println("LRCTEST"); 
  display.display();
  delay(3000);
  //Serial.println("Everything is ready!");
}

void loop() {
    display.clearDisplay();
    float T = bmp.readTemperature();
    float P = bmp.readPressure()/100;
    float A = bmp.readAltitude(1004);
    //打印温度
    display.setCursor(0, 0);
    display.setTextColor(WHITE);
    display.setTextSize(1); 
    display.print("Temperature");
    display.setCursor(0, 18);
    display.setTextSize(2);
    display.print(T, 1);
    display.drawBitmap(40, 17, degree, 16, 16, 1);
    display.setCursor(56, 18);
    display.setTextSize(2);
    display.print("C");
    //打印气压
    display.setTextSize(1);
    display.setCursor(78, 0);
    display.print(P, 1);
    display.print("hPa");
    //打印海拔
    display.setCursor(78, 9);
    display.print("Alt ");
    display.print(A, 0);
    display.print("m");
    //蓝牙
    display.setCursor(108, 25);
    display.print("BLE");
    if (BT.available()) {
      BT.print("温度: ");
      BT.print(T, 1);
      BT.print("°C, ");
      BT.print("气压: ");
      BT.print(P, 1);
      BT.print("hPa, ");
      BT.print("海拔: ");
      BT.print(A, 0);
      BT.print("m");
      //显示BLE可连接
      display.drawBitmap(98, 23, yes, 10, 10, 1);
    } else {
      //显示BLE不可连接
      display.drawBitmap(98, 23, no, 10, 10, 1);
    }
    display.display();
    delay(5000);
}

效果图

在这里插入图片描述

备注

BMP280的SDO引脚没有连接,此时该模块的地址是0x76(默认是0x77),需要手动在库文件修改。详情参考。还有就是不要下载最新的BMP280库,老版本库的代码便于修改地址。

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

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

相关文章

outlook如何添加联系人群组?

如下图所示&#xff0c;新增联系人组 从通讯录选择组内用户 填写组名&#xff0c;点保存 以后在outlook写邮件时&#xff0c;就能联想使用你创建的群组了

RabbitMQ系列(27)--RabbitMQ使用Federation Exchange(联邦交换机)解决异地访问延迟问题

前言&#xff1a; (broker北京)、(broker深圳)彼此之间相距甚远&#xff0c;网络延迟是一个不得不面对的问题。有一个在北京的业务(Client北京&#xff09;需要连接(broker北京),向其中的交换器exchangeA发送消息&#xff0c;此时的网络延迟很小,(Client北京)可以迅速将消息发…

macOS访达当前目录打开终端

在windows 11中&#xff0c;可以在【此电脑】中任意文件夹中鼠标右键&#xff0c;可能直接在当前目录打开【终端】。用久也感觉还是很方便的。 与是在macOS中&#xff0c;我也想得到类似的功能。如何实现记录下来。 实战过程 我的实战环境是&#xff1a; 操作系统&#xff1a…

【数据结构常见七大排序(一)】—插入排序篇【直接插入排序】And【希尔排序】

目录 1.排序的概念及其运用 1.1排序的概念 1.2排序运用 1.3常见的七大排序 2.直接插入排序 2.1基本思想 2.2直接插入排序 2.3动图助解 2.4直接插入排序源码 2.5直接插入排序的特性总结 3.希尔排序( 缩小增量排序 ) 3.1希尔排序概念及思想 3.2希尔排序图解 3.3希尔…

用颜色表示数据的第三个维度

横纵坐标显示时间和空间后&#xff0c;第三个数据的特征有时就不好表示了&#xff0c;3d图有的时候看起来更复杂。对于某些情况&#xff0c;用颜色来表示更加简洁。 这里展示的效果图有点像烟花&#xff0c;所以选了这张&#xff0c;但是换其他的cmap才能使得数据展示更加直观 …

举例解释Lingo的条件执行@if语句

可变成本问题 某公司生产A、B、C共3种产品&#xff0c;售价分别是12元、7元和6元。生产1件这些产品的技术服务、直接劳动、材料的消耗以及这些资源的限量如表所示。 产品\项目 技术服务(h) 直接劳动(h) 材料(kg) 售价(&#xffe5;/件&#xff09; A 1 10 3 12 B 2…

Linux的

&#xff08;该图由AI绘制 关注我 学习AI画图&#xff09; 目录 网络配置 1、ifconfig查看网络信息 2、与网卡相关的配置文件 3、查询计算机的网络状态 4、systemctl启动/重启/停止网络 Linux远程连接与文件传输 1、为什么需要远程连接 2、SSH协议 3、sshd服务 4、…

SpringBoot——设置随机值测试

在测试中加入随机值 之前我们在测试的时候都是写死的数据&#xff0c;但是有时候我们的数据并不一定是已知的数据&#xff0c;有可能你不知道用户要输入什么数据&#xff0c;这时候我们可以用随机值的方式进行代码的测试。 设置随机值 设置随机值的方式非常简单&#xff0c;…

6-开发模型(5个)

目录 1.瀑布模型&#xff08;Waterfall Model&#xff09; 2.螺旋模型&#xff08;Spiral Model&#xff09; 3.增量模型&#xff08;Incremental Model&#xff09; 4.迭代模型&#xff08;Iterative Model&#xff09; PS&#xff1a;增量模型和迭代模型的区别 5.敏捷模…

暑假第五天打卡

Java //1、练习题&#xff1a;判断如下代码是否编译通过&#xff0c;如果能&#xff0c;结果是多少&#xff1f; short s1 120; short s2 8; short s3 s1 s2; //编译不通过&#xff0c;因为s1s2自动提示为int类型 //3、练习题&#xff1a;判断如下代码是否编译通过&am…

雅思考试口语怎么备考才能拿到7分

很多学生在雅思考试里拿到总分7分的好成绩&#xff0c;雅思的口语要怎么准备才能拿到这样的好成绩&#xff1f;其实雅思口语7分的难度不高&#xff0c;下面就来看看雅思口语应该如何备考&#xff1f; 一、雅思口语考试怎么考7分 1、“流利度”如何拿7分 很多雅思口语提升攻略…

【算法】算法笔记(C++)

一、数组 求数组大小 nums.size()//防止报错 数组中的按大小排序 sort(nums.begin(), nums.end()); 获取最大值/最小值 int nums[8] {1,2,3,8,0,33,11,9}; int max_num *max_element(nums, nums 8); int min_num *min_element(nums, nums 8); 将数组a中的数值置为0…

ElasticSearch学习笔记一——下载及安装

最近发现ES是个很重要的内容啊&#xff0c;各种大厂都会使用ES来做一些大范围的搜索之类的功能&#xff0c;所以今天我们也来学习一下。 首先我们要准备Java的环境&#xff0c;推荐版本8、11、14 ES官方的JDK兼容性列表(有些慢&#xff0c;需要耐心等待一下哈) 在我写文章时&…

数值微分与计算图

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 一、使用数值微分计算导数二、计算图 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、使用数值微分计算导数 假设函数是y x ** 2&…

探索Gradio库的Radio模块及其change、input和select方法

❤️觉得内容不错的话&#xff0c;欢迎点赞收藏加关注&#x1f60a;&#x1f60a;&#x1f60a;&#xff0c;后续会继续输入更多优质内容❤️ &#x1f449;有问题欢迎大家加关注私戳或者评论&#xff08;包括但不限于NLP算法相关&#xff0c;linux学习相关&#xff0c;读研读博…

linux之复制文件(cp/tar/rsync/cpio)

复制文件 命令一&#xff1a; cp time cp -a /home/learn/files /home/learn/test/cp real 6m7.699s user 0m0.568s sys 0m48.372s命令二&#xff1a;tar time (cd /home/learn/files; tar c .) | (cd /home/learn/test/tar ; tar x) real 2m7.848s user 0m1.209s sys 1m12.82…

Nuxt3引入Element-plus和sass

1.引入Element-plus 打开编辑器终端 运行npm install element-plus/nuxt 或者命令行cd到项目文件 运行npm install element-plus/nuxt package.json文件会出现 使用Element-plus 在nuxt.config.ts文件添加代码 export default defineNuxtConfig({devtools: { enabled: true }…

Blender基础入门(2):Blender简单渲染

文章目录 我个人的Blender专栏前言渲染基本常识科普Blender渲染设置Blender窗口分栏分屏渲染 渲染设置GPU渲染引擎推荐最大采样 切换摄像机渲染图片渲染采样512和4096差异512采样4096采样 渲染建议 我个人的Blender专栏 Blender简单教学 前言 渲染是从白模到成品的过程&…

CTFSHOW 每周大挑战 RCE极限挑战

RCE挑战1 开题直接给了源码 过滤了括号和点号。 使用内敛绕过。 payload&#xff1a; codeecho tac /f1agaaa;RCE挑战2 源码直接给了。 基本把能用的都过滤了&#xff0c;只剩下$()_;[],./字符&#xff0c;自增RCE无疑。 //相当于 ($_GET[_])($_GET[__]) 使用的时候url编…

【雕爷学编程】Arduino动手做(156)---OTTO两足舵机机器人

37款传感器与执行器的提法&#xff0c;在网络上广泛流传&#xff0c;其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块&#xff0c;依照实践出真知&#xff08;一定要动手做&#xff09;的理念&#xff0c;以学习和交流为目的&am…