semaver
New member
ESP8266 WiFi Shield'inizi Oluşturun
Son bölümde ucuz wifi.cip ESP8266 ile tanıştık ve olasılıklarını aydınlattık (Arduino dünyasının dışında bile). Bu bölümde, internet bağlantısı için bir ESP8266 kartı ile birlikte Arduino donanımı kullanılmalıdır.
Arduino'yu kablosuz internet modunda bağlamak için Arduino.cc Hardware Company, orijinal WiFi-Shield'ı sundu, ancak bütçesinde 50 Euro'nun üzerinde piyasa fiyatları artı nakliye maliyetleriyle derin delikler yırtıp. Benzer bir obolus için zaten bir Raspberry P-3 kartı olduğu için bu çok pahalı.
Genuino/Arduino Kurulu MKR1000 de burada ilginç olacaktı. Bu kart özellikle IoT geliştiricisini ve entegre WiFi'ye hitap eder. Bu makalede açıklanmıştır.
WiFi-Seld için bir üs olarak ESP8266
ESP8266 Economic, Arduino ekosisteminin destekçileri için tek gerçek pazarlık seçeneğidir. WiFi-çocuğunuz için uygun bir devre, son bölüme zaten verildi. Şekilde devre yapımı eylemde göreceksiniz.

ESP-01 kartının mega arduino'ya güç kaynağı ve bağlantısı için sadece FTDI koparma kartı olan bir devre
Devrede aşağıdaki bileşenleri bulacaksınız:
- 3.3 V mantık ve mantık 5 V arasındaki ayrım için mantıksal dönüştürücü.
- FTDI Breakout Board
- ESP-01 kartı
- Tel köprüler
- Kırmak

Ekonomik prototip kalkan
(Resim: Aliexpress.com)
Yönetim kurulunu bir Arduino uzantısı veya bağımsız bir sistem olarak kullanabilmek için daha fazla anahtarın entegre edilmesi önerilir. Bununla birlikte, açıklanan işlevlerle bitirilen kalkanlar zaten 5 Euro (Çin) veya 11 Euro (Almanya) arasında mevcuttur. Bununla birlikte, genellikle orta derecede veya belgelenmezler. Tabii ki, bir çözümün geliştirilmesi de çok daha eğlenceli.
FTDI kartı yerine, 3.3 V'ye dayalı bir harici voltaj kaynağını dönüştüren bir voltaj kontrolörünü entegre etmek de mümkündür. Bununla birlikte, bu ancak ESP8266 kartını sadece Arduino aracılığıyla kullanmak istiyorsanız, ancak bağımsız bir tavsiye olarak dikkate alınabilir.

Arabaların kartı veya kalkanı -Fasted ESP8266
Kızarmış yiyeceklerden ilkel bir devre oluşturdum. Kalkanınızı oluşturmak için bu devreyi yukarıda gösterilen Protoshield'a aktarmak mümkündür. İsterseniz, voltajı tesviye etmek için LED'ler (örneğin dijital kapı 13 için) veya elektrolitik kapasitörler ekleyebilirsiniz.
Kütüphaneler
Bir noktada donanımı (kalkan veya kart) Arduino için bir uzatma olarak kullanmak istersiniz. Burada da iki yol var: Arabalar -Mevcut bir kütüphanenin etkisi veya mevcut bir kütüphanenin kullanımı. Arduino fikrinde aşağıdaki menü navigasyonu elde edilir: Eskiz | Kütüphaneyi ekleyin | Kütüphaneleri Yönetin Sağ üstte bir arama baskısı ekleyebileceğiniz bir pencerede. Oraya bak ESP8266.

ESP8266 kütüphanesi arayın.
Ve kütüphaneye sunulan kitapçılar listesinde gezinin WifiespBunları seçmek ve yüklemek için.
Şimdi yolun ötesinde yapabilirsiniz Dosya | Örnekler | Wifiesp Örneğin bir örnek yükleyin ConnectWpa. Koddaki WLAN'ınıza erişim verilerini hala giriyorsanız, koşullardaki seri kapıların hızını düzenleyin ve çizimi başlatın.
Arduino ESP8266 aracılığıyla WLAN'a doğru bir şekilde bağlandığından seri monitörü takip edebilmelisiniz:

