Category Archives: scratchClient

scratchClient related things

ADS1015 als AD-Wandler am Raspberry Pi

Siehe auch
Atmel 328-Prozessor als AD-Wandler für Raspberry Pi
MCP3202-AD Wandler am Raspberry PI
Arduino UNO, NANO connected to Scratch

Die Firma adafruit vertreibt eine kleine Platine, die einen 12-Bit ADC ADS1015 enthält. Dieser hat eine eigene Referenzspannung und einen einstellbaren Verstärker. Bis zu 4 Analogkanäle können angeschlossen werden. Der nutzbare Spannungsbereich ist 0 bis 3.3V, da im Beispiel die Platine mit 3,3V betrieben wird.

Diese Platine kann zum Anschluss von analogen Sensoren mit scratch benutzt werden.

Benötigt: Steckbrett, Lötkolben, Lötzinn, Steckkabel Buchse/Stecker und einige kurze Drahtstücke. Potentiometer 2.2kOhm (hier geht auch bis 10kOhm) als Beispiel für einen Sensor.

aufbauUm die Platine an den RPi anzuschliessen ist ein Steckbrett nötig. Die Platine wird ohne montierte Steckleiste ausgeliefert, diese muss selber angelötet werden. So sieht das dann aus.

 

 

Die Verkabelung ist hier aufgezeichnet.

ads1015_bb

Hier ist das Potentiometer an den Eingang A2 angeschlossen. Es kann jeder Eingang verwendet werden, das muss dann aber auch in der Konfiguration des scratchClient berücksichtigt werden.

Vorbereitung (siehe auch die Installationsanweiung in der Dokumentation des scratchClient):

sudo apt-get python-smbus i2c-tools
sudo modprobe i2c-bcm2708
sudo modprobe i2c-dev

Die ‘i2c-tools’ sind eine Sammlung von Werkzeugen, um den i2c-Bus zu prüfen und Geräte anzusprechen. Nach der Verkabelung kann geprüft werden, ob der Baustein ansprechbar ist.

pi@raspberrypi ~ $ sudo i2cdetect 1
WARNING! This program can confuse your I2C bus, cause data loss and worse!
I will probe file /dev/i2c-1.
I will probe address range 0x03-0x77.
Continue? [Y/n] Y
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- 48 -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
pi@raspberrypi ~ $

Der ADS1015 taucht hier mit der (hexadezimalen) Adresse 0x48 im Listing auf.

Start des scratchClient:

cd ~/scratchClient
sudo python src/scratchClient.py -c config/config_adc_ads1015.xml

Scratch erhält die Werte vom scratchClient  im Bereich 0..3300 (ungefähr) als adc_A2. Das ungefähr deswegen, da der Baustein die Spannung absolut mit seiner eingebauten Referenzspannung misst. Wenn jetzt die 3.3-V-Versorgung der RPi etwas vom Sollwert 3300 mV abweicht, so weicht auch der Maximalwert ab.

Der Name ‘adc_A2’ ist in der Konfigurationsdatei so eingestellt, da im Beispiel der Kanal A2 verwendet wird.

MCP3202 AD-Wandler am Raspberry Pi

Siehe auch
Atmel 328-Prozessor als AD-Wandler für Raspberry Pi
ADS1015 als AD-Wandler am Raspberry Pi

Im Schulkurs wird eine Adapterplatine verwendet. Im Prinzip sind alle Experimente aber auch ohne diese Platine möglich.

Eine der Ausnahmen ist der Anschluss eines Potentiometers, für das ein Analog-Digital-Umwandler ‘ADC’ benötigt wird.

Der im Kurs verwendete Baustein “MCP3202 CI/P” ist im steckbaren DIP-Gehäuse erhältlich. Der Baustein kann auf dem Steckbrett benutzt werden.

ikg_adc_direkt_Steckplatine

Der Baustein  wird über den SPI-Bus angespochen. Das sind die im Diagramm verwendeten blauen Signale. Die schwarzen und roten Drähte sind die Stromversorgung des Bausteins. Der gelbe Draht ist der Spannungseingang des ADC; da ist im Aufbau ein Potentiometer angeschlossen.

Für den Aufbau der Schaltung sollte der raspberry pi ausgeschaltet sein. Die Schaltung sorgfältig aufbauen und kontrollieren.

Die für den Anschluss an scratch nötige Software ist der scratchClient, die Konfiguration ist config/config_ikg_adc.xml.

cd ~/scratchClient
sudo python src/scratchClient.py -c ikg_adc

Bei der Installation des Rechners muss der SPI-Treiber aktiviert werden.

Telefonwählscheibe für scratch

In den Tiefen meiner Bastelkiste habe ich eine alte Telefonwählscheibe gefunden.

dialplateDiese Wählscheiben waren vor der Tasten- und Mobilzeit in den Telefonen verbaut. Die Scheiben haben einen Mechanismus eingebaut, der je nach gewählter Zahl die entsprechende Anzahl oft einen Schalter öffnet (nsi-Schalter).

timing
Das Bild zeigt  eine Aufzeichnung des Timings für die Zahl ‘7’. Die Zeitdauer für einen Impuls ist ca 100ms lang. 0 bedeutet: Schalter geschlossen, 1 bedeutet: Schalter offen.

Die Aufzeichnung wurde mit dem Adapter selbst durchgeführt. Die Daten wurden in eine Datei geschrieben und dann mit libreoffice Tabellenkalkulation als Grafik dargestellt.
Ein weiterer Schalter ist geschlossen, sobald die Scheibe gedreht wird (nsa-Schalter). Dieser Schalter steuerte im obigen Bild die Aufzeichnung.
Für die Wählscheibe wurde ein Adapter für die scratchClient-Software erstellt: adapter.encoder.GPIODialPlateEncoder. Der Adapter liefert einen Wert ‘counter’.

Der Anschluss an GPIO erfordert pullup-Widerstände und ist ansonsten aber unproblematisch.

Eine Beispiel- Konfiguration ist bei der scratchClient-Software in config/config_telefonwaehlscheibe.xml enthalten.

scratch zu scratch Kommunikation

Im Schularbeitskreis sind mehrere Raspberry Pi im Einsatz, Jeder mit Scratch ausgestattet. Da liegt es nahe eine Kommunikation zwischen den Scratch-Instanzen aufzubauen.

context diagramIn dem Beispiel läuft auf einer Maschine eine Eisenbahnsimulation, die von einem zweiten Rechner aus gesteuert wird. Hier können die Weichen verstellt werden.

Auf jedem Rechner läuft der scratchClient; auf einem Rechner zusätzlich ein scratchCommunicationServer, der die Kommunikation herstellt.

Die Software für dieses Beispiel ist im Download der ScratchClient-Software enthalten.

A video, showing the software in action: