基于树莓派+STM32+OneNET云平台打造智能家居系统(⼆)系统架构及软件 设计篇
2系统软件设计
2.1 STM32控制程序设计
水性封口胶
水泥厂脱硝2.1.1程序流程图
2.1.2 系统初始化
void hardware_init(void)
{
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级
delay_init(); //延时函数初始化
uart_init(115200); //串⼝初始化为115200
Usart2_Init(115200); //串⼝2,驱动ESP8266⽤
while(DHT11_Init()) //DHT11初始化
{
printf( "DTH11 error!\r\n");
delay_ms(200);
}
relay_init();//继电器初始化
ESP8266_Init(); //初始化ESP8266
UsartPrintf(USART_DEBUG, " Hardware init OK\r\n");
}
STM32控制单元主要使⽤的是DTH11温湿度传感器、ESP8266模块以及继电器模块的,系统的初始化就是要完成对这些器件所使⽤的IO以及系统时钟等进⾏配置。
2.1.3 温湿度采集
下述程序是进⾏对温湿度传感器所测得的数据的读取。发型传感器的“DATA”引脚是⽤于于微处理器与 DHT11之间的通讯和同步,采⽤单总线数据格式,⼀次通讯时间4ms左右,数据分⼩数部分和整数部分,具体格式在下⾯说明,当前⼩数部分⽤于以后扩展,现读出为零.操作流程如下:⼀次完整的数据传输为40bit,⾼位先出。数据格式:8bit湿度整数数据+8bit湿度⼩数数据+8bi温度整数数据+8bit温度⼩数数据 +8bit校验和。
//从DHT11读取⼀次数据
//temp:温度值(范围:0~50°)
//humi:湿度值(范围:20%~90%)
//返回值:0,正常;1,读取失败
u8 DHT11_Read_Data(u8 *temp,u8 *humi)
{
u8 buf[5];
u8 i;
DHT11_Rst();
if(DHT11_Check()==0)
肘型电缆头{
for(i=0;i<5;i++)//读取40位数据
{
buf[i]=DHT11_Read_Byte();
}
if((buf[0]+buf[1]+buf[2]+buf[3])==buf[4])
{
*humi=buf[0];
*temp=buf[2];
}
}else return 1;
return 0;
}
2.1.4 继电器控制
继电器的控制是相对较简单的,仅需要对相关控制引脚进⾏初始化之后,对引脚输出⾼低电平进⾏对继电器的控制。 void relay_init(void)
{
GPIO_InitTypeDef
GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
}
void relay_on(void)
{
GPIO_SetBits(GPIOB,GPIO_Pin_9);
功夫面}
void relay_off(void)
{
GPIO_ResetBits(GPIOB,GPIO_Pin_9);
}
2.2 树莓派单元设计
2.2.1 Linux操作系统
该树莓派平台所运⾏的是Linux系统的⼀个名为“RASPBIAN”的发⾏版本。Raspbian是⼀个基于Debian的⾃由操作系统,硬件驱动程序亦根据树莓派的硬件⽽优化,软件包⽅⾯提供了超过35,0000个套件,当中这些软件亦针对树莓派进⾏了不同程度的优化,⽬的是为树莓派打造⼀个稳定和快速的系统平台。
Raspbian⽬前是树莓派官⽅适配的系统之⼀。
2.2.2 基本环境的搭建
搭建基于树莓派的基本开发环境,⾸先需要进⾏的是对树莓派进⾏相关系统镜像的烧录。烧写树莓派镜像⼀般是使⽤SD/TF卡其,基本步骤如下。
1)使⽤SD卡格式化⼯具(SD Formatter)将要进⾏烧录的SD/TF卡先进⾏格式化
2)将SD/TF卡格式化完成之后就可以进⾏树莓派系统镜像的烧录了。烧录树莓派的系统镜像使⽤烧录系统⼯具(Win32 Disk Imager),选择镜像⽂件所在的路径,之后点击write便可以进⾏系统的烧录。
系统烧录完毕之后重新上电进⼊系统,安装好基本的应⽤程序,如串⼝助⼿⼯具“minicom”,编辑器⼯具“nano”等。
加热搅拌2.2.3 ⽹卡的配置
树莓派虽然已经内置有有线⽹卡,但是其且并没有配置⽆线⽹卡,所以在树莓派使⽤该USB⽆线⽹卡进⾏数据的交互前,需要先对树莓派系统进⾏相关⽹卡的配置。树莓派的Raspbian已经⽀持USB⽆线⽹卡的使⽤,所以只需要进⾏先关配置⽂件的修改。
1)查看系统是否已经识别和加载了该USB⽆线⽹卡设备。
2)修改⽬录/etc/network/interfaces中的“interfaces”,⽂件。
3)修改/etc/wpa_supplicant/f⽂件,添加修改WiFi接⼊点名称SSID和WiFi接⼊密码。
2.2.4 mjpg-streamer的编译和安装
mipg-streamer是⼀款免费基于IP地址的视频流服务器,它的输⼊插件从摄像头读取视频数据,这个输⼊插件产⽣视频数据并将视频数据复制到内存中,它有多个输出插件将这些视频数据经过处理,其中最重要的输出插件是⽹站服务器插件,它将视频数据传送到⽤户浏览器或其他浏览设备中,mipg-streamer的⼯作就是将其中的⼀个输⼊插件和多个输出插件绑定在⼀起,所有的⼯作都是通过它的各个插件完成的。
安装该应⽤程序需要下载其源码进⾏编译,编译完成之后才能进⾏安装。安装后执⾏sudo mjpg_streamer -i “./input_uvc.so -r
640x480 -f 10 -n” -o "./output_http.so -p 8080 -w /usr/local/www"命令之后在命令窗⼝打印出以下字符:
即成功安装了mipg-streamer视频流服务器,在浏览器中输⼊本地的IP地址加上端⼝号“8080”,即可进⾏相关图⽚视频数据的查看。
z轴线性马达
2.2.5 相关脚本的制作
该树莓派监控单元是⽤于实时地进⾏视频监控,这就要求在该设备⽆故关机,或者是因停电等其他外部因素造成了树莓派主系统进⼊关机状态,待系统重启之后不需要再使⽤相关开发环境对其进⾏重新的启动相关监控和数据上传服务等的开启,如此⼀来就需要,在再次上电开机之后,系统能⾃启相关服务程序,为此需要编写相关的服务应⽤的开机⾃启脚本。
在linux操作系统中,要想达到开机⾃启服务应⽤程序或者是执⾏相关命令是⽅法有许多⽅式,本次所采取的的⽅法是在系统根⽬录下的/etc/init.d路径下建⽴应⽤启动脚本。编写的脚本如下图所⽰:
在建⽴了开机⾃启服务应⽤的脚本之后,还需要对其进⾏权限的添加。默认更改该⽂件的权限为“777”。
sudo chmod 777 /etc/init.d/webcam
在linux操作系统中,每⼀个⽂件和⽬录都有其访问权限,这些访问权限就决定了,谁能查看、读写该⽂件或者是⽬录。如“777
rwx|rwx|rwx”,前三个为属主名,即该⽂件或⽬录的创建者或是被指定的⽂件的所属者;中间三个是⽂件的所属组,在该分组内的⾮⽂件或⽬录的属主⽤户对给⽂件所拥有的权限;最后三位是属于other⽤户,该类型⽤户既不属于属主也不属于属组的⽤户。其中r表⽰读权限、w表⽰写权限、x表⽰执⾏权限。通过将该启动脚本⽂件的权限值为“777”,即所有⽤户都可以对该⽂件进⾏读写以及执⾏的操作。以此为了避免由于⽂件的权限问题所导致的系统的启动故障。
编写好改启动脚本之后,将该脚本⽂件添加到开机⾃启即可实现该应⽤的开机⾃启。