Inhoudsopgave:

Betrouwbare, veilige, aanpasbare sms-afstandsbediening (Arduino/pfodApp) - geen codering vereist - Ajarnpa
Betrouwbare, veilige, aanpasbare sms-afstandsbediening (Arduino/pfodApp) - geen codering vereist - Ajarnpa

Video: Betrouwbare, veilige, aanpasbare sms-afstandsbediening (Arduino/pfodApp) - geen codering vereist - Ajarnpa

Video: Betrouwbare, veilige, aanpasbare sms-afstandsbediening (Arduino/pfodApp) - geen codering vereist - Ajarnpa
Video: Motorola R7A NKP 2024, Juli-
Anonim
Betrouwbare, veilige, aanpasbare sms-afstandsbediening (Arduino/pfodApp) - geen codering vereist
Betrouwbare, veilige, aanpasbare sms-afstandsbediening (Arduino/pfodApp) - geen codering vereist

Update 6 juli 2018: een 3G/2G-versie van dit project, met SIM5320, is hier beschikbaar

Update: 19 mei 2015: gebruik de pfodParser-bibliotheek Versie 2.5 of hoger. Het lost een gemeld probleem op waarbij het schild niet genoeg tijd kreeg om verbinding te maken met het netwerk na het opstarten

Invoering

Hoe verschilt pfodSMS-afstandsbediening van andere implementaties: -

  • Het is betrouwbaar - opdrachten worden altijd beantwoord en verloren berichten worden opnieuw opgevraagd
  • Het is veilig - maakt gebruik van 128-bits wachtwoordbeveiliging
  • Het vereist geen webserviceaccounts van derden - alleen een actieve simkaart (zonder pin)
  • Het is aanpasbaar - u kunt pfodDesigner gebruiken om uw eigen aangepaste menu te maken
  • Het is eenvoudig - de pfodDesigner genereert alle code. U hoeft niet te coderen.
  • Het is flexibel - alle pfod-schermen zijn beschikbaar via sms, zoals submenu's, meerdere en enkele selectielijsten, tekstinvoer, datalogging en plotten.

Zie pfodSMS-berichtontwerp voor hoe de sms-verbinding betrouwbaar wordt gemaakt. Zie Challenge and Response Security for Internet connected pfod Devices voor details over de 128-bits beveiliging. Zie pfodDesigner, Android / Arduino-menu's eenvoudig gemaakt voor details over het ontwerpen van uw eigen aangepaste menu. Zie de pfodSpecification.pdf voor de details van alle pfod-berichten en schermen die u zelf kunt toevoegen.

Voorbeeldproject – SMS Warmwaterregeling

Als voorbeeldproject beschrijft deze instructable hoe u uw warmwaterboiler via sms in- en uitschakelt en controleert of deze aan of uit staat. Je hebt een elektricien nodig om het te installeren.

Stap 1: Snel aan de slag - SMS-afstandsbediening

Snel aan de slag - SMS-afstandsbediening
Snel aan de slag - SMS-afstandsbediening
Snel aan de slag - SMS-afstandsbediening
Snel aan de slag - SMS-afstandsbediening

Hier is een snelstartgids voor het bouwen van uw eigen SMS-warmwaterregeling.

  1. Koop de onderdelen op deze lijst..
  2. Installeer de Arduino IDE versie 1.5.8 en download en installeer de pfodParser-bibliotheek.
  3. Download de gratis pfodDesigner.
  4. Ontwerp uw eigen menu om een digitale invoer in en uit te schakelen via een menuschuifregelaar op uw Android-mobiel.
  5. Genereer de code en selecteer SeeedStudio SIM900 GPRS-shield als verbinding. (Er is ook een optie voor het IteadStudio SIM900-schild).
  6. Breng de gegenereerde code over van je mobiel naar de IDE (zie de pfodAppForAndroidGettingStarted.pdf voor details), voeg je geheime wachtwoord toe, compileer en download naar de Arduino Mega 2560.
  7. Installeer uw simkaart in het GPRS-schild en steek het schild in de Mega 2560. Zorg ervoor dat de seriële koppelingen zijn ingesteld op hardware-serieel zoals hierboven weergegeven.
  8. Sluit de digitale uitgang aan op het solid-state of normale relais tussen D3 en GND (of welke pin je ook hebt gekozen in de pfodDesigner). Zie Relais toevoegen aan Arduino voor meer informatie over relais.
  9. Sluit USB-stroom aan op de Mega. De bibliotheekcode activeert het GPRS-schild voor u..
  10. Installeer pfodApp op je Android-mobiel en stel een sms-verbinding in met het sim-telefoonnummer van het schild. (zie de pfodAppForAndroidGettingStarted.pdf voor details). Stel het wachtwoord voor de verbinding in als je er een hebt toegevoegd.
  11. Maak verbinding en zie uw aangepaste menu weergegeven via sms. Klik op de knop om het relais in of uit te schakelen.
  12. Vraag uw elektricien om het relais in uw warmwatercircuit te installeren en sluit de USB-voeding aan om de Mega en het schild van stroom te voorzien

