基于RSL10的风扇改造
<p style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">基于</font></span></span><span style="font-size:10.5000pt"><span style="font-family:宋体">RSL10<font face="宋体">的</font></span></span><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">风扇改造</font></span></span></span></span></p><ul>
<li style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">开发目标</font></span></span></span></span></li>
</ul>
<p style="text-indent:21.0000pt; text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">本开发项目目标为改造现有电扇,实现根据温度自动调风(定速、自然风等多种模式)、多风扇联网的功能。</font></span></span></span></span></p>
<ul>
<li style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">项目分析</font></span></span></span></span></li>
</ul>
<p style="text-indent:21.0000pt; text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">本项目使用开发板有两种,分别是:</font>“<font face="Calibri">RSL10</font><font face="宋体">传感器开发套件(带调试器)</font><font face="Calibri">RSL10-SENSE-DB-GEVK</font><font face="宋体">”和“</font><font face="Calibri">RSL10</font><font face="宋体">无线</font><font face="Calibri">SoC</font><font face="宋体">评估板</font><font face="Calibri">RSL10-002GEVB</font><font face="宋体">”,其中</font><font face="Calibri">RSL10-SENSE-DB-GEVK</font><font face="宋体">上的传感器非常多,用于环境监控;</font><font face="Calibri">RSL10-002GEVB</font><font face="宋体">接口相对丰富,用于目标控制。</font></span></span></span></span></p>
<p style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体">1<font face="宋体">、</font><font face="Calibri">RSL10</font><font face="宋体">简介</font></span></span></span></span></p>
<p style="text-indent:21.0000pt; text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">本次项目主要围绕</font>On Semi<font face="宋体">公司的</font><font face="Calibri">RSL10</font><font face="宋体">超低功耗多协议蓝牙</font><font face="Calibri">5</font><font face="宋体">系统级芯片</font><font face="Calibri">(SoC)</font><font face="宋体">开展,这个芯片的主要特点包括超低功耗,使用</font><font face="Calibri">Arm®Cortex®</font><font face="宋体">−</font><font face="Calibri">M3</font><font face="宋体">处理器和</font><font face="Calibri">LPDSP32 DSP</font><font face="宋体">核心,支持超低功耗蓝牙芯片。其框图和架构如下:</font></span></span></span></span></p>
<p style="text-align:justify"> </p>
<p style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">图</font></span></span><span style="font-size:10.5000pt"><span style="font-family:宋体">1 SoC<font face="宋体">基本框图</font></span></span></span></span></p>
<p style="text-align:justify"> <span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">图</font>2 SoC<font face="宋体">架构图</font></span></span></span></span></p>
<p style="text-indent:21.0000pt; text-align:justify"> </p>
<p style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体">2<font face="宋体">、</font><font face="Calibri">RSL10-002GEVB</font><font face="宋体">板卡简单介绍</font></span></span></span></span></p>
<p style="text-indent:21.0000pt; text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">从资料上看来,</font>RSL10-002GEVB<font face="宋体">使用了四层板(不展开水字数),实拍外观如下:</font></span></span></span></span></p>
<p style="text-align:justify"> </p>
<p style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">图</font></span></span><span style="font-size:10.5000pt"><span style="font-family:宋体">3 <font face="宋体">实拍图片</font></span></span></span></span></p>
<p style="text-indent:21.0000pt; text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">与安森美官网的图片(图</font>4<font face="宋体">)不同,多了一块</font><font face="Calibri">PCA9655E</font><font face="宋体">(左上角</font><font face="Calibri">U5</font><font face="宋体">,靠近</font><font face="Calibri">PMOD</font><font face="宋体">接口),这个芯片也是</font><font face="Calibri">ON Semiconductor</font><font face="宋体">,从该芯片的</font><font face="Calibri">datasheet</font><font face="宋体">(附件)中可以看到它的功能主要是通过</font><font face="Calibri">I2C</font><font face="宋体">总线和</font><font face="Calibri">SMBus</font><font face="宋体">提供</font><font face="Calibri">16</font><font face="宋体">位通用并行输入和输出(</font><font face="Calibri">GPIO</font><font face="宋体">)扩展。</font></span></span></span></span></p>
<p style="text-align:justify"> </p>
<p style="text-align:justify"> </p>
<p style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">图</font>4 <font face="宋体">官网上的图片,右上角芯片未焊</font></span></span></span></span></p>
<p style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">该开发板支持</font>Arduino<font face="宋体">接口</font></span></span></span></span></p>
<p style="text-align:justify"> </p>
<p style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">图</font></span></span><span style="font-size:10.5000pt"><span style="font-family:宋体">5 Arduino<font face="宋体">接口</font></span></span></span></span></p>
<p style="text-indent:21.0000pt; text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">在本项目中,只需要用到任意一个</font>IO<font face="宋体">口(可用</font><font face="Calibri">IO</font><font face="宋体">口实在太多),本来想直接用现有</font><font face="Calibri">arduino</font><font face="宋体">扣板或专为其画一块扣板,但后来发现有些浪费,故直接使用杜邦线连接。</font></span></span></span></span></p>
<p style="text-indent:21.0000pt; text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">另外,这块板上预留一个</font>IPEX<font face="宋体">天线接口,可以直接使用外置天线,虽然不知道是</font><font face="Calibri">2.4GHz</font><font face="宋体">还是</font><font face="Calibri">5GHz</font><font face="宋体">的天线,反正接上去信号会好一点。</font></span></span></span></span></p>
<p style="text-align:justify"> </p>
<p style="text-indent:21.0000pt; text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">图</font>6 <font face="宋体">蓝牙天线</font></span></span></span></span></p>
<p style="text-indent:21.0000pt; text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体">3<font face="宋体">、</font><font face="Calibri">RSL10-SENSE-DB-GEVK</font><font face="宋体">板卡简单介绍</font></span></span></span></span></p>
<p style="text-indent:21.0000pt; text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体">RSL10-SENSE-DB-GEVK<font face="宋体">非常小,但传感器功能很全,其中</font><font face="Calibri">BME680</font><font face="宋体">集成了高线性和高精确度气体、压力、湿度和温度传感器,在板卡上使用</font><font face="Calibri">I2C</font><font face="宋体">连接到</font><font face="Calibri">RSL10</font><font face="宋体">上。</font></span></span></span></span></p>
<p style="text-align:justify"> </p>
<p style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">图</font></span></span><span style="font-size:10.5000pt"><span style="font-family:宋体">7 <font face="宋体">环境检测电路</font></span></span></span></span></p>
<p style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">其温度检测寄存器如下</font></span></span></span></span></p>
<p style="text-align:justify"> </p>
<p style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">图</font></span></span><span style="font-size:10.5000pt"><span style="font-family:宋体">8 BME60<font face="宋体">的寄存器</font></span></span></span></span></p>
<p style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">在代码读取时,只取其中</font>7:5<font face="宋体">位即可。</font></span></span></span></span></p>
<p style="text-align:justify"> </p>
<p style="text-align:justify"> </p>
<ul>
<li style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">目标风扇改造和仿真</font></span></span></span></span></li>
</ul>
<p style="text-align:justify"> </p>
<p style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">实际家用风扇电路如下</font></span></span></span></span></p>
<p style="text-align:justify"> </p>
<p style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">图</font>9 <font face="宋体">风扇电路</font></span></span></span></span></p>
<p style="text-indent:21.0000pt; text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">在上图可以看到风扇电机实际上是由变速开关选择多个电压输入接口,查询网络资料,分析风扇电机并不是靠改变绕组磁场频率来变速的,而是通过调速开关将市电电压加载在电机线圈不同抽头上,改变调速开关的档位可以改变电机中用于驱动的线圈绕组数值,使得流经电机的电流大小发生变化,进而调整风扇转速。</font></span></span></span></span></p>
<p style="text-indent:21.0000pt; text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">因此可以直接改变外部电压来控制转速。在</font>RSL10-002GEVB<font face="宋体">中,有专用的</font><font face="Calibri">PWM</font><font face="宋体">接口</font><font face="Calibri">IO3</font><font face="宋体">,为了使</font><font face="Calibri">PWM</font><font face="宋体">可以驱动风扇,参考某风扇无级调速电路,设计了通过</font><font face="Calibri">PWM</font><font face="宋体">控制风扇转速的电路,并在</font><font face="Calibri">multisim</font><font face="宋体">中做了仿真:</font></span></span></span></span></p>
<p style="text-align:justify"> </p>
<p style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">图</font></span></span><span style="font-size:10.5000pt"><span style="font-family:宋体">10 </span></span><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">仿真电路</font></span></span></span></span></p>
<p style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">其中</font></span></span><span style="font-size:10.5000pt"><span style="font-family:宋体">XFG2<font face="宋体">为信号发生器,用于替代开发板,可以发出占空比不同的方波,</font><font face="Calibri">U1</font><font face="宋体">是光耦,可以用来隔离市电和低电压(开发板),</font><font face="Calibri">R2</font><font face="宋体">用来实际调整光耦断开时的</font><font face="Calibri">D2</font><font face="宋体">电压,</font><font face="Calibri">D1</font><font face="宋体">是双向可控硅,</font><font face="Calibri">C2</font><font face="宋体">、</font><font face="Calibri">R4</font><font face="宋体">用于保护,防止</font><font face="Calibri">D1</font><font face="宋体">开关控制引起高电压或大电流,</font><font face="Calibri">U2</font><font face="宋体">是风扇电机,在仿真中增加</font><font face="Calibri">XMM2</font><font face="宋体">做转速监控。</font></span></span></span></span></p>
<p style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">通过调整</font>XFG2<font face="宋体">中的方波占空比,可以使得风扇电机在不同速度下运转。</font></span></span></span></span></p>
<p style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">仿真结果:</font></span></span></span></span></p>
<p style="text-align:justify"> </p>
<p style="text-align:justify"> </p>
<p style="text-align:justify"> </p>
<p style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">图</font></span></span><span style="font-size:10.5000pt"><span style="font-family:宋体">11</span></span><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">、图</font></span></span><span style="font-size:10.5000pt"><span style="font-family:宋体">12 <font face="宋体">仿真结果</font></span></span></span></span></p>
<p style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">仿真结果中的电压表读数仅仅是作为转速参考,无法真实体现其转速。可以看到,占空比越大,风扇转速越高。</font></span></span></span></span></p>
<p style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">仿真后已画板打样(画了两版,都有些问题),另购置成品板</font>AC-3S<font face="宋体">支持</font><font face="Calibri">pwm</font><font face="宋体">调压功能。</font></span></span></span></span></p>
<p style="text-align:justify"> </p>
<p style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">图</font></span></span><span style="font-size:10.5000pt"><span style="font-family:宋体">13 AC-3S<font face="宋体">外观</font></span></span></span></span></p>
<p style="text-align:justify"> </p>
<p style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">图</font>14 AC-3S<font face="宋体">的原理图</font></span></span></span></span></p>
<p style="text-align:justify"> </p>
<p style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">原本还准备实现风扇倾倒自动断电功能,后因某些原因,未实现。</font></span></span></span></span></p>
<p style="text-align:justify"> </p>
<ul>
<li style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">上位机开发</font></span></span></span></span></li>
</ul>
<p style="text-indent:21.0000pt; text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">因为方案比较简单,故分别开发了电脑版和手机版两个版本,都可独立使用,界面较为简单,功能也类似。其中风扇转速写的</font>1000~3000<font face="宋体">,但实际转速与风扇本身特性相关,具体多少转并没有实际测试。</font></span></span></span></span></p>
<p style="text-indent:21.0000pt; text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">电脑版考虑到兼容性,使用的是</font>python<font face="宋体">,目前是在</font><font face="Calibri">Windows</font><font face="宋体">上运行,可以非常容易移植到</font><font face="Calibri">Linux</font><font face="宋体">上。界面如下:</font></span></span></span></span></p>
<p style="text-align:justify"> </p>
<p style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">图</font></span></span><span style="font-size:10.5000pt"><span style="font-family:宋体">15 <font face="宋体">电脑板工具界面</font></span></span></span></span></p>
<p style="text-indent:21.0000pt; text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">从</font>RSL10-SENSE-DB-GEVK<font face="宋体">读取外界环境,设定风扇转速,各风扇号是直接用</font><font face="Calibri">RSL10-002GEVB</font><font face="宋体">开发板上</font><font face="Calibri">mac</font><font face="宋体">地址规定的。当开发板作为</font><font face="Calibri">server</font><font face="宋体">主动连接到电脑上时,电脑会记录已连接,并将当前转速下到开发板上。如果一直没有连接上,则认为该风扇不存在(未加电)。</font></span></span></span></span></p>
<p style="text-indent:21.0000pt; text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">手机版工具功能类似,使用</font>kotlin<font face="宋体">开发,目前是只能在安卓系统上使用,未来可以考虑移植到鸿蒙和</font><font face="Calibri">IOS</font><font face="宋体">。界面如下:</font></span></span></span></span></p>
<p style="text-align:justify"> </p>
<p style="text-align:justify"> <span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">图</font>16 Android<font face="宋体">工具界面</font></span></span></span></span></p>
<p style="text-align:justify"> </p>
<ul>
<li style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">下位机开发</font></span></span></span></span></li>
</ul>
<p style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体">1<font face="宋体">、环境准备</font></span></span></span></span></p>
<p style="text-indent:21.0000pt; text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">下位机采用基于</font>Eclipse<font face="宋体">的安森美</font><font face="Calibri">Integrated Development Environment (IDE)</font><font face="宋体">开发工具完成。下载链接在</font><font face="Calibri">www.onsemi.com/RSL10</font><font face="宋体">,安装比较简单,基本上就是执行“下一步”就行,在这里就不展开了,安装后直接执行,</font><font face="Calibri">360</font><font face="宋体">会报有木马,会直接删除文件,所以,运行时需要关闭杀毒工具。</font></span></span></span></span></p>
<p style="text-align:justify"> </p>
<p style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">图</font></span></span><span style="font-size:10.5000pt"><span style="font-family:宋体">17 <font face="宋体">木马</font></span></span></span></span></p>
<p style="text-indent:21.0000pt; text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">参考文档</font>“<font face="Calibri">RSL10_getting_started_guide.pdf</font><font face="宋体">”,在</font></span></span><span style="font-size:10.5000pt"><span style="font-family:宋体">IDE<font face="宋体">中导入</font><font face="Calibri">BDK PACK</font><font face="宋体">、</font><font face="Calibri">RSL10 PACK</font><font face="宋体">、</font><font face="Calibri">ARM CMSIS PACK</font><font face="宋体">、</font><font face="Calibri">FreeRTOS PACK</font><font face="宋体">。</font></span></span></span></span></p>
<p style="text-indent:21.0000pt; text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">这些</font>PACK<font face="宋体">有些是从安森美官网获取(也可以从</font><font face="Calibri">justd0</font><font face="宋体">兄的网盘里获取),有些从安森美官网链接到</font><font face="Calibri">github</font><font face="宋体">里获取,例如:</font></span></span></span></span></p>
<p style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体">https://github.com/ARM-software/CMSIS_5/releases</span></span></span></span></p>
<p style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体">https://github.com/ARM-software/CMSIS-FreeRTOS/releases</span></span></span></span></p>
<p style="text-align:justify"> </p>
<p style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">图</font></span></span><span style="font-size:10.5000pt"><span style="font-family:宋体">18 <font face="宋体">导入</font><font face="Calibri">pack</font><font face="宋体">前</font></span></span></span></span></p>
<p style="text-align:justify"> </p>
<p style="text-indent:21.0000pt; text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">点击上面的文件夹图标,选择文件(支持一次导入多个</font></span></span><span style="font-size:10.5000pt"><span style="font-family:宋体">PACK</span></span><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">),导入过程中,可能需要安装,选择同意,点击</font></span></span><span style="font-size:10.5000pt"><span style="font-family:宋体">OK<font face="宋体">就行。至于具体的文件条款,似乎不用深究。</font></span></span></span></span></p>
<p style="text-align:justify"> </p>
<p style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">图</font></span></span><span style="font-size:10.5000pt"><span style="font-family:宋体">19 <font face="宋体">各种</font><font face="Calibri">Licence</font><font face="宋体">文件</font></span></span></span></span></p>
<p style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">安装完成后</font></span></span></span></span></p>
<p style="text-align:justify"> </p>
<p style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">图</font></span></span><span style="font-size:10.5000pt"><span style="font-family:宋体">20 <font face="宋体">项目中用到的</font><font face="Calibri">PACK</font></span></span></span></span></p>
<p style="text-align:justify"> </p>
<p style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">图</font></span></span><span style="font-size:10.5000pt"><span style="font-family:宋体">21 <font face="宋体">可用的开发板</font></span></span></span></span></p>
<ol start="2">
<li style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">示例代码分析</font></span></span></span></span></li>
</ol>
<p style="text-indent:21.0000pt; text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">因为本项目中只需要实现两种功能:蓝牙信号量获取和蓝牙</font>PWM<font face="宋体">设置,相对来说非常简单,基本就是套用例程,以项目中通过</font><font face="Calibri">RSL10 Evaluation Board(1.0)</font><font face="宋体">控制风扇转速功能的开发为例,基本上简单将例程</font><font face="Calibri">Peripheral_server</font><font face="宋体">和</font><font face="Calibri">Pwm_driver</font><font face="宋体">合并就可以了。</font></span></span></span></span></p>
<p style="text-indent:21.0000pt; text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体">Peripheral_server<font face="宋体">是一个比较简单易懂的代码,在</font><font face="Calibri">app.c</font><font face="宋体">中,首先调用</font><font face="Calibri">App_Initialize()</font><font face="宋体">初始化了环境,比如</font></span></span><span style="font-size:10.0000pt"><span style="background:#f9f9f9"><span style="font-family:'Times New Roman'"><span style="color:#000000"><span style="letter-spacing:0.0000pt"><span style="font-style:normal"><font face="宋体">蓝牙、内核、电源、时钟、中断</font></span></span></span></span></span></span><span style="font-size:10.0000pt"><span style="background:#f9f9f9"><span style="font-family:宋体"><span style="color:#000000"><span style="letter-spacing:0.0000pt"><span style="font-style:normal"><font face="宋体">等,再通过</font></span></span></span></span></span></span><span style="font-size:10.0000pt"><span style="background:#f9f9f9"><span style="font-family:宋体"><span style="color:#000000"><span style="letter-spacing:0.0000pt"><span style="font-style:normal">while<font face="宋体">循环调用</font><font face="Times New Roman">Kernel_Schedule()</font><font face="宋体">,例程中是循环检查电池,看是否发生改变,如果改变则推送到客户端,这段代码对我们没啥用,可以直接注释掉。接下来的循环则是我们需要的自定义服务:</font></span></span></span></span></span></span></span></span></p>
<p style="text-align:justify"> </p>
<p style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">图</font></span></span><span style="font-size:10.5000pt"><span style="font-family:宋体">22 <font face="宋体">自定义服务</font></span></span></span></span></p>
<p style="text-indent:21.0000pt; text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">示例中的自定义服务是读出的,而我们需要的功能正好</font></span></span><span style="font-size:10.0000pt"><span style="background:#f9f9f9"><span style="font-family:宋体"><span style="color:#000000"><span style="letter-spacing:0.0000pt"><span style="font-style:normal"><font face="宋体">相反,从外部读取数据并</font></span></span></span></span></span></span><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">写入</font>pwm<font face="宋体">。当收到</font><font face="Calibri">GATTM_ADD_SVC_RSP</font><font face="宋体">响应时,可以保存自定义服务的启动句柄,基于此,我们可以直接利用这两个函数实现所需功能:</font></span></span></span></span></p>
<p style="text-align:justify"> </p>
<p style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">图</font></span></span><span style="font-size:10.5000pt"><span style="font-family:宋体">23<font face="宋体">头文件 </font><font face="Calibri">ble_custom.h</font><font face="宋体">中有关用户服务的部分</font></span></span></span></span></p>
<p style="text-indent:21.0000pt; text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">调整消息处理所需完成工作(从</font>pwm_driver<font face="宋体">中导入相关内容)即可。</font></span></span></span></span></p>
<p style="text-indent:21.0000pt; text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体">pwm_driver<font face="宋体">项目里面的变量“</font><font face="Calibri">pwmDutyCycle</font><font face="宋体">”改由</font><font face="Calibri">BLE</font><font face="宋体">控制。</font></span></span></span></span></p>
<p style="text-indent:21.0000pt; text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">在</font>“<font face="Calibri">RTE_device.h</font><font face="宋体">”找到</font></span></span><span style="font-size:10.5000pt"><span style="font-family:宋体">PWM<font face="宋体">接口定义:</font></span></span></span></span></p>
<p style="text-align:justify"> </p>
<p style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">图</font></span></span><span style="font-size:10.5000pt"><span style="font-family:宋体">24 PWM0<font face="宋体">的接口</font><font face="Calibri">DIO</font></span></span></span></span></p>
<p style="text-indent:21.0000pt; text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">可以看到使用的</font>pwm0<font face="宋体">是</font><font face="Calibri">RSL10</font><font face="宋体">的</font><font face="Calibri">IO6</font><font face="宋体">。</font></span></span><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">和原理图中也吻合,如下图:</font></span></span></span></span></p>
<p style="text-align:justify"> </p>
<p style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">图</font></span></span><span style="font-size:10.5000pt"><span style="font-family:宋体">25 <font face="宋体">原理图中</font><font face="Calibri">LED 1</font><font face="宋体">驱动</font></span></span></span></span></p>
<p style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">从原理图中可以看到</font></span></span><span style="font-size:10.5000pt"><span style="font-family:宋体">INT0<font face="宋体">就是</font><font face="Calibri">DIO6</font><font face="宋体">(参见之前图</font><font face="Calibri">5</font><font face="宋体">)</font></span></span></span></span></p>
<p style="text-align:justify"> </p>
<p style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">图</font>26 DIO6<font face="宋体">复用为</font><font face="Calibri">INT0</font></span></span></span></span></p>
<p style="text-indent:21.0000pt; text-align:justify"> </p>
<ol start="3">
<li style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">开发过程</font></span></span></span></span></li>
</ol>
<p style="text-indent:21.0000pt; text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">合并代码方法不用累述,见下图</font></span></span></span></span></p>
<p style="text-align:justify"> </p>
<p style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">图</font></span></span><span style="font-size:10.5000pt"><span style="font-family:宋体">27 <font face="宋体">在</font><font face="Calibri">Pack Properties</font><font face="宋体">窗口选择例程</font></span></span></span></span></p>
<p style="text-align:justify"> </p>
<p style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">图</font></span></span><span style="font-size:10.5000pt"><span style="font-family:宋体">28 <font face="宋体">拷贝文件</font></span></span></span></span></p>
<p style="text-indent:21.0000pt; text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">将两个项目合并起来,以</font>Peripheral_server<font face="宋体">为基准,去除</font><font face="Calibri">LED1</font><font face="宋体">的闪灯代码,补充</font><font face="Calibri">LED1</font><font face="宋体">的</font><font face="Calibri">pwm</font><font face="宋体">控制功能。</font></span></span></span></span></p>
<p style="text-align:justify"> </p>
<ol start="3">
<li style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">编译和调测</font></span></span></span></span></li>
</ol>
<p style="text-indent:21.0000pt; text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">删掉已经没用的</font>pwm_driver<font face="宋体">,在菜单中选择</font><font face="Calibri">Project-Build All</font><font face="宋体">。编译成功后,会多出可执行文件</font><font face="Calibri">Binaries</font><font face="宋体">文件夹。</font></span></span></span></span></p>
<p style="text-indent:21.0000pt; text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">使用</font>usb<font face="宋体">线连接板卡。</font></span></span></span></span></p>
<p style="text-indent:21.0000pt; text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">在编译好的</font>elf<font face="宋体">文件中,右键开启</font><font face="Calibri">debugger</font><font face="宋体">功能。</font></span></span></span></span></p>
<p style="text-align:justify"> </p>
<p style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">图</font></span></span><span style="font-size:10.5000pt"><span style="font-family:宋体">29 <font face="宋体">使能</font><font face="Calibri">debug</font></span></span></span></span></p>
<p style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">通过板上的仿真器连接,因此可以使用</font>J-link<font face="宋体">,双击打开以后,确定</font><font face="Calibri">debug</font><font face="宋体">的接口是</font><font face="Calibri">SWD</font><font face="宋体">。</font></span></span></span></span></p>
<p style="text-align:justify"> </p>
<p style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">图</font></span></span><span style="font-size:10.5000pt"><span style="font-family:宋体">30 <font face="宋体">确认</font><font face="Calibri">debug</font><font face="宋体">所用接口</font></span></span></span></span></p>
<p style="text-indent:21.0000pt; text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">点击</font>Debug<font face="宋体">按钮开始执行</font><font face="Calibri">debug</font><font face="宋体">功能。</font></span></span></span></span></p>
<p style="text-indent:21.0000pt; text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">使用键盘</font>F6<font face="宋体">单步执行,可以看到程序在</font><font face="Calibri">while</font><font face="宋体">循环中执行。</font></span></span></span></span></p>
<p style="text-align:justify"> </p>
<p style="text-align:justify"> </p>
<ul>
<li style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">联调</font></span></span></span></span></li>
</ul>
<ol>
<li style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">温度检测的联调方法</font></span></span></span></span></li>
</ol>
<p style="text-indent:21.0000pt; text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">温度检测基本就是例程了,直接取用数据即可。</font></span></span></span></span></p>
<ol start="2">
<li style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体">PWM<font face="宋体">的调测</font></span></span></span></span></li>
</ol>
<p style="text-indent:21.0000pt; text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">由于板上的</font>led<font face="宋体">观察并不明显,使用示波器倒是可以看到占空比。通过调整蓝牙</font><font face="Calibri">client</font><font face="宋体">,可以看到输出方波占空比是不同的。</font></span></span></span></span></p>
<p style="text-align:justify"> </p>
<p style="text-align:justify"> </p>
<p style="text-align:justify"> </p>
<p style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">图</font></span></span><span style="font-size:10.5000pt"><span style="font-family:宋体">31~<font face="宋体">图</font><font face="Calibri">33 </font><font face="宋体">示波器查看输出</font></span></span></span></span></p>
<p style="text-indent:21.0000pt; text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">虽然在示波器上看到波形中占空比是有变化的,但对于其</font>pwm<font face="宋体">的功能并没有直观感受,尝试直接将</font><font face="Calibri">INT0</font><font face="宋体">与</font><font face="Calibri">5V</font><font face="宋体">小风扇连接,发现根本无法驱动风扇转动(无论是对地或是对高电平),考虑到人眼对颜色比对亮度更加敏感,使用</font><font face="Calibri">LED</font><font face="宋体">彩灯,通过观察颜色变化验证</font><font face="Calibri">PWM</font><font face="宋体">功能,发现还是很方便的(照片效果不是很好,但实际上红色到紫色的变化是比较明显的)。</font></span></span></span></span></p>
<p style="text-align:justify"> </p>
<p style="text-align:justify"> </p>
<p style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">图</font></span></span><span style="font-size:10.5000pt"><span style="font-family:宋体">34<font face="宋体">、图</font><font face="Calibri">35 </font><font face="宋体">通过</font><font face="Calibri">LED</font><font face="宋体">颜色查看输出</font></span></span></span></span></p>
<ol start="3">
<li style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">驱动板的调测</font></span></span></span></span></li>
</ol>
<p style="text-indent:21.0000pt; text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">如之前所述,直接购置了一块成品的可控硅调压模块,接法如下:</font></span></span></span></span></p>
<p style="text-align:justify"> </p>
<p style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">图</font></span></span><span style="font-size:10.5000pt"><span style="font-family:宋体">36<font face="宋体">通过</font><font face="Calibri">PWM</font><font face="宋体">控制交流输出电压</font></span></span></span></span></p>
<ol start="4">
<li style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">实测风扇</font></span></span></span></span></li>
</ol>
<p style="text-indent:21.0000pt; text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">将</font>3.7V<font face="宋体">锂电池、</font><font face="Calibri">RSL10-002GEVB</font><font face="宋体">和驱动板连接好,并装入风扇内实测,发现无法连接蓝牙,推测原因是风扇的金属外壳屏蔽了蓝牙信号,通过同轴将天线引出,留在金属壳外。可正常使用</font></span></span></span></span></p>
<p style="text-align:justify"> </p>
<p style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">图</font></span></span><span style="font-size:10.5000pt"><span style="font-family:宋体">37 <font face="宋体">组装好的成品图</font></span></span></span></span></p>
<p style="text-indent:21.0000pt; text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">实测的确有调速功能,但转速设计明显不正确,当转速设置过低时,风扇直接停止工作,必须将风扇转速拉高,风扇才能恢复运作,再慢慢调低转速。推测风扇是有一个最低的工作电压,低于该电压,风扇电机处于保护状态。</font></span></span></span></span></p>
<ul>
<li style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">心得</font></span></span></span></span></li>
</ul>
<p style="text-indent:21.0000pt; text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">参加本次活动也是期待了很久,参加以后,发现之前订的目标太大,比如说风扇转速上云,传感器直接感应风扇动作,多个风扇之间相互发现,这些功能都没有实现,直接砍掉了相关功能,所以做出来的最终成品看起来稍微简陋了一些,甚至感觉因为没有上云,似乎和本次大赛主题的</font>“物联网”渐行渐远(当然,还是组了个本地的蓝牙小网)。</span></span></span></span></p>
<p style="text-indent:21.0000pt; text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">总的来说,感谢电子工程世界给我们这个尝试和展示自我的平台,感谢安森美半导体和安富利物联网创新设计大赛组委提供的软硬件、资料和培训,以及活动中给我帮助的各位朋友们,下次有机会还将继续参加同类活动。</font></span></span></span></span></p>
<p>word版文件</p>
<p>真不错,动手大师!</p>
页:
[1]