Robot phơi Nông sản - Robot Helper Farmers

I.Giới thiệu

Xin chào các bạn, như chúng ta biết nền nông nghiệp nước ta đang phát triển cùng với sự áp dụng những sản phẩm KH-KT vào sản xuất. Nhằm đi theo bước tiến đó, hôm nay mình xin giới thiệu các bạn một ứng dụng nhằm giúp ích một phần nhỏ cho người nông dân.

Có lẽ chỉ ai đã từng làm hoặc có người thân là người nông dân thì chắc chắn sẽ hiểu nỗi khổ này. Sau một mùa vụ làm việc cực nhọc thì muốn cho nông sản của mình như lúa, café, trà, bắp,… có giá trị hơn hoặc để có thể giữ gìn lâu hơn thì phải trải qua một công việc nữa là phơi. Một công việc nhìn thì thấy rất dơn giản và không cần phải tỉ mĩ chính xác quá. Nhưng khi làm nó thì hơi cực nhọc khi phải phơi ngoài nắng và nhiệt độ phải hết sức nắng gắt mới khô được nông sản trên. Mà không phải trải ra phơi không đâu mà còn phải luôn canh chừng ra cày xới để phơi đều. Công việc này rất tốn thời gian ( trong khi đó đáng lẽ ta phải tận hưởng sau một vụ mùa vất vả devil), và khi tiếp xúc với (lúa) thì chân chúng ta sẽ dễ bị sót đỏ, và dễ bị bệnh khi giang thân ngoài nắng .

Đó là nguyên nhân ra đời của Robot Phơi Nông Sản - Robot Helper Farmers

II. Hoạt động

Ý tưởng: Robot sẽ giúp cho nông dân việc cày xới lúa. Sau khi trải lúa ra phơi thì người nông dân chỉ cần ước lượng chiều dài chiều rộng rồi nhập vào để cho chú Robot này di chuyển hết diện tích phơi lúa. Sau khi đi hướng 1 hướng thì sẽ tự động di chuyển để cày lúa theo một hướng khác. Như thế này thì người nông dân chỉ cần trải lúa  ra rồi cho robot hoạt động rồi yên tâm nằm ngủ chiều hốt vào.  ( Chỉ lo việc giang hồ đua thôi crying).

Nói thì có lẽ khó hình dung ==>> TIến hành làm nào.

III.Nào cùng làm

1.Khung xe

Bước đầu tiên bạn phải mua tấm mica để làm khung xe đẹp và chắc chắn. Của mình mua 1 tấm 0,4-0,5m tầm 70k ( hơi đắc nhưng chất 2.5li - 3li). Vì điều kiện ở mình chưa cao lắm nên hầu như tất cả là thủ công nên ko đẹp lắm âu, các bạn thông cảm nhé. Dự định của mình sẽ làm đế xe hình chữ nhật, rồi cắt thêm vài miếng dài như kích thước đế và cao khoảng 5cm để dựng lên làm cái hộp.

 

Để  gắn chặt cái miếng thì mình dụng thanh chữ  L (cái này mua ở các tiệm bán ống ốc vít,..) và gắn ốc con tán vào. Đế xe thì mình sẽ đo 2 cái động cơ bánh xe để đục khe này. Vì xe mình chiều ngang nên phải gắn bánh xe vào trong cho đẹp. heart

Bánh xe và hộp giảm  tốc đây. Tầm 60k 1 bộ. Được bán rất nhiều ở tiệm điện tử hay search thì sẽ ra thôi cool.

Mình cần 2 bánh xe đa hướng ở phía trước (chứ một bánh thì làm sao mà đỡ nối cái khung này ahihi)

Ok. Để có thể đi trên địa hình lúa mà không bị chuệch hướng thì có lẽ mình sẽ gắn thêm các miếng chắn trước và sau 2 bánh xe để  tạo rãnh khi chạy.

Các bạn nên đo 2 cái chắn mũi nhọn trên hình ý thành một đường thẳng để tận dụng chỗ đó gắn thêm thanh chữ L rồi gắn các miếng cào.

Tấm để cào đây: (Nó được làm bằng tôn cứng dày khoảng 0,7 li )

Như thế là ổn về chức năng bây h còn trang trí thì tùy thuộc vào khả năng sáng tạo của từng người.

2. Pin

Các bạn nên dùng pin lipo khoảng 11.1V 1.5Ah mấy C cũng đc (nên dùng loại từ 5C trở lên cho chắc ăn).

3. Điều khiển và lập trình

a. Hai động cơ: thì mình đã chia sẻ ở trên.

Vấn đề  ở đây là 2 motor này sẽ chạy với tốc độ không đều nhau nhé. (Ngoại lệ rất hiếm). Có thể bạn dung nhiều cách để xử lí cái này như: dung cảm biến tốc độ vòng quay,…. Nhưng bây h mình sẽ chia sẻ các bạn một các thủ công tiết kiệm :D là dùng biến trở vào con chạy nhanh hơn rồi điều chỉnh. heart

