蓝牙串口和arduino连接_arduino 蓝牙软串口 - CSDN
  • Arduino蓝牙串口通信

    千次阅读 2016-11-28 20:05:11
    1:对于Arduino,print()println()函数都是用ASCII字符的方式传送数据。 无论是int、float还是string,都自动转换成ASCII码传送...2:蓝牙串口是异步传输方式,每次Serial.read()只读一个字节,在一个loop()循环中可

    1:对于Arduino,print()和println()函数都是用ASCII字符的方式传送数据。
    无论是int、float还是string,都自动转换成ASCII码传送。
    其中println()函数在传送的数据后面加了回车和换行符(”\r”和”\n”)。换行符正好可以作为结束符来让手机端识别。
    2:蓝牙串口是异步传输方式,每次Serial.read()只读一个字节,在一个loop()循环中可能收不全一条数据信息,必须要有一个全局变量来收集接收到的字符。如果要通讯可靠,使用结束符来确定收到了一条完整的信息,是非常必要的。手机端也是一样。
    3:用的Serial.parseInt()函数,作用是在收到的字符流中,找到数字字符,并累积在一起,直到收到一个非数字字符时,将前面收到的数字字符转换成一个整数。如果要传送多个数值,中间用逗号等分隔符隔开即可。比如三个数值,”12,325,993“,后面加一个自定义的结束符,作为字符串发给Arduino。
    (例程中用字符”X”作为结束符。)这样接收数据完整而可靠。接收float可以用Serial.parseFloat()函数,用法一样。
    4:/* 本例程演示从手机蓝牙串口接收指令,点亮或熄灭11脚的LED,或者调整亮度。
    * 接收指令格式:“101X”点亮,“102X”熄灭,”000X”调整亮度。(000为0-100的整数,表示亮度值,X是结束符。)
    * 串口是异步接收的,用parseInt()查找第一个有效整数,检测到结束符后开始处理。
    * 接收数据显示在1602LCD屏上。
    * 点亮或熄灭LED后,将收到数据回传给手机。用pringln()函数,数据后面加了”\r”和”\n”两个字符,可以用作结束符。
    * 串口传送的是ASCII字符,数据格式可以自动转换。
    */

    /* 本例程演示从手机蓝牙串口接收指令,点亮或熄灭11脚的LED,或者调整亮度。
     * 接收指令格式:“101X”点亮,“102X"熄灭,”000X"调整亮度。(000为0-100的整数,表示亮度值,X是结束符。)
     * 串口是异步接收的,用parseInt()查找第一个有效整数,检测到结束符后开始处理。
     * 接收数据显示在1602LCD屏上。
     * 点亮或熄灭LED后,将收到数据回传给手机。用pringln()函数,数据后面加了"\r"和"\n"两个字符,可以用作结束符。
     * 串口传送的是ASCII字符,数据格式可以自动转换。
     */
    
    #include <Wire.h>                  // 包含LCD库。
    #include <LiquidCrystal_I2C.h>
    LiquidCrystal_I2C lcd(0x27,16,2);  // 初始化LCD对象,地址为0x27,每行16个字符,共两行。
    int p;                             // 定义整数型全局变量,保存接收的数据。
    
    void setup() {
      lcd.init();                      // 初始化LCD。 
      lcd.backlight();                 // 打开LCD背光。
      Serial.begin(9600);              // 打开串口(蓝牙)
      pinMode(11,OUTPUT);              // 定义11脚为输出。(数字或PWM)
    }
    
    void loop() {
      while (Serial.available() > 0) {   // 串口收到字符数大于零。
        p = Serial.parseInt();           // 在串口数据流中查找一个有效整数。
        if (Serial.read() == 'X') {      // 收到结束符后开始处理数据。
          lcd.clear();                   // LCD清屏。
          lcd.print(p);                  // LCD显示收到的数据(整数)。
          switch (p) {                   // 判断数据内容。
          case 101:
            digitalWrite(11,HIGH);       // 点亮LED。
            Serial.println(p);           // 回传数据。
            break;
          case 102:
            digitalWrite(11,LOW);        // 熄灭LED。
            Serial.println(p);           // 回传数据。
            break;
          default:
            p = map(p,0,100,0,255);      // 转换数据范围到PWM输出值。
            analogWrite(11,p);           // 调整LED亮度。(PWM)
          }
        }
      }
    }
    展开全文
  • Arduino使用蓝牙通信模块

    万次阅读 2017-11-12 19:55:55
    在淘宝店中买的HC-05主从机一体蓝牙模块,该模块的正面反面截图如下:  测试的时候只使用了RX、TX、GND、5V这四个引脚,测试的连接示意图如下,需要注意的是蓝牙模块的RX要接Arduino的TX,蓝牙模块的TX要接...
    在淘宝店中买的HC-05主从机一体蓝牙模块,该模块的正面和反面截图如下:
    Arduino使用蓝牙通信模块 - gc_2299 - gc_2299的博客
     
    Arduino使用蓝牙通信模块 - gc_2299 - gc_2299的博客
    测试的时候只使用了RX、TX、GND、5V这四个引脚,测试的连接示意图如下,需要注意的是蓝牙模块的RX要接Arduino的TX,蓝牙模块的TX要接Arduino的RX:
    Arduino使用蓝牙通信模块 - gc_2299 - gc_2299的博客
      测试代码使用的是参考文献1中的代码,代码如下:

    char data = 0;
    void setup()
    {
    Serial.begin(9600);
    pinMode(13, OUTPUT);
    }
    void loop()
    {
    if(Serial.available() > 0)
    {
    data = Serial.read();
    Serial.print(data);
    Serial.print("\n");
    if(data == '1')
    digitalWrite(13, HIGH);
    else if(data == '0')
    digitalWrite(13, LOW);
    }
    }

    实物连线图如下:
    Arduino使用蓝牙通信模块 - gc_2299 - gc_2299的博客
     
    演示视频:

    注意:一开始测试的时候使用的是iPhone5,结果在蓝牙界面中死活收不到hc-05的设备(原因可以参考文献2-3),后来换了一个三星的手机,很快就搜索出来了,但是开始的时候下了几个蓝牙串口调试助手,要么检测不到蓝牙连接,要么检测到了连接不上,最后下了一个名称为蓝牙串口的软件,版本为5.4.3,图标为蓝底带大写字母SPP,使用这个软件可以正常地进行蓝牙串口通信。

    参考文献:
    [1]https://create.arduino.cc/projecthub/user206876468/arduino-bluetooth-basic-tutorial-d8b737
    [2]http://www.eevblog.com/forum/beginners/hc05-bluetooth-and-iphone/
    [3]http://apple.stackexchange.com/questions/141112/connecting-iphone-to-hc-05-bluetooth-module
     
    展开全文
  • 手机通过蓝牙串口arduino通信

    千次阅读 2011-01-21 09:10:00
    前段时间把蓝牙透传模块在arduino上的使用弄好了,今天拿我的手机来测试一下。我手机是多普达S1,因为是行货,没有wifi,想控制arduino只能通过蓝牙了。还好wm6操作系统能运行.net2.0开发的移动软件,用serialport...

    前段时间把蓝牙透传模块在arduino上的使用弄好了,今天拿我的手机来测试一下。

    我手机是多普达S1,因为是行货,没有wifi,想控制arduino只能通过蓝牙了。

    还好wm6操作系统能运行.net2.0开发的移动软件,用serialport控件来作为串口通信的主要工具。

    首先把arduino接上蓝牙透传模块,方法在前面的文章提到了,这里就不再叙述。

    然后开启手机的蓝牙,搜索蓝牙设备,能找到模块名称,选择之后建立com口,我这里建立的是com6

    然后就是在手机上弄个小软件来通信了。

    用serialport控件,设置好基本的属性,主要是和arduino的波特率要一致,串口号是com6,基本就没什么问题,我这里很快就能正常通信了。

    我把我测试的代码发来让大家了解一下

    Imports System.Text
    Imports System.IO.Ports
    Imports System.Threading
    Imports Microsoft.WindowsMobile.Forms
    Imports System.Runtime.InteropServices

    Public Class Form1

        Dim receivedData As String
        Private Delegate Sub settexts()

        Private Sub sp_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles sp.DataReceived
            Try
                Dim bytesRead As Integer = sp.BytesToRead
                Dim bytes As Byte() = New Byte(bytesRead + 1) {}
                sp.Read(bytes, 0, bytes.Length)
                receivedData = System.Text.Encoding.ASCII.GetString(bytes, 0, bytes.Length - 1)
                sp.DiscardOutBuffer()
                sp.DiscardInBuffer()
                Invoke(New settexts(AddressOf settext))
            Catch ex As Exception
                MessageBox.Show(ex.Message)
                sp.Write("sync")
            End Try
        End Sub

        Private Sub settext()
            TextBox2.Text = TextBox2.Text & receivedData
            TextBox2.ScrollToCaret()
        End Sub

        Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
            TextBox2.Text = ""
            Try
                If sp.IsOpen = False Then
                    TextBox2.Text = "串口关闭"
                    sp.Open()
                End If
                sp.Write(Encoding.ASCII.GetBytes(TextBox1.Text & vbCrLf), 0, Encoding.ASCII.GetBytes(TextBox1.Text).Length)
                sp.WriteLine("")
                'sp.WriteLine(TextBox1.Text)

            Catch ex As Exception
                TextBox2.Text = ex.Message
                sp.Close()
                sp.Dispose()
            End Try
        End Sub

        Private Sub Form1_Closing(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing
            sp.Close()
            sp.Dispose()
        End Sub

        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            connport()
        End Sub

        Private Sub portname_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles portname.SelectedIndexChanged
            connport()
        End Sub

        Private Sub connport()
            Try
                sp = New SerialPort(portname.SelectedItem, 9600, Parity.None, 8, StopBits.One)
                sp.RtsEnable = True
                sp.DtrEnable = True
                sp.ReadTimeout = 1000
                sp.Open()
                If sp.IsOpen Then
                    TextBox2.Text = "串口连接"
                End If

            Catch ex As Exception
                TextBox2.Text = ex.Message
            End Try

        End Sub


    End Class

     

    这个代码基本上能实现发送数据和同步接收数据并很好的显示出来。但是因为arduino的数据会发送的很频繁,比如时刻反馈温度传感器发送的温度数据、光线传感器发送的光线数据等,使得该软件在接收数据的时候无法操作其他的功能,甚至会假死,也许通过建立线程能解决这个问题,以后再弄哈

    展开全文
  • Arduino使用HC05蓝牙模块与手机连接

    万次阅读 多人点赞 2017-09-18 10:32:16
    利用 Andorid 蓝牙串口调试软件测试功能 进入 At 模式进行蓝牙基本参数设置想要使用 Arduino 的蓝牙模块,首先要对蓝牙模块进行基本参数设置。基本参数设置主要包含:蓝牙名称、模式以及匹配密码等。设置蓝牙模块...

    通过本文,可以了解到以下内容:

    • 进入 AT 模式进行蓝牙基本参数设置
    • Arduino 蓝牙控制 LED 电路设计以及代码编写
    • 利用 Andorid 蓝牙串口调试软件测试功能

    进入 At 模式进行蓝牙基本参数设置

    想要使用 Arduino 的蓝牙模块,首先要对蓝牙模块进行基本参数设置。基本参数设置主要包含:蓝牙名称、模式以及匹配密码等。设置蓝牙模块可以使用 USB-TTL 连接电脑使用串口调试软件进入 AT 模式进行设置,也可以使用 Arduino 连接蓝牙模块进行设置,本文主要介绍后一种方法。

    注意事项

    在连接蓝牙的时候,要注意线的连接是否正确,检查清楚再进行通电,除此之外,还要主要不要让针脚短路,我在首次使用蓝牙模块的时候,因为没注意接线,导致一个蓝牙模块损坏了,只能发信息不能收信息,所以为了避免不必要的损失,这里要注意。

    Arduino HC05 AT模式接线

    进入 AT 模式设置蓝牙的接线如下:
    Arduino 5V - VCC
    Arduino GND - GND
    Arduino Pin10 - TXD
    Arduino Pin11 - RXD
    在通电前检查接线是否正确连接
    hc05_at_mode.jpg

    Arduino 进入 AT 模式代码

    接下来,我们需要为使用 Arduino 设置蓝牙模块 AT 模式编写程序,这个程序是让我们可以通过 Arduino IDE 提供的串口监视器来设置蓝牙模块。详细的 Arduino 代码如下:

    #include <SoftwareSerial.h> 
    
    // Pin10为RX,接HC05的TXD
    // Pin11为TX,接HC05的RXD
    SoftwareSerial BT(10, 11); 
    char val;
    
    void setup() {
      Serial.begin(38400); 
      Serial.println("BT is ready!");
      // HC-05默认,38400
      BT.begin(38400);
    }
    
    void loop() {
      if (Serial.available()) {
        val = Serial.read();
        BT.print(val);
      }
    
      if (BT.available()) {
        val = BT.read();
        Serial.print(val);
      }
    }

    利用 Arduino IDE 串口监视器进行调试

    首先,将 Arduino 断电,然后按着蓝牙模块上的黑色按钮,再让 Arduino 通电,如果蓝牙模块指示灯按2秒的频率闪烁,表明蓝牙模块已经正确进入 AT 模式。
    打开 Arduino IDE 的串口监视器,选择正确的端口,将输出格式设置为 Both: NL & CR ,波特率设置为 38400 ,可以看到串口监视器中显示 BT is ready! 的信息。
    然后,输入 AT ,如果一切正常,串口显示器会显示 OK
    接下来,我们即可对蓝牙模块进行设置,常用 AT 命令如下:

    AT+ORGL    # 恢复出厂模式
    AT+NAME=<Name>    # 设置蓝牙名称
    AT+ROLE=0    # 设置蓝牙为从模式
    AT+CMODE=1    # 设置蓝牙为任意设备连接模式
    AT+PSWD=<Pwd>    # 设置蓝牙匹配密码

    正常情况下,命令发送后,会返回 OK ,如果没有返回任何信息,请检查接线是否正确,蓝牙模块是否已经进入 AT 模式,如果上述两点都没有问题,可能是蓝牙模块的问题,可以找蓝牙模块供应商咨询。
    设置完毕后,断开电源,再次通电,这是,蓝牙模块指示灯会快速闪烁,这表明蓝牙已经进入正常工作模式。

    利用 Andorid 手机连接 Arduino 并控制 LED灯开关

    我们完成了对蓝牙模块的设置后,我们将做一个可以通过手机蓝牙连接,控制 Arduino 开关 LED 灯的小实验。

    Arduino 电路设计

    这里的电路设计比较简单,主要是两部分:
    - Arduino 与 HC05 模块连接
    - Arduino 与 LED 连接

    这里有两点需要注意,Arduino 上的 TXD 应与 HC05 模块上的 RXD 端连接,Arduino 上的 RXD 应与 HC05 模块上的 TXD 连接。
    在下面的图例中,我的 LED 是直接连接在 Arduino Pin13 上,而实际电路连接中,因根据连接的 Led 灯的设计考虑是否需要串联电阻。
    Hc05_Led.jpg

    Arduino 蓝牙控制 LED 灯 程序设计

    Arduino 程序代码如下:

    void setup()
    {
      // 设置波特率为 38400
      Serial.begin(38400);
      pinMode(13, OUTPUT);
    }
    
    
    void loop()
    {
      while(Serial.available())
      {
        char c=Serial.read();
          if(c=='1')
          {
            Serial.println("BT is ready!");
            // 返回到手机调试程序上
            Serial.write("Serial--13--high");
            digitalWrite(13, HIGH);
          }
         if(c=='2')
         {
           Serial.write("Serial--13--low");
           digitalWrite(13, LOW);
         }
      }
    }

    Android 手机端调试

    在 Android 端上进行调试,需要下载蓝牙串口调试 APP,可以根据喜好在各大应用商场搜索下载。
    下载安装完成 APP 后,我们先打开手机的蓝牙设置,搜索并匹配好我们的蓝牙模块。然后打开 蓝牙串口调试APP ,让 APP 连接上蓝牙模块,然后我们可以在 APP 中输入 1,接下来可以看到 LED 等亮了,并且能在 APP 中看到 Serial--13--high 的返回(有些 APP 返回值可能不是返回在同一行)。我们再在 APP 中输入 2,可以看到 LED 熄灭, APP 中返回 Serial--13--low

    小结

    在这篇文章中,我们了解了在 Arduino 中使用 HC05 蓝牙模块的两个主要步骤,首先是进入 AT模式 对蓝牙模块进行设置,这里要注意接线的正确性,设置完成后,就可以将蓝牙模块的 TXArduino RX 连接,RXArduino TX 连接,再通过 Arduino 程序中的 Serial 来实现数据的传输与读取。最后,在通过 Android 上的蓝牙串口调试APP,来测试我们的试验是否成功。

    参考资料

    蓝牙模块HC05
    Arduino Bluetooth Basic Tutorial


    本文为原创内容,由同一作者于早前发表于简书,Arduino使用HC05蓝牙模块与手机连接

    展开全文
  • 安卓手机与Arduino之间采用蓝牙串口通讯,是很多智能装置互动装置常用的控制方法,简单而有效,无需网络环境,很实用的技术。 实验采用Arduino UNO板,加了一块1602LCD屏做显示(因为只有一个串口,用来做蓝牙...
  • 这篇文章的目的是解释如何开启ESP32蓝牙连接到一个PC电脑蓝牙,进行串口收发实验,使用ESP32和Arduino IDE库。 具体步骤可以参考下文: 首先,需要安装ESP32的编译环境。这里推荐使用Arduino IDE,安装文件可以到...
  • 目标:BlackBerry手机通过蓝牙串口读取Arduino 蓝牙传过来的温度 湿度信息硬件:Arduino主板 + DHT11温湿度传感器 + 蓝牙模块,开发工具C语言手机:BlackBerry 9360手机,OS 7.1,开发工具Java手机:BlackBerry 10 ...
  • BlackBerry 10 BlackBerry OS 7 1 手机通过蓝牙串口读取Arduino 蓝牙传过来的温度
  • arduino 蓝牙SSP远程烧录

    千次阅读 2015-08-15 14:13:16
    之前有看到过通过TCP/IP烧录,或者通过TTL + 蓝牙主模块 连接蓝牙从模块进行远程烧录的,不过这个都比较复杂。...仅需要一台带蓝牙的笔记本/PC,然后需要一个简单蓝牙串口模块,我这里用的ATK-HC05,
  • ROS学习之Arduino篇——蓝牙模块与手机进行通信

    万次阅读 多人点赞 2020-02-05 11:33:31
    2. 连接蓝牙Arduino 3. 安装手机软件 4. 编写程序 本篇主要内容:通过手机蓝牙发送数据给Arduino,其实本篇并不设计到ROS的内容,Arduino读取传感器的值然后以ROS消息方式广播出去的教程将在下一节中进行介绍,...
  • UNOAndroid手机间的蓝牙串口通讯超声测距传感器的试用。 UNO连接蓝牙模块与安卓手机通讯教程" TITLE="Arduino UNO连接蓝牙模块与安卓手机通讯教程" /> 最左边的是HC-06蓝牙模块,中间的一对金属圆柱是超声...
  • 用Android手机通过蓝牙模块HC-06连接Arduino串口输出

    万次阅读 热门讨论 2019-09-01 21:36:01
    实验目的:用Android实现蓝牙连接通过Arduino串口输出信息 这次使用的是蓝牙HC-06从模块,就是从机模块,这都因为买之前没有问清楚什么叫从什么叫住。 所以在这解释一下,如有错误请指正。谢谢 HC-05是主...
  • 本人比较懒,纯文本 首先材料,L298N,步进电机,杜邦线,HC-05蓝牙模块,arduino模块 ...然后就是arduino蓝牙模块的连接:5v---5v ,GND----GND,tx---rx,rx---tx 然后就是代码了: #define IN1 2 #defin...
  • 第一步:准备好做主机的蓝牙模块,用cp2102转串口模块连接蓝牙并进入AT设置模式(指示灯慢闪) 分别输入下面AT指令 (注意输入指令后加上回车后换行,发送后返回OK表示设置成功,如下指令是一条一条输入,切勿所有...
  • 树莓派与arduino串口通信

    千次阅读 2018-11-21 17:51:42
    上次内容树莓派与arduino之间是通过USB进行通信的,这次内容是如何通过串口进行通信。 ...一、背景介绍 ...GPIO15),也就是说用户无论是想用串口来调试树莓派,还是想用GPIO中的串口连接GPS,蓝牙,XBEE等...
  • Arduino简单实例之八_蓝牙模块

    万次阅读 2017-02-20 13:37:10
    1) 说明: 蓝牙模块用于手机或其它带蓝牙的设备通讯。蓝牙设备分为主从两种模式,作为主设备时,它查找和连接其它设备;...注意: Arduino与电脑和蓝牙模块通讯都使用串口TX/RX,同时操作时产生冲突,
  • arduino教程-13. 蓝牙

    千次阅读 2019-04-11 16:53:16
    智能移动设备和Arduino微电脑,两者相辅相成,可各自发挥所长。例如,用手机当成Arduino的显示器或输入设备,Arduino当做手机的硬件扩展口,控制灯光自走车,或者返回温湿度传感器的数据给手机。 电波、频段无线...
  • 有时候需要蓝牙串口SPP提供无线通信方式进行机器人或者物联网硬件的控制。 掌握此部分内容需要先阅读下列参考文献: arduino bluetooth and ubuntu linux:https://forum.arduino.cc/index.php?topic=24680.0 ...
1 2 3 4 5 ... 20
收藏数 733
精华内容 293
关键字:

蓝牙串口和arduino连接