ESP8266 SDK開發: 網絡篇-綜合-8266TCP服務器(espconn) (NONOS 2.2.0)與Android TCP客戶端實現無線網絡通信控制


 

 

 

 

實現的功能

Android TCP客戶端連接8266的TCP服務器,網絡控制開發板繼電器

 

1.控制繼電器吸合

 

 

 

 

 

 

 

 

 

 

 

2.控制繼電器斷開

 

 

 

 

 

 

 

 

前言

1.用戶在看這一節之前請先學習

https://www.cnblogs.com/yangfengwu/p/12543923.html   Android TCP客戶端

https://www.cnblogs.com/yangfengwu/p/12543847.html   8266 TCP服務器

 

2.控制繼電器引腳

 

 

協議規定

Android TCP客戶端發送給ESP8266TCP服務器控制繼電器吸合指令:

0xaa  0x55  0x01 0x01

ESP8266執行以后回復給C#TCP客戶端:

0x55  0xaa  0x01 0x01

 

 

Android TCP客戶端發送給ESP8266TCP服務器控制繼電器斷開指令:

0xaa  0x55  0x01 0x00

ESP8266執行以后回復給C#TCP客戶端:

0x55  0xaa  0x01 0x00

 

 

ESP8266程序編寫

1.處理程序在這節的基礎上修改添加

https://www.cnblogs.com/yangfengwu/p/12543847.html

 

2.配置GPIO5為普通引腳

 

 

 

 

/*設置GPIO5為普通引腳*/
    PIN_FUNC_SELECT(PERIPHS_IO_MUX_GPIO5_U , FUNC_GPIO5);

 

 

3.定義用於返回繼電器狀態的數組

 

 

 

/*用於返回繼電器的狀態*/
u8 RelayOn[4]={0x55,0xaa,0x01,0x01};//繼電器吸合
u8 RelayOff[4]={0x55,0xaa,0x01,0x00};//繼電器斷開

 

4.編寫TCP接收處理程序

 

 

 

    if(length>= 4 && pusrdata[0] == 0xaa && pusrdata[1] == 0x55){
        if(pusrdata[2] == 0x01){
            if(pusrdata[3] == 0x01){
                GPIO_OUTPUT_SET(5, 1);//設置GPIO5輸出高電平
                espconn_send(TCPSendDate,RelayOn,4);
            }
            else if(pusrdata[3] == 0x00){
                GPIO_OUTPUT_SET(5, 0);//設置GPIO5輸出低電平
                espconn_send(TCPSendDate,RelayOff,4);
            }
        }
    }

 

5.先用 TCP調試助手測試(手機連接Wi-Fi模塊的無線)

 

 

 

 

 

 

 

 

 

 

 

Android APP程序編寫

1.處理程序在這節的基礎上修改添加

https://www.cnblogs.com/yangfengwu/p/12543923.html

 

2.頁面修改如下:

頁面用了一個ImageButton

 

 

 

 

 

 

 

ImageButton imageButtonControl;


imageButtonControl = findViewById(R.id.imageButtonControl);
        imageButtonControl.setTag(false);//默認是關閉

 

 

 

 

3.點擊按鈕發送相應的數據,同時切換圖片

 

 

 

 

 

 

        imageButtonControl.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                final byte[] bytes = new byte[4];
                bytes[0] = (byte) 0xaa;
                bytes[1] = (byte) 0x55;
                bytes[2] = (byte) 0x01;
                if ((boolean) (imageButtonControl.getTag()) == false) {
                    imageButtonControl.setImageResource(R.mipmap.switch_button_on);//吸合圖片
                    imageButtonControl.setTag(true);
                    bytes[3] = 0x01;
                } else {
                    imageButtonControl.setImageResource(R.mipmap.switch_button_off);//斷開圖片
                    imageButtonControl.setTag(false);
                    bytes[3] = 0x00;
                }
                new Thread(new Runnable() {
                    @Override
                    public void run() {
                        try{
                            outputStream.write(bytes,0,4);//發送數據
                        }catch (Exception e){}
                    }
                }).start();
            }
        });

 

 

 

4.處理8266返回的數據

 

 

 

 

                    //提示byte范圍是-127 -- 127   &0xFF以后便自動轉為int型
                    if ( msg.arg1>=4 && Buffer[0] == 0x55 && (Buffer[1]&0xff) == 0xaa ) {
                        if (Buffer[2] == 0x01) {
                            if (Buffer[3] == 0x01)//繼電器吸合
                            {
                                textViewState.setText("吸合");
                                imageButtonControl.setImageResource(R.mipmap.switch_button_on);//吸合圖片
                                imageButtonControl.setTag(true);
                            }
                            else if (Buffer[3] == 0x00)//繼電器斷開
                            {
                                textViewState.setText("斷開");
                                imageButtonControl.setImageResource(R.mipmap.switch_button_off);//斷開圖片
                                imageButtonControl.setTag(false);
                            }
                        }
                    }

 

 

 

 

測試

請使用手機APP連接Wi-Fi模塊

IP地址:192.168.4.1  端口號:8080

 

 

 

 

 

1.控制繼電器吸合

 

 

 

 

 

 

 

 

 

 

 

2.控制繼電器斷開

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM