คอมพิวเตอร์ หน้าต่าง อินเทอร์เน็ต

คำอธิบายโมดูล Sim800l gprs gsm โมดูล GSM GPRS SIM800L MicroSIM พร้อมเสาอากาศ ภาพร่างสำหรับการทำงานกับโมดูล GSM

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

โมดูล GSM GPRS

โมดูล GSM ใช้เพื่อขยายขีดความสามารถของบอร์ด Arduino ทั่วไป - ส่ง SMS, โทรออก, แลกเปลี่ยนข้อมูลผ่าน GPRS มีโมดูลหลายประเภท ที่ใช้บ่อยที่สุดคือ SIM900, SIM800L, A6, A7

คำอธิบายของโมดูล SIM900

โมดูล SIM900 ใช้ในระบบอัตโนมัติต่างๆ เมื่อใช้อินเทอร์เฟซ UART ข้อมูลจะถูกแลกเปลี่ยนกับอุปกรณ์อื่น โมดูลให้ความสามารถในการโทรออก แลกเปลี่ยนข้อความ การทำงานของโมดูลขึ้นอยู่กับส่วนประกอบ SIM900 ที่พัฒนาโดย SIMCom Wireless Solution

ข้อมูลจำเพาะ:

  • ช่วงแรงดันไฟฟ้า 4.8-5.2V;
  • ในโหมดปกติ กระแสถึง 450 mA กระแสสูงสุดในโหมดพัลส์คือ 2 A;
  • รองรับ 2G;
  • กำลังส่ง: 1 W 1800 และ 1900 MHz, 2 W 850 และ 900 MHz;
  • มีโปรโตคอล TCP และ UDP ในตัว
  • GPRS มัลติสล็อต คลาส 10/8;
  • อุณหภูมิในการทำงานตั้งแต่ -30C ถึง 75C

เมื่อใช้อุปกรณ์ คุณสามารถติดตามเส้นทางการขนส่งร่วมกับอุปกรณ์ GLONASS หรือ GPS ความสามารถในการส่งข้อความ SMS ใช้ในการเตือนภัยแบบไร้สายและระบบรักษาความปลอดภัยต่างๆ

คำอธิบายของโมดูล SIM800L

โมดูลนี้ใช้ส่วนประกอบ SIM800L และใช้เพื่อส่ง SMS โทรออก และแลกเปลี่ยนข้อมูลผ่าน GPRS มีการติดตั้งไมโครซิมการ์ดในโมดูล อุปกรณ์มีเสาอากาศในตัวและขั้วต่อซึ่งคุณสามารถเชื่อมต่อกับเสาอากาศภายนอกได้ จ่ายพลังงานให้กับโมดูลจากแหล่งภายนอกหรือผ่านตัวแปลง DC-DC การควบคุมดำเนินการโดยใช้คอมพิวเตอร์ผ่าน UART, Arduino, Raspberry Pi หรืออุปกรณ์ที่คล้ายกัน

ข้อมูลจำเพาะ:

  • ช่วงแรงดันไฟฟ้า 3.7V - 4.2V;
  • รองรับเครือข่าย 4 แบนด์ 900/1800/1900 MHz;
  • GPRS คลาส 12 (85.6 กิโลไบต์/วินาที);
  • กระแสสูงสุด 500 mA;
  • รองรับ 2G;
  • ค้นหาอัตโนมัติในสี่ย่านความถี่
  • อุณหภูมิในการทำงานตั้งแต่ -30C ถึง 75C

คำอธิบายของโมดูล A6

โมดูล A6 ได้รับการพัฒนาโดย AI-THINKER ในปี 2559 อุปกรณ์นี้ใช้สำหรับส่งข้อความ SMS และแลกเปลี่ยนข้อมูลผ่าน GPRS บอร์ดนี้ใช้พลังงานต่ำและมีขนาดเล็ก อุปกรณ์นี้เข้ากันได้กับผู้ให้บริการโทรศัพท์เคลื่อนที่ของรัสเซีย

ข้อมูลจำเพาะ:

  • ช่วงแรงดันไฟฟ้า 4.5 - 5.5V;
  • แหล่งจ่ายไฟ 5V;
  • อุณหภูมิในการทำงานตั้งแต่ -30C ถึง 80C;
  • ปริมาณการใช้กระแสไฟฟ้าสูงสุด 900mA;
  • GPRS คลาส 10;
  • รองรับโปรโตคอล PPP, TCP, UDP, MUX

โมดูลรองรับการ์ด microsim

คำอธิบายของโมดูล A7

A7 เป็นโมดูลล่าสุดจาก AI-THINKER เมื่อเทียบกับรุ่นก่อน A6 มี GPS ในตัวเพื่อลดความซับซ้อนในการออกแบบอุปกรณ์

ข้อมูลจำเพาะ:

  • ช่วงแรงดันไฟฟ้า 3.3V-4.6V;
  • จ่ายแรงดัน 5V;
  • ความถี่ 850/900/1800/1900 MHz;
  • GPRS คลาส 10: สูงสุด 85.6 กิโลบิตต่อวินาที;
  • การลดเสียงสะท้อนและเสียงรบกวน

อุปกรณ์รองรับไมโครซิมการ์ด โมดูลรองรับการแลกเปลี่ยนสาย, การแลกเปลี่ยนข้อความ SMS, การส่งข้อมูลผ่าน GPRS, การรับสัญญาณผ่าน GPS

จะซื้อโมดูล GSM สำหรับ arduino ได้ที่ไหน

ตามปกติ ก่อนที่คุณจะเริ่ม เคล็ดลับและลิงก์ที่มีประโยชน์ไปยังผู้ขาย Aliexpress

โมดูล KEYES SIM900 GSM GPRS คุณภาพสูงมาก โมดูล SIM800C สำหรับ arduino จากซัพพลายเออร์ที่เชื่อถือได้
เกราะป้องกันการพัฒนาที่เข้ากันได้กับ Arduino ซึ่งใช้โมดูล SIM900 GPRS/GSM โมดูล GSM ขนาดเล็ก A6 GPRS ราคาไม่แพง

การเชื่อมต่อ GSM GPRS Shield กับ Arduino

ในหัวข้อนี้ เราจะพิจารณาปัญหาของการเชื่อมต่อโมดูล GSM กับบอร์ด Aduino ตัวอย่างเกือบทั้งหมดอ้างอิงจาก Arduino Uno แต่ตัวอย่างส่วนใหญ่จะใช้ได้กับบอร์ด Mega, Nano และอื่นๆ

การเชื่อมต่อโมดูล SIM800

