Arduino Web-Oszilloskop mit erweiterter Triggerung – 6 Kanäle, anpassbare Einstellungen
Komponenten und Zubehör
| Komponente | Menge | Hinweise |
|---|---|---|
| Arduino UNO | 1 | |
| PHPoC Shield für Arduino | 1 | mit eingebautem Webserver/WebSocket |
| Jumper-Kabel | 1 |
Über dieses Projekt
Für Einsteiger: Mehr über Arduino & WLAN erfahren.
Demonstration
(Im Original: eingebettetes Demo-Video)
Funktionen
- Unterstützt 6 Kanäle (A0–A5)
- Single-Trigger & Multi-Trigger
- Wählbare Triggermodus: fallend, steigend, beide Flanken
- Einstellbarer Triggerwert
- Zeitbasis (Time/Div) per Web-Drehregler einstellbar
- Spannungsbasis (Volt/Div) pro Kanal per Web-Drehregler
- Vertikaler Offset pro Kanal per Web-Drehregler
- Tippen/Klicken zum Ein-/Ausblenden des Einstellbereichs
- Plattformübergreifend: Windows, Linux, iOS, Android… (läuft in jedem Browser)
Benutzeroberfläche
Funktionsweise
Das Web-Oszilloskop basiert auf dem Web Serial Monitor des PHPoC Shields. Zuerst dessen Funktionsweise:
- Serial Monitor (Arduino IDE): Liest Daten vom Arduino TX-Pin per USB-Kabel.
- Web Serial Monitor (PHPoC Shield): Liest Daten vom Arduino TX-Pin über das Internet.
Im Detail: PHPoC Shield kommuniziert per SPI mit dem Arduino. Ruft der Nutzer den Web Serial Monitor im Browser auf, wird nach Laden der Seite eine WebSocket-Verbindung zum PHPoC Shield aufgebaut. Da das Shield auf dem Arduino sitzt, erfasst es Daten vom Arduino TX-Pin und sendet sie via WebSocket an den Browser. So lassen sich Daten nicht nur am PC, sondern auch auf Mobilgeräten anzeigen.
Web-Oszilloskop: Funktioniert gleich, außer der letzten Stufe: Statt Rohdaten anzuzeigen, visualisiert es die Daten als Graph. Zusätzliche Funktionen erlauben UI-Anpassung und Triggerung.
Datenformat vom Arduino:
- Arduino liest ADC-Pins (A0–A5) und Zeitstempel (Mikrosekunden).
- ADC-Werte werden in Spannung umgerechnet und mit Zeitstempel seriell ausgegeben.
- Format:
timestampvoltage_ch0 voltage_ch1 … voltage_ch5\n - Trennzeichen: Leerzeichen oder
\t. Zeilenende:\n. - Maximal 6 Kanäle, aber auch weniger möglich.
Quellcode
Zwei Teile:
- Arduino-Code (
WebOscilloscope.ino) - Web-App-Code (
oscilloscope.php) – UI-Code, muss auf PHPoC Shield hochgeladen werden (Anleitung beachten).
Anwendung
Zugriff im Browser (PC oder Smartphone): https://IP_ADRESSE/oscilloscope.php
Signal messen: Zwei Drähte – einer an GND, einer an einen analogen Pin (A0–A5). An Messpunkt anschließen.
Für 6 Kanäle bräuchte man 6 GND-Leitungen. Da Arduino nur zwei GND-Pins hat, habe ich sie wie folgt erweitert:
Das beste Arduino Starter-Kit für Einsteiger
Suchen Sie ein Arduino-Kit? Sehen Sie sich The Best Arduino Kit for Beginners an.
Funktionsreferenz
- Serial.begin()
- Serial.println()
- delay()
- millis()
- for-Schleife
- while-Schleife
- if-else
- loop() / setup()
- String.toInt() / substring() / indexOf() / remove() / equals()
Code
WebOscilloscope.ino Arduino
#include <SPI.h>
#include <Phpoc.h>
#define AREF 5.0
#define ADC_MAX 1023.0
float ratio = AREF / ADC_MAX;
void setup() {
Serial.begin(115200);
Phpoc.begin();
}
void loop() {
unsigned long time_a = micros();
float voltageChannel0 = analogRead(A0) * ratio;
float voltageChannel1 = analogRead(A1) * ratio;
float voltageChannel2 = analogRead(A2) * ratio;
float voltageChannel3 = analogRead(A3) * ratio;
float voltageChannel4 = analogRead(A4) * ratio;
float voltageChannel5 = analogRead(A5) * ratio;
Serial.print(time_a); Serial.print(" ");
Serial.print(voltageChannel0); Serial.print(" ");
Serial.print(voltageChannel1); Serial.print(" ");
Serial.print(voltageChannel2); Serial.print(" ");
// Serial.print(voltageChannel3); Serial.print(" "); // Kanal 3 optional
Serial.print(voltageChannel4); Serial.print(" ");
Serial.println(voltageChannel5); // letzter Kanal mit Newline
}
oscilloscope.php PHP (Web-App)
Der vollständige Web-App-Code ist umfangreich (HTML/CSS/JS für Canvas-Graph, WebSocket-Handling, Trigger-Logik, Drehregel-UI). Siehe Originalprojekt für die komplette Datei.
Schaltpläne
Herstellungsprozess
- Web-gesteuertes DMX-Lichtsystem – Arduino Master Controller
- 20-kHz-Arduino-Oszilloskop mit Nokia 5110 LCD – Einfacher DIY-Bau
- Bluetooth-gesteuerter Arduino-Spybot bauen – Überwachungsroboter mit IP-Kamera
- FlickMote: Gestensteuerung per Ultraschall & IR für Smart Home (Arduino 101)
- DIY Arduino TV-B-Gone: Universelle TV-Aus-Fernbedienung
- Einen eigenen LED-Master-Clock mit Alarm bauen – aus 12 Metern Entfernung ablesbar
- Find Me: Smarter Gegenstands-Finder mit Arduino und Bluetooth
- Optimierte Stromversorgungslösungen für Arduino-Projekte
- Arduino Tic Tac Toe mit MAX7219 LED-Matrix und Karton-Gehäuse
- Intelligenten Arduino-Vierbeiner-Roboter bauen: Schritt-für-Schritt-Anleitung