Ovládáme Arduinotech GSM Shield

Podobné dokumenty
ArduinotechGSMShield knihovna

eses výukový multi shield pro Arduino UNO

GSM/GPRS modul pro Arduino

Čtečka otisků prstů 1. POPIS 2. SPECIFIKACE. ECLIPSERA s.r.o. Distributor pro ČR. VÝROBNÍ ČÍSLO

Pro zprovoznění komunikace našeho Sigfox modemu se sítí je potřeba udělat následující kroky. Jako první si otevřeme webové stránky

Cvičení 2. Obsah a cíle cvičení. Obsah. A5MPL Programování mikropočítačů Digitální vstupy a výstupy - LED a tlačítka.

Programování mikropočítačů platforma Arduino

INTERFACE GSM VT-GSM-007

GSMRELE2 verze Uživatelský návod. Verze 1.01

Chuango. Vážený zákazníku,

SA-REOP-Basic GSM komunikátor Instalační příručka

Zařízení pro sledování polohy objektu pomocí GPS

TES GPS Osobní lokátor (dále GPS OL)

ORY. Senzor vlhkosti Teplotní čidlo. Čidlo nízkých teplot. Připojovací kabel

TFT LCD shield pro Arduino Mega 2560

MK3x3 programovatelné relé

1. POPIS 2. SPECIFIKACE. ECLIPSERA s.r.o. Distributor pro ČR. VÝROBNÍ ČÍSLO. Tento malý a kompaktní modul je schopen určit vaši polohu

GSM-01. Pro lepší pochopení tohoto výrobku, přečtěte si uživatelská příručka důkladně před použitím.

Arduino Data Logger Shield

Společnost pro elektronické aplikace. SEA s.r.o. Dolnoměcholupská 21 CZ Praha 10

Uživatelská příručka

PocketHome R CENTRÁLNÍ OVLÁDÁNÍ VYTÁPĚNÍ VAŠEHO DOMU VIZUÁLNÍ PŘÍRUČKA K MODULU GST1

SA-GSMALL. Instalační manuál

TFT LCD shield MCUFRIEND

Stolní hodiny s IP kamerou p, WiFi, IR

Cílem dnešní lekce je obohatit náš dosavadní systém a připravit se na připojení do cloudu


1 Podrobná specifikace Yunifly Datasheet

Programovatelné relé Easy (Moeller), Logo (Siemens)


setup() { I = 0; } loop() { I = I + 1; }

PALUBNÍ CAMERA, HD. příručka. Aby jste lépe využívali veškeré funkce Auto DVR, přečtěte si prosím návod před použitím pečlivě.

Aplikace. Hlásič SMS

Návod k instalaci, nastavení a použití

PRT3 tiskový modulu manuál pro EVO ústředny

Chuango. Vážený zákazníku,

2005 Mikrovlny s.r.o. IP/GSM Restarter

Víkendový projekt: Bezklíčové otevírání domovních dveří

GSM2 Modul. Obecný popis + Konfigurace pomocí SMS. ELEKTRO-FA.PAVELEK s.r.o. Pobočka Czechphone. Průmyslová 969/15.

TW15 KONCOVÝ PRVEK MSKP. Popis výrobku Technická data Návod k obsluze. Technologie 2000 s.r.o., Jablonec nad Nisou

Arduino Martin Friedl

Ekonomický GPS lokátor pro pevné připojení na autobaterii

GPS lokátor do auta - výdrž 100 dní

Technická dokumentace ČTEČKA ČIPŮ DALLAS. typ DSRS2319 verze 1.2.

Programovatelné relé Easy (Moeller), Logo (Siemens)

Návod k použití. GSM alarmu T341L. Tento návod k obsluze popisuje užívatelský postup při ovládání výše uvedeného alarmu. Obsah

Diktafon se vzdáleným odposlechem a výdrží až 100 dní

TFT LCD Mega Shield V2.2

NÁVOD NA MONTÁŽ A OBSLUHU SXS 20

Připojení mobilního telefonu Modul GSM. Návod k instalaci a obsluze CZ-B V GSM-A IACZ

GPS/GSM lokátor. Technické parametry: Hmotnost: GPS přesnost: Provozní teplota: -20 až + 55 C. Popis jednotlivých částí:

54. odborná konference ČKS Lísek u Bystřice,

Nastavení V-GSM-SI pro měření hladiny pomocí VSDP

Aplikace Embedded systémů v Mechatronice. Michal Bastl A2/713a

Technická dokumentace ČTEČKA ČIPŮ DALLAS. typ DSRS

Návod na použití GSM spínače

Využití platformy Arduino v systému kontroly vstupu. Martin Sousedík

Technická dokumentace ČTEČKA ČIPŮ DALLAS. typ DSRS

RE3USB programovatelné USB relé

GSM SPÍNAČ zásuvka ovládaná SMS zprávami. uživatelský manuál

GPS lokátor TK-208. Návod k obsluze. Kontakt na dodavatele SHX Trading s.r.o. V Háji 15, Praha 7,

PGSM-M10 - GSM/GPRS moduly s M10

Digitální zátěžová zkoušečka startovacích baterií a nabíjecích systémů 12 V

RE3USB programovatelné USB relé

Pokojový termostat řízený pomocí SMS zpráv v síti GSM

T-Link. Programovací tabulky DSC

Uživatelská příručka. FULL HD Policejní kamera

Automatické sněhoměrné zařízení

Secutron Mini DVR. Návod k obsluze. Hlavní výhody: Jednoduché ovládání. podpora SD karty až 64Gb. Stránka 1

Bezpečnostní poplašný systém GSM-01LED T505. Návod k použití

GSM regulátor 3 VA. Slot pro standardní neblokovanou SIM kartu Bezpotenciálový výstup relé 1 zapínací, max. 5 A / 250 V

MI1308 Video rozhraní pro vozidla Volvo s displejem 5

ELEKTRONICKÉ BEZPEČNOSTNÍ SYSTÉMY cvičení

GSM 103 Mikrokamera. Návod na použití

Knihovna GalaxyLib TXV druhé vydání srpen 2012 změny vyhrazeny

CNC Technologie a obráběcí stroje

Sfera Keypad Module. Instalační manuál 07/12-01 PC

MI Video rozhraní pro vozidla Renault. Přepínání mezi jednotlivými vstupy a ovládání přehrávání

Bezpečnostní poplašný systém GSM-03 T511. Návod k použití

BLACK CAR BOX ( Zabezpečovací a informační elektronický systém automobilu)

OP5. Návod k použití

GSM komunikátor s otřesovým spínačem. GShake. Návod k použití

PŘIJÍMAČ DÁLKOVÉHO OVLÁDÁNÍ FLOXR

UŽIVATELSKÝ MANUÁL 485COM. verze pro elektroměry CARLO GAVAZZI (protokol MODBUS)

Citlivý GSM odposlech s možností lokalizace

K8055D.DLL v Technická příručka. Úvod. Obecné. Konvence volání. Nastavení adresy karty

Modul LCD displeje se čtyřmi tlačítky. Milan Horkel

NÁVOD K POUŽITÍ DÁLKOVÝ OVLADAČ KLIMATIZAČNÍ JEDNOKY

GSV5 MODUL GSV5. Kompletní uživatelský manuál. Verze SW 2.01b. Seco

NVR - 9CH, 1080p, H.264

Návod k obsluze. Univerzální Bluetooth vysílač pro bezdrátová sluchátka Model: AF-T1

Dětské hodinky s GPS. Návod k obsluze. Hlavní výhody přístroje: Jednoduché ovládání Malé rozměry Online mapový podklad

ZAŘÍZENÍ PRO VZDÁLENÝ SBĚR A PŘENOS DAT FIRMWARE

HD inteligentní IP server WiFi, P2P