Stap 2: Meer details

pfodDesigner

De pfodDesigner genereert alle code die je nodig hebt om de solid state of een ander relais aan en uit te zetten, maar de sms-verbinding in de pfodParser-bibliotheek ondersteunt alle pfod-schermen, dus als je eenmaal begint, kun je submenu's, numerieke schuifregelaars, schuifregelaars voor meerdere tekst, tekstinvoerschermen, datalogging en plotten allemaal via sms. Bekijk de pfodSpecification.pdf voor alle ondersteunde schermen en berichten.

De gegenereerde code is hier. Het heeft geen prompt en slechts een enkele schakelaar om het bericht kort te houden. Lange menu's worden verzonden via meerdere sms-berichten die langer duren om aan te komen. Als je een lang menu hebt, regelt de sms-verbindingscode in de pfodParser-bibliotheek dit allemaal voor je.

Om een wachtwoord aan uw sms-verbinding toe te voegen, wijzigt u de lijn

parser.connect(&pfodSMS); // verbind parser met SMS-stream naar zoiets als parser.connect(&pfodSMS, F("173057F7A706AF9BBE65D51122A14CEE"));

maar gebruik uw eigen wachtwoord van maximaal 32 hexadecimale cijfers, 0..9 A.. F. Wachtwoorden korter dan 32 hexadecimale cijfers worden opgevuld met nullen. Zie Een eenvoudig wifi/internet pfod-apparaat met 128-bits beveiliging (Arduino) voor het genereren van een willekeurig wachtwoord en het uitvoeren ervan naar een QR-code voor eenvoudige invoer naar uw Android. Zie ook pfodAppForAndroidGettingStarted.pdf

De pfodDesigner genereert ook code voor bluetooth- en wifi-verbindingen via serieel en Ethernet via SPI, allemaal met optionele 128-bits beveiliging

pfodApp

Het eerste dat u moet beseffen, is dat sms traag is en er mogelijk helemaal niet aankomt of niet in orde is. Dus wanneer u verbinding maakt met pfodApp, duurt het even voordat er een sms-reactie is. Als het bericht verloren of vertraagd is, zal pfodApp het na 3 minuten automatisch opnieuw verzenden. Na 5 van dergelijke pogingen zal de pfodApp u vertellen dat de verbinding verbroken is. U kunt de tijd van 3 minuten aanpassen in het verbindingsbewerkingsscherm van de pfodApp.

Als u een wachtwoord toevoegt, zijn er zes sms-berichten (drie per enkele reis) voordat het hoofdmenu door de pfodApp wordt ontvangen. Deze extra berichten gebeuren alleen bij de eerste verbinding waarna er geen extra berichten zijn bij gebruik van een wachtwoord. Begin dus zonder wachtwoord om te zien of alles werkt en voeg het wachtwoord later toe.

SMS/GPRS-schild

Mogelijke problemen zijn SIM-kaarten die beveiligd zijn met pincodes of niet geautoriseerd zijn om verbinding te maken met het netwerk. De pfod-bibliotheek start automatisch het GPRS-schild op en zoekt naar de 'call ready'-reactie. Als dat antwoord niet arriveert, wordt de bibliotheek uitgeschakeld en probeert het opnieuw, dus als u het aan/uit-lampje op het GPRS-schild 20 seconden ziet branden en vervolgens uitgaat, is er een probleem met het verbinden met het netwerk. Haal de simkaart eruit en probeer hem in een normale telefoon. Controleer of u niet om een pincode wordt gevraagd.

Als dat niet het probleem is, moet u de opstartfoutopsporing inschakelen, zoals hieronder beschreven, om te zien wat er gebeurt.

Het Mega / GPRS-schild van stroom voorzien

De afscherming trekt tot 2A gepulseerd en tot 0,5A continu. Uitgaande van een 12V-batterijvoeding, overschrijdt de 0,5A de capaciteit van de Mega-voeding aan boord. Dit schild mag dus NIET worden gevoed vanaf de 7V naar 12V-ingang op de Mega. Het alternatief is om de Mega en shield via de USB-aansluiting van stroom te voorzien. Ik gebruikte een 1A USB-voeding. Voor het testen heb ik een door Belkin gevoede hub (F4U020) gebruikt om te voorkomen dat er te veel stroom uit de USB-poort van mijn computer wordt getrokken.

