Điều khiển toy car by arduino esp8266 smartphone

Mô tả dự án: 

Mình thấy nhiều bài đăng về sử dụng esp điều khiển bật tắt led, điều khiển robot car, cũng muốn góp vui chút devil. Chúc các bạn thành công, đây là dự án và code của mình.

Linh kiện gồm có

Nối mạch

tạo 1 app android điều khiển

Các bạn vào appinventor.mit.edu  để tạo tài khoản vào creat 1 project nhỏ nhé !

 

Lập trình

#include <SoftwareSerial.h>
#include <avr/interrupt.h>
#define DEBUG true

SoftwareSerial esp8266(2, 3); // make RX Arduino line is pin 2, make TX Arduino line is pin 3.
// This means that you need to connect the TX line from the esp to the Arduino's pin 2
// and the RX line from the esp to the Arduino's pin 3
void setup()
{
	Serial.begin(57600);
	esp8266.begin(57600); // your esp's baud rate might be different
	pinMode(4, OUTPUT);
	pinMode(5, OUTPUT);
	pinMode(6, OUTPUT);
	pinMode(7, OUTPUT);
	digitalWrite(4, LOW);
	digitalWrite(5, LOW);
	digitalWrite(6, LOW);
	digitalWrite(7, LOW);
	sendData("AT+RST\r\n", 2000, DEBUG); // reset module
	sendData("AT+CWMODE=2\r\n", 1000, DEBUG); // configure as station 1// AP 2// both 3 // here set AP
// sendData("AT+CWJAP=\"Thanh\",\"hoilamchi\"\r\n",5000,DEBUG);
// sendData("AT+CIPSTA=\"192.168.0.201\"\r\n",3000,DEBUG);
	sendData("AT+CWSAP=\"no_net\",\"anhyeuem\",5,2\r\n", 3000, DEBUG); // set ssid ang pass for AP
	sendData("AT+CIPAP=\"192.168.5.10\"\r\n", 1000, DEBUG); // get ip address// input add to app androir
	sendData("AT+CIFSR\r\n", 2000, DEBUG); // get ip address
	sendData("AT+CIPMUX=1\r\n", 1500, DEBUG); // configure for multiple connections
	sendData("AT+CIPSERVER=1,80\r\n", 1000, DEBUG); // turn on server on port 80
	delay(100);

}

void loop()
{


	if(esp8266.available()) // check if the esp is sending a message
	{

		if(esp8266.find("+IPD,"))
		{
			delay(10);
			int connectionId = esp8266.read() - 48;
			// turn the LED off by making the voltage LO

			if(esp8266.find("ah="))
			{
				delay(10);
				char giatri = (esp8266.read());

				if(giatri == '1')
				{
					digitalWrite(4, HIGH);
					digitalWrite(5, LOW);
					digitalWrite(6, HIGH);
					digitalWrite(7, LOW);
				}  // turn the LED on (HIGH is the voltage level

				if(giatri == '2')
				{
					digitalWrite(4, HIGH);
					digitalWrite(5, LOW);
					digitalWrite(6, LOW);
					digitalWrite(7, LOW);
				}

				if(giatri == '3')
				{
					digitalWrite(4, LOW);
					digitalWrite(5, LOW);
					digitalWrite(6, HIGH);
					digitalWrite(7, LOW);
				}

				if(giatri == '4')
				{
					digitalWrite(4, LOW);
					digitalWrite(5, HIGH);
					digitalWrite(6, LOW);
					digitalWrite(7, HIGH);
				}

				if(giatri == '5')
				{
					digitalWrite(4, LOW);
					digitalWrite(5, LOW);
					digitalWrite(6, LOW);
					digitalWrite(7, LOW);
				}
			}

			String closeCommand = "AT+CIPCLOSE=";
			closeCommand += connectionId; // append connection id
			closeCommand += "\r\n";
			sendData(closeCommand, 50, DEBUG);

		}
	}
}



String sendData(String command, const int timeout, boolean debug)
{
	String response = "";

	esp8266.print(command); // send the read character to the esp8266

	long int time = millis();

	while( (time + timeout) > millis())
	{
		while(esp8266.available())
		{

			// The esp has data so display its output to the serial window
			char c = esp8266.read(); // read the next character.
			response += c;
		}
	}

	if(debug)
	{
		Serial.print(response);
	}

	return response;
}

ksp có reup code lên codebender để các bạn dễ biên dịch

Youtube: 
Enjoy
lên
20 thành viên đã đánh giá bài viết này hữu ích.
Chuyên mục: 
Các dự án được truyền cảm hứng

Bộ điều khiển PID - ứng dụng phần 2 - xe dò line dùng thuật toán PID

Tiép nối bài viết về xe dò line cảm ơn Đỗ Hữu Toàn đã viết hộ mình phần 4. hôm nay mình sẽ làm cho chiếc xe dò line đi mượt và có hồn hơn 

lên
34 thành viên đã đánh giá bài viết này hữu ích.