智能家居篇之---WIFI通讯(ESP8266)

                  智能家居篇之---WIFI通讯(ESP8266)

  智能家居所谓智能就是可以通过手机端来收集数据、分析数据、进而控制。那么要实现这样的一套系统,最重要也是最基本的要手机端与核心板建立通讯。那么下面我们来讲一讲如何建立通讯。

1、硬件部分:准备一个核心板,一个ESP8266wifi模块。

2、软件部分:一台手机。

首先我们来说一下这个ESP8266,这个在淘宝上非常便宜,10块左右,安信可的产品。这个WiFi模块已经做得非常的成熟,下面介绍一下它的基本使用,首先这个模块有三种模式:
1:STA 模式:ESP8266模块通过路由器连接互联网,手机或电脑通过互联网实现对设备的远程控制。
2:AP 模式:ESP8266模块作为热点,实现手机或电脑直接与模块通信,实现局域网无线控制。
3:STA+AP 模式:两种模式的共存模式,即可以通过互联网控制可实现无缝切换,方便操作。

今天的实现用AP模式就够了,指令有下面这几个就够了:
1、设置wifi模式:AT+CWMODE=2
2、重启生效:AT+RST
3、启动多连接:AT+CIPMUX=1
4、建立server:AT+CIPSERVER=1
 

安卓端代码编写:

1、添加一个异步处理类:

/**
 * Created by Layne_Yao on 2017/5/12.
 * CSDN:http://blog.csdn.net/Jsagacity
 */
 
public class SendAsyncTask extends AsyncTask<String, Void, Void> {
	
	//这里是连接ESP8266的IP和端口号,IP是通过指令在单片机开发板查询到,而端口号可以自行设置,也可以使用默认的,333就是默认的
	private static final String IP = "192.168.4.1";
	private static final int PORT = 333;
 
 
 
	private Socket client = null;
	private PrintStream out = null;
 
 
	@Override
	protected Void doInBackground(String... params) {
		String str = params[0];
		try {
			client = new Socket(IP, PORT);
			client.setSoTimeout(5000);
			// 获取Socket的输出流,用来发送数据到服务端
			out = new PrintStream(client.getOutputStream());
			out.print(str);
			out.flush();
 
			if (client == null) {
				return null;
			} else {
				out.close();
				client.close();
			}
 
		} catch (IOException e) {
			e.printStackTrace();
		}
 
		return null;
	}
	
}

2、手机端建立一个接受wifi模块传来得消息的服务器:

public class MobileServer implements Runnable {
	private ServerSocket server;
	private DataInputStream in;
	private byte[] receice;
 
	private Handler handler = new Handler();
 
	public MobileServer() {
	}
 
	public void setHandler(Handler handler) {
		this.handler = handler;
	}
 
	@Override
	public void run() {
 
		try {
			//5000是手机端开启的服务器的端口号,ESP8266进行TCP连接时使用的端口,而IP也是通过指令查询的联入设备的IP
			server = new ServerSocket(5000);
			while (true) {
				Socket client = server.accept();
				in = new DataInputStream(client.getInputStream());
				receice = new byte[50];
				in.read(receice);
				in.close();
				
				Message message = new Message();
				message.what = 1;
				message.obj = new String(receice);
				handler.sendMessage(message);
			}
 
		} catch (IOException e) {
			e.printStackTrace();
		}
		try {
			server.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

3、布局

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.itman.connectesp8266.MainActivity" >
 
    <TextView
        android:id="@+id/tv_content"
        android:layout_width="match_parent"
        android:layout_height="25dp"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="10dp"
        android:background="#fe9920"
        android:gravity="center"
        android:text="接收的内容" />
 
    <Button
        android:id="@+id/bt_send"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/tv_content"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="40dp"
        android:text="发送" />
 
    <TextView
        android:id="@+id/tv_send_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/bt_send"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="33dp"
        android:text="发送的内容" />
 
</RelativeLayout>

4、Mainactivity

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.itman.connectesp8266.MainActivity" >
 
    <TextView
        android:id="@+id/tv_content"
        android:layout_width="match_parent"
        android:layout_height="25dp"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="10dp"
        android:background="#fe9920"
        android:gravity="center"
        android:text="接收的内容" />
 
    <Button
        android:id="@+id/bt_send"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/tv_content"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="40dp"
        android:text="发送" />
 
    <TextView
        android:id="@+id/tv_send_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/bt_send"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="33dp"
        android:text="发送的内容" />
 
</RelativeLayout>

5、权限

<uses-permission android:name="android.permission.INTERNET"/>

这样我们就能实现手机端发送指令到核心板,然后核心板再处理。

下面讲一下如何接收数据:

1、建立TCP连接:AT+CIPSTART=0,"TCP","192.168.4.2",5000(注意这时的ip是手机的ip)
2、发送信息:Sent to the Android

 

参考大神链接:https://blog.csdn.net/smxueer/article/details/78535426

 

stm32+esp8266物联网开发板出教程了,教程从零讲起,从快速体验,硬件设计,实例源码,手机app制作,服务器开发五方面进行教学,淘宝独此一家。该云开发板采用stm32+esp8266方案,主控MCU采用性价比高的stm32f030c8t6,板载了可编程全彩RBG灯,可编程正反转及调速电机, 温湿度传感器等外围资源。 从简单的实例中,让用户学习物联网的神奇之处。更重要的是除了开发板外,我们还提供调试好的mcu源代码,手机app安卓,IOS源代码,入手即可开发物联网项目,更是新手学习之利器!据多年开发经验写了从零快速开发教程,同时本教程将持续更新新的技术。 一键配网,局域网和远程4G网络自由切换控制 演示视频观看:https://player.youku.com/embed/XMzQ2NjI4NDc4OA== 体验资料下载:https://pan.baidu.com/s/1qJ8LYXI1m23xh5C3SSjEbQ 重要的是此开发板提供技术支持服务!!! 详尽的教程,学习无忧: APP源码提供Eclipse和android-studio两种版本源代码。 五分好评送APP源码部分讲解视频: 第一节 :课程目录 第二节 : 搭建Android开发环境 第三节 :导入框架前的准备 第四节 : 导入框架,验证是否已经成功、 第五节 : 发送指令至云端&&基本的控件使用。 第六节 :checkBox等控件使用。 第七节 :同步从云端设备发送过来的设备信息到APP. 第八节 :揭开实战的APP的神秘面纱 第九节 :实战APP的基本信息修改,图标、名字等 第十节 :动态在设备列表显示当前设备信息 。 第十一节 :设备详细页面的逻辑控制处理(上)。 第十二节 :设备详细页面的逻辑控制处理(下)。 第十三节 :课程总结。 送四款智能APP源码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

代码敌敌畏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值