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

Verwenden des PSoC 6 Pioneer Boards mit dem Pioneer IoT Add-on Shield

Einführung

Der PSoC 6 ist die neueste Ergänzung der leistungsstarken PSoC-Prozessorserie von Cypress. Das PSoC 6 Pioneer IoT Add-On Shield ist das Entwicklungstool dieser Prozessorlinie und verfügt über einen integrierten Debugger, Arduino-kompatible Header, CapSense-Widgets und mehr, die alle an einen PSoC 6-Prozessor gebunden sind. Der Prozessor ist ein Dual-Core-Gerät mit einem Cortex-M0+-Low-Power-Prozessor und einem Cortex-M4-High-Power-Prozessor, die über gemeinsame Peripheriegeräte und Speicherplatz miteinander verbunden sind.

Dieses Tutorial zeigt Ihnen, wie Sie das Pioneer Board in Betrieb nehmen und das Pioneer Add-on Shield verwenden, um die Fähigkeiten des PSoC 6-Geräts zu erweitern. Wir zeigen Ihnen, wie Sie mit einem Raspberry Pi über BLE und WiFi (mit einem XBee WiFi-Modul) kommunizieren sowie zwischen einem PSoC 4 BLE Pioneer Board und dem PSoC 6 Pioneer Board über BLE kommunizieren.

Erforderliche Materialien

Die Beispiele in dieser Anleitung sind für die Verwendung mit dem PSoC 6-Pioneer-Kit gedacht, das direkt von Cypress oder von Digi-Key erworben werden kann.

Natürlich benötigen Sie auch ein Pioneer Add-on Shield. Sie benötigen außerdem ein XBee WiFi-Modul. Abhängig von Ihrer Einrichtung gibt es einige XBee-WLAN-Optionen: Trace, RP-SMA-Anschluss mit externer 2,4 GHz-Antenne oder Wire . Am einfachsten wäre es, XBee mit der Drahtantenne zu bekommen.

Außerdem benötigen Sie das Raspberry Pi 3 Starter Kit. Dies wird Ihr Ziel für die Kommunikation des PSoC6 Pioneer Boards. Natürlich können Sie den Pi 3 zusammen mit einem Steckbrett, Überbrückungsdrähten, Widerständen und LEDs einfach separat kaufen, aber wir finden das Starter-Kit ein außergewöhnliches Angebot und es lohnt sich, es zu kaufen.

Hardware-Übersicht

Lassen Sie uns die Funktionen des Pioneer Kit IoT Add-on Boards im Detail durchgehen.

MicroSD-Kartensteckplatz – Die Pins für diesen Steckplatz werden dem SPI-Peripheriegerät auf den meisten Arduino-kompatiblen Boards zugeordnet, einschließlich des PSoC 6 BLE Pioneer Board.

XBee-Header – Dieser Header ist so angeordnet, dass er den Standard-XBee-Footprint akzeptiert. Es ist mit allen offiziellen XBee-Modulen kompatibel.

Qwiic-Connector – Dieser Connector bietet Unterstützung für alle Qwiic-Module von SparkFun. Es liefert 3,3 V.

MicroB-USB-Stromanschluss – Datenleitungen an diesem Anschluss sind mit nichts verbunden. Es liefert 5 V an den 3,3 V-Regler für das XBee-Modul, überschreibt die 5 V, die vom Arduino-Header kommen, und ermöglicht die ordnungsgemäße Funktion von Hochleistungs-XBee-Modulen (wie den Mobilfunk-, WLAN- oder Pro-Modellen).

D7- und D9-Tasten – Zwei Benutzertasten, die mit den Pins D7 und D9 verbunden sind (P0.2 und P13.1 beim PSoC 6 oder P1.0 und P0.4 beim PSoC 4 BLE).

3,3-V-Regler – Schaltmodus-3,3-V-Leistungsregler, der bis zu 1,5 A liefern kann, abhängig von der Stromlieferkapazität der Upstream-Versorgung. Zieht Strom aus einer 5-V-Versorgung über Arduino-Pins oder einen MicroB-Stromanschluss. Versorgt nur den XBee-Header mit Strom.

Stufenverschiebungspuffer – Konvertiert von 5V-Signalen in 3,3V-Signale. Ermöglicht die Verwendung der Platine in 3.3V- oder 5V-Systemen.

