ARDUINO时钟项目-2
当前进展:
本地温度、湿度、亮度指示
NTP自动对时、时钟显示
网络历史数据存储
框图及连线:
通过ESP8266 wifi连接网络,自动进行NTP对时及传感器数据上报。
arduino与ESP8266通过串口相连,注意ESP8266的供电电源为3.3V,需要5V到3.3V的电源转换,并且ESP8266-01需将CH_PD脚接VCC。
GPIO16管脚也是复位(reset)管脚。
ESP8266工作在AT模式,arduino通过AT命令控制ESP8266,包括wifi配置、NTP UDP数据收发、HTTP传感器数据上报等。
说明:
ESP8266工作在模式3状态(AP+STA),作为AP可以接收近端用户配置,作为STA连接家里的路由器,接入网络。
ESP8266的IP报文传输分透传和非透传两种,非透传模式下无法发送回车、换行符,因此在发送http数据时需将IP发送模式设置为透传(AT+CIPMODE=1),透传模式退出发送需输入“+++”字符串。
NTP为UDP报文,发送48字节请求报文,然后对接收的48字节进行分析,提取时间数据。
传感器数据采用http get的方式上传至网站,在网站上用PHP对get数据进行提取,并写入mysql数据库:
PHP文件:
<?php
@$wen=$_GET['wen'];
@$shi=$_GET['shi'];
@$guang=$_GET['guang'];
@$pm25=$_GET['pm25'];
@$other=$_GET['other'];
if($wen)
{
$conn=mysql_connect("localhost", "root", "XXXX");
mysql_query("set names 'utf8' ");
mysql_query("set character_set_client=utf8");
mysql_query("set character_set_results=utf8");
$insert="INSERT INTO `idata`.`data` (`wen`, `shi`, `guang`, `pm25`, `other`) VALUES ( '".$wen."', '".$shi."', '".$guang."', '".$pm25."', '".$other."')";
if(mysql_db_query("idata",$insert, $conn))
echo "OK";
else
echo "err";
}
?>
数据库密码为XXXX,数据库名为idata,表名为data,字段结构
插入记录时自动记录系统时间。
arduino源码:
发表评论