ConnectTwpa örneği Wifiesp kitapçılarından
Bu sizi ilk bağlantı haline getirdi.
Wifiesp ile daha geniş bir örnek: LED'i tarayıcı üzerinden kontrol edin
Biraz daha geniş bir örnekte, bir LED tarayıcı üzerinden kontrol edilmelidir. Kütüphane ile kullanıcı Wifiesp Örnek verilen örnek Ağ uyarlanmış ve genişletilmiş. Devre için bir LED'i direnç kullanarak bir pime bağlamanız gerekir> = 220 ohm ve pim numarası (Ledpin) Taslağı girin. Her şey bittiğinde, aşağıdaki gibi görünmelidir:

Solda tarayıcının tarafını basit olarak görüyoruz, sağda seri monitördeki taslağın masraflarını sağlıyoruz. Arduino kartımız web sunucusunun rolünü işgal ediyor. Kablosuz iletişim için bir ESP8266 kartı ve Wifiesp-Kütüphane.
Yukarıdaki sonucu nasıl elde ederiz? Eskiz, kurulum sırasında seri kapıyı başlatır, yerel WLAN'da kaydedilir ve Porta 80'de bir web sunucusu başlatır.
Sonsuz döngüde, eskiz müşteri isteklerini bekliyor. Bir soruşturmayı tanıyorsanız, müşteriye bağlanın ve web sitesini LED denetime gönderin. Sonunda, eskiz bağlantıyı tekrar reddeder.
Yöntem Sendhttpresonse () İstemciye gönderilen HTML sayfasını oluşturun ve istemciye gönderin. Yardımcı yöntem Printwifistatus () Kontrol etmek için seri monitörde mevcut WiFi verileri üretin.
Eskiz iyi yorumlanmıştır, bu yüzden sadece yolunuzu bulmalısınız.
////////////////////////////////////////////////////////////////
// Ein WebServer auf dem Arduino erlaubt die Steuerung einer LED
// Das Beispiel setzt WPA-Netzwerke voraus
////////////////////////////////////////////////////////////////
#include <WiFiEsp.h> // Header von WiFiEsp einbinden
// Entweder SoftSerial (UNO, LEONARDO) auf Pins 6+7 oder
// Hardware-Serial (RX1,TX1) (MEGA, DUE)
#ifndef HAVE_HWSERIAL1
#include "SoftwareSerial.h"
SoftwareSerial Serial1(6, 7); // Virtuelles RX, TX
#endif
char WiFiSSID[] = “…………….”; // Ihre SSID
char WiFiPass[] = “…………….”; // Ihr Zugangs-Passwort
int status = WL_IDLE_STATUS;
// LED: Initialzustand und Pin
int led = LOW;
int ledPIN = 10;
WiFiEspServer WebServer(80); // Vereinbarung des Mini-WebServers
// in WiFiESP ist ein Ringpuffer-Typ vereinbart, den wir nutzen
RingBuffer puffer(24);
//////////////////////////////////////////////////////////////////////
// setup():
// Initialisieren der beiden seriellen Ports, Anmeldung am WLAN
// und Start des Webservers
//////////////////////////////////////////////////////////////////////
void setup()
{
Serial.begin(9600); // Serieller Port zeigt den Status (auf der IDE)
Serial1.begin(115200); // Zweiter serieller Port verbunden mit ESP8266
WiFi.init(&Serial1); // Initialisierung des Ports
// Hat es geklappt?
if (WiFi.status() == WL_NO_SHIELD) {
Serial.println("ESP8266 nicht gefunden");
// Wenn nein, dann in Endlosschleife gehen
while (0 == 0);
}
// Verbindung initiieren
while (status != WL_CONNECTED) {
Serial.print("Verbindungsaufbau zu ");
Serial.println(WiFiSSID);
// Verbindung zum WPA-Netzwerk aufbauen
status = WiFi.begin(WiFiSSID, WiFiPass);
}
Serial.println("Verbindung erfolgreich");
printWifiStatus();
// Webserver am Port 80 aktivieren
WebServer.begin();
}
/////////////////////////////////////////////////////////////////
// loop()-Methode:
// In der Endlosschleife warten wir auf eingehende
// Clientverbindungen, kommunizieren mit dem jeweiligen Client
// und schließen die Verbindung wieder (Session-Ende!)
/////////////////////////////////////////////////////////////////
void loop()
{
// Warten auf Verbindungswünsche von Clients
WiFiEspClient client = WebServer.available();
if (client) { // Client klopft an.
Serial.println("Neue Client-Verbindung"); // Ausgabe auf seriellen
// Monitor
puffer.init(); // Ringpuffer initialisieren
while (client.connected()) { // Solange Client verbunden
if (client.available()) { // Wenn Client was sendet,
char c = client.read(); // wird das Byte gelesen und
puffer.push(c); // im Puffer abgelegt
// Ein HTTP Reauest endet mit zweimal Zeilenvorsprung/Wagenrücklauf
// => Clientrequest gelesen => Daten senden
if (puffer.endsWith("rnrn")) {
sendHttpResponse(client);
break;
}
// Endung der Anfrage: http://<webaddresse>/AN oder .../AUS?
if (puffer.endsWith("GET /AN")) {
Serial.println("LED wird eingeschaltet");
led = HIGH;
digitalWrite(ledPIN, HIGH);
}
else if (puffer.endsWith("GET /AUS")) {
Serial.println("LED wird ausgeschaltet");
led = LOW;
digitalWrite(ledPIN, LOW);
}
}
}
// Verbindung schließen
client.stop();
Serial.println("Clientverbindung wurde geschlossen");
}
}
///////////////////////////////////////////////////////////
// Methode sendHttpResponse():
// Methode, mit der wir dem Client eine Webseite senden
///////////////////////////////////////////////////////////
void sendHttpResponse(WiFiEspClient client)
{
// Hier geben wir eine HTTP-Antwort im vorgeschriebenen Format zurück.
// Erst der Header...
client.println("HTTP/1.1 200 OK");
client.println("Content-type:text/html");
client.println();
// Und dann der Inhalt:
client.println("<H1> LED-Steuerung am Arduino </h1> <br>");
client.print("Im Augenblick ist die LED ");
if (led == LOW) client.print(" <b>ausgeschaltet</b>.");
else client.print("<b>eingeschaltet</b>.");
client.println("<br>");
client.println("<br>");
client.println("Klicken Sie <a href="/AN">hier</a>, um die LED einzuschalten<br>");
client.println("Klicken Sie <a href="/AUS">hier</a>, um die LED auszuschalten<br>");
// Und am Schluss weitere Leerzeile einfügen
client.println();
}
///////////////////////////////////////////////////////
// Methode printWifiStatus():
// Ausgabe WiFi-Status und Info im seriellen Monitor
///////////////////////////////////////////////////////
void printWifiStatus()
{
// Netzwerkdaten: SSID
Serial.print("SSID: ");
Serial.println(WiFi.SSID());
// Netzwerkdaten: IP-Adresse
IPAddress ip = WiFi.localIP();
Serial.print("IP Adresse: ");
Serial.println(ip);
// Hinweis im seriellen Monitor
Serial.println();
Serial.print("Um den Fernzugriff zu testen, gehen Sie bitte
auf die Webseite http://");
Serial.println(ip);
Serial.println();
}
Çizimi projelerinizin temeli olarak kullanmaya davetlisiniz. Çoğunlukla ESP8266'nın becerilerini göstermeye alışıktı. Şimdi iyi bir temel bilgiye sahip olmalısınız.
Çözüm
ESP8266, Arduino becerilerinin birkaç Euro için WiFi'ye yardımcı olan çok çeşitlendirilmiş bir çiptir, ancak Arduino kimliğinde bağımsız bir tavsiye olarak da kullanılabilir. Bütün bunlar birkaç Euro çok düşük bir fiyata. Biraz yaşarsanız, blok için her türlü potansiyeli uyandırabilirsiniz.
Bu nedenle, ilk için IoT cihazlarının ağ oluşturma ve iletişimi konusunu tamamladık. Aşağıdaki bölümlerde, “komşu” cihazların birleşmesi ile ilgilenen Bluetooth ve NFC gibi konularla konuşacağım.
()