前言

今年3月,我参与了面包板社区组织的第一批uFUN开发板评测活动,并有幸能获得试用机会,那是我第一次了解到uFUN这个项目及背后的故事,4月份,uFUN 2.0版本来了,收到了张工送的一块样板,后来又收到一块量产板,非常感谢。其实开发板很早就收到了,也玩了一段时间,早就计划着写一篇开箱评测,正好最近面包板正在开展新版uFUN的评测活动,我也来参与一下,写写停停,终于写完了,以下内容仅仅是我个人的观点,有错误的地方欢迎各位朋友指正、互相交流学习!

uFun是什么

uFun是由@张进东 张工组织发起的一个开源的学习板,设计初衷是为了帮助学生更好的理解电子知识和开发技巧,同时又能对学生毕业找工作有很明显的帮助。张工于2014年10月提出这个想法,并发到了博客上,不久就得到了全国各地几十位小伙伴的支持和响应,大家天南海北,筹钱献力,多位在职工程师,利用业余时间共同设计了这块学习板,经过几次的设计验证,还有一些厂商的支持,400套学习板诞生了。

uFUN不是一本死板的“教科书”,虽然只有4*6cm大小,但却包含SD卡槽、三轴加速度计、触摸按键、蜂鸣器、RGB LED、串口芯片、低通滤波电路、双T陷波滤波器等,方便携带,开发简单,只需要一根普通的安卓MicroUSB数据线即可完成你的设计。

板载资源简介

和1.0版本一样,2.0版本同样采用四层板设计,沉金工艺,蓝色油墨,由于取消了Mini-PCIE座,所以整体厚度小了不少,大小还是保持4*6cm不变。

大点的芯片座子主要放在了正面,阻容主要分布在了背面,各元器件的封装也都是选了小封装,如大部分0402封装的阻容,贴片的超级电容等。别看板子只有小小的4*6cm,但是板子资源还是相当丰富的,下面我们一起来看一下吧!

  • 主控MCU:主控MCU还是采用的STM32F103RCT6,LQFP64封装,STM32系列大容量产品,256KB Flash + 48kB SRAM,内存空间足够使用了,主频72MHz,外设丰富,51个可用IO,8个16位定时器,3路SPI,2路串口,1路SDIO等等。对于新手入门32位ARM单片机是一个很好的选择,学习资料非常多,学习过程中遇到的问题基本都能在网上找到答案。

  • 串口芯片:CH340,板子自带了USB-TTL转换芯片,对于没有调试器的朋友,可以方便的通过串口1来下载程序,同时,也是程序调试的好帮手。
  • 传感器:LIS3DH,ST公司的MEMS传感器,三轴加速度计,支持IIC或者SPI协议,本板子采用的是IIC协议接口。
  • 触摸按键:TTP224N,4通道触摸芯片,上下左右4个触摸按键直接画在了板子上,可以做出很多好玩的东西,和上位机通信,可以作为游戏手柄,来玩贪吃蛇、俄罗斯方块、2048、FlappyBird等小游戏,也可以结合显示屏直接使用触摸按键来控制。
  • TF卡座:采用的是自弹式TF卡槽,内部直接连接了STM32的SDIO接口,可以直接通过官方固件库来驱动。
  • RGB灯:通过控制3路PWM波,从而调出各种颜色,RGB驱动电路由原来的低电平点亮改为了高电平点亮。实际使用发现Green和Blue LED的控制引脚反了
  • 光敏电阻:取消了反贴的LED,而改为了贴片光敏电阻,配合AD采集,可以作为心率传感器来使用。
  • 蜂鸣器:相比于第一版的蜂鸣器,采用了更小了封装,有着更小的体积。
  • RTC电池:使用的是贴片超级电容,相比于贴片电池座+纽扣电池的方式,体积要小的多。
  • Micro-USB接口:USB使用了和普通安卓手机一样的USB接口,而不是Mini-USB,之前看有朋友在试用过程中,不小心把座子直接从板子上拔掉了,所以大家在拔USB线的时候,温柔一点,如果焊盘被拔掉了,那就真玩不了。
  • 外部IO:通过2.0mm间距40P排针,引出未使用的GPIO,并不是常见的2.54mm间距的,所以如果想连接一些外部模块,还需要2mm转2.54mm的排线才行。

新版本更新的地方

1.0版本的评测文章可以参考之前发的一篇文章:小巧而不失精致,简单而不失内涵——uFun开发板开箱爆照

相比于第一版,uFUN的改动不算太大,不过优化了很多细节:

  • 扩展接口的修改。和上一版相比,最大的一个修改就是修改扩展接口Mini-PCIe为2.0mm间距双排排针插座,受板子面积影响,并不是标准2.54mm间距的,当然如果手里没2.0mm间距的排线可能不是很方便,我也是当时又从淘宝买了一些。当然也可以方便的和扩展板进行连接,uFUN配套的扩展板已经设计完成了。
  • 拨码开关和电源开关。针对第一版中发现拨码开关接触不良,去掉拨码开关选择BOOT的功能,而改为排针跳线方式,去掉了电源开关。
  • 晶振飞线问题。CH340和STM32的时钟信号12M晶振,由原来的无源晶体改为有源晶体,更正了1.0版本的时钟飞线问题。
  • 光敏电阻。去掉了原来触摸按键中间背面的反贴红色光LED灯,替换为贴片的光敏电阻,配合AD电压采集,可以用于实现心率传感器的功能。
  • 触摸按键对地静态电容的调整。由原来的50pF改为了22pF,提高了一定的灵敏度。
  • 蜂鸣器封装改为更小的。由原来的HY-8540无源蜂鸣器改为MLT-5020 5*5*2mm超小超薄封装的无源蜂鸣器。

  • B10和B11网络标号反了的问题。旧版本原理图中PB10和PB11的网络标号反了,导致UART3_TX和UART3_RX也反了,所以当时我画的扩展板也不得不进行割线+飞线补救,不过好在影响不大。

  • 布局优化。新规划了布局并进行了许多细节优化,让UFUN更漂亮、更好用,背面4个大件整齐竖着排列。

第一批的5块样板中,使用的是2.0mm间距的双排排针,而量产时采用的是2.0mm的牛角插座,相比于裸露的排针,母座多了外面的胶壳保护,在使用过程中可以避免排针划伤皮肤,这一点细节考虑的还是很周到的。

官网上线啦

uFUN项目不仅在硬件上进行了更新,而且最近上线了官方网站,地址:www.myufun.com,支持手机和PC访问,方便开发者交流,目前只有主页的资料下载是有效的,其他功能还有待完善。

RT-Thread板级支持包

网友lhxzui已经为uFUN开发板制作了支持RT-Thread的BSP包,大家在下载RT-Thread官方仓库之后可以在rt-thread\bsp\stm32\stm32f103-yf-ufun目录下找到,目前RT-Thread官方还没有把这个两个BSP包合并到master分支,所以现在clone下来的RT-Thread仓库还只有stm32f103-yf-ufun这一个BSP包,大家可以到的个人Github进行下载:

  • RT-Thread仓库:https://github.com/RT-Thread/rt-thread
  • uFUN开发板1.0板级支持包:https://github.com/lhxzui/rt-thread/tree/lhxzui_rtt/bsp/stm32/stm32f103-yf-ufunvera
  • uFUN开发板2.0板级支持包:https://github.com/lhxzui/rt-thread/tree/lhxzui_rtt/bsp/stm32/stm32f103-yf-ufunverb
    BSP包括MDK4、MDK5、IAR工程,并且支持GCC开发环境,目前对外设的支持还只有串口1,RGB-B LED,部分GPIO的支持,板载传感器等支持还有待完善。

配套的扩展板

据官方透露,目前已经设计完成两种扩展板:

  • Arduino转接板:配合uFUN,通过下载STM32duino-bootloader固件,可以把uFUN作为Arduino来使用。
  • 简易标量网络分析扩展板:基于DDS芯片 AD9850,和对数放大器芯片AD8307,可以用来做信号发生器 和 简易标量网络分析。

以上两块扩展板都会在10月底前完成。

Arduino扩展板图片:

一些好玩的项目

基于1.0版本的小项目:

基于2.0版本的小项目:

总结

总的来看,这次uFUN的更新,修正了一些瑕疵,设计了配套的扩展板,上线了官方网站,可以说,uFUN又走了一大步,希望大家能多多支持。

资料下载


历史精选文章:


  • 欢迎大家关注我的个人博客:www.wangchaochao.top
  • 或微信扫码关注我的公众号