ในการเชื่อมต่อ คุณต้องมีบอร์ด Arduino, โมดูล SIM800L, ตัวแปลงแรงดันไฟฟ้าแบบ step-down, สายไฟสำหรับเชื่อมต่อ และแบตเตอรี่ 12V โมดูล SIM800L ต้องการแรงดันไฟฟ้าที่ไม่ได้มาตรฐาน 3.7V สำหรับ Arduino คุณต้องใช้ตัวแปลงแรงดันไฟฟ้าแบบสเต็ปดาวน์

pinout ของโมดูล SIM800 แสดงในรูปภาพ

ต้องเชื่อมต่อบอร์ด Arduino เข้ากับคอมพิวเตอร์ผ่านสาย USB เชื่อมต่อแบตเตอรี่ 12V ผ่านตัวแปลง: -12V ไปยังกราวด์ Arduino, จากกราวด์ถึงตัวแปลงเป็นลบ, +12V เพื่อแปลงเป็นบวก เอาต์พุตจากโมดูล TX และ RX จะต้องเชื่อมต่อกับพิน 2 และ 3 บน Arduino สามารถเชื่อมต่อหลายโมดูลกับพินดิจิทัลใดก็ได้

การเชื่อมต่อโมดูล A6

โมดูล A6 มีราคาต่ำกว่า SIM900 และเชื่อมต่อกับ Arduino ได้ง่ายมาก โมดูลนี้ใช้พลังงานจาก 5V ดังนั้นจึงไม่จำเป็นต้องมีองค์ประกอบลดแรงดันไฟฟ้าเพิ่มเติมสำหรับการเชื่อมต่อ

ในการเชื่อมต่อ คุณจะต้องมีบอร์ด Arduino (ในกรณีนี้คือ Arduino UNO) โมดูล A6 GSM และสายเชื่อมต่อ แผนภาพการเชื่อมต่อแสดงไว้ในรูป

เอาต์พุต RX จากโมดูล GSM จะต้องเชื่อมต่อกับ TX บนบอร์ด Arduino เอาต์พุต TX จะต้องเชื่อมต่อกับขา RX บน Arduino กราวด์จากโมดูลเชื่อมต่อกับกราวด์บนไมโครคอนโทรลเลอร์ ต้องเชื่อมต่อพิน Vcc บนโมดูล GSM กับ PWR_KEY

การเชื่อมต่อโดยใช้ตัวป้องกัน GSM-GPRS

ก่อนเชื่อมต่อสิ่งสำคัญคือต้องใส่ใจกับแรงดันไฟฟ้าของแผงป้องกัน กระแสในขณะที่โทรหรือส่งข้อมูลสามารถเข้าถึงค่า 15-2 A ดังนั้นคุณจึงไม่ควรจ่ายไฟให้กับตัวป้องกันโดยตรงจาก Arduino

ก่อนเชื่อมต่อกับ Arduino คุณต้องติดตั้งซิมการ์ดบนตัวป้องกัน GSM-GPRS คุณต้องตั้งค่าจัมเปอร์ TX และ RX ตามที่แสดงในรูป

การเชื่อมต่อทำได้ดังนี้ - หน้าสัมผัสแรก (สายสีเหลืองในรูป) จากตัวป้องกันจะต้องเชื่อมต่อกับ TX บน Arduino พินที่สอง (สายสีเขียว) เชื่อมต่อกับ RX บน Arduino พื้นจากโล่เชื่อมต่อกับพื้นจาก aruino จ่ายไฟให้กับไมโครคอนโทรลเลอร์ผ่านสาย USB

เค้าโครงของการเชื่อมต่อระหว่างโล่และบอร์ด Arduino แสดงอยู่ในรูป

ในการทำงาน คุณจะต้องติดตั้งไลบรารี GPRS_Shield_Arduino

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

คำอธิบายสั้น ๆ ของการโต้ตอบผ่านคำสั่ง AT

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

รายการคำสั่ง AT ที่ใช้มากที่สุด:

  • AT - เพื่อตรวจสอบการเชื่อมต่อที่ถูกต้องของโมดูล หากทุกอย่างเรียบร้อย OK จะถูกส่งกลับ
  • A/ - ทำซ้ำคำสั่งก่อนหน้า
  • AT+IPR? – รับข้อมูลเกี่ยวกับความเร็วพอร์ต การตอบกลับจะเป็น +IPR: 0 ตกลง (0 ในกรณีนี้โดยอัตโนมัติ)
  • เอที+ไอซีเอฟ? - การตั้งค่าการส่ง การตอบสนองจะเป็น +ICF: bit, parity
  • เอที+ไอเอฟซี? - การควบคุมการส่ง คำตอบคือ +IFC: เทอร์มินัลจากโมดูล, โมดูลจากเทอร์มินัล (0 - ไม่มีการควบคุม, 1 - การควบคุมซอฟต์แวร์, 2 - ฮาร์ดแวร์)
  • AT+GCAP - แสดงความสามารถของโมดูล ตัวอย่างการตอบกลับคือ +GCAP:+FCLASS,+CGSM
  • AT+GSN - รับโมดูล IMEI ตัวอย่างการตอบกลับ 01322600XXXXXXX
  • เอที+คอปส์? – แสดงโอเปอเรเตอร์ที่มีอยู่
  • AT+CPAS – สถานะของโมดูล รับสาย +CPAS: 0. 0 - พร้อมใช้งาน, 3 - สายเรียกเข้า, 4 - การเชื่อมต่อด้วยเสียง, 2 - ไม่ทราบ
  • AT+CCLK? – ข้อมูลเกี่ยวกับเวลาและวันที่ปัจจุบัน
  • AT+CLIP=1 – เปิด/ปิด ID ผู้โทร 1 - เปิดใช้งาน 0 - ปิดใช้งาน
  • AT+CSCB=0 – รับข้อความ SMS พิเศษ 0 - อนุญาต 1 - ห้าม
  • AT+CSCS= “GSM” – การเข้ารหัสข้อความ SMS คุณสามารถเลือกหนึ่งในการเข้ารหัสต่อไปนี้: IRA, GSM, UCS2, HEX, PCCP, PCDN, 8859-1
  • AT+CMEE=0 – รับข้อมูลข้อผิดพลาด
  • AT+CPIN=XXXX - ป้อนรหัส PIN ของซิมการ์ด
  • AT&F - รีเซ็ตเป็นการตั้งค่าจากโรงงาน
  • AT+CPOWD=1 – เร่งด่วน(0) หรือปกติ(1) การปิดโมดูล
  • ATD+790XXXXXXXX – โทรไปยังหมายเลข +790XXXXXXXXX
  • ATA - รับสาย
  • AT+CMGS=”+790XXXXXXXXX”>ทดสอบ SMS – ส่งข้อความ SMS ไปที่ +790XXXXXXXX

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

ภาพร่างสำหรับการทำงานกับโมดูล GSM

