2013-01-12 18:18:33 berryreload 阅读数 6186
  • 少儿编程:Scratch中的Arduino开发

    本门课程将介绍如何以Scratch的编程方式进行Arduino开发(需购买硬件,详情可以参考教程内容)。 课程包含16个小模块的调用,并以案例形式发散思维,对应生活中随处可见的场景。(如红绿灯、楼道声控开灯,火焰报警、电动车碰撞报警、触摸传感器开启灯/风扇、高温开启风扇、天黑打开路灯,厕所冲水设备等) 每节正式课程包含连接硬件和代码编写两个环节,如果是孩子学习,请家长做好监督看护工作。 我相信,编程对孩子的思维培养和好奇心的激发是确实存在益处的,希望每一个观众能够有所收获。 课程适合人群:对编程感兴趣的青少年;有意培养子女编程兴趣的家长;有意从事少儿编程相关工作的朋友。

    795 人正在学习 去看看 王全

目标:BlackBerry手机通过蓝牙串口读取Arduino 蓝牙传过来的温度 湿度信息

硬件:Arduino主板 + DHT11温湿度传感器 + 蓝牙模块,开发工具C语言

手机:BlackBerry 9360手机,OS 7.1,开发工具Java

手机:BlackBerry 10 Alpha手机,OS  10.0.xxx,开发工具BlackBerry 10 NDK

通讯:手机和Arduino通过蓝牙连接




BlackBerry 9360手机上面的显示:湿度41,温度11(哈冷啊。。。。。。。。。。。。。。。。)


Arduino代码参考这里 http://playground.arduino.cc/Main/DHTLib

代码如下:

// 
//   FILE:  dht_test.pde
// PURPOSE: DHT library test sketch for Arduino
//

#include <dht.h>

dht DHT;

#define DHT11_PIN 8
#define DHT22_PIN 5

void setup()
{
  Serial.begin(9600);
  Serial.println("DHT TEST PROGRAM ");
  Serial.print("LIBRARY VERSION: ");
  Serial.println(DHT_LIB_VERSION);
  Serial.println();
  Serial.println("Type,\tstatus,\tHumidity (%),\tTemperature (C)");
}

void loop()
{
  // READ DATA
  int chk;
 
  // READ DATA
  Serial.print("DHT11, \t");
  chk = DHT.read11(DHT11_PIN);
  switch (chk)
  {
    case DHTLIB_OK:  
		Serial.print("OK,\t"); 
		break;
    case DHTLIB_ERROR_CHECKSUM: 
		Serial.print("Checksum error,\t"); 
		break;
    case DHTLIB_ERROR_TIMEOUT: 
		Serial.print("Time out error,\t"); 
		break;
    default: 
		Serial.print("Unknown error,\t"); 
		break;
  }
 // DISPLAT DATA
  Serial.print(DHT.humidity,1);
  Serial.print(",\t");
  Serial.println(DHT.temperature,1);

  delay(1000);
}
//
// END OF FILE
//



BlackBerry  OS 7.1

BlackBerry Java API封装了串口通讯,所以用起来就很方便了。

开发工具eJDE中导入sample程序BluetoothSerialPortDemo ,修改代码接收蓝牙数据并显示在文本框中。

                

                        // Read in the contents and get the event lock for this
                        // application so we can update the info field.
                    	Util.log("Read bluetooth data...");
                    	int i = 0;
                    	while(true){
                    		i++;
                            String cmd = "";
                            byte b;
                            while ((( b = _din.readByte()) > 0) &&( (char)b != ((char)0x0a)) ){
                            	cmd = cmd + (char)b;
                            } 
                            
                            Util.log("Received " + cmd);
                            _infoField.setText(i + ": " + cmd);
                        }
                      

注:

Arduino中,Serial.println() 出来的数据是0x0d, 0x0a。在Java中,我只检测回车字符  (char)0x0a作为一条数据的分隔符即可


BlackBerry  OS 10

BlackBerry NDK C/C++ API封装了蓝牙SPP API,用起来稍微复杂一点(和Android API类似),连接蓝牙设备的时候,bt_spp_open()方法需要对方的服务UUID,mac地址。