千呼万唤始出来——uFUN开发板2.0开箱评测的更多相关文章

  1. 【UFUN开发板评测】小巧而不失精致,简单而不失内涵——uFun开发板开箱爆照

    关于uFun学习板--"满满的爱和正能量" uFun是由@张进东 张工组织发起的一个开源的学习板,设计初衷是为了帮助学生更好的理解电子知识和开发技巧,同时又能对学生毕业找工作有很明 ...

  2. 基于uFUN开发板和扩展板的联网校准时钟

    项目概述 上周在uFUN试用群里看到管理员说试用活动快结束了,要抓紧完成评测总结,看大家的评测总结也都写了,我也不能落后啊!正好最近做的扩展板到手了,于是赶紧进行调试,做了一个不用校准的时钟,时钟这种 ...

  3. 基于uFUN开发板的RGB调色板

    前言 使用uFUN开发板配合Qt上位机,实现任意颜色的混合,Qt上位机下发RGB数值,范围0-255,uFUN开发板进行解析,然后输出不同占空比的PWM,从而实现通过RGB三原色调制出任意颜色. Qt ...

  4. 基于uFUN开发板的心率计(三)Qt上位机的实现

    前言 上两周利用周末的时间,分别写了基于uFUN开发板的心率计(一)DMA方式获取传感器数据和基于uFUN开发板的心率计(二)动态阈值算法获取心率值,介绍了AD采集传感器数据和数据的滤波处理获取心率值 ...

  5. 基于uFUN开发板的心率计(二)动态阈值算法获取心率值

    前言 上一篇文章:基于uFUN开发板的心率计(一)DMA方式获取传感器数据,介绍了如何获取PulseSensor心率传感器的电压值,并对硬件电路进行了计算分析.心率计,重要的是要获取到心率值,本篇文章 ...

  6. 基于uFUN开发板的心率计(一)DMA方式获取传感器数据

    前言 从3月8号收到板子,到今天算起来,uFUN到手也有两周的时间了,最近利用下班后的时间,做了个心率计,从单片机程序到上位机开发,到现在为止完成的差不多了,实现很简单,uFUN开发板外加一个Puls ...

  7. AC6102开发板USB3.0测试和使用说明

    AC6102开发板USB3.0测试和使用说明 概述 AC6102上集成了一颗Cypress 推出的高性能USB3.0传输芯片CYUSB3014,Cypress称之为EZ-USBFX3.该芯片性能强劲, ...

  8. 基于麒麟座开发板2.0的MQTT实现例程

    链接--->https://sanwen8.cn/p/649shZ1.html OneNET现已全面适配标准MQTT协议,相信这一功能的增加会**便于开发者进行设备的接入. OneNET提供了M ...

  9. 【ST开发板评测】Nucleo-F411RE开箱报告

    前言 面包板又举办开发板试用活动了,很荣幸能获得一块ST官方的Nucleo-F411RE开发板,感谢面包板社区和ST意法半导体的赞助,这是我第一次试用官方的开发板,收到板子后查了一些关于ST官方开发板 ...

随机推荐

  1. 安卓Android碎片fragment实现静态加载

    静态加载好后的界面如下,两个碎片分别位于一个活动的左边和右边: 左边和右边分别为一个碎片,这两个碎片正好将一整个活动布满.一个活动当中可以拥有多个碎片,碎片的含义就是可以在同一个UI界面下,将这个界面 ...

  2. 多线程之美3一Java并发工具类

    一.简介 1.1. Semaphore 信号量,见文知义,常用于并发控制中的限流作用,我理解是限定数量的共享锁机制.该共享资源最多同时可让n个线程访问,超过n个线程就阻塞等待,如有资源空闲, 唤醒其他 ...

  3. vue学习笔记(八)组件校验&通信

    前言 在上一章博客的内容中vue学习笔记(七)组件我们初步的认识了组件,并学会了如何定义局部组件和全局组件,上一篇内容仅仅只是对组件一个简单的入门,并没有深入的了解组件当中的其它机制,本篇博客将会带大 ...

  4. 原生JS的移入溢出控制div的显示与隐藏

    原生JS的移入溢出控制div的显示与隐藏的写法 上面的写法火狐存在兼容性

  5. vue e.path 移动端兼容

    作用 e.path 用来获取点击元素及以上所有父元素的一个数组 问题 当在移动端会有获取不到e.path的问题 不兼容 解决 let path = event.path || (event.compo ...

  6. python网络爬虫之入门[一]

    目录 前言 一.探讨什么是python网络爬虫? 二.一个针对于网络传输的抓包工具fiddler 三.学习request模块来爬取第一个网页 * 扩展内容(爬取top250的网页) 后记 @(目录) ...

  7. Spring Cloud第一篇 | Spring Cloud前言及其常用组件介绍概览

    ​ ​本文是Spring Cloud专栏的第一篇文章,了解本篇文章内容有助于更好的理解后面文章 ​ 一.网站架构演变过程 1-1.传统架构 传统的SSH架构,分为三层架构 web控制层.业务逻辑层.数 ...

  8. 2019-2020-4 20199317《Linux内核原理与分析》第四周作业

    第3章  MenuOS的构造 1  Linux内核源代码简介        计算机的“3大法宝”:存储程序计算机.函数调用堆栈和中断. 操作系统的“两把宝剑”:一把是中断上下文的切换——保存现场和恢复 ...

  9. CentOS7.4系统下,手动安装MySQL5.7的方法

    MySQL数据库应用广泛,尤其对于JAVA程序员,不会陌生.如果在不想采购云数据库的情况下,可以自行安装MySQL数据库.文章将介绍,手动在CentOS7.4环境下,安装MySQL5.7版本的方法. ...

  10. Sql增加,删除,修改列

    1. 查看约束条件 - MySQL: SELECT * FROM information_schema.`TABLE_CONSTRAINTS` where table_name = 'book'; - ...