I2C-Level-Shift-Schaltung – Wandelt I2C-Signale von 3,3 V auf 5 V um, falls erforderlich.

Spannungsversorgungsauswahl-Jumper – Wählt den Pegel aus, auf den die I2C-Pegelverschiebungsschaltung übersetzt. Standardeinstellung auf 3,3 V . Zur Verwendung mit 5V-Systemen auf 5V einstellen. Sowohl die PSoC 4- als auch die PSoC 6-Pioneer-BLE-Platinen sind 3,3 V Systeme.

XBee DIO5 LED – DIO5 verwendet standardmäßig einige nützliche Funktionen, insbesondere auf dem WiFi-Modul, wo es die Konnektivität zum konfigurierten WiFi-Netzwerk anzeigt.

Beispiel:WLAN zu Raspberry Pi mit dem PSoC 6 Pioneer Kit

Dieses Beispiel zeigt, wie Sie ein Signal über WLAN an einen Raspberry Pi senden. Es zeigt Ihnen, wie Sie auf ein XBee-WLAN-Modul zugreifen, die prozessübergreifende Kommunikation zwischen den beiden Kernen des PSoC 6 und wie Sie Befehle mit einem Raspberry Pi empfangen und parsen.

Das Befolgen dieses Beispiels erfordert einige Einstellungen, also lassen Sie uns das jetzt durchgehen.

PSoC 6 Pioneer Kit-Setup:Hardware

Die seitliche Einrichtung des Pioneer-Kits ist trivial:Stecken Sie das XBee WiFi-Modul in das Pioneer IoT Add-on Shield und stecken Sie das Shield in den Arduino-Header des Pioneer Kit Boards.

Die Raspberry Pi-Seite erfordert mehr Erklärung. Sie müssen sowohl Hardware als auch Software auf dem Raspberry Pi einrichten.

PSoC 6 Pioneer Kit-Setup:Software

Hinweis:  PSoC 6-Unterstützung ist nur in Creator 4.2 oder höher verfügbar!

Das Softwareprojekt für das Pioneer Kit ist auf GitHub verfügbar.

PSOC 6 PIONEER KIT SOFTWARE-DOWNLOAD

Nachdem Sie die Datei irgendwo heruntergeladen und entpackt haben, können Sie das Beispiel (XBee_WiFi_Example) in PSoC Creator öffnen.

Bevor Sie etwas anderes tun, müssen Sie die Datei „main_cm4.c . öffnen ”-Datei und nehmen Sie einige Änderungen vor. Sie finden einen Codeabschnitt, der wie folgt aussieht:
char ssid[] =„your_ssid_here“;
char rpi_ip[] =„raspi_ip_here“;
char ssid_pw[] =„wifi_pw_here ”;
int dest_port =5000;
char encrypt_mode =WPA2;
Hoffentlich ist es offensichtlich, was Sie tun müssen:Ändern Sie diese Einstellungen entsprechend Ihrer Netzwerkkonfiguration. Der Wert für encrypt_mode kann WPA, WEP, WPA2 oder (hoffentlich nicht!) NO_SECURITY sein. rpi_ip ist ein gepunktetes Viereck (z. B. "10.8.253.193"), das Sie erhalten, indem Sie "ifconfig . eingeben “ in einem Befehlsfenster auf Ihrem Raspberry Pi (siehe unten für Anweisungen zum Öffnen eines Befehlsfensters) und schauen Sie sich „wlan0 . an ” Abschnitt.

Um das Board zu programmieren, verbinden Sie es über das mitgelieferte USB-A-zu-USB-C-Kabel mit Ihrem PC. Klicken Sie dann auf die Schaltfläche „Programmieren“ in der Symbolleiste (wie unten gezeigt), um das Projekt automatisch zu erstellen und das Board zu programmieren.

Möglicherweise wird ein Fenster wie unten angezeigt, in dem Sie aufgefordert werden, ein zu programmierendes Ziel auszuwählen. Es spielt keine Rolle, welchen Eintrag Sie unter dem Listenpunkt „KitProg2“ auswählen, einer von beiden programmiert den Blitz korrekt.

Raspberry Pi-Setup:Hardware

Schauen wir uns zunächst an, wie die Hardware angeschlossen ist:

