在使用APC220实现Arduino无线数据传输那篇文章里,我们介绍了如何使用APC220模块在PC和Arduino间实现无线数据传输。那时我们使用的是厂家提供的USB适配器。,由于这个适配器只能接APC220模块,而不能起到其它的作用,或多或少觉得有些浪费。更加重要的是,为此我们得提供两个不同的套件,一个给Arduino使用,一个给PC使用,两者之间不能实现互换。
正是基于上面的这些问题,我们针对电子积木系列开发了一款USB转串口的适配器Serial Dongle,使用它就可以通过PC机来连接和使用各种基于串口的电子积木模块了,比如这里介绍的无线数传模块APC220。
APC220模块的使用可以参考使用APC220实现Arduino无线数据传输那篇文章,两者间的唯一区别只在于如何对USB虚拟出来的串口进行设置,以便能够使用厂家提供的设置程序RF-ANET来对APC220的各个参数进行调整。首先我们将USB转串口适配器Serial Dongle连接到PC机上,然后从设备管理器中找到该串口,并打开其属性设置窗口:
点击Advanced按钮打开高级属性设置窗口,我们需要从Com Port Number列表中为Serial Dongle设置一个较小的COM号(如COM5),否则厂家给的设置程序会出现无法打开该串口的错识。另一个需要修改的地方是BM Options中的延时设置需要从16改为更小的值(如8):
现在可以运行厂家给的设置程序了,此时特别需要注意的是操作顺序。应该先接好Serial Dongle,并将Serial Dongle右上角的开关拨到M的位置:
接着运行设置程序RF-ANET,最后再用连接线将APC220模块连接到Serial Dongle上,此时应该可以看到APC220设置程序窗口的最下面会显示Found device,表明APC220模块已经成功找到。如果设置程序没有找到APC220模块,可以试着断开APC220与Serial Dongle的连接,然后再次将APC220模块连接到SerialDongle上,直到设置程序成功找到APC220模块。
当APC220模块成功地被设置程序RF-ANET找到之后,我们就可以按照实际的需要来使用Serial Dongle对APC220模块进行各种参数配置了,而不再依赖厂家提供的USB适配器了;-)
至于随后的使用过程,那就完全一致了。一方面,我们可以将APC220模块通过4芯的串口连接线,与Arduino传感器扩展板相连接,这样Arduino就可以通过串口来操作APC220模块实现无线数据的收发:
另一方面,我们可以通过Serial Dongle连接APC220模块与电脑,并通过电脑的串口读写功能来操作APC220模块实现无线数据的收发:
下图就是利用两个APC220模块实现Arduino与电脑间无线数据传输的连接图:
光控开关所要实现的基本功能是当光线强度达到一定的值时,可以触发相应的继电器动作。如果使用Arduino和电子积木的话,最容易想到的一个方案是在Arduino的模拟输入引脚上接一个光线传感器,通过判断读入的光线传感器的值,来驱动相应的继电器动作。继电器上可以接一个用电设备,比如白炽灯。
但其实还有一个更加简单而直接的做法,就是通过一个运放电路,将光线传感器上读出的电压值,与预先设置好的一个电压值进行比较。如果光线传感器输出的电压值大于这一事先定义好的电压值时,驱动相应的继电器动作。这一“预先设置好的电压值”,是通过电位器来调节的。
借助于光线传感器和继电器这两个已经成型的电子积木模块,再加上相应的运放电路和电压调节电路,整个光控开关的原型搭建的还是比较顺利的。在将光控开关置于环境光线比较暗的情况下时,继电器吸合:
而在将光控开关所在环境的光线增强时,继电器断开:
通过调节电位器,可以控制继电器吸合或者断开时的光线强度。不过由于没有软件的滤波处理,在调整到临界点的位置时,容易产生继电器不断吸合和断开的情况,因此使用时要将电位器调节到越过这一临界点的位置上。
No tags
嫌博客更新太慢的观众不妨去跟踪一下我们在新浪上的微博。
下面两个地址都可以访问:
http://t.sina.com.cn/1704547397
http://t.flamingoeda.com
No tags
在对环境温度与湿度进行测量及控制的时候,瑞士Sensirion公司推出的SHT系列数字温湿度集成传感器无疑是一个非常不错的选择。虽然价格较普通的模拟温度或者湿传感器来讲稍微有点偏高,但在需要读出准确的温度和湿度值的场景下却非常合适,而且具有极高的可靠性和出色的长期稳定性。
我们设计的这款数字温湿度传感器就是基于SHT系列中使用最为广泛的SHT10,有关该传感器的具体参数可以参考官方网站上的介绍。
SHT10采用的是一种类似于I2C的两线串行接口(bidirectional 2-wire),因此在物理连接上我们需要使用两根连接线与该电子积木模块连接。
要在Arduino上使用该电子积木,可以从Practical Arduino这本书的官方网站上下载相应的库代码, 或者直接从这里下载我们在在测试时所使用版本的压缩文件。测试时我们使用的是Arduino 0018,只需要将相应的文件解压缩到Arduino安装目录下的libraries目录中就可以了:
测试时将电子积木上的DATA和SCK引脚分别与Arduino的数字I/O的10号引脚和11号引脚连接起来,相应的测试代码如下所示:
#include <SHT1x.h> #define dataPin 10 // DATA #define clockPin 11 // SCK SHT1x sht1x(dataPin, clockPin); void setup() { Serial.begin(9600); Serial.println("Starting up"); } void loop() { float temp_c; float temp_f; float humidity; // Read values from the sensor temp_c = sht1x.readTemperatureC(); temp_f = sht1x.readTemperatureF(); humidity = sht1x.readHumidity(); // Print the values to the serial port Serial.print("Temperature: "); Serial.print(temp_c, DEC); Serial.print("C / "); Serial.print(temp_f, DEC); Serial.print("F. Humidity: "); Serial.print(humidity); Serial.println("%"); delay(2000); }
下图是相应输出结果:
No tags
我们曾经做过一个八路的数字输出扩展模块,那个时候数字传感器的引脚顺序同现在的通用传感器引脚顺序是不一致的,而且连接的时候要用到三根传感器连接线。近期我们在电子积木的开发过程中引入了IDC接口,这样当电路模块有多个引脚时可以更加方便,不过同时灵活性也就降低了。新一版本的八路数字输出模块就是根据新的传感器引脚顺序,以及多个引脚相连接的问题做了修改:
按照新的传感器引脚的顺序定义,相应的为GND(-),VCC(+)和信号:
连接的时候使用的是IDC扩展板上提供的IDC-6引脚,并通过6芯IDC连接线相连接到八路数字输出模块的595IN插座上:
扩展出来的数字I/O引脚,可以用来连接数字输出模块,比如常用的LED模块:
如果需要多块级连的话,则需要将前一个模块的595OUT座与下一个模块的595IN座相连接:
该模块的核心是一个74HC595芯片,有关Arduino编程的问题可以借用Arduino官网上ShiftOut的说明和例子,但需要按照IDC扩展板上的硬件连线,修改相应的引脚,如下面的代码段所示:
int dataPin = 9; // SER int latchPin = 7; //RCK int clockPin = 6; //SCK