b. L298N- Mach cầu H điều khiển 2 motor

Hắn là cái màu đỏ:

Lập trình: Mình tham khảo trên mạng thì được cái ex này:

#define ENA 5  //enable A on pin 5 (needs to be a pwm pin)
#define ENB 3  //enable B on pin 3 (needs to be a pwm pin)
#define IN1 2  //IN1 on pin 2 conrtols one side of bridge A
#define IN2 4  //IN2 on pin 4 controls other side of A
#define IN3 6  //IN3 on pin 6 conrtols one side of bridge B
#define IN4 7  //IN4 on pin 7 controls other side of B

void setup()
{
	//set all of the outputs
	pinMode(ENA, OUTPUT);
	pinMode(ENB, OUTPUT);
	pinMode(IN1, OUTPUT);
	pinMode(IN2, OUTPUT);
	pinMode(IN3, OUTPUT);
	pinMode(IN4, OUTPUT);
}

void loop()
{
	motorA(2, 100);  //have motor A turn clockwise at 100% speed
	motorB(2, 100);  //have motor B turn clockwise at 100% speed

}

//****************   Motor A control   *****************
void motorA(int mode, int percent)
{

	//change the percentage range of 0 -> 100 into the PWM
	//range of 0 -> 255 using the map function
	int duty = map(percent, 0, 100, 0, 255);

	switch(mode)
	{
		case 0:  //disable/coast
			digitalWrite(ENA, LOW);  //set enable low to disable A
			break;

		case 1:  //turn clockwise
			//setting IN1 high connects motor lead 1 to +voltage
			digitalWrite(IN1, HIGH);

			//setting IN2 low connects motor lead 2 to ground
			digitalWrite(IN2, LOW);

			//use pwm to control motor speed through enable pin
			analogWrite(ENA, duty);

			break;

		case 2:  //turn counter-clockwise
			//setting IN1 low connects motor lead 1 to ground
			digitalWrite(IN1, LOW);

			//setting IN2 high connects motor lead 2 to +voltage
			digitalWrite(IN2, HIGH);

			//use pwm to control motor speed through enable pin
			analogWrite(ENA, duty);

			break;

		case 3:  //brake motor
			//setting IN1 low connects motor lead 1 to ground
			digitalWrite(IN1, LOW);

			//setting IN2 high connects motor lead 2 to ground
			digitalWrite(IN2, LOW);

			//use pwm to control motor braking power
			//through enable pin
			analogWrite(ENA, duty);

			break;
	}
}
//********************************************************


//****************   Motor B control   *****************
void motorB(int mode, int percent)
{

	//change the percentage range of 0 -> 100 into the PWM
	//range of 0 -> 255 using the map function
	int duty = map(percent, 0, 100, 0, 255);

	switch(mode)
	{
		case 0:  //disable/coast
			digitalWrite(ENB, LOW);  //set enable low to disable B
			break;

		case 1:  //turn clockwise
			//setting IN3 high connects motor lead 1 to +voltage
			digitalWrite(IN3, HIGH);

			//setting IN4 low connects motor lead 2 to ground
			digitalWrite(IN4, LOW);

			//use pwm to control motor speed through enable pin
			analogWrite(ENB, duty);

			break;

		case 2:  //turn counter-clockwise
			//setting IN3 low connects motor lead 1 to ground
			digitalWrite(IN3, LOW);

			//setting IN4 high connects motor lead 2 to +voltage
			digitalWrite(IN4, HIGH);

			//use pwm to control motor speed through enable pin
			analogWrite(ENB, duty);

			break;

		case 3:  //brake motor
			//setting IN3 low connects motor lead 1 to ground
			digitalWrite(IN3, LOW);

			//setting IN4 high connects motor lead 2 to ground
			digitalWrite(IN4, LOW);

			//use pwm to control motor braking power
			//through enable pin
			analogWrite(ENB, duty);

			break;
	}
}

Bạn dùng cái này để làm cơ bản trong lập trình  Robot . 

Để nối dây thì bạn dùng 2 chân OUT1,2 nối với 2 chân của motor A, OUT3,4 là motor B.

Để nối dây với arduino thì trong code đã có chú thích cũng như khai báo.

c. À quên nữa. Chú bá đạo nhất là  Arduino. Ở đây mình dung Arduino Uno R3

Nếu bạn nào chưa hiểu lắm về board mạch này thì xin xem lại các cơ bản về Arduino:

http://arduino.vn/reference/howto

d. Bản nút bấm

Để giao tiếp giữa mình và robot về thông số chiều dài và chiều rộng thì mình làm một bảng nút bấm đơn giản sau: ( vẫn là làm mạch bằng thủ công bạn nhé=>> thông cảm nhé)