การส่ง SMS ในตัวอย่างของ SIM900

ก่อนส่งข้อความ คุณต้องกำหนดค่าโมดูล ก่อนอื่น คุณต้องแปลงข้อความที่ส่งเป็นรูปแบบข้อความ ในการทำเช่นนี้ มีคำสั่ง AT+CMGF=1 จำเป็นต้องถ่ายโอนการเข้ารหัสไปยัง GSM ด้วยคำสั่ง AT + CSCS \u003d "GSM" การเข้ารหัสนี้สะดวกที่สุดเนื่องจากมีการแสดงอักขระในรหัส ASCII ซึ่งคอมไพเลอร์เข้าใจได้ง่าย

จากนั้นคุณต้องกดข้อความ SMS ในการดำเนินการนี้ คำสั่งจะถูกส่งไปพร้อมกับหมายเลขสมาชิก AT + CMGS = "+79XXXXXXXXX" r โดยเสนอให้กดข้อความ SMS คุณต้องส่งข้อความ เมื่อเสร็จสิ้นคุณต้องส่งรหัสผสม Ctrl + Z โมดูลจะอนุญาตให้ส่งข้อความไปยังผู้รับ เมื่อส่งข้อความตกลงจะถูกส่งกลับ

การโต้ตอบกับโมดูลขึ้นอยู่กับดัชนีที่กำหนดให้กับข้อความใหม่แต่ละข้อความ ด้วยดัชนีนี้ คุณสามารถระบุได้ว่าต้องการลบหรืออ่านข้อความใด

รับ SMS หากต้องการอ่านข้อความ SMS ให้ใช้คำสั่ง AT + CNMI = 2,2,0,0,0 เมื่อข้อความมาถึงโมดูล ข้อความจะส่งไปยังพอร์ตอนุกรม +CMTI: "SM",2 (ในกรณีนี้ 2 คือหมายเลขซีเรียลของข้อความ) หากต้องการอ่าน คุณต้องส่งคำสั่ง AT+CMGR=2

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

#รวม

หากซิมการ์ดถูกบล็อก คุณต้องป้อนรหัสพิน หากไม่ต้องการ PIN ช่องนี้ควรเว้นว่างไว้

#กำหนดพินนัมเบอร์ ""

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

บูลีน notConnected = จริง;

ฟังก์ชัน gsmAccess.begin() ใช้เพื่อเชื่อมต่อกับเครือข่าย เมื่อสร้างการเชื่อมต่อแล้ว ค่า GSM_READY จะถูกส่งกลับ

vcs.hangCall(); – ฟังก์ชั่นที่ระบุว่าโมเด็มพร้อมที่จะรับสาย

getvoiceCallStatus() - รับสถานะของร่าง ถ้ามีคนโทรมา ก็จะส่งกลับ RECEIVINGCALL ในการบันทึกหมายเลข คุณต้องใช้ฟังก์ชัน retrieveCallingNumber() เมื่อรับสาย TALKING จะถูกส่งกลับ ภาพร่างจะรอให้ตัวละครขึ้นบรรทัดใหม่เพื่อยุติการสนทนา

สร้างการเชื่อมต่อ GPRS และส่งข้อมูลไปยังเซิร์ฟเวอร์ระยะไกล

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

ในการส่งข้อมูลไปยังเซิร์ฟเวอร์ คุณต้องส่งคำสั่งต่อไปนี้:

AT+SAPBR=1,1 – การเปิดผู้ให้บริการ

คำสั่งสามคำสั่งถัดไปเกี่ยวข้องกับการตั้งค่าการเชื่อมต่อเครือข่าย

AT+SAPBR=3,1,\”APN\”,\”internet.mts.ru\” – เลือกตัวดำเนินการ mts ชื่อจุดเชื่อมต่อ

AT+SAPBR=3,1,\”USER\”,\”mts \” – mts การเลือกผู้ใช้

AT+SAPBR=3,1,\”PWD\”,\”mts \”

AT+SAPBR=1,1 – การสร้างการเชื่อมต่อ

AT+HTTPINIT - การเริ่มต้น http

AT+HTTPPARA=”URL”, – ที่อยู่ URL

AT+HTTPREAD - กำลังรอการตอบกลับ

AT+HTTPTERM หยุด http

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

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

ไม่หนาแน่น ตัวบอร์ดมีโมดูลในตัว, ตัวยึดไมโครสัญญลักษณ์, แทนทาลัม, เซรามิกสองสามตัว, ตัวต้านทานและ LED ชาวจีนวางตำแหน่งโมดูลนี้เป็นเกราะป้องกันสำหรับ Arduino ดูเหมือนว่า Arduina จะใช้พลังงานจาก 5 โวลต์และส่วนใหญ่มักจะมาจาก USB และหากหน่วยความจำของฉันไม่ขัดข้อง โมดูล SIMcom จะกินจาก 3.6v เป็น 4.2 และในขณะเดียวกันก็ต้องการ 2A ที่จุดสูงสุด โอเคฉันเชื่อมต่อกับบอร์ดดีบั๊กและ ... ภาษาจีน !!! อะไรก็ได้ที่จะทำให้ราคาถูกลง โมดูลนี้ไม่ทำงานตั้งแต่ 5 โวลต์ ความทรงจำของฉันไม่ได้ทำให้ฉันผิดหวัง ในระยะสั้นคุณสามารถโต้เถียงกันเป็นเวลานานถึงวิธีเปิดเครื่อง แต่ฉันจะแสดงให้คุณเห็นอุปกรณ์ที่ยอดเยี่ยมชิ้นหนึ่งที่จะแก้ปัญหานี้ได้อย่างง่ายดาย คุณสามารถซื้อได้ที่เดียวกับ SIM800L คือใน ChipResistor โมดูลนี้เป็นพัลเซอร์แบบ step-down สูงสุด 3A

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

นี่คือแผนผังมุมมองด้านบน

ความวุ่นวายของฉันมีลักษณะเช่นนี้

ตรวจสอบสั้น ๆ ใส่ซิมการ์ดเชื่อมต่อ USB-RS232 และพลังงาน หากไม่มีควันและไฟ LED บนโมดูลกะพริบแสดงว่าทุกอย่างเรียบร้อยดี ต่อไป เปิดเทอร์มินัล ฉันมี PuTTYn แล้วโยนคำสั่งแรก ที่. ในการตอบสนองหากได้รับ ตกลงหมายความว่าทุกอย่างกำลังทำงานอยู่

บิงโก! ต่อไปเราโยน เอที+คอปส์?และหากคุณได้รับการตอบกลับจากโอเปอเรเตอร์ หากต้องการแก้ไข ให้โทรหาตัวเองโดยพิมพ์คำสั่ง ATD89161234567;. ต้องมีเครื่องหมายอัฒภาค! หากโมดูลผ่าน แสดงว่าสามารถทำงานร่วมกับเครือข่ายของเราได้ ฉันทดสอบกับผึ้ง ถ้าตอนนี้ฉันบอกว่านี่คือทั้งหมดพวกเขาจะอาบน้ำฉันด้วยไข่และมะเขือเทศ แต่ฉันไม่ต้องการสิ่งนี้))) ดังนั้นเรามารวบรวมสิ่งที่มีประโยชน์จากสิ่งนี้ ตัวอย่างเช่น สัญญาณเตือนภัย เราจะขันโมดูลเข้ากับ MK และเราจะตรวจสอบสภาพของขาสองสามขา ทันทีที่การเปลี่ยนแปลงปรากฏขึ้นที่ขาเราจะส่ง SMS ทันทีพร้อมการแจ้งเตือนเกี่ยวกับการเปลี่ยนแปลงนี้ MK จะเป็น ATmegs32a ขันปุ่มบนขา PB2 และ PB3 ปุ่มมี GND ทั่วไป และเราใช้ตัวต้านทานในตัวสำหรับการดึงขึ้น ในการทำงานกับโมดูล เราจะเขียนฟังก์ชันสองสามอย่าง ได้แก่ การเริ่มต้นและการส่ง SMS ไปกันเถอะ

ก่อนอื่นมากำหนดค่าโปรเจ็กต์โดยใช้ตัวสร้างรหัส axlib เมื่อต้องการทำเช่นนี้ เลือก MK ATmega32 ควอตซ์ภายนอกบน 7372800 (จำเป็นต้องใช้ควอตซ์ดังกล่าวเพื่อลดข้อผิดพลาดระหว่างการส่งผ่าน UART). มาตั้งค่า UART เป็นความเร็ว 9600 กัน จากนั้นหลังจากสร้างโปรเจ็กต์แล้ว ให้เปิดใน AtmelStudio 6 ก่อนอื่นให้สร้างไฟล์ sim800l.hที่รากของโครงการและรวมไว้ #รวม #รวม "main_init.h" #รวม "axlib/usart.h" #รวม "sim800l.h"ตอนนี้เราไปที่ไฟล์ที่เราสร้างขึ้นและเขียนข้อกำหนดที่เราต้องการ // คำสั่งแรก ข้อความตกลง#กำหนด SIM800L_AT_AT "AT" // คำสั่งป้อนหมายเลขสมาชิกเพื่อส่งข้อความ SMS#กำหนด SIM800L_AT_SMS "AT+CMGS=\"" // การตั้งค่ารูปแบบแพ็คเก็ต#กำหนด SIM800L_AT_SMS_SET "AT+CMGF=1"ดังนั้นเราจึงเขียนคำจำกัดความเพื่อความเรียบง่าย ตอนนี้เรากำลังเขียนฟังก์ชันการเริ่มต้นที่ซับซ้อน เป็นโมฆะ sim800l_init (เป็นโมฆะ) ( usart_str_rn (SIM800L_AT_AT); )ความซับซ้อนทั้งหมดของฟังก์ชันนี้อยู่ที่ว่าเราเพียงแค่ส่งคำสั่ง AT ไปยังโมดูล โมดูลควรเริ่มทำงานด้วยคำสั่งนี้ ฟังก์ชันถัดไปซับซ้อนขึ้นเล็กน้อย BYTE sim800l_send_sms (BYTE *จำนวน, BYTE *ข้อความ, ความยาว BYTE) ( // อาร์เรย์สำหรับรับการตอบกลับจากโมดูลไบต์ str = (0); _delay_ms(1000); // ตั้งค่าโหมดการถ่ายโอน usart_str_rn (SIM800L_AT_SMS_SET); // การส่งหมายเลขโทรศัพท์ของผู้ใช้บริการ usart_str_out(SIM800L_AT_SMS, 9); usart_str_out(จำนวน, 12); usart_str_rn("\""); // รอให้ป้อนข้อความเพื่อเริ่มต้น _delay_ms(3000); // ส่งข้อความ usart_str_out (ข้อความ, ความยาว); str = 0x1A; สตริ = 0; usart_str_rn(str); //รอค่ะ usart_str_in(str, 18); if(!((str == 0x4F) & (str == 0x4B))) คืนค่า 0x34; กลับ 0x30; )ที่นี่ฉันเข้าใจสาระสำคัญทั้งหมดของความเลวของโมดูลนี้ สิ่งนี้ปฏิเสธโดยสิ้นเชิงที่จะส่งคืนคำตอบอย่างสม่ำเสมอ ทันทีที่ฉันไม่บิดเบือนและตั้งค่าการหมดเวลาครั้งใหญ่สำหรับการมาถึงของข้อมูล และสร้างความล่าช้า ในระยะสั้นเขาถ่มน้ำลายกับคำตอบที่ล่องลอยไปตามกาลเวลาและล่าช้า ในการทำงานก็ไม่รบกวนมากนัก เราจ่ายในราคาถูก ไปที่ฟังก์ชั่นกันเถอะ ก่อนอื่น เรากระตุ้นการตั้งค่าการถ่ายโอนแพ็กเก็ต สิ่งนี้จำเป็นสำหรับโมดูลในการส่งข้อมูลหลังจากได้รับหมายเลขโทรศัพท์ จากนั้นจึงรอรับข้อความ จากนั้นเราจะโอนหมายเลขโทรศัพท์ของผู้สมัครสมาชิกที่เราส่ง SMS ให้ เรานำมาจากอาร์กิวเมนต์ของฟังก์ชันนี้ มีอันเดียว แต่! หมายเลขโทรศัพท์ต้องมีรูปแบบดังนี้ +79161234567 จำเป็นต้องมี +7 โมดูลนี้ไม่เข้าใจ 8 ซึ่งแตกต่างจากยุค 900 หลังจากส่งหมายเลขสมาชิกแล้วเราก็ทื่อเป็นเวลา 3 วินาที ตลอดเวลานี้ โมดูลเคี้ยวตัวเลขอย่างช้าๆ และใครจะรู้ว่าอัลกอริทึมอะไร แค่ความล่าช้าเหล่านี้ฉันก็ปลิวไปแล้ว ทำให้เราได้รับคำเชิญให้ป้อนข้อความพร้อมไอคอน > แดกดัน 3 วินาทีเพียงพอที่จะเคี้ยวและพ่นคำเชิญ หลังจาก 3 วินาทีเราจะโยนข้อความ นอกจากนี้เรายังนำมาจากอาร์กิวเมนต์ของฟังก์ชันนี้และความยาวของข้อความสำหรับฟังก์ชัน UART ท้ายที่สุด เราไม่ทราบว่าคุณจะส่งจดหมายกี่ฉบับ ถ้าคุณมองอย่างใกล้ชิด คุณจะเห็นไบต์ 0x1Aในตอนท้ายของข้อความ นี่คือทีม ctrl+zจำเป็นสำหรับการส่งข้อความให้เสร็จสมบูรณ์ เมื่อโมดูลได้รับคำสั่งนี้ มันจะทิ้งทุกอย่างและส่ง SMS ทุกอย่างเมื่อไฟล์นี้เสร็จสิ้นให้ไปที่ไฟล์โปรแกรมหลัก #define BUTTON_1 "Nazhata คนอปกา 1" #define BUTTON_2 "Nazhata คนอปกา 2" // การเริ่มต้นของโมดูล GSM sim800l_init(); // การตั้งค่าพอร์ต I/O สำหรับการอ่าน DDRB=0x00; // เปิดใช้งานการดึงด้วยตัวต้านทานภายใน PORTB |= (1 // ถ้ากดปุ่ม 1 ถ้า(!(PINB & (1 // รอจนกว่าปุ่มจะถูกปล่อยในขณะที่(!(PINB & (1 // ถ้ากดปุ่ม 2 ถ้า(!(PINB & (1 // เรารอจนกว่าปุ่มจะถูกปล่อยในขณะที่(!(PINB & (1เราเห็นอะไรที่นี่ สองกำหนดด้วยข้อความที่เตรียมไว้ล่วงหน้า จากนั้นเราเริ่มต้นโมดูล จากนั้นเราปรับขา 2 และ 3 ของพอร์ต B เป็นอินพุตแล้วดึงตัวต้านทานภายในไปที่กำลังบวก จากนั้นในลูปไม่สิ้นสุด เราจะตรวจสอบการกดปุ่ม ทันทีที่กดปุ่มใด ๆ เราจะตกอยู่ในวงวนไม่รู้จบทันทีและรอจนกว่าปุ่มจะถูกปล่อย หลังจากปล่อยปุ่ม เราจะเรียกใช้ฟังก์ชันการส่ง SMS ด้วยข้อความที่กำหนดไว้ก่อนหน้านี้ แค่นั้นแหละ))) ฉันจะไม่โพสต์โครงการเพราะสามารถสร้างโดยตัวสร้าง axlib และคัดลอกวางจากที่นี่ โอ้ใช่นั่นคือสิ่งที่ฉันได้รับทางโทรศัพท์))