Wie Sie sehen, haben wir eine LED (mit 330 Ohm Widerstand) an die Pins 3 (GPIO 2) und 6 (Masse) des Raspberry Pi angeschlossen. Dadurch können wir GPIO2 umschalten und das Ergebnis auf der LED sehen.

Raspberry Pi-Setup:Software

Wir gehen davon aus, dass Sie einen Raspberry Pi mit der neuesten Version von Raspbian (die vollständige Installation, nicht die Lite-Version) eingerichtet haben und dass er mit einer Tastatur, Maus, einem Monitor und einem lokalen WLAN-Netzwerk verbunden ist. Wenn dies nicht ist Nehmen Sie sich in diesem Fall bitte einen Moment Zeit, um dies einzurichten. Sie können unser Tutorial zum Einrichten des Pi hier lesen.

Beginnen wir vom Desktop des Raspberry Pi. Sie sollten einen Bildschirm haben, der ungefähr so ​​​​aussieht:

Sie müssen auf das kleine Logo oben auf dem Bildschirm klicken (siehe unten), um eine Befehlszeile zu öffnen. Der Rest dieses Tutorials geht davon aus, dass Sie diese Befehlszeile geöffnet haben.

Das öffnet ein Befehlszeilenfenster. Auf diese Weise können Sie dem Raspberry Pi sagen, dass er Befehle direkt ausführen soll.

Wir beginnen mit der Ausführung des Befehls zur Installation von Flask. Flask ist ein Web-Framework für Python, mit dem Sie ganz einfach ein Web-Front-End erstellen können, das Python-Skripte auf dem Server-Backend ausführt. Geben Sie den folgenden Befehl ein und drücken Sie dann „Enter“.
sudo pip installflakon
Eine ganze Reihe von Dingen wird im Befehlszeilenfenster passieren und am Ende wird Flask auf Ihrem Raspberry installiert Pi.

Der nächste Schritt besteht darin, die Software zu installieren, die wir geschrieben haben, um dieses Projekt von GitHub zu unterstützen. Der Befehl dafür ist
git clone https://github.com/sparkfun/Flask_Tutorial
Wieder wird etwas Text über die Befehlszeile gescrollt, und wenn die Eingabeaufforderung zurückkehrt, wird das Seien Sie Ihr Hinweis darauf, dass der Installationsvorgang abgeschlossen ist. Geben Sie anschließend diesen Befehl ein:
sudo python Flask_Tutorial/Python/app.py
Dadurch wird die App gestartet und auf Eingaben über TCP/IP vom Pioneer-Board gewartet. Sie sollten nun in der Lage sein, die mit dem Raspberry Pi verbundene LED ein- und auszuschalten, indem Sie die Tasten D7 und D9 auf dem IoT Shield drücken. Ordentlich!

Was ist denn hier los? Pt. 1:Das Pionier-Kit

Werfen wir einen Blick darauf, was genau passiert, ausgehend von einer übergeordneten Ansicht des PSoC 6-Softwareprojekts. Sehen Sie sich den Workspace Explorer-Rahmen auf der linken Seite des Bildschirms an. Wir gehen durch diesen Rahmen und heben die wichtigen Dateien hervor und wie sie sich auf das Gesamtprojekt beziehen.

Fällt es Ihnen schwer, den Workspace Explorer zu sehen? Klicken Sie auf das Bild für eine genauere Ansicht.

Die oberste Ebene des Projekts hat sechs Einträge:den Schaltplan („TopDesign.sch “), die Design Wide Resources („XBee_WiFi_Example.cydwr “), die mit dem Cortex-M0+-Kern verknüpften Quelldateien („CM0p (Core 0) “), die mit dem Cortex-M4-Kern verknüpften Quelldateien („CM4 (Core 1) “), Dateien, die zwischen den beiden geteilt werden („Shared Files “) und unterstützen von der IDE generierte Dateien („Generated_Source “).

Das Schema für dieses Projekt ist sehr einfach und hat ein paar LEDs, ein paar Schalter und den UART, der verwendet wird, um Daten zum und vom XBee WiFi-Modul zu übertragen. Die LEDs werden in der aktuellen Implementierung des Projekts tatsächlich nicht verwendet.

Wir überspringen den Inhalt von .cydwr Datei. Diese Datei enthält die Pinbelegung für die im Schaltplan verwendeten Signale, die Takterzeugung und die Kernkonfigurationskonstanten. Wenn Sie es genauer untersuchen möchten, können Sie ein wenig nachforschen. Vieles sollte selbsterklärend sein.

Wenn wir in der Liste nach unten gehen, erreichen wir unsere Cortex-M0+-Quelldateien. Sie werden feststellen, dass die oberste Ebene in dieser Subdomain fünf Einträge enthält:„Header-Dateien“, „Quelldateien“ und drei weitere Dateien. Wir müssen uns nur mit den Inhalten der Subdomains „Header Files“ und „Source Files“ beschäftigen, und zwar nur mit einer Datei darin:der „main_cm0p.c " Datei. Hier befindet sich die Funktion main() für den Code, der auf dem Cortex-M0+-Prozessor ausgeführt wird.

Wie Sie vielleicht aus der Struktur des Arbeitsbereichs erraten haben, gibt es zwei völlig separate Codebasen, die für die beiden unterschiedlichen Kerne ausgeführt werden. „main_cm0p.c “ ist der Einstiegspunkt für den Code des Cortex-M0+-Kerns, und dann startet dieser Kern den Cortex-M4-Kern. Es existiert eine ähnliche Unterdomäne für den Cortex-M4-Kern mit ähnlichen Dateien und auch hier müssen wir uns nur um die Unterdomänen „Header-Dateien“ und „Quelldateien“ kümmern.

Schließlich haben wir den Abschnitt "Shared Files". Die meisten dieser Dateien werden automatisch generiert, speichern Sie die Datei „ipc_common.c “ und „ipc_common.h ”-Dateien. Diese Dateien sind Helfer für die Interprozesskommunikation, die für dieses Projekt entwickelt wurden.

Die Cortex-M0+-Hauptdatei

Nachdem wir nun die wichtigen Inhalte hervorgehoben haben, werfen wir einen Blick auf die wichtigen Teile des Codes, eine Datei nach der anderen, beginnend mit „main_cm0p.c . " Datei. Diese Datei verarbeitet alle Aktivitäten, die der Cortex-M0+-Kern für das System ausführt:die Überwachung der beiden Drucktasten und das Senden eines Signals an den Cortex-M4, wenn einer von ihnen gedrückt wird.

Dies ist jedoch nicht so einfach, wie es scheint, da der Cortex-M4 in der Lage sein muss, das Signal zu löschen, nachdem er es verarbeitet hat, und das bedeutet, dass mehrere Prozesse auf dieselben Daten zugreifen. Immer wenn mehrere Prozesse an demselben Dataset arbeiten, müssen Sie die Auswirkungen einer Schreibkollision berücksichtigen. Was passiert, wenn ein Prozess versucht, die Daten zu ändern, während der andere Prozess versucht, dieselben Daten zu ändern? Um dies zu bewältigen, verwenden wir einen systemgeschützten Lese- und Schreibzugriff, der im „ipc_common . eingerichtet ist ”-Dateien.

Um zu verstehen, wie dies funktioniert, muss man zuerst das Konzept eines IPC-Kanals verstehen. IPC-Kanäle verwenden Semaphoren, um Daten von einem Prozess in einen anderen zu schreiben und gleichzeitig zu garantieren, dass es keine Kollision zwischen den beiden Kernen gibt. Zu Beginn der Anwendungsausführung müssen Sie für jeden Kern Endpunkte für die während der Ausführung zu verwendenden IPC-Kanäle einrichten. Betrachten Sie diese beiden Codezeilen:
IPC_STRUCT_Type *D9IpcHandle;
D9IpcHandle =Cy_IPC_Drv_GetIpcBaseAddress(7);
Die erste erstellt einen Zeiger für eine Struktur, die die Eigenschaften eines IPC-Kanals definiert. Die zweite stellt diese Struktur tatsächlich so ein, dass sie auf einen bestimmten Speicherort zeigt, den des System-IPC-Kanals 7. Wir verwenden Kanal 7, weil die Kanäle 0-6 für die Systemnutzung reserviert sind.

