<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Arduino中国 &#187; APC220</title>
	<atom:link href="http://blog.flamingoeda.com/tag/apc220/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.flamingoeda.com</link>
	<description>Flamingo EDA</description>
	<lastBuildDate>Mon, 02 Aug 2010 05:45:22 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>电子积木 无线数传模块 APC220</title>
		<link>http://blog.flamingoeda.com/2010/07/06/%e7%94%b5%e5%ad%90%e7%a7%af%e6%9c%a8-%e6%97%a0%e7%ba%bf%e6%95%b0%e4%bc%a0%e6%a8%a1%e5%9d%97-apc220/</link>
		<comments>http://blog.flamingoeda.com/2010/07/06/%e7%94%b5%e5%ad%90%e7%a7%af%e6%9c%a8-%e6%97%a0%e7%ba%bf%e6%95%b0%e4%bc%a0%e6%a8%a1%e5%9d%97-apc220/#comments</comments>
		<pubDate>Tue, 06 Jul 2010 10:24:00 +0000</pubDate>
		<dc:creator>flamingoeda</dc:creator>
				<category><![CDATA[Arduino]]></category>
		<category><![CDATA[电子积木]]></category>
		<category><![CDATA[APC220]]></category>
		<category><![CDATA[无线]]></category>

		<guid isPermaLink="false">http://blog.flamingoeda.com/?p=594</guid>
		<description><![CDATA[在使用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与电脑间无线数据传输的连接图：]]></description>
			<content:encoded><![CDATA[<p>在<a href="http://blog.flamingoeda.com/2009/06/14/%E4%BD%BF%E7%94%A8apc220%E5%AE%9E%E7%8E%B0arduino%E6%97%A0%E7%BA%BF%E6%95%B0%E6%8D%AE%E4%BC%A0%E8%BE%93/" target="_blank">使用APC220实现Arduino无线数据传输</a>那篇文章里，我们介绍了如何使用APC220模块在PC和Arduino间实现无线数据传输。那时我们使用的是厂家提供的USB适配器。，由于这个适配器只能接APC220模块，而不能起到其它的作用，或多或少觉得有些浪费。更加重要的是，为此我们得提供两个不同的套件，一个给Arduino使用，一个给PC使用，两者之间不能实现互换。</p>
<p>正是基于上面的这些问题，我们针对电子积木系列开发了一款USB转串口的适配器Serial Dongle，使用它就可以通过PC机来连接和使用各种基于串口的电子积木模块了，比如这里介绍的无线数传模块APC220。</p>
<p><img class="aligncenter" title="APC220" src="http://image.flamingoeda.com/albums/userpics/febb_apc220_2.JPG" alt="" width="460" height="345" />APC220模块的使用可以参考<a href="../2009/06/14/%E4%BD%BF%E7%94%A8apc220%E5%AE%9E%E7%8E%B0arduino%E6%97%A0%E7%BA%BF%E6%95%B0%E6%8D%AE%E4%BC%A0%E8%BE%93/" target="_blank">使用APC220实现Arduino无线数据传输</a>那篇文章，两者间的唯一区别只在于如何对USB虚拟出来的串口进行设置，以便能够使用厂家提供的设置程序RF-ANET来对APC220的各个参数进行调整。首先我们将USB转串口适配器Serial Dongle连接到PC机上，然后从设备管理器中找到该串口，并打开其属性设置窗口：</p>
<p><a href="http://blog.flamingoeda.com/wp-content/uploads/2010/07/2.jpg"><img class="aligncenter size-medium wp-image-595" title="2" src="http://blog.flamingoeda.com/wp-content/uploads/2010/07/2-277x300.jpg" alt="" width="277" height="300" /></a></p>
<p>点击Advanced按钮打开高级属性设置窗口，我们需要从Com Port Number列表中为Serial Dongle设置一个较小的COM号（如COM5），否则厂家给的设置程序会出现无法打开该串口的错识。另一个需要修改的地方是BM Options中的延时设置需要从16改为更小的值（如8）：</p>
<p><a href="http://blog.flamingoeda.com/wp-content/uploads/2010/07/3.jpg"><img class="aligncenter size-medium wp-image-596" title="3" src="http://blog.flamingoeda.com/wp-content/uploads/2010/07/3-300x214.jpg" alt="" width="300" height="214" /></a></p>
<p>现在可以运行厂家给的设置程序了，此时特别需要注意的是操作顺序。应该先接好Serial Dongle，并将Serial Dongle右上角的开关拨到M的位置：</p>
<p><img class="aligncenter" title="APC220" src="http://image.flamingoeda.com/albums/userpics/normal_febb_serial_dongle_1.JPG" alt="" width="399" height="295" /></p>
<p>接着运行设置程序RF-ANET，最后再用连接线将APC220模块连接到Serial Dongle上，此时应该可以看到APC220设置程序窗口的最下面会显示Found device，表明APC220模块已经成功找到。如果设置程序没有找到APC220模块，可以试着断开APC220与Serial Dongle的连接，然后再次将APC220模块连接到SerialDongle上，直到设置程序成功找到APC220模块。</p>
<p><a href="http://blog.flamingoeda.com/wp-content/uploads/2010/07/4.jpg"><img class="aligncenter size-medium wp-image-597" title="4" src="http://blog.flamingoeda.com/wp-content/uploads/2010/07/4-300x272.jpg" alt="" width="300" height="272" /></a></p>
<p>当APC220模块成功地被设置程序RF-ANET找到之后，我们就可以按照实际的需要来使用Serial Dongle对APC220模块进行各种参数配置了，而不再依赖厂家提供的USB适配器了;-)</p>
<p>至于随后的使用过程，那就完全一致了。一方面，我们可以将APC220模块通过4芯的串口连接线，与Arduino传感器扩展板相连接，这样Arduino就可以通过串口来操作APC220模块实现无线数据的收发：</p>
<p><img class="aligncenter" title="apc220" src="http://image.flamingoeda.com/albums/userpics/normal_febb_apc220_3.JPG" alt="" width="400" height="300" /></p>
<p>另一方面，我们可以通过Serial Dongle连接APC220模块与电脑，并通过电脑的串口读写功能来操作APC220模块实现无线数据的收发：</p>
<p><img class="aligncenter" title="apc220" src="http://image.flamingoeda.com/albums/userpics/normal_febb_serial_dongle_2.JPG" alt="" width="400" height="300" />下图就是利用两个APC220模块实现Arduino与电脑间无线数据传输的连接图：</p>
<p><img class="aligncenter" title="apc220" src="http://image.flamingoeda.com/albums/userpics/normal_febb_apc220_4.JPG" alt="" width="400" height="172" /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.flamingoeda.com/2010/07/06/%e7%94%b5%e5%ad%90%e7%a7%af%e6%9c%a8-%e6%97%a0%e7%ba%bf%e6%95%b0%e4%bc%a0%e6%a8%a1%e5%9d%97-apc220/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>使用APC220实现Arduino无线数据传输</title>
		<link>http://blog.flamingoeda.com/2009/06/14/%e4%bd%bf%e7%94%a8apc220%e5%ae%9e%e7%8e%b0arduino%e6%97%a0%e7%ba%bf%e6%95%b0%e6%8d%ae%e4%bc%a0%e8%be%93/</link>
		<comments>http://blog.flamingoeda.com/2009/06/14/%e4%bd%bf%e7%94%a8apc220%e5%ae%9e%e7%8e%b0arduino%e6%97%a0%e7%ba%bf%e6%95%b0%e6%8d%ae%e4%bc%a0%e8%be%93/#comments</comments>
		<pubDate>Sun, 14 Jun 2009 06:32:27 +0000</pubDate>
		<dc:creator>flamingoeda</dc:creator>
				<category><![CDATA[Arduino]]></category>
		<category><![CDATA[教程]]></category>
		<category><![CDATA[APC220]]></category>

		<guid isPermaLink="false">http://blog.arduino.cn/?p=450</guid>
		<description><![CDATA[在之前的文章中，曾经介绍了如何使用RF模块实现对Arduino的无线控制，其原理非常类似于遥控器，能够实现4个按钮的RF无线遥控。不过，对于要进行数据传输的场合，这样的解决办法就显得不太适合了，比如你要将Arduino采集到的光线传感器的数值，无线传输到PC机那端的时候。这种情况技术上称为无线数据传输，或者简称为无线数传。实现无线数传目前有不少解决方案，但最容易同Arduino连接使用的是类似于APC220这样通过串口来实现的无线数传，虽然数据传输的速度可能慢点（受限于串口的波特率），但的确不失为一种简单易用的方式，难怪很多网友都建议为Arduino加上这样的模块支持。 今天找出点时间来摆弄摆弄这个APC220了，厂家寄给我的模块没有任何说明，好在网络上能找到一些说明，另外就得自己摸索了。首先发现的问题是厂家给的USB适配器似乎于APC220不是很匹配：引脚的数目不一样。这个嘛，似乎不难理解，可能为了兼容不同的产品，或者至少可以说这一适配器不是为APC220专门设计的。USB适配器上用的芯片是CP2102，于是先到Silicon Laboratories网站下载相应的驱动程序，我下载的文件为cp210x_vcp_win2k_xp_s2k3.zip，解压缩后是一个exe文件，直接执行然后按照提示一步一步完成驱动的安装。 驱动安装完成之后，将USB适配器插入到PC机的USB接口中，Windows会提示找到相应的硬件，并对其进行相应的安装和配置： 当Windows提示你硬件已经可以使用之后，在设备管理器的“端口（COM 和 LPT)”下面可以找到CP2102虚拟出来的串口： 现在可以将一个APC220模块连接到USB适配器上了，由于USB适配器与APC220的引脚数目并不一致，连接时要注意插入的位置： 打开APC220厂家提供的设置程序RF-ANET，之前CP2102默认找到的串口为COM87，但RF-ANET程序似乎不能正常地打开这一端口。 在设备管理器中将串口设置成COM4后，重新插入USB适配器并打开RF-ANET，单击“Read R”按钮，一切正常，状态栏上显示“read succeed!”，表明已经能够正常地跟APC220通讯上了！ 这样PC端APC220的测试环境就建议好了，现在来看Arduino这一端端。APC220模块与Arduino之间的连线有4条：5V, GND, TX和RX，需要注意的是，APC220和Arduino都是单独的串口设备，因此Arduino上的发送端TX应该与APC220上的接收端RX连接起来，同理Arduino上的RX应该与APC220上的TX连接起来： APC220模块的默认波特率设置为9600，因此先用下面的代码来进行测试，注意在向Aduino下载程序时，先断开同APC220模块TX和RX上的连线，否则会出现下载无法正常的情况。 int val = 0; int ledPin = 13; void setup() { Serial.begin(9600); } void loop() { val = Serial.read(); if (-1 != val) { if ('A' == val &#124;&#124; 'a' == val) { Serial.println("Hello from Arduino!"); }else if ('B' [...]]]></description>
			<content:encoded><![CDATA[<p>在之前的文章中，曾经介绍了如何使用RF模块实现对Arduino的无线控制，其原理非常类似于遥控器，能够实现4个按钮的RF无线遥控。不过，对于要进行数据传输的场合，这样的解决办法就显得不太适合了，比如你要将Arduino采集到的光线传感器的数值，无线传输到PC机那端的时候。这种情况技术上称为无线数据传输，或者简称为无线数传。实现无线数传目前有不少解决方案，但最容易同Arduino连接使用的是类似于APC220这样通过串口来实现的无线数传，虽然数据传输的速度可能慢点（受限于串口的波特率），但的确不失为一种简单易用的方式，难怪很多网友都建议为Arduino加上这样的模块支持。</p>
<p>今天找出点时间来摆弄摆弄这个APC220了，厂家寄给我的模块没有任何说明，好在网络上能找到一些说明，另外就得自己摸索了。首先发现的问题是厂家给的USB适配器似乎于APC220不是很匹配：引脚的数目不一样。这个嘛，似乎不难理解，可能为了兼容不同的产品，或者至少可以说这一适配器不是为APC220专门设计的。USB适配器上用的芯片是CP2102，于是先<a href="https://www.silabs.com/products/mcu/Pages/USBtoUARTBridgeVCPDrivers.aspx">到Silicon Laboratories网站下载相应的驱动程序</a>，我下载的文件为<a href="http://blog.flamingoeda.com/wp-content/uploads/2009/06/cp210x_vcp_win2k_xp_s2k3.zip">cp210x_vcp_win2k_xp_s2k3.zip</a>，解压缩后是一个exe文件，直接执行然后按照提示一步一步完成驱动的安装。</p>
<p>驱动安装完成之后，将USB适配器插入到PC机的USB接口中，Windows会提示找到相应的硬件，并对其进行相应的安装和配置：<br />
<a href="http://blog.flamingoeda.com/wp-content/uploads/2009/06/apc220_usb_adapter.jpg"><img class="aligncenter size-full wp-image-452" title="apc220_usb_adapter" src="http://blog.flamingoeda.com/wp-content/uploads/2009/06/apc220_usb_adapter.jpg" alt="" width="253" height="85" /></a></p>
<p>当Windows提示你硬件已经可以使用之后，在设备管理器的“端口（COM 和 LPT)”下面可以找到CP2102虚拟出来的串口：<br />
<a href="http://blog.flamingoeda.com/wp-content/uploads/2009/06/apc220_usb_hardware_manager.jpg"><img class="aligncenter size-full wp-image-453" title="apc220_usb_hardware_manager" src="http://blog.flamingoeda.com/wp-content/uploads/2009/06/apc220_usb_hardware_manager.jpg" alt="" width="420" height="451" /></a></p>
<p>现在可以将一个APC220模块连接到USB适配器上了，由于USB适配器与APC220的引脚数目并不一致，连接时要注意插入的位置：<br />
<a href="http://blog.flamingoeda.com/wp-content/uploads/2009/06/acp220_usb_connection_2.jpg"><img class="aligncenter size-full wp-image-460" title="acp220_usb_connection_2" src="http://blog.flamingoeda.com/wp-content/uploads/2009/06/acp220_usb_connection_2.jpg" alt="" width="460" height="345" /></a></p>
<p>打开APC220厂家提供的设置程序<a href="http://blog.flamingoeda.com/wp-content/uploads/2009/06/apc220.zip">RF-ANET</a>，之前CP2102默认找到的串口为COM87，但RF-ANET程序似乎不能正常地打开这一端口。<br />
<a href="http://blog.flamingoeda.com/wp-content/uploads/2009/06/apc220_usb_rf_anet_1.jpg"><img class="aligncenter size-full wp-image-454" title="apc220_usb_rf_anet_1" src="http://blog.flamingoeda.com/wp-content/uploads/2009/06/apc220_usb_rf_anet_1.jpg" alt="" width="413" height="374" /></a></p>
<p>在设备管理器中将串口设置成COM4后，重新插入USB适配器并打开RF-ANET，单击“Read R”按钮，一切正常，状态栏上显示“read succeed!”，表明已经能够正常地跟APC220通讯上了！<br />
<a href="http://blog.flamingoeda.com/wp-content/uploads/2009/06/apc220_usb_rf_anet_2.jpg"><img class="aligncenter size-full wp-image-455" title="apc220_usb_rf_anet_2" src="http://blog.flamingoeda.com/wp-content/uploads/2009/06/apc220_usb_rf_anet_2.jpg" alt="" width="412" height="374" /></a></p>
<p>这样PC端APC220的测试环境就建议好了，现在来看Arduino这一端端。APC220模块与Arduino之间的连线有4条：5V, GND, TX和RX，需要注意的是，APC220和Arduino都是单独的串口设备，因此Arduino上的发送端TX应该与APC220上的接收端RX连接起来，同理Arduino上的RX应该与APC220上的TX连接起来：</p>
<p><a href="http://blog.flamingoeda.com/wp-content/uploads/2009/06/acp220_arduino_connection_1.jpg"><img class="aligncenter size-full wp-image-461" title="acp220_arduino_connection_1" src="http://blog.flamingoeda.com/wp-content/uploads/2009/06/acp220_arduino_connection_1.jpg" alt="" width="460" height="345" /></a></p>
<p>APC220模块的默认波特率设置为9600，因此先用下面的代码来进行测试，注意在向Aduino下载程序时，先断开同APC220模块TX和RX上的连线，否则会出现下载无法正常的情况。</p>
<pre class="java">int val = 0;
int ledPin = 13;
void setup()
{
  Serial.begin(9600);
}

void loop()
{
  val = Serial.read();
  if (-1 != val) {
   if ('A' == val || 'a' == val) {
     Serial.println("Hello from Arduino!");
   }else if ('B' == val || 'b' == val) {
      digitalWrite(ledPin, HIGH);
      delay(500);
      digitalWrite(ledPin, LOW);
    }
  }
}</pre>
<p>总结一下，现在我们已经分别在PC和Arduino上连接了一个APC220模块，并且已经向Arduino里面写入了相应的测试代码。一切都准备好之后，现在我们来进行相应的测试。首先要注意的是我们必须用外接电源的方式对Arduino进行供电，这是因为如果连接上USB线的话，相应的FT232模块会被激活，这样FT232实现的串口和ACP220上的串口就会因为冲突导致通信不正常：</p>
<p><a href="http://blog.flamingoeda.com/wp-content/uploads/2009/06/acp220_arduino_connection_2.jpg"><img class="aligncenter size-full wp-image-462" title="acp220_arduino_connection_2" src="http://blog.flamingoeda.com/wp-content/uploads/2009/06/acp220_arduino_connection_2.jpg" alt="" width="460" height="345" /></a></p>
<p>在将加电后的Arduino放到房间里的一个角落之后，现在来配置PC端。APC220模块通过其USB适配器之后，其原理上也相当于一个串口，因此我们可以用Arduino自带的开发环境来进行测试，只是这一情况下你的PC上连接的不再是Arduino，而是APC220 USB适配器。连接好APC220 USB适配器后，打开Arduino，在“Tools” -&gt; “Serial Ports”菜单下选择USB适配器虚拟出来的“COM4”（与之前的设置一致）。接着打开Arduino里的“Serial Monitor”，发送A字符，会收到Arduino传回来的“Hello from Arduino!”，发送B字符可以点亮Arduino上的13号LED（持续0.5秒）：<br />
<a href="http://blog.flamingoeda.com/wp-content/uploads/2009/06/apc220_arduino.jpg"><img class="aligncenter size-full wp-image-456" title="apc220_arduino" src="http://blog.flamingoeda.com/wp-content/uploads/2009/06/apc220_arduino.jpg" alt="" width="451" height="600" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.flamingoeda.com/2009/06/14/%e4%bd%bf%e7%94%a8apc220%e5%ae%9e%e7%8e%b0arduino%e6%97%a0%e7%ba%bf%e6%95%b0%e6%8d%ae%e4%bc%a0%e8%be%93/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
