arduino入门-用arduino uno制作基于蓝牙的数据监控系统
arduino入门-用arduino uno制作基于蓝牙的数据监控系统
- 一、前言
- 一、准备工作
- 二、接线图
- 三、数据监控系统代码
- 四、系统调试
一、前言
本文章所制作装置是一个以arduino uno为核心的、基于蓝牙的数据监控系统,其中涵盖包含(1)对舵机的控制(2)读取电位器电压信号(3)蓝牙串口通讯(4)oled显示 四部分内容,仅供教学以及实验使用,不深入探究实用价值。
上文所提及四部分内容单独链接:
(1)对舵机的控制
arduino控制舵机缓慢旋转90°
(2)读取电位器电压信号
arduino读取电压相对值(模拟读取传感器数值)
(3)蓝牙串口通讯
arduino完成两个HC-05蓝牙模块间的配对,实现简单的无线串口通讯
(4)oled显示
arduino控制.96寸oled显示图案、中英文文字、以及变量
一、准备工作
需要准备的材料有:arduino uno、电位器一个、HC-05蓝牙模块两个、舵机一个、0.969寸oled显示屏一个、面包板一个、usb转ttl串口模块一个、杜邦线若干
需要准备的软件:串口调试助手
二、接线图
总接线图如下图所示:
接线图略显复杂,但是其实大部分都是正负极的接线,若把正负极去掉,既可以简单明了的看出接线的规则:
传感器接口 | 单片机接口 |
---|---|
蓝牙 RX | arduino TX |
蓝牙 TX | arduino RX |
电位器信号口 | arduno A1引脚 |
舵机信号口 | arduino 9号引脚 |
oled SCL | arduino A5引脚 |
oled SDA | arduino A4引脚 |
即:
三、数据监控系统代码
代码为前言提到的四个部分代码的组合,可以阅读其四个部分的文章了解详情。
代码如下:
#include <U8g2lib.h> //u8g2库
#include <Servo.h> //舵机库
Servo myservo; //定义舵机命名其为myservo
U8G2_SSD1306_128X64_NONAME_F_SW_I2C u8g2(U8G2_R0,SCL,SDA); //配置构造函数
int a=10; //定义变量a代表传感器数值void setup()
{u8g2.begin(); //启动u8g2驱动程序myservo.attach(9); //设置舵机控制引脚为9号 rotation(5); //舵机旋转至5°face(); //显示logodelay(1000); //显示logo持续一秒钟Serial.begin(9600); //打开串口,设置波特率9600
}void loop()
{a=analogRead(A1); //读取电位器数值,模拟传感器数据,将其值赋给变量bSerial.println(a); //将b在串口中打印,(从而通过蓝牙传输到电脑中)if(a>900) //如果传感器数值大于阈值900,则舵机旋转115°(模拟警报动作){rotation(120); //舵机旋转至120°}else{rotation(5); //小于阈值,则舵机旋转至5°}letter(a); //显示变量数值
}void face()
{u8g2.clearBuffer(); //清空显示屏缓存u8g2.drawCircle(56,40,8,U8G2_DRAW_LOWER_LEFT); //画四分之一圆,圆心坐标(56,44),半径8u8g2.drawCircle(56,40,8,U8G2_DRAW_LOWER_RIGHT); //画四分之一圆u8g2.drawCircle(72,40,8,U8G2_DRAW_LOWER_LEFT); //画四分之一圆u8g2.drawCircle(72,40,8,U8G2_DRAW_LOWER_RIGHT); //画四分之一圆u8g2.drawCircle(56,41,8,U8G2_DRAW_LOWER_LEFT); //加粗画四分之一圆u8g2.drawCircle(56,41,8,U8G2_DRAW_LOWER_RIGHT); //加粗画四分之一圆u8g2.drawCircle(72,41,8,U8G2_DRAW_LOWER_LEFT); //加粗画四分之一圆u8g2.drawCircle(72,41,8,U8G2_DRAW_LOWER_RIGHT); //加粗画四分之一圆u8g2.drawLine(40,18,20,30); //画斜线,两端点坐标分别是(40,18)(20,30)u8g2.drawLine(88,18,108,30); //画斜线u8g2.drawLine(40,17,20,29); //加粗画斜线u8g2.drawLine(88,17,108,29); //加粗画斜线u8g2.sendBuffer(); //加载以上内容
}void letter(int a)
{ u8g2.clearBuffer(); //清空显示屏缓存//int8_t a=u8g2.getMaxCharHeight(); //获取最大高度//int8_t b=u8g2.getMaxCharWidth(); //获取最大宽度u8g2.setFont(u8g2_font_unifont_t_chinese2); //设置字体u8g2.drawUTF8(20,17,"智能检测系统"); //显示文字,左下角位置坐标为(20,17)u8g2.drawUTF8(50,34,":"); //显示:,左下角坐标为(50,34)u8g2.drawUTF8(0,34,"位移为:");u8g2.setCursor(64,34); //设置将要打印变量的左下角坐标u8g2.drawUTF8(0,34,"位移为:");u8g2.print(a); //打印变量au8g2.sendBuffer(); // 加载以上内容}void rotation(int angle) //舵机旋转函数,输入目标角度angle
{int anglex=myservo.read(); //读取舵机实际角度,将其值赋给anglexif(angle>anglex) //如果实际角度小于目标角度,则逐渐增大角度至目标角度为止{for(int i=anglex;i<angle;i++){myservo.write(i); delay(15);} }else if(angle<anglex) //如果实际角度大于目标角度,则逐渐减小角度至目标角度为止{for(int i=anglex;i>angle;i--){myservo.write(i); delay(15); }}
}
四、系统调试
**常见问题
(1)设置完毕蓝牙扔无法配对:
解决方法:
首先确保蓝牙配置正确,即量蓝牙密码相同、地址已设置、波特率一致
若配置正确,则假设使用到的蓝牙分别为A和B,先对A进行断电重启,等待数秒,查看是否配对成功;若不成功则对B进行断电重启,等待数秒直至配对成功。
(2)arduino上传出错
先拔掉蓝牙两根数据线再进行上传即可
(3)oled不亮
arduino断电重启等待数秒
调试完毕后可以实现如下功能:
(1)开机显示logo图案一秒钟
(2)旋转电位器,可以看到oled上的数值动态变化
(3)数值大于900,则舵机转到120°位置
(4)数值小于900,舵机自动旋转回5°原点位置
(5)打开串口通讯助手,可以看到数值同步通过蓝牙传输到电脑当中(可以编写电脑程序来对传输来的数据进行监控、分析以及处理)
调试完毕后效果如下:
启动效果:
启动完毕:
旋转电位器:
蓝牙通讯:
arduino入门-用arduino uno制作基于蓝牙的数据监控系统相关推荐
- 【基于机器学习的垃圾分类监控系统】
基于机器学习的垃圾分类监控系统 一.摘要 abstract 正确处理厨余垃圾,可以有效地保护环境,并带来不错的经济效益.本文将机器学习运用到厨余垃圾的分类监控中,以识别混入其中的非厨余垃圾.本文在人工 ...
- Linux下基于qt的视频监控系统
目录 一.原始需求 二.环境安装 2.1 qt安装 2.2 opencv安装 三.系统设计 3.1. 整体流程设计 3.2 .数据传输交互流程 3.3 .数据库设计 四.关键代码 4.1.如何实现通信 ...
- 基于微博的舆情监控系统 JAVA SSM MySQL
10040_基于微博的舆情监控系统 技术 Spring + SpringMVC + MyBatis 工具 eclipse + tomact + mysql + jdk
- 基于IOCP的局域网监控系统
作者:赖春红1 戚淮兵1 谭涛2 1.西华师范大学物理与电子信息学院 南充 637002 2.西华师范大学计算机学院 南充 637002 基于IOCP的局域网监控系统 ...
- 基于智能矿山电力监控系统的设计与应用方法
摘要:随着煤矿建设的智能化程度越来越高,构建智能电力监控系统实现对矿山生产的有效监控至关重要.首先分析了矿山电力监控系统存在的主要问题,其次重点介绍了基于智能矿山电力监控系统的设计过程,后提出了加强智 ...
- (毕业设计资料)基于单片机智能输液器监控系统的设计
026[毕设课设]基于单片机智能输液器监控系统的设计. 说明:基于单片机智能输液器监控系统的设计,目标滴速和设定滴速的调节通过使用PID算法,换页按钮可调节PID参数, 增加和减少分别在修改按钮按后进 ...
- 南瑞rt21系统服务器,南瑞“一种基于CORBA的综合监控系统数据定义和存取方法”等三项科技成果获专利授权...
南瑞"一种基于CORBA的综合监控系统数据定义和存取方法"等三项科技成果获专利授权 北极星电力信息化网 来源:国网电科院 2012/5/22 9:24:13 我要投稿 北 ...
- 基于Java的远程监控系统
基于Java的远程监控系统 功能点: 1.监控桌面 2.文件上传,下载 3.鼠标.键盘等功能 4.命令行控制 1.桌面 2.文件上传下载 3.鼠标.键盘等功能 略 4.命令行控制 输入命令行 cont ...
- 基于ssh社区医疗保健监控系统mysql
原文链接:请点这里 项目描述 本系统实现了基于ssh社区医疗保健监控系统mysql的基本功能,主要功能如下. 技术支持 eclipse.SSH.Jdk1.8.jsp. mysql 系统提供的具体功能如 ...
- 基于蓝牙的数据传输系统的设计
蓝牙(Bluetooth)是由东芝.爱立信.IBM.Intel和诺基亚于1998年5月共同提出的近距离无线数据通讯技术标准.它能够在10米 的半径范围内实现单点对多点的无线数据和声音传输,其数据传输带 ...
最新文章
- Aspose.Cells设置单元格格式
- LiveVideoStack主编观察03 /大会见闻思考
- 在shell脚本中使用*正则的问题
- Outlook 2016最佳实践视频课程上线
- 数据库系统——学习资料(更新.........)
- VS2017下载安装
- linux vsftpd 配置及使用详解
- matlab液压仿真模型,基于MATLABsimulink的液压系统动态仿真.ppt
- python 经纬度坐标转换为UTM坐标方法与结果验证分析
- 目标客户画像_4 种类型 + 10 大步骤,详解用户画像
- 深度学习模型提升性能的策略
- 解决老Mac强行双系统后Mac系统引导丢失出现no bootable device
- android短信接收处理和发送
- 命令top动态监控进程所占系统资源
- 小程序使用 企业微信客户服务插件(联系我) contactPlugin
- 一个压长定式衍生出的一个角部攻防
- 关闭potplayer播放器屏幕大量信息
- 5.11 使用新建填充图层制作艺术效果 [原创Ps教程]
- Word让目录页码和正文页码独立分开计算,分隔符中分页符、“下一页”分节符的区别与使用选择
- 利用SecureCRT上传、下载文件(使用sz与rz命令),超实用
热门文章
- tpc1061ti使用说明_昆仑通泰触摸屏TPC1061Ti/TX
- OpenStack排错记录---ResourceProviderCreationFailed和You are not authorized to perform the requested actio
- Android NDK交叉编译sysstat工具
- notepad++更换皮肤
- 茶有真香 | 一款茶好不好喝自己说了才算
- #9733;双十一背后的消费心理
- Android App性能测试| 流量、电量、弱网环境
- coffeescript java 执行_新的coffeescript,运行cakefile时产生ENOENT错误
- 背单词App开发日记2
- 崇高文本_25个崇高的网站在2017年下载免费的图片