Voor een 12V-batterijvoeding raad ik aan een hoogwaardige Automotive USB 5V-oplader, 1A of hoger te gebruiken. Een hoogwaardige Automotive USB 5V-voeding moet worden ontworpen om overspanningspieken op te vangen die zich voordoen in elektrische systemen van auto's en zou dus geschikt moeten zijn voor de meeste 12V-laadsystemen.

Solid state relais

Aangezien dit voorbeeldproject een warmwaterboiler regelt (een ohmse belasting), is een Solid State-relais ideaal. Als u motoren aan of uit wilt zetten, generatoren wilt starten etc, overleg dan met uw elektricien over een geschikt relais voor de klus. Als u een relais met hoog vermogen nodig heeft, kunt u een kleine relaisaandrijving van het Arduino-bord gebruiken om het vermogensrelais in en uit te schakelen.

Er zijn vele uitvoeringen solid state relais beschikbaar. Zorg ervoor dat u een aankoop doet die de stroom en spanning van uw verwarming aankan en kan worden geregeld door 5V dc en een paar milliampère beschikbaar via de Arduino-uitgangspin. Degene die hier wordt gebruikt, FOTEK SSR-40 DA, schakelt over naar 380VAC bij 40Amp en wordt bestuurd door iets meer dan 3V dc en neemt minder dan 7mA.

U moet een koellichaam gebruiken en u moet een DUN uitstrijkje van koellichaammassa of thermisch vet op de achterkant van het solid-state relais aanbrengen voordat u het aan het koellichaam vastschroeft. Het idee is om het oppervlak volledig te bedekken met de dunste laag gootsteenverbinding om de microscopisch kleine valleien in het metaaloppervlak op te vullen. Wanneer ingeschakeld, daalt de solid-state schakelaar 1,6 V, wat 16 Watt warmte genereert bij 10 Ampère. Het koellichaam is nodig om deze warmte kwijt te raken, dus het moet in de vrije lucht worden gemonteerd, niet in een plastic doos.

Vertragingen zijn slecht

Het GPRS-schild levert op elk moment sms-berichten via de seriële verbinding en uw hoofdlus() moet cmd = parser.parse(); vaak aanroepen om de seriële gegevens te verwerken voordat de 64byte-buffer in de Arduino-bibliotheekcode vol raakt en gegevens verloren gaan.

U moet uw hoofdlus() dus snel laten draaien. Gebruik nooit delay() en controleer of geen van de bibliotheken die u gebruikt vertragingen heeft. Met behulp van de standaard 19200 baudrate van de SIM900 via Hardware Serial, heb ik het niet nodig gevonden om de buffergrootte in de Arduino-bibliotheekcode te vergroten. Ik gebruik geen Software Serial, alleen Serial en Serial1, Hardware Serial verbindingen, en bijna alle berichten die de pfodApp verzendt zijn erg klein, 10 of 12 bytes. U kunt desgewenst echter de buffergrootte van Arduino vergroten door de definitie in HardwareSerial.h te wijzigen van #define SERIAL_BUFFER_SIZE 64 in #define SERIAL_BUFFER_SIZE 128

Wat ik echter wel vond, was dat als ik de foutopsporingsuitvoer inschakelde, zoals hieronder beschreven, ik een zeer snelle baudrate voor de terminalverbinding moest hebben, anders veroorzaakte de vertraging die werd geïntroduceerd door het verzenden van foutopsporingsberichten naar de terminal ervoor dat delen van de sms-berichten werden gemist.

Installatie

Ik heb een schroefklemafscherming toegevoegd, zodat ik iets had om de Solid State-relaisdraden op aan te sluiten. Ik heb mijn elektricien de controller nog niet laten installeren. Het moet in een geïsoleerde doos worden geplaatst, maar met een koellichaam dat door een gleuf naar buiten steekt en wordt aangesloten op de warmwaterstroomkabel.

Stap 3: Suggesties voor verdere verbeteringen – Waarschuwingen, datalogging en plotten

Het voorbeeldproject hierboven geeft alleen weer hoe water aan of uit staat en stelt u in staat om het te schakelen. Maar de sms-verbinding verwerkt alle pfod-berichten (zie pfodSpecification.pdf)

Als u een temperatuursensor aan uw arduino toevoegt, kunt u ook de temperatuur controleren en met regelmatige tussenpozen metingen terugsturen. Om een data-uitlezing terug te sturen is hetzelfde voor bluetooth, wifi of sms, voeg gewoon de code toe zoals in het onderstaande voorbeeld. Zie Datalogging en plotten voor meer details en voorbeelden van datalogging en plotten.

parser.println(tijd);parser.print(', ');parser.println(temperatuur);

