3_树莓派机载计算机的硬件资源样例教程——无名创新
樹莓派機載計算機的硬件資源使用樣例教程
樣例程序所在目錄、Visual Studio Code程序導入與程序運行
執行樹莓派硬件資源使用demo的前提是,用戶已經使用NoMachine或者VNC Viewer遠程登陸系統桌面,也可以直接通過樹莓派4B上的Micro HDMI接口擴展連接顯示屏,可以根據實際顯示屏接口自行購買Micro HDMI轉HDMI/VGA轉換線。當局域網網絡不穩定時,有線連接的方式會極大的提升開發效率,同時此方式也需要配備一組無線鍵盤、鼠標用于操作ubuntu系統。
進入系統桌面后,鼠標右鍵cindy的主文件夾,其中用戶只有操作的文件放在rpi_python_opencv、catkin_ws、autostart三個文件夾下,
其中rpi_python_opencv用于存放樹莓派硬件資源使用的樣例程序、基于Python開發的OPENCV機器視覺基礎與進階樣例
打開ubuntu桌面的visual studio code軟件,點擊左上角文件,選中rpi_python_opencv文件下后,點擊確定后導入所有文件。
visual studio code會進入以下界面,用戶直接在VS code軟件中,編寫python程序,對于已安裝的第三方庫會自動補全相關變量或函數。
1、GPIO口驅動RGB燈
在VS code下方命令窗口中(也可以CTRL+ALT+T在用cd命令進入該目錄下),依次輸入如下命令既可以觀察gpio控制板載RGB的效果,其中RGB燈為共陰方式,高電平亮低電平滅。
cindy@cindy-desktop:~/rpi_python_opencv$ ls -l 總用量 44 drwxrwxr-x 2 cindy cindy 4096 1月 9 02:39 1樹莓派資源樣例 drwxrwxr-x 4 cindy cindy 4096 1月 13 18:31 2機器視覺基礎例程 drwxrwxr-x 4 cindy cindy 4096 1月 15 04:31 3機器視覺進階例程 -rw-rw-r-- 1 cindy cindy 15080 2月 11 21:33 main.py -rw-rw-r-- 1 cindy cindy 14531 1月 8 22:53 main.pybackup cindy@cindy-desktop:~/rpi_python_opencv$ cd 1樹莓派資源樣例/ cindy@cindy-desktop:~/rpi_python_opencv/1樹莓派資源樣例$ ls -l 總用量 56 -rw-rw-r-- 1 cindy cindy 1250 2月 24 21:21 1_gpio_rgb.py -rw-rw-r-- 1 cindy cindy 2081 1月 8 17:43 2_hardwave_pwm.py -rw-rw-r-- 1 cindy cindy 951 1月 8 17:10 3_uart_send.py -rw-rw-r-- 1 cindy cindy 945 1月 8 18:01 4_uart_receive_and_send.py -rw-rw-r-- 1 cindy cindy 2480 1月 9 02:04 5_i2c_mpu6050.py -rw-rw-r-- 1 cindy cindy 839 1月 9 02:28 6_i2c_oled_1306_image.py -rw-rw-r-- 1 cindy cindy 2342 1月 9 14:24 7_i2c_oled_1306_draw.py -rw-r--r-- 1 cindy cindy 24629 1月 9 05:25 happycat_oled_64.ppm最后運行1_gpio_rgb.py,程序運行的效果是RGB燈三色依次閃爍,并屏幕打印提示端口和運行狀態。
python3 1_gpio_rgb.py
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-xk98cOF3-1645889851215)(/image-20220224213340462.png)]
執行CTAL+C終止程序運行
2、硬件PWM的使用
預留出來的可用PWM口有四路,四個PWM口是GPIO12、GPIO13、GPIO18、GPIO19依次對應PWM0、PWM1、PWM2、PWM3,其中PWM0、PWM1兩路PWM口與串口4的TXD、RXD復用,當初始化GPIO18、GPIO19為PWM口后,再需要將GPIO18、GPIO19用作串口時,必須重新啟動樹莓派系統。程序中通過pwm0_1_enable變量來控制PWM0、PWM1是否使用。
運行2_hardwave_pwm.py,程序運行的效果是輸出頻率為1000hz的PWM波,占空比從0100%,然后從100%0,用戶可以將PWM口接示波器、外接RGB燈或者萬用表測平均電壓的方式來觀察PWM輸出效果。
python3 2_hardwave_pwm.py
3、串口發送
擴展板引出了全部用戶可用的5組串口,5組串口已經在樹莓派系統啟動配置文件中使能開啟,用戶可以直接使用,避免了傳統ubuntu系統通過外接usb轉ttl模塊擴展串口資源的方式,降低了接線復查程度。用戶可以在命令窗口中執行ls -l /dev/ttyAMA*命令來查看可用的串口設備。
同時用戶可以執行cutecom調用cutecom串口調試工具對串口進行相關操作
在提供的示例中,默認操作的是UART4,用戶也可以調整串口參數,更改成其它串口或者波特率等。
運行3_uart_send.py,程序運行的效果是輸出串口打印“Hello,World”,用戶可以外接usb轉ttl模塊,通過串口調試助手觀察發送的數據。
python3 3_uart_send.py
4、串口接收并發送
本例程利用串口inWaiting()函數查詢串口緩沖區數據長度,利用read()方法讀取緩沖區數據,最后將接收到的數據通過write()方法發送出來,實現接收數據并轉發回顯的效果。
python3 4_uart_receive_and_send.py
5、I2C讀取MPU6050數據
本例程利用I2C1口,掛載MPU6050設備,通過SMBus第三方庫讀取MPU6050數據,ubuntu系統啟動文件中,已經對I2C硬件資源配置進行了使能,用戶可以像單片機I2C編程一樣直接使用I2C資源。同時當采用C/C++編程時可以采用wiringpi庫對I2C資源進行編程。
樹莓派系統查看I2C外設可以利用i2c-tools工具包執行如下指令實現。
sudo i2cdetect -y 1
可以看到I2C外設中存在地址未0x0e、0x68、0x76三組I2C設備,查詢數據手冊可知0x68即為MPU6050的地址,另外兩組為IST8310磁力計、SPL06氣壓計的地址。查詢I2C外設寄存器數據可以通過命令行:sudo i2cdump -y 1 0x68
寄存器寫操作可以通過執行命令
sudo i2cset -y 1 0x68 0x6B 0x00 sudo i2cset -y 1 0x68 0x19 0x00 sudo i2cset -y 1 0x68 0x1A 0x02 sudo i2cset -y 1 0x68 0x1B 0x08 sudo i2cset -y 1 0x68 0x1C 0x10 最后執行 sudo i2cdump -y 1 0x68 對比前后對應寄存器地址數據是否變化同時用戶可以查看單個寄存器地址中的數據,例如讀取傳感器ID信息who am i寄存器信息,執行命令如下:
sudo i2cget -y 1 0x68 0x75
以上操作是利用i2c_tools工具包對I2C外設進行操作,提供的demo是讀取MPU6050溫度、加速度、陀螺儀數據,并通過串口打印顯示出來,執行本例程需要確保I2C端口存在MPU6050外設,否則回導致I2C設備硬件讀取出錯。執行程序命令如下:
python3 5_i2c_mpu6050.py
6、I2C掛載SSD1306顯示屏顯示圖像
本例程利用I2C1口,掛載SSD1306顯示屏,利用Adafruit_SSD1306庫函數實現圖形顯示,執行命令如下:
python3 6_i2c_oled_1306_image.py
7、I2C掛載SSD1306顯示屏顯示字符
本例程利用I2C1口,掛載SSD1306顯示屏,首先利用PIL庫生成ImageDraw方法,運用此方法在自定義圖像中添加字符、數字等內容,最后用Adafruit_SSD1306圖形顯示函數刷新顯示出來。本例程調用了python3中subprocess 模塊,查看系統IP、運存、內存等信息,這部分內容初學者不需要了解。本例程執行命令如下:
python3 7_i2c_oled_1306_draw.py
方法,運用此方法在自定義圖像中添加字符、數字等內容,最后用Adafruit_SSD1306圖形顯示函數刷新顯示出來。本例程調用了python3中subprocess 模塊,查看系統IP、運存、內存等信息,這部分內容初學者不需要了解。本例程執行命令如下:
python3 7_i2c_oled_1306_draw.py
總結
以上是生活随笔為你收集整理的3_树莓派机载计算机的硬件资源样例教程——无名创新的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux控制cache使用值e,[轉]
- 下一篇: Tomcat集群及Session共享