下载BlackBerry 蓝牙例子代码bluetoothsppchat,导入到NDK中,build,运行即可。

注意其中的UUID的定义:

#define SPP_SERVICE_UUID "00001101-0000-1000-8000-00805F9B34FB"

//! [7]
void ChatManager::connectToSPPService()
{
    m_chatHistory.clear();

    const int fd = bt_spp_open(m_remoteAddress.toAscii().data(), (char *) SPP_SERVICE_UUID, false);

    if (fd >= 0) {
        updateChatWindow("SPP Client\n\n");

        setSPPClient(fd);
    } else {
        showDialog("spp_open fail", "errno = " + QString::number(errno) );
    }
}
//! [7]
BB 10运行效果如图



参考:

蓝牙串口服务  UUID   '{00001101-0000-1000-8000-00805F9B34FB}' 

https://bluetooth.org/Technical/AssignedNumbers/service_discovery.htm


http://www.douban.com/group/topic/20009323/

http://www.cnblogs.com/lyout/archive/2011/04/11/2012175.html


BlackBerry 10 NDK Bluetooth API
http://developer.blackberry.com/native/reference/bb10/com.qnx.doc.bluetooth/topic/manual/btspp.h_functions_overview.html


BlackBerry 10 NDK蓝牙例子(Bluetooth SPP Chat Example)说明
http://blackberry.github.com/Cascades-Samples/bluetoothsppchat.html


BlackBerry 10 NDK例子代码(包括蓝牙)下载
https://github.com/blackberry/Cascades-Samples/

安卓手机和Arduino蓝牙通讯例子 Data transfer between Android and Arduino via Bluetooth
http://english.cxem.net/arduino/arduino5.php

2019-04-03 08:55:07 weixin_42369687 阅读数 573
  • 少儿编程:Scratch中的Arduino开发

    本门课程将介绍如何以Scratch的编程方式进行Arduino开发(需购买硬件,详情可以参考教程内容)。 课程包含16个小模块的调用,并以案例形式发散思维,对应生活中随处可见的场景。(如红绿灯、楼道声控开灯,火焰报警、电动车碰撞报警、触摸传感器开启灯/风扇、高温开启风扇、天黑打开路灯,厕所冲水设备等) 每节正式课程包含连接硬件和代码编写两个环节,如果是孩子学习,请家长做好监督看护工作。 我相信,编程对孩子的思维培养和好奇心的激发是确实存在益处的,希望每一个观众能够有所收获。 课程适合人群:对编程感兴趣的青少年;有意培养子女编程兴趣的家长;有意从事少儿编程相关工作的朋友。

    795 人正在学习 去看看 王全

 

本人刚刚入门arduino 制作了一个非常简陋的蓝牙小车

主要有hc-05蓝牙串口模块带动小车运行

 

 

 

材料有 hc-05蓝牙串口

           小车底盘轮胎以及电机

           l298n模块

           arduino uno r3

           杜邦线

           四节五号电池

材料的连接

 

 

hc-05蓝牙串口arduino uno r3的连接

 

 

    l298n模块 arduino uno r3的连接

四节五号电池  与l298n模块连接

arduino uno r3与电源连接

代码

 

int leftMotor1 = 4;
int leftMotor2 = 5;
int rightMotor1 = 6;
int rightMotor2 = 7;

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
 
  pinMode(leftMotor1, OUTPUT);
  pinMode(leftMotor2, OUTPUT);
  pinMode(rightMotor1, OUTPUT);
  pinMode(rightMotor2, OUTPUT);
}