Wanneer de pfodSMS-bibliotheek de nieuwe regel van println() ziet, zal deze de onbewerkte gegevens als een sms verzenden. Op je mobiel laat je pfodApp gewoon op de achtergrond draaien en je mobiel zal je op de hoogte stellen wanneer er een sms is ontvangen. Open pfodApp opnieuw om het naar voren te brengen en open vervolgens het Raw Data-scherm vanuit het menu van de mobiel om de gegevens te zien. Opmerking: De pfodSMS-berichten zijn UTF-8-tekens samen met verbindings- en berichtnummers, gecodeerd met een Base64-codering zodat ze er niet als normale tekst uitzien. Zie pfodSMS-berichtontwerp voor alle details.

U kunt hetzelfde proces gebruiken om een waarschuwing te sturen wanneer er op afstand iets verandert. d.w.z. parser.println(F(“Buitentemperatuur onder 0℃”));Opmerking: het ℃ UTF-8-teken in de string. pfodSMS geeft alle UTF-8 karakters door aan de pfodApp.

Stap 4: Foutopsporing tijdens het gebruik van de sms-verbinding in de PfodParser-bibliotheek

Foutopsporing tijdens het gebruik van de SMS-verbinding in de PfodParser-bibliotheek
Foutopsporing tijdens het gebruik van de SMS-verbinding in de PfodParser-bibliotheek
Foutopsporing tijdens het gebruik van de SMS-verbinding in de PfodParser-bibliotheek
Foutopsporing tijdens het gebruik van de SMS-verbinding in de PfodParser-bibliotheek

De pfodDesigner genereert code die werkt, maar misschien wilt u uw eigen extra code debuggen of kijken wat er gebeurt terwijl het GPRS-schild opstart of SMS-berichten ontvangt. Er zijn een aantal benaderingen die u kunt volgen.

Je eigen code debuggen

Als u uw eigen code debugt, kunt u gewoon commentaar geven op de pfodSMS-regel en de parser verbinden met Serial en vervolgens het GPRS-schild verwijderen en de Mega vanaf de Arduino-terminal uitvoeren. d.w.z. verander de setup() naar

//pfodSMS.init(&Serial, 9); // start de GPRS-shield parser.connect (&Serial) niet op; // verbind parser met serieel in plaats van sms-stream

Vervolgens kun je vanaf de Arduino-terminal {.} typen om de Mega terug te laten keren naar het hoofdmenu en vervolgens de opdracht terug te sturen die je wilt uitvoeren, b.v. {A`1} om het relais in te schakelen en {A`0} om het uit te schakelen. (De pfodApp verzendt deze berichten meestal voor u wanneer u op de schuifregelaar klikt.) Voeg vervolgens extra debugging parser.println() toe om te controleren welke extra code u aan het doen bent.

Het GPRS-schild bewaken

Als je wilt zien wat het GPRS-schild doet. Hoe het opstart, sms-berichten ontvangt enz. Vervolgens moet u de schildbedrading wijzigen, deze aansluiten op de Mega Serial1 (seriële) en de seriële (USB) verbinding vrijmaken voor debug-uitvoer naar de Arduino IDE-monitor.

Om het GPRS-schild aan te sluiten op de Mega 2560 Serial1, verwijdert u de bovenstaande links en voegt u de draden toe aan de Mega's TX1- en RX1-pinnen.

Verander dan de setup() code in

void setup() { Serial1.begin (19200); // verander Serial naar Serial 1 Serial.begin (57600); // LET OP de snelle baudrate voor de USB seriële poort // naar de Arduino IDE-monitor. for (int i=3; i>0; i--) {// wacht een paar seconden om te zien of we vertraging (1000) hebben geprogrammeerd; } pinMode (cmd_A_pin, OUTPUT); pfodSMS.setDebugStream(&Serial); // moet dit doen vóór pfod_SMS.init // of een andere pfod_SMS-methodeaanroep // initialiseer de sms en verbind de parser // verander de volgende regel in Serial1 pfodSMS.init(&Serial1, 9); // verbind Seeed GPRS-schild V2 met Serial1 in plaats van Serial parser.setDebugStream (&Serial); // moet dit doen voordat parser.connect // of een andere parsermethode wordt aangeroepen parser.connect(&pfodSMS); // verbind parser met sms-stream}

Nu kunt u enkele van de Debug-instellingen in de pfodParser-bibliotheek uit het commentaar verwijderen aan de bovenkant van het pfodSMS_SIM900.cpp-bestand.

Als u bijvoorbeeld geen commentaar geeft op #define DEBUG_SETUP, wordt (naar de debug-stream) afgedrukt wat er gebeurt terwijl het GPRS-schild wordt ingeschakeld en gereed wordt gemaakt om sms-berichten te ontvangen.

Ont-commentaar #define DEBUG zal veel informatie geven over de SMS-berichten die worden ontvangen.

Dat is het !

Aanbevolen: