Elfboard是一款基于ARM架构的开发板,设计用于嵌入式系统开发和学习。它提供了丰富的硬件接口和易于使用的开发环境,使得用户可以快速上手并进行各种项目开发。

开发板正面图:

本次完成项目为:基于IMX6ULL的智能家居

首先介绍一下硬件资源:ESP8266wifi模块,DHT11温湿度采集模块,继电器,sg90舵机,SR501红外探测模块。

知识点:文件IO,网络编程,并发,内核移植,设备树修改,platform总线,UART子系统,pwm子系统,字符设备驱动编写。

其中文件IO涉及点在于:字符设备驱动编写的file_operation结构体成员函数中对r.ead,.write函数的实例化。

网编:在ESP8266WiFi模块时,需要设置AP模式,并设置协议为TCP协议,然后制定IP地址和端口号(网络地址).

并发:在项目中,使用了线程,创建一个线程去查看当前/dev/ttymxc1中是否有数据读取。如果读取到了‘\r’或者‘\n’,则表示数据发送完毕可读取。

内核移植和设备树移植都是在使用tftp下载,在uboot中设置环境变量,在80800000中写入内核镜像文件(zImage)在8300000中写入设备树镜像文件(imx6ull-elf1-emmc.dtb);

其中设备树修改尤为重要,因为需要将相应的IO口复用成gpio功能

设备树修改:首先在‘/’目录下添加结点名如:gpio3_24

结点里面的:gpios中制定相应的gpio和电位

interrupt-parent 标识此设备节点属于哪一个中断控制器,如果没有设置这个属性,会自动依附父节点的;

interrupts 一个中断标识符列表,表示每一个中断输出信号,引用中断号及中断触发类型;

如:上述中使用了gpio1 30端口复用为gpio,那么要将之前复用为IIC2_SCL的功能给注释。

随后在虚拟机上 make dtbs 生成imx6ull-elf1-emmc.dtb镜像文件

esp2866的at指令如图

 使用的是串口通信,在基础上,我们需要向WiFi模块发送AT指令集,

AT:测试指令

AT+CWMODE=3 ,将WiFi模块设置为AP模式(即产生一个热点)

AT+RST:模块重新启动

AT+CWSAP****:设置热点名称和密码

AT+CIPMUX=1 使能多连接

AT+CIPSERVER=1,8888 建立TCP服务器,并设置端口号

上位机按键图

在线程函数

在线程函数中,如果接收到了'\r'或者'\n',代表数据全部发送完毕,并解析相应指令。

DHT11:在相应的驱动模块中实例化read函数,并将从传感器中获取的数据,上报给用户程序.

使用gpio5-06作为dht11信号线,设备树修改在上文

用户程序确认数据无误用户程序确认数据无误后,通过/dev/ttymxc1发送到上位机上.

继电器:使用字符设备驱动框架编写,使用了gpio子系统(这里显示led.是因为根据led驱动编写而来)

首先通过of_find_node_by_name函数获取设备树结点,随后of_get_named_gpio获取结点编号

(想看gpio3_24,设备树如何修改的上文有),然后先释放这个gpio(原因在于不知道这个gpio是否被其他驱动程序所占用,如果占用就要先释放一次,在进行接下来的操作),然后gpio_request申请这个gpio并通过gpio_direction_output设置为输出模式。

write实例化,向驱动设备文件中写入1则将gpio设置为高电平,设置为0就设置为低电平。

sg90舵机:使用pwm子系统和platform总线

设备树内容:

这里我将compatible属性设置为sg90,驱动程序如下所示

当使用insmod加载驱动程序时,当驱动中.compatible与设备树中一致,就会执行.prob函数,

SR501:使用中断和异步通知

使用gpio1-30作为信号线

这是驱动程序中的中断函数;

这是异步通知程序函数。

连接图片一份,大家可以好好参照一下

led驱动和继电器驱动大致一样,奉上视频一份

2月13日 (1)

 应用调用驱动过程:

首先打开相应的设备文件

main函数中:

 

 线程函数:

 执行函数:

 总体实现逻辑:在main函数中可以进行while循环,并接收终端上面的信息发送到串口上面,然后在线程函数中执行接收任务(‘\n’,'\r'代表结尾),将接收到的任务命令传给执行函数,(这里实现fork创建进行一样可以实现),执行函数识别相应的命令来进行相应的驱动操作.

总的来说,我对Elfboard开发板的体验非常满意。它具有强大的硬件和软件功能,适用于各种嵌入式系统开发和项目实践。无论是初学者还是专业开发者,都可以通过Elfboard实现自己的创意和想法。我期待在未来的项目中继续使用Elfboard,并推荐给其他对嵌入式系统开发感兴趣的人。

精彩链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: