打印
[四轴原创DIY]

以efm32tg842为核心的微型四轴飞行器研发笔记(欢迎探讨)

[复制链接]
5995|31
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
mgyml|  楼主 | 2014-4-14 19:09 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
看着论坛里做的人那么多,很早就开始心动了。筹备了3-4个月。终于准备开干。基本工作已经准备完成。
目标:
先做四轴。后面有时间再做无人飞机。
挑战一下难度。做一个可以自己悬浮的四轴。这个也算是无人飞机的第一步吧。
总体框架:
1、MCU
EFM32 TG842 手上正好有他家的CHIP。和STM32一样,不过比STM32更稳定。价格也差不多。我拿到手的是样片,而且手头也有一块开发板,方便。
PIN脚计划:
9轴传感器 I2C
无线模块:2个GPIO+SPI
超声波:GPIO*2 预留5套超声波
电机速度控制,GPIO*4
PIN预留:
GPS UART
GPRS UART
2、大部分传感器和控制模块全用X宝上的。以后有机会要做集成再说。谁家买的我就不说了。X宝上多的是。
9轴: ADXL345+HMC5883L+ L3G4200D
无线:nRF24L01 代替方案:蓝牙 ATK-HC05-V11 是用无线还是用蓝牙还没考虑好。
超声波模块: X宝上一堆。
其它的要用再加。 GPS和GPRS是将来用来做无人飞机考虑的。

相关帖子

沙发
mgyml|  楼主 | 2014-4-14 19:25 | 只看该作者
先上传核心芯片的资料,供大家参考。

d0072_efm32tg842_datasheet.pdf

2 MB

使用特权

评论回复
板凳
mgyml|  楼主 | 2014-4-14 19:28 | 只看该作者
EFM32中文介绍版本

EFM32中文.zip

4.29 MB

使用特权

评论回复
地板
elec921| | 2014-4-14 19:43 | 只看该作者
Silicon labs 的吧?

这个芯片并不是很流行。性能可能还可以。

使用特权

评论回复
5
sjlou1126| | 2014-4-14 19:44 | 只看该作者
elec921 发表于 2014-4-14 19:43
Silicon labs 的吧?

这个芯片并不是很流行。性能可能还可以。

确实不是很流行。不过重在稳定。

使用特权

评论回复
6
mgyml|  楼主 | 2014-4-14 19:47 | 只看该作者
这次用EFM32作为核心芯片,主要也是想看看是不是用这款芯片,能让四轴飞行器的兴能更稳定。

使用特权

评论回复
7
mgyml|  楼主 | 2014-4-14 19:47 | 只看该作者
EFM32系列的工业应用范围还是比较广的。

使用特权

评论回复
8
mgyml|  楼主 | 2014-4-16 14:12 | 只看该作者
这两天比较忙,过两天把画的原理图进行共享。PCB板的布局,打算先做一块综合版,将各个模块的功能调通,再优化PCB板。

使用特权

评论回复
9
zjjdxy| | 2014-4-16 14:57 | 只看该作者







使用特权

评论回复
10
沧海一笑| | 2014-4-16 15:42 | 只看该作者
哎吆,9楼顶的腰挺直的哈,..看我顶起.

顶顶
顶顶顶
顶顶顶顶
顶顶顶顶顶
顶顶顶顶顶顶
顶顶顶顶顶顶顶
顶顶顶顶顶顶顶顶
靠墙角顶是比较稳定...

使用特权

评论回复
11
erchowyo| | 2014-4-16 16:35 | 只看该作者
支持原创

使用特权

评论回复
12
贾文和| | 2014-4-16 16:41 | 只看该作者
我是来顶贴的
顶一个
赞一个

使用特权

评论回复
13
sjlou1126| | 2014-4-16 19:15 | 只看该作者
什么也不说了.先上一个串口通讯代码
#include <stdint.h>
#include <stdbool.h>
#include "efm32.h"
#include "em_chip.h"
#include "em_cmu.h"
#include "em_gpio.h"
#include "em_usart.h"

//读取数据中断
void USART1_RX_IRQHandler(void)
{
    if(USART_Rx(USART1) == 0x5)
    {
        GPIO_PinOutToggle(gpioPortD, 7); //如果接收到数据,反置PD7 在开发板STK3300上为LCD
    }
}

void UART_Initial(void)
{
    //初始化时钟
    CMU_ClockEnable(cmuClock_HFPER, true);
    CMU_ClockEnable(cmuClock_GPIO, true);
    CMU_ClockEnable(cmuClock_USART1, true);
   
    // 初始化 通讯参数
    USART_InitAsync_TypeDef UART_init = USART_INITASYNC_DEFAULT;
    UART_init.baudrate = 9600;
   
    USART_InitAsync(USART1, &UART_init);
   
    // 初始化中断
    USART1->IFC = _USART_IFC_MASK;
    NVIC_ClearPendingIRQ(USART1_RX_IRQn);
    NVIC_EnableIRQ(USART1_RX_IRQn);
    USART1->IEN = USART_IEN_RXDATAV;
   
    //设置PD0 为RX PD1为TX
    GPIO_PinModeSet(gpioPortD,0,gpioModePushPull,1); //tx
    GPIO_PinModeSet(gpioPortD,1,gpioModeInput,1);    //rx
   
    USART1->ROUTE |=  USART_ROUTE_TXPEN | USART_ROUTE_RXPEN | USART_ROUTE_LOCATION_LOC1;
}

/**************************************************************************//**
* @brief  Main function
*****************************************************************************/
/**************************************************************************//**
* @brief  Main function
*****************************************************************************/
int main(void)
{
  /* Chip errata */
  CHIP_Init();
  
  //设置时钟
  SystemCoreClockUpdate();

  UART_Initial();

  CMU_ClockEnable(cmuClock_GPIO, true);
  // 允许PD7GPIO输出
  GPIO_PinModeSet(gpioPortD, 7, gpioModePushPull,0);

  unsigned char ucData = 0;
  /* Infinite blink loop */
  while(1)
  {
      unsigned long ulDelay = 100000; // 延时100MS
      while(ulDelay--);
      if(ucData < 10)ucData++;
      else ucData = 0;
      USART_Tx(USART1,ucData); // 输出ucData
  }
}

使用特权

评论回复
14
sjlou1126| | 2014-4-17 09:36 | 只看该作者
因为 @mgyml 的板子芯片没到.最近一直在用开发板做测试
再上一个I2C调试ADXL345的DEMO
和昨天的UART打了个包.

src.rar

3.68 KB

使用特权

评论回复
15
mgyml|  楼主 | 2014-4-18 00:12 | 只看该作者
硬件相关的开发软件,目前主要用到的是Protel DXP 2004,  这个软件的有点大,网站里不太好上传,贴个网址,感兴趣的可以自己下载:http://www.pc6.com/softview/SoftView_51071.html

使用特权

评论回复
16
sjlou1126| | 2014-4-18 10:55 | 只看该作者
@che180 还没有可以飞...

使用特权

评论回复
17
qwert1213131| | 2014-4-19 10:00 | 只看该作者
:victory::lol:victory::P

使用特权

评论回复
18
sjlou1126| | 2014-4-20 09:16 | 只看该作者
昨天晚上4点,调试完蓝牙..就一个问题折腾了我很久.
因为是用开发板.开发板上只提供了一个USART和一个LEUSART(低功耗串口).
LEUSART的最高波特率只能到9600.我设置成35400.结果一直通讯不成功.
最后还是把LEUSART做为和计算机通讯,把USART做为和蓝牙模块通讯.总算完成了.

附带HC05蓝牙笔记:
主机就是能够搜索别人并主动建立连接的一方,从机则不能主动建立连接,只能等别人连接自己,
KEY OFF 可以发送数据  KEY ON 可以发送AT指令(这里也折腾了一翻,发傻了.)
AT+NAME=Bluetooth-Slave  蓝牙名称为Bluetooth-Slave
AT+ROLE=0                蓝牙模式为从模式
AT+CMODE=0               蓝牙连接模式为任意地址连接模式
AT+PSWD=1234             蓝牙配对密码为1234
AT+UART=38400,0,0       蓝牙通信串口波特率为9600,停止位1位,无校验位
AT+RMAAD                 清空配对列表

使用特权

评论回复
19
hmf0302| | 2014-4-21 00:30 | 只看该作者
学习了

使用特权

评论回复
20
sjlou1126| | 2014-4-22 08:16 | 只看该作者
GPS模块搞定了.和蓝牙的传输方式一样.而且我没有配置参数.
不过一直没收到星.等天晴了,到室外试试.

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

27

帖子

0

粉丝