OrangePi 驱动开发基础教程

基于WiringOP的OrangePi 4 LTS驱动开发基础教程

准备工作

  1. 实验材料:OrangePi 开发板、sd卡。

sd卡烧录Orangepi4-lts_3.0.6_ubuntu_jammy_desktop_xfce_linux5.18.5或Orangepi4-lts_3.0.6_ubuntu_focal_desktop_xfce_linux5.10.43版镜像(注意是带桌面的desktop版,否则无法方便地复制粘贴指令(除非通过串口连接PC)。下面均默认为带桌面版)

  1. 启动系统后,先配置连接网络。

    • 带桌面版:在右上角配置连接即可。
    • 无桌面版(此教程不使用):使用指令nmcli配置网络,nmcli dev wifi查看当前WiFi,使用下述指令连接:
      sudo nmcli dev wifi connect <wifiname> password <********> wep-key-type key ifname wlan0
  2. 更新软件:左上角Applications - System - Software Updater。

  3. 安装Firefox:sudo apt install firefox,设置默认搜索引擎为Bing,语言为简体中文。

  4. 设置语言:Applications - Settings - Language Support,下载更新后,将汉语(中国)一项拖到顶部,输入法Keyboard input method system选择fcitx。重启后,语言即变为中文,Shift键切换中文输入法。

注意重启后提示“将标准文件夹更新到当前语言吗?”,不建议更新,因为终端不方便输入汉字,而且会有兼容的问题。

  1. 获取用户手册,便于查看。

实验流程

安装WiringOP

按照OrangePi用户手册安装WiringOP。

安装好之后,gpio readall应当显示26个引脚信息。如果显示了40个引脚,则可能是因为系统版本不是OrangePi 4 LTS。

此时已经可以通过指令直接控制引脚模式和值了,如用户手册所示。下面将介绍通过C代码实现功能的方法。

准备实验路径

新建文件夹(名称举例:45sensors),存放代码文件。

mkdir 45sensors

将WiringPi.h放入文件夹中,便于后续的.c文件包含。

编写.c程序

新建.c文件(举例:touch helloworld.c),编写程序。

#include <wiringPi.h>         //每个.c均需包含此头文件
int main (void)
{
  wiringPiSetup () ;          //编写前初始化
  pinMode (8, OUTPUT) ;       //设置wPi号为8的GPIO引脚为输出模式
  digitalWrite (8, HIGH) ;    //设置对应引脚值为1
  return 0 ;
}

注意:pinMode、digitalWrite等函数的参数均为wPi引脚号,不是Physical引脚号。通过gpio readall可看到区别。接线时需要按照Physical引脚号分辨引脚,仔细接线。
img

编译程序

gcc -o helloworld helloworld.c -lwiringPi

如果执行不成功,请检查是否已将wiringPi.h文件放入文件夹内。

执行程序

在执行程序之前,通过gpio readall看到,wPi号为8的GPIO引脚模式(Mode)为IN,值(V)为0。

运行程序:

sudo ./helloworld

再次通过gpio readall查看,引脚模式变为OUT,值变为1。

后续计划

  1. 选择感兴趣的传感器,编写c程序进行实验。尝试改变参数,观察现象。
    • 建议规范化命名,对应.c文件按照传感器命名(如KY-002-Vibration.c),可执行文件与.c文件同名。
  2. 通过串口使OrangePi和PC之间通信,在PC端编写.c程序,传入OrangePi中进行编译测试。
  3. 每次编译运行都需要执行gcc -o 输出文件名 .c文件名 -lwiringPisudo ./输出文件名。考虑能否编写一个Linux脚本(.sh文件),输入文件名后自动编译、执行?(比如编写了c.sh文件,只需执行./c.sh hello,即可自动将hello.c编译为hello,并自动执行。)
  4. 参考文章结尾的链接以及wiringOP文件夹内examples中的例程,学习并尝试更复杂的函数。

如果有感兴趣的外设,与我联系,实验室将考虑采购。

参考链接

  1. WiringPi官网
    http://www.wiringpi.com/
    给出了WiringPi的函数库,可供编写程序时参考。

  2. 45 in 1 传感器资料
    http://arduino-sensor.org/arduino-45-in-1/
    给出了45种传感器介绍、使用方法、接线和例程。

posted @ 2023-12-09 16:49  Digitzh  阅读(668)  评论(0)    收藏  举报