ฟีว่า 09.10.16 23:29

จากข้อมูลของ MT-System ซีรีส์ 800 คือรุ่นต่อจากซีรีส์ 900 ซึ่งคาดว่าจะเลิกใช้ภายในสิ้นปี 2559 ดังนั้นจึงค่อนข้างแปลกที่จะอ่านเกี่ยวกับวงกบที่น่ารำคาญเช่นคำตอบที่ถูกบีบ
อาจมีบางอย่างใหม่ในชุดข้อมูลหรือไม่ หรือคุณเพียงแค่เปรียบเทียบกับ 900 เท่านั้น โยนคำสั่งโดยไม่ทำให้สว่างขึ้นเป็นพิเศษ?

อเล็กซี่ 09.10.16 23:39 น

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

ยูริ 05.03.17 20:36

บอกวิธีบังคับให้โมดูลส่งยอดคงเหลือตามคำขอของ USSD อ่านและตั้งค่าระดับบนขา Avrk โดยทั่วไปฉันต้องการสร้าง "บ้านอัจฉริยะ" ขอบคุณ

อเล็กซี่ 06.03.17 12:36
โอเล็ก 03/28/17 02:43


\n ผ่านไปแล้ว จำเป็นต้องทำงานกับ simmodule หรือในกรณีเท่านั้น?
สัญลักษณ์ /" ทำอะไรที่นี่

#กำหนด SIM800L_AT_SMS "AT+CMGS=\""

usart_str_out(SIM800L_AT_SMS, 9);
usart_str_out(จำนวน, 12);
usart_str_rn("\"");
ที่นี่ด้วย /" /r /n
ทำไมไม่ usart_str_rn (AT+CMGS="+7xxxxxxxxxx") พร้อมกันเหมือนในเทอร์มินัล
และ

usart_str_out (ข้อความ, ความยาว);
str = 0x1A เข้าใจได้
สตริ = 0; ทำไมต้องเป็นศูนย์
usart_str_rn(str); และยัง /r /n ?

อเล็กซี่ 28.03.17 12:33

--> ทำอะไร /" ทำอะไรที่นี่
อักขระ \ ถูกวางไว้หน้าอักขระบริการเพื่อเปลี่ยนอักขระเหล่านี้ให้เป็นอักขระธรรมดา ข้อเท็จจริงคือ double quote เป็นอักขระบริการ ใช้สำหรับส่งสตริงไปยังอาร์เรย์ และเพื่อให้คอมไพเลอร์อ่านเป็นสัญลักษณ์ได้ ให้ใส่แบ็กสแลชหน้าสัญลักษณ์บริการ
ตัวอย่าง:


ข้อมูล BYTE = "ข้อความ \"ข้อความในเครื่องหมายคำพูด\"";

ตอนนี้คำพูดภายในจะถูกเขียนเป็นอักขระในอาร์เรย์

--> ทำไมไม่ใช่แค่ usart_str_rn (AT+CMGS="+7xxxxxxxxxx") เหมือนในเทอร์มินัล

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

--> โปรดอธิบาย ทำไมในฟังก์ชัน usart_str_rn
ผ่านไป \n

เนื่องจากเอกสารประกอบสำหรับโมดูล SIMCOM กำหนดให้คุณต้องป้อนรหัสสำหรับสิ้นสุดบรรทัดและขึ้นบรรทัดใหม่เมื่อสิ้นสุดคำสั่ง

โอเล็ก 03/28/17 14:05

ขอบคุณ Aleksey เข้าใจสิ่งนี้ ฉันมีปัญหากับการส่ง 1A ไม่มีการรวมกันกับ \... ในตารางอักขระบริการ

อเล็กซี่ 03/28/17 15:04

สัญลักษณ์ Ctrl+z ควรมีลักษณะอย่างไร หรือตัวอย่างเช่น ช่องว่าง แท็บ ดังนั้นจึงส่งด้วยรหัส ตัวอย่างเช่น \r\n สามารถเขียนเป็นสองไบต์ 0x0D, 0x0A มันเหมือนกัน.

โอเล็ก 03/28/17 16:59

ฉันเข้าใจสิ่งนี้ทีมไปแบบนี้


str = 0x4D;
str = 0x4B;
str = 0x4D;// ข้อความสามตัวอักษรสำหรับการทดสอบ
str = 0x1A;
สตริ = 0;
usart_str_rn(str);
ข้อความอาจเป็นสตริงได้ แต่ 1A ได้มาจากอาร์เรย์เท่านั้น ง่ายกว่าไหมที่จะไม่

อเล็กซี่ 03/28/17 17:14

ถือเป็นโมฆะ usart_char_out (ข้อมูล BYTE)

เพียงส่งหนึ่งไบต์ไปยังพอร์ต

ยูจีน 07.05.17 17:47

BYTE sim800l_send_sms (BYTE *จำนวน, BYTE *ข้อความ, ความยาว BYTE)
{
// อาร์เรย์สำหรับรับการตอบกลับจากโมดูล
ไบต์ str = (0);
แหล่งที่มาเพิ่มเติม
//รอค่ะ
usart_str_in(str, 18);
if(!((str == 0x4F) & (str == 0x4B))) คืนค่า 0x34;
ดัชนี 14 และ 15 ในอาร์เรย์มาจากไหนหากมีการประกาศอย่างชัดเจน str ?

อเล็กซี่ 07.05.17 20:05 น

และที่นี่ฉันเป็นรองเท้าบูทสักหลาด อาร์เรย์ไม่ใช่ 10 เซลล์ แต่เป็น 20)))

ยูจีน 08.05.17 20:13

มันเกิดขึ้น)) ดังนั้นฉันจึงรู้ว่าพิมพ์ผิด ฉันเริ่มเขียนโค้ดของตัวเอง ใช้มันเป็นพื้นฐานและเพิ่งเห็นทันที

อเล็กซี่ 08.05.17 21:34 น

ฉันแนะนำให้คุณใช้ SIM800C แทน L เงินเท่ากัน แต่ C มีฟันสีน้ำเงินในโมดูล

ยูจีน 12.05.17 06:43

ใช่ ฉันมีเพียงโมดูล 800C Alexey หลังจากอ่าน str ว่างเปล่า มีปัญหาอะไรไหม คำสั่งไปยังโมดูลออกและโมดูลตอบสนอง (ตรวจสอบโดยตัววิเคราะห์บันทึก) แต่ str ว่างเปล่า
//รอค่ะ
usart_str_in(str, 18);
ถ้า(!((str ==

ยูจีน 12.05.17 18:57

อเล็กซี่ ฉันพบว่าปัญหาคืออะไรในฟังก์ชัน usart_str_in มีการยอมรับ 18 ไบต์และโมดูลตอบเพียง 9 ไบต์ตามลำดับ ฟังก์ชันรับรู้การตอบสนองนี้เป็นการหมดเวลา (BYTE usart_str_in(BYTE *str จำนวน BYTE)
{
ไบต์ออก = 0;
ข้อมูลไบต์ = 0;
หมดเวลา BYTE = 0;

ในขณะที่(นับ > ข้อมูล) // ที่นี่ ในขณะที่ 18>9 - หมดเวลา
{
ข้อมูล = GetData();

// ถ้าข้อมูลมาไม่ถึงภายใน 250 ms
// จากนั้นออกจากฟังก์ชันและคืนค่า 0
ถ้า (หมดเวลา >= 250)
{
ClearBuffer();
กลับออกไป;
}

หมดเวลา ++;
_delay_ms(1);
}

Out = OutBufferStr(str, นับ);
กลับออกไป;
}
แต่ถ้าคุณไม่รู้ว่าคำตอบจะมานานแค่ไหน?

อเล็กซี่ 12.05.17 20:03

สำรวจบัฟเฟอร์เพื่อรับมากกว่าหนึ่งไบต์ จากนั้นรอเพื่อลบแพ็กเก็ตทั้งหมดออกจากบัฟเฟอร์

ยูจีน 12.05.17 20:21

Alexey ฉันไม่ค่อยเข้าใจแนวคิดนี้ โปรดอธิบาย

อเล็กซี่ 12.05.17 20:58


หลัก()
{

// จำนวนไบต์ที่ได้รับในบัฟเฟอร์
ไบต์ len_pocket = 0;

// อาร์เรย์สำหรับข้อมูล
ข้อมูลไบต์ = (0);

ในขณะที่ (1)
{
// ดูสิ่งที่อยู่ในบัฟเฟอร์
len_pocket = usart_data();

// ตรวจสอบว่ามีอะไรมาถึงบัฟเฟอร์หรือไม่
ถ้า (len_pocket > 0)
{
//ถ้ามาก็รอ.
// หยุดการคำนวณชั่วคราว (1,000/(บิตเรต/10)) * ไบต์สูงสุด
// ตัวอย่างบิตเรต 19200 ไบต์สูงสุด 40 (1000/1920) * 40 = 20.8ms

// หยุดชั่วคราวเพื่อให้แน่ใจว่าได้รับไบต์ทั้งหมดแล้ว
_delay_ms(22);

// รับจำนวนไบต์ที่ได้รับ
len_pocket = usart_data();

// เขียนข้อมูลลงในอาร์เรย์
usart_str_in (ข้อมูล len_pocket);

// ขณะนี้อาร์เรย์ข้อมูลประกอบด้วยไบต์ที่ได้รับทั้งหมด
}
}
}

ยูจีน 12.05.17 21:25

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

อเล็กซี่ 12.05.17 22:18

ยัง. งานเยอะมาก. ที่จริงฉันลืมเกี่ยวกับเว็บไซต์เพราะเธอ

โอเล็ก 08.07.17 23:28 น

Alexey บอกฉันว่าจะประสานระดับได้อย่างไรหากไมโครคอนโทรลเลอร์ใช้พลังงานจาก 5v และโมดูลคือ 3.3v ฉันพบโมดูลพลังงาน KIS-3R33S บน Ali ซึ่งมีตัวควบคุมเอาต์พุต การรีสตาร์ทโมดูล SIM โดยถอดแหล่งจ่ายไฟออกเหมาะสมหรือไม่ หรือเพียงพอสำหรับการรีเซ็ตและเปิดใช้งานโมดูลหรือไม่

อเล็กซี่ 09.07.17 12:28

ประการแรก ในการประสานงานกับโมดูล คุณไม่จำเป็นต้องใช้ 3.3v แต่เป็น 3v ในการทำเช่นนี้ก็เพียงพอแล้วที่จะใส่ตัวแบ่งตัวต้านทานโดยที่ RXD MK จะอยู่ที่อินพุตของตัวต้านทานด้านสูงและตัวต้านทานด้านต่ำจะเชื่อมต่อกับสัญญาณทั่วไป
ประการที่สอง คุณสามารถเริ่มการรีบูตได้โดยการสลับแหล่งจ่ายไฟหากโมดูลค้าง หากโมดูลใช้งานได้จะเป็นไปไม่ได้เลยเนื่องจากอาจทำให้เฟิร์มแวร์ในโมดูลเสียหายได้ ควรรีสตาร์ทโดยเล่นกลคำสั่ง PWR หรือ AT

โอเล็ก 09.07.17 12:44 น

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

อเล็กซี่ 09.07.17 14:48 น

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

โอเล็ก 09.07.17 15:05 น

และเมื่อโมดูลหยุดทำงาน สิ่งที่ต้องดึง pwr หรือ rst ก่อน และหาก pvr และ rezet ไม่ช่วย จะบิดเบือนอย่างถูกต้องในแง่ของโภชนาการได้อย่างไร

อเล็กซี่ 09.07.17 19:29 น

ถ้ามันค้างให้ถอดปลั๊กไฟออกสามวินาที จากนั้นส่งและเริ่มต้นตามกฎ

อิกอร์ 12.09.19 19:21

บอกวิธีโอนจำนวน bz quotes ไปยังโมเด็ม MC52i
// การส่งหมายเลขโทรศัพท์ของผู้ใช้บริการ
usart_str_out(SIM800L_AT_SMS, 9);
usart_str_out(จำนวน, 12);
usart_str_rn(""");

พิจารณาวิธีเชื่อมต่อ Adruino กับโมดูล SIM800L GSM มีตัวป้องกัน GSM สำหรับ Arduino โดยเฉพาะ แต่ราคาค่อนข้างแพง ดังนั้นฉันจึงตัดสินใจซื้อตัวเลือกงบประมาณ บทความนี้อาจมีประโยชน์สำหรับการเชื่อมต่อโมดูล SIM900, NEOWAY M590 และโทรศัพท์มือถือบางรุ่น ความแตกต่างเล็กน้อยที่ไม่สะดวกคือโมดูลนี้ต้องการแหล่งจ่ายไฟ 3.7V ที่ไม่ได้มาตรฐานสำหรับ Arduino ดังนั้นจึงต้องแยกพลังงานผ่านตัวแปลงแรงดันไฟฟ้าแบบลดขั้นตอน

การเชื่อมต่อ

ในการเชื่อมต่อ ฉันใช้ส่วนประกอบต่อไปนี้:

  1. คอนโทรลเลอร์ Arduino UNO R3 + สาย USB
  2. โมดูล GSM SIM800L (แหล่งจ่ายไฟจาก 3.7V ถึง 4.2V)
  3. ตัวแปลงแรงดันไฟฟ้าแบบสเต็ปดาวน์ (ตัวแปลงแรงดันไฟฟ้าแบบ DC-DC)
  4. แบตเตอรี่ 12V (หรือแหล่งพลังงานใด ๆ จาก 6V ถึง 20V)
  5. สายเชื่อมต่อ

เชื่อมต่อ Arduino กับคอมพิวเตอร์ผ่านสาย USB

เราให้พลังงานแก่โมดูล GSM จากแบตเตอรี่ 12V ผ่านตัวแปลง:

  • จาก 12V "ลบ" ไปที่ arduino ใน "GND" จาก "GND" ไปยังตัวแปลงแรงดันไฟฟ้าเป็น "ลบขาเข้า"
  • จาก 12V "บวก" ไปที่ตัวแปลงแรงดันไฟฟ้าเป็น "บวกขาเข้า"

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

ก่อนเชื่อมต่อกับตัวแปลงแรงดันไฟฟ้าจำเป็นต้องตั้งค่าโดยตั้งค่าแรงดันเอาต์พุตให้อยู่ในช่วง 3.7V - 4.2V จากตัวแปลงแรงดันไฟฟ้าเราเชื่อมต่อหน้าสัมผัสเอาต์พุตเข้ากับโมดูล GSM โดยสังเกตขั้ว

พิน TX และ RX บนโมดูล GSM เชื่อมต่อกับพินดิจิทัล 2 และ 3 บน Arduino หากคุณต้องการเชื่อมต่อโมดูล GSM หลายโมดูลกับ Arduino ให้ใช้พินอื่นและลงทะเบียนในแบบร่างผ่าน SoftwareSerial

ร่าง

#รวม<SoftwareSerial.h> SoftwareSerial mySerial(2, 3); // การตั้งค่าโมฆะ RX, TX () ( อนุกรม.begin(19200); // ความเร็วพอร์ตสำหรับการสื่อสาร Arduino กับคอมพิวเตอร์ อนุกรม.println("พระจันทร์ราตรีสวัสดิ์!"); mySerial.begin(19200); // ความเร็วของพอร์ตสำหรับการสื่อสารระหว่างโมดูล Arduino และ GSM mySerial.println("AT" ); ) โมฆะวนรอบ () (ถ้า (mySerial.available ()) อนุกรม.write(mySerial.read()); ถ้า ( อนุกรม.available()) mySerial.write( อนุกรม.อ่าน()); )

ขั้นตอนการส่ง SMS

void sms (ข้อความสตริง , โทรศัพท์สตริง ) ( อนุกรม. println("เริ่มส่ง SMS" ); mySerial. println ("AT+CMGS=\"" + โทรศัพท์ + "\"" ); ล่าช้า (1,000) ; mySerial. พิมพ์ (ข้อความ); ล่าช้า (300) ; mySerial. พิมพ์ ((ถ่าน ) 26 ); ล่าช้า (300) ; อนุกรม. println("ส่ง SMS เสร็จสิ้น" ); ล่าช้า (3000) ; )

เพิ่มขั้นตอนที่ส่วนท้ายของร่างและเรียกใช้จากลูปหลักดังนี้: sms(String("ข้อความ SMS เป็นภาษาอังกฤษ."),String("+791212345678"));

การตรวจสอบ

เราเปิดเครื่องแล้วผ่านพอร์ตมอนิเตอร์ตั้งค่าความเร็วเป็น 19200 และจำเป็นต้องใช้ตัวเลือก "บรรทัดใหม่"

ป้อนคำสั่ง "ATI" แล้วกด ENTER ข้อมูลจากโมเดลโมดูลควรปรากฏขึ้น

ฉันพยายามส่ง SMS ไปยังโมดูลผ่านบริการฟรีจาก Tele2 มีสายที่เข้าใจยากมา พยายามเปลี่ยนการเข้ารหัสในโมดูล ปัญหายังไม่ได้รับการแก้ไข

วิดีโอ

โมดูล GSM / GPRS ที่ใช้ SIM800L นั้นง่ายต่อการเชื่อมต่อด้วยตัวเอง ทำตามขั้นตอนไม่กี่ขั้นตอนและใช้องค์ประกอบขนาดกะทัดรัดที่ทันสมัยเพื่อประโยชน์ของคุณ

SimCom Corporation นำเสนอโมดูล GSM/GPRS ขนาดกะทัดรัดที่ใช้ SIM800L แก่ผู้ใช้ ตัวเชื่อมต่อในตัวช่วยให้คุณปรับปรุงสัญญาณ คุณยังสามารถใช้เสาอากาศที่มาพร้อมกับระบบโมดูลาร์นี้ได้

โมดูล GSM/GPRS SIM800L - คำอธิบาย

คำอธิบายโดยละเอียด:

  • โมดูลนี้ใช้พลังงานจากแหล่งภายนอกหรือผ่านระบบตัวแปลง DC-DC
  • ช่วงของแหล่งจ่ายไฟควรอยู่ในช่วง 3.7V - 4.2V เป็นที่น่าสังเกตว่า 5V จาก Arduino เป็นอันตรายต่อการทำงานของโมดูล เนื่องจากจะทำให้โมดูลพัง และ 3.3V จะช่วยตอบสนองต่อคำสั่งของผู้ใช้ แต่จะไม่มีการเชื่อมต่อกับเครือข่าย
  • การควบคุมผ่าน UART แต่ใช้ตัวแบ่งแรงดันสำหรับ Rx และ Tx เพื่อให้ไม่มีโหลดบนบอร์ด
  • การใช้พลังงานต่ำของโมดูล SIM800L ช่วยให้สามารถใช้กับอุปกรณ์ที่ใช้พลังงานจากแบตเตอรี่ได้สำเร็จ
  • เมื่อจ่ายไฟ โมดูลจะเริ่มค้นหาเครือข่ายทันที เมื่อพบแล้วไฟ LED จะเริ่มส่งสัญญาณ กะพริบช้าๆ LED เดียวกันระบุว่าไม่มีเครือข่าย แต่ด้วยความช่วยเหลือของไฟกะพริบอย่างรวดเร็ว
  • โมดูลรองรับไมโครซิมการ์ด 1.8V และ 3V

โมดูล GSM/GPRS SIM800L - การเชื่อมต่อ

ในการเชื่อมต่อ นอกเหนือจากตัวโมดูล ตัวแปลง และตัวควบคุม Arduino UNO R3 คุณจะต้องใช้สาย USB แบตเตอรี่ 12V และสายเชื่อมต่อ ทำตามขั้นตอนเหล่านี้:

  1. ขั้นแรกให้จ่ายพลังงานให้กับระบบจากแบตเตอรี่ผ่าน DC-DC: จาก "ลบ" แรงดันไฟฟ้าควรไปที่ arduino ถึง "GND" จาก "GND" ไปยังองค์ประกอบตัวแปลงเป็น "ลบ" ที่อินพุต
  2. ต้องทำการเชื่อมต่อหลังจากที่คุณกำหนดค่าโมดูลแล้ว ตั้งค่าแรงดันเอาต์พุตในช่วงที่อนุญาต (3.7V - 4.2V)
  3. เชื่อมต่อผู้ติดต่อทั้งหมดที่ออกมาจากตัวแปลงเข้ากับ SIM800L โดยสังเกตขั้ว
  4. พิน TX และ RX บนโมดูลเชื่อมต่อกับพินดิจิทัลตัวที่ 2 และ 3 ตามลำดับบน arduino

ข้อสำคัญ: หากคุณต้องการเชื่อมต่อสองหรือสามโมดูลกับ arduino ให้ใช้รหัสอื่นโดยเขียนลงในร่างผ่าน SoftwareSerial

วิดีโอต่อไปนี้แสดงวิธีเชื่อมต่อโมดูล SIM800L กับ Arduino อย่างชัดเจน

วิดีโอ: การเชื่อมต่อโมดูล GSM SIM800L กับ Arduino


SIM800L V2.0 GSM/GPRS เป็นโมดูล GSM/GPRS แบบ Quad-band ที่เข้ากันได้กับ Arduino โมดูลนี้ใช้เพื่อใช้ฟังก์ชัน GSM (การโทรและ SMS) และ GPRS ข้อดีของโมดูลนี้คืออินเทอร์เฟซ TTL ซึ่งมีแรงดันไฟฟ้า 5V ซึ่งช่วยให้คุณเชื่อมต่อโดยตรงกับ Arduino หรือระบบอื่น ๆ ที่มีแรงดันไฟฟ้า 5V โมดูล GSM/GPRS ส่วนใหญ่ในตลาดต้องการการเชื่อมต่อตัวควบคุมหรือการแปลงระดับ ในขณะที่ GSM/GPRS ใน SIM800L V.2 ไม่ต้องการวงจรแปลงระดับอินเทอร์เฟซเพิ่มเติม

นี่คือตัวอย่างโครงการที่ใช้ SIM800L V.2 GSM/GPRS ความหมายของโครงการคือการควบคุมสวิตช์โดยใช้ตัวควบคุม SMS คุณสามารถเปิดและปิดเครื่องใช้ในครัวเรือนส่วนใหญ่ในบ้าน เช่น ตัวลามะ พัดลม และอื่นๆ ได้อย่างง่ายดาย

ลักษณะของโมดูล SIM800L V.2 GSM/GPRS

ด้านล่างนี้เป็นข้อกำหนดทางเทคนิคทั้งหมดของโมดูล SIM800L V.2 GSM/GPRS:
  • อินเทอร์เฟซอนุกรม TTL เข้ากันได้กับไมโครคอนโทรลเลอร์ 3.3V และ 5V Arduino ที่เข้ากันได้
  • โมดูล SIM800L มีอินเทอร์เฟซแบบอนุกรม TTL
  • ขั้วต่อสายอากาศ.
  • การสนับสนุนเครือข่าย: Quad band 850/900/1800/1900 MHz สามารถโทรออก ส่ง SMS และรับส่งข้อมูลโดยสิ้นเปลืองแบตเตอรี่อย่างมาก
  • อินเทอร์เฟซ VDD TTL UART คุณจึงสามารถเชื่อมต่อ MCU เช่น 51MCU, ARM หรือ MSP430 ได้โดยตรง ปลั๊ก VDD ใช้เพื่อจับคู่แรงดันไฟฟ้า TTL
  • รุ่น: SIMCOM SIM800L
  • แรงดันใช้งาน: จาก 3.7V ถึง 5V;
  • ขนาด: 40 มม. x 28 มม. x 3 มม
  • GPRS มัลติสล็อต คลาส 12/10
  • บริการแพ็กเก็ต GPRS คลาส B
  • สอดคล้องกับ GSM เฟส 2/2+
  • คลาส 4 (2 วัตต์ @ 850/900 MHz)
  • คลาส 1 (1Watt @ 1800/1900MHz)

วัสดุที่จำเป็น