手把手教你制作智能家居系统(Arduino)其五

您所在的位置:网站首页 教我几个代码 手把手教你制作智能家居系统(Arduino)其五

手把手教你制作智能家居系统(Arduino)其五

2024-07-17 19:49| 来源: 网络整理| 查看: 265

鸽了好久hhh,

首先我们要下载代码编辑器,对于Arduino有一个专门的编辑工具就是 Arduino IDE ,这个软件可以在百度搜索官网下载,也可以直接在Windows app Store里面直接搜索下载,就是开始菜单里那个万年吃灰的windows自带商店。

下载好之后我们首先要配置一下运行环境。

打开Arduino IDE,选择工具,选择管理库,稍等它加载完成,

搜索DHT11,安装下面的DHT sensor library。

搜索servo,默认安装最新版就可以。

下载完成之后,在第二章的时候我们配置好了机智云平台而且下载了自动生成的代码,解压缩从机智云下载下来的代码文件,将其中的Gizwits文件夹整个复制,粘贴进   

文档\Arduino\libraries

文件夹下,安装完之前的两个库之后可以看到在这个文件夹下有也有跟库同名的文件夹。、

完成后就可以进行代码的编写了。

打开解压出来的文件夹下的Gizwits\examples文件夹,里面有两个文件夹,一个是wifi配置,另一个就是运行代码了。

首先我对两个代码文件先详细的描述一下具体实现的功能:

首先的首先先声明一下,自动生成的代码是基于机智云平台的示例项目——微信宠物屋,因此对于自动生成的配网功能可以说是直接沿用了它的代码,所以在我们正式使用的时候可以进行删减。

一、在networkConfig.ino文件中,

1.首先定义了头文件,这就没啥可多少的,都是需要使用到的,可以无视。

2.下面是几个宏定义,懂英语的同学可以清楚的看到,有两个按键宏定义,有6个按键功能宏定义,这些在后面会用到。当然我们可以只使用一个按键,在这里先提前说一下实现的功能:a.1键短按——产品测试模式(我们用不到可以删除)

b.1键长按——wifi重置 (我们也用不到,可以删除)

c.2键短按——AP模式,就是热点配网模式(我们用的01s模块也用不到,可以删掉)

d.2键长按—— Airlink模式,可以使用软件进行配网(就是用这个进入配网模式)

总结来说,我们只需要2键长按模式,也就是只有2键有用,所以在对代码进行合并的时候可以直接把1键代码删掉,同时物理硬件上也可以只装一个key。

宏定义中最后定义了一个KEY_LONG_TIMER=3也就是3秒判定为长按

宏定义

3.再下面就是按键功能实现的代码了,首先定义了一个Last_Key_Time,用于记录按下时间;下面定义了一个gokit_time_s()函数,用于将按下时间转换为秒;然后就是各种函数,看英文名字也能买明白,按键1按下;按键2按下;按键按下判断(判断哪个按键被按下了);KEY_Handle()在按键按下之后都返回了一个值,在这里使用switch进行按下后实现的操作,调用了机智云自带的函数,可以分别进入第2段描述的功能的模式。下方还有一个wifiStatusHandle()函数,就是相当于一个Log,输出当前的wifi模式状态,这段没用,移植时可以删除。

key1downkey2down哪个按键按下了按键处理

4.1 然后就是Arduino的基础函数了,loop()和setup(),不知道读者对Arduino是不是有了解,setup()函数就是在单片机上电的一瞬间运行的函数,里面放的就是模块的初始化代码,比如我想上电就打开一个灯 digitalWrite(LED,high); 就可以在上电的时候就让灯亮。还有一些端口的初始化,设置12端口为数据输出,13端口为数据输入模式,pinMode(12,OUTPUT); pinMode(13,INPUT); 

目前里面有端口速率mySerial.begin(115200); key1、key2的端口模式,myGizwits.begin();机智云模块开始,和一个串口输出(没啥用)。至于为啥串口输出没用我一会在下面讲。

setup函数

4.2 loop()函数就是单片机无时不刻进行循环的函数,相当于while(1),因为机器语言的特点就是自上而下运行代码,运行完最后一行代码程序即终止,但是在单片机中我们不需要让程序终止,所以Arduino中自带的loop函数就实现这个功能,里面放入需要运行的代码或者封装好的函数即可,在此例子中放入了KEY_Handle()函数用于一直判断是否有按键按下,如果按下就执行相应的代码。wifiStatusHandle()函数,用于输出wifi状态。最后一个就是myGizwits.process();这是机智云的进程代码,所有wifi的模式进入,以及后面要说的数据上传、下发都是需要这个进程函数。

loop函数

二、在simpleTry文件中,(这就是主要的文件了),里面的代码没有多少,但是会发现有一部分被注释掉的代码,也可以看出来这就是我们在机智云平台中配置好的代码以及名称:

setup就不说了,主要是被注释掉的代码。

机智云平台已经自动为我们分好类,上面的是只读的项目:温湿度、雨滴、火焰等;下面为bool可以进行0、1开关的项目:灯、门、窗帘。

其实看起来代码很多,但是读起来是很简单的,每一部分的代码除了名字不一样之外实现都是一样的。

myGizwits.write(VALUE_Humidity, varW_Humidity); Write,就是写入,也就是上传,我们要把湿度的数据上传到机智云平台上,然后机智云平台会下发到我们的手机上进行显示,这个write函数使用方法就是myGizwits.write(变量名,数值);   

 myGizwits.read(EVENT_LED_Bedroom,&varR_LED_Bedroom); read就是读取,就是读取手机上传来的数据,使用方法就是myGizwits.read(变量名,变量值);

下面写一个例子吧:

1.读取温湿度并上传

//温湿度传感器获取数据

void DHT11_Read_Data(unsigned char * temperature, unsigned char * humidity)

{

  *temperature = (unsigned char)dht.readTemperature();

  *humidity = (unsigned char)dht.readHumidity();

  return;

}

//只读型数据点处理

void GizWits_GatherSensorData(void)

{

  uint8_t curTem, curHum; //为了减少空间占用,使用与int没啥差别的uint8_t数据类型

  DHT11_Read_Data(&curTem, &curHum);   ///



【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3