Eğitimler
GSMExamplesWebServer
Bu çizim, Arduino veya Genuino kartını GSM kalkanı ve veri özellikli bir SIM kart ile bir web sunucusuna dönüştürür. Kart bağlı bir istemciden bir istek aldığında, 0-5 analog girişlerin değerini geri gönderir.
Tüm şebeke operatörleri, şebekelerinin dışından gelen veri taleplerine izin vermez. Bu, GSM kalkanı ile bir web sunucusu oluşturabileceğiniz anlamına gelir, ancak kamuya açık internetten ona bağlanamayabilirsiniz; yalnızca aynı ağdaki aynı sağlayıcıdan başka bir veri etkin cihazdan. Gelen veri bağlantıları ile ilgili hangi politikaların uygulandığını görmek için sağlayıcınıza danışmalısınız.
Gerekli Donanım
- Arduino veya Genuino Kurulu
- Arduino + Telefonica GSM / GPRS Kalkanı
- Veri için SIM kart etkin
- (isteğe bağlı) 6 potansiyometre veya A0-A5'e bağlı diğer analog girişler
Devre
Fotodirençler, potansiyometreler ve benzeri gibi isteğe bağlı analog sensörler, öğreticilerimizin başka yerlerinde açıklandığı gibi A0 - A5 pinlerine bağlanabilir
Kod
İlk olarak, GSM kütüphanesini içe aktarın
#include <GSM.h>
SIM kartların işlevlerini etkinleştiren bir PIN numarası olabilir. SIM'inizin PIN kodunu tanımlayın. SIM'inizde PIN yoksa boş bırakabilirsiniz:
#define PINNUMBER ""
Bağlanacağınız GPRS ağı hakkında bilgi içeren bir dizi sabit tanımlayın. Erişim Noktası Adı (APN), oturum açma adı ve parola gerekir. Bu bilgileri edinmek için en güncel bilgiler için şebeke sağlayıcınıza başvurun. Bu sayfada çeşitli operatör ayarları hakkında bazı bilgiler var, ancak güncel olmayabilir.
#define GPRS_LOGIN "login"
#define GPRS_PASSWORD "password"
Kullanacağınız sınıfların örneklerini başlatın. GSM, GPRS ve GSMServer sınıflarına ihtiyacınız olacak. GSMServer sınıfını başlatırken, gelen bağlantıları dinlemek için hangi bağlantı noktasını söylemeniz gerekir. 80 numaralı bağlantı noktası, HTTP istekleri için varsayılan bağlantı noktasıdır.
GSM gsmAccess ;
GSMServer sunucusu ( 80 ) ;
setup
, bilgisayara seri bir bağlantı açın. Bağlantıyı açtıktan sonra çizimin başladığını belirten bir mesaj gönderin.
Seri . başlar ( 9600 ) ;
Seri . println ( "Arduino web istemcisini başlatma." ) ;
Bağlantı durumunu izlemek için yerel bir değişken oluşturun. SIM'in ağa bağlanmasına kadar çizimin başlamasını önlemek için bunu kullanırsınız:
gsmAccess.begin()
çağırarak ağa bağlanın. SIM kartın PIN kodunu argüman olarak alır. GPRS şebekesine gprs.attachGPRS()
kullanarak da bağlanacaksınız. Bu, daha önce bildirdiğiniz APN, oturum açma adı ve parolayı gerektirir. Bir içinde bu yerleştirerek while()
döngü, sürekli bağlantının durumunu kontrol edebilirsiniz haline hem etmesini beklemeniz true
ilerlemeden önce.
Modem bağlandığında ve kendisini GPRS şebekesine gsmAccess()
, gsmAccess()
GSM_READY
. notConnected
değişkenini true
veya false
olarak ayarlamak için notConnected
bayrak olarak kullanın. Bağlandıktan sonra, setup
geri kalanı çalışır.
{
eğer ( gsmAccess. başlar ( PINNUMBER ) == GSM_READY )
( gprs. attachGPRS ( GPRS_APN , GPRS_LOGIN , GPRS_PASSWORD ) == GPRS_READY ) )
notConnected = yanlış ;
Başka
{
Seri . println ( "Bağlı değil" ) ;
gecikme ( 1000 ) ;
}
}
server.begin()
kullanarak server.begin()
. Sunucunun IP adresini grps.getIPAddress()
ile grps.getIPAddress()
ve kurulumu sonlandırabilirsiniz.
IPAdresi LocalIP = gprs. getIPAddress ( ) ;
Seri . println ( "Sunucu IP adresi =" ) ;
Seri . println ( LocalIP ) ;
}
Olarak loop
, bir örneğini oluşturmak GSMClient
ve herhangi bir aktif bağlantı olup olmadığını kontrol
GSMClient istemcisi = sunucu. kullanılabilir ( ) ;
if ( müşteri )
{
İstemci bağlıyken ve okunmayı bekleyen veriler varken, isteği okumaya başlayın. Yeni satır karakteri alınana kadar kullanılabilir baytları okuyun.
Bu durumda, aslında istekle hiçbir şey yapmazsınız, bunun bir HTTP isteği olduğu varsayılır ve bir web sayfası sunarsınız.
{
if ( istemci. kullanılabilir ( ) )
{
Seri . println ( "Alma talebi!" ) ;
bool sendResponse = yanlış ;
while ( char c = istemci. read ( ) ) {
eğer ( c == ' \ n ' ) sendResponse = true ;
}
İstek okunduktan sonra, client.print()
ve client.println()
ile standart bir HTTP yanıt başlığı göndermeye başlayın.
{
istemcisi. println ( "HTTP / 1.1 200 TAMAM" ) ;
istemcisi. println ( "İçerik Tipi: metin / html" ) ;
istemcisi. println ( ) ;
istemcisi. println ( "<html>" ) ;
Analog girişleri okuyun ve değerleri istemciye gönderin.
istemcisi. baskı ( "analog giriş" ) ;
istemcisi. baskı ( analog Kanal ) ;
istemcisi. print ( "is" ) ;
istemcisi. print ( analogRead ( analogChannel ) ) ;
istemcisi. println ( "<br />" ) ;
}
Web sayfası için bir kapanış etiketi gönderin ve loop
kapatmadan önce istemci bağlantısını durdurun.
// gerekli gecikme
gecikme ( 1000 ) ;
istemcisi. stop ( ) ;
}
}
}
}
}
Kodunuz yüklendikten sonra seri monitörü açın. IP adresi seri monitöre yazdırıldıktan sonra, bir web tarayıcısına girin. Her Arduino'nun altı girişindeki analog giriş değerlerini bildiren bir web sayfası görmelisiniz.
IP adresine bağlanamıyorsanız, şebeke operatörünüzün gelen trafiği etkinleştirdiğinden emin olun.
Çizimin tamamı aşağıdadır.
GSM Web Sunucusu
Analog giriş pinlerinin değerini gösteren basit bir web sunucusu.
bir GSM kalkanı kullanarak.
Devre:
* GSM kalkanı takılı
* A0 - A5 pinlerine bağlı analog girişler (isteğe bağlı)
oluşturuldu 8 Mar 2012
tarafından Tom Igoe
* /
// kütüphaneler
#include <GSM.h>
// PIN numarası
#define PINNUMBER ""
// APN verileri
#define GPRS_APN "GPRS_APN" // GPRS APN'nizi değiştirin
#define GPRS_LOGIN "login" // GPRS giriş bilgilerinizle değiştirin
#define GPRS_PASSWORD "şifre" // GPRS şifrenizle değiştirin
// kütüphane örneğini başlat
GPRS gpr'leri ;
GSM gsmAccess ; // hata ayıklama için bir 'true' parametresi dahil et
GSMServer sunucusu ( 80 ) ; // bağlantı noktası 80 (http varsayılanı)
// zaman aşımı
const imzasız uzun __TIMEOUT__ = 10 * 1000 ;
void setup ( ) {
// seri iletişimi başlatın ve portun açılmasını bekleyin:
Seri . başlar ( 9600 ) ;
while ( ! Seri ) {
; // seri portun bağlanmasını bekleyin. Yalnızca yerel USB bağlantı noktası için gereklidir
}
// bağlantı durumu
bool notConnected = true ;
// GSM kalkanını başlat
// SIM'iniz PIN içeriyorsa, tırnak işaretleri halinde begin () parametresi olarak iletin
while ( notConnected ) {
eğer ( ( gsmAccess. başlar ( PINNUMBER ) == GSM_READY ) &
( gprs. attachGPRS ( GPRS_APN , GPRS_LOGIN , GPRS_PASSWORD ) == GPRS_READY ) ) {
notConnected = yanlış ;
} başka {
Seri . println ( "Bağlı değil" ) ;
gecikme ( 1000 ) ;
}
}
Seri . println ( "GPRS şebekesine bağlı" ) ;
// sunucuyu başlat
sunucusu. begin ( ) ;
// IP al.
IPAdresi LocalIP = gprs. getIPAddress ( ) ;
Seri . println ( "Sunucu IP adresi =" ) ;
Seri . println ( LocalIP ) ;
}
void loop ( ) {
// gelen müşterileri dinle
GSMClient istemcisi = sunucu. kullanılabilir ( ) ;
if ( müşteri ) {
while ( istemci. bağlı ( ) ) {
if ( müşteri. kullanılabilir ( ) ) {
Seri . println ( "Alma talebi!" ) ;
bool sendResponse = yanlış ;
while ( char c = istemci. read ( ) ) {
if ( c == ' \ n ' ) {
sendResponse = true ;
}
}
// satırın sonuna geldiyseniz (yeni satır aldı)
// karakter)
if ( sendResponse ) {
// standart bir http yanıt başlığı gönder
istemcisi. println ( "HTTP / 1.1 200 TAMAM" ) ;
istemcisi. println ( "İçerik Tipi: metin / html" ) ;
istemcisi. println ( ) ;
istemcisi. println ( "<html>" ) ;
// her analog giriş piminin değerini çıktılayın
for ( int analogChannel = 0 ; analogChannel < 6 ; analogChannel ++ ) {
istemcisi. baskı ( "analog giriş" ) ;
istemcisi. baskı ( analog Kanal ) ;
istemcisi. print ( "is" ) ;
istemcisi. print ( analogRead ( analogChannel ) ) ;
istemcisi. println ( "<br />" ) ;
}
istemcisi. println ( "</html>" ) ;
// gerekli gecikme
gecikme ( 1000 ) ;
istemcisi. stop ( ) ;
}
}
}
}
}
See Also
- GPRSinşaatçı
- attachGPRS()
- GSMServerinşaatçı
- ready()
- beginWrite()
- write()
- endWrite()
- read()
- available()
- stop()
- Arduino GSM Shield- Komple ürün açıklaması.
- Getting started with the GSM Shield- Her şeyi dakikalar içinde kurun.
- GSM library- GSM Kütüphanesi için referansınız.
- GSMExamplesMakeVoiceCall- Mikrofon ve hoparlör ile sesli arama nasıl yapılır.
- GSMExamplesReceiveVoiceCall- Çağrı alınır ve bağlanır, aranan numara seri monitörde gösterilir ve çağrı kapatılır.
- GSMExamplesReceiveSMS- SMS mesajı nasıl alınır.
- GSMExamplesSendSMS- Seri monitörden bir SMS giriş numarası ve metni nasıl gönderilir.
- GSMExamplesWebClient- Arduino.cc ana sayfasına bağlanın ve içindekileri seri monitör penceresinde yazdırın.
- GSMToolsTestGPRS- Verilen APN ve kimlik bilgileriyle GPRS üzerinden internete erişmeye çalışır.