Edison Sprachaktivierte Holzlampe. Ausgabepreis 5 USD

Bild

So viel kostet das SONOFF WiFi Relay (von ITEAD), das das Herzstück dieses Geräts ist.

„Ich hatte keine Fehler. Ich habe gerade zehntausend Wege gefunden, die nicht funktionieren “- Thomas Alva Edison.

Das ist unglaublich, noch nicht in einer so fernen Vergangenheit, schrieben die Leute in den Schulen mit Federn. Heute hat jeder einen magischen Stein mit Bildern in der Tasche, mit dem Sie auf Informationen aus der ganzen Welt zugreifen können. Senden Sie Sofortnachrichten an jeden auf dem Planeten. Wir haben Sprachsteuerung, Gesichtserkennung und, wie die Leute sagen, eine Bedrohung für die gesamte Menschheit seitens der künstlichen Intelligenz. In jüngerer Zeit schienen diese Technologien eine unvorstellbare Fiktion zu sein. Heute werde ich Ihnen jedoch zeigen, wie absolut jeder mit grundlegenden Programmierkenntnissen die Sprachsteuerung nutzen kann. Also fangen wir an!

ACHTUNG !!! Arbeiten Sie mit Hochspannung. Sei vorsichtig was du tust! Der Autor des Artikels ist nicht verantwortlich für die von Ihnen ergriffenen Maßnahmen und für materielle oder physische Schäden, die durch die Verwendung der Informationen aus diesem Artikel entstehen können! Wenn Sie sich bei etwas nicht sicher sind, bitten Sie eine erfahrene Person, Ihnen zu helfen.

Das Hauptschema des Geräts.

Bild

Da das Telefon jeweils nur mit einem WLAN-Zugangspunkt verbunden werden kann, arbeiten wir über einen Router. Im Allgemeinen ist dies praktisch, wenn sich alle Ihre Smart-Geräte im selben Netzwerk befinden und Sie sie problemlos verwalten können, ohne ständig eine neue Verbindung zu jedem von ihnen herstellen zu müssen. Dies hat den Nachteil, dass alle Ihre Geräte vom Zustand eines Routers abhängen.

1 - Wir müssen das Sonoff WiFi-Relais neu programmieren


Dazu müssen Sie das Relais zerlegen und die Kontakte zum Blinken anlöten. Standardmäßig ist es so konfiguriert, dass es über einen chinesischen Server funktioniert. Persönlich ist mir nicht sehr klar, warum das Licht in der Toilette bereits über einen Server aus dem Reich der Mitte eingeschaltet werden muss.

Bild


Bild


Jetzt können wir das cp2102-Modul von Silicon Labs für Sonoff Flashing anschließen. Ich benutze es immer noch, um mit Arduino Mini zu arbeiten.

Bild

Bild

WARNUNG !!! Schließen Sie bei der Neuprogrammierung das WLAN-Relais nicht an das 220/110-Volt-Netzwerk an!

Die Neuprogrammierung des Relais ist sehr einfach. Dies ist ein reguläres esp8266-Modul. Ich habe eine Standardskizze des Access Point Servers aus der Arduino IDE genommen und ein wenig geändert.

#include <ESP8266WiFi.h> #include <ESP8266WebServer.h> #include <WiFiClient.h> // name and password from WiFi network const char* ssid = "Your access point (router) name"; const char* password = "router password"; IPAddress ip(192,168,1,112); // enter static ip IPAddress gateway(192,168,1,1); IPAddress subnet(255,255,255,0); //       80 WiFiServer server(80); void setup() { Serial.begin(115200); delay(100); //preparing GPIO pinMode(12, OUTPUT); digitalWrite(12, 1); pinMode(13, OUTPUT); digitalWrite(13, 1); // connecting to WiFi Serial.println(); Serial.println(); Serial.print("Connecting to "); Serial.println(ssid); WiFi.begin(ssid, password); WiFi.config(ip, gateway, subnet); // waiting for connection while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi connected"); // run server server.begin(); Serial.println("Server started"); // show ip Serial.println(WiFi.localIP()); } void loop() { // connection check WiFiClient client = server.available(); if (!client) { return; } // Waiting for data Serial.println("new client"); while (!client.available()) { delay(1); } // Reading the first line of the query String req = client.readStringUntil('\r'); Serial.println(req); client.flush(); // works with GPIO if (req.indexOf("/12/0") != -1) digitalWrite(12, 0); else if (req.indexOf("/12/1") != -1){ digitalWrite(12, 1); Serial.println("TEST OK"); String s = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n<!DOCTYPE HTML>\r\n<html>\r\nTest OK. Uptime: "; // UpTime int Sec = (millis() / 1000UL) % 60; int Min = ((millis() / 1000UL) / 60UL) % 60; int Hours = ((millis() / 1000UL) / 3600UL) % 24; int Day = ((millis() / 1000UL) / 3600UL / 24UL); s += Day; s += "d "; s += Hours; s += ":"; s += Min; s += ":"; s += Sec; s += "</html>\n"; client.print(s); client.stop(); return; } else // If an invalid query write error { Serial.println("invalid request"); String s = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n<!DOCTYPE HTML>\r\n<html>\r\nInvalid request"; s += "</html>\n"; client.print(s); client.stop(); return; } client.flush(); // Response formation String s = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n<!DOCTYPE HTML>\r\n<html>\r\nGPIO set OK"; s += "</html>\n"; // Send the response to the client client.print(s); delay(1); Serial.println("Client disonnected"); } 

