目录
资料下载地址:基于STM32F103C8T6+ESP8266温室大棚远程监控系统
一、项目功能
1、检测环境温湿度并显示;
2、检测土壤湿度并显示;
3、检测环境光照强度并显示;
4、检测环境中CO2并显示;
5、通过ESP8266将数据上传云平台和手机app;
6、超限蜂鸣器报警和电机系统工作;
二、原理图
三、实物图
四、ATK-ESP8266WiFi模块固件烧录
使用的是正点原子的ESP8266模块
固件烧录
alientek_esp8266_32MC1_v2.4.bin 0x0000
esp_init_data_default_v08.bin 0x3fc000
文件校验
五、原子云设置
首先我们进入原子云 原子云-用户登录 ,没有账号的需要先注册一个账号。
注册好之后就进入了以下页面,我们首先点击设备管理注册一个设备。
点击新增设备选择ESP8266
设备名称随便输入,密码设置12345678,否则无法连接上!!!
创建好设备之后就像下面一样,记住这个编号,后面会用到。可以看到现在状态是断开的。
创建好设备之后,我们需要再创建一个分组。
我们点击分组管理,选择创建分组,分组名称自己填写
然后我们还需要将我们创建好的设备添加进分组,刚创建好的分组,设备数量是0个,当我们把设备添加进分组之后,设备数量会变成1,如下图:
最后,我们点击账号信息,记住这个API,这是我们登录原子云demo的”账号密码“
至此,云端的设置就大功告成了!
六、手机APP设置
注意:手机需要开热点!!!!
热点名称:“1234”
热点密码:“12345678”
登陆APP时填写上面提到的API账号信息
点击分组名称进入下一界面
点击设备名称进入下一界面,由于实物没上电,此时设备状态显示断开。
进入数据显示界面,点击订阅设备消息获取数据
七、程序
部分程序
void ESP8266_Station_Mode_yuanziyun_Test ( void )
{
char i = 0;
uint8_t value1 = 0, value2 = 0;
uint8_t ucStatus;
char cStr [ 100 ] = { 0 };
uint8_t ucId;
char cStr1 [ 100 ] = { 0 };
char * pCh;
printf ( "\r\n正在配置 ESP8266 ......\r\n" );
//macESP8266_CH_ENABLE(); //使能ESP8266 使用的模块默认被使能 所以词句代码不起作用 可以删除
//1、向模块发送测试指令 AT
ESP8266_AT_Test ();
//2、设置模块模式为STA模式 AT+CWMODE=1
ESP8266_Net_Mode_Choose ( STA );
//3、设置要连接路由器的 ID 和密码
while ( ! ESP8266_JoinAP ( macUser_ESP8266_ApSsid, macUser_ESP8266_ApPwd ) )
{
Get_DHT11_Dat();
Get_Soil_Light_CO2_Dat();
}
//4、连接原子云 发送设备编号和密码
while ( ! ESP8266_ConnectYuanziyun ( yuanziyun_DeviceID, yuanziyun_DevicePassWord ) )
{
Get_DHT11_Dat();
Get_Soil_Light_CO2_Dat();
}
printf ( "\r\n配置 ESP8266 完毕\r\n" );
while ( 1 )
{
Get_DHT11_Dat();
Get_Soil_Light_CO2_Dat();
alarm();
// sprintf ( cStr, "\r\10 20 30 40 50 \r\n");
// printf ( "%s", cStr ); //打印数据
ESP8266_SendString ( ENABLE, strtemp, 0, Single_ID_0 ); //通过透传模式 发送信息到原子云
ESP8266_SendString ( ENABLE, "\r\n", 0, Single_ID_0 );
ESP8266_SendString ( ENABLE, strhumi, 0, Single_ID_0 );
ESP8266_SendString ( ENABLE, "\r\n", 0, Single_ID_0 );
ESP8266_SendString ( ENABLE, adcxstr, 0, Single_ID_0 );
ESP8266_SendString ( ENABLE, "\r\n", 0, Single_ID_0 );
ESP8266_SendString ( ENABLE, soilstr, 0, Single_ID_0 );
ESP8266_SendString ( ENABLE, "\r\n", 0, Single_ID_0 );
ESP8266_SendString ( ENABLE, co2str, 0, Single_ID_0 );
ESP8266_SendString ( ENABLE, "\r\n", 0, Single_ID_0 );
Delay_ms ( 100 );
}
}