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>
#include <Servo.h>
Servo myservo;
U8G2_SSD1306_128X64_NONAME_F_SW_I2C u8g2(U8G2_R0,SCL,SDA);
int a=10;
void setup()
{
u8g2.begin();
myservo.attach(9);
rotation(5);
face();
delay(1000);
Serial.begin(9600);
}
void loop()
{
a=analogRead(A1);
Serial.println(a);
if(a>900)
{
rotation(120);
}
else
{
rotation(5);
}
letter(a);
}
void face()
{
u8g2.clearBuffer();
u8g2.drawCircle(56,40,8,U8G2_DRAW_LOWER_LEFT);
u8g2.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);
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();
u8g2.setFont(u8g2_font_unifont_t_chinese2);
u8g2.drawUTF8(20,17,"智能检测系统");
u8g2.drawUTF8(50,34,":");
u8g2.drawUTF8(0,34,"位移为:");
u8g2.setCursor(64,34);
u8g2.drawUTF8(0,34,"位移为:");
u8g2.print(a);
u8g2.sendBuffer();
}
void rotation(int angle)
{
int anglex=myservo.read();
if(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)打开串口通讯助手,可以看到数值同步通过蓝牙传输到电脑当中(可以编写电脑程序来对传输来的数据进行监控、分析以及处理) 调试完毕后效果如下: 启动效果:
启动完毕:
旋转电位器:
蓝牙通讯:
|