【雕爺學編程】Arduino動手做(176)---UFUN2.0 開發板

37款傳感器與執行器的提法,在網絡上廣泛流傳,其實Arduino能夠兼容的傳感器模塊肯定是不止這37種的。鑑於本人手頭積累了一些傳感器和執行器模塊,依照實踐出真知(一定要動手做)的理念,以學習和交流爲目的,這裏準備逐一動手嘗試系列實驗,不管成功(程序走通)與否,都會記錄下來—小小的進步或是搞不掂的問題,希望能夠拋磚引玉。

【Arduino】168種傳感器模塊系列實驗(資料代碼+仿真編程+圖形編程)
實驗一百七十六:基於STM32F103RCT6及多種傳感器的UFUN2.0升級開發板

 

**UFUN的誕生**
有一隻螞蟻Z,很熱愛電子,它經常把工作和學習中的經驗及心得在網上與人分享。十年下來,螞蟻 Z 結識了好多同樣熱愛電子的小夥伴……2014 年 10 月 2 日,螞蟻Z的結婚週年,它和老婆決定把買禮物的錢拿來做一些學習板送給在校大學生,以幫助學生更好的理解電子知識和開發技巧。螞蟻Z把這個想法貼到了博客,迅速得到幾十位小夥伴的響應。大家籌錢獻力,利用業餘時間共同設計了這套學習板。經過了來來回回的設計驗證,也歷經了一些小的變故。最終在小夥伴們的共同努力下,加上一些廠商的免費或成本價支持,400套學習板終於誕生了。現在張工還特意將學習板拿出來,在各大論壇上招募工程師使用。

發起人張進東認爲,“這塊學習板是幾十名海內外有情懷工程師的心血。是理論於實踐結合最緊密的學習工具,是一個故事最多,最有溫度和情懷的學習工具。”
(見《永不停息的紅舞步:一個電子工程師的心路歷程》[https://www.mianbaoban.cn/blog/3894459-409526.html](https://www.mianbaoban.cn/blog/3894459-409526.html))

**UFUN的含義是什麼?**
“U”取自希臘字母“μ”相似的英文字母,願意爲 micro,即“點點興趣和愛好的結晶”,我們希望通過它能把我們共同的努力,把點點的樂趣傳遞給更多的人。

UFUN的圖標含義?
“U”上面兩個點是伸出的雙手,象徵着熱情的擁抱,是工程師與學生之間愛的傳遞;
“F”是 family;“UN”是取形電路走線,連接美好。

 

UFUN裏有什麼?
UFUN的設計核心是助於幫助大學生學習和理解課程,同時又能對學生畢業找工作有很明顯的幫助。ARM、嵌入式操作系統、物聯網、加速度傳感器、TF 卡操作、電容觸摸按鍵、USB 轉串口、I2C 接口、PWM 控制、蜂鳴器控制、LED 控制、超級電容使用等,這些對於當前找工作都是非常熱門的技能,熟練掌握後,可以平滑過度到日後的工作中。另外,二階低通濾波設計及分析、小信號高增益帶通濾波電路設計、運放電路分析都是大學課程中非常有價值但又令學生非常困惑難以理解的內容,UFUN 針對這些課程設計了實用電路,通過分析、計算、仿真、實踐,可以讓學生更好的瞭解理論與實踐的結合過程,真正激發學生對硬件設計精髓的興趣。0 歐電阻、磁珠、退耦電容、肖特基二極管、三極管、LDO、靜電防護、晶體選擇及使用技巧,都是實際工作中非常實用且重要的技能。

UFUN還有什麼?
板上帶有和手機一樣的 USB 接口,你只需要一根手機數據線,就可以從電腦下載編譯好的程序並運行了。但爲方便調試和跟蹤代碼,板子上還留有獨立的 JTAG 口,便於連接 ufun進行調試。UFUN 不是一本死板的“教科書”,它有非常炫的七彩 LED,通過調節 RGB 的 PWM 佔空比,可以得到你想要的任何顏色,並且可以按你的設計思路來變幻色彩;它體積非常小巧,只有 4*6cm,方便學生攜帶,更方便嵌入到你所能想到一切智能化的物件中,讓你的想象力得到更好的發揮;便捷的傳感器接口,插上各種傳感器,就可以實現測量和聲光預警;4 個漂亮的電容感應觸摸按鍵,給你更多的創意發揮空間;三軸加速度計,計步、遊戲、測量,你可以自由想象……UFUN 留有豐富的擴展接口,接口使用 mini PCIE 插座,擴展板不需要對應的連接器,可以極大的降低擴展板的成本。用戶可以自由的擴展液晶,測量,通訊模塊……總之,給你的無限創造力提供了無限的空間。只需要一個手機隨身充,你就可以帶着UFUN 和你的創想,去體驗電子給你帶來的無限樂趣!

UFUN的特點
UFUN學習板精緻小巧,功能多,集成了Arm芯片、TF卡、MicroUSB、蜂鳴器、LED、觸摸按鍵、三軸加速度計、帶能濾波器和陷波器等。
這款學習板是完全開源的,不僅如此,張進東還在附帶的這些資料中,解釋了爲什麼開發板要這麼設計,這麼設計有什麼好處,理論依據是什麼等等。比教科書上的解釋更加淺顯易懂,可以讓剛入門的小夥伴邊玩邊學,也更容易理解課本上的理論知識。

UFUN資源簡介

UFUN的配置
主控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個觸摸按鍵直接畫在了板子上,可以做出很多好玩的東西。
Mini-PCIe:據張工介紹,這個座子並不是按照PCIe的協議來設計的,所以使用不了PCIe接口的模塊,如4G模塊SIM7600CE。它只是空餘IO的引出,但是板子並沒有配備PCIe的轉2.54mm排針的轉接板,所以並不是很方便的擴展外部器件,如液晶屏,傳感器模塊等。不過大家可以自己畫擴展板哈,就是擴展板的結構尺寸不好把握,如果後續能開源PCB文件就好了。
TF卡座:採用的是自彈式TF卡槽,內部直接連接了STM32的SDIO接口,可以直接通過官方固件庫來驅動。
RGB燈:RGB採用的全綵共陽極LED,通過控制3路PWM波,從而調出各種顏色,當然,如果能採用那種外部是玻璃封裝的就更好了。
LED燈:LED採用的正貼紅色光。
蜂鳴器:HY-8540,貼片無源蜂鳴器,比傳統的直插式蜂鳴器要稍微小一點。
RTC電池:使用的是貼片超級電容,相比於貼片電池座+鈕釦電池的方式,體積要小的多。
撥碼開關:BOOT設置,沒有使用跳線帽+排針的方式,畢竟跳線帽這小玩意容易丟。我見過一種比這更小的貼片撥碼開關,不過得用鑷子才能撥,這裏採用大封裝的,可以直接用手撥動。
AD濾波電路:由於我的模電比較菜,所以這部分電路沒有看太懂,還有各個阻容值的計算過程,很適合學習。
Micro-USB接口:USB使用了和普通安卓手機一樣的USB接口,而不是Mini-USB,之前看有朋友在試用過程中,不小心把端子從板子上直接拔掉了,我在使用中沒有遇到這個情況,所以大家在拔USB線的時候,溫柔一點,如果焊盤被拔掉了,那就玩不了。
外部IO:留出了SWD調試端口,標準2.54mm排針,可以方便的通過J-Link或ST-Link調試器下載程序和調試。
其他:ESD,磁珠,防反接保護等等這些板子上都有設計。

UFUN的電原理圖

 

UFUN的電路板

**UFUN的升級細節(原1.0升級爲2.0版本)**

#擴展接口的修改。和上一版相比,最大的一個修改就是修改擴展接口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個大件整齊豎着排列。
#uFUN開發板2.0板級支持包:[https://github.com/lhxzui/rt-thr ... m32f103-yf-ufunverb](https://github.com/lhxzui/rt-thread/tree/lhxzui_rtt/bsp/stm32/stm32f103-yf-ufunverb)
#BSP包括MDK4、MDK5、IAR工程,並且支持GCC開發環境,目前對外設的支持還只有串口1,RGB-B LED,部分GPIO的支持,板載傳感器等支持還有待完善。

注:左爲新UFUN,2.0版本

UFUN的相關比較

這裏要感謝麪包板社區和UFUN開發團隊,給了我這次學習和試用的機會。真的慚愧,以前從未接觸過STM32,而Arduino也是今年5月份開始學習的,基礎差些,抱着試試看的想法,準備嘗試使用Arduino IDE搭建UFUN2.0開發環境及LED閃燈,當然走哪算哪.......


衆所周知,使用Arduino進行開發簡單快捷,一個項目能很快的做好。以我自己的例子,小時候愛好過無線電,有點動手能力而已,但沒有單片機的底子,編程語言基礎也是零,只好選擇Arduino可視化的圖形編程來入門。幾個月以來,從簡單的幹簧管模塊開始,一邊查資料學習,一邊嘗試做實驗,同步發帖子(兼顧分享與交流)。上手一個新的傳感器,先查相關資料瞭解基本情況,然後嘗試做實驗,不管程序是否能走通,都記錄下來。分享的實驗記錄內容,主要是相關技術資料(網上搜集整理)+代碼編程(Arduino)+圖形編程(幾種平臺軟件配合)+仿真編程(國產自主知識產權Linkboy),以務實解決問題爲實驗目標(走通能用)。說來好玩,這些做實驗的傳感器和執行器模塊大部分見都沒有見過,還有不少甚至沒聽說過(主要是在深圳電子市場上耐心淘來的)。因爲沒有把握,最早開貼Arduino系列實驗目標——37種傳感器與模塊,後來升級爲66種,再後來變成108種,至10月中旬止實際已經發帖135種實驗了(成功率達95%以上),現在新的目標是168種(估計要推後到明年了)。所以說Arduino能風靡全球,成爲入門電子DIY的首選是有一定道理的,確實兼容性非常棒,開發環境良好。Arduino的強大之處就在於它擁有完善的生態鏈,先前的貢獻者可能已經寫出了你需要的各種庫文件。不論是讀取溫溼度傳感器的數值還是利用液晶屏顯示文字,亦或者僅僅是驅動舵機,你都能在網絡上找到適用於Arduino的庫函數。

 

 

下面就開始新的嘗試與實驗:
第一步:安裝Arduino IDE

 

arduino官網[https://www.arduino.cc](https://www.arduino.cc/) ,下載Arduino IDE頁面 [https://www.arduino.cc/en/Main/Software](https://www.arduino.cc/en/Main/Software)

 

安裝版本是1.8.10,兼容各大平臺,有安裝版和免安裝版二種。

 

第二步:下載安裝Arduino SAM開發板

 

不安裝這個開發板後編譯會出現arm-none-eabi-g++錯誤

 

打開Arduino——工具——開發板管理器

 

然後搜索——SAM開發板並下載安裝

安裝成功是這樣的

第三步:下載STM32F103RCT6用的Arduino開發板庫

下載地址:<u style="overflow-wrap: break-word;">[https://github.com/rogerclarkmelbourne/Arduino_STM32](https://github.com/rogerclarkmelbourne/Arduino_STM32)  </u>

下載後解壓,將文件夾Arduino_STM32_master重命名爲Arduino_STM32後複製到C:\Users\用戶名\Documents\Arduino\hardware文件夾,如果沒有hardware文件夾就新建一個(由於這個壓縮包體積偏大,我下載好多次都失敗了,後來在21ic下載站上用2元兌換了一個,呵呵,要解決問題,鏈接:[http://dl.21ic.com/download/code/arduino_stm32-210074.html](http://dl.21ic.com/download/code/arduino_stm32-210074.html))。這個Arduino_STM32的庫有40多M,包括文件:

有了這個庫我們就可以讓arduino IDE支持ufun學習板了。由於是第三方的庫,所以需要自己手動安裝。

第四步:打開Arduino IDE,選擇工具——開發板——選擇如下開發板

選擇STM32F103RCT6,256KB Flash + 48kB SRAM

第五步:安裝UFUN2.0的串口驅動(串口芯片CH340),打開Arduino IDE,要能識別板子

設置端口

第六步:下載安裝flash_loader_demo_v2.8.0

flash loader demo是一款ST官方的flash下載軟件,用於STM32F103,STM32F407,STM32F446單片機的串口下載程序。

支持Windows 98SE, 2000, XP, Vista, 7, 8, 8.1, 10系統。

 

如何安裝:首先刪除之前版本,從開始-設置-控制面板中-添加或刪除程序,移除之前的版本後,再運行安裝程序。目前版本是2.8.0,下載之後默認安裝。

下載鏈接:https://www.st.com/en/development-tools/flasher-stm32.html   

鏈接2:https://pan.baidu.com/s/1jpwH-NU8_Y31hPPDKDuVwA
提取碼:2qkb

第七步:更改ufun板子啓動配置

STM32三種啓動模式對應的存儲介質均是芯片內置的,如下圖:

(1)用戶閃存 : 芯片內置的Flash。正常的工作模式。

(2)SRAM: 芯片內置的RAM區,就是內存。可以用於調試。

(3)系統存儲器: 芯片內部一塊特定的區域,芯片出廠時在這個區域預置了一段Bootloader,就是通常說的ISP程序。這個區域的內容在芯片出廠後沒有人能夠修改或擦除,即它是一個ROM區。啓動的程序功能由廠家設置。


我們把ufun的BOOT0引腳拉高,進入系統存儲器啓動模式,這樣就可以用ST的flash_loader進行程序的下載。如上圖所示把ufun最右邊的兩個引腳短接在一起,就是拉高了BOOT0引腳。

第八步:使用flash_loader_demo_v2.8.0燒錄bin文件
接上板子,打開軟件,選擇USB串口線的串口號(這裏是COM5)

按開發板上重置鍵後按Next進入下一步(已能識別256K)

按Next進入下面界面,選擇Download to device

 

 

下載下面文件,解壓爲bin後綴名文件
[generic_boot20_pc13.rar](http://generic_boot20_pc13.rar/)
然後選擇上圖的Download from file按鈕,選擇上面解壓的文件

**第九步:從Git上([https://github.com/rogerclarkmelbourne](https://github.com/rogerclarkmelbourne))下載大佬的項目文件“STM32duino-bootloader-master”**

如下頁面中第二個文件,如果不導入安裝這個庫文件的話就無法編譯生成STM32 對應的hex文件。

找到上圖中圈着紅線的BIN文件,下載到桌面,一會我們將用工具下載到ufun學習板中。

下載鏈接: [https://github.com/rogerclarkmelbourne/STM32duino-bootloader/tree/master/binaries](https://github.com/rogerclarkmelbourne/STM32duino-bootloader/tree/master/binaries)   

解壓後放入C:\Users\用戶\Documents\Arduino\hardware\Arduino_STM32中,並燒錄成功見下圖

第十步:打開Arduino IDE,燒錄LED閃燈程序

先確認燒錄UFUN2.0開發板的6個配置

燒錄的Blink程序如下(把UFUN板子的boot引腳繼續拉高,按一下復位按鍵,然後放開)

void setup() {
pinMode(PA1, OUTPUT);
}
void loop() {
digitalWrite(PA1, HIGH);
delay(1000);
digitalWrite(PA1, LOW);
delay(1000);
}

  

燒錄成功是這樣的

忙乎一天,終於點亮板載藍色LED

視頻地址 https://v.youku.com/v_show/id_XNDQ0NjkxMTA0NA==.html?spm=a2h3j.8428770.3416059.1

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章