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制作基于蓝牙的数据监控系统相关推荐

  1. 【基于机器学习的垃圾分类监控系统】

    基于机器学习的垃圾分类监控系统 一.摘要 abstract 正确处理厨余垃圾,可以有效地保护环境,并带来不错的经济效益.本文将机器学习运用到厨余垃圾的分类监控中,以识别混入其中的非厨余垃圾.本文在人工 ...

  2. Linux下基于qt的视频监控系统

    目录 一.原始需求 二.环境安装 2.1 qt安装 2.2 opencv安装 三.系统设计 3.1. 整体流程设计 3.2 .数据传输交互流程 3.3 .数据库设计 四.关键代码 4.1.如何实现通信 ...

  3. 基于微博的舆情监控系统 JAVA SSM MySQL

    10040_基于微博的舆情监控系统 技术 Spring + SpringMVC + MyBatis 工具 eclipse + tomact + mysql + jdk

  4. 基于IOCP的局域网监控系统

    作者:赖春红1 戚淮兵1 谭涛2 1.西华师范大学物理与电子信息学院   南充 637002 2.西华师范大学计算机学院               南充 637002 基于IOCP的局域网监控系统 ...

  5. 基于智能矿山电力监控系统的设计与应用方法

    摘要:随着煤矿建设的智能化程度越来越高,构建智能电力监控系统实现对矿山生产的有效监控至关重要.首先分析了矿山电力监控系统存在的主要问题,其次重点介绍了基于智能矿山电力监控系统的设计过程,后提出了加强智 ...

  6. (毕业设计资料)基于单片机智能输液器监控系统的设计

    026[毕设课设]基于单片机智能输液器监控系统的设计. 说明:基于单片机智能输液器监控系统的设计,目标滴速和设定滴速的调节通过使用PID算法,换页按钮可调节PID参数, 增加和减少分别在修改按钮按后进 ...

  7. 南瑞rt21系统服务器,南瑞“一种基于CORBA的综合监控系统数据定义和存取方法”等三项科技成果获专利授权...

    南瑞"一种基于CORBA的综合监控系统数据定义和存取方法"等三项科技成果获专利授权 北极星电力信息化网  来源:国网电科院    2012/5/22 9:24:13  我要投稿 北 ...

  8. 基于Java的远程监控系统

    基于Java的远程监控系统 功能点: 1.监控桌面 2.文件上传,下载 3.鼠标.键盘等功能 4.命令行控制 1.桌面 2.文件上传下载 3.鼠标.键盘等功能 略 4.命令行控制 输入命令行 cont ...

  9. 基于ssh社区医疗保健监控系统mysql

    原文链接:请点这里 项目描述 本系统实现了基于ssh社区医疗保健监控系统mysql的基本功能,主要功能如下. 技术支持 eclipse.SSH.Jdk1.8.jsp. mysql 系统提供的具体功能如 ...

  10. 基于蓝牙的数据传输系统的设计

    蓝牙(Bluetooth)是由东芝.爱立信.IBM.Intel和诺基亚于1998年5月共同提出的近距离无线数据通讯技术标准.它能够在10米 的半径范围内实现单点对多点的无线数据和声音传输,其数据传输带 ...

最新文章

  1. Aspose.Cells设置单元格格式
  2. LiveVideoStack主编观察03 /大会见闻思考
  3. 在shell脚本中使用*正则的问题
  4. Outlook 2016最佳实践视频课程上线
  5. 数据库系统——学习资料(更新.........)
  6. VS2017下载安装
  7. linux vsftpd 配置及使用详解
  8. matlab液压仿真模型,基于MATLABsimulink的液压系统动态仿真.ppt
  9. python 经纬度坐标转换为UTM坐标方法与结果验证分析
  10. 目标客户画像_4 种类型 + 10 大步骤,详解用户画像
  11. 深度学习模型提升性能的策略
  12. 解决老Mac强行双系统后Mac系统引导丢失出现no bootable device
  13. android短信接收处理和发送
  14. 命令top动态监控进程所占系统资源
  15. 小程序使用 企业微信客户服务插件(联系我) contactPlugin
  16. 一个压长定式衍生出的一个角部攻防
  17. 关闭potplayer播放器屏幕大量信息
  18. 5.11 使用新建填充图层制作艺术效果 [原创Ps教程]
  19. Word让目录页码和正文页码独立分开计算,分隔符中分页符、“下一页”分节符的区别与使用选择
  20. 利用SecureCRT上传、下载文件(使用sz与rz命令),超实用

热门文章

  1. tpc1061ti使用说明_昆仑通泰触摸屏TPC1061Ti/TX
  2. OpenStack排错记录---ResourceProviderCreationFailed和You are not authorized to perform the requested actio
  3. Android NDK交叉编译sysstat工具
  4. notepad++更换皮肤
  5. 茶有真香 | 一款茶好不好喝自己说了才算
  6. #9733;双十一背后的消费心理
  7. Android App性能测试| 流量、电量、弱网环境
  8. coffeescript java 执行_新的coffeescript,运行cakefile时产生ENOENT错误
  9. 背单词App开发日记2
  10. 崇高文本_25个崇高的网站在2017年下载免费的图片