Sadržaj:
2025 Autor: John Day | [email protected]. Zadnja promjena: 2025-01-13 06:57
Ideja je dobiti temperaturni sms iz kuće mojih očeva.
Ništa prelijepo, samo brzo sastavljanje dijelova.
Dijelovi su:
- Arduino kompatibilan s Geekcreit® ATmega328P Nano V3 upravljačkom pločom
- DIY NANO IO Shield V1. O ploča za proširenje za Arduino
- DS1307 bazirani RTC IIC / I2C modul sata u stvarnom vremenu i DS18b20
- SIM800L Četveropojasni GSM / GPRS
- LM2596 Mini DC-DC pretvarač podesivi modul napajanja za stepenice
- Termistor NTC MF52AT temperatura
U početku puno o čitanju i traženju.
Prije nego napokon upotrijebim Geekcreit® Nano, sve dijelove testiram s Arduino Uno.
Korak 1: Uključite SIM800l
Jedna od glavnih točaka je snaga za Sim800L.
Koristim LM2596 Mini DC-DC pretvarač, podešen na 3,7 volti i zasebno napajanje.
Za testiranje veze s AT+ naredbama ova strana je vrlo upotrebljiva:
Brzi početak SIM800 (SIM800L) s Arduinom
Uz Disable pin code using gsm modem na naredbama dobio sam vožnju sim pin koda.
Sljedeće razmatranje koja knjižnica. Internet nudi različita rješenja.
Moje rješenje je knjižnica Mattiasa Aabmetsa: AspenSIM800
Njegov ispit: Send_SMS.ino koristio sam I kao osnovni program i jedan po jedan povezivao sve ostale dijelove zajedno.
Tx pin i Rx pin su kodovi za:
RX_PIN 10 iz Arduina. Mora biti spojen na TX pin modula SIM800. TX_PIN 11 iz Arduina. Mora biti spojen na RX pin SIM800 modula
Uvijek je dobro pročitati datoteke *.ccp i *.h u knjižnicama.
Sadrže mnogo zanimljivih savjeta i znanja.
Korak 2: Uključite RTC DS1307 sa senzorom DS18B20
Koristio sam ovu stranu: simtronyx - blog za DS1307 i DS18B20.
Sat ima vezu sa sabirnicom I2C, a to je za Arduino Uno: A4 (SDA) - A5 (SCL)
DS18B20 I spojen je na D3.
Pročitao sam da u SMS -u ne možete slati Floats samo String, pa sam morao prevesti plovke u niz.
To što radim s ovim isječkom koda pronašao sam:
n
MyString1 = String (currentTemp, 2); // Pretvori float u String
MyString1 = (MyString1 + "C - RoomTemperatur:)");
// ovdje pretvara niz u char
// Duljina (s jednim dodatnim znakom za null terminator)
int str_len1 = MyString1.length () + 1; // Priprema niza znakova (međuspremnik)
char char_array1 [str_len1]; // Kopirajte ga
MyString1.toCharArray (char_array1, str_len1); // pretvara niz u char
Bit ću iskren ne znam kako to funkcionira, ali radi.
Korak 3: Uključite termistor NTC MF52AT
Radio sam prije s termistorom pa je to bio lakši dio.
Ali i ovdje možete pronaći drugačije rješenje.
U konačnom kodu možete pronaći moje.
Također možete pronaći prijevod Floats to String.
Lemio je žicu i otpornik od 10 k ohma na termistor.
Korak 4: Potaknite sve da rade zajedno
Tako sam zajedno napisao sve dijelove programa.
Sad sam morao smisliti kako slati jedan SMS svaki dan, u isto vrijeme.
Čitao sam o različitim idejama, neke s TimerAlarm i drugim pristupom.
Ali našao sam jednostavno rješenje na arduino forumu:
if (now.hour () == 8 && now.minute () == 00 && now.second () == 59)
{
SIM.smsSend (addr, char_array); // termistor
kašnjenje (500); SIM.smsSend (addr, char_array1); // DS18B20}
Ali zašto sad.second = 59 jer šalje cijelu minutu SMS -a. Meni se čini, ali probajte sami.
Nakon nekog testa prenio sam program na Geekcreit® Nano.
Možda ovo nije najbolje pisanje programa:), ali radi željeno.
Budući da Geekcreit® ATmega328P Nano ima nekih problema s Arduino IDE -om, prenosim putem terminala (Linux Mint) i bacam USBtinyisp sa ovim: avrdude -c usbtiny -p atmega328p -U bljeskalica: w: SomeHexFile.hex
Korak 5: Uspjelo je
Da, uspjelo je i nalazi se u kući.
Svaki dan u 6:00 ujutro dobivam SMS s temperaturom.