Als nächstes müssen wir natürlich dem anderen Kern mitteilen, welche Speicheradresse diesem IPC-Kanal zugeordnet ist. Das macht dieser Funktionsaufruf.
while(Cy_IPC_Drv_SendMsgPtr(D9IpcHandle, CY_IPC_NO_NOTIFICATION, &D9Button) !=CY_IPC_DRV_SUCCESS);
D9Button ist eine Variable, die weiter oben im Code eingerichtet wurde. Der Funktionsaufruf ist in eine while()-Schleife eingeschlossen, da wir den Funktionsaufruf wiederholen möchten, bis wir die Bestätigung erhalten, dass der andere Prozess (d. h. der Code, der auf dem Cortex-M4-Kern ausgeführt wird) diese Informationen erhalten hat. Wir möchten auch warten, bis die Sperre der Variablen aufgehoben wird, was anzeigt, dass der Cortex-M4 den Zeigerwert gelesen hat.
while(Cy_IPC_Drv_IsLockAcquired(D9IpcHandle));
Schließlich fallen wir in unser Unendliche Schleife für die Anwendung, in der die benutzerdefinierten Funktionen ReadSharedVar() und WriteSharedVar() das Aktualisieren der gemeinsamen Variablen übernehmen, die den Schaltflächenstatus mit dem anderen Kern kommunizieren. Wir werden uns später mit diesen Funktionen befassen.

Die Cortex-M4-Hauptdatei

In der Cortex-M4 main() Funktion wiederholen wir einige der gleichen Operationen wie in der Cortex-M0+ main()-Funktion im Hinblick auf die Einrichtung des IPC-Kanals.
IPC_STRUCT_Type *D9IpcHandle;
D9IpcHandle =Cy_IPC_Drv_GetIpcBaseAddress(7);
Sobald dies abgeschlossen ist, müssen wir einen Code aufrufen, um die Nachricht abzufangen, die vom Cortex-M0+-Prozess gesendet wurde und die Adresse der gemeinsam genutzten Variablen enthält, auf die zugegriffen werden soll.
while (Cy_IPC_Drv_ReadMsgPtr (D9IpcHandle, (void *) &D9Button) =CY_IPC_DRV_SUCCESS!);
Auch hier legen wir diesen Aufruf in einer while () Schleife, so dass es immer wieder, bis die Nachricht von der gesendet wird, aufgerufen wird Kortex-M0+. Dann müssen wir die Sperre für diesen IPC-Kanal aufheben, damit der Cortex-M0+-Prozess weiß, dass er den Betrieb fortsetzen und den IPC-Kanal in Zukunft verwenden kann. Es ist nicht erforderlich, dies in eine while()-Schleife einzuschließen, da es ein offenes Ende hat:Der Aufruf muss nur einmal abgesetzt werden, um die Sperre aufzuheben, anstatt zu überprüfen, ob die Sperre freigegeben wurde, was wiederholt werden muss, bis die Die Sperre wird aufgehoben.
Cy_IPC_Drv_LockRelease(D9IpcHandle, CY_IPC_NO_NOTIFICATION);
Sobald dies alles abgeschlossen ist, müssen wir den XBee WiFi-Schild für den Zugriff auf unser lokales Netzwerk einrichten. Wir werden diesen ganzen Code hier nicht duplizieren, da er im Beispiel gut dokumentiert ist.

In der Endlosschleife, die den Anwendungscode ausführt, rufen wir erneut die benutzerdefinierten Funktionen ReadSharedVar() und WriteSharedVar() auf, um auf die Variablen mit dem Schaltflächenstatus zuzugreifen, die mit dem Cortex-M0+-Kern geteilt werden. Sehen wir uns die Funktionen dieser Funktionen genauer an.

Weitere Informationen lesen……

Verwenden des PSoC 6 Pioneer Boards mit dem Pioneer IoT Add-on Shield


Herstellungsprozess

  1. Beteiligen Sie sich mit Ihrer Wetterstation am IOT – CWOP
  2. Verwenden des gepulsten Radarsensors A111 mit einem Raspberry Pi
  3. Einfacher Einstieg in die Welt des IoT mit MQTT
  4. Roboter mit Raspberry Pi und Bridge Shield
  5. GoPiGo v2 mit Windows IoT
  6. Das Potenzial für die Integration visueller Daten in das IoT
  7. Unterwegs mit IoT
  8. Die Geheimnisse einer IoT-Infrastruktur mit einer intelligenten Stadt
  9. IoT-Welt:Ein Tag im Leben mit Vertica
  10. Mit den Lumada IoT-Plattformangeboten verbindet Hitachi die Punkte