วงจรสัญญาณกันขโมย Arduino สัญญาณเตือน GSM ราคาประหยัดพร้อมสมอง Arduino มันทำงานอย่างไร

วันนี้เราจะมาพูดถึงวิธีการใช้ อาร์ดูโน่เก็บรวบรวม ระบบรักษาความปลอดภัย . “ความปลอดภัย” ของเราจะป้องกันวงจรหนึ่งวงจรและควบคุมไซเรนหนึ่งตัว

สำหรับ Arduino นี่ไม่ใช่ปัญหา และดังที่คุณจะเห็นจากโค้ดโปรแกรมและไดอะแกรมอุปกรณ์ คุณสามารถเพิ่มจำนวนจุดเข้าใช้งานที่ได้รับการป้องกันและจำนวนอุปกรณ์แจ้งเตือนหรือบ่งชี้ได้อย่างง่ายดาย
ระบบรักษาความปลอดภัยสามารถใช้ป้องกันได้ เช่น วัตถุขนาดใหญ่(อาคารและสิ่งปลูกสร้าง) และ รายการเล็กๆ(กล่อง ตู้นิรภัย) และแม้แต่กระเป๋าพกพาและกระเป๋าเดินทาง ถึงแม้จะต้องระวังอย่างหลังแต่ถ้าติดตั้งระบบรักษาความปลอดภัย เช่น บนกระเป๋าเดินทางที่ตัดสินใจเดินทางแล้วระบบเตือนภัยดับที่สนามบินบางแห่ง ผมว่าคุณคงได้คุยกันจริงจังแล้ว บริการรักษาความปลอดภัยในพื้นที่ :-)

หลักการทำงานที่เรียบง่ายของอุปกรณ์มีดังนี้ (รูปที่ 1) หลังจากเปิดเครื่อง อุปกรณ์จะเข้าสู่โหมดการทำงานและรอการเปิดเครื่อง การติดอาวุธและการปลดอาวุธทำได้ด้วยปุ่มเดียว เพื่อเพิ่มความปลอดภัย ควรวางปุ่มนี้ไว้ในพื้นที่ป้องกัน (ตู้นิรภัยหรือกล่อง) ก่อนเปิดโหมดความปลอดภัยต้องเปิดประตูเล็กน้อย เมื่อคุณเปิดโหมดความปลอดภัย (กดปุ่ม) วงจรอิเล็กทรอนิกส์รอจนกว่าคุณจะปิดประตูห้อง (ประตูตู้นิรภัย ฝากล่อง ฯลฯ)

จะต้องติดตั้งลิมิตสวิตช์ทุกประเภทที่ประตู (หรือประตู) ซึ่งจะเพิ่มเติมในภายหลัง เมื่อปิด (หรือเปิด) สวิตช์จำกัดจะแจ้งให้อุปกรณ์ทราบว่าวงจรป้องกันปิดอยู่ และอุปกรณ์จะเข้าสู่โหมดความปลอดภัย ระบบจะแจ้งให้คุณทราบเมื่อเข้าสู่โหมดความปลอดภัยด้วยสัญญาณสั้น 2 สัญญาณ (เช่น สัญญาณกันขโมยรถยนต์) ในโหมดนี้อุปกรณ์จะ "จับ" การเปิดประตู หลังจากเปิดประตู ระบบจะรอสักครู่ (ซึ่งเป็นค่าที่ปรับได้ ประมาณสิบวินาทีสำหรับห้อง หนึ่งหรือสองวินาทีสำหรับกล่อง) เพื่อปิดโหมดความปลอดภัย หากไม่เกิดขึ้น ไซเรนจะเปิดขึ้น อัลกอริธึมและวงจรได้รับการออกแบบในลักษณะที่คุณสามารถปิดไซเรนได้โดยการถอดประกอบตัวเรือนทั้งหมดและปิดเครื่องเท่านั้น

อุปกรณ์ ระบบรักษาความปลอดภัยง่ายมาก (รูปที่ 2) ขึ้นอยู่กับกระดาน อาร์ดูโน่. ลิมิตสวิตช์เชื่อมต่อเหมือนปุ่มทั่วไปผ่านตัวต้านทานแบบดึงขึ้น ฉันจะอยู่แยกกันที่สวิตช์ท้าย มีทั้งแบบปิดปกติหรือเปิดตามปกติ คุณสามารถเปิดปุ่มปกติเป็นลิมิตสวิตช์ได้ เฉพาะระยะการเคลื่อนที่ของปุ่มปกติเท่านั้นที่มีขนาดใหญ่มาก ระยะฟันเฟืองของประตูมักจะมากกว่า ดังนั้นจึงจำเป็นต้องมีตัวดันสำหรับปุ่มและสปริงไว้เพื่อไม่ให้ปุ่มหักกับประตู ถ้าคุณไม่ขี้เกียจเกินไปก็สามารถไปที่ร้านและซื้อสวิตช์แม่เหล็ก (สวิตช์กก) (รูปที่ 3) ก็ไม่กลัวฝุ่นและสิ่งสกปรก

ลิมิตสวิตช์สำหรับสัญญาณเตือนรถก็เหมาะสมเช่นกัน (รูปที่ 4) ควรสังเกตว่าโปรแกรมถูกเขียนขึ้นสำหรับสวิตช์กก ที่ ประตูปิดผู้ติดต่อถูกปิด หากคุณใช้สวิตช์สัญญาณกันขโมยรถยนต์ เมื่อปิดประตูแล้วมักจะเปิดอยู่ และในตำแหน่งที่เหมาะสมในรหัสคุณจะต้องเปลี่ยน 0 เป็น 1 และในทางกลับกัน

ฉันแนะนำให้ใช้เสียงไซเรน PKI-1 ORIOLGA เป็นไซเรน การผลิตของเบลารุส(รูปที่ 5) แรงดันไฟจ่าย 9 - 15 V, กระแสไฟทำงาน 20 - 30 mA ทำให้สามารถใช้งานร่วมกับพลังงานแบตเตอรี่ได้ ในขณะเดียวกันก็ "สร้าง" 95 - 105 dB

ด้วยคุณสมบัติดังกล่าว แบตเตอรี่ Krona จะส่งเสียงเป็นเวลาหลายสิบนาที ฉันพบมันบนอินเทอร์เน็ตในราคา 110 รูเบิล ที่นั่นสวิตช์กกพร้อมแม่เหล็กมีราคาประมาณ 30 รูเบิล ซื้อสวิตช์สัญญาณเตือนรถที่อะไหล่รถยนต์ราคา 28 รูเบิล ทรานซิสเตอร์ KT315 สามารถใช้ตัวอักษรใดก็ได้หรือแทนที่ด้วยทรานซิสเตอร์ซิลิคอนกำลังต่ำที่ทันสมัยซึ่งมีการนำไฟฟ้าที่เหมาะสม หากระดับเสียงของไซเรนตัวเดียวไม่เพียงพอ (ใครจะรู้บางทีคุณอาจต้องการให้ได้ยินจากระยะไกลหลายกิโลเมตร) คุณสามารถเชื่อมต่อไซเรนหลายตัวแบบขนานหรือใช้ไซเรนที่ทรงพลังกว่าได้เฉพาะในกรณีนี้เท่านั้นที่ต้องเปลี่ยนทรานซิสเตอร์ด้วย อันที่ทรงพลังกว่า (เช่นชุดทรานซิสเตอร์ที่คุ้นเคย ULN2003) ฉันใช้ตัวเชื่อมต่อที่ง่ายที่สุดสำหรับอุปกรณ์เสียง/วิดีโอเป็นตัวเชื่อมต่อสำหรับเชื่อมต่อสวิตช์กกและไซเรน - ราคาในตลาดวิทยุคือ 5 รูเบิล สำหรับคู่รัก

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

เพื่อให้รหัสโปรแกรมง่ายขึ้น ไม่ได้ใช้องค์ประกอบการประหยัดพลังงาน และแบตเตอรี่มีอายุการใช้งานไม่นาน คุณสามารถปรับโค้ดให้เหมาะสมหรือดีกว่านั้นคือสร้างใหม่อย่างรุนแรงโดยใช้การประมวลผลเหตุการณ์ขัดจังหวะและโหมดสลีป MK ในกรณีนี้ พลังงานจากแบตเตอรี่สี่เหลี่ยมสองก้อนที่เชื่อมต่อแบบอนุกรม (9 V) ควรจะเพียงพอสำหรับเวลาหลายเดือน

ตอนนี้รหัส

