课程设计书—《嵌入式系统实训》学院姓名学号组别1设计概述 (1)2设计方案 (1)2.1详细设计方案 (2)2.1.1 电源模块 (2)2.1.2 主芯片模块 (2)2.1.3 WIFI模块 (3)2.1.4 霍尔传感器模块 (3)2.1.5 开关磁阻电机 (4)2.1.6 电路板抗干扰设计 (5)2.2软件设计方案 (6)3手机客户端APP设计 (6)3.1开发环境的搭建 (6)3.2手机APP的主要功能模块 (7)4软件件调试过程和结果 (15)5课程总结 (19)1设计概述能源是经济发展和社会进步的支柱,能源问题成为当今世界各国尤其是发达国家所要解决的头等大事。
世界各国都在鼓励大力开发可再生能源。
风能和太阳能成为当下最受欢迎的新能源,也是目前可再生能源应用技术中最成熟的。
本设计基于人体运动出来的机械能转化成可利用回收的电能,是新能源的一种体现,具有很好的开发前景和实际用途。
该设计是基于以stm32f030芯片为主芯片的智能发电的PCB 主板,再利用开关磁阻电机进行发电,将其电压和电流通过wifi 模块发送给手机端,通过手机上的APP 可以显示出电流和电压值,并进行后台处理和数据保存。
设计将从芯片器件的选型再到PCB 板的设计,之后是PCB 板的焊接,再是软件的编写与调试,软件部分还包括手机APP 的编写,最终完成本次设计。
1 设计方案该设计方案可以划分为两个部分,第一部分是终端部分,有发电机的驱动模块,电压电流采集模块,WiFi 模块以和主控芯片及其外设;第二部分是手机部分,该部分主要是实现一个上位机的功能,包括接收信息,发送指令,主要有登录界面和查询界面。
两部分之间通过WIFI 来实现通信。
所以总体设计框图1所示:图2.1 总体设计方案其中手机端的设计为纯粹的软件设计,而智能发电系统主体的设计方案是方案设计中的重点部分包括硬件部分的设计与软件部分的设计。
该系统的设计方案包括以下几个方面,一是小车主体电路板的设计方案,属于硬件部分的设计;二是软件设计方案,属于软件部分的设计,主要是用于驱动硬件电路和给手机端APP 提供操作接口。
该系统主体电路板的设计包括电源模块的设计,主芯片外围电路的设计,WiFi 模块的设计,电机驱动模块的设计,各个传感器模块的设计。
软件部分的设计包括主体函数的设计及各个功能模块的设计,在实现了各个功能模块设计的基础上设计出主体程序,以便可以随时中断某一个功能而去实现另外的功能。
外围设计主要是各个传感器的放置位置的选择,以便达到所需的功能。
终端部分 手机端蓝牙信号1.1 详细设计方案2.1.1 电源模块由于电机的驱动需要15V的电源,而USB及传感器等模块的供电需要5V的电源,主芯片需要3.3V及1.2V的电源。
所以在电源模块的设计中需要用到外部供电电源为15V的可移动电源,可以是蓄电池也可以是干电池串联而得。
5V的电源通过对15V电源降压而得到,3.3V电源分别由XC6206P332MR通过不同的外围电路来获得。
2.1.2 主芯片模块主芯片在此设计中制定为stm32f030作为主控芯片,stm32f030主控芯片的外围电路包括复位电路,晶振,过芯片中的USB接口烧录到SPI FLASH中,选择的启动方式是USB启动。
当程序烧录好以后,将启动方式转换为SPI FLASH 启动。
SDRAM中用于存放程序。
STM32F030 内部有RC振荡器,可以为内部的锁相环提供时钟,但同外部晶振相比不够准确,所以本文使用外部时钟源。
外部时钟源主要分为高速外部振荡器和低速外部振荡器,高速外部振荡器主要作为芯片处理器和STM32 外设的驱动时钟,低速外部振荡器用于驱动窗口看门狗和实时时钟。
该系统采用 8M外部晶振作为高速外部时钟信号的时钟源,外接两个20p F的贴片电容。
低速外部振荡器是时钟源可以使用外部晶振或用户自己提供,该系统采用频率值为 32.768k Hz 的外部晶振,外接两个10p F的贴片电容。
STM32F030有3种启动方式,分为系统复位、电源复位、备份区域复位。
该系统采用电源复位,NRST 引脚与10KΩ电阻串联使引脚处于高电位,当需要复位时,S1开关闭合使 NRST引脚接地,产生低电平使微处理器复位。
该微处理器内部也有复位电路,当引脚电压小于 2.0V,片会处于复位状态,但会有 40m A的延迟。
图2.12.1.3 WIFI模块WIFI模块的作用是实现下位机与上位机的实时通信,并且向上位机传递图像数据。
使用的是HC05模块。
其特性如下:1、嵌入高性能32位RISC微处理器2、55nm CMOS 高度集成射频技术3、集成高性能开关稳压器4、低功耗5、支持1/2/3/4/线 PTA WIFI/蓝牙6、自动校准7、天线分集8、控制每个包的功率9、完全遵守USB v 2.0 高速模式10、直接支持WIFI功能11、支持802.1w保护管理框架图2.22.1.4 霍尔传感器模块霍尔传感器是根据霍尔效应制作的一种磁场传感器。
霍尔效应是磁电效应的一种,这一现象是霍尔(A.H.Hall,1855—1938)于1879年在研究金属的导电机构时发现的。
后来发现半导体、导电流体等也有这种效应,而半导体的霍尔效应比金属强得多,利用这现象制成的各种霍尔元件,广泛地应用于工业自动化技术、检测技术及信息处理等方面。
霍尔效应是研究半导体材料性能的基本方法。
通过霍尔效应实验测定的霍尔系数,能够判断半导体材料的导电类型、载流子浓度及载流子迁移率等重要参数。
由霍尔效应的原理知,霍尔电势的大小取决于:Rh为霍尔常数,它与半导体材质有关;I为霍尔元件的偏置电流;B为磁场强度;d为半导体材料的厚度。
对于一个给定的霍尔器件,当偏置电流I 固定时,UH将完全取决于被测的磁场强度B。
一个霍尔元件一般有四个引出端子,其中两根是霍尔元件的偏置电流I 的输入端,另两根是霍尔电压的输出端。
如果两输出端构成外回路,就会产生霍尔电流。
一般地说,偏置电流的设定通常由外部的基准电压源给出;若精度要求高,则基准电压源均用恒流源取代。
为了达到高的灵敏度,有的霍尔元件的传感面上装有高导磁系数的镀膜合金;这类传感器的霍尔电势较大,但在0.05T左右出现饱和,仅适用在低量限、小量程下使用。
在半导体薄片两端通以控制电流I,并在薄片的垂直方向施加磁感应强度为B 的匀强磁场,则在垂直于电流和磁场的方向上,将产生电势差为UH的霍尔电压。
图2.2 霍尔效应2.1.5 开关磁阻电机开关磁阻电动机,调速系统所用的开关磁阻电动机(SRM)是SRD中实现机电能量转换的部件,也是SRD有别于其他电动机驱动系统的主要标志。
SRM 系双凸极可变磁阻电动机,其定、转子的凸极均由普通硅钢片叠压而成。
转子既无绕组也无永磁体,定子极上绕有集中绕组,径向相对的两个绕组联接起来,称为“一相”,SR电动机可以设计成多种不同相数结构,且定、转子的极数有多种不同的搭配。
相数多、步距角小,有利于减少转矩脉动,但结构复杂,且主开关器件多,成本高,现今应用较多的是四相(8/6)结构和三相(12/8)结构。
图2.2示出四相(8/6)结构SR电动机原理图。
为简单计,图中只画出A相绕组及其供电电路。
SR电动机的运行原理遵循“磁阻最小原理”—‘磁通总要沿着磁阻最小的路径闭合,而具有一定形状的铁心在移动到最小磁阻位置时,必使自己的主轴线与磁场的轴线重合。
图2中,当定子D-D’极励磁时,1-1'向定子轴线D-D'重合的位置转动,并使D相励磁绕组的电感最大。
若以图中定、转子所处的相对位置作为起始位置,则依次给D→A→B→C相绕组通电,转子即会逆着励磁顺序以逆时针方向连续旋转;反之,若依次给B→A→D→C相通电,则电动机即会沿顺时针方向转动。
可见,SR电动机的转向与相绕组的电流方向无关,而仅取决于相绕组通电的顺序。
另外,从图2.2可以看出,当主开关器件S1、S2导通时,A相绕组从直流电源US吸收电能,而当S1、S2关断时,绕组电流经续流二极管VD1、VD2继续流通,并回馈给电源US。
因此,SR电动机传动的共性特点是具有再生作用,系统效率高。
图 2.32.1.6 电路板抗干扰设计电路设计和应用应尽量消除或抑制电子电路的干扰,该监测系统的硬件电路用来接收传感器的数据并对其进行处理,如果不能降低各类干扰的影响,将会增加监测数据误差。
硬件电路设计过程中充分考虑对干扰的抑制,对电路进行了合理的设计以及选择合适的元器件。
在硬件电路设计过程中,充分从抑制干扰源、切断干扰途径以及提高元器件的抗干扰性能等三方面考虑,为降低信号干扰,采取了以下措施。
(1)以核心部件为中心,围绕其进行布线,易受干扰元器件相互远离,输入输出元器件分开放置,电源和高频电路部分尽量远离;(2)STM32微处理器和大功率器件的地线需要单独接地,以减少相互干扰,大功率元器件放置在电路板边缘;(3)在电路板布线时避免九十度折线,同时减少回路环面积,选择合适粗细的地线以及电源线;(4)数字区和模拟区用地线隔离,模拟地和数字地要分离,统一在一点接于电源地。
1.2 软件设计方案软件系统框图如下:软件系统框图 2.42手机客户端APP设计2.1开发环境的搭建本设计在开发过程中使用Eclipse加ADT插件的开发环境,Eclipse集成开发环境JDK,首先需要安装JDK工具包,本设计中使用的JDK版本是JDK-7-Windows-i586.exe。
安装完成后,配置系统环境变量,将JDK的安装路径添加到系统Path中去。
在Andriod developer官网上下载Eclipse开发环境,其己对Eclipse和ADK插件绑定,开发者直接下载后解压即可使用。
本设计使用的ADT版本是adt-bundle-windows-x86-20140702.zip。
2.2手机APP的主要功能模块手机APP的设计采用了MVC框架,将Model、View和Controler分开,有效减少开发工作量量和有效减少开发工作查和代码冗余率,有利于代码调试。
本设计将手机端功能主要分为5大功能模块:登录功能模块、查询功能模块、接收数据模块、蓝牙验证模块。
(1)登录模块登录模块需要用户输入个人信息,如用户名、密码、手机号码等。
登录界面设计两个EditView输入烂和2个Button,输入烂用来接收用户名,2个按紐分别是登录和取消。
当用户点击确认按钮后,跳转到主页面。
confirm=(ImageButton)findViewById(R.id.confirm);(确认按钮绑定)cancel=(ImageButton)findViewById(R.id.cancel); (取消按钮绑定)public void onClick(View v) { (设定按钮点击事件)switch (v.getId()) {case R.id.confirm:username=name.getText().toString();if(username.equals("")){Toast.makeText(LoginActivity.this, "用户名为空,请输入!", Toast.LENGTH_SHORT).show();}else{Intent intent = new Intent();intent.setClass(LoginActivity.this, MainActivity.class);intent.putExtra("name", username);startActivity(intent);}break;case R.id.cancel:this.finish();break;default:break;}(2)蓝牙搜索模块进入搜索蓝牙界面后,会搜索附近的蓝牙a.设置权限在manifest中配置<uses-permission android:name="android.permission.BLUETOOTH"/><uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>b.启动蓝牙首先要查看本机是否支持蓝牙,获取BluetoothAdapter蓝牙适配器对象BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();if(mBluetoothAdapter == null){ //表明此手机不支持蓝牙return;}if(!mBluetoothAdapter.isEnabled()){ //蓝牙未开启,则开启蓝牙Intent enableIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);startActivityForResult(enableIntent, REQUEST_ENABLE_BT);}public void onActivityResult(int requestCode, int resultCode, Intent data){if(requestCode == REQUEST_ENABLE_BT){if(requestCode == RESULT_OK){ //蓝牙已经开启}}}c.发现蓝牙设备这里可以细分为几个方面(I)使本机蓝牙处于可见(即处于易被搜索到状态),便于其他设备发现本机蓝牙//使本机蓝牙在300秒内可被搜索private void ensureDiscoverable() {if (mBluetoothAdapter.getScanMode() !=BluetoothAdapter.SCAN_MODE_CONNECTABLE_DISCOVERABLE) {Intent discoverableIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERAB LE);discoverableIntent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 300);startActivity(discoverableIntent);}}(II)查找已经配对的蓝牙设备,即以前已经配对过的设备Set<BluetoothDevice> pairedDevices = mBluetoothAdapter.getBondedDevices();if (pairedDevices.size() > 0) {findViewById(R.id.title_paired_devices).setVisibility(View.VISIBLE); for (BluetoothDevice de vice : pairedDevices) {//device.getName() +" "+ device.getAddress());}} else {mPairedDevicesArrayAdapter.add("没有找到已匹对的设备");}(III)通过mBluetoothAdapter.startDiscovery();搜索设备,要获得此搜索的结果需要注册一个BroadcastReceiver来获取。