void loop() {
  // put your main code here, to run repeatedly:
  //usart read
  if(Serial.available()>0)
  {  char cmd;
    cmd = Serial.read();//读取蓝牙模块发送到串口的数据
  
    Serial.print(cmd);
 
   
   motorRun(cmd);

  } 
}
void motorRun(char cmd)
{
  switch(cmd){
    case 49:
      Serial.println("FORWARD"); //输出状态
      digitalWrite(leftMotor1, HIGH);
      digitalWrite(leftMotor2, LOW);
      digitalWrite(rightMotor1, HIGH);
      digitalWrite(rightMotor2, LOW);
      delay(1000);
      break;
     case 50:
      Serial.println("BACKWARD"); //输出状态
      digitalWrite(leftMotor1, LOW);
      digitalWrite(leftMotor2, HIGH);
      digitalWrite(rightMotor1, LOW);
      digitalWrite(rightMotor2, HIGH);
      delay(1000);
      break;
     case 51:
      Serial.println("TURN  LEFT"); //输出状态
      digitalWrite(leftMotor1, HIGH);
      digitalWrite(leftMotor2, LOW);
      digitalWrite(rightMotor1, LOW);
      digitalWrite(rightMotor2, HIGH);
     
      break;
     case 52
     :
      Serial.println("TURN  RIGHT"); //输出状态
      digitalWrite(leftMotor1, LOW);
      digitalWrite(leftMotor2, HIGH);
      digitalWrite(rightMotor1, HIGH);
      digitalWrite(rightMotor2, LOW);
    
      break;
     default:
      Serial.println("STOP"); //输出状态
      digitalWrite(leftMotor1, LOW);
      digitalWrite(leftMotor2, LOW);
      digitalWrite(rightMotor1, LOW);
      digitalWrite(rightMotor2, LOW);
      delay(1000 );
  }
}

代码如下并没有调整运行速度

也没有加巡线超声波测距等功能后续填坑

2017-09-18 10:32:16 weixin_37272286 阅读数 46394
  • 少儿编程:Scratch中的Arduino开发

    本门课程将介绍如何以Scratch的编程方式进行Arduino开发(需购买硬件,详情可以参考教程内容)。 课程包含16个小模块的调用,并以案例形式发散思维,对应生活中随处可见的场景。(如红绿灯、楼道声控开灯,火焰报警、电动车碰撞报警、触摸传感器开启灯/风扇、高温开启风扇、天黑打开路灯,厕所冲水设备等) 每节正式课程包含连接硬件和代码编写两个环节,如果是孩子学习,请家长做好监督看护工作。 我相信,编程对孩子的思维培养和好奇心的激发是确实存在益处的,希望每一个观众能够有所收获。 课程适合人群:对编程感兴趣的青少年;有意培养子女编程兴趣的家长;有意从事少儿编程相关工作的朋友。

    795 人正在学习 去看看 王全

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

  • 进入 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蓝牙模块与手机连接

2018-09-01 21:03:49 woshi_ziyu 阅读数 1863
  • 少儿编程:Scratch中的Arduino开发

    本门课程将介绍如何以Scratch的编程方式进行Arduino开发(需购买硬件,详情可以参考教程内容)。 课程包含16个小模块的调用,并以案例形式发散思维,对应生活中随处可见的场景。(如红绿灯、楼道声控开灯,火焰报警、电动车碰撞报警、触摸传感器开启灯/风扇、高温开启风扇、天黑打开路灯,厕所冲水设备等) 每节正式课程包含连接硬件和代码编写两个环节,如果是孩子学习,请家长做好监督看护工作。 我相信,编程对孩子的思维培养和好奇心的激发是确实存在益处的,希望每一个观众能够有所收获。 课程适合人群:对编程感兴趣的青少年;有意培养子女编程兴趣的家长;有意从事少儿编程相关工作的朋友。

    795 人正在学习 去看看 王全

实际上,与Arduino开发板进行串口通信非常简单。在本篇文章中,我们将介绍如何进行温度测量,然后通过串口发送测量结果。

与其他设备不同,Arduino串口通信非常易于使用。串口通信可以是有线或无线的,例如串口蓝牙连接。 Arduino编程环境有一个串口监视器的工具,专门用于查看串口数据通信。要激活通信,使用以下方法:

  1. 转到工具栏;

  2. 单击串口监视器(Serial Monitor)菜单;

  3. 选择Serial.begin()函数设定的波特率。

以下是一些Arduino串口通信函数。

Serial.begin(speed)