Mình không thiết kế để in mạch mà tự vẽ bằng bút dạ thôi. Các bạn nhìn cái này để thiết kế lại trên máy nhé`. Thủ công toàn tập :)

Đây là sơ đồ rồi bạn phát triển ra: 

Bản chất mỗi dòng điện khác nhau thì mình sẽ đọc được một giá trị trong khoản 0->1023 thông qua việc đọc analogRead() trên chân A0. Các bạn có thể xem thêm bản chất của nó tại đây.

Mình sẽ dùng 2 chân A0 và A1 để nhập chiều dài và rộng. Các điện trở thì các bạn mua ở 2 chân y như nhau để khỏi mắc công đo 2 lần.( Bạn có thể mua điện trở theo thứ tự để khỏi lộn)

int button = A0;
int value;
void setup()
{
	Serial.begin(9600);
}
void loop()
{
	analogRead(button);
	value = analogRead(button);
	Serial.print(value);
}

Dùng code trên để đo giá trị biến trở để sau đó lập trình (ghi vào giấy rồi xếp thứ tự các giá trị nhé nhớ là ghi kèm theo các nút nhấn)

Hơi lôn xộn vì mình lười đọc điện trở nên=>> > không xếp thứ tự :)

Gắn mạch vào hết rồi đo nhé. Vì nó dễ bị nhiễu lắm cơ. Sau đó test thử.

Vd: nhấn nút số 1 thì giá trị bao nhiêu sau đó ghi vào, và hãy lập trình if giá  trị lớn trước rồi nếu không lớn hơn thì giá trị nhỏ dần.

Ps: phải đo khoảng giá trị lun đó!

Còn đây là code ngắn gọn hơn nhiều: 

e. LCD                               

Đây là phần thêm vào để dễ kiểm soát và dễ sử dụng. Theo  mình thì nó sẽ hiển thị chiều dài, chiều rộng, vận tốc, Có thể gắn thêm cảm biến nhiệt độ, độ ẩm và cũng hiển thị lên luôn.

f. Quan trọng nhất nhé: Lập trình hoạt động Robot

Đây là code full của robot. Vì mình cũng mới tìm hiểu, chưa rành về lập trình lứm nên có nhiều chỗ chưa  tối ưu:

 

Đây là cách mình kiểm tra hoạt động khi chưa có pin.

Số 1 đứng một mình là khi mình tắt công tắt => Robot dừng và lưu giá trị, khi bật =>số 0 và tiếp tục thực hiên như trước đó

Chiều dài và rộng là mình nhập ban đầu á. 

Mình có lập trình trong code lúc đầu là nó chờ 3s để nhận lệnh.=> mình mở nguồn lên rồi nhấn giữ cho tới khi hiển thị số trên LCD (mình lập trình là chờ 3s) rồi thả ra Robot sẽ chạy

Thêm nữa một công tắt khi muốn dừng hoạt động. Nối chân số 8 với chấn GND rồi điều chỉnh công tắc. Bạn phải định nghĩa cho nó ntn: 

pinMode(8, INPUT_PULLUP);( khỏi cần trở)

Đây là bản Final:

Mình sẽ đăng ở bài sau. Tg: sau tết và sau khi ban tổ chức chấm.

IV. Kết luận

Bài viết này trên tinh thần là chia sẻ và hướng dẫn cho các bạn một ứng dụng nho nhỏ giúp cho người nông dân hiện nay. Để các bạn có thể giúp người nhà mình một tay. Hehe. Và còn nữa là đây là sản phẩm mình đang dự thi trên công đồng Arduino này CCA, Mong các bạn đọc nếu thấy hay thì giúp mình một like và kích chuột share giùm bạn bè mình nhé.( CÀNG NHIỀU CÀNG TỐT ). Và vì thời gian  của cuộc thi có hạn nên trước hết mình sẽ làm những chức năng chính trước và sau này mình sẽ thêm vào nhiều chức năng nữa hữu ích hơn, hiện đại hơn và sẽ không quên chia sẻ với các ban âu heart. Được like nhiều mình sẽ có động lực hơn để đăng video hoạt động thực sau khi BTC chấm điểm nhé!

NHỚ LIKE VÀ SHARE GIÙM MÌNH NHÉ ! :))

CẢM ƠN CÁC BẠN ĐÃ ĐỌC :)))))))))))))))))))))))))))

lên
15 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.
Các bài viết cùng tác giả

Tôi đã tự làm robot với Raspberry Pi và Arduino như thế nào ? - Phần 2: Điều Khiển đèn Led từ giao diện Web

Bài trước chúng ta đã thiết lập những cơ bản cần thiết cho webserver Raspi. Hôm nay mình tiếp tục vận dụng để phát triển một phương thức điều khiển.laugh

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

Tôi tự làm Robot với Raspberry Pi và Arduino như thế nào? - Phần 6: Sử dụng NRF24L01 với Raspberry Pi

Hú Hú, Chúng ta cùng tiếp tục với bài 6 trong tutorial của mình laughHôm nay mình sẽ hướng dẫn cách bạn giao tiếp Raspberry và Arduino thông qua module NRF24L01 nhé.

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