1.Arduino UNO *1
2. SHIELD V5.0 擴展板 *1
3.伺服馬達MG996R *2
4.LDC 1602 I2C *1
5.電池 9V *1
![]() |
| 測試小型伺服馬達SG90:是否能在0~180來回運作 |
![]() |
| 測試1602 LCD 點陣液晶模組是否能正常顯示文字 |
![]() |
| 測試HC-SR04 超音波感測器 |
![]() |
| 用樂高積木當架構把零件組合起來 |
![]() |
| 編譯與上傳程式到Arduino中 |
![]() |
| C 語言+ Arduino + MacBook Pro |
![]() |
| PC與Arduino溝通是透過COM21(註:每個人的ComPort不同) |
![]() |
| PC 端每2秒接收Arduino 超音波傳送的資訊儲存並繪圖 |
![]() |
| 接上電源準備起動 ESP8266 無線 WIFI 模組 |
![]() |
| 當Arduino ESP8266 接上家中WIFI 路由器時取得DHCP 192.168.1.54,另外ESP 8266 AP模式的固定IP 192.168.4.1 |
![]() |
| 螢幕顯示ESP8266 監聽Port 8015,這就是Android手機與ESP8266溝通Port |
![]() |
| 實際測試:Android手機直接連接ESP8266 AP模式 192.168.4.1 Port8015 並送出red訊息, 當Arduino收到red後把LED切到紅色 |
![]() |
| 實際測試:Android手機直接連接ESP8266 AP模式 192.168.4.1 Port8015 並送出green訊息, 當Arduino收到green後把LED切到綠色 |
import java.io.*;
import java.net.*;
public class client
{
public static void main(String [] argv)throws IOException
{
StartClient(1234);
}
public static void StartClient(int port)
{
try
{
//設定連線的主機位置
InetAddress add = InetAddress.getByName("ecc.johnsonlu.org");
SocketAddress sc_add= new InetSocketAddress(add,port);
Socket sc = new Socket();
int timeout = 2000 ; //timeout 2秒
System.out.println("連線中....");
//與主機連線
sc.connect(sc_add,timeout);
System.out.println(sc.getLocalAddress() + "連線到" + sc.getInetAddress());
//傳送資料到Server端
DataOutputStream out = new DataOutputStream(sc.getOutputStream());
out.writeUTF("我是Client");
out.flush();
//接收Server端資料
DataInputStream in = new DataInputStream(sc.getInputStream());
System.out.println("Server:" + in.readUTF());
}
catch(SocketTimeoutException e)
{
System.out.println("Timeout");
}
catch(IOException e)
{
e.printStackTrace();
}
}
}
try{
Socket socket = new Socket(mDestinationIP,mDestinationPort);
DataInputStream dataInputStream = new
DataInputStream(socket.getInputStream());
int data;
//read data from server
while ((data=dataInputStream.read()) != -1) {
//do sth
}
} catch (IOException e){
//handle socket IOExceptions
}
try{
Socket socket = new Socket(mDestinationIP,mDestinationPort);
BufferedInputStream bufferedInputStream = new
BufferedInputStream((socket.getInputStream());
int data;
//read date from server
while ((data= bufferedInputStream.read()) != -1) {
//do sth
}
} catch (IOException e){
//handle socket IOExceptions
}
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class AndroidClient extends Activity {
EditText textOut;
TextView textIn;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
textOut = (EditText)findViewById(R.id.textout);
Button buttonSend = (Button)findViewById(R.id.send);
textIn = (TextView)findViewById(R.id.textin);
buttonSend.setOnClickListener(buttonSendOnClickListener);
}
Button.OnClickListener buttonSendOnClickListener
= new Button.OnClickListener(){
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
Socket socket = null;
DataOutputStream dataOutputStream = null;
DataInputStream dataInputStream = null;
try {
socket = new Socket("192.168.1.101", 8888);
dataOutputStream = new DataOutputStream(socket.getOutputStream());
dataInputStream = new DataInputStream(socket.getInputStream());
dataOutputStream.writeUTF(textOut.getText().toString());
textIn.setText(dataInputStream.readUTF());
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally{
if (socket != null){
try {
socket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if (dataOutputStream != null){
try {
dataOutputStream.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if (dataInputStream != null){
try {
dataInputStream.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}};
}
指令「AT+CWMODE」
「AT+CWMODE?」查詢當前模式
「AT+CWMODE=2」將模式設定為第2種(AP模式)。
指令「AT+CWJAP」
「AT+CWJAP=, 」連線到已存在的無線網路。
「AT+CWJAP?」查詢已連線到的無線網路。:無線網路的識別名稱(要加引號)。 :無線網路的密碼(要加引號)。
指令「AT+CWQAP」
切斷已連線的無線網路。
#include "ESP8266.h"
#include
SoftwareSerial mySerial(3, 2); /* RX:D3, TX:D2 */
ESP8266 wifi(mySerial);
ESP8266_TX->RX(D3)
ESP8266_RX->TX(D2)
ESP8266_CH_PD->3.3V
ESP8266_VCC->3.3V
ESP8266_GND->GND
![]() |
| 網路上的示意圖但紅線(V腳位)不能接5V,要接Ground才能亮 |