Innehållsförteckning:

Pålitlig, säker, anpassningsbar SMS -fjärrkontroll (Arduino/pfodApp) - Ingen kodning krävs: 4 steg
Pålitlig, säker, anpassningsbar SMS -fjärrkontroll (Arduino/pfodApp) - Ingen kodning krävs: 4 steg

Video: Pålitlig, säker, anpassningsbar SMS -fjärrkontroll (Arduino/pfodApp) - Ingen kodning krävs: 4 steg

Video: Pålitlig, säker, anpassningsbar SMS -fjärrkontroll (Arduino/pfodApp) - Ingen kodning krävs: 4 steg
Video: Nail It Safety Skottsäker vägg - Med spik för effektivt montage av skottsäker vägg 2024, November
Anonim
Pålitlig, säker, anpassningsbar SMS -fjärrkontroll (Arduino/pfodApp) - Ingen kodning krävs
Pålitlig, säker, anpassningsbar SMS -fjärrkontroll (Arduino/pfodApp) - Ingen kodning krävs

Uppdatering 6 juli 2018: En 3G/2G -version av projektet med SIM5320 finns här

Uppdatering: 19 maj 2015: Använd pfodParser -biblioteket version 2.5 eller senare. Det åtgärdar ett rapporterat problem med att inte tillåta tillräckligt med tid för skölden att ansluta till nätverket efter uppstart

Introduktion

Hur skiljer sig pfodSMS fjärrkontroll från andra implementeringar:-

  • Det är tillförlitligt-kommandon besvaras alltid och förlorade meddelanden begärs igen
  • Det är säkert - använder 128 -bitars lösenordsskydd
  • Det kräver inga tredje parts webbtjänstkonton - behöver bara ett aktivt SIM -kort (utan nål)
  • Det är anpassningsbart - du kan använda pfodDesigner för att skapa din egen anpassade meny
  • Det är enkelt - pfodDesigner genererar all kod. Du behöver inte göra någon kodning.
  • Det är flexibelt-alla pfod-skärmar är tillgängliga via SMS, som undermenyer, fler- och enstaka urvalslista, textinmatning, dataloggning och plottning.

Se pfodSMS -meddelandedesign för hur SMS -anslutningen görs pålitlig. Se Challenge and Response Security för internetanslutna pfodDevices för detaljer om 128 -bitars säkerhet. Se pfodDesigner, Android / Arduino -menyer som är enkla för detaljer om hur du utformar din egen anpassade meny. Se pfodSpecification.pdf för detaljer om alla pfod -meddelanden och skärmar som du kan lägga till själv.

Exempelprojekt - SMS varmvattenkontroll

Som ett exempelprojekt beskriver denna instruktör hur du slår på och av din varmvattenberedare via SMS och kontrollerar om den är på eller av. Du behöver en elektriker för att installera den.

Steg 1: Snabbstart - SMS fjärrkontroll

Snabbstart - SMS fjärrkontroll
Snabbstart - SMS fjärrkontroll
Snabbstart - SMS fjärrkontroll
Snabbstart - SMS fjärrkontroll

Här är en snabbstartguide för att bygga din egen SMS -varmvattenkontroll.

  1. Köp delarna på den här listan..
  2. Installera Arduino IDE version 1.5.8 och ladda ner och installera pfodParser -biblioteket.
  3. Ladda ner gratis pfodDesigner.
  4. Designa din anpassade meny för att slå på och av en digital ingång från ett menyreglage på din Android -mobil.
  5. Generera koden genom att välja SeeedStudio SIM900 GPRS -sköld som anslutning. (Det finns också ett alternativ för IteadStudio SIM900 -skölden).
  6. Överför den genererade koden från din mobil till IDE (se pfodAppForAndroidGettingStarted.pdf för detaljer), lägg till ditt hemliga lösenord, kompilera och ladda ner till Arduino Mega 2560.
  7. Installera ditt SIM -kort i GPRS -skölden och anslut skärmen till Mega 2560. Se till att seriella länkar är inställda på Hardware Serial som visas ovan..
  8. Anslut den digitala utgången till solid state, eller normalt, relä mellan D3 och GND (eller vilken stift du någonsin valde i pfodDesigner). Se hur man lägger till reläer till Arduino för mer information om reläer.
  9. Anslut USB -ström till Mega. Bibliotekskoden driver upp GPRS -skölden åt dig..
  10. Installera pfodApp på din Android -mobil och skapa en SMS -anslutning till sköldens sim -telefonnummer. (se pfodAppForAndroidGettingStarted.pdf för mer information). Ange lösenordet för anslutningen om du har lagt till ett..
  11. Anslut och se din anpassade meny visas via SMS. Klicka på knappen för att slå på eller av reläet..
  12. Låt din elektriker installera reläet i din varmvattenkrets och koppla upp USB -strömförsörjningen för att driva Mega och skärmen

Steg 2: Fler detaljer

pfodDesigner

PfodDesigner genererar all kod du behöver för att slå på och av solid state eller något annat relä, men SMS-anslutningen i pfodParser-biblioteket stöder alla pfod-skärmar så när du väl har kommit igång kan du lägga till undermenyer, numeriska reglage, multi-text reglage, textinmatningsskärmar, dataloggning och plottning allt via SMS. Kolla in pfodSpecification.pdf för alla skärmar och meddelanden som stöds.

Den genererade koden finns här. Det har ingen prompt och bara en enda switch för att hålla meddelandet kort. Långa menyer skickas via flera SMS -meddelanden som tar längre tid att komma fram. Om du har en lång meny hanterar sms -anslutningskoden i pfodParser -biblioteket allt detta åt dig.

För att lägga till ett lösenord till din SMS -anslutning, ändra linjen

parser.connect (& pfodSMS); // anslut parser till SMS -ström till något som parser.connect (& pfodSMS, F ("173057F7A706AF9BBE65D51122A14CEE"));

men använd ditt eget lösenord med upp till 32 hex -siffror, 0..9 A.. F. Lösenord kortare än 32 hex -siffror är vadderade med 0: or. Se En enkel Wifi/Internet pfodDevice med 128bit säkerhet (Arduino) för hur du genererar ett slumpmässigt lösenord och matar det ut till en QR -kod för enkel inmatning till din Android. Se även pfodAppForAndroidGettingStarted.pdf

PfodDesigner kommer också att generera kod för bluetooth- och wifi -anslutningar via Serial och Ethernet via SPI alla med valfri 128bit -säkerhet

pfodApp

Det första att inse är att SMS är trögt och kanske inte kommer dit alls eller kommer ur funktion. Så när du ansluter med pfodApp kommer det att dröja innan det kommer ett SMS -svar. Om meddelandet försvann eller försenades skickar pfodApp det automatiskt igen efter 3 minuter. Efter fem sådana försök kommer pfodApp att berätta att anslutningen är avbruten. Du kan justera 3 minuter i pfodApps redigeringsskärm för anslutning.

Om du lägger till ett lösenord finns det sex SMS -meddelanden (tre åt varje håll) innan huvudmenyn tas emot av pfodApp. Dessa extra meddelanden sker bara vid den första anslutningen, varefter det inte finns några extra meddelanden när du använder ett lösenord. Så börja utan lösenord för att se att allt fungerar och lägg sedan till lösenordet senare.

SMS/GPRS -sköld

Möjliga problem är SIM -kort som skyddas av pin -nummer eller inte är behöriga att ansluta till nätverket. Pfod -biblioteket slår automatiskt på GPRS -skölden och letar efter svaret "samtalsklart". Om det svaret inte kommer, stängs biblioteket av och försöker igen, så om du ser att strömlampan på GPRS -skölden tänds i 20 sekunder och sedan slocknar finns det ett problem med att ansluta till nätverket. Ta ut SIM -kortet och prova det i en vanlig telefon. Kontrollera att du inte uppmanas att ange ett PIN -nummer.

Om det inte är problemet måste du aktivera startfelsökningen, som beskrivs nedan, för att se vad som händer.

Driva Mega / GPRS -skölden

Skärmen drar upp till 2A pulserade och upp till 0,5A kontinuerligt. Om vi antar en 12V batteritillförsel överstiger 0,5A kapaciteten för Mega ombord strömförsörjning. Så denna skärm ska INTE drivas från 7V till 12V ingången på Mega. Alternativet är att driva Mega och skärmen via USB -anslutningen. Jag använde en 1A USB -enhet. För testning använde jag en Belkin -driven hub (F4U020) för att förhindra att jag drar för mycket ström från datorns USB -port.

För en 12V batteriförsörjning föreslår jag att du använder en kvalitetsautomatisk USB 5V -laddare, 1A eller högre. En högkvalitativ USB 5V -försörjning för bilar bör utformas för att hantera överspänningstoppar som uppstår i bilens elektriska system och bör därför vara lämplig för de flesta 12V -laddningssystemen.

Solid State -relä

Eftersom detta exempelprojekt styr en varmvattenberedare, (en resistiv belastning), är ett Solid State -relä idealiskt. Om du vill slå på eller av motorer, starta generatorer etc, prata med din elektriker om ett lämpligt relä för jobbet. Om du behöver ett högeffektrelä kan du använda en liten relä -enhet vid arduino -kortet för att slå på och av strömreläet.

Det finns många versioner solid state relä tillgängligt. Se till att du köper på den som klarar strömmen och spänningen på din värmare och kan styras av 5V likström och några få ampere tillgängliga från Arduino -utgångsstiften. Den som används här, FOTEK SSR-40 DA, växlar upp till 380VAC vid 40Amps och styrs av något mer än 3V DC och tar mindre än 7mA.

Du måste använda ett kylfläns och du måste applicera ett Tunt utstryk av kylfläns eller termiskt fett på baksidan av solid state -reläet innan du skruvar fast det på kylflänsen. Tanken är att helt täcka ytan med det tunnaste lagret av huvudfat för att fylla i de mikroskopiska dalarna i metallens yta. När den slås på sänker halvledaromkopplaren 1,6V vilket genererar 16Watt värme vid 10Amps. Kylflänsen måste bli av med denna värme så den måste monteras i fri luft, inte i en plastlåda.

Fördröjningar är onda

GPRS -skölden levererar SMS -meddelanden via seriell anslutning när som helst och din huvudslinga () måste ringa cmd = parser.parse (); ofta för att bearbeta seriedata innan 64 -bytesbufferten i Arduino -bibliotekskoden fylls upp och data går förlorade.

Så du måste hålla din huvudslinga () igång snabbt. Du bör aldrig använda fördröjning () och bör kontrollera att inget av de bibliotek du använder har förseningar i dem. Med standard 19200 baudhastighet för SIM900 via Hardware Serial har jag inte funnit det nödvändigt att öka buffertstorleken i Arduino -bibliotekskoden. Jag använder inte Software Serial, bara Serial och Serial1, Hardware Serial -anslutningar och nästan alla meddelanden som pfodApp skickar är mycket små, 10 eller 12 byte. Du kan dock öka Arduino -buffertstorleken om du vill genom att ändra definitionen i HardwareSerial.h från #define SERIAL_BUFFER_SIZE 64 till #define SERIAL_BUFFER_SIZE 128

Men det jag hittade var att om jag aktiverade felsökningsutmatning, som beskrivs nedan, var jag tvungen att ha en mycket snabb överföringshastighet för terminalanslutningen, annars orsakade fördröjningen genom att skicka felsökningsmeddelanden till terminalen att delar av SMS -meddelandena missades.

Installation

Jag lade till en skruvterminalsköld så jag hade något att ansluta Solid State -relätrådarna till. Jag har inte fått min elektriker att installera regulatorn än. Den måste läggas i en isolerad låda, men med kylfläns som sticker ut genom en slits och kopplas in i varmvattenledningen.

Steg 3: Förslag på ytterligare förbättringar - varningar, dataloggning och plottning

Exempelprojektet ovan visar bara hur vattnet är på eller av och låter dig byta det. Men SMS -anslutningen hanterar alla pfod -meddelanden (se pfodSpecification.pdf)

Om du lägger till temperaturgivare till din arduino kan du också skicka övervaka temperaturen och skicka tillbaka mätningar med jämna mellanrum. För att skicka tillbaka en dataläsning är detsamma för bluetooth, wifi eller SMS, lägg bara till koden som exemplet nedan. Se Dataloggning och plottning för mer information och exempel på dataloggning och plottning.

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

När pfodSMS -biblioteket ser den nya raden från println () skickar den rådata som ett SMS. På din mobil, lämna bara pfodApp igång i bakgrunden och din mobil meddelar dig när ett SMS tas emot. Öppna pfodApp igen för att ta det framåt och öppna sedan Raw Data -skärmen från mobilens meny för att se data. Obs: pfodSMS-meddelandena är UTF-8-tecken tillsammans med anslutnings- och meddelandenummer, kodar med en Base64-kodning så att de inte ser ut som normal text. Se pfodSMS -meddelandedesign för alla detaljer.

Du kan använda samma process för att skicka ett meddelande när något ändras på distans. dvs. parser.println (F (“Utetemperatur under 0 ℃”)); Obs: ℃ UTF-8-tecknet i strängen. pfodSMS skickar alla UTF-8-tecken vidare till pfodApp.

Steg 4: Felsöka när du använder SMS -anslutningen i PfodParser -biblioteket

Felsöka när du använder SMS -anslutningen i PfodParser -biblioteket
Felsöka när du använder SMS -anslutningen i PfodParser -biblioteket
Felsöka när du använder SMS -anslutningen i PfodParser -biblioteket
Felsöka när du använder SMS -anslutningen i PfodParser -biblioteket

PfodDesigner genererar kod som fungerar, men du kanske vill felsöka din egen extra kod eller titta på vad som händer medan GPRS -skölden startar eller tar emot SMS -meddelanden. Det finns ett par tillvägagångssätt du kan ta.

Felsöka din egen kod

Om du felsöker din egen kod kan du bara kommentera pfodSMS -raden och ansluta parsern till Serial och sedan ta bort GPRS -skölden och köra Mega från Arduino -terminalen. dvs ändra inställningen () till

//pfodSMS.init(&Serial, 9); // starta inte upp GPRS -skölden parser.connect (& Serial); // Anslut parser till Serial istället för SMS -ström

Sedan från Arduino -terminalen kan du skriva in {.} För att få Mega att återvända till huvudmenyn och sedan skicka tillbaka kommandot du vill utföra, t.ex. {A`1} för att slå på reläet och {A`0} för att stänga av det. (PfodApp skickar vanligtvis dessa meddelanden åt dig när du klickar på reglaget.) Lägg sedan till extra felsökning parser.println () för att övervaka vilken extra kod du lagt till gör.

Övervakning av GPRS -skölden

Om du vill se vad GPRS -skölden gör. Hur det startar, tar emot SMS -meddelanden etc. Därefter måste du byta skärmkablar och ansluta det till Mega Serial1 (serie ett) och frigöra Serial (USB) -anslutningen för felsökning till Arduino IDE Monitor.

För att ansluta GPRS -skölden till Mega 2560 Serial1, ta bort länkar som visas ovan och lägg till kablarna till Megas TX1- och RX1 -stift.

Ändra sedan setup () -koden till

void setup () {Serial1.begin (19200); // ändra Serial till Serial 1 Serial.begin (57600); // OBSERVERA den snabba överföringshastigheten för USB -seriell port // till Arduino IDE -monitorn. for (int i = 3; i> 0; i--) {// vänta några sekunder för att se om vi programmerar fördröjning (1000); } pinMode (cmd_A_pin, OUTPUT); pfodSMS.setDebugStream (& Serial); // måste göra detta innan pfod_SMS.init // eller någon annan pfod_SMS -metodanrop // initiera SMS och anslut parsern // ändra nästa rad till Serial1 pfodSMS.init (& Serial1, 9); // anslut Seeed GPRS shield V2 till Serial1 istället för Serial parser.setDebugStream (& Serial); // måste göra detta innan parser.connect // eller någon annan parsermetod kallar parser.connect (& pfodSMS); // Anslut parser till SMS -ström}

Nu kan du avmarkera några av felsökningsinställningarna i pfodParser -biblioteket vid eller till pfodSMS_SIM900.cpp -filen.

Till exempel, om du inte kommenterar #define DEBUG_SETUP kommer att skriva ut (till felsökningsströmmen) vad som händer medan du startar GPRS-skölden och gör den redo att ta emot SMS.

Om du inte kommenterar #define DEBUG kommer att ge mycket information om de SMS-meddelanden som tas emot.

Det är allt !

Rekommenderad: