Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Daten mit Ton senden

Komponenten und Verbrauchsmaterialien

Arduino Nano 33 BLE Sense
× 1

Über dieses Projekt

Hier im Chirp HQ haben wir uns sehr über die Ankündigung gefreut, dass Arduino ein neues Board mit einer ganzen Reihe neuer Funktionen herausbringen wird. Zu diesen Features gehören eine breite Palette an Sensoren, ein leistungsstarker Prozessor und vor allem - ein integriertes Mikrofon! Die guten Leute bei Arduino haben uns eine Vorabversion des neuen Nano 33 Sense-Boards geschickt, das vollständig mit Chirp kompatibel ist und es der Maker-Community ermöglicht, Daten mit Ton zu senden und zu empfangen.

Chirp fügt Arduino-Boards einen völlig einzigartigen Transportmechanismus hinzu. Die zusätzlichen Fähigkeiten von Data-over-Sound bedeuten, dass Hacker mehr Konnektivitätsoptionen zur Hand haben. Einige der Vorteile von Data-over-Sound sind:

  • Geräteunabhängig:Daten können von mobilen Apps, Webseiten oder sogar nur mit einer Audiodatei gesendet werden
  • Eins zu vielen:Jedes Gerät in Hörweite kann Daten in einer einfachen Transaktion empfangen
  • Reibungsfrei:Keine Kopplung, Passwörter oder Ersteinrichtung erforderlich

In diesem Tutorial zeigen wir, wie Sie das Chirp SDK verwenden, um einen RGB-Wert zu senden, um die Farbe der integrierten LED zu ändern.

Chirp funktioniert sogar an lauten Orten, dank unserer jahrelangen Forschung, um den Decoder robust gegenüber Hintergrundgeräuschen zu machen. Lesen Sie hier mehr über die Vorteile von Data-over-Sound.

Wenn Sie immer noch skeptisch sind, probieren Sie es selbst aus.

Der Einstieg in Chirp ist einfacher denn je...

Erste Schritte

Falls noch nicht geschehen, müssen Sie sich unter developer.chirp.io bei Chirp anmelden. Sobald Sie sich angemeldet haben, können Sie Ihren App-Schlüssel, das Geheimnis und die Audiokonfiguration für Ihre Anwendung abrufen.

Daten empfangen

Da der Nano 33 Sense mit einem integrierten Mikrofon geliefert wird, benötigen Sie zum Empfangen von Daten mit Chirp nur das Chirp SDK, das direkt über den Bibliotheksmanager erhältlich ist.

Öffnen Sie einfach den Bibliotheksmanager und suchen Sie nach Chirp SDK. Installieren Sie v3.3.0 oder höher und Sie können mit dem Programmieren beginnen.

Tools> Bibliotheken verwalten

Sie können unseren Beispielcode öffnen, um mit zu beginnen.

Datei> Beispiele> ChirpSDK> Nano33SenseReceive

Sie müssen Ihre Zugangsdaten für das 16khz-mono-embedded . kopieren und einfügen Protokoll von developer.chirp.io in die Datei Credentials.h.

Der Beispielcode druckt einfach alle empfangenen Daten an den Serial Monitor. Wir können das Verhalten jedoch leicht ändern, um die On-Board-LEDs zum Leuchten zu bringen, indem wir den onReceivedCallback . bearbeiten Funktion.

In Ihrer Setup-Funktion müssen wir zuerst die mit den LEDs verbundenen GPIO-Pins als Ausgänge einrichten

#define R_LED_PIN 22#define G_LED_PIN 23#define B_LED_PIN 24void setup() { pinMode(R_LED_PIN, OUTPUT); pinMode (G_LED_PIN, AUSGANG); pinMode(B_LED_PIN, OUTPUT);}  

Um die LEDs anzusteuern, müssen wir die RGB-Werte aus der Datennutzlast herausziehen.

void onReceivedCallback(void *chirp, uint8_t *payload, size_t length,{ if (length> 0) { // Hohe Werte bedeuten geringere Helligkeit, also // subtrahieren wir von UINT8_MAX analogWrite(R_LED_PIN, UINT8_MAX - payload [0]); analogWrite(B_LED_PIN, UINT8_MAX - Payload[2]); } else { Serial.println("Dekodierung fehlgeschlagen"); }}  

Sie können Ihren Code jetzt testen, indem Sie die folgenden Audiodateien abspielen. Jede sollte die LED-Farbe von Rot zu Grün zu Blau ändern.

Was kommt als nächstes?

Die erste Iteration des Chirp SDK für Arduino funktioniert nur auf dem hörbaren 16khz-mono-embedded Protokoll. In den kommenden Monaten werden wir eine unhörbare Version veröffentlichen, die bei nahen Ultraschallfrequenzen funktioniert. Damit können Sie Daten mit Frequenzen senden, die Menschen nicht hören können. Sie können die Chirp-Daten beispielsweise in vorhandenes Audio wie Lieder oder Videos einbetten, um Aktionen auszulösen.

Wir werden auch weitere Tutorials darüber folgen, wie Sie Data-over-Sound mit Arduino nutzen können. Teilen Sie uns mit, wo Sie Chirp in Ihren eigenen Arduino-Projekten verwendet haben, indem Sie uns auf Twitter @chirp taggen oder kontaktieren Sie uns unter [email protected].

Code

  • Chirp RGB-Werte zu Nano 33 Sense
Chirp RGB-Werte zu Nano 33 SenseC/C++
Senden Sie RGB-Werte mit Chirp, um die Farbe der integrierten LED zu ändern. Sie können unsere angehängten Soundclips in diesem Tutorial verwenden, um es auszuprobieren, oder es selbst tun, indem Sie ein Array von 3 Byte senden.
/**----------------- -------------------------------------------------- - Beispielcode zum Empfangen von Daten mit dem Arduino Nano 33 Sense Board. @file Nano33SenseReceive.ino @brief Erstellen Sie ein Entwicklerkonto unter https://developers.chirp.io und kopieren Sie Ihren Schlüssel, das Geheimnis und die Konfigurationszeichenfolge für das "16khz-mono-embedded"-Protokoll und fügen Sie sie in die Chirp-Definitionen unten ein. In diesem Beispiel wird nach RGB-Werten gesucht und die Farbe der integrierten LED geändert. Schaltung:- Arduino Nano 33 BLE-Platine Copyright © 2011-2019, Asio Ltd. Alle Rechte vorbehalten. -------------------------------------------------- -----------------*/#include #include "chirp_connect.h"#define CHIRP_APP_KEY "YOUR_APP_KEY"#define CHIRP_APP_SECRET "YOUR_APP_SECRET"#define CHIRP_APP_CONFIG "YOUR_APP_CONFIG "#define SAMPLE_RATE 16000#define BUFFER_SIZE 256#define R_LED_PIN 22#define G_LED_PIN 23#define B_LED_PIN 24// Globale Variablen ---------------------------------- --------------------------statisch chirp_connect_t *chirp =NULL;short sampleBuffer[BUFFER_SIZE];volatile int samplesRead;// Funktionsdefinitionen --- --------------------------------------------------------void setupChirp(void); void chirpErrorHandler(chirp_connect_error_code_t code);void onPDMdata(void);// Main ---------------------------------- ------------------------------------------void setup () { Serial.begin (115200); // while (! Serial); pinMode (R_LED_PIN, AUSGANG); pinMode (G_LED_PIN, AUSGANG); pinMode (B_LED_PIN, AUSGANG); setupChirp(); PDM.onReceive(onPDMdata); PDM.setGain(30); if (! PDM.begin (1, SAMPLE_RATE)) { Serial.println ( "Fehler beim Starten von PDM!"); während (1); } analogWrite (R_LED_PIN, UINT8_MAX); analogWrite (G_LED_PIN, UINT8_MAX); analogWrite (B_LED_PIN, UINT8_MAX);}void loop () { if (samplesRead) { chirp_connect_error_code_t err =chirp_connect_process_shorts_input (chirp, SampleBuffer, SamplesRead); chirpErrorHandler(err); SamplesRead =0; }}void onPDMdata(){ int bytesAvailable =PDM.available(); PDM.read (sampleBuffer, bytesAvailable); SamplesRead =bytesAvailable / sizeof(short);}// Chirp ------------------------------------------------- -------------------------void onReceivingCallback (void *chirp, uint8_t *payload, size_t length, uint8_t channel) {Serial.println("Daten empfangen ..."); analogWrite (R_LED_PIN, UINT8_MAX); analogWrite (G_LED_PIN, UINT8_MAX); analogWrite(B_LED_PIN, UINT8_MAX);}void onReceivedCallback(void *chirp, uint8_t *payload, size_t length, uint8_t channel){ if (length) { // Hohe Werte bedeuten eine geringere Helligkeit, also // subtrahieren wir von UINT8_MAX analogWrite (R_LED_PIN, UINT8_MAX - Nutzlast[0]); analogWrite(G_LED_PIN, UINT8_MAX - Nutzlast[1]); analogWrite(B_LED_PIN, UINT8_MAX - Nutzlast [2]); aufrechtzuerhalten. Sonst { AnalogWrite (R_LED_PIN, 0); analogWrite (G_LED_PIN, UINT8_MAX); analogWrite (B_LED_PIN, UINT8_MAX); Verzögerung (500); analogWrite (R_LED_PIN, UINT8_MAX); Verzögerung (500); analogWrite (R_LED_PIN, 0); Serial.println ( "Dekodierung fehlgeschlagen"); }}void chirpErrorHandler(chirp_connect_error_code_t code){ if (code!=CHIRP_CONNECT_OK) { const char *error_string =chirp_connect_error_code_to_string(code); Serial.println (error_string); Ausgang (42); }}void setupChirp (void) { chirp =new_chirp_connect (CHIRP_APP_KEY, CHIRP_APP_SECRET); if (chirp ==NULL) { Serial.println ( "Chirp-Initialisierung fehlgeschlagen."); Rückkehr; } chirp_connect_error_code_t err =chirp_connect_set_config(chirp, CHIRP_APP_CONFIG); chirpErrorHandler(err); char *info =chirp_connect_get_info(chirp); Serial.println (Info); chirp_connect_free(info); chirp_connect_callback_set_t callback_set ={ .on_state_changed =NULL, .on_sending =NULL, .on_sent =NULL, .on_receiving =onReceivingCallback, .on_received =onReceivedCallback }; err =chirp_connect_set_callbacks(chirp, callback_set); chirpErrorHandler(err); err =chirp_connect_set_input_sample_rate (chirp, SAMPLE_RATE); chirpErrorHandler(err); err =chirp_connect_set_frequency_correction(chirp, 1.0096); chirpErrorHandler(err); err =chirp_connect_start(chirp); chirpErrorHandler(err); Serial.println ("Chirp SDK initialisiert."); Serial.flush();}

Herstellungsprozess

  1. LP-Platte
  2. Integration von Sensordaten mit Raspberry Pi-Mikroprozessor
  3. Was mache ich mit den Daten?!
  4. Einstieg ins Geschäft mit IoT
  5. Upgrade von Industrie 4.0 mit Edge Analytics
  6. C++ Char-Datentyp mit Beispielen
  7. 8 verschiedene Arten von Datenschutzverletzungen mit Beispielen
  8. Verbesserung der Energieeffizienz mit HMIs
  9. Digitale Fertigungsteams mit Wissen stärken
  10. Mit Echtzeit-Stadtdaten kommt Innovation