// ค่าคงที่
ปุ่ม const int = 12; // ปักหมุดที่ปุ่ม
ค่าคงที่ int gerkon = 3; // พินสำหรับสวิตช์กก
const int ไซเรนา = 2; // พินควบคุมไซเรน
const int นำ = 13; // พินตัวบ่งชี้
// ตัวแปร
int สถานะปุ่ม = 0; // สถานะของปุ่ม
int gerkonState = 0; // สถานะสวิตช์กก
อินท์ N = 0; // ปลดอาวุธตัวนับปุ่ม
การตั้งค่าเป็นโมฆะ () (
// ควบคุมไซเรนและตัวบ่งชี้ - เอาต์พุต
pinMode (ไซรีนา, เอาต์พุต);
pinMode (นำ, เอาต์พุต); // ปุ่มและสวิตช์กก - อินพุต
pinMode (เกอร์คอน, อินพุต);
pinMode(ปุ่ม, อินพุต);
}
เป็นโมฆะวน()
digitalWrite (นำ, สูง);
ในขณะที่(buttonState= =0)( // รอวนซ้ำจนกว่าเราจะกดปุ่ม
buttonState = digitalRead (ปุ่ม); // เพื่อเปลี่ยนเป็นโหมดความปลอดภัย
}
digitalWrite (นำ, ต่ำ);
สถานะปุ่ม = 0; // รีเซ็ตค่าปุ่ม
while(gerkonState= =0)( // วนซ้ำจนกว่าเราจะปิดประตู
}
ล่าช้า (500); // :-)
digitalWrite (ไซเรน่า, สูง); // รหัส
ล่าช้า(100); //ข้อบ่งชี้
digitalWrite (ไซเรน่า, ต่ำ); // เปิดใช้งาน
ล่าช้า(70); // โหมด
digitalWrite (ไซเรน่า, สูง); // ความปลอดภัย
ล่าช้า(100); //การแจ้งเตือน
digitalWrite (ไซเรน่า, ต่ำ); // เสียง
while(gerkonState= =1)( // รอให้ประตูเปิด
gerkonState = digitalRead (เกอร์คอน);
}
สำหรับ (int i=0; i<= 5; i++){ // 7,5 секунды на нажатие
buttonState = digitalRead (ปุ่ม); // ปุ่มลับ
if (buttonState = = HIGH) ( // ติดตามของเรา - ของคนอื่น
ยังไม่มีข้อความ=ยังไม่มี+1;
}
ล่าช้า (1500); // คุณสมบัติลับ :-)))
}
ถ้า (N > 0) ( // สิ่งที่สำคัญที่สุด
digitalWrite (ไซเรน่า, ต่ำ); //อย่าเปิดไซเรน
}
อื่น(
digitalWrite (ไซเรน่า, สูง); //หรือเปิดไซเรน
}
digitalWrite (นำ, สูง); // เปิดตัวบ่งชี้ N = 0;
สถานะปุ่ม = 0;
ล่าช้า (15,000); //เตือนหุ่นที่ชอบ
digitalWrite (นำ, ต่ำ); // กดปุ่มโดยไม่หยุดชะงัก (1,000)

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

เอาล่ะ มาเริ่มกันเลย!

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

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

สำหรับช่วงที่กว้างขึ้น จะใช้เลนส์ Fresnel ซึ่งจะรวบรวมรังสีอินฟราเรดจากทิศทางต่างๆ และมุ่งไปที่ตัวเซ็นเซอร์เอง

ภาพนี้แสดงให้เห็นว่าเลนส์บิดเบือนรังสีที่ตกกระทบอย่างไร

เป็นที่น่าสังเกตว่าหุ่นยนต์ที่ไม่มีชิ้นส่วนที่ร้อนเป็นพิเศษและชิ้นส่วนเลือดเย็นปล่อยรังสีอินฟราเรดน้อยมาก ดังนั้นเซ็นเซอร์อาจไม่ทำงานหากพนักงานของ Boston Dynamics หรือสัตว์เลื้อยคลานตัดสินใจล้อมคุณ

เมื่อมีการเปลี่ยนแปลงระดับรังสีอินฟราเรดในช่วงนี้จะถูกประมวลผลบน Arduino หลังจากนั้นสถานะจะแสดงบนจอ LCD ไฟ LED จะกระพริบและลำโพงจะส่งเสียงบี๊บ

เราต้องการอะไร?

  1. (หรือบอร์ดอื่นๆ)
  2. (16 ตัวอักษรในสองบรรทัด)
  3. ขั้วต่อหนึ่งตัวสำหรับเชื่อมต่อเม็ดมะยมกับ Arduino
  4. (ถึงแม้จะใช้ลำโพงธรรมดาได้ก็ตาม)
  5. สาย USB - สำหรับการเขียนโปรแกรมเท่านั้น ( ประมาณ การแปล:มันมาพร้อมกับ Arduino ของเราเสมอ!)
  6. คอมพิวเตอร์ (อีกครั้งสำหรับการเขียนและโหลดโปรแกรมเท่านั้น)

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

มาเชื่อมต่อกัน!

การเชื่อมต่อเซ็นเซอร์ตรวจจับความเคลื่อนไหวนั้นง่ายมาก:

  1. เราเชื่อมต่อพิน Vcc กับ 5V Arduino
  2. เราเชื่อมต่อพิน Gnd เข้ากับ GND ของ Arduino
  3. เราเชื่อมต่อพิน OUT เข้ากับพินดิจิทัลหมายเลข 7 จาก Arduino

ตอนนี้มาเชื่อมต่อ LED และลำโพงกัน มันง่ายเหมือนกันที่นี่:

  1. เราเชื่อมต่อขาสั้น (ลบ) ของ LED เข้ากับกราวด์
  2. เราเชื่อมต่อขายาว (บวก) ของ LED เข้ากับเอาต์พุตหมายเลข 13 ของ Arduino
  3. สายลำโพงสีแดงไปยังเอาต์พุตหมายเลข 10
  4. สายสีดำ-ลงกราวด์

และตอนนี้ส่วนที่ยากคือการเชื่อมต่อจอแสดงผล LCD 1602 เข้ากับ Arduino เรามีจอแสดงผลที่ไม่มี I2C ดังนั้นเราจึงต้องการเอาต์พุต Arduino จำนวนมาก แต่ผลลัพธ์ที่ได้ก็คุ้มค่า แผนภาพแสดงไว้ด้านล่าง:

เราต้องการเพียงส่วนหนึ่งของวงจร (เราจะไม่ปรับคอนทราสต์ด้วยโพเทนชิออมิเตอร์) ดังนั้น คุณเพียงแต่ต้องทำสิ่งต่อไปนี้:

ตอนนี้คุณรู้วิธีเชื่อมต่อจอแสดงผล 1602 กับ Arduino UNO R3 แล้ว (รวมถึง Arduino เวอร์ชันใดก็ได้ตั้งแต่ Mini ถึง Mega)

การเขียนโปรแกรม

ถึงเวลาที่จะไปยังการเขียนโปรแกรม ด้านล่างนี้เป็นรหัสที่คุณต้องกรอกและหากคุณประกอบทุกอย่างถูกต้องแสดงว่าอุปกรณ์ก็พร้อม!

#รวม int ledPin = 13; // LED พิน int inputPin = 7; // ปักหมุดที่เชื่อมต่อเซ็นเซอร์ตรวจจับความเคลื่อนไหว int pirState = LOW; // สถานะปัจจุบัน (ไม่พบอะไรเลยตั้งแต่เริ่มต้น) int val = 0; // ตัวแปรสำหรับการอ่านสถานะของอินพุตดิจิตอล int pinSpeaker = 10; // พินที่ลำโพงเชื่อมต่ออยู่ ต้องใช้พิน PWM จอแอลซีดี LiquidCrystal (12, 11, 5, 4, 3, 2); // เริ่มต้นการตั้งค่าโมฆะของจอแสดงผล LCD () ( // กำหนดทิศทางของการส่งข้อมูลบนพินดิจิตอล pinMode (ledPin, OUTPUT); pinMode (inputPin, INPUT); pinMode (pinSpeaker, OUTPUT); // เริ่มต้นเอาต์พุตของข้อมูลการดีบัก ผ่านทางพอร์ตอนุกรมอนุกรม .begin(9600); // เริ่มส่งออกไปที่ จอ LCDจอแอลซีดี. เริ่มต้น (16, 2); // ตั้งค่าดัชนีบนจอแสดงผลซึ่งเราจะเริ่มเอาท์พุต // (2 ตัวอักษร, 0 บรรทัด) lcd.setCursor(2, 0); // ส่งออกไปยังจอแสดงผล LCD lcd.print ("PIR Motion"); // ย้ายอีกครั้ง lcd.setCursor(5, 1); // พิมพ์ lcd.print("เซ็นเซอร์"); // หยุดชั่วคราวเพื่อให้มีเวลาอ่านสิ่งที่พิมพ์ล่าช้า (5,000) // ล้าง lcd.clear(); // คล้ายกับ lcd.setCursor(0, 0); lcd.print("กำลังประมวลผลข้อมูล"); ล่าช้า (3000); จอแอลซีดี.ชัดเจน(); จอแอลซีดี setCursor (3, 0); lcd.print("กำลังรอ"); จอแอลซีดี setCursor (3, 1); lcd.print("การเคลื่อนไหว....."); ) void loop() ( // อ่านการอ่านเซ็นเซอร์ val = digitalRead(inputPin); if (val == HIGH) ( // หากมีการเคลื่อนไหว ให้เปิดไฟ LED แล้วเปิดไซเรน digitalWrite(ledPin, HIGH); playTone(300, 300 ); ดีเลย์(150); // ถ้าเคลื่อนไหวมาก่อน ณ ตอนนี้ไม่ใช่ จากนั้นเราจะแสดงข้อความ // ว่าตรวจพบ // จำเป็นต้องใช้โค้ดด้านล่างเพื่อเขียนเฉพาะการเปลี่ยนแปลงสถานะ และไม่พิมพ์ค่าทุกครั้ง ถ้า (pirState == LOW) ( Serial.println(" ตรวจพบการเคลื่อนไหว!"); lcd.clear(); lcd.setCursor(0, 0); lcd.print ("ตรวจพบการเคลื่อนไหว!"); pirState = HIGH; ) ) else ( // หากการเคลื่อนไหวอยู่เหนือ digitalWrite (ledPin , LOW); playTone(0, 0); Delay(300); if (pirState == HIGH)( // แจ้งว่ามีการเคลื่อนไหว แต่ Serial.println("Motion สิ้นสุดแล้ว!"); lcd. clear(); lcd.setCursor(3, 0); lcd.print ("กำลังรอ"); lcd.setCursor (3, 1); lcd.print ("การเคลื่อนไหว .... "); pirState = LOW; ) ) ) // ฟังก์ชั่นเล่นเสียง ระยะเวลา (ระยะเวลา) - เป็นมิลลิวินาที ความถี่ (ความถี่) - ใน Hz void playTone (ระยะเวลายาว, int freq) ( Duration *= 1000; int period = (1.0 / freq) * 100000; long elapsed_time = 0; while (elapsed_time)< duration) { digitalWrite(pinSpeaker,HIGH); delayMicroseconds(period / 2); digitalWrite(pinSpeaker, LOW); delayMicroseconds(period / 2); elapsed_time += (period); } }

เพื่อปกป้องบ้านของคุณจากแขกที่ไม่ได้รับเชิญทุกอย่าง ผู้คนมากขึ้นติดตั้งสัญญาณเตือนภัย พวกเขาอนุญาตให้มีการเตือนการบุกรุกเข้าไปในสถานที่อย่างทันท่วงที วันนี้ก็มี หลากหลายชนิดนาฬิกาปลุกแต่เข้า เมื่อเร็วๆ นี้ความนิยมของระบบเตือนภัย GSM เริ่มเติบโตขึ้นเนื่องจากช่วยให้คุณรับข้อมูลเกี่ยวกับการบุกรุกจากวัตถุในระยะใดก็ได้ สิ่งสำคัญคือเจ้าของมีโทรศัพท์อยู่กับเขาในขณะนั้นและโทรศัพท์นี้ออนไลน์อยู่ น่าเสียดายที่ระบบเหล่านี้ยังไม่ถูกเกินไปที่จะให้ความสำคัญกับพวกเขาโดยเฉพาะ แต่ปัจจุบันนี้คุณสามารถสร้างสัญญาณเตือนภัยระบบ GSM ง่ายๆ ได้ด้วยตัวเอง และบอร์ด Arduino ยอดนิยมจะช่วยในเรื่องนี้


โครงการนี้เป็นระบบรักษาความปลอดภัย (alarm) แจ้งเตือนผู้บุกรุกเข้ามาในบ้าน ระบบใช้เทคโนโลยี GSM



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


รูปด้านล่างแสดงแผนภาพบล็อกของระบบรักษาความปลอดภัย



องค์ประกอบหลักของระบบคือบอร์ดไมโครคอนโทรลเลอร์ (เช่น Arduino Uno) และโมดูล GSM/GPRS SIM900A ระบบทั้งหมดสามารถจ่ายไฟจากแหล่งจ่ายไฟ 12V/2A เพียงตัวเดียว


ภาพด้านล่างแสดงให้เห็น แผนภูมิวงจรรวมระบบรักษาความปลอดภัยภายในบ้านด้วย GSM ที่ใช้ Arduino



การทำงานของระบบนั้นง่ายมากและไม่ต้องการคำอธิบายมากนัก เมื่อใช้แหล่งจ่ายไฟ ระบบจะเข้าสู่โหมดสแตนด์บาย อย่างไรก็ตาม เมื่อ J2 ลัดวงจร ข้อความเตือนจะถูกส่งไปยังหมายเลขที่ตั้งไว้ล่วงหน้าโดยอัตโนมัติ โทรศัพท์มือถือ. สามารถเชื่อมต่อเซนเซอร์ตรวจจับใดๆ เข้ากับขั้วต่ออินพุต J2 ได้ ก็ควรสังเกตว่า ระดับต่ำที่ขา 1 ของขั้วต่อ J2 ทำงานอยู่และเปิดระบบรักษาความปลอดภัย


นอกจากนี้ระบบยังได้เพิ่มความสามารถในการโทรออกด้วยการกดปุ่ม S2 การใช้ปุ่ม S3 คุณสามารถรีเซ็ตการโทรนี้ได้


ด้านล่างนี้เป็นโค้ดสำหรับ Arduino


// เชื่อมต่อพิน Tx เพื่อพิน D3 ของโมดูล GPS // เชื่อมต่อพิน Rx เพื่อพิน D4 ของโมดูล GPS // เชื่อมต่อสัญญาณส่งสัญญาณ SMS ไปที่พิน D7 (ระดับแอคทีฟต่ำ) // เชื่อมต่อสัญญาณ CALL เข้ากับพิน D8 (ระดับแอคทีฟต่ำ) // เชื่อมต่อสัญญาณรีเซ็ตการโทร END เพื่อปักหมุด D9 (ระดับแอคทีฟต่ำ) #include ใหม่SoftSerial mySerial(3,4); // กำหนดค่าพิน RX และ TX สำหรับการสื่อสารกับโมดูล GSM #define msg_key 7 #define call_key 8 #define end_key 9 String number ="0000000000"; // ที่นี่ แทนที่จะเป็นศูนย์ คุณต้องป้อนหมายเลขโทรศัพท์มือถือ 10 หลัก การตั้งค่าเป็นโมฆะ() ( Serial.begin(9600); mySerial.begin(9600); pinMode(msg_key,INPUT); pinMode(call_key,INPUT) ; pinMode(end_key,INPUT ); digitalWrite(msg_key,HIGH); digitalWrite(call_key,HIGH); digitalWrite(end_key,HIGH); ) void loop() ( //ส่ง SMS ทุกครั้งที่ msg_key ถูกทริกเกอร์ถ้า (digitalRead(msg_key) ==LOW) / / ตรวจสอบว่ากดปุ่มส่ง SMS หรือไม่ ( mySerial.println("AT+CMGF=1"); // ตั้งค่าโหมดเป็นโหมดข้อความล่าช้า (150); mySerial.println("AT+CMGS= \"+00"+ number+"\""); // ระบุหมายเลขผู้รับในรูปแบบสากล แทนที่ศูนย์ล่าช้า (150); mySerial.print("Warning! Intruder Alert!"); // ป้อนข้อความล่าช้า( 150); mySerial.write(( byte)0x1A); // สิ้นสุดอักขระข้อความ 0x1A: เทียบเท่ากับการหน่วงเวลา Ctrl+z(50); mySerial.println(); ) // โทรออกเมื่อ call_key ถูกทริกเกอร์ มิฉะนั้นถ้า ( digitalRead(call_key)==LOW) // ตรวจสอบว่ากด call_key แล้วหรือไม่ ( mySerial.println("ATD+91"+number+";"); // กำหนดหมายเลขที่จะโทร while(digitalRead(call_key)== ต่ำ); ล่าช้า(50); ) //รีเซ็ตการโทร มิฉะนั้นถ้า (digitalRead(end_key)==LOW) //ตรวจสอบว่ากดปุ่มรีเซ็ตการโทรแล้ว ( mySerial.println("ATH"); ในขณะที่(digitalRead(end_key)==LOW); ล่าช้า (50 ); ) )

ดังนั้นคุณสามารถสร้างระบบเตือนภัย GSM โดยใช้บอร์ด Arduino ด้วยมือของคุณเองได้อย่างง่ายดาย ในแง่ของต้นทุนระบบเตือนภัยดังกล่าวจะมีราคาถูกกว่าอะนาล็อกที่มีตราสินค้าในตลาดปัจจุบันอย่างแน่นอนและจะทำงานในลักษณะที่เกือบจะเหมือนกัน

ขอให้เป็นวันที่ดี :) วันนี้เราจะมาพูดถึงนาฬิกาปลุกกัน ตลาดบริการเต็มไปด้วยบริษัทและองค์กรที่ติดตั้งและบำรุงรักษาระบบรักษาความปลอดภัย บริษัทเหล่านี้เสนอผู้ซื้อ เลือกได้กว้างเตือน. อย่างไรก็ตามต้นทุนของพวกเขายังห่างไกลจากราคาถูก แต่คน ๆ หนึ่งควรทำอย่างไรถ้าเขาไม่มีเงินส่วนตัวมากมายที่สามารถใช้จ่ายได้ สัญญาณกันขโมย? ฉันคิดว่าข้อสรุปแนะนำตัวเอง - ทำเตือน ของพวกเขา มือ. บทความนี้จะแสดงตัวอย่างวิธีที่คุณสามารถสร้างระบบรักษาความปลอดภัยแบบเข้ารหัสของคุณเองโดยใช้บอร์ด Arduino uno และเซ็นเซอร์แม่เหล็กหลายตัว

สามารถปิดการใช้งานระบบได้โดยการป้อนรหัสผ่านจากปุ่มกดแล้วกดปุ่ม ' * '. หากคุณต้องการเปลี่ยนรหัสผ่านปัจจุบัน คุณสามารถทำได้โดยกดปุ่ม ' บี' และหากคุณต้องการข้ามหรือขัดจังหวะการดำเนินการ คุณสามารถทำได้โดยการกดปุ่ม ‘#’. ระบบมีเสียงกริ่งเพื่อเล่นเสียงต่างๆ เมื่อดำเนินการเฉพาะ

ระบบเปิดใช้งานโดยการกดปุ่ม 'A' ระบบให้เวลา 10 วินาทีในการออกจากห้อง หลังจากผ่านไป 10 วินาที สัญญาณเตือนจะเริ่มทำงาน จำนวนเซ็นเซอร์แม่เหล็กจะขึ้นอยู่กับความต้องการของคุณเอง โครงการนี้ประกอบด้วยเซ็นเซอร์ 3 ตัว (สำหรับหน้าต่าง 2 บานและประตู 1 บาน) เมื่อหน้าต่างเปิดขึ้น ระบบจะทำงานและสัญญาณเตือนที่มาจากออดจะถูกเปิดใช้งาน ระบบสามารถปิดการใช้งานได้โดยการป้อนรหัสผ่าน เมื่อประตูเปิดขึ้น สัญญาณเตือนภัยจะให้เวลาบุคคลนั้นเข้าสู่ 20 วินาทีเพื่อป้อนรหัสผ่าน ระบบใช้เซ็นเซอร์อัลตราโซนิคที่สามารถตรวจจับการเคลื่อนไหวได้

วิดีโอแสดงการทำงานของอุปกรณ์

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

เอาล่ะ!

ขั้นตอนที่ 1: เราต้องการอะไร?

  • บอร์ด Arduino อูโน่;
  • จอแสดงผล LCD คอนทราสต์สูง 16×2;
  • แป้นพิมพ์ 4x4;
  • โพเทนชิออมิเตอร์ 10~20kΩ;
  • เซ็นเซอร์แม่เหล็ก 3 ตัว (หรือที่เรียกว่าสวิตช์กก);
  • 3 ขั้วต่อสกรู 2 พิน;
  • เซ็นเซอร์อัลตราโซนิก HC-SR04;

หากคุณต้องการสร้างระบบโดยไม่ใช้ Arduino คุณจะต้องมีสิ่งต่อไปนี้ด้วย:

  • ตัวเชื่อมต่อ DIP สำหรับไมโครคอนโทรลเลอร์ atmega328 + atmega328;
  • เครื่องสะท้อนเสียงควอตซ์ 16MHz;
  • 2 ชิ้น เซรามิก 22pF, 2 ชิ้น ตัวเก็บประจุด้วยไฟฟ้า 0.22uF;
  • 1 ชิ้น ตัวต้านทาน 10kOhm;
  • แจ็คไฟกระแสตรง;
  • กระดานขนมปัง
  • แหล่งจ่ายไฟ 5V;

และกล่องเดียวก็บรรจุได้หมด!

เครื่องมือ:

  • สิ่งที่ใช้ตัดกล่องพลาสติกด้วย
  • ปืนกาวร้อน
  • สว่าน/ไขควง

ขั้นตอนที่ 2: วงจรสัญญาณเตือน

แผนภาพการเชื่อมต่อค่อนข้างง่าย

ชี้แจงเล็กๆ น้อยๆ:

จอแอลซีดีคอนทราสต์สูง:

  • Pin1 - Vdd ถึง GND;
  • Pin2 - เทียบกับ 5V;
  • Pin3 - Vo (ไปยังเทอร์มินัลกลางของโพเทนชิออมิเตอร์);
  • Pin4 - RS ถึง Arduino พิน 8;
  • Pin5 - RW ถึง GND;
  • Pin6 - EN ถึง Arduino พิน 7;
  • Pin11 - D4 ถึง Arduino พิน 6;
  • Pin12 - D5 ถึง Arduino พิน 5;
  • Pin13 - D6 ถึง Arduino พิน 4;
  • Pin14 - D7 ถึง Arduino พิน 3;
  • Pin15 - Vee (ไปทางขั้วขวาหรือซ้ายของโพเทนชิออมิเตอร์)

คีย์บอร์ด 4x4:

จากซ้ายไปขวา:

  • Pin1 ถึง A5 พิน Arduino;
  • Pin2 ถึง A4 พินของ Arduino;
  • Pin3 ถึง A3 พินของ Arduino;
  • Pin4 ถึง A2 พินของ Arduino;
  • Pin5 ถึง Arduino พิน 13;
  • Pin6 ถึง Arduino พิน 12;
  • Pin7 ถึง Arduino พิน 11;
  • Pin8 ถึง Arduino ขา 10

ขั้นตอนที่ 3: เฟิร์มแวร์

ขั้นตอนนี้จะแสดงโค้ดที่ใช้โดยบิวด์อิน !

ดาวน์โหลดปลั๊กอิน codebender คลิกที่ปุ่ม "Run" ใน Arduino และแฟลชบอร์ดของคุณด้วยโปรแกรมนี้ นั่นคือทั้งหมดที่ คุณเพิ่งตั้งโปรแกรม Arduino ของคุณ! หากคุณต้องการเปลี่ยนแปลงโค้ด ให้คลิกปุ่ม "แก้ไข"

หมายเหตุ: หากคุณจะไม่ใช้ Codebender IDE เพื่อตั้งโปรแกรมบอร์ด Arduino คุณจะต้องติดตั้งไลบรารีเพิ่มเติมใน Arduino IDE

ขั้นตอนที่ 4: สร้างแผงควบคุมของคุณเอง

หลังจากประกอบและทดสอบเรียบร้อยแล้ว โครงการใหม่บน ใช้ Arduinoไม่เป็นไร คุณสามารถเริ่มสร้างบอร์ดของคุณเองได้

เคล็ดลับบางประการสำหรับการดำเนินกิจการให้สำเร็จยิ่งขึ้น:

  • ควรติดตั้งตัวต้านทาน 10kOhm ระหว่างพิน 1 (รีเซ็ต) และพิน 7 (Vcc) ของไมโครคอนโทรลเลอร์ Atmega328
  • คริสตัล 16MHz ควรเชื่อมต่อกับพิน 9 และ 10 โดยมีเครื่องหมาย XTAL1 และ XTAL2
  • เชื่อมต่อแต่ละลีดของเครื่องสะท้อนเสียงด้วยตัวเก็บประจุ 22pF เชื่อมต่อตัวเก็บประจุอิสระเข้ากับพิน 8 (GND) ของไมโครคอนโทรลเลอร์
  • อย่าลืมเชื่อมต่อสายไฟ ATmega328 เส้นที่สองเข้ากับแหล่งจ่ายไฟ พิน 20-Vcc และ 22-GND
  • ข้อมูลเพิ่มเติมเกี่ยวกับพินไมโครคอนโทรลเลอร์สามารถดูได้ในภาพที่สอง
  • หากคุณวางแผนที่จะใช้แหล่งจ่ายไฟที่มีแรงดันไฟฟ้าสูงกว่า 6V คุณต้องใช้ตัวควบคุมเชิงเส้น LM7805 และตัวเก็บประจุด้วยไฟฟ้า 0.22uF สองตัว ซึ่งควรติดตั้งที่อินพุตและเอาต์พุตของตัวควบคุม มันเป็นสิ่งสำคัญ! อย่าจ่ายไฟเกิน 6V ให้กับบอร์ด!!! มิฉะนั้นไมโครคอนโทรลเลอร์ Atmega และจอ LCD ของคุณก็จะไหม้

ขั้นตอนที่ 5: วางวงจรไว้ในเคส

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

ตรวจสอบรายการ

ซื้อแล้ว:
1. เขียงหั่นขนมด้านเดียว 5x7 ซม.: เกติแน็ก- หรือ ไฟเบอร์กลาส
* - ไฟเบอร์กลาสมีคุณภาพดีกว่า getinax มาก
2. โมดูล Neoway M590 - พร้อมเสาอากาศบน PCB -
3. Arduino Pro Mini "RobotDyn" ATmega168PA 8MHz 3.3V -
4. บอร์ดควบคุมการจ่ายประจุลิเธียม -

ขุดขึ้นมาจากซากปรักหักพังของอารยธรรม:
1. ชั้นวางบอร์ดตัดจากตัวเครื่อง - 6 ชิ้น
2. แบตเตอรี่ลิเธียมแบบแบน 1300mAh
3. ลวดเย็บกระดาษใช้สำหรับยึดสายเคเบิลเข้ากับผนัง
4. ยางลบเครื่องเขียน
5. ลวดทองแดงหนา 1.5 มม
6. เคสเครื่องดนตรีจากตลาดวิทยุท้องถิ่น - 1.5$
7. คู่ของไฟ LED สีที่แตกต่าง(นำมาจากเครื่องเล่น VHS)
8. เสาอากาศและปุ่มพร้อมฝาปิด (นำมาจากเราเตอร์ Wi-Fi)
9. เทอร์มินัลบล็อก 4 พิน (นำมาจากสวิตช์หรี่ไฟ)
10. ขั้วต่อสายไฟ (นำมาจากเครื่องชาร์จเก่า 18650)
11. ขั้วต่อ 6 พิน (นำมาจากไดรฟ์ดีวีดี)
12. สามารถ(จากกาแฟเป็นต้น)

Arduino Pro Mini "RobotDyn" Atmega 168PA 3.3V 8MHz

ข้อมูลจำเพาะ:
ไมโครคอนโทรลเลอร์: ATmega168PA
แรงดันไฟฟ้าขณะทำงานโดยตรง:.8 - 5.5 โวลต์
แรงดันไฟฟ้าขณะใช้งานผ่านโคลง LE33: 3.3 V หรือ 5 V (ขึ้นอยู่กับรุ่น)
อุณหภูมิในการทำงาน:-40°ซ… 105°ซ
แรงดันไฟฟ้าขาเข้า: 3.35-12V (รุ่น 3.3V) หรือ 5-12V (รุ่น 5V)
อินพุต/เอาต์พุตดิจิตอล: 14 (6 ช่องสามารถใช้เป็นเอาต์พุต PWM ได้: 3, 5, 6, 9, 10 และ 11)
อินพุตแบบอะนาล็อก: 6
จับเวลา-เคาน์เตอร์: 8 บิตสองตัวและ 16 บิตหนึ่งตัว
โหมดประหยัดพลังงาน: 6
กระแส DC ผ่านอินพุต/เอาต์พุต: 40 มิลลิแอมป์
หน่วยความจำแฟลช: 16 KB (2 ใช้สำหรับ bootloader)
แกะ: 1 กิโลไบต์
อีพรอม: 512 ไบต์
ทรัพยากรการบันทึก/การลบหน่วยความจำ: 10,000 แฟลช/100,000 EEPROM
ความถี่สัญญาณนาฬิกา: 8 MHz (รุ่น 3.3 V) หรือ 16 MHz (รุ่น 5 V)
เอสพีไอ: 10 (เอสเอส), 11 (MOSI), 12 (มิโซะ), 13 (SCK)
ไอ2ซี: A4 (SDA) และ A5 (SCL)
UART TTL: 0 (RX) และ 1 (เท็กซัส)
แผ่นข้อมูล:

