สารบัญ:

SMS Text Temp Alerts จาก ATTINY85 และ A1 GSM: 5 ขั้นตอน
SMS Text Temp Alerts จาก ATTINY85 และ A1 GSM: 5 ขั้นตอน

วีดีโอ: SMS Text Temp Alerts จาก ATTINY85 และ A1 GSM: 5 ขั้นตอน

วีดีโอ: SMS Text Temp Alerts จาก ATTINY85 และ A1 GSM: 5 ขั้นตอน
วีดีโอ: Arduino project 😎^ Arduino #arduino #2022 #2021 #2023 #dc #arduinoproject #diy #foryou 2024, ธันวาคม
Anonim
การแจ้งเตือนอุณหภูมิข้อความ SMS จาก ATTINY85 และ A1 GSM
การแจ้งเตือนอุณหภูมิข้อความ SMS จาก ATTINY85 และ A1 GSM

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

การยกของหนักดำเนินการโดย ATTINY 85 ที่เรียบง่ายแต่ทรงพลัง ซึ่งจะบันทึกข้อมูลอุณหภูมิแล้วเรียกให้ส่ง SMS ผ่านโมดูล AI-Thinker A6 GSM

กล่าวโดยย่อ คุณเขียนโค้ด ATTINY85 ในสภาพแวดล้อม Arduino IDE และเบิร์นมันบน ATTINY85 โดยใช้ตัวแปลง USBASP serial/USB ฉันได้กล่าวถึงการตั้งค่าโมดูล AI-Thinker A6 GSM และ Arduino IDE ในบทช่วยสอนสองบทก่อนหน้านี้ ความแตกต่างที่นี่คือการเชื่อมต่อโมดูล ATTINY และ A6 GSM โดยใช้การสื่อสารแบบอนุกรม

www.instructables.com/id/How-to-Send-an-SM…https://www.instructables.com/id/15-Dollar-Attiny8…

หลังจากตั้งโปรแกรม ATTINY จะอ่านข้อมูลอุณหภูมิจากเซ็นเซอร์เทอร์โมมิเตอร์ - Dallas 18B20- จากนั้นส่งข้อมูลและคำสั่งโดยการเชื่อมต่อแบบอนุกรมไปยังโมดูล A6 GSM ซึ่งจะส่งข้อความ SMS ไปยังโทรศัพท์มือถือ / สมาร์ทโฟนของคุณ

นี่คือสิ่งที่คุณต้องการ:

1. ตัวแปลง USBASP แบบอนุกรม/USB

2. แอตตินี่ 85.

3. โมดูล AI-Thinker A6 GSM เวอร์ชัน 6 (พร้อมซิมที่มีเครดิต SMS)

4. แหล่งจ่ายไฟเขียงหั่นขนม 3.3v สำหรับ ATTINY85

5. แหล่งจ่ายไฟ USB 3.3.v สำหรับโมดูล AI-Thinker A6 GSM

6.เซ็นเซอร์อุณหภูมิดัลลัส18B20..

7. ตัวต้านทาน 4.7k สำหรับเซ็นเซอร์ 18B20

8. เขียงหั่นขนมและสายเคเบิล

9. Arduino IDE (ฉันใช้เวอร์ชัน 1.8.5 สำหรับสิ่งนี้)

10. แล็ปท็อป Windows X (ฉันใช้เวอร์ชัน 10) พร้อมพอร์ต usb ฟรี

ขั้นตอนที่ 1: การเขียนโปรแกรม ATTINY 85

นี่คือรหัส Arduino IDE (คุณจะต้องเปลี่ยนหมายเลขโทรศัพท์ที่คุณต้องการส่ง SMS)

#รวม #รวม #รวม

// *** // *** กำหนดพิน RX และ TX เลือกหมุด // *** สองอันที่ยังไม่ได้ใช้งาน พยายามหลีกเลี่ยง D0 (พิน 5) // *** และ D2 (พิน 7) หากคุณวางแผนที่จะใช้ I2C // *** #define RX 3 // *** D3 พิน 2 #define TX 4 // *** D4 พิน 3

// *** // *** กำหนดพอร์ตอนุกรมที่ใช้ซอฟต์แวร์ การใช้ // *** ชื่อ Serial เพื่อให้สามารถใช้รหัสบนแพลตฟอร์ม // *** อื่น ๆ ที่รองรับซีเรียลแบบฮาร์ดแวร์ บน // *** ชิปที่รองรับฮาร์ดแวร์ซีเรียลเพียง // *** แสดงความคิดเห็นบรรทัดนี้ // ***

SoftwareSerial mySerial = SoftwareSerial (RX, เท็กซัส);

// *** // *** Pinout ATtiny25/45/85: // *** PDIP/SOIC/TSSOP // *** =================== ================================================= ========================= // *** // *** (PCINT5/RESET/ADC0/dW) PB5 [1]* [8] VCC // *** (PCINT3/XTAL1/CLKI/OC1B/ADC3) PB3 [2] [7] PB2 (SCK/USCK/SCL/ADC1/T0/INT0/PCINT2) // *** (PCINT4/ XTAL2/CLKO/OC1B/ADC2) PB4 [3] [6] PB1 (MISO/DO/AIN1/OC0B/OC1A/PCINT1) // *** GND [4] [5] PB0 (MOSI/DI/SDA/AIN0 /OC0A/OC1A/AREF/PCINT0) // *** // ความถี่ ATTINY 85 ตั้งไว้ที่ 8 MHz ภายใน

// *** // *** ปักหมุดที่ข้อมูล OneWire // *** เชื่อมต่อสาย // *** #define ONE_WIRE_BUS 1

// *** // *** ตั้งค่าอินสแตนซ์ oneWire เพื่อสื่อสารกับอุปกรณ์ OneWire // *** (ไม่ใช่แค่ IC อุณหภูมิ Maxim/Dallas) // *** OneWire _oneWire = OneWire(ONE_WIRE_BUS);

// *** // *** ส่งการอ้างอิง oneWire ของเราไปที่ Dallas Temperature // *** DallasTemperature _sensors = DallasTemperature (&_oneWire);

การตั้งค่าเป็นโมฆะ () { // *** // *** เริ่มต้นพอร์ตอนุกรม // *** mySerial.begin (115200); ล่าช้า (60000);

// *** เปิดห้องสมุด _sensors.begin(); }

วงเป็นโมฆะ () {

// *** // *** รับอุณหภูมิปัจจุบันและแสดงผล // *** _sensors.requestTemperatures(); ล่าช้า (2000); tempC สองเท่า = _sensors.getTempCByIndex(0); tempF สองเท่า = _sensors.getTempFByIndex(0); // ตรวจสอบข้อผิดพลาด - บางครั้งเมื่อเริ่มต้น อุณหภูมิแสดงเป็น 85C

if (tempC 14 && tempC 18 && tempC = 23 && error_temperature){SMS_temp(tempC, " Too warm");} }

เป็นโมฆะ SMS_temp (mytemp สองเท่า, สตริง myalert) { mySerial.println ("AT+CMGF=1"); // ตั้งค่าหน่วงเวลาโหมด SMS (1000); mySerial.println("AT+CMGF=1"); // ตั้งค่าเป็นโหมดหน่วงเวลา SMS (1000); //mySerial.println("AT+CMGS=\"+หมายเลขของคุณ\""); // ตั้งค่าหมายเลขโทรศัพท์ (ห่อด้วยเครื่องหมายคำพูดคู่) ล่าช้า (1000); mySerial.print (mytemp, 1); mySerial.print (myalert); ล่าช้า (1000); mySerial.write(0x1A); // ส่ง ctrl+z สิ้นสุดการหน่วงเวลาข้อความ (1000); mySerial.write(0x0D); // Carriage Return ใน Hex ล่าช้า (1000); mySerial.write(0x0A); ล่าช้า (1000000); // 17 นาที - ปรับให้เหมาะกับการใช้งานของคุณเอง }

เปิดสภาพแวดล้อม Arduino IDE - ฉันได้อธิบายวิธีค้นหาวิธีแก้ไขปัญหานี้โดยละเอียดในคำสั่งก่อนหน้าของฉันซึ่งฉันพูดถึงก่อนหน้านี้

คุณจะต้องมีห้องสมุดต่อไปนี้

SoftwareSerial.h

OneWire.h

DallasTemperature.h

ถัดไป กำหนดค่าพิน RX และ TX บน ATTINY85 ซึ่งคุณต้องเชื่อมต่อกับ A1 Thinker ATTINY 85 มี 8 พิน สี่อันในแต่ละด้าน และจัดตำแหน่งโดยใช้จุดบนพื้นผิวเป็นข้อมูลอ้างอิง พิน 1 หรือพิน RESET อยู่ข้างจุดที

(ในกรณีนี้ฉันเลือก Pin2 และ 3 - อยู่ด้านเดียวกับหมุด RESET ซึ่งอยู่ข้างจุดบนพื้นผิวของ ATTINY 85 หมุด 2 เป็นพินถัดไปตามพิน RESET ในขณะที่พิน 3 อยู่ระหว่างพิน 2 และพื้นดิน)

ถัดไปคุณต้องกำหนดค่าเซ็นเซอร์อุณหภูมิ -

#define ONE_WIRE_BUS 1

OneWire _oneWire = OneWire(ONE_WIRE_BUS);

DallasTemperature _sensors = DallasTemperature (&_oneWire);

ถัดไป ตั้งค่าพอร์ตอนุกรมของซอฟต์แวร์

mySerial.begin(115200);

ล่าช้า (60000);

แล้วเรียกเซ็นเซอร์ด้วย _sensors.begin();

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

วงเป็นโมฆะ () { sensors.requestTemperatures (); ล่าช้า (2000);

tempC สองเท่า = _sensors.getTempCByIndex(0);

tempF สองเท่า = _sensors.getTempFByIndex(0);

if (tempC <= 14){SMS_temp(tempC, " DANGEROUSLY Cold");}

if (tempC > 14 && tempC <= 18) {SMS_temp(tempC, " ค่อนข้างเย็น");}

if (tempC > 18 && tempC < 23) {SMS_temp(tempC, " Temp Just right");}

if (tempC >= 23 && error_temperature){SMS_temp(tempC, " Too warm");}

}

==============

ถัดไป ตั้งค่า Arduino IDE เพื่อเตรียมพร้อมสำหรับการอัปโหลดไปยัง ATTINY85

มีหลายสิ่งที่ควรทราบ

1- หากคุณไม่มีบอร์ดตระกูล ATTINY ให้เพิ่ม url ต่อไปนี้ https://raw.githubusercontent.com/damellis/attiny/… ใน URL ของ File/Preferences/Additional Boards Manager

ถัดไป ภายใน Arduio IDE ให้คลิกที่ Tools/Board/Board Manager แล้วค้นหา ATTINY และติดตั้งบอร์ดใหม่ เปลี่ยนโปรเซสเซอร์เป็น Attiny85

ขั้นตอนที่ 2: การอัปโหลดโปรแกรมไปที่ ATTINY85

การอัปโหลดโปรแกรมไปที่ ATTINY85
การอัปโหลดโปรแกรมไปที่ ATTINY85

อ้างถึงคำแนะนำก่อนหน้าของฉันเกี่ยวกับสิ่งนี้ -

ATTINY85 มีสองโหมดคือโหมดการเขียนโปรแกรมและโหมดการทำงานตามลำดับ1. โหมดการเขียนโปรแกรม ขั้นแรก ระบุพินบน ATTINY85 ในการทำเช่นนี้ ให้หารอยบากเล็กๆ บนพื้นผิวของชิปซึ่งอยู่ข้างพิน RST/RESET เมื่อใช้สิ่งนี้เป็นจุดอ้างอิง คุณสามารถระบุพินที่เหลือได้ ข้อมูลทั้งหมดนี้อยู่ในแผ่นข้อมูล A85 -https://ww1.microchip.com/downloads/en/DeviceDoc/At…

ควรเชื่อมต่อ USBasp และ ATTINY85 ตามที่แสดงในภาพด้านบน

ถัดไป บน Arduino IDE ให้ตั้งค่าโปรแกรมเมอร์เป็น USBasp และความถี่เป็น 8Mhz ภายใน

เชื่อมต่อ USBasp เข้ากับพอร์ต USB บนแล็ปท็อปของคุณ (ใน Windows 10 หากคุณไม่มีไดรเวอร์ USBasp ให้ใช้ Zadig ตามเว็บไซต์

ถัดไป เมื่อเชื่อมต่อ USBasp แล้ว ให้เลือกจาก Arduino IDE Sketch/upload และหวังว่าคุณจะเห็นความคืบหน้าในการอัปโหลดที่แสดงเป็นตัวอักษรสีแดงของ Arduino IDE และลงท้ายด้วย avrdude ขอขอบคุณ.

ข้อผิดพลาดใดๆ ในขั้นตอนนี้มักเกี่ยวข้องกับสายหลวมหรือไดรเวอร์ที่ไม่ถูกต้อง

ขั้นตอนที่ 3: เรียกใช้โปรแกรมของคุณ

เรียกใช้โปรแกรมของคุณ
เรียกใช้โปรแกรมของคุณ
เรียกใช้โปรแกรมของคุณ
เรียกใช้โปรแกรมของคุณ
เรียกใช้โปรแกรมของคุณ
เรียกใช้โปรแกรมของคุณ

ประการแรก บางอย่างเกี่ยวกับเซ็นเซอร์วัดอุณหภูมิ Dallas 18b20 มี 3 ขา กราวด์ (G) ข้อมูล (D) และ VCC ดังแสดงในภาพด้านบน สำหรับการใช้งาน ต้องมีการเชื่อมต่อ D และ VCC ด้วยตัวต้านทาน 4.7k G และ VCC เชื่อมต่อกับขั้วตามลำดับในขณะที่ D เชื่อมต่อกับ ATTINY 85, ขา - [6] PB1 ตามที่กำหนดไว้ในรหัส

ถัดไป เชื่อมต่อ ATTINY กับ A6 GSM ดังนี้ (และแสดงด้านบน)

ATTINY TX A6 UART_RXdATTINY RX A6 UART_TXd

ATTINY GND A6 GND

และบน A6 เอง

A6 PWR A6 VCC 5.0A6 RST A6 GND (ยังไม่ได้ต่อสายดิน!!!!!)

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

ขั้นตอนที่ 4: บทสรุป

คำแนะนำนี้อาจดูเหมือนค่อนข้างง่าย แต่แนวคิดคือการแสดงให้เห็นถึงสิ่งที่อาจทำได้ด้วยส่วนประกอบที่มีต้นทุนต่ำ แน่นอน หากคุณสามารถเข้าถึง Wi-Fi หรือฮับ BLE ได้ แสดงว่ามีวิธีแก้ไขปัญหาที่เหมาะสมกว่า

ฉันไม่ครอบคลุมฟังก์ชันอื่นๆ เช่น การส่ง SMS ไปยังโทรศัพท์เพื่อเริ่มการบันทึก/ส่งอุณหภูมิ ฯลฯ

แนะนำ: