Orijinal veya Arduino Fişli | Haberler Online

semaver

New member


  1. Gerçek veya arduin bağlantısı kesilmiş

İletişimin son sonuçları Ethernet-Chief aracılığıyla İnternet erişimi ile ilgilidir. Arduino UNO ve Mega sistemiyle ilgili eskizlere ek olarak, özellikle SQMTT ve COAP'da, uygulamanın belirli protokollerine dikkat çekildi. Mevcut ve sonraki sonuçlarda WiFi çözümleri ortaya çıkmaktadır.



Arduino'daki WiFi için ESP8266 çipine dayanan bir ekonomik varyant var. Ancak, bu varyant bazen belirli bir çaba ile ilişkilidir. Aşağıdaki sonuçlarda konuya daha yakından bakın.





WiFi 101 Kalkanı - İyi ama aynı zamanda pahalı



WiFi 101 Kalkanı – İyi ama aynı zamanda pahalı


(Resim: Arduino.cc)



Ancak her şeyden önce, en ufak bir direnci takip etmek ve WiFi'den birini kullanmak istiyorum. Arduino tarafından orijinal Shield WiFi 101'e bakarsanız, bol fiyat nedeniyle bir korku almalısınız. Adafruit veya WiFi Kalkanı tohumunun CC3000 kalkanı gibi alternatifler aynı fiyat alaşımının bir parçasıdır.





www.waterott.com



Watte's Mavi Kalkanı


(Resim: www.waterott.com)



Bu nedenle, Shield 101 ile uyumlu bir ekonomik kalkan seçtim ve sadece 24 Euro'nun biraz altında maliyeti: Watte's Bluefly Shield. Tek yakalama: başlık pimleri kaynaklanabilir. Ama bu çok az çaba sarf ediyor. Gerekirse, mahallede bir hobi elektronik teknisyenine sorun.

Cesaret etmek istiyorsanız: Bu çok net YouTube videosu gibi çok sayıda internet kaynağı talimatı var.

Mobil gitmek




WiFi101 kalkanını gerçekleştirmek için WiFi101 kitapçısını Arduino GitHub sayfasından alın. Kütüphaneyi indirin (.zip-File) ve onu her zamanki gibi bildirin: Eskiz | Kütüphaneyi ekleyin | .Zip kitaplığını ekleyin. Ardından örnek bir taslak seçin: Dosya | Örnekler | WiFi101 | Connectwithwpa. WEP'i çeşitli nedenlerle kullanan herkes de örneklerde Sketch ConnectWithwep'i bulacaktır.

Aşağıda gösterilen kodda, WiFi'nizi Arduino Erişim Verileri (SSID, Parola) tarafından bilinir hale getirmeniz gerekir.

#include <SPI.h>
#include <WiFi101.h>
char ssid[] = "yourNetwork"; // your network SSID (name)
char pass[] = "secretPassword"; // your network password

int status = WL_IDLE_STATUS; // the Wifi radio's status



… Ve sonra eskiz başlar. Artık seri monitörde başarılı bir bağlantı yapısı gözlemleyebilirsiniz (umarım). Evde çıktı, örneğin:

Attempting to connect to WPA SSID: StalWLAN
You're connected to the networkSSID: StalWLAN
SSID: CA:B2:95:D7:96:8
signal strength (RSSI):-65
Encryption Type:2
IP Address: 192.168.178.97
192.168.178.97
MAC address: F8:F0:5:F5:DB:AB
SSID: StalWLAN
BSSID: CA:B2:95:D7:96:8
signal strength (RSSI):-62
Encryption Type:2

NTP sunucusuna erişim


Küçük bir egzersiz olarak, en eski İnternet protokollerinden biri olarak kabul edilen ağ protokolünü (NTP) kullanmak istiyoruz. Amacı, bir NTP sunucusuna paketlere dayalı UDP erişimi kullanan bilgisayar saatinin senkronizasyonudur. Bu dünyanın çoğu var. Zamanın sapması en az milisaniyede. Geri döndüğümüz zaman koordineli evrensel zamandır (UTC).

UDP iletişimi zaten WiFi101 kütüphanesini destekliyor. Arduino.cc örnek programında, tam olarak istenen işlevleri sağlayan UDPNTPCLizt var. İşte Ketch'in sadece en önemli özleri, Arduino Tom Ige'nin kurucu ortağıdan başkasının yazdığı en önemli özetler.

Her şeyden önce, eskiz kütüphanenin ilgili başlık dosyasını entegre eder:

#include <WiFi101.h>

Yerel UDP iletişim limanı (gelen paketler) genellikle 2390'dır.

unsigned int localPort = 2390;

Örnekteki sunucu URL'si var time.nist.go:

IPAddress timeServer(129, 6, 15, 28);

Örneğin, Almanya'da da var: de.pool.ntp.org. Kimin IP adresi 212.112.228.242.

Gelen paketleri kabul etmek için iletişim aşağıdaki gibi başlatılmalıdır.

WiFiUDP Udp; // Variablenvereinbarung
Udp.begin(localPort); // Kommunikation starten

Zamanla denemek için NTP sunucusuna bir paket istek göndermeliyiz. Değişken Paketlerin tamponu 48 baytlı bir tampon tanımlar (Ntp_packet_size: = 48). NTP sunucusu, WLAN üzerinden Arduino tarafından gönderilen istek paketini analiz eder, bazı yerlerde değiştirir ve ardından geri gönderir. Standart RFC 958, paketin içeriğini açıklar.

Aşağıdaki paketi UDP üzerinden gönderiyoruz:

memset(packetBuffer, 0, NTP_PACKET_SIZE);
packetBuffer[0] = 0b11100011; // LI, Version, Mode
packetBuffer[1] = 0; // Stratum, or type of clock
packetBuffer[2] = 6; // Polling Interval
packetBuffer[3] = 0xEC; // Peer Clock Precision
// 8 bytes of zero for Root Delay & Root Dispersion
packetBuffer[12] = 49;
packetBuffer[13] = 0x4E;
packetBuffer[14] = 49;
packetBuffer[15] = 52;
Udp.beginPacket(timeServer, 123); //NTP Anfragen gehen an Port 123
Udp.write(packetBuffer, NTP_PACKET_SIZE);
Udp.endPacket();

NTP sunucusundan cevap geliyor.