ตัวเลือกนี้ตกอยู่กับ atmega นี้โดยบังเอิญ ในฟอรัมหนึ่งที่มีการพูดคุยถึงโครงการประหยัดพลังงาน ในความคิดเห็นมีคำแนะนำให้ใช้ atmega ครั้งที่ 168
อย่างไรก็ตามฉันต้องคนจรจัดเพื่อค้นหาบอร์ดดังกล่าวเนื่องจากบ่อยครั้งที่ลอตทั้งหมดเต็มไปด้วย 328 atmegs ที่ความถี่ 16 MHz ซึ่งทำงานจาก 5V สำหรับโครงการของฉัน ลักษณะดังกล่าวซ้ำซ้อนและไม่สะดวกตั้งแต่เริ่มต้น และการค้นหาก็ซับซ้อนมากขึ้น
เป็นผลให้ฉันเจอ Pro Mini รุ่น 3.3 โวลต์บน Atmega 168PA บน eBay และไม่ใช่แค่ภาษาจีนธรรมดา ๆ แต่อยู่ภายใต้แบรนด์ RobotDyn จากนักพัฒนาชาวรัสเซีย ใช่ ในตอนแรก เช่นเดียวกับคุณ ฉันก็มีความสงสัยเหมือนกัน แต่เปล่าประโยชน์ เมื่อประกอบโครงการแล้วและ AliExpress แนะนำการส่งสินค้าราคาถูกแบบบังคับ (หลังจากนั้นพัสดุเริ่มสูญหายบ่อยขึ้นมาก) ต่อมาฉันก็สั่ง Pro Mini Atmega168 ปกติ (ไม่มี PA) 3.3V 8MHz ฉันทดลองเล็กน้อยกับโหมดประหยัดพลังงานกับทั้งสองบอร์ด โดยฉายภาพร่างพิเศษในแต่ละอันที่ทำให้ไมโครคอนโทรลเลอร์เข้าสู่โหมดประหยัดพลังงานสูงสุด และนี่คือผลลัพธ์:
1) Arduino Pro Mini "RobotDyn": ~250µA
2) Arduino Pro Mini “ไม่มีชื่อ”:เมื่อจ่ายไฟให้กับตัวปรับแรงดันไฟฟ้า (พิน RAW) และ LED ถูกบัดกรี การสิ้นเปลืองกระแสไฟจะเป็นเช่นนั้น ~3.92mA




- อย่างที่คุณเข้าใจ ความแตกต่างในการใช้พลังงานนั้นเกือบ 16 เท่า ทั้งหมดนี้เป็นเพราะ Pro Mini ของ NoName ใช้ชุดค่าผสม Atmega168+ ซึ่ง MK เองกินเท่านั้น 20uAปัจจุบัน (ฉันตรวจสอบสิ่งนี้แยกกัน) ความตะกละที่เหลือทั้งหมดคิดเป็นของตัวแปลงแรงดันไฟฟ้าเชิงเส้น AMS1117 - เอกสารข้อมูลยืนยันสิ่งนี้เท่านั้น:


ในกรณีของบอร์ดจาก RobotDyn การรวมกันจะแตกต่างกันบ้าง - นี่คือ Atmega168PA+ - ที่นี่ใช้โคลง LDO ที่แตกต่างกันซึ่งลักษณะในแง่ของการประหยัดพลังงานกลายเป็นที่น่าพอใจมากขึ้น:


ฉันไม่ได้ถอดมันออกดังนั้นฉันจึงไม่สามารถบอกได้ว่า Atmega168PA กินกระแสไปเท่าไร รูปแบบบริสุทธิ์. ในกรณีนี้ฉันก็เพียงพอแล้ว ~250µAเมื่อขับเคลื่อนโดยโนเกีย แบตเตอรี่ลิเธียม. อย่างไรก็ตามหากคุณถอด AMS1117 ออกจากเมนบอร์ด NoName" ATmega168 ปกติในรูปแบบบริสุทธิ์ดังที่ฉันได้กล่าวไว้ข้างต้นจะสิ้นเปลือง 20uA.
ไฟ LED ที่มีแหล่งจ่ายไฟสามารถถูกกระแทกได้ด้วยของมีคม มันไม่ใช่ปัญหา เหล็กกันโคลงถูกบัดกรีด้วยเครื่องเป่าผม อย่างไรก็ตาม ไม่ใช่ทุกคนที่มีเครื่องเป่าผมและมีทักษะในการใช้งาน ดังนั้นตัวเลือกทั้งสองข้างต้นจึงมีสิทธิ์ที่จะมีอยู่

โมดูล Neoway M590E

ข้อมูลจำเพาะ:
ความถี่: EGSM900/DCS1800 ดูอัลแบนด์ หรือ GSM850/1900 หรือควอดแบนด์
ความไว:-107dBm
กำลังส่งสูงสุด: EGSM900 คลาส 4(2 วัตต์), DCS1800 คลาส 1(1 วัตต์)
กระแสสูงสุด: 2เอ
ปัจจุบันทำงาน: 210mA
ปัจจุบันการนอนหลับ: 2.5mA
อุณหภูมิในการทำงาน:-40°ซ… +85°ซ
แรงดันไฟฟ้า: 3.3V…4.5V (แนะนำ 3.9V)
โปรโตคอล: GSM/GPRS Phase2/2+, TCP/IP, FTP, UDP ฯลฯ
อินเทอร์เน็ต:จีพีอาร์เอส คลาส 10
แผ่นข้อมูล:

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

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

โมดูลนี้ไม่แน่นอนเช่นกันเมื่อพูดถึงแหล่งจ่ายไฟ เนื่องจากที่จุดสูงสุดจะใช้กระแสไฟสูงสุด 2A และดูเหมือนว่าไดโอดที่รวมอยู่ในชุดอุปกรณ์จะได้รับการออกแบบมาให้ลดแรงดันไฟฟ้าลงจาก 5V (ซึ่งเป็นเหตุว่าทำไมจึงระบุว่า 5V บนบอร์ดเอง ) ถึง 4.2V แต่ตัดสินโดย ตามคำร้องเรียนของผู้คน มันสร้างปัญหามากกว่าที่ควรจะเป็น
สมมติว่าคุณได้ประกอบโมดูลนี้แล้ว และแทนที่จะใช้ไดโอด จัมเปอร์จะถูกบัดกรีเข้าไป เนื่องจากเราจะไม่จ่ายแรงดันไฟฟ้า 5V ให้กับมัน แต่จะจ่ายไฟโดยตรงจากแบตเตอรี่ลิเธียมซึ่งอยู่ภายในขอบเขตที่อนุญาต ขีดจำกัดแรงดันไฟฟ้า 3.3-4.2V.
จำเป็นต้องเชื่อมต่อกับคอมพิวเตอร์และตรวจสอบฟังก์ชันการทำงาน ในกรณีนี้ควรซื้อล่วงหน้าสำหรับตัวคุณเอง - เราจะสื่อสารกับโมดูลและบอร์ด Arduino ผ่านอินเทอร์เฟซอนุกรม UART (USART)
การเชื่อมต่อแสดงอยู่ด้านล่างของภาพ (ฉันวาดให้ดีที่สุดเท่าที่จะทำได้):
โมเด็ม TX >>> ตัวแปลง RX
โมเด็ม RX<<< TX конвертера
แบตเตอรี่บวก - โมเด็มบวก
ค่าลบของแบตเตอรี่ลิเธียมจะรวมกับ GND ของโมเด็มและ GND ของตัวแปลง
ในการสตาร์ทโมเด็ม ให้ใช้พิน BOOT ผ่านตัวต้านทาน 4.7 kOhm ไปที่ GND


ในระหว่างนี้ ให้รันโปรแกรมบนคอมพิวเตอร์ของคุณ ให้ความสนใจกับการตั้งค่า:
1) เลือกพอร์ต COM ที่เชื่อมต่อตัวแปลง TTL ในกรณีของฉันคือ COM4 ​​ของคุณอาจแตกต่างกัน
2) เลือกความเร็วการถ่ายโอนข้อมูล (มีความแตกต่างกันเล็กน้อยที่นี่เนื่องจากโมดูลสามารถกำหนดค่าได้สำหรับความเร็วที่แตกต่างกันส่วนใหญ่มักจะ 9600 บอดหรือ 115200 บอด ที่นี่คุณต้องเลือกโดยสังเกตเลือกความเร็วการเชื่อมต่อและส่งคำสั่ง AT หากมีรอยแตกเกิดขึ้น การตอบสนองจะตัดการเชื่อมต่อ เลือกความเร็วอื่นแล้วทำซ้ำคำสั่งไปเรื่อยๆ จนกว่าคำตอบจะเป็นปกติ)
3) เลือกความยาวของแพ็กเก็ต (ในกรณีนี้คือ 8 บิต), พาริตีบิตปิดใช้งาน (ไม่มี), บิตหยุด (1)
4) อย่าลืมทำเครื่องหมายในช่อง +CRจากนั้นอักขระขึ้นบรรทัดใหม่จะถูกเพิ่มโดยอัตโนมัติในแต่ละคำสั่งที่เราส่งไปยังโมดูลในตอนท้าย - โมดูลจะเข้าใจคำสั่งเฉพาะกับอักขระนี้ในตอนท้ายเท่านั้น
5) การเชื่อมต่อ ทุกอย่างชัดเจนที่นี่ คลิกแล้วเราจะทำงานกับโมดูลได้

หากคุณคลิกที่ “การเชื่อมต่อ” จากนั้นเริ่มโมดูลโดยใช้ BOOT ผ่านตัวต้านทาน 4.7K ลงกราวด์ ขั้นแรกเทอร์มินัลจะแสดงข้อความว่า “MODEM:STARTUP” จากนั้นผ่านไปครู่หนึ่ง ข้อความ “+PBREADY” หมายความว่าหมายเลขโทรศัพท์ถูกอ่านหนังสือแล้วแม้ว่าจะว่างเปล่าก็ตาม:

ภายใต้สปอยเลอร์นี้มีคำสั่ง AT พร้อมตัวอย่าง

เราพิมพ์คำสั่ง AT - เพื่อเป็นการตอบสนองโมดูลจะส่งคำสั่งของเราเนื่องจากเปิดใช้งานโหมด echo และตกลง:

ตรวจสอบสถานะของโมเด็มด้วยคำสั่ง AT+CPAS - การตอบสนองเป็นคำสั่งของเราอีกครั้ง +CPAS: 0 และตกลง
0 หมายความว่าโมดูลพร้อมใช้งาน แต่อาจมีหมายเลขอื่นๆ ขึ้นอยู่กับสถานการณ์ เช่น 3 - สายเรียกเข้า, 4 - ในโหมดการเชื่อมต่อ, 5 - โหมดสลีป ฉันไม่พบข้อมูลใด ๆ ใน 1 และ 2

การเปลี่ยนอัตราการถ่ายโอนข้อมูลผ่าน UART ทำได้ด้วยคำสั่ง AT+IPR=9600 - นี่คือถ้าคุณต้องการความเร็ว 9600 หากเป็นอย่างอื่น เช่น AT+IPR=19200 หรือ AT+IPR=115200

มาตรวจสอบสัญญาณเครือข่ายกัน AT+CSQ การตอบสนองจะมา +CSQ: 22.1 - ค่าก่อนจุดทศนิยมมีช่วง 0... 31 (115... 52 dBl) - นี่คือระดับสัญญาณ ยิ่งสูงยิ่งดี แต่ 99 หมายถึงไม่มีเลย ค่าหลังจุดทศนิยมคือคุณภาพของสัญญาณ 0... 7 - ในทางกลับกัน ยิ่งตัวเลขยิ่งน้อยก็ยิ่งดี

มาปิดการใช้งานโหมด echo โดยการส่งคำสั่ง ATE0 เพื่อไม่ให้คำสั่งที่ซ้ำกันรบกวน โหมดนี้จะเปิดอีกครั้งโดยใช้คำสั่ง ATE1

ดูเวอร์ชั่นเฟิร์มแวร์ AT+GETVERS



สามารถดูคำสั่งเหล่านี้และคำสั่งอื่นๆ ได้

การจัดตำแหน่งบอร์ด

หากการบัดกรี Pro Mini เข้ากับเขียงหั่นขนมนั้นไม่ใช่เรื่องยากดังนั้นด้วยโมดูล GSM สถานการณ์จึงค่อนข้างซับซ้อนกว่าเพราะ หวีสัมผัสของมันอยู่ที่ด้านเดียวเท่านั้นและถ้าคุณบัดกรีเพียงด้านเดียวอีกด้านหนึ่งของบอร์ดก็จะแขวนอยู่ในอากาศ จากนั้น อีกครั้ง ฉันต้องเจาะเพิ่มเติมด้วยตาอีก 3 รูใกล้กับมุมทั้งสามบนกระดาน จากนั้นพื้นที่รอบๆ หลุมแต่ละหลุมก็ถูกปิดบังไว้ เพื่อความสะดวกฉันวางลีดที่ถอดออกจากหวีไว้บนเขียงหั่นขนมไร้การบัดกรี (สีขาว) และติดตั้งบอร์ดโมดูล GSM ไว้บนนั้นและทำการบัดกรีตามปกติ:

ต่อมาฉันต้องเจาะรูที่ตัวอักษร "I" ซึ่งมีข้อความว่า "Made In China" ในกรณีของฉันจากขอบกระดาน


ปรากฎว่าผู้ติดต่อที่เพิ่มเข้ามาซึ่งโดยพื้นฐานแล้วคือ GND นั้นตั้งอยู่ถัดจาก GND ของบอร์ด Pro Mini และด้วยเหตุนี้จึงเป็นไปได้ที่จะเชื่อมต่อกราวด์ของโมดูล GSM และ Pro Mini ด้วยการบัดกรีหยดหนึ่ง (อันยาว ปักหมุดตรงกลางและปักหมุด Pro Mini ทางด้านขวา) - ฉันทำเครื่องหมายด้วยลูกศร แน่นอนว่ามันดูบิดเบี้ยวเล็กน้อย แต่ตอนนี้มันยึดแน่นแล้ว:



มีช่องว่างระหว่างบอร์ดเหลืออยู่ - ในนั้นฉันวางบอร์ดควบคุมการชาร์จลิเธียมที่มีขั้วต่อ microUSB ที่บัดกรีไว้ล่วงหน้าและสายบัดกรี

ผ้าพันคอแนบสนิทมาก และไฟ LED ที่ด้านข้างจะมองเห็นได้ชัดเจนผ่านรูเล็กๆ ในเคส



ชั้นวางบัตร

เพื่อที่จะติดตั้งบอร์ดไว้ภายในเคสอย่างแน่นหนา ฉันต้องใช้เวลาสองสามวันในการคิดว่าจะนำไปปฏิบัติได้อย่างไร ตัวเลือกที่มีกาวร้อนละลายไม่ได้รับการพิจารณาด้วยเหตุผลหลายประการ - อาจหลุดออก, เสียรูปและที่สำคัญที่สุดคือโครงสร้างจะแยกชิ้นส่วนได้ยาก
ฉันได้ข้อสรุปว่าตัวเลือกที่ง่ายและถูกต้องที่สุดในที่นี้คือการใช้ขาตั้ง ซึ่งโดยธรรมชาติแล้วฉันไม่มี อย่างไรก็ตาม มีที่ชาร์จที่ไม่ทำงานอยู่สองสามอัน ซึ่งขาตั้งยาวอันหนึ่งที่มีเกลียวสำหรับสกรูเกลียวปล่อยถูกตัดออก ขาตั้งแต่ละอันถูกเลื่อยครึ่งหนึ่งและยื่นลงไปประมาณ 9.5 มม. - ที่ระดับความสูงนี้แบตเตอรี่ที่อยู่ใต้บอร์ดมีระยะขอบเพียงพอประมาณ 2 มม. - ทำเช่นนี้เพื่อไม่ให้หน้าสัมผัสบัดกรีของบอร์ดพร้อมปลายของพวกเขา สัมผัสมันและเพื่อให้สามารถวางชิ้นส่วนระหว่างโฟมเพื่อยึดได้
สำหรับการติดบอร์ดเข้ากับเคสโดยตรง ฉันตัดแถบสี่แถบจากกระป๋องกาแฟ เจาะรูที่ปลาย จากนั้นยึดเข้ากับสกรูตัวเดียวกับที่ขันเข้ากับชั้นวาง ดูในภาพด้านล่างว่ามีลักษณะอย่างไร
ขั้นตอนต่อไปคือการขันสกรูสองสามขาตั้งที่อีกด้านหนึ่งของบอร์ดนั่นคือด้านบน เพื่อว่าเมื่อปิดเคส ฝาครอบจะวางอยู่บนขาตั้งเหล่านี้เล็กน้อย ทำให้เกิดการยึดเพิ่มเติม หลังจากนั้นไม่นานฉันก็พบที่อยู่อาศัยจากวิทยุโฆษณาชวนเชื่อของสหภาพโซเวียต (หากพบก่อนหน้านี้ฉันจะเอาอัฒจันทร์ทั้งหมดไปจากที่นี่) ซึ่งฉันพบความสูงที่เหมาะสมไม่มากก็น้อย แต่ ก่อนอื่นฉันเจาะพวกมันตรงกลางด้วยสว่านภายใต้สกรูเกลียวปล่อย จากนั้นฉันก็เลื่อยมันออกและปิดท้ายด้วยไฟล์โดยเอาส่วนเกินออก ที่นี่ฉันเกิดความละเอียดอ่อนอย่างหนึ่ง - ในภาพคุณจะเห็นว่าขาตั้งสีขาวอันหนึ่งถูกขันเข้ากับบอร์ด getinaks จากขอบและอีกอันสีขาวนั้นถูกขันเข้ากับบอร์ดโมดูลโดยตรงเพราะ จากขอบด้านหนึ่งบอร์ดโมเด็มจะคลุมบอร์ดด้านล่างอย่างสมบูรณ์และจากขอบตรงข้าม - ในทางกลับกัน - ด้านล่างจะโผล่ออกมาแล้ว ในเวลาเดียวกันต้องเจาะรูเพิ่มเติมในกระดานทั้งสองเพื่อให้หัวสกรูสามารถผ่านได้อย่างอิสระ
และท้ายที่สุดก็ยังคงต้องแน่ใจว่าบอร์ดขนานกับตัวเครื่องเสมอ - ลวดเย็บกระดาษที่ใช้ยึดสายไฟและสายเคเบิลบนผนังเหมาะสำหรับงานนี้ ก่อนหน้านี้ฉันได้ถอดตะปูออกจากพวกมันแล้ว ขายึดยึดเกาะได้ดีกับบอร์ดโดยให้ด้านเว้าโดยไม่มีอุปกรณ์เพิ่มเติม สิ่งเดียวคือทางด้านขวาของซิมการ์ด ความกว้างของขายึดกลายเป็นมากเกินไป และฉันต้องขัดมันด้วย
รายละเอียดทั้งหมดได้รับการปรับด้วยตาและทดลอง ด้านล่างคือภาพถ่ายทั้งหมดที่กล่าวมาข้างต้น:



ขั้วต่อ ไฟ LED ปุ่ม.

เนื่องจากหวีของฉันหมดฉันจึงต้องถอดขั้วต่อ 6 พินออกจากบอร์ดไดรฟ์ดีวีดีซึ่งฉันบัดกรีเข้ากับ Pro Mini แล้วนี่เพื่อความสะดวกในการกระพริบบอร์ด บริเวณใกล้เคียงฉันบัดกรีขั้วต่อแบบกลม (Nokiev 3.5 มม.) เพื่อชาร์จลิเธียม

ตัวเครื่องของขั้วต่อ 6 พินนั้นปิดท้ายด้วยไฟล์เล็กน้อยเนื่องจากขอบของมันยื่นออกมาเหนือตัวเครื่องเล็กน้อย ช่องเสียบชาร์จพอดีกับผนังเคสพอดี

ที่อีกด้านหนึ่งของบอร์ด ฉันบัดกรีปุ่มเพื่อรีบูทอุปกรณ์และไฟ LED สองดวงสำหรับการดีบักเฟิร์มแวร์ - LED สีแดงเชื่อมต่อกับโมดูล GSM, LED สีเขียวอันที่สองเชื่อมต่อกับพินที่ 10 ของ Pro Mini - มันคือ ให้ฉันแก้ไขข้อบกพร่องของโปรแกรมได้ง่ายขึ้น

การปรับเปลี่ยนแบตเตอรี่

แบตเตอรี่ Nokia แบบแบนจากโทรศัพท์ Nokia นั้นมีไม่น้อยไปกว่ารุ่น 18650 แต่หลายคนก็ปฏิเสธที่จะใช้เนื่องจากความไม่สะดวกในการเชื่อมต่อหน้าสัมผัสซึ่งฝังลึกเข้าไปในแบตเตอรี่นั่นเอง ไม่พึงประสงค์ที่จะบัดกรีพวกเขาดังนั้นจึงตัดสินใจใช้วิธีการที่เสนอโดยสิ่งเหล่านี้คือสร้างบล็อกการติดต่อด้วยตัวคุณเองจากยางลบในสำนักงานและลวดทองแดง (หนา 1.5 มม.)
ก่อนอื่นฉันเจาะยางลบด้วยลวดสองเส้นที่มีปลายที่ปอกไว้ล่วงหน้าแล้วปรับให้เป็นหน้าสัมผัสของแบตเตอรี่เพื่อให้ระยะห่างระหว่างพวกเขาตรงกัน
ฉันงอปลายแล้วบัดกรีด้วยหัวแร้งแล้วดึงกลับเล็กน้อยโดยใช้ปลายยาวเพื่อให้หน้าสัมผัสที่ได้นั้นถูกฝังลงในยางลบ



กำลังลองใช้แบตเตอรี่:

คุณสามารถยึดบล็อกหน้าสัมผัสด้วยหนังยางหรือพันด้วยเทปพันสายไฟสีน้ำเงิน ซึ่งเป็นสิ่งที่ฉันทำในท้ายที่สุด

การประกอบ.

งานส่วนหลักเสร็จแล้ว เหลือเพียงการประกอบและบันทึก
ฉันใส่แผ่นโฟมยางไว้ระหว่างแบตเตอรี่กับบอร์ด เพื่อไม่ให้มันเคลื่อนเข้าไปในเคสในภายหลัง ฉันบัดกรีตัวเก็บประจุ 2200 µF เพิ่มเติมเพื่อจ่ายไฟให้กับโมดูล

เมื่อเชื่อมต่อการชาร์จ:

กรอบ. แผงขั้วต่อภายนอก

เคสนี้มีจำหน่ายในตลาดวิทยุท้องถิ่นในราคาประมาณ 1.5 ดอลลาร์ หากแปลงเป็นดอลลาร์ ขนาด 95x60x25 มม. ซึ่งเกือบจะเท่ากับซองบุหรี่หนึ่งซอง ฉันเจาะรูหลายรูในนั้น ขั้นแรกสำหรับแผงขั้วต่อ 4 พิน นำมาจากสวิตช์หรี่ไฟที่ไม่ทำงาน
ฉันปลดหน้าสัมผัสด้านนอกทั้งสองออกจากสลักเกลียวด้วยตัวเว้นระยะ รูเจาะสำหรับสลักเกลียวที่ยาวขึ้น ซึ่งจะยึดแผงขั้วต่อทั้งหมดไว้บนตัวเครื่อง แน่นอนว่าในตัวเคสเอง รูด้านนอกทั้งสองรูจะมีขนาดใหญ่และรูตรงกลางทั้งสองรูจะมีขนาดเล็กกว่า - พวกเขาจะมีหน้าสัมผัสเกลียวผ่านรูเหล่านั้น ซึ่งหนึ่งในนั้นเชื่อมต่อกับ VCC Pro Mini และหน้าสัมผัสที่สองเพื่อปักหมุด 2.

แม้ว่าการเจาะรูจะเป็นงานง่าย ๆ เมื่อมองแวบแรก แต่ก็ยังใช้แรงงานไม่น้อย แต่ก็พลาดได้ง่ายมาก ดังนั้นฉันจึงเจาะรูที่มีเส้นผ่านศูนย์กลางเล็กกว่าก่อน จากนั้นจึงเจาะให้ใหญ่กว่านั้น

สำหรับปุ่มกด ฉันเลือกฝาปิดที่มีส่วนบนที่เว้าเล็กน้อยเพื่อให้เข้าถึงได้ง่ายด้วยไม้ขีดหรือคลิปหนีบกระดาษผ่านรูแคบๆ ในเคส

บอร์ดในกรณีที่มีสายแปลง USB-TTL ที่เชื่อมต่ออยู่:

เกี่ยวกับเสาอากาศ
ดังที่คุณอาจสังเกตเห็นตลอดการรีวิวว่าเสาอากาศมีการเปลี่ยนแปลงตลอดเวลาเมื่อฉันทดลองใช้เสาอากาศแบบโฮมเมดต่างๆ ในตอนแรก มีขั้วต่อโคแอกเซียลแบบกลมอยู่บนบอร์ดโมดูล แต่ครั้งที่ห้าที่ใช้เป็นเสาอากาศภายนอก มันก็หลุดออกจากกัน ดังนั้นโปรดจำไว้ว่ามันบอบบาง ด้วยเหตุนี้ ฉันจึงดึงเสาอากาศบน PCB ออกจากเราเตอร์เก่า และบัดกรีเข้ากับบอร์ดโมดูล เพราะ... มันจับตาข่ายได้ดีกว่าสปริงและลวดเล็กน้อย

เมื่อประกอบเข้ากับที่ชาร์จเรียบร้อยแล้วจะมีลักษณะดังนี้:

ทดสอบ. มันทำงานอย่างไร:

นอกจากการทดสอบกับเสาอากาศแล้ว ฉันยังได้ตรวจสอบว่าสัญญาณเตือนจะทำงานอย่างไรเมื่ออยู่ข้างนอก ที่อุณหภูมิ -15 น้ำค้างแข็ง ในการทำเช่นนี้ฉันเพียงแค่วางอวัยวะภายในทั้งหมดลงในภาชนะแล้วทิ้งไว้บนระเบียงข้ามคืนโดยสัญญาณเตือนภัยไม่เริ่มทำงานเหตุผลโดยทั่วไปก็ชัดเจน - ลิเธียมไม่ชอบน้ำค้างแข็ง สิ่งนี้ได้รับการยืนยันจากการทดสอบอื่น โดยที่ฉันทิ้งแบตเตอรี่ไว้ที่บ้าน และนำบอร์ดออกไปข้างนอกโดยใช้สายไฟยาวๆ แล้วปล่อยทิ้งไว้เช่นนั้นเป็นเวลาหนึ่งวันท่ามกลางน้ำค้างแข็งแบบเดียวกัน - มันทำงานราวกับว่าไม่มีอะไรเกิดขึ้น ในทางกลับกัน คงจะแปลกถ้านาฬิกาปลุกไม่ทำงานเพราะ... ในเอกสารข้อมูลสำหรับ Atmega สำหรับโมดูล และสำหรับควอตซ์ อุณหภูมิในการทำงานที่อนุญาตจะสูงถึง -40 องศา

หลักการทำงานถูกจัดระเบียบโดยใช้อินเทอร์รัปต์ภายนอก โดยเริ่มแรกพิน 2 จะถูกปิดไปที่ VCC และด้วยเหตุนี้ โลจิคัล 1 จึงยังคงอยู่ที่พิน และตัวควบคุมอยู่ในโหมดสลีป ทันทีที่หน้าสัมผัสใช้งานไม่ได้และ 0 ปรากฏบนพิน 2 ไมโครคอนโทรลเลอร์จะตื่นขึ้น ลดพินที่ 3 (ซึ่ง BOOT ของโมเด็มเชื่อมต่อผ่านตัวต้านทาน) ลงกราวด์ - โมดูลเริ่มทำงาน MK จะสำรวจโมดูลเป็นระยะ เพื่อความพร้อมและเมื่อจับเครือข่ายได้ก็จะโทรเข้าเบอร์เจ้าของรหัสที่ระบุในรหัสทันที หลังจากปฏิเสธสาย อุปกรณ์จะปิดโดยไม่ส่งสายอีกต่อไป ซึ่งเป็นปัญหากับระบบสัญญาณเตือนภัยของจีนหลายระบบ

ข้อมูลเพิ่มเติม

#รวม #รวม // ไลบรารีซอฟต์แวร์ UART SoftwareSerial gsm (7, 6); // RX (7), TX (6) เป็นโมฆะ wakeUp () () // ตัวจัดการขัดจังหวะว่าง ///////////////////////////// /////////////// เป็นโมฆะ gsmOFF())( // PORTD|=(1<<3); // ВЫКЛЮЧЕНИЕ МОДУЛЯ _delay_ms(10); // gsm.println("AT+CPWROFF"); // ПЕЧАТАЕМ КОМАНДУ OFF PORTB &=~ (1<<2); // выключить LED 10 } // //========================================= void gsmON(){ // PORTD|=(1<<6); // 6-му порту (TX) назначить 1 PORTD &= ~(1<<3); // ЗАПУСК МОДУЛЯ _delay_ms(10); // while(!gsm.find("+PBREADY")); // ждём прочтения тел. книги PORTB |= (1<<2); // включить LED 10 _delay_ms(100); // while(1){ // gsm.println("AT+CREG?"); // проверяем в сети ли модуль if (gsm.find("0,1")) break; // если сеть есть, выходим из цикла _delay_ms(400); // проверка раз в 0,4 сек } // } // /////////////////////////////////////////// // void sleepNow(){ // функция засыпания ADCSRA = 0x00; // отключить подсистему АЦП (экономия 140 мкА) PORTD&=~(1<<6); // в вывод TX поставить 0 _delay_ms(100); // set_sleep_mode(SLEEP_MODE_PWR_DOWN); // режим сна PWR_DOWN sleep_enable(); // включение сна attachInterrupt(0, wakeUp, LOW); // включить прерывания sleep_mode(); // sleep_disable(); // detachInterrupt(0); // отключить прерывания } void setup(){ gsm.begin(9600); // скорость работы UART DDRD = B01001000; // 3-й и 6-й выводы на выход DDRB |= (1<<2); // вывод 10 на выход gsmON(); // запуск модуля для теста gsmOFF(); // выключаем модуль } void loop(){ if (!(PIND&(1<<2))){ // если на 0-ом прерывании появился 0 gsmON(); gsm.println("ATD+79xxxxxxxxx;"); // отзваниваемся, в ответ приходит OK и CONNECT _delay_ms(100); if (gsm.find("OK")) while(1){ // ожидание сброса вызова gsm.println("AT+CPAS"); // при каждой итерации опрашиваем модуль if (gsm.find("0")) break; // если 0, то выходим из цикла while _delay_ms(100); // проверка раз в 0,1 сек } for (char i=0; i<14; i++){ PORTB|=(1<<2); // LED 10 ON _delay_ms(200); PORTB&=~(1<<2); // LED 10 OFF _delay_ms(200); } gsmOFF(); // выключить модуль _delay_ms(10); while(1); // блокируем программу } else { sleepNow(); // укладываем контроллер спать } }

แผนภาพวงจร (ไม่มีแผงควบคุมการคายประจุ)



ข้อสรุปและความคิด แผน

มีการใช้สัญญาณเตือนที่เดชาฉันพอใจกับงานนี้อย่างไรก็ตามด้วยการศึกษา AVR เพิ่มเติมจึงมีแนวคิดมากขึ้นสำหรับการแก้ไขเพิ่มเติม Arduino ที่มี Wiring ภาษาหลอกทำให้ฉันหงุดหงิดจริงๆ เพราะ... ช่วงเวลาที่ไม่พึงประสงค์ถูกค้นพบในงานนี้ เมื่อฉันใช้ฟังก์ชันพอร์ต digitalWrite(); หรือ pinMode(); - ด้วยเหตุผลบางอย่างโมดูล GSM ค้างบ่อยมาก แต่มันก็คุ้มที่จะแทนที่ด้วยลูกเล่นอย่าง DDRB|=(1<การดำเนินการเข้าถึงพอร์ตโดยตรงเท่านั้นที่ทำให้อุปกรณ์ทำงานได้ตามที่ต้องการ

เรื่องการประหยัดพลังงาน...
อุปกรณ์ที่ประกอบนั้นใช้งานได้สี่เดือนเต็มโดยไม่ต้องชาร์จและยังคงทำงานต่อไปแม้ว่าจะพูดว่า "สลีป" จะถูกต้องกว่าก็ตาม สามารถตรวจสอบได้เพียงแค่รีบูตผ่านปุ่มสีขาว ด้วยการใช้พลังงาน 250 μA (ผ่านโคลง LE33) และแบตเตอรี่ ~ 1430 mAh แม้ว่าจะโอเคเนื่องจากแบตเตอรี่มีความใหม่ แต่ลองปัดให้เป็น 1,000 mAh ปรากฎว่าอุปกรณ์สามารถสลีปได้ประมาณ 5.5 เดือนโดยไม่ต้องชาร์จใหม่ หากคุณยังคงถอดโคลงออกก็สามารถคูณเวลาทำงานได้อย่างปลอดภัย 10 เท่า แต่ในกรณีของฉัน ไม่จำเป็นเพราะคุณยังต้องใช้ยอดคงเหลือจากซิมการ์ดทุกๆ สามเดือน ขณะเดียวกันก็สามารถตรวจสอบและชาร์จอุปกรณ์ได้
ตัวอย่างการประหยัดพลังงานที่ให้ไว้ในรีวิวยังห่างไกลจากขีดจำกัดเพราะว่า เมื่อพิจารณาจากข้อมูลจากแผ่นข้อมูลคุณสามารถลดความถี่สัญญาณนาฬิกาของไมโครคอนโทรลเลอร์ (และทำได้โดยการติดตั้งฟิวส์) ลงเหลือ 1 MHz และหากคุณใช้แรงดันไฟฟ้า 1.8 V ปริมาณการใช้จะลดลงต่ำกว่าแถบ 1 μA ในโหมดแอคทีฟ . ดีมาก! แต่ถ้า MK ถูกโอเวอร์คล็อกจาก RC oscillator ภายใน ปัญหาอื่นก็จะปรากฏขึ้น - อากาศ UART จะอุดตันด้วยขยะและข้อผิดพลาดโดยเฉพาะอย่างยิ่งหากคอนโทรลเลอร์ถูกทำให้ร้อนหรือเย็นลง

เมื่อเสร็จสิ้น...
1) สายไฟธรรมดาที่ติดตั้งให้แตกหักนั้นไม่สะดวกนัก ฉันวางแผนที่จะทดลองกับเซ็นเซอร์ฮอลล์และสวิตช์กกแม้ว่าพวกเขาจะพูดถึงอย่างหลังว่ามันไม่น่าเชื่อถือมากนักเพราะหน้าสัมผัสภายในสามารถเกาะติดได้
2) เป็นการดีที่จะเพิ่มความสามารถในการเปลี่ยน "หมายเลขเจ้าของ" โดยไม่ต้องมีส่วนร่วมของคอมพิวเตอร์และกระพริบ คุณจะต้องทำงานกับ EEPROM
3) ลองหยุดการทำงานของตัวจับเวลาจ้องจับผิด แต่ไม่ใช่เพียงเพื่อความอยากรู้อยากเห็น แต่เพื่อให้ไมโครคอนโทรลเลอร์ตื่นขึ้นเองเป็นระยะๆ วัดแรงดันไฟฟ้าของแบตเตอรี่ และส่งค่าผลลัพธ์ทาง SMS เพื่อทราบว่าแบตเตอรี่เหลือน้อยเพียงใด
4) แผงโซลาร์เซลล์สามารถขจัดความจำเป็นในการชาร์จอุปกรณ์ได้อย่างสมบูรณ์ โดยเฉพาะอย่างยิ่งสำหรับแบตเตอรี่ความจุต่ำ
5) ฉันต้องการซื้อแบตเตอรี่ LiFePo4 เป็นเวลานานซึ่งตามรีวิวสามารถทนต่อน้ำค้างแข็งได้ดี แต่ในขณะที่ฉันกำลังมองหาแบตเตอรี่ที่เหมาะสม ฤดูใบไม้ผลิก็มาถึงอย่างเงียบ ๆ แล้ว
6) ทำงานเกี่ยวกับองค์ประกอบด้านสุนทรียภาพ

คุณควรซื้อ Pro Mini รุ่นใด
หากคุณไม่มีเครื่องเป่าผม ลองใช้ Pro Mini “RobotDyn” Atmega168PA 3.3V เลือก LED ที่มีอะไรบางอย่างแหลมคม และคุณมี ~250 µA
หากคุณมีเครื่องเป่าผม จากนั้นใช้บอร์ดใดๆ ประสานโคลงและ LED สำหรับแหล่งจ่ายไฟ - คุณจะได้รับกระแสไฟประมาณ 20 µA

เพียงเท่านี้ หวังว่ารีวิวจะน่าสนใจและมีประโยชน์

วางแผนที่จะซื้อ +174 เพิ่มในรายการโปรด ฉันชอบรีวิว +143 +278