TemperatureWebPanel

Bu örnek, Bridge kütüphanesini kullanarak Yún cihazının yerleşik web sunucusu üzerinden bir analog girişten nasıl veri sunulacağını gösterir.

SD kartınızı veya USB Flash bellek çubuğunuzu kökünde "arduino" adında boş bir klasör ve "www" adında bir alt klasörle hazırlayın. Bu, Yún cihazının "/ mnt / sd" yoluna giden belleğe bir bağlantı oluşturmasını sağlayacaktır.

Bu çizim klasöründe temel bir web sayfası ve zepto.js, jQuery'nin simge durumuna küçültülmüş bir kopyası bulunmaktadır. Çiziminizi yüklediğinizde, bu dosyalar çıkarılabilir belleğinizdeki / arduino / www / TemperatureWebPanel klasörüne yerleştirilir.

Daha sonra bu çizimin çıktısını görmek için http: //arduino.local/sd/TemperatureWebPanel adresine gidebilirsiniz.

Linux ve çizim çalışırken SD kartı veya USB Flash bellek çubuğunu çıkarabilirsiniz, ancak sistem üzerine yazarken çıkarmamaya dikkat edin.

Gerekli Donanım

  • Yún kartı veya kalkan
  • aynı kablosuz veya kablolu ağdaki bilgisayar ve Yún cihazı
  • A1 analog pim üzerindeki TMP36 sıcaklık sensörü
  • SD kart veya USB Flash bellek çubuğu
  • bağlantı kancaları
  • breadboard

Devre

A1'e bir TMP36 sıcaklık sensörü takın ve korumanın Yún veya USB ana bilgisayarındaki yuvaya bir mikro SD kart takın.

Şematik

Kod

Bridge, YunServer ve YunClient kütüphanelerini eklemeniz gerekir:

#include <Bridge.h>
#include <YunServer.h>
#include <YunClient.h>
[Kodu Al]

Yún'un bağlı istemcileri dinlemesini sağlayan bir sunucu başlatın.

YunServer server;

Çizimin başlama zamanını tutmak için bir dize ve sayfanın kaç kez ziyaret edildiğini takip etmek için bir değişken oluşturun.

String startString ;
uzun vuruşlar = 0 ;

setup() , seri iletişimi ve Bridge'i başlatın. Bridge'in ne zaman başladığını bilmek için yerleşik LED'i bir durum ışığı olarak kullanmak yararlıdır.

void setup ( ) {
Seri . başlar ( 9600 ) ;

pinMode ( 13 , ÇIKIŞ ) ;
digitalWrite ( 13 , DÜŞÜK ) ;
Köprü. begin ( ) ;
digitalWrite ( 13 , YÜKSEK ) ;

A0 ve A2'yi TMP36 sensörü için güç ve toprak olarak ayarlayın (bu, breadboard kullanmaktan kaçınmanıza yardımcı olur).

pinMode ( A0 , ÇIKIŞ ) ;
pinMode ( A2 , ÇIKIŞ ) ;
digitalWrite ( A0 , YÜKSEK ) ;
digitalWrite ( A2 , DÜŞÜK ) ;

Sunucuya yalnızca localhost'tan gelen bağlantıları dinlemesini ve başlatmasını söyleyin

sunucusu. listenOnLocalhost ( ) ;
sunucusu. begin ( ) ;

date komutunu çalıştırarak ve daha önce oluşturduğunuz dizede saklayarak çizimin başlama zamanını almak için bir İşlem örneği oluşturun.

Proses startTime ;
Başlangıç saati. runShellCommand ( "tarih" ) ;
while ( startTime. available ( ) ) {
char c = startTime. read ( ) ;
startString + = c ;
}
}

loop() , sunucudan gelen istemcileri almak için YunClient adlı bir örnek oluşturun.

YunClient client = server.accept();

Bağlı yeni bir istemci varsa, istemcinin gönderdiği komutu okuyun ve yazdırın.

if ( müşteri ) {
String command = istemci. readString ( ) ;
Komut. trim ( ) ; // boşlukları öldür
Seri . println ( komut ) ;

Komut "sıcaklık" ise, geçerli saati alın ve sıcaklık sensörünün değerini okuyun.

if ( komut == "sıcaklık" ) {

İşlem süresi ;
saati. runShellCommand ( "tarih" ) ;
String timeString = "" ;
while ( zaman. kullanılabilir ( ) ) {
char c = zaman. read ( ) ;
timeString + = c ;
}
Seri . println ( timeString ) ;
int sensorValue = analogRead ( A1 ) ;

Sensörün okumasını sıcaklık Celsius'a dönüştürün:

// okumayı milivolt'a dönüştürün:
Şamandıra gerilimi = sensorValue * (/ 1024 5000);
// milivolt'u sıcaklık santigratına dönüştürün:
şamandıra sıcaklığı = ( voltaj - 500 ) / 10 ;

Bağlanan istemciye client.print() ile client.print() sonra geçerli saati, sıcaklığı, client.print() başladığı zamanı ve isabet sayısını client.print() .

istemcisi. print ( "Yun'da şu anki saat:" ) ;
istemcisi. println ( timeString ) ;
istemcisi. print ( "<br> Geçerli sıcaklık:" ) ;
istemcisi. baskı ( sıcaklık ) ;
istemcisi. baskı ( "derece C" ) ;
istemcisi. print ( "<br> Bu çizim o zamandan beri çalışıyor" ) ;
istemcisi. print ( startString ) ;
istemcisi. print ( "<br> Şimdiye kadar isabet:" ) ;
istemcisi. baskı ( isabet ) ;
}

Kullanılmayan kaynakları boşaltmak ve isabet sayacını artırmak için bağlantıyı kapatın.

istemcisi. stop ( ) ;
isabet ++;
}

Yeniden sorgulamadan önce birkaç dakika ara verin

gecikme ( 50 ) ; // Her 50 ms'de bir anket
}

Kodun tamamı aşağıdadır:

/ *
Sıcaklık web arayüzü

Bu örnek, bir analog girişten nasıl veri sunulacağını gösterir
Bridge kütüphanesini kullanarak YunShield / Yún yerleşik web sunucusu aracılığıyla.

Devre:
* Analog pim A1 üzerinde TMP36 sıcaklık sensörü
* YunShield / Yún'ın SD kart yuvasına takılı SD kart

Bu çizim kablosuz olarak yüklenmelidir. REST API "açık" olarak ayarlanmalıdır.

SD kartınızı SD kökünde boş bir klasörle hazırlayın
"arduino" ve "www" adında bir alt klasör.
Bu, Yún'ın bir bağlantı oluşturmasını sağlayacaktır.
SD'ye "/ mnt / sd" yoluna gidin.

Bu çizim klasöründe temel bir web sayfası ve zepto.js'nin bir kopyası,
jQuery'nin simge durumuna küçültülmüş hali. Çiziminizi yüklediğinizde, bu dosyalar
SD kartınızdaki / arduino / www / TemperatureWebPanel klasörüne yerleştirilecektir.

Daha sonra http: //arduino.local/sd/TemperatureWebPanel adresine gidebilirsiniz.
bu çizimin çıktısını görmek için.

SD kartı Linux ve
taslak çalışıyor ama çıkarırken dikkatli olmayın
sistem ona yazıyor.

oluşturuldu 6 Temmuz 2013
tarafından Tom Igoe

Bu örnek kod kamu malıdır.

http: egitim.aspx e = TemperatureWebPanel

* /


#include <Bridge.h>
#include <BridgeServer.h>
#include <BridgeClient.h>

// Varsayılan bağlantı noktası 5555'i, Yún'daki web sunucusunu dinleyin
// bizim için tüm HTTP isteklerini iletecektir.
BridgeServer sunucusu ;
String startString ;
uzun vuruşlar = 0 ;

void setup ( ) {
SerialUSB. başlar ( 9600 ) ;

// Köprü başlangıcı
pinMode ( 13 , ÇIKIŞ ) ;
digitalWrite ( 13 , DÜŞÜK ) ;
Köprü. begin ( ) ;
digitalWrite ( 13 , YÜKSEK ) ;

// TMP36 sensörü için A0 ve A2'yi vcc ve gnd olarak kullanma:
pinMode ( A0 , ÇIKIŞ ) ;
pinMode ( A2 , ÇIKIŞ ) ;
digitalWrite ( A0 , YÜKSEK ) ;
digitalWrite ( A2 , DÜŞÜK ) ;

// Gelen bağlantıyı yalnızca localhost'tan dinleyin
// (harici ağdan hiç kimse bağlanamadı)
sunucusu. listenOnLocalhost ( ) ;
sunucusu. begin ( ) ;

// bu çizimin başladığı zamanı alın:
Proses startTime ;
Başlangıç saati. runShellCommand ( "tarih" ) ;
while ( startTime. available ( ) ) {
char c = startTime. read ( ) ;
startString + = c ;
}
}

