MBD(一)-下载包-getstart-raspberry串口设置问题
跟著官方文檔做
- 1. matlab和simulink支持包下載
- 2. matlab-樹莓派demo
- 2.1-通過matlab命令控制LED燈閃爍
- 2.2 matlab代碼部署到raspberry上
- 2.3 引腳模式設置
- 2.4 通過matlab命令執行linux終端指令
- 3. Simulink-樹莓派demo
- 3.1 用simulink做樹莓派燈閃爍demo
- 3.2 simulink做樹莓派串口通信
- 4.總結
matlab和simulink版本-2020b
樹莓派版本-3B+
最近接觸到基于模型的編程技術(MBD),即基于Matlab和simulink自動生成嵌入式C代碼,可以手動或通過TLC自動部署到嵌入式硬件上去,實驗室這邊常用的開發板是樹莓派和Jetson TX2,由于官方文檔有Matlab和simulink對樹莓派的支持包,所以這里記錄一下這兩天跟著官方文檔給出的示例程序做的時候會遇到的一些坑。
之后還要探究如何移植到其他板子上,本章內容簡要有:
1. matlab和simulink支持包下載
所需硬件:
step1:matlab主界面上添加附加功能,下載這兩個包,這個過程基本上沒什么問題,下載完成后會讓你進行設置。
step2: 樹莓派硬件設置-點上圖中那個齒輪圖標進入設置界面
這里點next之后,下一個界面如下圖所示,這里是讓你選樹莓派要用的操作系統.
- 第一個是mathwork官方給樹莓派提供的一個raspbian系統,安裝好了與matlab相關的庫;
- 第二個用你的樹莓派現成的系統,但是要自己下載缺失的庫,包,這個參考https://github.com/mathworks/Raspbian_OS_Setup
個人推薦使用第一種,省些時間,不過要重新刷樹莓派SD卡
之后按照提示下載官方的系統鏡像(向導里有),也可以通過下面的鏈接下載,要與matlab版本對應,比如我是matlab2020b,下載版本就要是20開頭的
https://github.com/mathworks/Raspbian_OS_Setup/releases
tip: 可能會由于網絡原因下不下來,多試幾次或者…總之加油,我也是下了一上午才下下來的
下下來之后按照提示刷寫SD卡,應該比較順利,提一下這一步:
這一步選第一個,需要把樹莓派用網線連到路由器上,你的主機(裝了matlab的電腦)也要連到這個路由器上(最好也用網線連,wifi可不可以沒有試過)
step3:查詢樹莓派網絡ip
完成以上工作之后,將SD卡插到樹莓派上,連接屏幕(第一次為了連接wifi需要一個屏幕,連了一次之后會自動連接,就不需要屏幕了)
查詢樹莓派ip,我是連的筆記本熱點,在筆記本上可以查到,當然linux系統查ip也可以通過命令:
ifconfigstep4: SSH連接
matlab官方系統默認開啟了ssh,如果沒有默認開啟,需要下載xrdp,這個請自行搜索。
這個我覺得比上面的方案好一些,Xshell非商業用途可以免費用,下載,使用這里不詳細說明了
至此,matlab-simulink包下載和樹莓派系統就搞定了。
tip:simulink包和matlab包的設置一樣,都是給樹莓派下載系統用的,所以上面兩個包中只用設置一個就行了
2. matlab-樹莓派demo
這里跟著官方文檔做demo
2.1-通過matlab命令控制LED燈閃爍
該demo對應文檔中
通過matlab命令行逐行執行:
以上實現了用代碼控制樹莓派上的LED燈亮滅,可以編寫一個m函數控制燈的閃爍行為:
function blinkLED() %UNTITLED2 此處顯示有關此函數的摘要 % 此處顯示詳細說明 r = raspi('192.168.137.50', 'pi', 'raspberry');for count = 1:100% led onwriteLED(r, 'LED0', 1);pause(0.5);% led offwriteLED(r, 'LED0', 0);pause(0.5); end end之后在命令行或者編寫m腳本調用:
clear rpi; blinkLED();就可以看到燈閃爍效果。這個demo實現起來還是比較順利的,效果是燈亮滅0.5s/次持續100s。
2.2 matlab代碼部署到raspberry上
2.1中通過命令行可以控制樹莓派的硬件,本質上是通過網絡通信傳信號的(本人對網絡TCP/IP也不太懂,總之是這個意思吧)。
matlab支持包可以讓我們將m文件里要實現的功能編成C代碼并部署到樹莓派本地上,同時生成可執行文件。這里還是以2.1中的閃燈程序為例
上圖中為工作空間的文件(沒有部署之前,只需要編寫blinkLED.m的代碼即可,代碼與2.1相同)
matlab命令行執行命令:
生成的代碼以及可執行文件的路徑為:
在樹莓派終端執行
可以看到和2.1的燈閃爍相同的效果
2.3 引腳模式設置
給出m函數:
function setPinExample() %UNTITLED 此處顯示有關此函數的摘要 % 此處顯示詳細說明 rpi = raspi('192.168.137.50', 'pi', 'raspberry');% 1.可用GPIO引腳 rpi.AvailableDigitalPins;% 2.顯示樹莓派的引腳圖 showPins(rpi);% 3.設置引腳模式 - pin4 input(讀入)模式 configurePin(rpi, 4, 'DigitalInupt');% 4.讀取引腳數據 - pin4 readDigitalPin(rpi, 4);% 5.設置引腳模式 - pin7 output(寫)模式 configurePin(rpi, 7, 'DigitalOutput');% 6.寫引腳數據 - pin7 out 1 writeDigitalPin(rpi, 7, 1);end2.4 通過matlab命令執行linux終端指令
這里列舉幾個常用的指令(文檔里也有,建議有事沒事查文檔,畢竟別人大公司弄出來成體系的東西還是比這種博客要具體全面得多,可惜matlab文檔的漢化工作還很不到位)
1.system函數
2.openShell函數
system函數只能進行查看(讀),不能做創建用,如果要對樹莓派文件進行修改啥的,用openShell
這將打開一個遠程連接ssh窗口(和XShell的窗口差不多,建議還是用XShell對樹莓派的文件進行編寫修改)
3.getFile
該函數將樹莓派里的指定文件拷貝到Matlab當前工作目錄下
4.putFile
將PC機上的文件拷貝到樹莓派上
5.deleteFile
將樹莓派上指定文件刪除
3. Simulink-樹莓派demo
對應另一個文檔的內容
設置simulink參數:
step1. 設置目標板
注意一下:matlab2020b的simulink界面和之前版本有很大不同,但大致功能是一樣的,如果是之前版本,Model Settings的位置和這里不一樣。
step2:修改code generator(可以不做,建議設置)
同樣在Model Settings下>>Code Generation>>Report把上圖中兩個選項選上,生成代碼后會有詳細報告。
3.1 用simulink做樹莓派燈閃爍demo
完成以上設置后,搭建模型,具體請參考這個Example
搭好模型后,可以run一下看看,這里其實已經可以在樹莓派上看到效果了,但是由于仿真時間和現實時間可能不同步,觀察到的閃爍頻率和預期的不一致,但功能是有的。
run一下主要是看模型會不會報錯。
下一步:部署到樹莓派上
這一步做的事情和2.2里做的是一樣的,只是用了simulink自動完成,并且可以看到編譯過程
如果勾選了上面step2的生成報告,此時還會彈出生成的C代碼:
同樣地,可執行文件部署樹莓派上和2.2中相同的文件位置
使用m命令控制腳本的啟動,停止
3.2 simulink做樹莓派串口通信
這里主要說明一下樹莓派的串口設置問題(每次用新的樹莓派都會遇到這個坑,記錄一下給自己長點記性)
參考:樹莓派3B/3B+的串口使用
step1: 開啟樹莓派串口功能
matlab提供的樹莓派默認開啟了串口功能,這一步可以不做(保險起見,確認一下比較好)
選5.Interfacing Options >> 6.Serial >> No >> Yes
意思是禁止串口作為ssh登錄口,而作為串口功能使用。
tip: 還有一種方式是直接修改某個boot文件,其實是一樣的,上述操作的本質也是修改這個啟動文件,上述操作做完后,可能要求重啟(如果前后沒有改變的話就不會要你重啟),總之重啟就行。
step2: 改變串口映射功能
樹莓派里面有兩個串口,一個/dev/Serial0,一個/dev/ttyAMA0,默認使用第一個串口,通過shell命令,查詢串口映射關系
可以看到映射關系(這里是設置好以后的,初始狀態下,這里的serial0應該指ttyS0,serial1-ttyAMA0),應該把映射關系設置成下圖所示
我們要調換映射關系,因為ttyAMA0的傳輸效率更高一些,默認給藍牙用的,這里禁用藍牙,設置為串口。
在文件最后添加一句
dtoverlay=pi3-miniuart-bt
保存文件后,再上面的命令查看映射關系應該就是step2里的樣子,ok
step3: simulink串口通信
目前只做到能傳數據,但是解析數據還在進一步學習
所需硬件:
串口接線稍微提一下帶過了,PC端我的電腦是Ubuntu系統下的cutecom,如果是win10的話可以在應用商店搜索"串口調試助手",win10自帶的比網上下的小工具個人認為要高級一些。
% 查詢樹莓派3B+的針腳功能 rpi = raspi(); showPins(rpi);| TX- | -RX |
| RX- | -TX |
| GND- | -GND |
| 3.3V | -3.3V(可以不接) |
simulink模型
模塊在simulink的Library Browser - simulink raspberry Package里。
搭好之后,run如果沒有報錯,此時在PC端的串口調試助手上可以收到東西了,用串口調試助手發數據simulink上的display模塊也能顯示。
至此,實現了simulink和樹莓派的串口通信功能。
4.總結
本篇主要講了
之后會看看怎么利用串口的數據。
總結
以上是生活随笔為你收集整理的MBD(一)-下载包-getstart-raspberry串口设置问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 学校计算机房电脑桌,学校机房用双机位电脑
- 下一篇: Unity Gamma Linear