经过3个月的不断摸索,终于把91arm学堂阶段二的项目实践内容基本上做了出来(视频教程中的代码并不全),在此把相关心得和代码保存下来,供自己和学友们参考
系统硬件:
主控模块:nanopi s2(cortex-a9 四核s5p4418)、5v转3.3v模块、光感、声感、5v继电器、面包板及led灯、串口转usb调试接口等
无线网络模块:tiny6410(arm11 三星s3c6410)、红外传感、继电器、面包板及led灯
先看整体效果,主控程序的为znkg2018,网络端程序为net_light
主控及网络端程序如下:
web浏览器界面如下:
该项目的主要思路:
(1)主控程序znkg2018(交叉编译移植到nanopi s2上)包含四个线程:
线程一:(用于进程间通信)循环查看共享内存、消息队列数据,根据消息队列的消息类型将实时将共享内存数据更新到主数据结构内存,或者将主数据结构内存更新至共享内存;
线程二:(用于检测设备上下线)循环读取5v转3.3v模块连接的开发板gpio口数据,高电平则代表相应的感应设备连接上了系统,可以读取该设备数据线连接的gpio口电平状态了(5v转3.3v模块、感应设备的电源线二合一连接在一起,实现同时插拔,从而通过该线程检测相应感应设备的插拔);
线程三:(用于侦听网络设备的连接)该线程为网络服务端,首先建立tcp数据流(socket~bind~listen~accetp)循环侦听网络客户端的连接请求,收到情求后自己再开辟新的线程用于同该客户端通信,根据客户端数据更新主数据结构中的网络设备状态,根据主数据结构中的网络设备状态向网络设备发送相应的命令。网络通信是基于协议的,便于命令分类和传输校验。
线程四:(用于灯光设备开关控制)本项目共三个小灯,分别为主控端的两个、网络端的一个,开关均由继电器控制,模拟了220v的客厅、书房灯及办公室(远端)的大灯。循环查询主数据结构中的灯光设备的开关状态,向对应的继电器发送写数据命令从而控制灯光开关。若感应设备绑定了灯光设备,则读取感应设备gpio口数据,并将该数据写入继电器gpio口中。网络设备则只更新网络命令状态值,由进程三发送出去,再由网络端程序处理并控制其继电器gpio,从而控制相应的灯光开关。
(2)网络客户端程序net_light(交叉编译移植到tiny 6410上)就一个主程序:
该程序通过ip和端口号连接nanopi上的主控程序的网络线程,根据主控程序传来的网络命令更新相应的设备状态。
(3)nanopi上的boa服务器运行的cgi程序:
在nanopi上安装了boa服务器后,就可以通过浏览器来访问nanopi中的cgi程序了,在boa的www文件夹中放上index.html文件,其为欢迎界面,其中的选项分别连接了不同的cgi程序,这些程序都打开了主控程序管理的共享内存和消息队列,通过修改表单并提取表单中的数据,更新共享内存数据,并通过消息队列通知主控设备更新共享内存或将共享内存中的数据更新到主数据结构内存。主数据结构内存修改后,则主控设备的四个线程会做出相应的动作的。
编辑器采用推荐的source insight,可以自动推导出变量、函数的声明及相互间的引用,方便编写及分析程序(但我采用的软件其编码格式为ascill,不是utf-8,在编译时为乱码,用notepad++转换编码格式就ok了)
变电站AR增强现实巡检系统
国内外巨头纷纷参与,博通集成WiFi 6之路怎么突围
带温度补偿的隔离式pH监测仪
北京区块链技术开发公司,北京开发交易所费用,期货合约
什么耳机在500元以内音质最好?四款音质很好的蓝牙耳机
浅析基于ARM的智能灯光控制系统
北高智携手电源转换器专家SynQor全力进军工业市场
qled量子点概念解析
研究石墨烯气凝胶基双层相变复合材料用于自适应个人热管理
MetalMesh触控技术成为市场黑马
22nm 3D三栅极晶体管技术详解
光伏逆变器分类及主要技术指标
苹果Apple Watch销量猛增,已经成为全球最大的手表制造商
发力新兴小赛道,快来了解维安便携式储能全套方案
GoProHERO7Black评测 用第一人称描述运动底蕴
苹果谋局地图幕后:意从另一维度切入搜索?
房地产大变天:王健林万达集团告别房地产!马云入局成导火线?
Intel的独显GPU黄金时代即将来临
低损耗光纤连接器详解
什么是直流无刷电机倒相序,这个说法是怎么来的