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

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

    806 人正在学习 去看看 王全

目标: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-01-19 14:29:17 gddghtd 阅读数 83
  • 少儿编程:Scratch中的Arduino开发

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

    806 人正在学习 去看看 王全
               

目标: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 5void 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

           

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

2011-01-17 21:51:00 cooska 阅读数 4987
  • 少儿编程:Scratch中的Arduino开发

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

    806 人正在学习 去看看 王全

前段时间把蓝牙透传模块在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的数据会发送的很频繁,比如时刻反馈温度传感器发送的温度数据、光线传感器发送的光线数据等,使得该软件在接收数据的时候无法操作其他的功能,甚至会假死,也许通过建立线程能解决这个问题,以后再弄哈

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

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

    806 人正在学习 去看看 王全

 

本人刚刚入门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 );
  }
}

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

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

2019-11-10 10:25:16 RiseC 阅读数 49
  • 少儿编程:Scratch中的Arduino开发

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

    806 人正在学习 去看看 王全

HC-05的接线及使用

单个使用时只需接rx,tx,vcc,gnd四个引脚并将模块的rx与单片机的tx连接(硬串口或软串口),tx与单片机的rx连接(硬串口或软串口)

进入蓝牙的设置模式

在蓝牙模块通电之前按住蓝牙模块上的按键直到通电(慢闪)说明就进入了设置模式接下来就可以通过 以下代码进入AT

进入AT命令模式(设置蓝牙参数)

注意事项

  1. 一定要查看该蓝牙的传输波特率是多少。
  2. 串口的波特率一定要和程序的波特率一致。
  3. 把串口界面调成如下图所示
    在这里插入图片描述

进入AT模式的代码(注意在通电之前让蓝牙模块进入设置模式)

#include <SoftwareSerial.h>

// Pin10为RX,接HC05的TXD
// Pin11为TX,接HC05的RXD
SoftwareSerial BT(10, 11);
char val;

void setup() {
Serial.begin(9600);
Serial.println(“BT is ready!”);
// HC-05用AT命令查一下一般为9600或38400
BT.begin(38400);
}

void loop() {
if (Serial.available()) {
val = Serial.read();
BT.print(val);
}

if (BT.available()) {
val = BT.read();
Serial.print(val);
}

进入AT模式响应

打开arduino的串口监视器把波特率设置为与2,步骤中的波特率一致,输入以下命令,
回复OK说明模块正常工作在AT模式

常用AT命令如下

AT+UART?//查看蓝牙模块的波特率
AT+NAME=名称//设置/查询设备名称
设置/查询—模块角色:
AT+ ROLE?
0——从机(Slave)
1——主机(Master)
2——回环角色(Slave-Loop)
默认值:0

AT+ROLE=0//设置为从机(一般在用手机控制小车的蓝牙设置为从机)

AT+PSWD=配对码//设置
AT+ PSWD?//查询—配对码

AT+UART= //设置波特率
AT+ UART? //查询 串口(波特率)

完整小车蓝牙控制代码

请看资源(可私聊提供技术服务)

Arduino蓝牙通信实现

阅读数 1573

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