วงจรควบคุมมอเตอร์ปั๊ม GSM โดยใช้ Arduino

ลองใช้เครื่องมือของเราเพื่อกำจัดปัญหา





ในโพสต์นี้เราจะสร้างวงจรควบคุมมอเตอร์ปั๊ม GSM ที่เป็นมิตรกับเกษตรกรซึ่งสามารถทำได้
เปิดและปิดระบบชลประทานจากระยะไกลจากทุกที่ในโลกผ่าน SMS โทรศัพท์มือถือและส่งข้อความตอบรับกลับมาให้คุณ PG Ragavandir เป็นผู้ร้องขอความคิด

การออกแบบ

เกษตรกรรมเป็นหนึ่งในอุตสาหกรรมที่ใหญ่ที่สุดในอินเดียซึ่งให้บริการอาหารสำหรับผู้คนมากกว่าพันล้านคนทุกปี การผลิตอาหารจำนวนมากไม่ใช่เรื่องง่ายที่การชลประทานเป็นปัจจัยหนึ่ง



พื้นที่เพาะปลูกของเกษตรกรส่วนใหญ่ตั้งอยู่ห่างไกลจากที่อยู่อาศัยของพวกเขาเพียงแค่เปิดปั๊มน้ำก็มีค่าใช้จ่ายมหาศาลสำหรับการขนส่งต่อปี

อินเดียขึ้นชื่อเรื่องทักษะด้านไอทีและโครงการอวกาศและมีรายได้น้อยกว่าค่าใช้จ่ายของภาพยนตร์เรื่อง 'Gravity' ซึ่งแสดงให้เห็นถึงศักยภาพที่ยิ่งใหญ่ในหมู่วิศวกรและนักวิทยาศาสตร์ แต่ทักษะไม่ได้กระจายอย่างสม่ำเสมอในสาขาต่างๆการเกษตรเป็นหนึ่งในสาขาที่การพัฒนาทางเทคโนโลยีเป็นไปอย่างช้าๆ



ตัวควบคุมมอเตอร์ปั๊ม GSM ที่ใช้ SMS นี้จะก้าวไปสู่ทารก การพัฒนาการเกษตร นี่อาจไม่ใช่โครงการปฏิวัติ แต่อาจสร้างความพึงพอใจให้กับเกษตรกร

มาดูส่วนทางเทคนิคของโครงการกัน

โครงการนี้ได้รับการออกแบบโดยใช้ส่วนประกอบฮาร์ดแวร์น้อยที่สุดเพื่อให้ผู้เริ่มต้นสามารถทำได้อย่างง่ายดาย
วงจรประกอบด้วยแหล่งจ่ายไฟซึ่งจ่ายไฟให้กับการตั้งค่าทั้งหมด

Arduino เป็นสมองของโครงการที่ใช้การตัดสินใจและโมเด็ม GSM ซึ่งส่งและรับ SMS ข้อความและสื่อสารกับผู้ใช้และรีเลย์ที่ควบคุมมอเตอร์

มันทำงานอย่างไร

วงจรควบคุมมอเตอร์ปั๊ม GSM โดยใช้ Arduino

หมายเหตุ: โปรดใช้ตัวต้านทานอย่างน้อย 10K ที่ฐานของทรานซิสเตอร์ BC548, 330 โอห์มต่ำเกินไป

หม้อแปลงก้าวลง 230VAC เป็น 12VAC และวงจรเรียงกระแสแบบบริดจ์จะแปลง AC เป็นกระแส DC และกระแสจะผ่านตัวเก็บประจุด้วยไฟฟ้าเพื่อให้แหล่งจ่ายไฟราบรื่น

คงที่ ตัวควบคุมแรงดันไฟฟ้า 12V ให้พลังงานแก่ arduino โมเด็ม GSM และรีเลย์ โมเด็ม GSM เชื่อมต่อกับ arduino ที่พิน # 0 และพิน # 1 ซึ่ง ได้แก่ RX และ TX ตามลำดับ

RX ของ GSM เชื่อมต่อกับ TX ของ arduino และ TX ของ GSM เชื่อมต่อกับ RX ของ arduino หากคุณสับสนเพียงดูแผนภาพด้านล่างการเชื่อมต่อที่ไม่ถูกต้องจะไม่ส่งหรือรับ SMS

ARDUINO TX ---------------------- RX โมเด็ม GSM
RX ---------------------- TX

การเชื่อมต่อกราวด์กับกราวด์ยังสร้างขึ้นระหว่างโมเด็ม arduino และ GSM

พยายามหาขั้วต่อสายไฟแจ็คตัวผู้สำหรับ GSM และ arduino หากไม่เพียงแค่บัดกรีสายไฟโดยตรงจากแหล่งจ่ายไฟไปยัง arduino และ GSM ซึ่งอาจเพิ่มความยุ่งเหยิงในโครงการ

ทรานซิสเตอร์จะขับเคลื่อนรีเลย์และไดโอดจะป้องกันวงจรจากแรงดันไฟฟ้าสูงในขณะที่เปิด / ปิดรีเลย์

ตัวบ่งชี้ที่นำ แสดงสถานะของรีเลย์ หาก LED ติดสว่างแสดงว่ารีเลย์เปิดใช้งานและหาก LED ดับแสดงว่ารีเลย์จะปิดการทำงาน

ใส่ซิมที่ถูกต้องบนโมเด็ม GSM และพยายามใช้ประโยชน์จากข้อเสนอที่ผู้ให้บริการเครือข่ายนำเสนอสำหรับ SMS เช่นตัวตัดอัตราซึ่งจะช่วยลดค่าใช้จ่ายสำหรับ SMS

รหัสโปรแกรม:

//----------------Program developed by R.Girish------------//
int LED = 8
int motor = 9
int temp=0
int i=0
char str[15]
void setup()
{
Serial.begin(9600)
pinMode(motor,OUTPUT)
pinMode(LED,OUTPUT)
digitalWrite(motor,LOW)
digitalWrite(LED,LOW)
delay(20000)
delay(20000)
delay(20000)
Serial.println('AT+CNMI=2,2,0,0,0')
delay(1000)
Serial.println('AT+CMGF=1')
delay(500)
Serial.println('AT+CMGS='+91xxxxxxxxxx' ') // Replace x with mobile number
delay(1000)
Serial.println('System is ready to receive commands.')// The SMS text you want to send
delay(100)
Serial.println((char)26) // ASCII code of CTRL+Z
delay(1000)
}
void loop()
{
if(temp==1)
{
check()
temp=0
i=0
delay(1000)
}
}
void serialEvent()
{
while(Serial.available())
{
if(Serial.find('/'))
{
delay(1000)
while (Serial.available())
{
char inChar=Serial.read()
str[i++]=inChar
if(inChar=='/')
{
temp=1
return
}
}
}
}
}
void check()
{
if(!(strncmp(str,'motor on',8)))
{
digitalWrite(motor,HIGH)
digitalWrite(LED,HIGH)
delay(1000)
Serial.println('AT+CMGS='+91xxxxxxxxxx' ') // Replace x with mobile number
delay(1000)
Serial.println('Motor Activated')// The SMS text you want to send
delay(100)
Serial.println((char)26) // ASCII code of CTRL+Z
delay(1000)
}
else if(!(strncmp(str,'motor off',9)))
{
digitalWrite(motor,LOW)
digitalWrite(LED,LOW)
delay(1000)
Serial.println('AT+CMGS='+91xxxxxxxxxx' ') // Replace x with mobile number
delay(1000)
Serial.println('Motor deactivated')// The SMS text you want to send
delay(100)
Serial.println((char)26) // ASCII code of CTRL+Z
delay(1000)
}
else if(!(strncmp(str,'test',4)))
{
Serial.println('AT+CMGS='+91xxxxxxxxxx' ') // Replace x with mobile number
delay(1000)
Serial.println('The System is Working Fine.')// The SMS text you want to send
delay(100)
Serial.println((char)26) // ASCII code of CTRL+Z
delay(1000)
}
}
//----------------Program developed by R.Girish------------//

หมายเหตุ 1: ในขณะที่รวบรวมโปรแกรมจะแสดงคำเตือนซึ่งคุณสามารถเพิกเฉยได้ โปรแกรมได้รับการตรวจสอบและทดสอบแล้ว

หมายเหตุ 2: โปรดลบการเชื่อมต่อ TX และ RX ออกจาก arduino ขณะอัปโหลดรหัส

หมายเหตุ 3: แทนที่“ xxxxxxxxxxxxx” ด้วยหมายเลขโทรศัพท์ของผู้รับใน 4 ตำแหน่งในโปรแกรม

หมายเหตุ 4: โปรดซื้อโมเด็ม GSM ที่ไม่มีปุ่มเปิดปิดในโมดูลในกรณีที่ไฟฟ้าดับจะไม่ล็อคเข้ากับเครือข่ายมือถือเว้นแต่คุณจะกดปุ่มด้วยตนเองดังนั้นหลีกเลี่ยงโมเด็ม GSM ประเภทดังกล่าว โมเด็ม GSM หนึ่งตัวไม่มี ปุ่มเพาเวอร์ จะล็อคเข้ากับเครือข่ายมือถือโดยตรงหลังจากที่ไฟยังคงอยู่

ต้นแบบของวงจรควบคุมมอเตอร์ปั๊ม GSM ของผู้แต่ง:

วิธีใช้การตั้งค่าด้านบน:

•ส่ง / เปิดเครื่อง / SMS จากโทรศัพท์มือถือของคุณเพื่อเปิดใช้งานรีเลย์

•ส่ง / ปิดเครื่อง / SMS เพื่อปิดการใช้งานรีเลย์

•ส่ง / ทดสอบ / SMS เพื่อทดสอบการตอบสนองจากวงจร

ตรวจสอบให้แน่ใจว่าคุณเริ่มต้นคำสั่งด้วย” /” และลงท้ายด้วย“ /” มิฉะนั้นจะไม่ยอมรับเป็นคำขอที่ถูกต้อง

• / motor on / จะเปิดรีเลย์และส่งกลับพร้อม SMS ตอบรับ“ Motor Activated”

• / motor off / จะปิดรีเลย์และกลับมาพร้อมกับ SMS ตอบรับ“ Motor Deactivated”

•หากคุณส่ง / ทดสอบ / มันจะส่งกลับมาพร้อมกับ SMS ตอบรับ 'ระบบทำงานได้ดี'

•ข้อความด้านบนแสดงว่าการตั้งค่าของคุณทำงานได้ดี

•หากไม่มีการตอบรับกลับมาให้คุณสามารถสันนิษฐานได้ว่าไม่มีการดำเนินการใด ๆ เกิดขึ้นกับมอเตอร์และคุณอาจแก้ไขปัญหาได้

•หลังจากเปิดการตั้งค่า ON รอสักครู่ 1 นาที ระบบจะส่ง SMS ตอบรับ 'ระบบพร้อมรับคำสั่ง' เมื่อคุณได้รับ SMS นี้โครงการของคุณก็พร้อมให้บริการ

คำสั่งข้างต้นเป็นข้อพิสูจน์ที่โง่เขลาและไม่เรียกใช้มอเตอร์อย่างผิด ๆ การตั้งค่าจะไม่ตอบสนอง SMS ใด ๆ นอกเหนือจากที่ระบุไว้ข้างต้น

การปรับปรุงแนวคิดข้างต้น

วงจรแอปพลิเคชันปั๊ม GSM ข้างต้นนี้ดึงดูดผู้อ่านจำนวนมากและเราได้รับคำถามและข้อเสนอแนะมากมาย หนึ่งในผู้อ่านตัวยงของเว็บไซต์นี้ Mr. Gandhi แนะนำให้ปรับปรุงการออกแบบก่อนหน้านี้ให้ดีขึ้น

SMS รับทราบเมื่อมอเตอร์เปิดอยู่

การปรับปรุงเป็นข้อมูลเกี่ยวกับการตอบกลับการตอบกลับซึ่งผู้ใช้จะได้รับการตอบกลับทาง SMS ในโทรศัพท์มือถือจาก GSM ระบบควบคุมปั๊ม เมื่อผู้ใช้ส่งความคิดเห็นทาง SMS ที่ถูกต้อง

การออกแบบที่มีอยู่จะส่ง SMS ตอบรับไปยังผู้ใช้โดยไม่ขึ้นอยู่กับสถานะจริงของรีเลย์เช่นเปิด / ปิด

การเปลี่ยนแปลงการออกแบบใหม่ที่แนะนำโดย Mr. Gandhi จะตรวจสอบสถานะของรีเลย์ว่ารีเลย์มีการเปลี่ยนสถานะทางกายภาพหรือไม่

การเปลี่ยนแปลงตามน้ำ GSM ใหม่นี้ การออกแบบตัวควบคุมปั๊ม สามารถนำไปใช้กับการออกแบบก่อนหน้านี้ได้โดยไม่ต้องยุ่งยากมากนักโดยการเพิ่มระบบป้อนกลับดังที่แสดงในแผนผังและอัปโหลดโค้ดใหม่

แผนภูมิวงจรรวม:

เมื่อเราส่งคำสั่ง SMS“ / MOTOR ON /” พิน # 9 จะสูงและเปิดรีเลย์ หากรีเลย์เชื่อมต่อพินทั่วไปและหมุด N / O ปั๊มจะเริ่มทำงานและเปิดหม้อแปลงด้วยซึ่งจะให้ +5 ที่เอาต์พุต

สัญญาณ + 5V จะถูกป้อนไปที่พิน # 7 ซึ่งจะยืนยันและส่งคืนพร้อมกับรับทราบว่า“ เปิดใช้งานมอเตอร์”

เมื่อเราส่ง“ / MOTOR OFF /” พิน # 9 จะหมุน LOW และรีเลย์จะตัดการเชื่อมต่อพินทั่วไปและพิน N / O สิ่งนี้จะปิดปั๊มเช่นเดียวกับหม้อแปลงที่เชื่อมต่อ เอาต์พุตที่พิน # 7 จะอยู่ในระดับต่ำและส่งกลับพร้อมการตอบรับว่า“ Motor deactivated”

หากไม่มีการรับทราบ ได้รับ SMS ในโทรศัพท์มือถือของคุณ เราสามารถยืนยันได้ว่าไม่มีการดำเนินการใด ๆ และปั๊มอยู่ในสถานะที่ร้องขอล่าสุดคุณสามารถไปที่ไซต์และแก้ไขปัญหาหรือไม่ได้รับการตอบรับเนื่องจากการตัดไฟ

รหัสโปรแกรม:

//----------------Program developed by R.Girish------------//
int motor = 8
int LED = 9
int temp=0
int i=0
int ack=7
char str[15]
void setup()
{
Serial.begin(9600)
pinMode(ack,INPUT)
pinMode(motor,OUTPUT)
pinMode(LED,OUTPUT)
digitalWrite(motor,LOW)
digitalWrite(LED,LOW)
delay(20000)
delay(20000)
delay(20000)
Serial.println('AT+CNMI=2,2,0,0,0')
delay(1000)
Serial.println('AT+CMGF=1')
delay(500)
Serial.println('AT+CMGS='+91xxxxxxxxxx' ') // Replace x with mobile number
delay(1000)
Serial.println('System is ready to receive commands.')// The SMS text you want to send
delay(100)
Serial.println((char)26) // ASCII code of CTRL+Z
delay(1000)
}
void loop()
{
if(temp==1)
{
check()
temp=0
i=0
delay(1000)
}
}
void serialEvent()
{
while(Serial.available())
{
if(Serial.find('/'))
{
delay(1000)
while (Serial.available())
{
char inChar=Serial.read()
str[i++]=inChar
if(inChar=='/')
{
temp=1
return
}
}
}
}
}
void check()
{
if(!(strncmp(str,'motor on',8)))
{
digitalWrite(motor,HIGH)
delay(100)
if(digitalRead(ack)==1)
{
digitalWrite(LED,HIGH)
delay(1000)
Serial.println('AT+CMGS='+91xxxxxxxxxx' ') // Replace x with mobile number
delay(1000)
Serial.println('Motor Activated')// The SMS text you want to send
delay(100)
Serial.println((char)26) // ASCII code of CTRL+Z
delay(1000)
}
}
else if(!(strncmp(str,'motor off',9)))
{
digitalWrite(motor,LOW)
delay(5000)
if(digitalRead(ack)==0)
{
digitalWrite(LED,LOW)
delay(1000)
Serial.println('AT+CMGS='+91xxxxxxxxxx' ') // Replace x with mobile number
delay(1000)
Serial.println('Motor deactivated')// The SMS text you want to send
delay(100)
Serial.println((char)26) // ASCII code of CTRL+Z
delay(1000)
}
}
else if(!(strncmp(str,'test',4)))
{
Serial.println('AT+CMGS='+91xxxxxxxxxx' ') // Replace x with mobile number
delay(1000)
Serial.println('The System is Working Fine.')// The SMS text you want to send
delay(100)
Serial.println((char)26) // ASCII code of CTRL+Z
delay(1000)
}
}
//----------------Program developed by R.Girish------------//

การนำไปใช้ข้างต้นไม่ได้รับการทดสอบในทางปฏิบัติ แต่ผู้เขียนมั่นใจร้อยเปอร์เซ็นต์ว่าแนวคิดข้างต้นจะได้ผล หากผู้อ่านพบปัญหาใด ๆ เกี่ยวกับการปรับปรุงข้างต้นสามารถแสดงความคิดเห็นผ่านส่วนความคิดเห็น

รายการชิ้นส่วน

1) หม้อแปลงลดขั้น 12-0V
2) ไดโอด IN4007 x5
3) LM7812 x1
4) รีเลย์ 12V x1
5) BC548 ทรานซิสเตอร์ x1
6) ตัวเก็บประจุด้วยไฟฟ้า 1000 ยูเอฟ x1
7) โมดูล GSM: รุ่น SIM 800 หรือ SIM 900
8) ตัวต้านทาน 330 โอห์ม x2
9) LED สีแดง / เขียว x1
10) Arduino Uno หรือ Arduino nano หรือ Arduino Mega
11) แจ็คชาย DC x2

คลิปวิดีโอ:

การทำงานร่วมกับมอเตอร์ 3 เฟส

ฉันได้รับคำขอมากมายให้อัปเกรดสเตจรีเลย์สำหรับการออกแบบข้างต้นเพื่อให้เข้ากันได้กับการใช้งานมอเตอร์ 3 เฟสโดยใช้คำสั่งโทรศัพท์มือถือ GSM

ดังนั้นฉันจึงตัดสินใจออกแบบวงจรที่ต้องการซึ่งจะ หวังว่า สามารถเปิดและปิดมอเตอร์ 3 เฟสที่กำหนดโดยมีกลไกการสตาร์ทและหยุดคอนแทคทั่วไป

รูปต่อไปนี้แสดงวิธีกำหนดค่าการออกแบบโดยใช้วงจร IC 4017

โทรศัพท์มือถือระยะไกล GSM 3 phase motor controller

หมายเหตุ: ค่า 100uF / 10K และ 220uF และ 47K อาจต้องมีการปรับเปลี่ยนบางอย่างเพื่อให้แน่ใจว่าจำนวนดีเลย์ที่ถูกต้องสำหรับทรานซิสเตอร์และสเตจรีเลย์ตามลำดับ




คู่ของ: วงจรรักษาความปลอดภัยตัวบ่งชี้ตำแหน่งผู้บุกรุก ถัดไป: วงจรควบคุมความเข้มของหลอดไฟพลังงานแสงอาทิตย์ที่ควบคุมจากระยะไกล