此函数设置串行通信速度。它有一个参数speed,通常设置为9600。

Serial.read()

此函数从串口接收数据。

Serial.write(VAL)

该函数通过串口发送数据。参数val可以是单个变量、字符串或数组。

Serial.printIn(val,format)

此函数使用某种特定格式将val打印到Arduino IDE串口监视器。

这里写图片描述

更多内容请参考以下链接:https://www.yiboard.com/thread-904-1-1.html

2015-07-26 13:38:39 ling3ye 阅读数 22021
  • 少儿编程:Scratch中的Arduino开发

    本门课程将介绍如何以Scratch的编程方式进行Arduino开发(需购买硬件,详情可以参考教程内容)。 课程包含16个小模块的调用,并以案例形式发散思维,对应生活中随处可见的场景。(如红绿灯、楼道声控开灯,火焰报警、电动车碰撞报警、触摸传感器开启灯/风扇、高温开启风扇、天黑打开路灯,厕所冲水设备等) 每节正式课程包含连接硬件和代码编写两个环节,如果是孩子学习,请家长做好监督看护工作。 我相信,编程对孩子的思维培养和好奇心的激发是确实存在益处的,希望每一个观众能够有所收获。 课程适合人群:对编程感兴趣的青少年;有意培养子女编程兴趣的家长;有意从事少儿编程相关工作的朋友。

    795 人正在学习 去看看 王全

 

 

通过手机进行通信是可以实现很多遥控功能,虽然距离是比较短,一般是10米,但对于我这种新手做测试,比起买一个几百块的多通道遥控器成本要低很多。

 

实验目的:用Android实现蓝牙连接通过Arduino串口输出信息

 

这次使用的是蓝牙HC-06从模块,就是从机模块,这都因为买之前没有问清楚什么叫从什么叫住。

所以在这解释一下,如有错误请指正。谢谢

 

HC-05是主从模块,能做主机,从机。

HC-06是从模块,只能做从机。

 

主机可以与从机配对,从机不能和从机配对。如果要两个单片机通信,那就至少一个是有主机功能的,要是两个都是从机是通信不了的。

其他型号说明:

HC03工业级主从 

HC04工业级从

----------------------------

HC05民用级主从  

HC06民用级从

 

资料上写,HC06空旷的传输距离是10米。买的时候要搞清楚自己的需求了。

 

准备工作:

蓝牙模块 HC06  x1

arduino uno       x1

安卓手机            x1

安卓APP:  Amarino_2_v0_55

下载地址:http://code.google.com/p/amarino/downloads/detail?name=Amarino_2_v0_55.apk&can=2&q=

amarino 主页:http://www.amarino-toolkit.net/

备用下载地址:http://pan.baidu.com/s/1jG6FJAQ

                          http://download.csdn.net/detail/ling3ye/9720744

 

Arduino程序和Android APP打包下载 
https://u16460183.ctfile.com/fs/16460183-293935425

1,接线方法

 

2测试程序

 

int num = 0;

void setup()
{
 Serial.begin(9600);
}
 
void loop()
{
  while(Serial.available())
   {
     char c=Serial.read();
      if(c=='A')
        {
          num++;
          Serial.print("Hello:num=");
          Serial.println(num);
        }
   }
}

 

 

上电时,蓝牙的LED灯会不停的闪,意思是没有任何连接。

当用手机连接上了,就会变成常亮。
接好线烧好程序。。。。。

 

3手机安装好APP

打开APP 可以搜索到蓝牙模块

 

进行连接的时候会提示进行配对,输入1234就可以了,如果不行可以试试0000

 

这就表示连接成功了。 同时蓝牙模块的LED灯也变成了常亮。

 

然后点击右下角的Monitoring按钮,进入如下界面

 

在这里直接按SEND就可以了。

我直接按了一下SEND ,然后看回串口的信息如下:

如果没有信息或者乱码请注意波特率是否与程序的相同。

 

到此完成连接测试了。大家也可以试下输入字符串看看有什么不同,这了留给大家去实验思考了。

,arduino 蓝牙例子,

阅读数 646

没有更多推荐了,返回首页