Herunterladen Diese Seite drucken

Werbung

SunFounder Robot HAT
www.sunfounder.com
22.12.2023

Werbung

loading

Inhaltszusammenfassung für SunFounder Robot HAT

  • Seite 1 SunFounder Robot HAT www.sunfounder.com 22.12.2023...
  • Seite 3 Inhaltsverzeichnis 1 Eigenschaften 2 Hardware-Einführung Pinbelegung ..........Pin-Belegung .
  • Seite 4 ........... F2: Kann der Robot HAT während des Ladens verwendet werden? .
  • Seite 5 Bitte klicken Sie auf die jeweiligen Links, um das Dokument in Ihrer bevorzugten Sprache aufzurufen. Das Robot HAT ist eine multifunktionale Erweiterungsplatine, die es ermöglicht, einen Raspberry Pi schnell in einen Roboter zu verwandeln. Ein MCU an Bord erweitert den PWM-Ausgang und den ADC-Eingang für den Raspberry Pi sowie einen Motorantriebschip, ein Bluetooth-Modul, ein I2S-Audiomodul und einen Monolautsprecher, sowie die GPIOs, die aus dem Raspberry Pi selbst herausführen.
  • Seite 6 SunFounder Robot HAT Inhaltsverzeichnis...
  • Seite 7 KAPITEL Eigenschaften • Abschaltstrom: < 0.5mA • Stromversorgung: USB Typ-C, 5V/2A • Ladeleistung: 5V/2A 10W • Ausgangsleistung: 5V/3A • Enthaltene Batterien: 2 x 3.7V 18650 Lithium-Ionen-Batterien, XH2.0 3P Schnittstelle • Batterieschutz: Verpolungsschutz • Ladeschutz: Eingangsunterspannungsschutz, Eingangsüberspannungsschutz, Ladebalance, Überhitzungsschutz • An Bord Ladeanzeigeleuchte: CHG •...
  • Seite 8 SunFounder Robot HAT Tab. 1: Elektrische Eigenschaften Parameter: Mindestwert: Typischer Höchstwert: Einheit: Wert: Eingangsspannung: 4.25 Batterie-Eingangsspannung: Überladungsschutz (Batterie): Eingangsunterspannungsschutz: 4.15 4.25 4.35 Eingangsüberspannungsschutz: Ladestrom (5V): Ausgangsstrom (5V): Ausgangsspannung: 5.166 5.246 5.327 Überhitzungsschutz beim Laden: °C Überhitzungsschutz DC-DC: °C Motor-Ausgangsstrom: Kapitel 1. Eigenschaften...
  • Seite 9 KAPITEL Hardware-Einführung Der Robot Hat V4 verfügt über 2 Lithium-Batterieladungen, 5V/3A DC-DC-Entladung, I2S-Audioausgang und Laut- sprecher, eine einfache Batteriestandanzeige, Mikrocontroller-basierte PWM- und ADC-Treiber sowie Motorsteuerun- gen.
  • Seite 10 • Den Strom des Robot HAT ein-/ausschalten. • Wenn Sie den Strom an den Stromanschluss anschließen, wird der Raspberry Pi hochfahren. Sie müssen jedoch den Stromschalter auf ON stellen, um den Robot HAT zu aktivieren. Type-C USB Port • Stecken Sie das Type-C-Kabel ein, um die Batterie zu laden.
  • Seite 11 SunFounder Robot HAT ADC Pin • 4-Kanal ADC-Pins, A0-A3. • Pin: ADC. • API: Klasse ADC. PWM Pin • 12-Kanal PWM-Pins, P0-P11. • Pin: PWM. • API: Klasse PWM. Left/Right Motor Port • 2-Kanal XH2.54 Motoranschlüsse. • Pin: Motoranschluss. • API: Modul motor, 1 für den linken Motoranschluss, 2 für den rechten Motoranschluss.
  • Seite 12 • Unter 7,15V schalten sich beide LEDs aus. • Batteriestandsanzeige. Speaker and Speaker Port • Speaker: Dies ist ein 2030 Audio-Kammerlautsprecher. • Speaker Port: Der Robot HAT ist mit einem Onboard-I2S-Audioausgang ausgestattet, zusammen mit ei- nem 2030 Audio-Kammerlautsprecher, der einen Mono-Soundausgang bietet. • Pin: Lautsprecher und Lautsprecheranschluss.
  • Seite 13 SunFounder Robot HAT 2.3 Digitaler IO Der Robot HAT hat 4 Sätze von 3Pin digitalen Pins. Tab. 2: Digitaler IO Robot Hat V4 Raspberry Pi GPIO17 GPIO4 GPIO27 GPIO22 2.3. Digitaler IO...
  • Seite 14 SunFounder Robot HAT 2.4 ADC Der Robot HAT verfügt über vier Sätze von 3Pin ADC (Analog-Digital-Wandler) Pins, jeweils im Abstand von 2,54 mm. Diese Pins arbeiten mit einer 3,3V Stromversorgung. Die ADC-Funktion, die eine 12-Bit-Präzision bietet, wird durch einen Mikrocontroller an Bord erleichtert. Detaillierte Anweisungen zum Lesen der ADC-Werte finden Sie im Abschnitt On-Board-MCU.
  • Seite 15 SunFounder Robot HAT Außerdem ist der ADC-Kanal A4 über einen Spannungsteiler mit Widerständen mit der Batterie verbunden, der zur Messung der Batteriespannung zur Schätzung der ungefähren Batterieladung verwendet wird. Das Verhältnis des Spannungsteilers beträgt 20K/10K, also: • A4-Spannung (Va4) = Wert_A4 / 4095.0 * 3.3 •...
  • Seite 16 SunFounder Robot HAT 2.5 PWM Der Robot HAT hat 4 Sätze von 3Pin PWM-Pins, jeweils im Abstand von 2,54 mm, und die Stromversorgung beträgt 5V. Die Methode zur Verwendung des PWM wird im Detail in On-Board-MCU beschrieben. Bemerkung: Die Kanäle PWM13 & 14 werden für den Motorantrieb verwendet.
  • Seite 17 SunFounder Robot HAT 2.6 I2C Der Robot HAT verfügt über zwei I2C-Schnittstellen. Eine davon ist die P2.54 4-Pin-Schnittstelle und die andere ist die SH1.0 4-Pin-Schnittstelle, die mit QWIIC und STEMMA QT kompatibel ist. Diese I2C-Schnittstellen sind über GPIO2 (SDA) und GPIO3 (SCL) mit der I2C-Schnittstelle des Raspberry Pi verbunden. Das Board verfügt auch über einen On-Board-MCU, und die beiden Signalleitungen haben 10K Pull-up-Widerstände.
  • Seite 18 SunFounder Robot HAT 2.7 SPI Die SPI-Schnittstelle des Robot HAT ist eine 7-Pin P2.54-Schnittstelle. Sie verbindet sich mit der SPI-Schnittstelle des Raspberry Pi und umfasst einen zusätzlichen I/O-Pin, der für Zwecke wie Interrupts oder Resets verwendet werden kann. Tab. 3: SPI...
  • Seite 19 GPIO15 (RXD) Pins des Raspberry Pi. 2.9 Tasten Der Robot HAT wird mit 1 LED und 2 Tasten geliefert, die alle direkt mit den GPIO-Pins des Raspberry Pi verbunden sind. Die RST-Taste dient bei der Verwendung von Ezblock als Taste zum Neustart des Ezblock-Programms. Wird Ezblock nicht verwendet, hat die RST-Taste keine vordefinierte Funktion und kann ganz nach Ihren Bedürfnissen an-...
  • Seite 20 SunFounder Robot HAT 2.11 Motoranschluss Der Motortreiber des Robot HAT unterstützt 2 Kanäle und kann mit 2 digitalen Signalen zur Richtungssteuerung und 2 PWM-Signalen zur Geschwindigkeitsregelung gesteuert werden. Tab. 6: Motortreiber Motor Motor1 Richtung GPIO23 Motor1 Leistung PWM13 Motor2 Richtung...
  • Seite 21 KAPITEL Über den Akku Akku • VCC: Positiver Batteriepol, hier gibt es zwei Sätze von VCC und GND, um den Strom zu erhöhen und den Widerstand zu verringern.
  • Seite 22 • Middle: Um die Spannung zwischen den beiden Zellen auszugleichen und so den Akku zu schützen. • GND: Negativer Batteriepol. Dies ist ein benutzerdefinierter Akkupack von SunFounder, bestehend aus zwei 18650 Akkus mit einer Kapazität von 2000mAh. Der Anschluss ist PH2.0-3P, der direkt nach dem Einsetzen in das Shield geladen werden kann.
  • Seite 23 KAPITEL Installieren Sie das Modul robot-hat robot-hat ist die unterstützte Bibliothek für den Robot HAT. Warnung: • Bei der Installation des Raspberry Pi OS verwenden Sie bitte die Version Raspberry Pi OS (Legacy) - Debian Bullseye. • Wenn Sie die Version Bookworm installieren, funktioniert der Speaker möglicherweise nicht korrekt.
  • Seite 24 SunFounder Robot HAT Geben Sie diesen Befehl im Terminal ein, um das Robot HAT-Paket zu installieren. git clone https://github.com/sunfounder/robot-hat.git -b v2.0 cd robot-hat sudo python3 setup.py install Bemerkung: Führen Sie setup.py aus, um einige notwendige Komponenten herunterzuladen. Es könnte ein Netzwerk- problem auftreten und der Download fehlschlagen.
  • Seite 25 SunFounder Robot HAT...
  • Seite 26 SunFounder Robot HAT Kapitel 4. Installieren Sie das Modul robot-hat...
  • Seite 27 KAPITEL Installieren Sie i2samp.sh für den Lautsprecher Das i2samp.sh ist ein ausgefeiltes Bash-Skript, das speziell für die Einrichtung und Konfiguration eines I2S (Inter-IC Sound) Verstärkers auf Raspberry Pi und ähnlichen Geräten entwickelt wurde. Unter der MIT-Lizenz lizenziert, ge- währleistet es die Kompatibilität mit einer Vielzahl von Hardware- und Betriebssystemen und führt gründliche Über- prüfungen durch, bevor mit irgendeiner Installation oder Konfiguration fortgefahren wird.
  • Seite 28 SunFounder Robot HAT Geben Sie y ein und drücken Sie Enter, um den Raspberry Pi neu zu starten. Warnung: Wenn nach dem Neustart kein Ton vorhanden ist, müssen Sie möglicherweise das i2samp.sh-Skript mehrmals ausführen. Kapitel 5. Installieren Sie i2samp.sh für den Lautsprecher...
  • Seite 29 KAPITEL On-Board-MCU Der Robot HAT ist mit einem AT32F415CBT7-Mikrocontroller von Artery ausgestattet. Es handelt sich um einen ARM Cortex-M4-Prozessor mit einer maximalen Taktfrequenz von 150 MHz. Der Mikrocontroller verfügt über 256 KB Flash-Speicher und 32 KB SRAM. Das Onboard-PWM und ADC werden vom Mikrocontroller gesteuert. Die Kommunikation zwischen dem Raspberry Pi und dem Mikrocontroller erfolgt über die I2C-Schnittstelle.
  • Seite 30 SunFounder Robot HAT from smbus import SMBus SMBus(1) # smbus only support 8 bit register address, so write 2 byte 0 first bus.write_word_data(0x14, 0x17, 0) bus.read_byte(0x14) bus.read_byte(0x14) value (msb << 6.3 PWM PWM hat ein 1-Byte-Register mit 2-Byte-Werten. 6.3.1 Ändern der PWM-Frequenz Die Frequenz wird mit Vorwähler und Periode definiert.
  • Seite 31 SunFounder Robot HAT 6.3.3 Vorteiler Register ab 0x40 dienen zur Einstellung des PWM-Vorteilers. Der Bereich umfasst 0~65535. Es gibt nur 4 Timer für alle 14 Kanäle. Siehe PWM Timer(WICHTIG) Adresse Beschreibung Timer 0 Vorteiler einstellen 0x40 Timer 1 Vorteiler einstellen...
  • Seite 32 SunFounder Robot HAT 6.3.6 Beispiel from smbus import SMBus SMBus(1) # Set timer 0 period to 4095 bus.write_word_data(0x14, 0x44, 4095) # Set frequency to 50Hz, freq # Calculate prescaler prescaler int(72000000 (4095 freq) # Set prescaler bus.write_word_data(0x14, 0x40, prescaler) # Set channel 0 to 50% pulse width bus.write_word_data(0x14, 0x20, 2048)
  • Seite 33 KAPITEL Referenz Robot Hat Bibliothek 7.1 Klasse Pin Beispiel # Import Pin class from robot_hat import # Create Pin object with numeric pin numbering and default input pullup enabled Pin(0, Pin.IN, Pin.PULL_UP) # Create Pin object with named pin numbering...
  • Seite 34 SunFounder Robot HAT (Fortsetzung der vorherigen Seite) onPressed(chn): led.value(not switch.value()) switch.irq(handler=onPressed, trigger=Pin.IRQ_RISING_FALLING) class robot_hat.Pin(pin, mode=None, pull=None, *args, **kwargs) Bases: _Basic_class Pin-Manipulationsklasse Pin-Modus Ausgang Pin-Modus Eingang IRQ_FALLING Pin-Interrupt abfallend IRQ_RISING Pin-Interrupt abfallend IRQ_RISING_FALLING Pin-Interrupt steigend und fallend PULL_UP Pin interner Pull-Up...
  • Seite 35 SunFounder Robot HAT Rückgabe Pin-Wörterbuch Rückgabetyp dict __call__(value) Pin-Wert setzen/erhalten Parameter value (int) – Pin-Wert, lassen Sie es leer, um den Wert zu erhalten (0/1) Rückgabe Pin-Wert (0/1) Rückgabetyp value(value=None) Pin-Wert setzen/erhalten Parameter value (int) – Pin-Wert, lassen Sie es leer, um den Wert zu erhalten (0/1) Rückgabe...
  • Seite 36 SunFounder Robot HAT Rückgabetyp irq(handler=None, trigger=None, bouncetime=200) Pin-Interrupt setzen Parameter • handler (function) – Callback-Funktion des Interrupt-Handlers • trigger (int) – Interrupt-Auslöser (RISING, FALLING, RISING_FALLING) • bouncetime (int) – Interrupt-Entprellzeit in Millisekunden name() Pin-Name abrufen Rückgabe Pin-Name Rückgabetyp 7.2 Klasse ADC...
  • Seite 37 SunFounder Robot HAT read() ADC-Wert lesen Rückgabe ADC-Wert (0-4095) Rückgabetyp read_voltage() ADC-Wert lesen und in Spannung umwandeln Rückgabe Spannungswert (0-3,3(V)) Rückgabetyp float 7.3 Klasse PWM Beispiel # Import PWM class from robot_hat import # Create PWM object with numeric pin numbering and default input pullup enabled...
  • Seite 38 SunFounder Robot HAT (Fortsetzung der vorherigen Seite) # Set pulse width to 2048 which is also 50% p1.pulse_width(2048) class robot_hat.PWM(channel, *args, **kwargs) Bases: Pulsweitenmodulation (PWM) REG_CHN = 32 Kanalregister-Präfix REG_PSC = 64 Vorteiler-Register-Präfix REG_ARR = 68 Periodenregister-Präfix CLOCK = 72000000.0...
  • Seite 39 SunFounder Robot HAT Rückgabetyp pulse_width(pulse_width=None) Pulsbreite setzen/abfragen, leer lassen, um die Pulsbreite zu erhalten Parameter pulse_width (float) – Pulsbreite (0-65535) Rückgabe Pulsbreite Rückgabetyp float pulse_width_percent(pulse_width_percent=None) Pulsbreitenprozentsatz setzen/abfragen, leer lassen, um den Pulsbreitenprozentsatz zu erhalten Parameter pulse_width_percent (float) – Pulsbreitenprozentsatz (0-100) Rückgabe...
  • Seite 40 SunFounder Robot HAT (Fortsetzung der vorherigen Seite) # from 500 ~ 2500 like most from SunFounder. # You can directly set the pulse width # Set servo to 1500 pulse width (-90 degree) servo0.pulse_width_time(500) # Set servo to 1500 pulse width (0 degree) servo0.pulse_width_time(1500)
  • Seite 41 SunFounder Robot HAT (Fortsetzung der vorherigen Seite) motors[2].speed(-100) # Stop all motors motors.stop() Einrichtung für die Hochlevel-Steuerung, welche Funktionen von einfachem Vorwärts-, Rückwärts-, Links-, Rechts- fahren, Stoppen bis zu komplexeren wie Joystick-Steuerung, Kalibrierung der Motorenrichtungen usw. bietet. Bemerkung: All diese Einstellungen müssen nur einmal ausgeführt werden und werden in einer Konfigurationsdatei gespeichert.
  • Seite 42 SunFounder Robot HAT property left Linker Motor property right Rechter Motor set_left_id(id) Linke Motor-ID setzen, diese Funktion muss nur einmal ausgeführt werden. Sie speichert die Motor-ID in der Konfigurationsdatei und lädt die Motor-ID, wenn die Klasse initialisiert wird. Parameter id (int) – Motor-ID (1 oder 2) set_right_id(id) Rechte Motor-ID setzen, diese Funktion muss nur einmal ausgeführt werden.
  • Seite 43 SunFounder Robot HAT turn_left(speed) Links abbiegen Parameter speed (float) – Motorgeschwindigkeit (-100,0~100,0) turn_right(speed) Rechts abbiegen Parameter speed (float) – Motorgeschwindigkeit (-100,0~100,0) 7.5.2 Klasse Motor Beispiel # Import Motor class from robot_hat import Motor, PWM, Pin # Create Motor object motor Motor(PWM("P13"), Pin("D4"))
  • Seite 44 SunFounder Robot HAT 7.6 Modul modules 7.6.1 Klasse Ultrasonic Beispiel # Import Ultrasonic and Pin class from robot_hat import Ultrasonic, Pin # Create Motor object Ultrasonic(Pin("D2"), Pin("D3")) # Read distance distance us.read() print(f"Distance: {distance}cm") class robot_hat.modules.Ultrasonic(trig: Pin, echo: Pin, timeout: float = 0.02) UltraSonic-Module __init__(trig: Pin, echo: Pin, timeout: float = 0.02)
  • Seite 45 SunFounder Robot HAT (Fortsetzung der vorherigen Seite) adxl.read(adxl.Y) adxl.read(adxl.Z) print(f"Acceleration: {x}, {y}, {z}") # Or read all axis at once x, y, z adxl.read() print(f"Acceleration: {x}, {y}, {z}") # Or print all axis at once print(f"Acceleration: {adxl.read()}") class robot_hat.ADXL345(*args, address: int = 83, bus: int = 1, **kwargs)
  • Seite 46 SunFounder Robot HAT (Fortsetzung der vorherigen Seite) # Set color with 24 bit int rgb.color(0xFF0000) # Red # Set color with RGB tuple rgb.color((0, 255, 0)) # Green # Set color with RGB List rgb.color([0, 0, 255]) # Blue # Set color with RGB hex string starts with “#”...
  • Seite 47 SunFounder Robot HAT (Fortsetzung der vorherigen Seite) import time music Music() # Create Buzzer object for passive buzzer p_buzzer Buzzer(PWM(0)) # Create Buzzer object for active buzzer a_buzzer Buzzer(Pin("D0")) Aktiver Summer piept while True: a_buzzer.on() time.sleep(0.5) a_buzzer.off() time.sleep(0.5) Passiver Summer Einfache Nutzung # Play a Tone for 1 second p_buzzer.play(music.note("C3"), duration=1)
  • Seite 48 SunFounder Robot HAT (Fortsetzung der vorherigen Seite) # loop any times you want from baby to maybe great great great grandpa! range(3): print("Measure 1") p_buzzer.play(music.note("G4"), music.beat(1/4)) p_buzzer.play(music.note("A4"), music.beat(1/4)) print("Measure 2") shark_doo_doo() p_buzzer.play(music.note("G4"), music.beat(1/8)) p_buzzer.play(music.note("A4"), music.beat(1/8)) print("Measure 3") shark_doo_doo() p_buzzer.play(music.note("G4"), music.beat(1/8)) p_buzzer.play(music.note("A4"), music.beat(1/8))
  • Seite 49 SunFounder Robot HAT 7.6.5 Klasse Grayscale_Module Beispiel # Import Grayscale_Module and ADC class from robot_hat import Grayscale_Module, ADC # Create Grayscale_Module object, reference should be calculate from the value␣ reads on white # and black ground, then take the middle as reference...
  • Seite 50 [-30, 0, -30, 0], [0, -15, 0, -40], [30, -15, 30, -40], [30, 0, 30, 0], robot.do_action("forward", step=3, speed=90) class robot_hat.Robot(pin_list, db='/root/.config/robot-hat/robot-hat.conf', name=None, init_angles=None, init_order=None, **kwargs) Bases: _Basic_class Robot-Klasse Diese Klasse dient zum Erstellen eines Servo-Roboters mit dem Robot HAT Kapitel 7. Referenz...
  • Seite 51 SunFounder Robot HAT Es gibt eine Servo-Initialisierung, alle Servos bewegen sich mit einer spezifischen Geschwindigkeit. Servo-Offset und so weiter. Es erleichtert das Erstellen eines Roboters. Alle Pi-Serie Roboter von SunFounder verwenden diese Klasse. Schauen Sie sich diese für weitere Details an.
  • Seite 52 SunFounder Robot HAT • targets (list) – Liste der Servowinkel • speed (int or float) – Geschwindigkeit der Servobewegung • bpm (int or float) – Schläge pro Minute do_action(motion_name, step=1, speed=50) Führen Sie eine vordefinierte Aktion mit Bewegungsname, Schritt und Geschwindigkeit aus Parameter •...
  • Seite 53 SunFounder Robot HAT (Fortsetzung der vorherigen Seite) music.tempo(120) music.play_tone_for(music.note("Middle C"), music.beat(1)) # Here's an example playing Greensleeves set_volume(80) music.tempo(60, 1/4) print("Measure 1") music.play_tone_for(music.note("G4"), music.beat(1/8)) print("Measure 2") music.play_tone_for(music.note("A#4"), music.beat(1/4)) music.play_tone_for(music.note("C5"), music.beat(1/8)) music.play_tone_for(music.note("D5"), music.beat(1/8 1/16)) music.play_tone_for(music.note("D#5"), music.beat(1/16)) music.play_tone_for(music.note("D5"), music.beat(1/8)) print("Measure 3") music.play_tone_for(music.note("C5"), music.beat(1/4)) music.play_tone_for(music.note("A4"), music.beat(1/8))
  • Seite 54 SunFounder Robot HAT (Fortsetzung der vorherigen Seite) music.play_tone_for(music.note("G4"), music.beat(1/4 1/8)) music.play_tone_for(music.note("G4"), music.beat(1/4 1/8)) print("Measure 10") music.play_tone_for(music.note("F5"), music.beat(1/4 1/8)) music.play_tone_for(music.note("F5"), music.beat(1/8)) music.play_tone_for(music.note("E5"), music.beat(1/16)) music.play_tone_for(music.note("D5"), music.beat(1/8)) print("Measure 11") music.play_tone_for(music.note("C5"), music.beat(1/4)) music.play_tone_for(music.note("A4"), music.beat(1/8)) music.play_tone_for(music.note("F4"), music.beat(1/8 1/16)) music.play_tone_for(music.note("G4"), music.beat(1/16)) music.play_tone_for(music.note("A4"), music.beat(1/8)) print("Measure 12") music.play_tone_for(music.note("A#4"), music.beat(1/4)) music.play_tone_for(music.note("G4"), music.beat(1/8))
  • Seite 55 SunFounder Robot HAT (Fortsetzung der vorherigen Seite) music.sound_length("file.wav") Musik abspielen # Play music music.music_play("file.mp3") # Play music in loop music.music_play("file.mp3", loop=0) # Play music in 3 times music.music_play("file.mp3", loop=3) # Play music in starts from 2 second music.music_play("file.mp3", start=2) # Set music volume music.music_set_volume(50)
  • Seite 56 SunFounder Robot HAT • top (int) – Oberer Zahlenwert der Taktart • bottom (int) – Unterer Zahlenwert der Taktart Rückgabe Taktart Rückgabetyp tuple key_signature(key: int = None) Tonart einstellen/abfragen Parameter key (int/str) – Tonart verwenden KEY_XX_MAJOR oder Zeichenkette „#“, „##“ oder „bbb“, „bbbb“...
  • Seite 57 SunFounder Robot HAT sound_play(filename, volume=None) Soundeffekt-Datei abspielen Parameter filename (str) – Name der Soundeffekt-Datei sound_play_threading(filename, volume=None) Soundeffekt im Hintergrund in einem Thread abspielen Parameter • filename (str) – Name der Soundeffekt-Datei • volume (int) – Lautstärke 0-100, leer lassen, um die Lautstärke nicht zu ändern music_play(filename, loops=1, start=0.0, volume=None)
  • Seite 58 SunFounder Robot HAT • freq (float) – Frequenz • duration (float) – Dauer in Sekunden Rückgabe Ton-Daten Rückgabetyp list play_tone_for(freq, duration) Ton für die angegebene Dauer in Sekunden abspielen Parameter • freq (float) – Frequenz, Sie können NOTES verwenden, um die Frequenz zu erhalten •...
  • Seite 59 SunFounder Robot HAT __init__(engine='pico2wave', lang=None, *args, **kwargs) TTS-Klasse initialisieren. Parameter engine (str) – TTS-Engine, TTS.PICO2WAVE oder TTS.ESPEAK say(words) Worte aussprechen. Parameter words (str) – Zu sprechende Worte. espeak(words) Worte mit espeak sprechen. Parameter words (str) – Zu sprechende Worte. pico2wave(words) Worte mit pico2wave sprechen.
  • Seite 60 SunFounder Robot HAT 7.10 Modul utils robot_hat.utils.set_volume(value) Lautstärke einstellen Parameter value (int) – Lautstärke(0~100) robot_hat.utils.run_command(cmd) Befehl ausführen und Status sowie Ausgabe zurückgeben Parameter cmd (str) – auszuführender Befehl Rückgabe Status, Ausgabe Rückgabetyp tuple robot_hat.utils.is_installed(cmd) Überprüfen, ob Befehl installiert ist Parameter cmd (str) –...
  • Seite 61 SunFounder Robot HAT Rückgabetyp str/False robot_hat.utils.reset_mcu() MCU auf dem Robot Hat zurücksetzen. Dies ist hilfreich, wenn der MCU irgendwie in einer I2C-Datenübertragungsschleife steckt und der Raspberry Pi einen IOError beim Lesen des ADC, Manipulieren des PWM usw. erhält. robot_hat.utils.get_battery_voltage() Batteriespannung abrufen Rückgabe...
  • Seite 62 SunFounder Robot HAT Parameter • db (str) – Die Datei zum Speichern der Daten. • mode (str) – Der Modus der Datei. • owner (str) – Der Eigentümer der Datei. file_check_create(file_path: str, mode: str = None, owner: str = None) Überprüfen, ob die Datei existiert, andernfalls eine erstellen.
  • Seite 63 SunFounder Robot HAT (Fortsetzung der vorherigen Seite) # Read 2 byte for MSB and LSB msb, lsb mcu.read(2) # Convert to integer value (msb << # Print the value print(value) Für weitere Informationen zum I2C-Protokoll, siehe adc.py und pwm.py class robot_hat.I2C(address=None, bus=1, *args, **kwargs)
  • Seite 64 SunFounder Robot HAT • memaddr (int) – Registeradresse Verursacht ValueError – Wenn Daten kein int, Liste oder Bytearray sind mem_read(length, memaddr) Daten von einer bestimmten Registeradresse lesen Parameter • length (int) – Anzahl der zu empfangenden Bytes • memaddr (int) – Registeradresse Rückgabe...
  • Seite 65 SunFounder Robot HAT __init__(debug_level='warning') Die Grundklasse initialisieren Parameter debug_level (str/int) – Debug-Level, 0(kritisch), 1(Fehler), 2(Warnung), 3(Info) oder 4(Debug) property debug_level Debug-Level 7.13. Klasse _Basic_class...
  • Seite 66 SunFounder Robot HAT Kapitel 7. Referenz...
  • Seite 67 KAPITEL Einige Projekte Hier finden Sie eine Sammlung faszinierender Projekte, alle umgesetzt mit dem Robot HAT. Wir stellen Ihnen detail- lierten Code zur Verfügung, der Ihnen die Möglichkeit bietet, diese Projekte selbst auszuprobieren. 8.1 Servos und Motoren steuern In diesem Projekt haben wir 12 Servos und zwei Motoren, die gleichzeitig arbeiten.
  • Seite 68 SunFounder Robot HAT from robot_hat import Servo, Motors import time # Create objects for 12 servos servos [Servo(f"P{i}") range(12)] # Create motor object motors Motors() initialize_servos(): """Set initial angle of all servos to 0.""" servo servos: servo.angle(-90) time.sleep(0.1) # Wait for servos to reach the initial position time.sleep(1)
  • Seite 69 # Control motors and servos control_motors_and_servos() 8.2 DIY-Auto Neben der Eignung für einfache Experimente ist der Robot HAT ideal als zentraler Controller in der Robotik, wie zum Beispiel für intelligente Autos, geeignet. In diesem Projekt haben wir ein einfaches linienfolgendes Auto gebaut.
  • Seite 70 SunFounder Robot HAT (Fortsetzung der vorherigen Seite) line_track.value() # If line is detected motors[1].speed(-60) # Motor 1 forward motors[2].speed(20) # Motor 2 backward time.sleep(0.01) else: # If line is not detected motors[1].speed(-20) # Motor 1 backward motors[2].speed(60) # Motor 2 forward time.sleep(0.01)
  • Seite 71 SunFounder Robot HAT Schritte 1. In diesem Projekt wird ein I2C LCD1602 verwendet, daher ist es notwendig, die relevanten Bibliotheken herun- terzuladen, damit es funktioniert. wget https://github.com/sunfounder/raphael-kit/blob/master/python/LCD1602.py 2. Installieren Sie smbus2 für I2C. sudo pip3 install smbus2 3. Speichern Sie den folgenden Code auf Ihrem Raspberry Pi und geben Sie ihm einen Namen, zum Beispiel photoresistor.ty.
  • Seite 72 SunFounder Robot HAT 8.4 Lesen vom Ultraschallmodul In diesem Projekt verwenden wir Ultraschallsensoren, um Entfernungen zu messen und die Messwerte auf dem I2C LCD1602 anzuzeigen. Schritte 1. In diesem Projekt wird ein I2C LCD1602 verwendet, daher ist es notwendig, die relevanten Bibliotheken herun- terzuladen, um es zum Laufen zu bringen.
  • Seite 73 SunFounder Robot HAT (Fortsetzung der vorherigen Seite) # Create ADC object for photoresistor ADC(0) # Create Ultrasonic object Ultrasonic(Pin("D2"), Pin("D3")) //Trig to digital pin 2, echo to pin setup(): # Initialize LCD1602 LCD1602.init(0x27, 1) # Initial message on LCD LCD1602.write(0, 0, Measuring...
  • Seite 74 SunFounder Robot HAT 8.5 Pflanzenmonitor In diesem Projekt erfassen wir sowohl die Lichtintensität als auch den Feuchtigkeitsgehalt des Bodens und zeigen diese auf dem I2C LCD1602 an. Wenn Sie denken, dass die Bodenfeuchtigkeit unzureichend ist, können Sie das Tastenmodul drücken, um die Topfpflanze zu bewässern.
  • Seite 75 SunFounder Robot HAT from robot_hat import ADC, Motors, Pin import LCD1602 import time import threading from robot_hat.utils import reset_mcu reset_mcu() time.sleep(.1) # Initialize objects light_sensor ADC(1) moisture_sensor ADC(0) motors Motors() button Pin( # Thread running flag True running init_lcd(): LCD1602.init(0x27, 1) time.sleep(2)
  • Seite 76 In diesem Abschnitt lernen Sie, wie Sie Text in Sprache umwandeln und vom Robot HAT laut aussprechen lassen. Schritte 1. Wir holen Text von der Kommandozeile ab, damit der Robot HAT ihn artikulieren kann. Um dies zu erreichen, speichern Sie den folgenden Code als eine .py-Datei, wie zum Beispiel tts.py.
  • Seite 77 # Display all supported languages print(tts.supported_lang()) 2. Um den Robot HAT eine bestimmte Satz aussprechen zu lassen, können Sie den folgenden Befehl verwenden: sudo python3 tts.py „any text“ - ersetzen Sie einfach „any text“ durch den gewünschten Satz. Bemerkung: •...
  • Seite 78 SunFounder Robot HAT (Fortsetzung der vorherigen Seite) vilib sudo python3 install.py 2. Speichern Sie den folgenden Code auf Ihrem Raspberry Pi und geben Sie ihm einen Namen, zum Beispiel security.ty. import from time import sleep, time, strftime, localtime from vilib...
  • Seite 79 SunFounder Robot HAT (Fortsetzung der vorherigen Seite) # If no motion is detected, turn off the camera elif motion_detected: print("No motion detected. Finalizing camera...") Vilib.camera_close() motion_detected False sleep(2) # Delay before re-enabling motion detection sleep(0.1) # Short delay to prevent CPU overuse destroy(): Vilib.camera_close()
  • Seite 80 SunFounder Robot HAT Kapitel 8. Einige Projekte...
  • Seite 81 9.2 F2: Kann der Robot HAT während des Ladens verwendet werden? A: Ja, der Robot HAT kann während des Ladens verwendet werden. Beim Laden wird die Eingangsleistung durch den Ladungschip verstärkt, um die Batterien zu laden, während gleichzeitig Strom für die DC-DC-Herabsetzung für den externen Gebrauch bereitgestellt wird.
  • Seite 82 SunFounder Robot HAT Kapitel 9. FAQ...
  • Seite 83 Python-Modulindex robot_hat, robot_hat.utils,...
  • Seite 84 SunFounder Robot HAT Python-Modulindex...
  • Seite 85 Stichwortverzeichnis Sonderzeichen CLOCK (Attribut von robot_hat.PWM), color() (Methode von robot_hat.RGB_LED), _Basic_class (Klasse in robot_hat.basic), __call__() (Methode von robot_hat.Pin), __getitem__() (Methode von robot_hat.Motors), debug_level (robot_hat.basic._Basic_class property), __init__() (Methode von robot_hat.ADC), __init__() (Methode von robot_hat.ADXL345), (Attribut __init__() (Methode von robot_hat.Buzzer), DEBUG_LEVELS bot_hat.basic._Basic_class), (Methode __init__() (Attribut...
  • Seite 86 SunFounder Robot HAT IN (Attribut von robot_hat.Pin), irq() (Methode von robot_hat.Pin), period() (Methode von robot_hat.PWM), IRQ_FALLING (Attribut von robot_hat.Pin), PICO2WAVE (Attribut von robot_hat.TTS), IRQ_RISING (Attribut von robot_hat.Pin), pico2wave() (Methode von robot_hat.TTS), IRQ_RISING_FALLING (Attribut von robot_hat.Pin), Pin (Klasse in robot_hat), is_avaliable() (Methode von robot_hat.I2C), play() (Methode von robot_hat.Buzzer),...
  • Seite 87 SunFounder Robot HAT set_left_id() (Methode von robot_hat.Motors), set_left_reverse() (Methode von robot_hat.Motors), set_offset() (Methode von robot_hat.Robot), set_right_id() (Methode von robot_hat.Motors), (Methode set_right_reverse() bot_hat.Motors), set_volume() (im Modul robot_hat.utils), setup() (Methode von robot_hat.Pin), sound_length() (Methode von robot_hat.Music), sound_play() (Methode von robot_hat.Music), (Methode sound_play_threading() bot_hat.Music),...