Indholdsfortegnelse:

Pålidelig, sikker, tilpasselig SMS -fjernbetjening (Arduino/pfodApp) - Ingen kodning påkrævet: 4 trin
Pålidelig, sikker, tilpasselig SMS -fjernbetjening (Arduino/pfodApp) - Ingen kodning påkrævet: 4 trin

Video: Pålidelig, sikker, tilpasselig SMS -fjernbetjening (Arduino/pfodApp) - Ingen kodning påkrævet: 4 trin

Video: Pålidelig, sikker, tilpasselig SMS -fjernbetjening (Arduino/pfodApp) - Ingen kodning påkrævet: 4 trin
Video: Den sterkeste forbindelsen av tau, vil aldri løsne! 2024, Juli
Anonim
Pålidelig, sikker, tilpasselig SMS -fjernbetjening (Arduino/pfodApp) - Ingen kodning påkrævet
Pålidelig, sikker, tilpasselig SMS -fjernbetjening (Arduino/pfodApp) - Ingen kodning påkrævet

Opdatering 6. juli 2018: En 3G/2G -version af dette projekt, der bruger SIM5320, er tilgængelig her

Opdatering: 19. maj 2015: Brug pfodParser -biblioteket version 2.5 eller højere. Det løser et rapporteret problem med ikke at give nok tid til, at skjoldet kan oprette forbindelse til netværket efter opstart

Introduktion

Hvordan adskiller pfodSMS fjernbetjening sig fra andre implementeringer:-

  • Det er pålideligt-kommandoer reageres altid på, og tabte beskeder anmodes om igen
  • Det er sikkert - bruger 128 bit adgangskodebeskyttelse
  • Det kræver ingen tredjeparts webtjenestekonti - har kun brug for et aktivt SIM -kort (uden en nål)
  • Det kan tilpasses - du kan bruge pfodDesigner til at oprette din egen brugerdefinerede menu
  • Det er let - pfodDesigner genererer al koden. Du behøver ikke at lave nogen kodning.
  • Det er fleksibelt-alle pfod-skærme er tilgængelige via SMS, som undermenuer, multi- og enkelt markeringsliste, tekstinput, datalogning og plotting.

Se pfodSMS -meddelelsesdesign for at få oplysninger om, hvordan SMS -forbindelsen gøres pålidelig. Se pfodDesigner, Android / Arduino -menuer lavet Simple for detaljer om design af din egen brugerdefinerede menu. Se pfodSpecification.pdf for detaljer om alle pfod -meddelelser og skærme, som du selv kan tilføje.

Eksempelprojekt - SMS varmtvandskontrol

Som et eksempelprojekt beskriver denne instruktør, hvordan du tænder og slukker din varmtvandsbeholder via SMS og kontrollerer, om den er tændt eller slukket. Du skal bruge en elektriker for at installere det.

Trin 1: Hurtig start - SMS fjernbetjening

Hurtig start - SMS fjernbetjening
Hurtig start - SMS fjernbetjening
Hurtig start - SMS fjernbetjening
Hurtig start - SMS fjernbetjening

Her er en hurtig startguide til opbygning af din egen SMS -varmtvandskontrol.

  1. Køb delene på denne liste..
  2. Installer Arduino IDE version 1.5.8, og download og installer pfodParser -biblioteket.
  3. Download den gratis pfodDesigner.
  4. Design din brugerdefinerede menu for at tænde og slukke en digital input fra en menuskyder på din Android -mobil.
  5. Generer koden, vælg SeeedStudio SIM900 GPRS -skjold som forbindelsen. (Der er også en mulighed for IteadStudio SIM900 -skjoldet).
  6. Overfør den genererede kode fra din mobil til IDE (se pfodAppForAndroidGettingStarted.pdf for detaljer), tilføj din hemmelige adgangskode, kompiler og download til Arduino Mega 2560.
  7. Installer dit SIM -kort i GPRS -skjoldet, og sæt skjoldet i Mega 2560. Sørg for, at serielle links er indstillet til Hardware Serial som vist ovenfor.
  8. Tilslut den digitale udgang til solid state eller normalt relæ mellem D3 og GND (eller hvilken pin du nogensinde har valgt i pfodDesigner). Se Sådan tilføjes relæer til Arduino for flere detaljer om relæer..
  9. Tilslut USB -strøm til Mega. Bibliotekskoden aktiverer GPRS -skjoldet for dig..
  10. Installer pfodApp på din Android -mobil, og opret en SMS -forbindelse til skjoldets sim -telefonnr. (se pfodAppForAndroidGettingStarted.pdf for detaljer). Indstil adgangskoden til forbindelsen, hvis du tilføjede en..
  11. Tilslut og se din brugerdefinerede menu vises via SMS. Klik på knappen for at tænde eller slukke relæet..
  12. Få din elektriker til at installere relæet i dit varmtvandskredsløb og koble USB -strømforsyningen til forsyning af Mega og afskærmning

Trin 2: Flere detaljer

pfodDesigner

PfodDesigner genererer al den kode, du har brug for for at tænde og slukke solid state eller et andet relæ, men SMS-forbindelsen i pfodParser-biblioteket understøtter alle pfod-skærmene, så når du først er kommet i gang, kan du tilføje undermenuer, numeriske skyder, multi-tekst skyder, tekstindtastningsskærme, datalogning og plotting alt via SMS. Tjek pfodSpecification.pdf for alle de skærme og meddelelser, der understøttes.

Den genererede kode er her. Det har ingen prompt og kun en enkelt switch for at holde beskeden kort. Lange menuer sendes via flere SMS -beskeder, som tager længere tid at ankomme. Hvis du har en lang menu, håndterer sms -forbindelseskoden i pfodParser -biblioteket alt dette for dig.

For at tilføje en adgangskode til din SMS -forbindelse skal du ændre linjen

parser.connect (& pfodSMS); // forbinde parser til SMS -stream til noget som parser.connect (& pfodSMS, F ("173057F7A706AF9BBE65D51122A14CEE"));

men brug din egen adgangskode på op til 32 hex cifre, 0..9 A.. F. Adgangskoder kortere end 32 hex -cifre er polstret med 0'er. Se En simpel wifi/internetpfodDevice med 128bit sikkerhed (Arduino) for at få genereret et tilfældigt kodeord og sende det til en QR -kode for let input til din Android. Se også pfodAppForAndroidGettingStarted.pdf

PfodDesigner vil også generere kode til bluetooth og wifi forbindelser via Serial og Ethernet via SPI alle med valgfri 128bit sikkerhed

pfodApp

Den første ting at indse er, at SMS er sloooow og muligvis slet ikke kommer derhen eller kommer ud af drift. Så når du opretter forbindelse til pfodApp, vil der være en vis forsinkelse, før der kommer et SMS -svar. Hvis meddelelsen blev tabt eller forsinket, sender pfodApp den automatisk igen efter 3 minutter. Efter 5 sådanne forsøg vil pfodApp fortælle dig, at forbindelsen er tabt. Du kan justere 3 minutter i pfodApps forbindelsesredigeringsskærm.

Hvis du tilføjer en adgangskode, er der seks SMS -beskeder (tre hver vej), før hovedmenuen modtages af pfodApp. Disse ekstra meddelelser sker kun ved den første forbindelse, hvorefter der ikke er nogen ekstra beskeder, når du bruger en adgangskode. Så start uden adgangskode for at se, at alt fungerer, og tilføj derefter adgangskoden senere.

SMS/GPRS -skjold

Mulige problemer er SIM -kort beskyttet af pin -numre eller ikke autoriseret til at oprette forbindelse til netværket. Pfod -biblioteket aktiverer automatisk GPRS -skjoldet og leder efter 'opkaldsklar' svar. Hvis dette svar ikke kommer, slukker biblioteket og prøver igen, så hvis du ser strømindikatoren på GPRS -skjoldet tænde i 20 sekunder og derefter slukker, er der et problem med at oprette forbindelse til netværket. Tag SIM -kortet ud, og prøv det på en normal telefon. Kontroller, at du ikke bliver bedt om et pinkode.

Hvis det ikke er problemet, skal du tænde for opstartsfejlfinding som beskrevet nedenfor for at se, hvad der sker.

Drift af Mega / GPRS -skjoldet

Skjoldet trækker op til 2A pulseret og op til 0,5A kontinuerligt. Forudsat en 12V batteriforsyning, overstiger 0,5A kapaciteten på Mega ombord strømforsyning. Så dette skjold bør IKKE drives fra 7V til 12V indgangen på Mega. Alternativet er at forsyne Mega og afskærme via USB -forbindelsen. Jeg brugte en 1A USB -forsyning. Til test brugte jeg en Belkin -drevet hub (F4U020) for at forhindre, at der trækkes for meget strøm fra min computers USB -port.

For en 12V batteriforsyning foreslår jeg at bruge en kvalitets Automotive USB 5V oplader, 1A eller højere. En USB 5V -forsyning i bil bør være designet til at håndtere overspændingsspidser, der forekommer i bilens elektriske systemer, og bør derfor være egnet til de fleste 12V opladningssystemer.

Solid State relæ

Da dette eksempelprojekt styrer en varmtvandsbeholder, (en resistiv belastning), er et Solid State -relæ ideelt. Hvis du vil tænde eller slukke motorer, starte generatorer osv., Skal du tale med din elektriker om et passende relæ til jobbet. Hvis du har brug for et højeffektrelæ, kan du bruge et lille relædrev ved arduino -kortet til at tænde og slukke for strømrelæet.

Der er mange versioner solid state relæ til rådighed. Sørg for at købe på den, der kan klare strømmen og spændingen på din varmelegeme og kan styres af 5V DC og et par milliampere til rådighed fra Arduino output pin. Den, der bruges her, FOTEK SSR-40 DA, skifter op til 380VAC ved 40Amps og styres af noget mere end 3V DC og tager mindre end 7mA.

Du skal bruge en kølelegeme, og du skal anvende en TYNT udtværing af kølelegememiddel eller termisk fedt på bagsiden af solid state -relæet, før den boltes til kølelegemet. Ideen er at dække overfladen helt med det tyndeste lag af hovedvaskeforbindelse for at udfylde de mikroskopiske dale i metalets overflade. Når den er tændt, falder solid state -kontakten 1,6V, hvilket genererer 16Watt varme ved 10Amps. Kølelegemet er nødvendigt at slippe af med denne varme, så den skal monteres i fri luft, ikke inde i en plastkasse.

Forsinkelser er onde

GPRS -skjoldet leverer til enhver tid SMS -beskeder via den serielle forbindelse, og din hovedsløjfe () skal kalde cmd = parser.parse (); ofte for at behandle seriedataene, inden 64byte -bufferen i Arduino -bibliotekskoden fyldes op, og data går tabt.

Så du skal holde din hovedsløjfe () kørende hurtigt. Du bør aldrig bruge delay () og bør kontrollere, at ingen af de biblioteker, du bruger, har forsinkelser. Ved hjælp af standard 19200 baud rate på SIM900 via hardware seriel har jeg ikke fundet det nødvendigt at øge bufferstørrelsen i Arduino bibliotekskoden. Jeg bruger ikke Software Serial, kun Serial og Serial1, Hardware Serial -forbindelser og næsten alle de meddelelser, pfodApp sender, er meget små, 10 eller 12 bytes. Du kan dog øge størrelsen på Arduino -bufferen, hvis du ønsker det, ved at ændre definitionen i HardwareSerial.h fra #define SERIAL_BUFFER_SIZE 64 til #define SERIAL_BUFFER_SIZE 128

Men jeg fandt ud af, at hvis jeg aktiverede fejlfindingsoutput, som beskrevet nedenfor, var jeg nødt til at have en meget hurtig baudhastighed for terminalforbindelsen, ellers forårsagede forsinkelsen ved at sende fejlfindingsmeddelelser til terminalen, at dele af SMS -beskederne blev savnet.

Installation

Jeg tilføjede en skrueterminalafskærmning, så jeg havde noget at forbinde Solid State -relæledninger til. Jeg har ikke fået min elektriker til at installere controlleren endnu. Det skal lægges i en isoleret boks, men med køleplade, der stikker ud gennem en åbning og ledes ind i varmtvandsledningen.

Trin 3: Forslag til yderligere forbedringer - advarsler, datalogning og plotting

Eksempelprojektet ovenfor viser bare, hvordan vand er tændt eller slukket, og giver dig mulighed for at skifte det. Men SMS -forbindelsen håndterer alle pfod -meddelelser (se pfodSpecification.pdf)

Hvis du tilføjer temperatursensor til din arduino, kan du også sende overvåge temperaturen og sende aflæsninger med jævne mellemrum. For at sende en datalæsning tilbage er det samme for bluetooth, wifi eller SMS, tilføj bare koden som eksemplet herunder. Se Datalogning og plotting for flere detaljer og eksempler på datalogning og plotting.

parser.println (tid); parser.print (','); parser.println (temperatur);