void loop ( ) {
// Sunucudan gelen istemcileri alın
BridgeClient istemcisi = sunucu. accept ( ) ;

// Yeni bir müşteri var mı?
if ( müşteri ) {
// komutu oku
String command = istemci. readString ( ) ;
Komut. trim ( ) ; // boşlukları öldür
SerialUSB. println ( komut ) ;
// "sıcaklık" komutu mu?
if ( komut == "sıcaklık" ) {

// sunucudan zamanı alın:
İşlem süresi ;
saati. runShellCommand ( "tarih" ) ;
String timeString = "" ;
while ( zaman. kullanılabilir ( ) ) {
char c = zaman. read ( ) ;
timeString + = c ;
}
SerialUSB. println ( timeString ) ;
int sensorValue = analogRead ( A1 ) ;
// okumayı milivolt'a dönüştürün:
şamandıra gerilimi = sensörDeğeri * ( 5000.0f / 1024.0f ) ;
// milivolt'u sıcaklık santigratına dönüştürün:
şamandıra sıcaklığı = ( voltaj - 500.0f ) / 10.0f ;
// sıcaklığı yazdırın:
istemcisi. print ( "Y & uacute; n:" üzerindeki geçerli saat ) ;
istemcisi. println ( timeString ) ;
istemcisi. print ( "<br> Geçerli sıcaklık:" ) ;
istemcisi. baskı ( sıcaklık ) ;
istemcisi. baskı ( "° C" ) ;
istemcisi. print ( "<br> Bu çizim o zamandan beri çalışıyor" ) ;
istemcisi. print ( startString ) ;
istemcisi. print ( "<br> Şimdiye kadar isabet:" ) ;
istemcisi. baskı ( isabet ) ;
}

// Bağlantıyı ve serbest kaynakları kapatın.
istemcisi. stop ( ) ;
isabet ++;
}

gecikme ( 50 ) ; // Her 50 ms'de bir anket
}

See Also

  • Bridge Library- Köprü Kütüphanesine referansınız
  • Bridge- Analog ve dijital pinlere erişmek için basit REST tarzı çağrılar
  • Console Ascii Table- Konsola yazdırılan eksiksiz bir ASCII tablosu
  • Console Pixel- Konsoldan bir LED'i açma ve kapatma
  • Console Read- Console.read () işlevini kullanarak köprüden gelen verileri okuma
  • Data Logger- Üç analog sensörden bir SD karta veri kaydedin.
  • File Write- Dosya Yún dosya sistemine nasıl yazılır.
  • Http Client- İnternete bağlanan ve içeriği indiren temel bir HTTP istemcisi.
  • Http Client Console- Bağlanan, içeriği indiren ve WiFi ve Konsol kullanarak içeriği gösteren HTTP istemcisi.
  • Mailbox Read Message- Köprü kitaplığını kullanarak Posta Kutusu adlı ileti sırasını okuma.
  • Process- Bir Yún kullanarak linux süreçleri nasıl çalıştırılır.
  • Remote Due Blink- DUE panolarına uzaktan taslak yükleme.
  • Shell Commands- Bir Yún kullanarak linux kabuk komutları nasıl çalıştırılır.
  • Time check- Bridge üzerinden Linux'tan zamanı alır, sonra saatleri, dakikaları ve saniyeleri ayrıştırır.
  • WiFi Status- Wifi bağlantınızın durumu hakkında bilgi yazdırır.
  • Yún First Configuration- Seri Monitör ve USB bağlantı noktasını kullanarak Yún cihazınızı kolayca yapılandırın.
  • Serial Terminal- Yún'ın 32U4 işlemcisini, Yún'daki Linux tarafı için seri terminal olarak kullanın.