“第十二课--microWRT与Microduino I2C 通信”的版本间的差异

来自Microduino Wikipedia
跳转至: 导航搜索
(Created page with "{| style="width: 800px;" |- | 一般的应用中microwrt和其他模块,比如蓝牙,zigbee,microduino-core模块都是通过串口进行通信的。本文主要介绍...")
 
Microduino Core
 
(未显示同一用户的1个中间版本)
第17行: 第17行:
 
下面是microduino Core 的程序。
 
下面是microduino Core 的程序。
  
 +
<source lang="cpp">
 
   #include <Wire.h>
 
   #include <Wire.h>
 +
  #define SLAVE_ADDRESS 0x04
  
  #define SLAVE_ADDRESS 0x04
 
 
   int number = 0;
 
   int number = 0;
 
   int state = 0;
 
   int state = 0;
第28行: 第29行:
 
   // initialize i2c as slave
 
   // initialize i2c as slave
 
   Wire.begin(SLAVE_ADDRESS);
 
   Wire.begin(SLAVE_ADDRESS);
 
 
   // define callbacks for i2c communication
 
   // define callbacks for i2c communication
 
   Wire.onReceive(receiveData);
 
   Wire.onReceive(receiveData);
 
   Wire.onRequest(sendData);
 
   Wire.onRequest(sendData);
 
 
   Serial.print("Ready!");
 
   Serial.print("Ready!");
 
   }
 
   }
第47行: 第46行:
 
     Serial.print("data received: ");
 
     Serial.print("data received: ");
 
     Serial.println(number);
 
     Serial.println(number);
 
 
     if (number == 1)
 
     if (number == 1)
 
     {
 
     {
第67行: 第65行:
 
   Wire.write(number);
 
   Wire.write(number);
 
   }
 
   }
 +
</source>
  
 
==硬件连接==  
 
==硬件连接==  

2015年5月31日 (日) 08:55的最新版本

一般的应用中microwrt和其他模块,比如蓝牙,zigbee,microduino-core模块都是通过串口进行通信的。本文主要介绍如何利用 microWRT的i2c接口进行通信。对于i2c接口的具体含义,本教程不做详细介绍,在microduino的基础教程中有详细描述。


microWRT i2c接口配置

通过下面的基础教程来配置microwrt对i2c接口的支持。

https://www.microduino.cc/wiki/index.php?title=第五课--MicroWRT_I2C_使用

Microduino Core

Core模块已经支持了i2c协议。包括3.3v的core模块和5v core模块。

下面是microduino Core 的程序。

  #include <Wire.h>
  #define SLAVE_ADDRESS 0x04 

  int number = 0;
  int state = 0;

  void setup() {
  pinMode(13, OUTPUT);
  Serial.begin(9600); // start serial for output
  // initialize i2c as slave
  Wire.begin(SLAVE_ADDRESS);
  // define callbacks for i2c communication
  Wire.onReceive(receiveData);
  Wire.onRequest(sendData);
  Serial.print("Ready!");
  }

  void loop() {
   delay(100);
  }

  // callback for received data
  void receiveData(int byteCount)
  {
    while(Wire.available()) {
    number = Wire.read();
    Serial.print("data received: ");
    Serial.println(number);
    if (number == 1)
    {
      if (state == 0){
      digitalWrite(13, HIGH); // set the LED on
      state = 1;
    }
    else
    {
      digitalWrite(13, LOW); // set the LED off
      state = 0;
    }
    }
   }
  }

  // callback for sending data
  void sendData(){
  Wire.write(number);
  }

硬件连接

在microWRT的UPIN扩展板上,留出了I2C接口,包括SCL,SDA,3.3V,GND 4个引脚。将这四个引脚分别接到Core模块的对应引脚上。 为了验证传输数据的有效性,我们在core的D13引脚接一个LED灯。

系统连接如下图所示:

文件:I2c-comu-hard.jpg
I2C Communication

测试

系统上电后,可以发现i2c-0设备,core模块被设置为从机,并且地址为0x04,可以通过下面的命令来测试数据。 同时开启Microduino的模拟串口来监视数据。

 root@microWrt:/dev# i2cset -y 0 0x04 1

其中: 0: 表示操作i2c-0 0x04:表示从机地址 1: 表示输入的数据

测试结果如下:

文件:I2c-comu.jpg
I2C Communication

有了I2C-0 设备和从机地址0x04,玩家可以通过在microwrt上通过python,C程序来完成对I2C接口的使用。