====== Bauteile ====== Allerlei Bauteile aus meiner [[Hardwarekiste]]. ===== 5 Wege Schalter - 5 Way Switch ===== {{:schule:hardware:5way_switch.jpg?direct&300|}} ===== 7-Segment-Anzeige ===== {{:schule:hardware:7segment_front.jpg?direct&300|}} {{:schule:hardware:7segment_back.jpg?direct&300|}} Vier-stellige 7-Segmentanzeige mit einem [[https://www.mcielectronics.cl/website_MCI/static/documents/Datasheet_TM1637.pdf|TM1637]] Displaytreiber. Informationen von der Herstellerseite: >The module is a 12-foot clock with 4 points of positive digital (0.36 inches) display module driver IC TM1637, only two signal lines can make SCM four 8-segment LED. > >Module features are as follows: > > Display of male red for the four digital tube > Adjustable digital tube 8 gray > Level control interface for 5V or 3.3V > 4 M2 screws positioning holes for easy installation > > Control Interface: A total of four pins (GND, VCC, DIO, CLK), GND to ground, VCC is the power supply, DIO of data input and output pin, CLK is the clock signal pin; > > Digital tube: 4 common anode score points with 0.36 inches LED, red highlights; > > Positioning holes: 4 M2 screws positioning hole diameter is 2.2mm, the positioning of the module is easy to install, to achieve inter-module combination; Mit [[https://github.com/lawerencem/raspberrypi-python-tm1637|raspberry-pi-python-tm1637]] existiert eine Bibliothek für die Ansteuerung mit einem Raspberry Pi und Python. ===== AD633 Analog-Multiplizierer ===== {{:schule:hardware:ad633.jpg?direct&300|}} {{:schule:hardware:ad633_pinout.png}} Der [[http://www.analog.com/media/en/technical-documentation/data-sheets/AD633.pdf|AD633]] kann zwei analoge Eingangsspannungen miteinander multiplizieren und wird in einem [[https://hackaday.com/2016/06/19/make-math-real-with-this-analog-multiplier-primer/|Artikel bei Hackaday]] beschrieben. ===== Analog Joystick HW-504 ===== {{:schule:hardware:analog_stick.jpg?direct&300|}} ===== C1602A LCD-Modul ===== {{:schule:hardware:lcd.jpg?direct&300|}} Eine ausführliche Beschreibung zur Verwendung befindet sich im [[https://tbs1-bo.github.io/hardware-101/hd44780/|hardware-101 Repo]]. ===== DHT11, DHT22 - Temperatur und Luftfeuchtesensor ===== {{:schule:hardware:dht11.jpg?direct&300|}} {{:schule:hardware:dht11.pdf|Datenblatt}} ===== DS18B20 1-Wire Temperatursensor ===== {{:schule:hardware:ds18b20.jpg?direct&300|}} {{:schule:hardware:ds18b20_shield.jpg?direct&300|}} {{:schule:hardware:ds18b20_breakout.jpg?direct&300|}} Eine ausführliche Beschreibung befindet sich im [[https://tbs1-bo.github.io/hardware-101/ds18b20/|hardware 101 repo]]. ===== HC-SR501 - Infrarot Bewegungsmelder ===== {{:schule:hardware:hc_sr501.jpg?direct&300|}} Ein Bewegungssensor, in dem [[https://www.mpja.com/download/31227sc.pdf|Datenblatt]] beschrieben wird. ===== Infrarot Sender-Empfänger (Sender/Receiver) ===== {{:schule:hardware:ir-sender-receiver.jpg?direct&300|}} Infrarot-Module, die zum Beispiel mit dem [[https://www.mysensors.org/build/ir|MySensors]]-Projekt über einen Arduino-µC oder das Linuxprojekt [[http://www.lirc.org/|LIRC]] angesteuert werden können. ===== LED Matrix (5x7 und 8x8) ===== {{:schule:hardware:ledmatrix.png|}} {{:schule:hardware:led_head_wemosd2mini_front.jpg?direct&300|}} {{:schule:hardware:led_head_wemosd2mini_back.jpg?direct&300|}} Die LEDs werden mit einem Vorwiderstand von 220 Ohm betrieben. Jede LED ist über eine Zeile und Spalte ansteuerbar. Insgesamt werden 5+7=12 GPIO für die Ansteuerung benötigt. Weitere Informationen stehen im [[https://tbs1-bo.github.io/hardware-101/led_matrix/|hardware-101 Repo]]. Die Bilder zeigen ein [[https://wiki.wemos.cc/products:d1_mini_shields:matrix_led_shield|LED-Shield für einen Wemos D2 Mini]]. Für die Ansteuerung des 8x8-Shields mit Micro-Python ist eine [[https://github.com/mcauser/micropython-tm1640|Bilbiothek]] vorhanden. In dem Projekt [[https://github.com/pintman/ledbadge|ledbadge]] kommt dies etwas zum Einsatz. ===== LED-Taster ===== {{:schule:hardware:led_taster.jpg?500|}} ===== LM75 Temperatursensor ===== {{:schule:hardware:lm75-pins.png?direct&300|}} Eine ausführliche Beschreibung ist im [[https://tbs1-bo.github.io/hardware-101/lm75/|hardware-101 Repo]] verfügbar. ===== MCP23017 Portexpander ===== {{:schule:hardware:mcp23017.jpg?direct&300|}} Der MCP23017 ist ein Portexpander, mit dem Anzahl der verfügbaren GPIOs an einem [[schule:Raspberry Pi]] vergrößert werden kann. Das [[https://cdn-shop.adafruit.com/datasheets/mcp23017.pdf|Datenblatt]] des MCSP23017 beschreibt die Belegung der Pins. Er wird über einen I²C-Bus angesprochen. {{:schule:hardware:mcp23017-pinout.png?direct&300|}} Über verschiedene Registeradressen können unterschiedliche Funktionen angesteuert werden. {{:schule:hardware:mcp23017-register.png?direct&600|}} Wichtig sind die mit einem roten Punkt markierten Register. Für Pins aus der Bank A bzw. B stehen jeweils eigene Befehle zur Verfügung. Mit den Registern IODIRA und IODIRB können die Pins als Eingabe- oder Ausgabe-Pins konfiguriert werden (0=out, 1=in). Mit den Registern OLATA und OLATB kann auf den Pins eine Ausgabe erzeugt werden. Die Register GPIOA und GPIOB können schließlich verwendet werden, um von den Pins zu lesen. ==== Zugriff mit i2ctools ==== Um den Baustein mit dem [[schule:Raspberry Pi]] zu verwenden, muss zunächst der I²C-Overlay aktiviert werden in den Einstellungen von ''raspi-config''. Evt. muss mit ''modprobe i2c-dev'' noch ein Kernelmodul geladen werden. Nun wird das Paket ''i2c-tools'' installiert, um mit [[debman>i2cdetect]] auf den Bus zugreifen zu können. $ i2cdetect -y 1 scannt den Bus nach verfügbaren Geräten ab. Dort sollte der Baustein auftauchen - z.B. an Adresse 0x20. Diese Adresse werden wir in den folgenden Befehlen jeweils mitsenden. $ i2cset -y 1 0x20 0x00 0xFE konfiguriert mit [[debman>i2cset]] den Pin IO0 (0xFE ist binär 1111 1110) als Ausgang. Nun können wir ein Signal senden. $ i2cset -y 1 0x20 0x14 0x01 sendet eine 1 an den Pin IO0. $ i2cget -y 1 0x20 0x12 liest mit [[debman>i2cget]] die Eingänge in Bank A aus. Aus dem Hexwert lässt sich dann der Status eines Pins herauslesen, wenn man den Wert als Binärtwert betrachtet. ==== Zugriff mit Python ==== Für den Zugriff mit Python wird das Paket ''python3-smbus'' benötigt. import smbus bus = smbus.SMBus(1) adresse = 0x20 bus.write_byte_data(adresse, 0x00, 0xFE) bus.write_byte_data(adresse, 0x14, 0x01) wert = bus.read_byte_data(adresse, 0x12) ===== NE555 Timer ===== {{:schule:hardware:ne555_blockdiagram.png?direct&300|}} Der Klassiker unter den ICs. In [[https://archive.org/download/Forrest_Mims-engineers_mini-notebook_555_timer_circuits_radio_shack_electronics/Forrest%20Mims-engineer's%20mini-notebook%20555%20timer%20circuits%20(radio%20shack%20electronics).pdf|Engineer's Mini-Notebook – 555 Timer IC Circuits]] werden viele Grundschaltungen beschrieben. Einige Schaltungen können in einem [[http://www.falstad.com/circuit/|Simulator]] nachvollzogen werden. ===== MPU6050 Beschleunigungssensor und Gyrometer ===== Der [[http://playground.arduino.cc/Main/MPU-6050|MPU 6050]] ist ein Beschleunigungssensor und Gyrometer, der sich über I²C auslesen lässt. Eine Beschreibung befindet sich im [[https://tbs1-bo.github.io/hardware-101/mpu6050/|hardware-101 Repo]]. ===== NRF24L01+PA+LNA ===== {{:schule:hardware:nrf24l01.jpg?direct&300|}} {{:schule:hardware:nrftop.png?direct&300|}} {{:schule:hardware:nrf2401l01-pa-lna.jpg?direct&300|}} Funksender mit und ohne Antenne - {{:schule:hardware:nrf24l0plus.pdf|Datenblatt}}. Der Funksender wird z.B. im Projekt [[https://www.mysensors.org|MySensors]] verbaut. ===== Power Converter DC 0,8-3,3V zu DC 3,3V ===== {{:schule:hardware:power_converter_to_3.3v.jpg?direct&300|}} Power Converter, der Signale unterhalb von 3.3V auf 3.3V hoch regelt. {{:schule:hardware:power_converter_to_3v.pdf|Datenblatt bzw. Shop-Beschreibung}} ===== RFID ===== {{:schule:hardware:rfid.jpg?direct&300|}} Ein RFID-Lesegerät, das die gelesene Seriennummer über die serielle Schnittstelle ausgibt. ===== RGB-LED ===== {{:schule:hardware:rgb_led.jpg?direct&300|}} {{:schule:hardware:rgb_led_pinout.png?direct|}} Jeder Farb-Pin muss über einen Vorwiderstand angeschlossen werden. Die Farben können über PWM kombiniert werden. Eine [[http://wiring.org.co/learning/basics/rgbled.html|Beispielbeschaltung]] zeigt eine mögliche Verwendung. ===== Servomotor ===== {{:schule:hardware:schrittmotor.jpg?direct&300|}} Eine Beschreibung zur Verwendung befindet sich im [[https://tbs1-bo.github.io/hardware-101/servo/|hardware-101 repo]]. ===== SN74HCT125N - Spannungswandler ===== {{:schule:hardware:sn74ahct125n.jpg?direct&400|}} Spannungswandler z.B. zum Ansteuern von [[#ws281x_led-controller|WS281x]] LEDs. ===== SN74HCT245N - 8-fach Sende-Empfänger ===== {{:schule:hardware:sn74hct245.png?direct&300|sn74hct245}} Der [[http://www.ti.com/lit/ds/symlink/sn74hct245.pdf|SN74HCT245N]] ist ein 8-fach Sende-Empfänger für eine Zwei-Wege-Kommunikation. ===== SN74HC595N 8Bit Shiftregister ===== {{:schule:hardware:sn74hc595n_8bitshiftregister.jpg?direct&300|}} Ein Schieberegister, über das mehrere Werte gleichzeitig ausgegeben werden können, nachdem sie in das Register geschoben wurden. Im [[https://tbs1-bo.github.io/hardware-101/74HC595/|hardware-101 Repo]] existiert eine ausführliche Beschreibung. ===== Sound Detector ===== {{:schule:hardware:sound_detector.jpg?direct&400|}} Sound Detector, der über einen analogen Pin (AO) einen Schallpegel ausgibt und über den digitalen Pin (DO) die Überschreitung eines mit einem Potentiometer einstellbaren Schwellwertes signalisiert. ===== SSD1306 128x64 OLED-Display ===== {{:schule:hardware:ssd136.jpg?direct&300|}} Das Display kann über [[https://github.com/adafruit/Adafruit_Python_SSD1306|eine high-level Python-Bibliothek für den Raspberry Pi]]((Leider liegt die Bibliotheken nur für Python2 vor.)) oder eine [[https://github.com/micropython/micropython/tree/master/drivers/display|low-level Bibliothek für den ESP8266/ESP32]] angesteuert werden. Da die Displays auch von Adafruit vertrieben werden, gibt es dort eine ausführliche [[https://learn.adafruit.com/ssd1306-oled-displays-with-raspberry-pi-and-beaglebone-black?view=all|Anleitung]]. {{:schule:hardware:ssd1306_an_pi.png?direct&500|}} Die Adresse auf der Rückseite des Displays zeigt zwar 0x78 an (vgl. das obige Bild), die I²C-Adresse ist jedoch 0x3C oder 0x3D. Eine Erklärung habe ich [[http://robotcantalk.blogspot.de/2015/03/interfacing-arduino-with-ssd1306-driven.html|hier]] gefunden: > The back of the PCB shows that the 0x78 jumper has been soldered. The sheet says that the slave adress is a 7-bit code that can be either 0x3C (011-1100) or 0x3D (011-11001), based on the SAO bit (LSB of the adress). The SAO bit can be controlled by the D/C# pin of the SSD1306 (not to be confused with the D/C# bit of the control byte in the above image!). I guess, heltec must have soldered the pin to GND. Moreover, since, the OLED will always be interfaced in WRITE mode, the I2C First Byte will be the 7-bit SLA and the WRITE mode bit (0) - which becomes the byte, 0x78. Ha! Bei Problemen mit Timeouts auf dem I²C-Bus hilft folgender Hinweis: > If you get I2C timeouts, you may need to add two 4.7 kOhm resistors, one from SDA to 3.3v, and one from SCL to 3.3v. > [[http://www.espruino.com/SSD1306|Quelle]] Weitere Infos zu dem Display im [[https://hw101.tbs1.de/ssd1306/|hw101]]. ===== WS281x LED-Controller ===== {{:schule:hardware:ws2812b_led_strip.jpg?direct&300|}} Eine ausführliche Beschreibung der WS2811 bzw. WS2812 LEDs befindet sich im [[https://tbs1-bo.github.io/hardware-101/ws281x/|hardware-101 Repo]]. * [[https://github.com/pintman/flaschenwand|flaschenwand]] nutzt die LEDs, um eine Wand aus Getränkekisten anzusteuern. * [[https://blog.bakera.de/wlampe.html|WLampe]] nutzt die LEDs, um eine einfache Ikea-Lampe damit zu steuern.