Turinys:
2025 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2025-01-13 06:57
Sveiki visi, tai yra mano pirmasis Instructable, tikiuosi, kad padėsiu kūrėjų bendruomenei, nes man buvo naudinga.
Dažnai savo projektuose naudojame jutiklius, tačiau rasti būdą, kaip surinkti duomenis, juos saugoti ir perduoti, telefonai ar kiti įrenginiai nedelsiant ir belaidis ryšys nebuvo paruoštas procesas. Ši instrukcija padės jums tai padaryti
- Duomenų surinkimas iš jutiklio (DHT 11) - temperatūros ir drėgmės jutiklis.
- Įgytų duomenų saugojimas SD kortelėje su SD kortelės moduliu.
- Duomenų perdavimas belaidžiu ryšiu naudojant „Bluetooth“į specialiai sukurtą „Android“programą.
- Gautų jutiklių reikšmių išsaugojimas kaip teksto failas (.txt failas).
1 žingsnis: komponentų sąrašas
Nusileiskime, kad surinktume karius šiam nuostabiam projektui įgyvendinti.
- „Arduino Uno“(bet koks kitas arduino taip pat bus tinkamas)
- „micro SD“kortelės modulis.
- SD kortelės modulis (aš naudoju 8 GB, patariama naudoti> = 32 GB)
- HC05 - „Bluetooth“modulis
- DHT11 (temperatūros ir drėgmės jutiklis)
- Krūva džemperių.
- „Android“telefonas
2 žingsnis: jungtys:
Komponentų sujungimas ir sujungimas yra pusiaukelė. Minėti produktai yra lengvai prieinami daugelyje mažmeninės prekybos elektroninių parduotuvių ir internetinių svetainių, tokių kaip „Amazon“.
„Arduino“- HC05 ryšys („Bluetooth“):
- +5 V - Vcc
- Gnd - Gnd
- Smeigtukas 0 - Tx
- 1 kaištis - Rx
„Arduino“- „SDcard“modulio jungtis:
- +5 V - Vcc
- Gnd - Gnd
- 11 kaištis - MOSI („Master Out Slave In“)
- 12 kaištis - MISO („Master In Slave Out“)
- 13 kaištis - SCk (sinchroninis laikrodis)
- 4 kaištis - CS (lusto pasirinkimas)
„Arduino“- HC05 ryšys („Bluetooth“):
- +5 V - Vcc
- Gnd - Gnd
- Smeigtukas A0 - signalas
3 žingsnis: procedūra
Sujunkite visas dalis, kaip minėta ankstesniame žingsnyje. Tokiu būdu mes galime parašyti kodą „Arduino Ide“, kad pasiektume savo tikslą.
Antroji mūsų projekto dalis - turėti „Android“programą, kad ji gautų jutiklio vertes, parodytų reikšmes ir išsaugotų jas faile mobiliajame telefone. Aš naudoju „Thunkable“kurdamas „Android“programą, taip pat pateikiau jai apk ir aia.
4 žingsnis: „Arduino“kodas:
Arduino kodas buvo pateiktas ir paaiškintas žemiau.
Arduino kodas dažniausiai yra savaime suprantamas, naudojant SD kortelių biblioteką ir DHT11 biblioteką. „Bluetooth“naudoja aparatūros seriją, kuri yra arduino pin0 ir pin1, todėl „Bluetooth“perdavimas vyksta naudojant serijinio spausdinimo () funkcijas, kurios naudoja I2C protokolą, o SD kortelės modulis naudoja SPI protokolą, kad galėtų su juo bendrauti.
/*
* SD kortelė prijungta prie SPI magistralės taip:
** MOSI - 11 kaištis ** MISO - 12 kaištis ** CLK - 13 kaištis ** CS - 4 kontaktas (MKRZero SD: SDCARD_SS_PIN) * * HC 05 modulio jungtis: ** TX - 0 kaištis (numatytasis) [gali būti pakeista, jei naudojama programinė įranga] ** RX - 1 kontaktas (numatytasis) [galima pakeisti, jei naudojama programinė įranga]
*/
#įtraukti
#įtraukti #įtraukti
Failas myFile;
dht DHT; #define DHT11_PIN A0
void setup () {
// Atidarykite nuoseklųjį ryšį ir palaukite, kol bus atidarytas prievadas: Serial.begin (9600); Serial.println („Tipas, būsena, drėgmė (%), temperatūra, temperatūra (C)“); while (! Serial) {; // laukti, kol serijinis prievadas prisijungs. Reikalingas tik vietiniam USB prievadui} DHTAcq (); „sdCardWrite“(„test3.txt“); „sdCardRead“(„test3.txt“);
}
anuliuoti DHTAcq ()
{Serial.println („DHT11, / t“); int chk = DHT.read11 (DHT11_PIN); Serijinis spaudinys (DHT. drėgmė, 1); Serial.print (", / t"); Serijinis atspaudas (DHT.temperatūra, 1); vėlavimas (2000 m.); }
void sdCardWrite (String fileNameStr)
{Serial.println („SD kortelės inicijavimas“); if (! SD.begin (4)) {Serial.println ("Nepavyko inicijuoti"); grįžti; } Serial.println ("Inicijavimas atliktas!"); // atidaryti failą. atkreipkite dėmesį, kad vienu metu gali būti atidarytas tik vienas failas, // todėl prieš atidarydami kitą, turite jį uždaryti. myFile = SD.open (fileNameStr, FILE_WRITE); // jei failas atsidarė gerai, parašykite jam: if (myFile) {myFile.println ("DHT11, / t"); int chk = DHT.read11 (DHT11_PIN); myFile.print (DHT.humidity, 1); myFile.print (", / t"); myFile.print (DHT.temperatūra, 1); myFile.close (); Serial.println ("padaryta!"); vėlavimas (200); /*Serial.print ("Rašymas į test.txt …"); myFile.println ("testavimas 1, 2, 3."); // uždaryti failą: myFile.close (); Serial.println („padaryta“); */} else {// jei failas neatsidarė, atspausdinkite klaidą: Serial.println ("klaida atidarant test.txt"); }}
void sdCardRead (eilutės failo pavadinimas)
{// iš naujo atidarykite failą skaitymui: myFile = SD.open (fileName); if (myFile) {Serial.println ("test.txt:"); // skaityti iš failo, kol jame nieko daugiau nėra: while (myFile.available ()) {Serial.write (myFile.read ()); } // uždaryti failą: myFile.close (); } else {// jei failas neatsidarė, atspausdinkite klaidą: Serial.println ("klaida atidarant test.txt"); }}
void loop () {
// po sąrankos nieko nevyksta //Serial.println("test 1.. 2.. 3 "); // uždelsimas (1000); }
5 veiksmas: „Android“programa:
„Android“programa buvo sukurta naudojant „Thunkable“programą su programavimu vilkite ir nuleiskite. Duomenys bus užregistruoti ekrane esančioje etiketėje ir paspaudus mygtuką „Saugoti duomenis“vietoje „AppInventor“/„Data“su failo pavadinimu, kuriam suteiktas kodas.
Projektą galima išplėsti, kad būtų galima saugoti visus norimus jutiklių duomenis neprisijungus, pakeičiant norimais jutiklių moduliais, o programą galima išplėsti, kad būtų galima gauti duomenis iš saugyklos ir manipuliuoti pagal programą.