单片机采集温湿度数据通过wifi模块传给java写的后台并存入数据库 我会带着你远行 2021-09-04 06:04 920阅读 0赞 一直想把单片机和java结合起来,但是发现网上这方面的资源很少,所以我自己也是摸索了很久,下面是自己的一些体会 首先最基础的就是wifi模块的使用,如果不会的可以去看我的另一篇博客[esp8266上传温湿度数据到乐联网][esp8266] void esp8266Init(){ //检测wifi模块是否能回复指令 printf("1.AT\r\n"); while(atk_8266_send_cmd("AT","OK",20)){ } delay_ms(500); //关闭wifi自动连接 printf("2. CWAUTOCONN\r\n"); while(atk_8266_send_cmd("AT+CWAUTOCONN=0","OK",20)){ } delay_ms(500); //配置wifi模式 AT+CWMODE=1为sta模式 printf("3. CWMODE\r\n"); while(atk_8266_send_cmd("AT+CWMODE=1","OK",20)){ } delay_ms(500); printf("4. CWJAP\r\n"); //连接网络 while(atk_8266_send_cmd(ESP8266_WIFI_INFO,"OK",1000)){ } delay_ms(1000); //开启单连接模式,因为透传必须开启单连接模式 printf("5. CIPMUX\r\n"); while(atk_8266_send_cmd("AT+CIPMUX=0","OK",20)){ } delay_ms(500); //开启透传模式 printf("6. CIPMODE\r\n"); while(atk_8266_send_cmd("AT+CIPMODE=1","OK",20)){ } delay_ms(500); //建立TCP连接 printf("7. CIPSTART\r\n"); while(atk_8266_send_cmd(ESP8266_servlet_INFO,"OK",50)){ } delay_ms(500); //进入透传模式 printf("7. CIPSEND\r\n"); while(atk_8266_send_cmd("AT+CIPSEND","OK",20)){ } delay_ms(500); printf("ESP8266Init ok"); } 其中ESP8266_WIFI_INFO这个宏定义是你连接的wifi名字和密码 #define ESP8266_WIFI_INFO "AT+CWJAP=\"IOT205\",\"IOT205iot205.\"" ESP8266_servlet_INFO 这个宏定义,首先这个ip地址可以打开命令行窗口,输入ipconfig查看,后面那个端口是tomcat的默认端口号,因为我java用的servlet,所以用的8080 #define ESP8266_servlet_INFO"AT+CIPSTART=\"TCP\",\"192.168.1.111\",8080" 注意如果wifi想要成功连接,建立tcp连接一定要把服务器先跑起来也就是java程序要先跑起来 java的servlet代码 package com.blb; import com.blb.utils.DBUtils; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.BufferedReader; import java.io.IOException; import java.sql.SQLException; @WebServlet("/dyk") public class ser01 extends HttpServlet { @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { BufferedReader reader = new BufferedReader(req.getReader()); String data = reader.readLine(); String[] datas = data.split("&"); try { DBUtils.execute("insert into test1(temp,wet) values(?,?)",datas[0],datas[1]); } catch (SQLException throwables) { throwables.printStackTrace(); } } } 起初我也一直不清楚wifi模块发的http报文,java这边该如何接收,找了各种资料和函数都没找到,结果最后没有想到就一个这种简单的io流就可以 关于servlet和jdbc的一些基础知识我在这里就不描述过多了大家可以学一下,注意注解的前面的/别掉了,后面发http报文的url访问路径时还会用到的 接下来看一下单片机的发送http报文的函数 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0ODY2MTUz_size_16_color_FFFFFF_t_70_pic_center_pic_center] void temp_send2(u8 value1,u8 value2) { char p[20]=""; sprintf((char*)p,"%d&%d",value1,value2); u3_printf("POST /dachuang_war_exploded/dyk HTTP/1.1\r\n"); u3_printf("Host: 192.168.1.111:8080\r\n"); u3_printf("Content-Length: %d\r\n",strlen(p)); u3_printf("Connection: close\r\n"); u3_printf("\r\n"); atk_8266_send_data(p,"",20); } 这里我是通过发送一个&符号来区分开温度和湿度的,java那边取数据的时候可以调用split函数分隔出温度和湿度 请求的url路径一定要写完整,我用的idea前面的那个是他自带的/dachuang_war_exploded/dyk,后面那个dyk是我自己在servlet配的注解 有些地方是有空格的不要忘掉,内容前面的换行也千万不能掉了 如果一直不成功可以用USB转ttl模拟一下报文发送,看有没有存到数据库中 然后再改到这个函数里面 当然我这是最简单的发送字符串,有的是可以用json格式来发送java那边也用json来解析,这个我目前还不会,到时候学会了在补上 [原码下载地址][Link 1] 当然如果你会服务器可以将javaweb项目打成war包导入到服务器上的tomcat运行,注意jdk的版本问题我在这里也卡了几天一直报500的错误 [esp8266]: https://blog.csdn.net/qq_44866153/article/details/108884466 [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0ODY2MTUz_size_16_color_FFFFFF_t_70_pic_center_pic_center]: /images/20210516/c8e64b20531a45a5beb22ceffd3b7457.png [Link 1]: https://download.csdn.net/download/qq_44866153/13849840
相关 写一个基于单片机的温湿度监测控制系统的设计与实现的开题报告 题目:基于单片机的温湿度监测控制系统设计与实现本文旨在研究如何设计和实现一个基于单片机的温湿度监测控制系统。首先,介绍单片机的基本原理和结构;其次,介绍温湿度传感器的工作原理, Love The Way You Lie/ 2024年03月25日 11:24/ 0 赞/ 133 阅读
相关 springboot上传文件(存入服务器,并将URL存入数据库表中) public R upLoadAccessory(@RequestParam("file")MultipartFile file){ Map< 素颜马尾好姑娘i/ 2023年10月17日 16:28/ 0 赞/ 52 阅读
相关 python数据去重并存入redis数据库 python数据去重并存入redis数据库 import redis import os import re redis数据库 素颜马尾好姑娘i/ 2023年02月15日 01:15/ 0 赞/ 59 阅读
相关 如何使用4G模块通过MQTT协议传输温湿度数据到onenet 本次实验是采用SIM7600CE 4G cat4 模块进行操作的,本模块支持GNSS定位功能。也可以采用别的4G模块,只要支持TCP传输就行。本模块支持的AT命令相当强大,拥有 ╰半橙微兮°/ 2023年01月21日 02:17/ 0 赞/ 45 阅读
相关 STM32温湿度传感器读取温湿度数据并显示到PC端串口助手 STM32F407ZE使用温湿度传感器 (广州奥松) ,读取温湿度数据并显示到PC端串口助手实例 输出结果: ![在这里插入图片描述][watermark_type_Z 左手的ㄟ右手/ 2022年12月16日 09:23/ 0 赞/ 350 阅读
相关 WEB后台传数据给前台 1.利用cookie对象 > Cookie是服务器保存在客户端中的一小段数据信息。使用Cookie有一个前提,就是客户端浏览器允许使用Cookie并对此做出相应的 深碍√TFBOYSˉ_/ 2022年07月16日 03:15/ 0 赞/ 276 阅读
相关 影响数据中心温湿度的因素剖析 数据中心里有大量的精密电子设备,这些设备都比较娇贵,一般需要提供一个恒温恒湿的工作环境,才能确保这些设备运行稳定。温度过高易导致电子元器件的性能劣化,加速设备老化,降低其使用寿 青旅半醒/ 2022年01月28日 10:55/ 0 赞/ 422 阅读
相关 App端通过Base64多张图片上传到服务器,并存入数据库数据 import java.awt.image.BufferedImage; import java.io.ByteArrayInputStream; import java. 不念不忘少年蓝@/ 2021年09月19日 06:16/ 0 赞/ 358 阅读
相关 单片机采集温湿度数据通过wifi模块传给java写的后台并存入数据库 一直想把单片机和java结合起来,但是发现网上这方面的资源很少,所以我自己也是摸索了很久,下面是自己的一些体会 首先最基础的就是wifi模块的使用,如果不会的可以去看我的另一 我会带着你远行/ 2021年09月04日 06:04/ 0 赞/ 921 阅读
相关 通过ESP8266和DHT11通过http协议上传实时温湿度数据到乐联网云平台 首先 [乐联网网址][Link 1] 我是采用的是正点原子精英板,正点原子的wifi模块,和dht11温湿度模块 ![在这里插入图片描述][watermark_type 柔光的暖阳◎/ 2021年05月16日 20:36/ 0 赞/ 885 阅读