Sadržaj:
2025 Autor: John Day | [email protected]. Zadnja izmjena: 2025-01-13 06:57
Ideja je da dobijem temperaturnu poruku iz kuće mojih očeva.
Ništa prelijepo, samo brzo sastavljanje dijelova.
Dijelovi su:
- Arduino kompatibilan sa Geekcreit® ATmega328P Nano V3 kontroler pločom
- DIY NANO IO Shield V1. O ploča za proširenje za Arduino
- DS1307 bazirani RTC IIC / I2C modul sata u realnom vremenu i DS18b20
- SIM800L Četvoropojasni GSM / GPRS
- LM2596 Mini DC-DC pretvarač podesivi modul napajanja sa stepenicama prema dolje
- Termistor temperature NTC MF52AT
U početku puno o čitanju i traženju.
Prije nego što konačno upotrijebim Geekcreit® Nano, sve dijelove testiram s Arduino Uno.
Korak 1: Uključite SIM800l
Jedna od glavnih tačaka je snaga za Sim800L.
Koristim LM2596 Mini DC-DC pretvarač, podešen na 3,7 volti i zasebno napajanje.
Ova strana je vrlo korisna za testiranje veze s AT+ naredbama:
Brzi početak SIM800 (SIM800L) sa Arduinom
Uz onemogućavanje pin koda pomoću gsm modema na naredbama dobio sam vožnju sim pin koda.
Sljedeće razmatranje koja biblioteka. Internet nudi različita rješenja.
Moje rješenje je biblioteka 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 Arduina. Mora biti spojen na RX pin na SIM800 modulu
Uvijek je dobra ideja čitati *.ccp i *.h datoteke u bibliotekama.
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 magistralom I2C, a to je za Arduino Uno: A4 (SDA) - A5 (SCL)
DS18B20 I je spojen na D3.
Pročitao sam da u SMS -u ne možete slati samo nizove Floats, pa sam morao prevesti float u niz.
To što radim s ovim isječkom koda pronašao sam:
n
MyString1 = String (currentTemp, 2); // Pretvorimo float u String
MyString1 = (MyString1 + "C - RoomTemperatur:)");
// ovdje pretvara niz u char
// Dužina (s jednim dodatnim znakom za null terminator)
int str_len1 = MyString1.length () + 1; // Priprema nizova znakova (tampon)
char char_array1 [str_len1]; // Kopirajte ga
MyString1.toCharArray (char_array1, str_len1); // pretvara niz u char
Biću iskren ne znam kako to funkcionira, ali funkcionira.
Korak 3: Uključite termistor NTC MF52AT
Radio sam prije s termistorom pa je to bio lak 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.
Lemljeno je malo žice i otpornika od 10 k ohma na termistoru.
Korak 4: Neka svi zajedno rade
Tako sam zajedno napisao sve dijelove programa.
Sada 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 čitav minut SMS -a. Meni odgovara, ali probajte sami.
Nakon nekog testa postavio 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, postavljam ih putem terminala (Linux Mint) i bacam USBtinyisp sa ovim: avrdude -c usbtiny -p atmega328p -U flash: 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.