OM ProfiBus POPIS PROTOKOLU/KOMINUKACE

IP kamerový modul Lawmate PV-DY10i

Modul DHT11 s ESP POPIS 2. SPECIFIKACE. ECLIPSERA s.r.o. Distributor pro ČR. VÝROBNÍ ČÍSLO

PC - Controller Centrální jednotka s rozhraním RS-232 TECHNICKÝ MANUÁL ACC-RS. Pro jednotky FUJITSU split a multisplit

Uživatelský manuál. KNXgal. řízení zabezpečovacích ústředen. Galaxy ze sběrnice KNX. napájeno ze sběrnice KNX. indikace komunikace na KNX

Řídící jednotka AirBasic 2

Transkript:

Ovládáme Arduinotech GSM Shield Otestování HW Arduinotech GSM shieldu Poměrně značná část je věnována také otestování I2C sběrnice s OLED displejem, na který si posílám informace o jednotlivých stavech při testování. Pokud OLED displej nepoužíváte, pak funkci miniprint() jednoduše nahraďte Serial.println(); nebo ji upravte takto a výpisy budou chodit na sériák: void miniprint(string text) Serial.println(text); /* zbytek věcí zakomentujte */ Celý sketch i s funkcemi pro OLED display (mimochodem s celkem povedeným terminálem pro výpis provozních stavů - právě tvořený funkcí miniprint) je ke stažení zde. K samotnému sketchi: Do sketche je také přidána knihovna U8glib.h, která obsluhuje OLED display, můžete ji tedy vynechat, pokud si zmodifikujete funkci miniprint a OLED displej nebudete používat. #include <SoftwareSerial.h> #include <U8glib.h> #define RESET 4 #define LED 7 #define RELE1 8 #define RELE2 9 #define IN1 5 #define IN2 6 #define RX 2 #define TX 3 U8GLIB_SSD1306_128X64 u8g(u8g_i2c_opt_no_ack); //U8GLIB_SH1106_128X64 u8g(u8g_i2c_opt_fast); uint8_t linecounter = 0;

String lineterminal[5]; SoftwareSerial SIM800(RX,TX); char g,s; Zde nadefinujeme vstupy/výstupy a provedeme nějaké akce s LED a relátky. Upozorňuji, že pro přitažení relé je potřeba mít připojené napájení 12V do napájecího konektoru Arduino UNO. Jinak neuslyšíte přitažení - cvaknutí relé. void setup() SIM800.begin(9600); Serial.begin(9600); linecounter = 0; u8g.setfont(u8g_font_7x14); miniprint("gsm Shield Test"); pinmode(led, OUTPUT); pinmode(reset, OUTPUT); pinmode(rele1, OUTPUT); pinmode(rele2, OUTPUT); pinmode(in1,input); pinmode(in2,input); digitalwrite(led,high); digitalwrite(rele1, LOW); digitalwrite(rele2, LOW); digitalwrite(reset, LOW); miniprint("rele OFF"); delay(500); miniprint("sim800 ON"); digitalwrite(led,low); digitalwrite(reset, HIGH); digitalwrite(rele1, HIGH); digitalwrite(rele2, HIGH); miniprint("rele ON"); delay(1000); digitalwrite(rele1, LOW); digitalwrite(rele2, LOW); digitalwrite(led,high); miniprint("rele OFF"); Hlavní smyčku jsem tentokrát omezil pouze na 2 věci: sériový transparentní terminál tak a pak pravidelné čtení vstupů pro jejich otestování, obě procedury asi nepotřebují zvláštní komentář. // the loop function runs over and over again forever void loop() if(serial.available()>0)

g = Serial.read(); SIM800.print(g); if (SIM800.available()>0) s = SIM800.read(); Serial.print(s); if ((digitalread(in1) == false) (digitalread(in2) == false)) digitalwrite(led,low); if ((digitalread(in1) == false)) miniprint("in1 LOW"); if ((digitalread(in2) == false)) miniprint("in2 LOW"); delay(200); else digitalwrite(led,high); Pokud vše pracuje, jak má, pak po natažení sketche a správně připojeném napájení 12V se nejprve rozsvítí LED, vypnou se obě relé, pak za půl sekundy zhasne LEDka a na jednu sekundu přitáhnou obě relé, poté se rozvití LED a vypnou obě relé. Od této chvíle můžete využít transparentní terminál pro AT příkazy a otestovat také vstupy - můžete uzemnit katodu LED diody jednotlivých optočlenů - zhasne LED dioda na shieldu. Otestovali jsme HW a je-li vše OK, pak se můžeme rovnou vrhnout na slibovaný praktický příklad. Ovládání Arduino GSM shieldu prakticky Níže uvedený sketch používá stejné definice, jako sketch předchozí - testovací. Opět kvůli zjednodušení nebudu již uvádět a komentovat většinu pasáží, které jsou nutné pro správné fungování sketche a správnou interakci se shieldem, ale omezíme se na samotnou logiku hlavní smyčky. Pochopitelně celý funkčí sketch se všemi nezbytnostmi je ke stažení zde. Vynechejme tedy vše, co již bylo řečeno a podívejme se rovnou na hlavní smyčku a funkce v ní: void loop() //mrkni na příchod SMS checksms(); //mrkni na vstupy checkinput(); //opkuj co 1s delay(1000);

V hlavní smyčce tedy kontrolujeme 2 věci - zda došla nějaká SMSka s příkazem a nebo zda se nezměnily poměry na vstupech. Dále se již podíváme, na 3 jednotlivé funkce, resp. podrobněji pouze na 2 protože funkci checksms. V podstatě celá logika je jen ve 2 funkcích - parsesms(), kterou po přečtení SMS ze SIM800 volá checksms() funkce a checkinput(), která po vyhodnocení stavu vstupů pošle SMS nebo-li zavolá funkci sendsms(). void SMSparser(String command) //ovládaní relé přes SMS if (command == "RELE1:ZAP") digitalwrite(rele1, HIGH); sendsms(number, "RELE1 zapnuto!"); rele1status = true; if (command == "RELE1:VYP") digitalwrite(rele1, LOW); sendsms(number, "RELE1 vypnuto!"); rele1status = false; if (command == "RELE2:ZAP") digitalwrite(rele2, HIGH); sendsms(number, "RELE2 zapnuto!"); rele2status = true; if (command == "RELE2:VYP") digitalwrite(rele2, LOW); sendsms(number, "RELE2 vypnuto!"); rele2status = true; //dotaz na stav Relé a vstupů if (command == "Info") String tempmessage; tempmessage = "Rele1:"; if (rele1status == true) tempmessage += "ZAP"; else tempmessage += "VYP"; tempmessage += ",RELE2:"; if (rele2status == true) tempmessage += "ZAP"; else tempmessage += "VYP"; tempmessage += ",IN1:"; if(digitalread(in1) == true) tempmessage += "1"; else tempmessage += "0";

tempmessage += ",IN2:"; if (digitalread(in2) == true) tempmessage += "1"; else tempmessage += "0"; sendsms(number, tempmessage); Serial.println F("Neznamy prikaz!"); SMS parser je napsán pro obsluhu několika příkazů: RELE1:ZAP a RELE1:VYP RELE2:ZAP a RELE2:VYP Info K prvním dvěma příkazům asi není co dodat - pošlete SMSku s obsahem RELE1:ZAP - za cca 4 až 6 sekund (trvání odeslání a příjmu SMS) uslyšíte cvaknutí relátka. Doporučuji mít spuštěný sériový kanál a monitorovat, co na něj chodí. Pokud pošlete SMSku s obsahem RELE1:VYP - relé se vypne. O každé aktivitě vám bude odeslána SMSka zpět. Opět neřeším bezpečnost čísla, ale posílám SMSku tam, odkud jsem přijal povel.na téma bezpečnost napíšu později určitě nějaký doplněk do sketche. Totéž funguje pro RELE2. Funguje-li vše, jak má, pak na sériovém monitoru objevíte toto: Nova SMSka!!!! Od:739822476 Obsah SMS:RELE1:ZAP Obsah:RELE1 zapnuto! SMS smazana z pameti. Nova SMSka!!!! Od:739822476 Obsah SMS:RELE1:VYP Obsah:RELE1 vypnuto! SMS smazana z pameti. Nyní zkuste odeslat SMS s obsahem Info. Parser tento příkaz vyhodnotí, mrkne v jakém stavu viděl naposledy relátka a přečte aktuální stav vstupů (je to jen příklad, chtělo by to čtení trochu

více zrobustnit, ale nechci ten kód v příkladu dělat nepřehledný). Z těchto informací poskládá obsah SMSky a odešle. Je-li vše OK, pak obdržíte SMSku a na sériovém monitoru se objeví toto: Nova SMSka!!!! Od:739822476 Obsah SMS:Info Obsah:Rele1:VYP,RELE2:ZAP,IN1:1,IN2:1 SMS smazana z pameti. Jak již bylo zmíněno ve IV.dílu - parser může být tak bohatý, jak si je napíšete a zařízení tedy může být tak vymakané, jak vymakaný budete mít parser. Takže neváhejte experimentovat a vymýšlejte své kombinace a příkazy. void checkinput() String tempmessage; bool sendit = false; tempmessage = "Zmena stavu"; //při změně stavu vstupu odešli SMS if (digitalread(in1)!= IN1Status) tempmessage += " IN1:"; //počkej 200ms a přečti ještě jednou - mohl to byt jen zákmit delay(200); if (digitalread(in1)!= IN1Status) if (IN1Status == true) tempmessage += "0"; IN1Status = false; else tempmessage += "1"; IN1Status = true; sendit = true; else tempmessage = "Zmena stavu"; sendit = false; if (digitalread(in2)!= IN2Status)

tempmessage += " IN2:"; //počkej 200ms a přečti ještě jednou - mohl to byt jen zákmit delay(200); if (digitalread(in2)!= IN2Status) if (IN2Status == true) tempmessage += "0"; IN2Status = false; else tempmessage += "1"; IN2Status = true; sendit = true; else sendit = false; //pokud již modul pracoval s nějakým číslem, tak ho použij //pokud ne, pak použij definované číslo SERVIS_NUMBER if (sendit == true) sendit = false; if (number.length() < 9) number = SERVIS_NUMBER; sendsms(number, tempmessage); Funkce checkinput() bdí nad změnou stavů obou vstupů a jakmile by jeden z nich přešel z 1 na 0 nebo opačně, odešle o této skutečnosti SMSku. Pokud jste si již s SMSkami hráli, pak si do paměti uloží Vaše číslo, v opačném případě je potřeba do definice SERVICE_NUMBER zapsat číslo ručně, jinak budou chodit SMSky výlučně na mé číslo :-), pakliže začnete s testováním od vstupů a relátka necháte na později. Je-li vše OK, pak při "zatahání" za katodu diody v optočlenu se objeví na sériovém kanálu následující: Obsah:Zmena stavu IN2:0 Obsah:Zmena stavu IN2:1 A ve vašem telefonu přistanou dvě SMSky s obsahem Zmena stavu IN2:0 a Zmena stavu IN2:1.

S největší pravděpodobností vznikne pro Arduinotech GSM shield samostatná knihovna, kde budete ušetřeni podrobností s posíláním AT příkazů apod. a budou nejspíše zpřístupněny funkce typu sendsms, checksms, inicializace pak přes nějaký shieldinit(), callnumber(), holdcall() apod. Mám to v plánu, ale pro účely podrobnějšího pohledu, jak to vlastně všechno vevnitř pracuje jistě není na škodu si takový sketch trochu rozebrat a pochopit, jak se věcí mají.