Sie müssen den Namen Ihres Zugangspunkts (Router / Router), das Kennwort und die statische IP-Adresse für die Glühbirne angeben. Die Relaissteuerung befindet sich an Pin 12. Stellen Sie die Blitzgröße in der IDE auf 1 MB ein.

Halten Sie die Taste auf der Sonoff-Platine gedrückt. Stecken Sie den USB-Konverter cp2102 in den Computer (während Sie die Taste gedrückt halten). Lassen Sie die Taste nach 2-3 Sekunden los. Jetzt befindet sich das Relais im Programmiermodus. Laden Sie die Skizzendatei von der Arduino IDE herunter. Klicken Sie auf Bestätigen / Kompilieren. Starten Sie das Modul nach dem Neuprogrammieren neu.

2 - Jetzt erstellen wir eine mobile Anwendung zur Steuerung dieses Relais über WLAN. (Android)


Ich werde nur die Hauptcode-Schnipsel geben. Dann können Sie sie für die Implementierung in Ihren Anwendungen verwenden. Google bietet eine sehr einfache und bequeme Oberfläche für die Spracherkennung. Hier ist der Code, mit dem Sie Ihre Stimme in Text umwandeln und in einer regulären Zeile speichern können.

 // Main code to start speech recognition. // You can put it's execution, on some button in your app. Intent speechIntent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); speechIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM); speechIntent.putExtra(RecognizerIntent.EXTRA_PROMPT, "Speak please"); startActivityForResult(speechIntent, RESULT_SPEECH_TO_TEXT); // Then on onAcivityResult we will get result @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == RESULT_SPEECH_TO_TEXT && resultCode == RESULT_OK) { ArrayList<String> matches = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS); if (!matches.isEmpty()) { String result_recognition_string = matches.get(0); // convert to lower case, since google speech recognition // returns "different" results. For example: youtube defines as YouTube result_recognition_string = result_recognition_string.toLowerCase(Locale.getDefault()); if (result_recognition_string.contains("lamp on") ) { // lamp on new LightOn().execute(); } } } } 

Dann können Sie es mit den Befehlen vergleichen, die Sie implementieren möchten.

Dies ist der Code für die Arbeit mit Wi-Fi. Senden einer Nachricht an den Server.

 public class LightOn extends AsyncTask<Void,Void,Void> { private static final String LOG_TAG = "MyLog"; @Override protected Void doInBackground(Void... params) { URL url; HttpURLConnection urlConnection = null; try { url = new URL("http://192.168.1.112/12/1"); // "0" to turn off urlConnection = (HttpURLConnection) url .openConnection(); InputStream in = urlConnection.getInputStream(); InputStreamReader isw = new InputStreamReader(in); int data = isw.read(); while (data != -1) { char current = (char) data; data = isw.read(); System.out.print(current); Log.e(LOG_TAG, "Reply from server - " + current); } } catch (Exception e) { e.printStackTrace(); } finally { if (urlConnection != null) { urlConnection.disconnect(); } } return null; } } // run it new LightOn().execute(); 

Es ist sehr einfach. "1" schalten Sie die Glühbirne ein, "0" schalten Sie die Glühbirne aus. Sie können beliebige Schecks hinzufügen, eine Antwort vom Server erhalten usw. tp Ich habe zwei Programme für mich erstellt. Das erste ist das Sprachsteuerungs-Widget, das sich auf dem Desktop befindet und immer zur Hand ist. Die zweite ist eine einfache Anwendung zum Ein- und Ausschalten der Glühbirne auf Knopfdruck.

Bild

Ich nehme an, Sie haben es bereits satt, alle Arten von Texten zu lesen, und ich schlage vor, Sie sehen sich ein Video darüber an, wie es war.


Wie Albert Einstein sagte: "Ihre Möglichkeiten sind nur durch Ihre Vorstellungskraft begrenzt."

Ich wünsche Ihnen einen schönen Tag und nur intelligente Geräte!

Source: https://habr.com/ru/post/de432990/


All Articles