- Potřebné materiály
- Použitý software
- GSM modul
- Komunikace s GSM modulem pomocí AT příkazů
- Schéma zapojení GSM modulu ATMega16
- Vytvoření projektu pro ATmega16 pomocí CodeVision
- Kód a vysvětlení
- Sestavte projekt
- Nahrajte kód do Atmega16
GSM moduly jsou zajímavě použitelné, zvláště když náš projekt vyžaduje vzdálený přístup. Tyto moduly mohou provádět všechny činnosti, které náš běžný mobilní telefon může dělat, například uskutečňovat / přijímat hovory, odesílat / přijímat SMS, připojovat se k internetu pomocí GPRS atd. K tomuto modulu můžete také připojit normální mikrofon a reproduktor a konverzovat na svém mobilní hovory. To by otevřelo dveře mnoha kreativním projektům, pokud by mohly být propojeny s mikrokontrolérem. Proto se v tomto výukovém programu naučíte, jak můžeme propojit modul GSM (SIM900A) s mikrokontrolérem AVR ATmega16, a předvedeme to odesíláním a přijímáním zpráv pomocí modulu GSM.
Potřebné materiály
- 16. Atmega
- GSM modul (SIM900 nebo jiný)
- LCD displej
- Tlačítka
- 10k rezistory, potenciometr
- Připojovací vodiče
- 12V adaptér
- USBasp programátor
- 10kolíkový kabel FRC
Použitý software
Pro psaní našeho kódu použijeme software CodeVisionAVR a pro nahrání našeho kódu do Atmega16 pomocí programátoru USBASP software SinaProg.
Tyto programy si můžete stáhnout z uvedených odkazů:
CodeVisionAVR:
SinaProg:
Než se pustíme do schémat a kódů, seznámíme se s GSM modulem a jeho fungováním.
GSM modul
GSM modul lze používat i bez mikrokontroléru pomocí příkazového režimu AT. Jak je uvedeno výše, modul GSM je dodáván s adaptérem USART, který lze přímo propojit s počítačem pomocí modulu MAX232, nebo lze k jeho připojení k mikrokontroléru použít kolíky Tx a Rx. Můžete si také všimnout dalších pinů jako MIC +, MIC-, SP +, SP- atd., Kde lze připojit mikrofon nebo reproduktor. Modul může být napájen 12V adaptérem přes normální DC jack.
Vložte SIM kartu do slotu modulu a zapněte ji, měli byste si všimnout, že se rozsvítí kontrolka LED napájení. Nyní počkejte asi minutu a měli byste vidět červenou (nebo jinou barvu) LED blikající jednou každé 3 sekundy. To znamená, že váš modul byl schopen navázat spojení s vaší SIM kartou. Nyní můžete pokračovat v připojení modulu k telefonu nebo libovolnému mikrokontroléru.
Pomocí modulu GSM můžete vytvořit mnoho skvělých projektů, jako například:
- Bezdrátová nástěnka využívající GSM a Arduino
- Automatický záznamník hovorů pomocí Arduina a GSM modulu
- GSM domácí automatizace pomocí Arduina
- Senzor PIR a bezpečnostní systém založený na GSM
Zde také zkontrolujte všechny projekty související s GSM.
Komunikace s GSM modulem pomocí AT příkazů
Jak jste možná uhodli, modul GSM může komunikovat prostřednictvím sériové komunikace a rozumí pouze jednomu jazyku, a to „ příkazům AT “. Cokoli, co byste chtěli říct nebo požádat o modul GSM, mělo by to být pouze prostřednictvím AT příkazů. Například pokud chcete vědět, zda je váš modul aktivní. Měli byste požádat (odeslat) příkaz jako „AT“ a váš modul odpoví „OK“.
Tyto AT příkazy jsou dobře vysvětleny v jeho datovém listu a najdete je zde v jeho oficiálním datovém listu. Dobře! Dobře! Je to datový list o 271 stránkách a jeho přečtení vám může trvat dny. Níže jsem tedy uvedl několik nejdůležitějších AT příkazů, abyste je mohli brzy uvést do provozu.
V |
Odpovědi s OK pro potvrzení |
AT + CPIN? |
Zkontrolujte kvalitu signálu |
AT + COPS? |
Vyhledejte název poskytovatele služeb |
ATD96XXXXXXXX; |
Volání na konkrétní číslo končí středníkem |
AT + CNUM |
Zjistěte počet SIM karet (u některých SIM nemusí fungovat) |
ATA |
Přijměte příchozí hovor |
ATH |
Zavěste aktuální příchozí hovor |
AT + COLP |
Zobrazit číslo příchozího hovoru |
AT + VTS = (číslo) |
Zašlete číslo DTMF. Pro (číslo) můžete na své mobilní klávesnici použít jakékoli číslo |
AT + CMGR |
AT + CMGR = 1 čte zprávu na první pozici |
AT + CMGD = 1 |
Smazat zprávu na první pozici |
AT + CMGDA = ”DEL ALL” |
Odstranit všechny zprávy ze SIM |
AT + CMGL = ”ALL” |
Přečíst všechny zprávy ze SIM |
AT + CMGF = 1 |
Nastavit konfiguraci SMS. „1“ je pouze pro textový režim |
AT + CMGS = „+91 968837XXXX“ > CircuitDigest Text
|
Zde odešle SMS na konkrétní číslo 968837XXXX. Až uvidíte „>“ začněte zadávat text. Stisknutím kláves Ctrl + Z odešlete text. |
AT + CGATT? |
Zkontrolovat připojení k internetu na SIM kartě |
AT + CIPSHUT |
Ukončit připojení TCP, to znamená odpojit se od internetu |
AT + CSTT = „APN“, „uživatelské jméno“, „předat“ |
Připojte se ke GPRS pomocí APN a klíče Pass. Lze získat od poskytovatele sítě. |
AT + CIICR |
Zkontrolujte, zda má SIM karta datový balíček |
AT + CIFSR |
Získejte IP síť SIM |
AT + CIPSTART = „TCP“, „SERVER IP“, „PORT“ |
Slouží k nastavení připojení TCP IP |
AT + CIPSEND |
Tento příkaz se používá k odesílání dat na server |
Zde budeme k odesílání zpráv používat příkaz AT + CMGF a AT + CMGS.
Pokud jste s Arduinem používali modul GSM, můžete při příjmu zpráv pomocí příkazu + CMT: zobrazit číslo mobilního telefonu a textovou zprávu na sériovém monitoru. Textová zpráva přichází na druhém řádku, jak je znázorněno na obrázku.
Tento příkaz + CMT: prohledáme, abychom zkontrolovali, zda je zpráva k dispozici nebo ne.
Schéma zapojení GSM modulu ATMega16
Připojení bude následující
- Tx a Rx z GSM modulu na Rx (Pin14) a Tx (Pin15) Atmega16.
- Stiskněte tlačítka na PD5 (Pin19) a PD6 (Pin20).
- Připojení LCD:
- RS - PA 0
- R / W - PA1
- CS - PA2
- D4 - PA4
- D5 - PA5
- D6 - PA6
- D7 - PA7
Vytvoření projektu pro ATmega16 pomocí CodeVision
Po instalaci CodeVisionAVR a SinaProg software , postupujte podle níže kroky k vytvoření projektu a psaní kódu:
Již nahráno
Krok 1. Otevřete CodeVision Klikněte na Soubor -> Nový -> Projekt . Zobrazí se dialogové okno Potvrzení. Klikněte na Ano
Krok 2. Otevře se CodeWizard. Klikněte na první možnost, tj. AT90 , a klikněte na OK.
Krok 3: - Vyberte si čip mikrokontroléru, zde vezmeme Atmega16L, jak je znázorněno.
Krok 4: - Klikněte na USART . Kliknutím na přijímač a vysílač vyberte. Jak je ukázáno níže:
Krok 5: - Klikněte na Alfanumerický LCD a vyberte Povolit podporu Alfanumerický LCD .
Krok 6: - Klikněte na Program -> Generovat, uložit a ukončit . Nyní je více než polovina naší práce dokončena
Krok 7: - Vytvořte novou složku na ploše tak, aby naše soubory zůstaly ve složce, jinak budeme roztroušeni po celém okně plochy. Pojmenujte svou složku, jak chcete, a navrhuji použít stejný název k uložení programových souborů.
Budeme mít tři dialogová okna jeden po druhém pro ukládání souborů.
Totéž proveďte s dalšími dvěma dialogovými okny, která se zobrazí po uložení prvního.
Váš pracovní prostor teď vypadá takto.
Naše většina práce je dokončena pomocí Průvodce. Nyní musíme napsat kód pouze pro GSM.
Kód a vysvětlení
Všechny soubory záhlaví jsou automaticky připojeny po vytvoření projektu, musíte pouze zahrnout soubor záhlaví delay.h a deklarovat všechny proměnné. Kompletní kód je uveden na konci tohoto kurzu.
#zahrnout
Proveďte funkci pro příjem dat z registru UDR. Tato funkce vrátí přijatá data.
unsigned char receive_value (void) { while (! (UCSRA & (1 <
Pojďte do smyčky while, ve které vytvoříme dva příkazy if , jeden pro odesílání zpráv a druhý pro příjem. Tlačítko Odeslat je spojeno s PIND6 ATmega a tlačítko pro přijetí zprávy s PIND5.
Při stisknutí PIND6 (Send), první v případě prohlášení bude realizovat a všechny příkazy k odeslání zprávy se provede jeden po druhém.
while (1) { // lcd_clear (); lcd_putsf ("Odeslat-> bttn 1"); lcd_gotoxy (0,1); lcd_putsf ("Přijmout-> zadek 2"); if (PIND.6 == 1) { lcd_clear (); lcd_gotoxy (0,0); lcd_putsf ("Odesílání zprávy…"); pro (z = 0; cmd_1! = ''; z ++) { UDR = cmd_1; delay_ms (100); } UDR = ('\ r'); delay_ms (500); pro (z = 0; cmd_2! = ''; z ++) { UDR = cmd_2; delay_ms (100); } …..
Pokud je stisknuto tlačítko Přijmout zprávu, smyčka (b! = '+') Zkontroluje, zda je příkaz CMT přítomen nebo ne. Pokud je k dispozici, provede se smyčka second while, přejde na druhý řádek příkazu a vytiskne zprávu na LCD jeden po druhém.
while (PIND.5 == 1) { lcd_clear (); lcd_gotoxy (0,0); lcd_putsf ("Příjem zprávy…"); b = přijatá_hodnota (); while (b! = '+') { b = receive_value (); } b = přijatá_hodnota (); if (b == 'C') { b = receive_value (); … ..
Tato smyčka přenese program na druhý řádek příkazu a uloží zprávu do pole.
while (b! = 0x0a) { b = receive_value (); } for (b = 0; b <3; b ++) { c = receive_value (); msg = c; } .. ..
Tato smyčka for slouží k zobrazení zprávy na LCD.
for (z = 0; z <3; z ++) { a = msg; lcd_putchar (a); // TISK V lcd delay_ms (10); }
Kompletní kód s ukázkovým videem je uveden níže, nyní musíme sestavit náš projekt.
Sestavte projekt
Klikněte na ikonu Sestavit projekt , jak je znázorněno.
Po sestavení projektu se ve složce Debug-> Exe vygeneruje soubor HEX, který najdete ve složce, kterou jste dříve vytvořili pro uložení projektu. Tento soubor HEX použijeme k nahrání do Atmega16 pomocí softwaru Sinaprog.
Nahrajte kód do Atmega16
Připojte své obvody podle uvedeného schématu k programu Atmega16. Připojte jednu stranu kabelu FRC k programátoru USBASP a druhou stranu připojte k pinům SPI mikrokontroléru, jak je popsáno níže:
- Pin1 FRC female konektoru -> Pin 6, MOSI of Atmega16
- Pin 2 připojen k Vcc atmega16, tj. Pin 10
- Pin 5 připojen k resetování atmega16, tj. Pin 9
- Pin 7 připojený k SCK atmega16, tj. Pin 8
- Pin 9 připojený k MISO atmega16, tj. Pin 7
- Pin 8 připojený k GND atmega16, tj. Pin 11
Nahrajeme výše vygenerovaný hexadecimální soubor pomocí nástroje Sinaprog, takže jej otevřete a v rozevírací nabídce Zařízení vyberte Atmega16. Vyberte HEX soubor ze složky Debug-> Exe, jak je znázorněno.
Nyní klikněte na Program a váš kód bude vypálen v mikrokontroléru ATmega16.
Hotovo a váš mikrokontrolér je naprogramován. Jednoduše stiskněte tlačítka pro odesílání a příjem zpráv z mikrokontroléru GSM a ATmega16.
Kompletní kód a ukázkové video jsou uvedeny níže.