Når pfodSMS -biblioteket ser den nye linje fra println (), sender den rådata som en SMS. På din mobil skal du bare lade pfodApp køre i baggrunden, og din mobil vil give dig besked, når der modtages en SMS. Åbn pfodApp igen for at bringe det til fronten, og åbn derefter Raw Data -skærmen fra mobilens menu for at se dataene. Bemærk: pfodSMS-meddelelserne er UTF-8-tegn sammen med forbindelses- og meddelelsesnumre, der kodes ved hjælp af en Base64-kodning, så de ikke ligner normal tekst. Se pfodSMS -meddelelsesdesign for alle detaljer.

Du kan bruge den samme proces til at sende en advarsel, når noget ændres eksternt. dvs. parser.println (F (“Udetemperatur under 0 ℃”)); Bemærk: ℃ UTF-8-tegnet i strengen. pfodSMS sender alle UTF-8-tegn videre til pfodApp.

Trin 4: Debugging under brug af SMS -forbindelsen i PfodParser -biblioteket

Debugging under brug af SMS -forbindelsen i PfodParser -biblioteket
Debugging under brug af SMS -forbindelsen i PfodParser -biblioteket
Debugging under brug af SMS -forbindelsen i PfodParser -biblioteket
Debugging under brug af SMS -forbindelsen i PfodParser -biblioteket

PfodDesigner genererer kode, der fungerer, men du vil måske fejle din egen ekstra kode eller se på, hvad der sker, mens GPRS -skjoldet starter eller modtager SMS -beskeder. Der er et par tilgange, du kan tage.

Fejlfinding af din egen kode

Hvis du debugger din egen kode, kan du bare kommentere pfodSMS -linjen og forbinde parseren til Serial og derefter fjerne GPRS -skjoldet og køre Mega fra Arduino -terminalen. dvs. ændre opsætningen () til

//pfodSMS.init(&Serial, 9); // start ikke GPRS -skjoldet parser.connect (& Serial); // tilslut parser til Serial i stedet for SMS -stream

Derefter kan du fra Arduino -terminalen skrive {.} For at få Mega til at returnere hovedmenuen og derefter sende kommandoen tilbage, du vil udføre, f.eks. {A`1} for at tænde relæet og {A`0} for at slukke det. (PfodApp sender normalt disse meddelelser til dig, når du klikker på skyderen.) Tilføj derefter ekstra fejlfinding parser.println () for at overvåge, hvilken ekstra kode du tilføjede gør.

Overvågning af GPRS -skjoldet

Hvis du vil se, hvad GPRS -skjoldet gør. Hvordan den starter, modtager SMS -beskeder osv. Derefter skal du ændre skærmledningen, tilslutte den til Mega Serial1 (seriel) og frigøre Serial (USB) -forbindelsen til fejlfindingsoutput til Arduino IDE Monitor.

For at tilslutte GPRS -skjoldet til Mega 2560 Serial1 skal du fjerne links vist ovenfor og tilføje ledningerne til Megas TX1- og RX1 -ben.

Skift derefter opsætningskoden () til

void setup () {Serial1.begin (19200); // ændre Serial til Serial 1 Serial.begin (57600); // BEMÆRK den hurtige baudhastighed for USB Serial -porten // til Arduino IDE -skærmen. for (int i = 3; i> 0; i--) {// vent et par sekunder for at se, om vi bliver programmeret forsinkelse (1000); } pinMode (cmd_A_pin, OUTPUT); pfodSMS.setDebugStream (& Serial); // skal gøre dette før pfod_SMS.init // eller ethvert andet opkald til pfod_SMS metode // initialisere SMS'en og forbinde parseren // ændre den næste linje til Serial1 pfodSMS.init (& Serial1, 9); // tilslut Seeed GPRS shield V2 til Serial1 i stedet for Serial parser.setDebugStream (& Serial); // skal gøre dette før parser.connect // eller enhver anden parsermetode kalder parser.connect (& pfodSMS); // tilslut parser til SMS -stream}

Nu kan du fjerne nogle af fejlfindingsindstillingerne i pfodParser -biblioteket ved siden af pfodSMS_SIM900.cpp -filen.

For eksempel fjerner du en kommentar #define DEBUG_SETUP vil udskrive (til fejlfindingsstrømmen), hvad der sker, mens GPRS-skjoldet tændes og gøres klar til at modtage SMS-beskeder.

Hvis du ikke kommenterer #define DEBUG vil give masser af oplysninger om de SMS-beskeder, der modtages.

Det er det !

Anbefalede: