版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课 程 设 计 书嵌入式系统实训嵌入式系统实训学院学院姓名姓名学号学号组别组别目录1设计概述 12设计方案 12.1详细设计方案.12.1.1 电源模块.12.1.2 主芯片模块.12.1.3WIFI 模块.22.1.4 霍尔传感器模块.32.1.5 开关磁阻电机.42.1.6电路板抗干扰设计. 42.2软件设计方案.53手机客户端 APP 设计 63.1开发环境的搭建.63.2手机 APP 的主要功能模块. 6嵌入式系统实训报告书4软件件调试过程和结果145课程总结 18嵌入式系统实训报告书11 设计概述能源是经济发展和社会进步的支柱,能源问题成为当今世界各国尤其是发达国家所要解决的头等大事
2、。世界各国都在鼓励大力开发可再生能源。风能和太阳能成为当下最受欢迎的新能源,也是目前可再生能源应用技术中最成熟的。本设计基于人体运动出来的机械能转化成可利用回收的电能,是新能源的一种体现,具有很好的开发前景和实际用途。该设计是基于以 stm32f030 芯片为主芯片的智能发电的 PCB 主板,再利用开关磁阻电机进行发电,将其电压和电流通过 wifi 模块发送给手机端,通过手机上的 APP 可以显示出电流和电压值,并进行后台处理和数据保存。设计将从芯片器件的选型再到 PCB 板的设计,之后是 PCB 板的焊接,再是软件的编写与调试,软件部分还包括手机 APP 的编写,最终完成本次设计。设计方案该
3、设计方案可以划分为两个部分,第一部分是终端部分,有发电机的驱动模块,电压电流采集模块,WiFi 模块以和主控芯片及其外设;第二部分是手机部分,该部分主要是实现一个上位机的功能,包括接收信息,发送指令,主要有登录界面和查询界面。两部分之间通过 WIFI 来实现通信。所以总体设计框图 1 所示:图 2.1 总体设计方案其中手机端的设计为纯粹的软件设计,而智能发电系统主体的设计方案是方案设计中的重点部分包括硬件部分的设计与软件部分的设计。该系统的设计方案包括以下几个方面,一是小车主体电路板的设计方案,属于硬件部分的设计;二是软件设计方案,属于软件部分的设计,主要是用于驱动硬件电路和给手机端 APP
4、提供操作接口。该系统主体电路板的设计包括电源模块的设计,主芯片外围电路的设计,WiFi 模块的设计,电机驱动模块的设计,各个传感器模块的设计。软件部分的设计包括主体函数的设计及各个功能模块的设计,在实现了各个功能模块设计的基础上设计出主体程序,以便可以随时中断某一个功能而去实现另外的功能。外围设计主要是各个传感器的放置位置的选择,以便达到所需的功能。详细设计方案2.1.1 电源模块由于电机的驱动需要 15V 的电源,而 USB 及传感器等模块的供电需要 5V的电源,主芯片需要 3.3V 及 1.2V 的电源。所以在电源模块的设计中需要用到外部供电电源为 15V 的可移动电源,可以是蓄电池也可以
5、是干电池串联而得。5V 的电源通过对 15V 电源降压而得到,3.3V 电源分别由 XC6206P332MR 通过不同的外围电路来获得。2.1.2 主芯片模块主芯片在此设计中制定为 stm32f030 作为主控芯片,stm32f030 主控芯片的外围电路包括复位电路,晶振,过芯片中的 USB 接口烧录到 SPI FLASH终端部分终端部分手机端手机端蓝牙信号嵌入式系统实训报告书2中,选择的启动方式是 USB 启动。当程序烧录好以后,将启动方式转换为 SPIFLASH 启动。SDRAM 中用于存放程序。STM32F030 内部有 RC 振荡器,可以为内部的锁相环提供时钟,但同外部晶振相比不够准确
6、,所以本文使用外部时钟源。外部时钟源主要分为高速外部振荡器和低速外部振荡器,高速外部振荡器主要作为芯片处理器和 STM32 外设的驱动时钟,低速外部振荡器用于驱动窗口看门狗和实时时钟。该系统采用 8M外部晶振作为高速外部时钟信号的时钟源,外接两个 20p F 的贴片电容。低速外部振荡器是时钟源可以使用外部晶振或用户自己提供,该系统采用频率值为 32.768k Hz的外部晶振,外接两个 10p F 的贴片电容。STM32F030 有 3 种启动方式,分为系统复位、电源复位、备份区域复位。该系统采用电源复位,NRST 引脚与10K电阻串联使引脚处于高电位,当需要复位时,S1 开关闭合使 NRST
7、引脚接地,产生低电平使微处理器复位。该微处理器内部也有复位电路,当引脚电压小于 2.0V,片会处于复位状态,但会有 40m A 的延迟。2.1.3WIFI 模块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 高速模式图 2.1嵌入式系统实训报告书310、直接支持 WIFI 功能
8、11、支持 802.1w 保护管理框架2.1.4 霍尔传感器模块霍尔传感器是根据霍尔效应制作的一种磁场传感器。霍尔效应是磁电效应的一种,这一现象是霍尔(A.H.Hall,18551938)于 1879 年在研究金属的导电机构时发现的。后来发现半导体、导电流体等也有这种效应,而半导体的霍尔效应比金属强得多,利用这现象制成的各种霍尔元件,广泛地应用于工业自动化技术、检测技术及信息处理等方面。霍尔效应是研究半导体材料性能的基本方法。通过霍尔效应实验测定的霍尔系数,能够判断半导体材料的导电类型、载流子浓度及载流子迁移率等重要参数。由霍尔效应的原理知,霍尔电势的大小取决于:Rh 为 霍 尔常数,它与半导
9、体材质 有 关 ; I为霍尔元件的偏置电流;B 为磁场强度;d 为半导体材 料 的 厚度。对于一个给定的霍尔器件,当偏置电流 I 固定时 , UH 将完全取决于被测的磁场强度 B。一个霍尔元件一般有四个引出端子,其中两根是霍尔元件的偏置电流 I 的输入端,另两根是霍尔电压的输出端。如果两输出端构成外回路,就会产生霍尔电流。一般地说,偏置电流的设定通常由外部的基准电压源给出;若精度要求高,则基准电压源均用恒流源取代。为了达到高的灵敏度,有的霍尔元件的传感面上装有高导磁系数的镀膜合金;这类传感器的霍尔电势较大,但在 0.05T 左右出现饱和,仅适用在低量限、小量程下使用。在半导体薄片两端通以控制电
10、流 I,并在薄片的垂直方向施加磁感应强度为B 的匀强磁场,则在垂直于电流和磁场的方向上,将产生电势差为 UH 的霍尔图 2.2嵌入式系统实训报告书4电压。图 2.2 霍尔效应2.1.5 开关磁阻电机开关磁阻电动机,调速系统所用的开关磁阻电动机(SRM)是 SRD 中实现机电能量转换的部件,也是 SRD 有别于其他电动机驱动系统的主要标志。SRM 系双凸极可变磁阻电动机,其定、转子的凸极均由普通硅钢片叠压而成。转子既无绕组也无永磁体,定子极上绕有集中绕组,径向相对的两个绕组联接起来,称为“一相”,SR 电动机可以设计成多种不同相数结构,且定、转子的极数有多种不同的搭配。相数多、步距角小,有利于减
11、少转矩脉动,但结构复杂,且主开关器件多,成本高,现今应用较多的是四相(8/6)结构和三相(12/8)结构。图 2.2 示出四相(8/6)结构 SR 电动机原理图。为简单计,图中只画出 A相绕组及其供电电路。SR 电动机的运行原理遵循“磁阻最小原理” 磁通总要沿着磁阻最小的路径闭合,而具有一定形状的铁心在移动到最小磁阻位置时,必使自己的主轴线与磁场的轴线重合。图 2 中,当定子 D-D极励磁时,1-1向定子轴线 D-D重合的位置转动,并使 D 相励磁绕组的电感最大。若以图中定、转子所处的相对位置作为起始位置,则依次给 DABC 相绕组通电,转子即会逆着励磁顺序以逆时针方向连续旋转;反之,若依次给
12、 BADC 相通电,则电动机即会沿顺时针方向转动。可见,SR 电动机的转向与相绕组的电流方向无关,而仅取决于相绕组通电的顺序。另外,从图 2.2 可以看出,当主开关器件 S1、S2 导通时,A 相绕组从直流电源 US 吸收电能,而当S1、S2 关断时,绕组电流经续流二极管 VD1、VD2 继续流通,并回馈给电源US。因此,SR 电动机传动的共性特点是具有再生作用,系统效率高。图 2.32.1.6电路板抗干扰设计电路设计和应用应尽量消除或抑制电子电路的干扰,该监测系统的硬件电路用来接收传感器的数据并对其进行处理,如果不能降低各类干扰的影响,将会嵌入式系统实训报告书5增加监测数据误差。硬件电路设计
13、过程中充分考虑对干扰的抑制,对电路进行了合理的设计以及选择合适的元器件。在硬件电路设计过程中,充分从抑制干扰源、切断干扰途径以及提高元器件的抗干扰性能等三方面考虑,为降低信号干扰,采取了以下措施。(1)以核心部件为中心,围绕其进行布线,易受干扰元器件相互远离,输入输出元器件分开放置,电源和高频电路部分尽量远离;(2)STM32 微处理器和大功率器件的地线需要单独接地,以减少相互干扰,大功率元器件放置在电路板边缘;(3)在电路板布线时避免九十度折线,同时减少回路环面积,选择合适粗细的地线以及电源线;(4)数字区和模拟区用地线隔离,模拟地和数字地要分离,统一在一点接于电源地。软件设计方案软件系统框
14、图如下:嵌入式系统实训报告书6软件系统框图 2.4手机客户端 APP 设计开发环境的搭建本设计在开发过程中使用 Eclipse 加 ADT 插件的开发环境,Eclipse 集成开发环境 JDK,首先需要安装 JDK 工具包,本设计中使用的 JDK 版本是 JDK7Windowsi586exe。安装完成后,配置系统环境变量,将 JDK 的安装路径添加到系统 Path 中去。在 Andrioddeveloper 官网上下载 Eclipse 开发环境,其己对 Eclipse 和 ADK 插件绑定,开发者直接下载后解压即可使用。本设计使用的版本是 adtbundlewindowsx8620140702
15、zip。手机 APP 的主要功能模块手机 APP 的设计采用了 MVC 框架,将 Model、View 和 Controler 分开,有效减少开发工作量量和有效减少开发工作查和代码冗余率,有利于代码调试。本设计将手机端功能主要分为 5 大功能模块:登录功能模块、查询功能模块、接收数据模块、蓝牙验证模块。(1)登录模块登录模块需要用户输入个人信息,如用户名、密码、手机号码等。登录界面设计两个EditView 输入烂和 2 个 Button,输入烂用来接收用户名,2 个按紐分别是登录和取消。当嵌入式系统实训报告书7用户点击确认按钮后,跳转到主页面。confirm=(ImageButton)find
16、ViewById(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();els
17、eIntent 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 中配置b.启动蓝牙首先要查看本机是否支持蓝牙,获取 BluetoothAdapter 蓝牙适配器对象Bluetooth
18、Adapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();if(mBluetoothAdapter = null)/表明此手机不支持蓝牙嵌入式系统实训报告书8return;if(!mBluetoothAdapter.isEnabled() /蓝牙未开启,则开启蓝牙Intent enableIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);startActivityForResult(enableIntent, REQUEST_ENABLE_BT);pub
19、lic 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() !=BluetoothAdap
20、ter.SCAN_MODE_CONNECTABLE_DISCOVERABLE) Intent discoverableIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);discoverableIntent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 300);startActivity(discoverableIntent);(II)查找已经配对的蓝牙设备,即以前已经配对过的设备Set pairedDevices = mBluetoothAdapt
21、er.getBondedDevices();if (pairedDevices.size() 0) findViewById(R.id.title_paired_devices).setVisibility(View.VISIBLE); for (BluetoothDevice device :pairedDevices) /device.getName() + + device.getAddress(); else mPairedDevicesArrayAdapter.add(没有找到已匹对的设备);(III)通过 mBluetoothAdapter.startDiscovery();搜索设
22、备,要获得此搜索的结果需要注册 一个嵌入式系统实训报告书9BroadcastReceiver 来获取。先注册再获取信息,然后处理/注册,当一个设备被发现时调用 onReceiveIntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND);this.registerReceiver(mReceiver, filter);/当搜索结束后调用 onReceivefilter = new IntentFilter(BluetoothAdapter.ACTION_DISCOVERY_FINISHED);this.registe
23、rReceiver(mReceiver, filter);private BroadcastReceiver mReceiver = new BroadcastReceiver() Overridepublic void onReceive(Context context, Intent intent) String action = intent.getAction();if(BluetoothDevice.ACTION_FOUND.equals(action)BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice
24、.EXTRA_DEVICE); / 已经配对的则跳过if (device.getBondState() != BluetoothDevice.BOND_BONDED) mNewDevicesArrayAdapter.add(device.getName() + n + device.getAddress(); /保存设备地址与名字else if (BluetoothAdapter.ACTION_DISCOVERY_FINISHED.equals(action) /搜索结束if (mNewDevicesArrayAdapter.getCount() = 0)mNewDevicesArrayAda
25、pter.add(没有搜索到设备);d.建立连接查找到设备 后,则需要建立本机与其他设备之间的连接。一般用本机搜索其他蓝牙设备时,本机可以作为一个服务端,接收其他设备的连接。启动一个服务器端的线程,死循环等待客户端的连接,这与 ServerSocket 极为相似。这个线程在准备连接之前启动/UUID 可以看做一个端口号private static final UUID MY_UUID =UUID.fromString(fa87c0d0-afac-11de-8a39-0800200c9a66);/像一个服务器一样时刻监听是否有连接建立private class AcceptThread exte
26、nds Threadprivate BluetoothServerSocket serverSocket;嵌入式系统实训报告书10public AcceptThread(boolean secure)BluetoothServerSocket temp = null;try temp = mBluetoothAdapter.listenUsingRfcommWithServiceRecord(NAME_INSECURE, MY_UUID); catch (IOException e) Log.e(app, listen() failed, e);serverSocket = temp;publ
27、ic void run()BluetoothSocket socket=null;while(true)try socket = serverSocket.accept(); catch (IOException e) Log.e(app, accept() failed, e);break;if(socket!=null) /此时可以新建一个数据交换线程,把此 socket 传进去/取消监听public void cancel()try serverSocket.close(); catch (IOException e) Log.e(app, Socket Type + socketTyp
28、e + close() of server failed, e);e.建立数据通信线程,进行读取数据/建立连接后,进行数据通信的线程private class ConnectedThread extends Thread嵌入式系统实训报告书11private BluetoothSocket socket;private InputStream inStream;private OutputStream outStream;public ConnectedThread(BluetoothSocket socket)this.socket = socket;try /获得输入输出流inStream
29、 = socket.getInputStream();outStream = socket.getOutputStream(); catch (IOException e) Log.e(app, temp sockets not created, e);public void run()byte buff = new byte1024;int len=0;/读数据需不断监听,写不需要while(true)try len = inStream.read(buff);/把读取到的数据发送给 UI 进行显示Message msg = handler.obtainMessage(BluetoothCh
30、at.MESSAGE_READ,len, -1, buff);msg.sendToTarget(); catch (IOException e) Log.e(app, disconnected, e);connectionLost(); /失去连接start();/重新启动服务器break;public void write(byte buffer) try outStream.write(buffer);/ Share the sent message back to the UI Activityhandler.obtainMessage(BluetoothChat.MESSAGE_WRI
31、TE, -1, -1, buffer).sendToTarget(); catch (IOException e) 嵌入式系统实训报告书12Log.e(app, Exception during write, e);public void cancel() try socket.close(); catch (IOException e) Log.e(app, close() of connect socket failed, e);(3)数据查询query=(ImageButton)findViewById(R.id.query);query.setOnClickListener(this)
32、;listview = (ListView) findViewById(R.id.listView);db=new DataBaseCreat(MainActivity.this);db.open();begin_date=(EditText)findViewById(R.id.begin_date);end_date=(EditText)findViewById(R.id.end_date);yue=(Button)findViewById(R.id.yue);zhou=(Button)findViewById(R.id.zhou);ri=(Button)findViewById(R.id.
33、ri);yue.setOnClickListener(new OnClickListener() Overridepublic void onClick(View v) / TODO Auto-generated method stubQUERY_METHOD=0;);zhou.setOnClickListener(new OnClickListener() Overridepublic void onClick(View v) 嵌入式系统实训报告书13/ TODO Auto-generated method stubQUERY_METHOD=1;);ri.setOnClickListener
34、(new OnClickListener() Overridepublic void onClick(View v) / TODO Auto-generated method stubQUERY_METHOD=2;);Overridepublic void onClick(View v) / TODO Auto-generated method stubswitch (v.getId() case R.id.query:if(TextUtils.isEmpty(begin_date.getText() | TextUtils.isEmpty(end_date.getText()Toast.ma
35、keText(MainActivity.this, 输 入 时 间 为 空 , 请 检 查 ,Toast.LENGTH_SHORT).show();break;Toast.makeText(MainActivity.this, 查询中,请稍后, Toast.LENGTH_SHORT).show();ArrayListHashMaptemp=newArrayListHashMap();temp=db.getAllContact(QUERY_METHOD,name,datebegin, dateend);SimpleAdapter myAdapter = null;switch (QUERY_ME
36、THOD) case 0:myAdapter = new SimpleAdapter(this,temp,R.layout.item0,new Stringuser_name,year, month,total,嵌入式系统实训报告书14new int R.id.user_name0,R.id.year0,R.id.month0,R.id.total0);break;case 1:myAdapter = new SimpleAdapter(this,temp,R.layout.item1,new Stringuser_name,weekofyear,total,new int R.id.user
37、_name1,R.id.weekofyear1,R.id.total1);break;case 2:myAdapter = new SimpleAdapter(this,temp,R.layout.item2,new Stringuser_name,year, month,day,total,newintR.id.user_name2,R.id.year2,R.id.month2,R.id.day2,R.id.total2);break;default:break;listview.setAdapter(myAdapter);Break;default:break;软件件调试过程和结果由于我只负责软件部分,硬件部分由终端同学负责,需要将 PCB 板打出来,这里我们用电脑模仿硬件,用串口调试助手通过蓝牙向外发送数据,然后手机 APP 端接收,并通过查询按钮查询出来并实时显示电流数据,电压数据,转速数据和总电量,下面是我们的测试示意图:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 全真模拟 2027年中考河北省道德与法治初三提分模拟卷(含答案)
- 超越自我 2026-2027学年第一学期七年级英语外研版第一阶段阶段检测卷(含答案)
- 超越自我 2026-2027学年第一学期初二英语外研版上学期期末测试卷(含答案)
- 2027届江西省语文九年级人教版真题变式卷(含答案)
- 巩固提高 2026年秋季初一道德与法治部编版上学期期中测试卷(含答案)
- 2027年中考陕西省语文九年级粤教版考前最后冲刺卷(含答案)
- 巩固提高 2026-2027学年第一学期七年级英语人教版11月月考试卷(含答案)
- 2027年安徽省历史中考提分模拟卷(含答案)
- 老年误吸防治共识2026
- 2026 湖南事业编计算机岗 面试专项练习试卷 含答案
- 2026莫斯科贵金属交易行业市场现状供需分析及投资评估规划分析研究报告
- 2026秋统编版一年级语文上册第一次月考试卷(含答案)
- COX 痛经症状评分量表(CMSS)
- T-CHAS 10-2-2-2024 中国医院质量安全管理 第2-2部分:患者服务 院前急救
- 2026年中国超高性能轮胎市场数据研究及竞争策略分析报告
- 法律法规知识培训医院课件
- T/CSPSTC 70-2021短线法节段预制拼装桥梁监控量测技术规程
- QGDW12258-2022深基坑作业一体化装置
- 空气动力学与飞行原理课件:无人机空气动力学基础
- 2024年苍南县旅游投资集团有限公司招聘笔试冲刺题(带答案解析)
- 老年步态训练技术之走路姿势指导护理课件
评论
0/150
提交评论