Përmbajtje:
2025 Autor: John Day | [email protected]. E modifikuara e fundit: 2025-01-13 06:58
Ideja është të marr një sms të temperaturës nga shtëpia e baballarëve të mi.
Asgjë e lezetshme, thjesht bashkimi i shpejtë i pjesëve.
Pjesët janë:
- Bordi i kontrolluesit Geekcreit® ATmega328P Nano V3 Arduino i pajtueshëm
- DIY NANO IO Shield V1. O Bordi i Zgjerimit Për Arduino
- Moduli i orës në kohë reale i bazuar në RTC IIC / I2C i bazuar në DS1307 dhe DS18b20
- SIM800L GSM / GPRS me katër banda
- LM2596 Mini DC-DC Converter i rregullueshëm Hapi poshtë Moduli i Furnizimit me Energji
- Temperatura e termistorit NTC MF52AT
Së pari, shumë nga leximi dhe kërkimi.
Përpara se më në fund përdor Geekcreit® Nano, i testoj të gjitha pjesët me një Arduino Uno.
Hapi 1: Merrni SIM800l në punë
Një pikë kryesore është fuqia për Sim800L.
Unë përdor një konvertues LM2596 Mini DC-DC, të rregulluar në 3.7 volt dhe një furnizim me energji të veçantë.
Për të testuar lidhjen me komandat AT+ kjo anë është shumë e përdorshme:
Fillo shpejt SIM800 (SIM800L) me Arduino
Me Çaktivizo kodin pin duke përdorur modemin gsm në komandat kam hipur në kodin pin sim.
Konsiderata tjetër cila bibliotekë. Interneti ofron zgjidhje të ndryshme.
Zgjidhja ime është biblioteka nga Mattias Aabmets: AspenSIM800
Provimi i tij: Send_SMS.ino përdori I si program bazë dhe një nga një lidh të gjitha pjesët e tjera së bashku.
Pin Tx dhe pin Rx janë kod për:
RX_PIN 10 e Arduino. Duhet të jetë i lidhur me pinin TX të modulit SIM800. TX_PIN 11 të Arduino. Duhet të jetë i lidhur me pinin RX të modulit SIM800
Alwaysshtë gjithmonë ide e mirë të lexoni skedarët *.ccp dhe *.h në biblioteka.
Ato përmbajnë shumë sugjerime dhe njohuri interesante.
Hapi 2: Merrni në punë RTC DS1307 Me Sensorin DS18B20
Kam përdorur këtë anë: simtronyx - blog për DS1307 dhe DS18B20.
Ora ka një lidhje autobusi I2C dhe kjo është për Arduino Uno: A4 (SDA) - A5 (SCL)
DS18B20 I lidhur me D3.
Kam lexuar se në një SMS nuk mund të dërgoni Floats only String, kështu që më është dashur të përkthej floats në string.
Që bëj me këtë fragment kodi gjeta:
n
MyString1 = String (aktualeTemp, 2); // Shndërroni float në String
MyString1 = (MyString1 + "C - RoomTemperatur:)");
// konvertimi i vargut në char fillon këtu
// Gjatësia (me një karakter shtesë për terminatorin null)
int str_len1 = MyString1.length () + 1; // Përgatitni grupin e karaktereve (tampon)
char char_array1 [str_len1]; // Kopjoni atë
MyString1.toCharArray (char_array1, str_len1); // konvertimi i vargut në char përfundon atë
Unë do të jem i sinqertë nuk e di se si funksionon, por funksionon.
Hapi 3: Merrni Thermistor NTC MF52AT në punë
Kam punuar më parë me një termistor kështu që ishte pjesa e lehtë.
Por gjithashtu këtu mund të gjeni zgjidhje të ndryshme.
Në kodin përfundimtar mund të gjeni timen.
Ajo gjithashtu mund të gjeni përkthimin Floats to String.
Salduan një tel dhe një rezistencë 10 ohm në termistor.
Hapi 4: Punoni të gjithë së bashku
Kështu që unë shkrova të gjitha pjesët e programit së bashku.
Tani më duhej të kuptoja se si të dërgoja një SMS çdo ditë, në të njëjtën kohë.
Kam lexuar për ide të ndryshme, disa me një TimerAlarm dhe qasje të tjera.
Por gjeta një zgjidhje të thjeshtë diku në forumin arduino:
nëse (tani.or () == 8 && tani.minute () == 00 && tani.sekondë () == 59)
{
SIM.smsSend (addr, char_array); // termistor
vonesë (500); SIM.smsSend (addr, char_array1); // DS18B20}
Por pse tani.sekonda = 59 sepse dërgon një SMS të tërë minutë. Për mua, por provojeni vetë.
Pas disa testeve unë e ngarkova programin në Geekcreit® Nano.
Ky ndoshta nuk është shkrimi më i mirë i programit:) por bën atë që dëshironi.
Për shkak se Geekcreit® ATmega328P Nano ka disa probleme Arduino IDE, unë ngarkoj me terminal (Linux Mint) hedh USBtinyisp me këtë: avrdude -c usbtiny -p atmega328p -U flash: w: SomeHexFile.hex
Hapi 5: Punoi
Po ka funksionuar dhe është vendosur në shtëpi.
Çdo ditë në orën 6:00 të mëngjesit marr një SMS me temperaturën.