Ein Raspberry Pi PICO W mit seinen 40 Anschlüssen eignet sich besonders gut als Messinterface mit
- 8 Digital-Ausgängen
- 8 Digital-Eingängen
- 2 Analog-Eingängen
Dank der Bluetooth-Fähigkeit dieses Bausteins ist eine kabellose serielle Verbindung mit diesem Interface ohne zusätzliche Hardware direkt möglich.
Der Standard-Sketch für den Arduino berücksichtigt nun neben der USB-Verbindung auch die serielle Bluetooth-Verbindung. Mit der Datei sketch_CLAB_v3_PicoBT.ino.uf2 im Archiv CLAB_v3_PicoBT.zip (323kB) kann ein Pico W einfach zum Bluetooth CompuLAB werden, so dass alles auch auf einfachste Weise mit diesen Mikrokontrollern funktioniert. Dazu verbindet man den Pico per USB mit dem PC bei gedrücktem BOOTSEL-Button des Boards. Durch das Kopieren der uf2-Datei auf das nun erscheinende Laufwerk wird das Betriebssystem übertragen.
Der Pico W erscheint im Bluetooth-Äther unter der Kennung PicoW Serial xx:xx:xx:xx :xx:xx und muss nun mit dem zu verwendenden PC gekoppelt werden. Nach Abschluss dieser Kopplung erscheinen in Compact Red Needle zwei neue serielle Schnittstellen (z. B. COM13/COM14). Mit der höherwertigen Schnittstelle (hier COM14) kann nun die serielle Verbindung über Bluetooth in Compact Red Needle erfolgen. Die niederwertigere neue Schnittstelle reagiert nicht auf Red Needle, ein Verbindungsversuch wird erst nach längerer Zeit abgebrochen. Diese nicht benötigte niederwertigere Schnittstelle (hier COM13-Eingehend) kann unter Windows in Bluetooth-Geräte über Weitere Bluetooth Optionen im Dialog Bluetooth-Einstellungen im Tab Com-Anschlüsse als eingehende Schnittstelle entfernt werden.
Der Pico kann nun als Mess-Interface verwendet werden. Ein Klick auf die analogen Anzeigen schaltet Compact in den 3,3 Volt-Modus.
Pins am Pico W bei dieser Version:
- Digitale Ausgänge 0,1,2,3,4,5,6,7 an Pin 1,2,4,5,6,7,9,10
- Digitale Eingänge 0,1,2,3,4,5,6,7 an Pin 11,12,14,15,16,17,18,20
- Analog-Eingang A/B Pin 31/32
- PWM Pin 1
Die uf2-Datei verwandelt den Baustein in ein Interface für Compact Red Needle, wobei der Arduino-Sketch CLAB_v3 einfach mit dem Arduino-Core 3.1.0 übersetzt wurde. Geringfügige Anpassungen bei der Pinbelegung unterscheidet den Sketch für den Pico vom Arduino-Sketch. Die Bluetooth-Anpassung ist einfach angehangen, da der Pico keine Platzprobleme kennt.
/*
CLABv3 Sketch Compact Red Needle on Rasperry Pi PicoW with or without bluetooth
H. Berndt 2023, Arduino IDE 2.0.4
http://www.hjberndt.de/soft/compactRN.html
Digitale Ausgänge 0,1,2,3,4,5,6,7 an Pin 1,2,4,5,6,7,9,10
Digitale Eingänge 0,1,2,3,4,5,6,7 an Pin 11,12,14,15,16,17,18,20
Eingang A/B Pin 31/32
PWM Pin 1
*/
#include <SerialBT.h>
#define AIN1 60
#define AIN2 58
#define DIN 211
#define DOUT 81
#define PWM 64
#define PWMPIN 0
byte Douts[] = {0,1,2,3,4,5,6,7}; //PICO DIGITAL OUT PINS 0 - 7 CLAB
byte Dins[] = { 8,9,10,11,12,13,14,15 };//DIGITAL IN PINS 0 - 7 CLAB
byte Bits[] = {1,2,4,8,16,32,64,128};//BitValues
//ANALOG A0 A1
void setup() {
Serial.begin(9600); //Special CLAB
SerialBT.begin(9600);
for (int i = 0; i < 8; i++) pinMode(Douts[i], OUTPUT);
for (int i = 0; i < 8; i++) pinMode(Dins[i], INPUT); // OPEN LOW
}
void loop() {
int i, val, inbyte;
byte b;
val = Serial.available(); //Was da?
if (val > 0) {
inbyte = Serial.read(); //abholen
delay(5);
switch (inbyte) {
case 13: //CLAB ID nur ab Compact 1.75!
Serial.write(3);
delay(2);
break; //ID
case PWM:
b = Serial.read(); //Ausgabebyte holen
analogWrite(PWMPIN, b);
break;
case DIN:
for (i = 0, b = 0; i < 8; i++) //PINS to BYTE
b += (digitalRead(Dins[i]) == HIGH ? Bits[i] : 0);
Serial.write(b);
break;
case AIN1:
case 48: Serial.write(analogRead(A0) >> 2); break;
case AIN2:
case 49: Serial.write(analogRead(A1) >> 2); break;
case DOUT:
b = Serial.read(); //Ausgabebyte holen
for (i = 0; i < 8; i++)
digitalWrite(Douts[i], b & Bits[i] ? HIGH : LOW);
break;
default: break;
}
}
if (SerialBT) {
val = SerialBT.available(); //Was da?
if (val > 0) {
inbyte = SerialBT.read(); //abholen
delay(5);
switch (inbyte) {
case 13: //CLAB ID nur ab Compact 1.75!
SerialBT.write(3);
delay(20);
break; //ID
case PWM:
b = SerialBT.read(); //Ausgabebyte holen
analogWrite(PWMPIN, b);
break;
case DIN:
for (i = 0, b = 0; i < 8; i++) //PINS to BYTE
b += (digitalRead(Dins[i]) == HIGH ? Bits[i] : 0);
SerialBT.write(b);
break;
case AIN1:
case 48: SerialBT.write(analogRead(A0) >> 2); break;
case AIN2:
case 49: SerialBT.write(analogRead(A1) >> 2); break;
case DOUT:
b = SerialBT.read(); //Ausgabebyte holen
for (i = 0; i < 8; i++)
digitalWrite(Douts[i], b & Bits[i] ? HIGH : LOW);
break;
default: break;
}
}
}
delay(10);
}
|
Mittels dieser uf2-Datei kann ein RPi-PicoW auf einfachste Weise in ein Bluetooth-PC-Interface verwandelt werden, welches mit Compact genauso gut zusammenarbeitet, wie ein Arduino Uno mit HC06-Modul. Bei den Ausführungen im Buch ist lediglich die unterschiedliche Betriebsspannung zu beachten, die beim Pico nur 3,3 Volt beträgt.
Das 2022/23 erschienene Messen, Steuern und Regeln mit Arduino und Compact zeigt was mit der freien Software Compact Red Needle alles möglich ist.
|