if ( Udp.parsePacket() ) {
// Daten lesen und in Puffer speichern
Udp.read(packetBuffer, NTP_PACKET_SIZE);

Bundan, eskiz zamansal bilgi çıkarmalıdır. Dışarıdaki dört bayt Paketlerin tamponu[40] Zaman damgasını Big-Endian formatında içerir.

Yoluyla Yüksek Pardon em>Bu dört baytın taslağını 1 Ocak 1900'den itibaren saniye sayısını hesaplayın. Bundan, saat ve tarihi hesaplamak mümkündür. Ama daha fazlası örnek eskiz udpntpclient.

SQMTT aracılığıyla iletişim


Ethernet kalkanlarının yardımıyla iletişimin sonuçlarında, SQMTT ve COAP gibi uygulama protokolleri de tartışılmıştır. İkisini de WLAN'da Little Job ile de kullanabiliriz. Örneğin, bu makale sqmtt. Mosquitto ve mqtt.fx'i tekrar araç olarak kullanıyoruz (sivrisinek ve sqmtt.fx'in açıklamasına katkı). Kesin ayrıntılar için, bağlı katkıyı kısaca koklayın.


Sizin adınıza not edin


Son zamanlarda orijinal MKR1000 hakkındaki makalem sona erdi Haberler Geliştiricisi Ortaya çıktı. Bu kart IoT uygulamaları için özel olarak tasarlanmıştır.







PubSubliclient Kütüphanesi'ni tekrar ve MQTT kullanarak Ethernet iletişiminde zaten kullandığımız bir model lo Sketch olarak kullanıyoruz. Kodda, Ethernet Kalkanı'na yapılan referansların yerini WiFi Kitapçısı'na referanslar aldı. Bu sadece çalışır, çünkü pubSubcit sadece iletişim kütüphanesinin aynı arayüzü uygularken gerektirir. Yani strateji modeliyle uğraşıyoruz. Eskiz yüklemeden önce lütfen SQMTT Sunucusunu (Mosquitto) başlatın. Eskizde tüm adresleri uyarlamalısınız ve verileri ortamınıza göre erişmelisiniz.

Bir hatırlatma olarak: Arduino'nun aşağıdaki taslağı yerel sivrisinek komisyoncusunda kaydedildi. Yöntemle Hatırlamak () Tedavi gelen mesajlardan gerçekleşirse yeraltı. Konudaki taslak mesajlarınızı halka açık Pubt.

//////////////////////////////////////////////////////////
// Dieser Sketch für den Arduino MKR1000 oder ZERO
// nutzt PubSubClient plus WiFi101.
//
// Als MQTT-Broker ist mosquitto im Einsatz.
// Der Code hängt aber nicht von mosquitto ab.
//
// (c) Michael Stal, 2016
//
// Der Sketch meldet sich für Nachrichteneingang in
// Topic subTopic an und schreibt Nachrichten in pubTopic.
// Bei Eingang von Nachrichten in subTopic wird die
// Methode callback aufgerufen.
///////////////////////////////////////////////////////////

#include <SPI.h>
#include <WiFi101.h>
#include <PubSubClient.h>

// Diese Methode wird aufgerufen, sobald eine MQTT-Nachricht
// beim abonnierten Topic eintrifft:

void callback(char* topic, byte* payload, unsigned int length) {
Serial.print("Nachricht eingetroffen [");
Serial.print(topic); // von welchem topic
Serial.print("]: ");
for (int i=0;i<length;i++) { // Nachricht ausgeben
Serial.print((char)payload);
}
Serial.println();
}

char ssid[] = "<ssid>"; // Ihre WLAN SSID
char pass[] = "<passwort>"; // Ihr WLAN Passwort
char pubTopic[] = "outTopic"; // Topic zum Publizieren
char subTopic[] = "inTopic"; // Topic zum Nachrichten empfangen

// Wifi Verbindungsobjekt:
WiFiClient wifiClient;
IPAddress server(192, 168, 178, 40); // IP Adresse MQTT-Broker
IPAddress ip; // eigene IP Adresse <- DHCP
PubSubClient client(wifiClient); // Dependency Injection

// Diese Methode stellt die Verbindung zum Server wieder her:

void reconnect() {
// Versuch, Verbindung wiederherzustellen
while (!client.connected()) {
Serial.print("Versuch des MQTT Verbindungsaufbaus mit ");
Serial.println(server);

//Verbindungsversuch:
if (client.connect("arduinoClient")) {
Serial.println("Erfolgreich verbunden!");

// Nun versendet der Arduino eine Nachricht in outTopic ...
client.publish(pubTopic,"Arduino nach Hause telefonieren");

// und meldet sich bei inTopic für eingehende Nachrichten an:
client.subscribe(subTopic);

} else { // Im Fehlerfall => Fehlermeldung und neuer Versuch
Serial.print("Fehler, rc=");
Serial.print(client.state()); // Fehlercode
Serial.println(" Nächster Versuch in 5 Sekunden");
// 5 Sekunden Pause vor dem nächsten Versuch
delay(5000);
}
}
}

void setup()
{
Serial.begin(57600); // Seriellen Monitor starten
// Broker erreichbar über ip-Adresse = server, port = 1883
// 1883: Port für unverschlüsselte Kommunikation

client.setServer(server, 1883); // Adresse des MQTT-Brokers
client.setCallback(callback); // Handler für eingehende Nachrichten
// WiFi-Verbindung aufbauen
WiFi.begin(ssid, pass);
// Eigene IP-Adresse merken
ip = WiFi.localIP();
Serial.print("Zugewiesene IP-Adresse lautet: ");
Serial.println(ip);
// Kleine Rast
delay(1500);
}

void loop()
{
// Solange probieren bis verbunden:
if (!client.connected()) {
reconnect();
}
client.loop();
}


Ardından sqmt.fx. Daha önce de tartıştık (blogda eski Post). Çekmeceden çıkabileceğimiz sırada kullanılan JavaScript bile. Hatırlatma olarak: SQM desteği düğümlerin operatörü üzerinden kurulabilir:

npm install mqtt --save

Çok sık dönmeniz gerekmeyecek şekilde, programın listesini buradan kopyaladım.

var mqtt = require('mqtt');
var client = mqtt.connect('mqtt://localhost:1883');
// Verbindung zum Broker aufbauen:
client.on('connect', function () {

// Nachrichten aus outTopic abonnieren:
client.subscribe('outTopic');

// Nachrichten auf inTopic publizieren:
client.publish('inTopic', 'Hallo Arduino, hier ist JavaScript!');
});

// client.on enthält eine Ereignisbehandlung für eingehende Nachrichten

client.on('message', function (topic, message) {

// Eingegangene Nachricht auslesen:
console.log(message.toString());
client.end(); // Verbindung kappen
});

Çözüm


WiFi101 kalkanının yönetimi nispeten kolaydır. WiFi'nin sadece başlatıldığında daha yüksek bir çabaya ihtiyacı vardır. Kitaplıklar Ethernet Bookshop'un arayüzünü takip ettiğinde, mevcut kitaplıklar ve eskizler genellikle WLAN iletişimi için kullanılabilir.

Tek engelleyici, bazıları yetişkinler için ahududu kartları gibi aynı fiyat bölgelerine ulaşan WiFi kartlarının maliyetidir. Bluefly-scudo da daha ucuz olduğunu gösteriyor.

İki varış sonucunda bir anlaşma ile de çalışıp çalışmadığını incelemek istiyoruz.




()
 
Üst