สารบัญ:
- ขั้นตอนที่ 1: การเขียนโปรแกรม ATTINY 85
- ขั้นตอนที่ 2: การอัปโหลดโปรแกรมไปที่ ATTINY85
- ขั้นตอนที่ 3: เรียกใช้โปรแกรมของคุณ
- ขั้นตอนที่ 4: บทสรุป
วีดีโอ: SMS Text Temp Alerts จาก ATTINY85 และ A1 GSM: 5 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:05
คำแนะนำนี้แสดงวิธีจับอุณหภูมิจากเซ็นเซอร์อุณหภูมิอย่างง่ายและส่งข้อความ 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 มีสองโหมดคือโหมดการเขียนโปรแกรมและโหมดการทำงานตามลำดับ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 ไปยังโทรศัพท์เพื่อเริ่มการบันทึก/ส่งอุณหภูมิ ฯลฯ
แนะนำ:
ติดตาม: ศูนย์สื่อขั้นสูงพร้อม Odroid N2 และ Kodi (รองรับ 4k และ HEVC): 3 ขั้นตอน
ติดตาม: Advanced Media Center พร้อม Odroid N2 และ Kodi (รองรับ 4k และ HEVC): บทความนี้เป็นบทความต่อจากบทความก่อนหน้าของฉันที่ประสบความสำเร็จค่อนข้างมากเกี่ยวกับการสร้างศูนย์สื่ออเนกประสงค์ โดยอ้างอิงจาก Raspberry PI ที่ได้รับความนิยมมากในตอนแรก แต่ ในภายหลัง เนื่องจากไม่มีเอาต์พุตที่สอดคล้องกับ HEVC, H.265 และ HDMI 2.2 จึงมีสวิตช์
Blinds Control ด้วย ESP8266, Google Home และ Openhab Integration และ Webcontrol: 5 ขั้นตอน (พร้อมรูปภาพ)
การควบคุมมู่ลี่ด้วย ESP8266, Google Home และ Openhab Integration และ Webcontrol: ในคำแนะนำนี้ ฉันจะแสดงให้คุณเห็นว่าฉันเพิ่มระบบอัตโนมัติให้กับมู่ลี่ของฉันอย่างไร ฉันต้องการเพิ่มและลบระบบอัตโนมัติได้ ดังนั้นการติดตั้งทั้งหมดจึงเป็นแบบหนีบ ส่วนหลักคือ: สเต็ปเปอร์มอเตอร์ ตัวขับสเต็ปควบคุม bij ESP-01 เกียร์และการติดตั้ง
เราคือกลุ่มของการสอน 6 นักเรียน UQD10801 (Robocon1) จาก Universiti Tun Hussein Onn Malaysia (UTHM): ปุ่มกด 4x4 และ LCD Arduino: 3 ขั้นตอน
เราคือกลุ่มของนักเรียนฝึกหัด 6 UQD10801 (Robocon1) จาก Universiti Tun Hussein Onn Malaysia (UTHM): ปุ่มกด 4x4 และ LCD Arduino: ปุ่มกดเป็นวิธีที่ยอดเยี่ยมในการให้ผู้ใช้โต้ตอบกับโครงการของคุณ คุณสามารถใช้มันเพื่อนำทางเมนู ป้อนรหัสผ่าน และควบคุมเกมและหุ่นยนต์ ในบทช่วยสอนนี้ ฉันจะแสดงวิธีตั้งค่าปุ่มกดบน Arduino ก่อนอื่นฉันจะอธิบายว่า Ardu
Arduino Push Alerts สำหรับออด, สัญญาณกันขโมย, สัญญาณกันขโมย ฯลฯ: 8 ขั้นตอน
Arduino Push Alerts สำหรับออด, สัญญาณกันขโมย, สัญญาณแจ้งเตือนควัน ฯลฯ: การแจ้งเตือน IoT จากกริ่งประตูของคุณ, สัญญาณกันขโมย, สัญญาณกันขโมย ฯลฯ โดยใช้ Arduino Uno และ Ethernet Shield รายละเอียดทั้งหมดบนเว็บไซต์ของฉันที่นี่เกี่ยวกับ Arduino Push Alert Box ใช้ Arduino Uno และ Ethernet Shield บนพื้นฐานของชิป Wiznet W5100 เพื่อ
การควบคุม Buzzer และ Led จาก Android โดยใช้ Blynk: 4 ขั้นตอน
การควบคุม Buzzer และ Led จาก Android โดยใช้ Blynk: ในคำแนะนำนี้ ฉันจะบอกวิธีเชื่อมต่อ Arduino กับ Android โดยใช้ Bluetooth สำหรับ GUI และ IOT! ในบทช่วยสอนนี้ เราจะใช้โทรศัพท์ Android และแอป blynk (หนึ่งใน GUI ที่ดีที่สุด ตัวเลือกสำหรับ Arduino) เพื่อเปิด LED และควบคุมออดโดยใช้