#Expansionboard
Explore tagged Tumblr posts
draegerit · 1 year ago
Text
Calliope Mini 3 Tutorial: 360° Servomotor mit MakeCode programmieren
Tumblr media
In diesem Beitrag möchte ich dir zeigen, wie du einen 360° Servomotor am Calliope Mini 3 mit MakeCode programmieren kannst. Das Onlinetool MakeCode macht es gerade Anfänger leicht in die Programmierung zu starten und schnell Ziele zu erreichen. https://youtu.be/RT3YceZkWiw
Bezug eines 360° Servomotors
Auf der Plattform ebay.de bekommst du recht günstig die Servomotoren mit 360° Drehung in unterschiedlichen Leistungsstärken. Ich habe mich für einen einfachen, kleinen Servomotor entschieden, welcher lediglich 8 € inkl. Versand gekostet hat. Wenn du mehr sparen möchtest, dann empfehle ich dir die Plattform aliexpress.com
Anschluss des Servomotors an den Calliope Mini 3
Der Servomotor benötigt eine Spannung von 4,8V bis maximal 6V. Jedoch liefert der Calliope Mini 3 lediglich 3,3V über die Pins, d.h. wir benötigen eine externe Stromversorgung, welche uns die Spannung für den Servomotor liefert.
Tumblr media
Schaltung - Calliope Mini 3 mit 360° Servomotor In meinem Fall nutze ich ein Expansionsboard mit einem LiPo-Akku vom Typ 18650. Dieses kleine Board liefert wie eine Powerbank 5V und kann über einen extra Mikro-USB Anschluss geladen werden.
Tumblr media
LiPo Batterie 18650 mit Expansionboard für 5V und 3V Der Calliope Mini 3 verfügt über zwei Taster (A & B) und ein Touch-Feld (das Logo auf der Rückseite) diese drei Sensoren möchte ich nutzen um den Servomotor vorwärts, rückwärts und auch zu stoppen. Hier das Pinout der Pinleiste des Calliope Mini 3.
Tumblr media
Pinout der Buchsenleiste am Calliope Mini 3 Nachfolgend findest du eine kleine Tabelle, wie die Schaltung aufgebaut wird. BauteilCalliope Mini 3ext. Spannungsversorgungext. SpannungsversorgungGNDGND360° ServomotorDATAP0VCC5VGNDGND
Programmieren des 360° Servomotors am Calliope Mini 3 mit MakeCode
Kommen wir nun dazu und erstellen das kleine Programm zum steuern des 360° Servomotors in MakeCode. Der Vorteil von MakeCode ist wie bereits erwähnt, dass du den Code mit Blöcken erstellst und so keine Zeile umständlichen Code schreiben musst. Zum steuern des Servomotors benötigen wir eine Erweiterung, diese heißt "ContinuousServo" und diese kannst du dir recht einfach über den Menüpunkt Erweiterungen (1) laden. Danach suchst du nach "servo" (2) und wählst aus den Suchergebnissen "continuous-servo" (3) aus.
Tumblr media Tumblr media
Diese Bibliothek liefert dir alle Bausteine zum steuern des Servomotors. Du kannst bestimmten, in welche Richtung der Servo sich drehen soll (spin one way, spin other way) und an welchem Pin dieser angeschlossen ist. Zum stoppen des Servomotors nutzt du den Block "tun off motor". Zusätzlich kannst du auch bestimmen, mit welcher Geschwindigkeit dieser Motor sich drehen soll.
Tumblr media
Wie erwähnt möchte ich die beiden Taster A & B nutzen, um den Servo vorwärts bzw. rückwärts laufen zu lassen. Das Logo auf der Rückseite des Calliope Mini ist ein kapazitiver Touch Sensor und kann ebenso als Taster verwendet werden und dient in meinem Code zum Stoppen des Sensors.
Tumblr media
Programm in MakeCode zum steuern eines 360° Servomotors am Calliope Mini 3 Nachfolgend den Code zum Importieren in MakeCode. Programm - Calliope Mini 3 mit 360° ServomotorHerunterladen
Erweitern der Schaltung zum Regeln der Geschwindigkeit
Die verwendete Bibliothek erlaubt es auch, die Geschwindigkeit des Servomotors zu regeln. Der Calliope Mini 3 hat mehrere analoge Pins (P0, P1, P2, C4, C10, C16, C18), an welche wir jeweils einen Drehpoti anschließen können, somit können wir theoretisch die Vorwärts-Rückwärtsbewegung separat steuern. Exkurs - Drehpotentiometer auslesen Zunächst möchte ich dir kurz erläutern, wie du einen Drehpotentiometer am Calliope Mini 3 auslesen kannst. Ein Drehpotentiometer ist ein Bauteil mit variablem Widerstand, diesen Widerstand veränderst du durch das Drehen eines kleinen Rades. Es gibt diese Bauteile in unterschiedliche Arten und Ausführen und auch Größen. Ich empfehle dir ein Drehpotentiometer mit Grove Schnittstelle. Es gibt aber auch Drehpotis für welche du zusätzlich ein kleines Breadboard benötigst.
Tumblr media
verschiedene Drehpotentiometer Ein Drehpotentiometer wird an einen analogen Pin angeschlossen und liefert einen Wert zwischen 0 und 1023 bzw. es wird ein Wert abgelesen. Mit diesem Bauteil können wir nun zum Beispiel die Helligkeit einer LED regeln oder auch wie hier die Geschwindigkeit eines Motors. In den meisten Fällen müssen wir jedoch den gelesenen Wert auf eine andere Range von Werten mappen. Das bedeutet, dass wir im Fall der Helligkeit einer LED die Range des Drehpotis von 0 bis 1023 auf 0 bis 255 und im Fall unseres Servomotors auf 0 bis 100 mappen müssen. Das geht in MakeCode mit dem Baustein "verteile" aus dem Eintrag "Mathematik".
Tumblr media
Ein Drehpotentiometer zum Regeln der Geschwindigkeit für Vorwärts- / Rückwärtsdrehung Der Calliope Mini 3 hat am Anschluss A1 und Pin C16 einen analogen Eingang, an diese Schnittstelle können wir einen Grove Drehpotentiometer anschließen.
Tumblr media
Pinout der Grove Schnittstellen am Calliope Mini 3
Tumblr media
Schaltung - Calliope Mini 3 mit 360° Servomotor & Drehpotentiometer Das Programm habe ich etwas anders aufgebaut als zuvor, denn wir möchten ja den Drehpotentiometer auch nutzen, wenn sich der Servo gerade dreht.
Tumblr media
Programm zum steuern der Geschwindigkeit eines 360° Servomotors mit einem Drehpotentiometer Hier der Code zum Download und importieren in MakeCode. Programm zum steuern der Geschwindigkeit eines 360 Grad Servomotors am Calliope Mini 3 mit einem DrehpotentiometerHerunterladen Read the full article
0 notes
draegerit · 1 year ago
Text
Calliope Mini 3 Tutorial: 2WD Chassis selbst steuern – Einsteigerfreundliches Tutorial
Tumblr media
Im letzten Beitrag habe ich dir gezeigt, wie man am Calliope Mini DC-Motoren anschließt und steuern kann, hier soll es nun darum gehen, wie du ein 2WD Chassis vom Calliope Mini selbst steuern lassen kannst. https://youtu.be/zNinK-GcHq0
Benötigte Ressourcen
Für diesen Beitrag verwende ich: - einen Calliope Mini 3, - ein USB-C Datenkabel, - einen Ultraschallabstandssensor HC-SR04 mit Grove-Schnittstelle, - ein Grove Anschlusskabel, - ein LiPo Batteriemodul 18650 (mit passendem LiPo Akku), - ein kurzes USB-C-Kabel, - ein 2WD Chassis Zusätzlich verwende ich noch ein kleines Anschlusspaneel für die Motoren. Mit diesem Paneel ist es einfacher möglich, die Litzen von den Motoren mit Breadboardkabel zu verbinden (alternativ kannst du auch kleine Lüsterklemmen verwenden). Unterschiede zwischen den Ultraschallabstandssensoren HC-SR04 Auf dem Markt gibt es diverse Arten von Ultraschallabstandssensoren, zum einen mit Grove-Schnittstelle und mit Stiftleisten.
Tumblr media
Ultraschallabstandssensor HC-SR04 mit Grove-Schnittstelle
Tumblr media
Ultraschallabstandssensor HC-SR04 mit Stiftleiste Es gibt bei diesen Sensoren zwei Unterschiede, zum einen hat der Sensor mit Grove-Schnittstelle nur einen Daten Pin und zum anderen arbeitet dieser Sensor mit einer Spannungsversorgung von 3,2 V bis 5,2 V. Der andere Sensor mit Stiftleisten hat eine Betriebsspannung von 5 V. Da der Calliope Mini lediglich 3V liefert, müssen wir auf den Sensor mit Grove-Schnittstelle zurückgreifen!
Wie funktioniert ein Ultraschallabstandssensor?
Ein Ultraschallabstandssensor besteht aus einer Sendeeinheit (Trigger) und einer Empfangseinheit (Echo). Der Sensor sendet ein Ultraschallsignal als Triggersignal aus, und wenn dieses Signal auf einen Gegenstand trifft, wird es reflektiert und als Echo zurückgesendet.
Tumblr media
Funktionsweise eines Ultraschallabstandssensors Durch die Messung der Zeit, die das Signal benötigt, um zum Objekt und zurück zur Empfangseinheit zu gelangen, kann der Sensor den Abstand zum Gegenstand präzise berechnen. Diese Abstandsmessung erfolgt in Zentimetern und ermöglicht dem Ultraschallabstandssensor, in Echtzeit genaue Informationen über die Entfernung zu einem Objekt zu liefern.
Anschluss des Ultraschallabstandssensors via Grove-Schnittstelle an den Calliope Mini 3
Der Ultraschallabstandssensor verfügt wie bereits mehrfach erwähnt über eine Grove-Schnittstelle, diese hat den Vorteil, dass man mit einem vorkonfektioniertem Kabel diesen an den Calliope Mini anschließt und somit wenig Fehler beim Verkabeln machen kann. Dieser Stecker passt auch nur in eine Richtung gewallt frei in die Buchse!
Tumblr media
Grove-Schnittstelle A1 am Calliope Mini 3 Schauen wir uns kurz das Pinout des Mikrocontrollers an, dort sehen wir, dass die zwei Grove-Buchsen an den Pins "A0" C20, & C19, sowie "A1" C16 & C17 angeschlossen sind.
Tumblr media
Pinout des Calliope Mini 3
Stromversorgung für das 2WD Chassis mit Calliope Mini 3 und Ultraschallabstandssensor
Dem Calliope Mini 3 liegt ein Batteriefach für 2 AA-Batterien bei und damit kann man diesen unabhängig vom USB-Kabel (Verbindung zum PC) betreiben. Jedoch reicht die Leistung für das 2WD Chassis nicht aus und das Gefährt hat keine Leistung. Hier habe ich als externe Stromquelle eine LiPo Batterie vom Typ 18650 mit 8800mAh und ein entsprechendes Expansionsmodul genommen.
Tumblr media
LiPo Batterie 18650 mit Expansionboard für 5V und 3V Es gibt die Expansionboards für 1,2 und 4 LiPo Batterien und auch haben diese zusätzlich eine Micro-USB oder USB-C Schnittstelle um gleich auch die LiPO-Batterie zu laden. Vorsicht beim Umgang und der Lagerung von LiPo Batterien Umgang mit LiPo-Batterien: - Vorsicht vor Überladung: Verwende nur passende Ladegeräte und halte dich an empfohlene Ladespannungen. - Überhitzung vermeiden: Achte darauf, dass die Batterien nicht überhitzen, sowohl während des Ladens als auch bei der Verwendung. - Korrekte Verbindung: Stelle sicher, dass die Batterien korrekt mit dem Gerät verbunden sind, um Kurzschlüsse zu verhindern. Lagerung von LiPo-Batterien: - Kühler, trockener Ort: Bewahre die Batterien an einem kühlen, trockenen Ort auf, um ihre Lebensdauer zu erhalten. - Teilentladung vor Lagerung: Lagere die Batterien bei etwa 50 - 60 % ihrer Kapazität, um Selbstentladungseffekte zu minimieren. - Schutz vor Beschädigung: Vermeide physische Schäden, indem du die Batterien sicher aufbewahrst und nicht lose in Taschen oder Schubladen lagerst. - Regelmäßige Überprüfung: Untersuche die Batterien regelmäßig auf äußere Schäden. Bei Rissen oder Schwellungen sollte die Batterie nicht mehr verwendet werden. Diese Tipps helfen, LiPo-Batterien sicher zu verwenden und ihre Lebensdauer zu maximieren. Beachte immer die Herstelleranweisungen und handle im Zweifelsfall sicherheitsbewusst.
Aufbau des 2WD Chassis, damit der Calliope Mini 3 es selbst steuern kann
Nachdem ich dir einige Grundlagen vermittelt habe, möchte ich in das eigentliche Thema einsteigen und dir erläutern, wie du den Calliope Mini 3 so programmierst, dass dieser ein 2WD Chassis selbst steuern kann. Für das selbstständige steuern haben wir einen Ultraschallabstandssensor angeschlossen, so kann dieser seine Umgebung wahrnehmen und auf Objekte reagieren. Das ist auch die einfachste Form, um solch ein Gefährt fahren zu lassen. Anschluss der Stromversorgung Die Stromversorgung erfolgt hier nun via USB-C Schnittstelle und der zuvor gezeigten LiPo-Batterie, du klemmst also nicht mehr das Batteriefach an den Calliope an. Auch entfällt bei dieser Art der Stromversorgung der Anschluss für die Motoren!
Tumblr media
DC-Motoren mit dem Calliope Mini verbinden Wie im letzten Beitrag bereits gezeigt, habe ich mir eine kleine Anschlusspaneele gelötet, mit welcher ich die Litzen, welche von den DC-Motoren kommen, einfach auf Buchsenleisten via Schraubklemmen umleiten kann. Das macht das Anschließen deutlich einfacher, da so die Kabel besser und sicherer mit dem Mikrocontroller verbunden werden.
Tumblr media
Programmieren in MakeCode
Jetzt ist die kleine Schaltung aufgebaut und wir können mit der Programmierung starten. Aber Achtung, denn sobald wir den Code auf den Mikrocontroller hochladen, fährt dieser los! Wir müssen also entweder unser 2WD Chassis so positionieren, dass die Räder frei drehen können oder es einfach beim Hochladen des Codes mit der Hand anheben. Alternativ kannst du auch einen der beiden Taster als EIN/AUS Signal für die Schaltung nutzen und so die Motoren deaktivieren.
Tumblr media
MakeCode Programm - 2WD Chassis autonom fahren Geschwindigkeit vs. Reaktionszeit Im Code (sieh Bild) habe ich die Motoren auf 35 % laufen lassen. Dieses ist, wie ich finde, ein sehr guter Wert, sodass der Mikrocontroller genug Zeit hat auch auf Objekte zu reagieren. Solltest du die Geschwindigkeit erhöhen, so musst du auch den Wert für den Abstand erhöhen! Download des Codes als HEX-Datei Damit du den Code nicht nachbauen musst, kannst du dir diesen nachfolgend einfach als HEX-Datei herunterladen und danach importieren. Programm - Calliope Mini 3 - 2WD Chassis autonom fahren lassenHerunterladen
Fazit & Ausblick
Mit einem Ultraschallabstandssensor kannst du recht einfach ein 2WD Chassis mit dem Calliope Mini 3 selbst steuern lassen. Im nächsten Beitrag möchte ich dir dann gerne zeigen wie du eine Linie folgen kannst, dazu benötigen wir dann einen anderen Sensor, welcher auf Licht bzw. Helligkeitsunterschiede reagiert. Hast du noch weitere Ideen oder Fragen? Dann schreibe mir diese in die Kommentare oder per Mail an [email protected]. Read the full article
0 notes
draegerit · 2 years ago
Text
Vergleich Raspberry Pi Pico & RP2040:bit
Tumblr media
Wo die Unterschiede zwischen dem Raspberry Pi Pico und dem RP2040:bit liegen, möchte ich dir in diesem Beitrag zeigen.
Tumblr media
Den Raspberry Pi Pico bekommst du seit dem Februar 2022 mit einem WiFi Chip und damit bekam dieser zusätzlich noch die Fähigkeit in einem Netzwerk zu agieren. In diesem Beitrag möchte ich jedoch das Vorgängermodell zu einem Vergleich heranziehen, denn dieser ist für einen fairen Vergleich besser geeignet.
Tumblr media
Raspberry Pi Pico
Tumblr media
RP2040:bit
Verfügbarkeit der Mikrocontroller
Den Raspberry Pi Pico bekommst du in den einschlägigen elektronik Shops für wenig Euros, den RP2040:bit bekommst du derzeit lediglich auf ebay.de und aliexpress.com. MikrocontrollerShopPreisVersandkostenRaspberry Pi Picohttps://www.reichelt.de/4,55 €5,95 €https://www.berrybase.de/4,10 €3,95 €https://de.elv.com/4,65 €3,99 €RP2040:bithttps://de.aliexpress.com/12,60 €-https://www.ebay.de/14,01 €- Aus der Tabelle können wir nun entnehmen, dass der RP2040:bit knapp das Dreifache des Pi Pico kostet.
Vergleich der Features
Kommen wir jetzt zu den Features, die technischen Daten brauchen wir nicht vergleichen, denn es ist derselbe Chip verbaut und somit ist von Speicher, Schnittstellen etc. keine Unterschiede zu verzeichnen. Pins Der RP2040:bit jedoch verfügt über einen 20 poligen Randstecker über welchen wir die Kontakte entweder mit Bananenstecker, Krokoklemmen oder einer speziellen (leider separat zu erwerbenden) Klemme abgreifen können.
Tumblr media Tumblr media Tumblr media
Der Raspberry Pi Pico verfügt über 40 Pins im Rastermaß von 2,54 mm. Es gibt den Pi Pico auch ohne vor gelötete Header und somit kannst du wählen, ob du Stift oder Buchsenleisten auf diesen lötest.
Zusätzliche Features des RP2040:bit
Der RP2040:bit verfügt auf der Vorderseite über zwei freiprogrammierbare Taster und eine 5x5 LED Matrix.
Verfügbare Sensoren & Aktoren
Für beide Mikrocontroller gibt es eine Fülle an Sensoren & Aktoren. Wenn du dir den Aufbau einer Schaltung erleichtern möchtest, dann gibt es für beide spezielle Boards. Ein solches Board habe ich mir bereits für den Pi Pico selbst gelötet und im Beitrag DIY Expansion Board für Raspberry PI Pico mit Grove Adapter vorgestellt.
Tumblr media
Raspberry Pi Pico W auf DIY Expansionboard
Tumblr media
Expansion Board für den BBC micro:bit Die Erweiterungsplatine für den BBC micro:bit war Bestandteil des Microbit Starter Kit welchen ich dir ebenso im Beitrag Vorstellung Microbit Starter Kit für den BBC micro:bit ausführlich vorgestellt habe.
Anwendungsgebiete
Den RP2040:bit sehe ich eher im Bereich Schulungen und Weiterbildung, denn dieser hat durch seine vielzählige Möglichkeit, mit einem entsprechenden Expansionboard die Möglichkeit schneller Schaltungen zu entwerfen. Der Pi Pico ist eher im professionellen / prototypen Bereich zu sehen, denn dieser hat mit seinen 40 Pins und dem Rastermaß von 2,54 mm die Möglichkeit auf Lochraster / Streifenraster Platinen gesteckt zu werden.
Programmieren der Mikrocontroller
Die beiden Mikrocontroller können in Micropython, Circuitpython und in der Arduino IDE programmiert werden. Damit hast du Stand heute einen sehr guten Support von Programmiersprachen (Python & C/C++) und eine breite Community. Für die Programmierung in Micropython empfehle ich dir die Thonny IDE. Dieses Tool ist sehr leichtgewichtig, aber bietet trotzdem den vollen Funktionsumfang einer guten Entwicklungsumgebung. Auf der Seite https://forums.raspberrypi.com/ findest du ein Forum wo du dir Hilfe rund um den Pi Pico einholen kannst, und da der RP2040:bit voll kompatibel ist, kann dir dort auch bei diesem geholfen werden. Read the full article
0 notes
draegerit · 4 years ago
Video
instagram
Erweiteringsshield mit Sensoren und Aktoren für den Arduino UNO #arduino #arduinouno #expansionboard #multifunktional #programming #maker #diy #tech #techy #technology #electronic #components #draegerit (hier: Stefan Draeger Software) https://www.instagram.com/p/CPH6Lb7qxTG/?utm_medium=tumblr
0 notes
draegerit · 6 years ago
Text
BBC micro:bit #4: Piano Erweiterungskarte
Tumblr media
27In diesem Beitrag möchte ich die Piano Erweiterungskarte für den BBC micro:bit vorstellen.
Tumblr media
Piano Erweiterungskarte für den BBC micro:bit
Aufbau
Diese Karte verfügt über 4 NeoPixel, 8 Piano Tasten (Beschriftet mit C,D,E,F,G,A,B,C) einem Piezo Buzzer sowie ein Slot in welcher der BBC micro:bit gesteckt wird. 
Tumblr media
BBC micro:bit mit aufgesteckter Piano Erweiterungskarte Mit diesem kleinen Piano kann man leicht einpaar eigene Lieder komponieren oder wenn man die Noten (in Form von Buchstaben) zu einem bekannten Lied hat diese auch nachspielen. Des Weiteren verfügt das Board über Lötpunkte (oben rechts & links) über welche man verschiedene I/O Pins abgreifen kann. (Diese Lötunkte sind auf der Rückseite beschriftet.)
Tumblr media
Piano Erweiterungskarte für den BBC micro:bit (Rückseite) Pinout Symbol Bezeichnung VCC Eingangsspannung 3.3V GND Ground P0 Piezo Buzzer P1 LEDs SCL Piano Tasten, I2C Clock SDA Piano Tasten, I2C Data
Technische Daten
Touch controller: TTP229 LED: WS2812B LED Farbtiefe: 16777216 Farben Abmaße: 85mm x 56mm Betriebsspannung: 3.3V
Programmieren
Installieren & Konfigurieren Für die Erweiterungskarte gibt es von der Firma Waveshare ein passendes Plugin für den Visuellen Editor "MakeCode".  Diese Erweiterung installiert man, indem man über den Menüpunkt "Mehr..." (graues Zahnrad, oben rechts) aus dem Hauptmenü zum Unterpunkt "Erweiterungen" navigiert und dort dann die Adresse https://github.com/waveshare/touchpiano eingibt. Danach muss man die Auswahl entweder mit der Entertaster oder aber mit einem klick auf die Lupe bestätigen. Es wird nun nach der Erweiterung gesucht und nach kurzer Zeit wird diese auch angezeigt. Nun kann man ganz einfach draufklicken und diese Erweiterung wird temporär dem visuellen Editor hinzugefügt. Installierte Erweiterungen für den visuellen Editor MakeCode "verschwinden" wieder wenn man seinen Browserverlauf und die Cookies löscht.  Nachdem die Erweiterung installiert ist kann aus dem Reiter "WSTouchPiano" das Modul "Play Piano" (letzter Eintrag) per Drag'n Drop der Schleife "dauerhaft" hinzugefügt werden. Nun ist die Programmierung abgeschlossen und wir können nun unserem Code einen Namen geben und herunterladen. (Das war wirklich einfach!) Danach wird diese *.hex Datei mit einem Dateiexplorer auf den BBC micro:bit kopiert und wir können unser erstes Lied spielen. Das kleine Projekt ist unter https://makecode.microbit.org/_CLkKJHb7fc65 zu finden. Beispiel "Alle meine Entchen" Hier nun die Noten für das Kinderlied "Alle meine Entchen". C D E F G G A A A A G A A A A G F F F F E E D D D D C steuern der NeoPixel Die NeoPixel werden im einfachsten Fall über das betätigen einer Taste am Piano gesteuert, dieses übernimmt der Baustein "Play Piano" selbständig. In diesem Abschnitt möchte ich erläutern wie man die NeoPixel selber steuern kann und somit die Lichteffekte selber gestalten kann. Das Board verfügt über 4 NeoPixel, diese können jeweils eine 8bit Farbtiefe (16777216 Farben) annehmen, d.h. es sind die "normalen" RGB Farben möglich. (Wobei diese nicht immer korrekt dargestellt werden.)
Tumblr media
Module zum steuern der 4 NeoPixel am Piano Board Es kann entweder ein Modul gewählt werden wo aus einer Liste vordefinierte Farben ausgesucht werden oder aber ein Modul wo der RGB Wert eingetragen wird. Was jedoch fehlt ist eine Möglichkeit die Helligkeit zu regulieren.
Tumblr media
MakeCode: darstellen der Farben orange & blau auf dem Piano Board https://makecode.microbit.org/_ceufa20xtAtw Das Eregebnis sieht dann wiefolgt aus:
Tumblr media
aktive farbige NeoPixel am Piano Board Das Fotografieren von NeoPixel ist immer etwas schwierig, da diese für den Sensor der Kamera zu hell sind. Normalerweise ändere ich dann immer die Helligkeit, so das die Aufnahme gut wird, jedoch kann bei diesem Board wie bereits erwähnt die Helligkeit der NeoPixel nicht geändert werden. (Außer man wählt eine dunkle Farbe.) Nun kann man mit etwas Programmieren und einer Schleife auch kleine Lichteffekte erstellen. https://makecode.microbit.org/_AVqgxehCyXrb
Bezug
Diese Erweiterungskarte kann man bei zbsp. ebay.de für knapp 10€ inkl. Versandkosten per Sofortkauf erwerben. Hier muss man aber auch etwas aufpassen denn einige bieten das gleiche Modul für den doppelten Preis an.
Fazit
Es mach viel Spass dieses Board zu betreiben und einpaar kleine Lieder zu spielen. Jedoch bietet das Board für den Preis nur eine kurzweilige Beschäftigung denn viel mehr als den Controller drauf stecken und einpaar Sketche programmieren ist nicht dabei.  Ich werde mir mal als nächstes einpaar andere Boards für den BBC micro:bit anschauen und vielleicht ist da ja dann was besseres dabei. Read the full article
0 notes
draegerit · 7 years ago
Photo
Tumblr media
Expansion Board für den Arduino Nano. Nun hat der ordentlich Anschlüsse für weitere Projekte dazu bekommen. #arduino #arduinoproject #arduinonano #expansionboard (hier: Stefan Draeger Software) https://www.instagram.com/p/BpcLj5-AHLX/?utm_source=ig_tumblr_share&igshid=6sl426eci8bx
0 notes
draegerit · 3 years ago
Text
Vergleich Raspberry Pi Pico W & MAKER Pi Pico
Tumblr media
In diesem Beitrag möchte ich einen Vergleich zwischen dem Raspberry Pi Pico W und MAKER Pi Pico aufstellen und zeigen wo die Unterschiede liegen.
Tumblr media
Vergleich - Raspberry Pi Pico W & MAKER Pi Pico Den Mikrocontroller MAKER Pi Pico habe ich von der Firma Cytron kostenfrei erhalten und bereits im Beitrag Maker Pi Pico von Cytron vorgestellt. Dieser Mikrocontroller ist auf Basis des Vorgängermodells des Pi Pico (also ohne WiFi Chip).
Tumblr media
Raspberry Pi Pico W
Tumblr media
MAKER Pi Pico Die beiden Mikrocontroller habe ich schon in diversen Beiträgen behandelt und kann somit recht gut über die Features sprechen, wobei der Raspberry Pi Pico W noch neu in meinem Sortiment ist. Der neue Raspberry Pi Pico W hat nur zwei zusätzliche Features gegenüber dem Vorgängermodell, nämlich die WiFi-Schnittstelle und 2 MB Flash Speicher. - MAKER Pi Pico #1 – senden von Sensordaten an ThingSpeak - MAKER Pi Pico #2 – Sensordaten auf einer SD-Card speichern - Raspberry Pi Pico W mit Wi-Fi Support - Raspberry Pi Pico W mit Infineon CYW43438 Chip - Raspberry Pi Pico W – Zeit aus dem Internet lesen und auf einem Display anzeigen
Vergleich der Features
Da der MAKER Pi Pico einen Raspberry Pi Pico verbaut hat (also direkt auf die Platine gelötet) ist zumindest das Pinout und der Chip (Typ RP2040) derselbe, jedoch hat dieser Mikrocontroller noch ein paar sehr nette Features. Features des MAKER Pi Pico - SD – Card, - AUDIO Ausgang, - Piezo Buzzer, - 3 frei programmierbare Taster, - Buchse für einen ESP01*, - 6 Grove Adapter für Sensoren / Aktoren, - eine RGB LED, - an jedem GPIO Ausgang eine SMD LED**, - Stiftleiste zum Abgreifen der Debug Pins
Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media
Features des Raspberry Pi Pico W Der Raspberry Pi Pico W verfügt über: - eine Micro-USB Schnittstelle, - eine Debug Schnittstelle (SWD - Serial Wire Debug), - einen RP2040 Chip mit Dual Core Arm Cortex-M0+ mit bis zu 133 MHz, - einen internen Speicher von 264 kB SRAM für dein Programm, - 2MB QSPI Flash Speicher für zusätzliche Dateien, - 40 Pins, davon- 26 multifunktionale GPIOs - 3 analoge Eingänge - Schnittstellen- 2x I²C, 2x SPI, 2x UART Zusätzlich verfügt dieser neue Mikrocontroller über eine 2.4 GHz WiFi Schnittstelle, welche im Standard 802.11n arbeitet. (siehe Raspberry Pi Pico W mit Infineon CYW43438 Chip)
Preisvergleich
Der Preis für den MAKER Pi Pico liegt derzeit bei 12 $ (ca. 11,83 €) und für den Raspberry Pi Pico W lediglich 6,99 € zzgl. Versandkosten bei reichelt.de. Dadurch das der MAKER Pi Pico ein paar zusätzliche Features hat, ist der höhere Preis gerechtfertigt. Jedoch ist die Unterstützung von Wi-Fi noch nicht ausgeprägt, sodass der Pi Pico W hier deutlich die Nase vorne hat.
Programmieren der beiden Mikrocontroller
Beide Mikrocontroller lassen sich mit der Arduino IDE in C/C++ programmieren. Aber du kannst dir diese auch Flashen und dann mit CircuitPython programmieren, was wie ich finde deutlich mehr Spaß macht. Zu beiden Mikrocontroller habe ich bereits einige Beiträge veröffentlicht, wo ich dir gezeigt habe wie diese programmiert werden. Maker Pi Pico - Maker Pi Pico von Cytron - MAKER Pi Pico #1 – senden von Sensordaten an ThingSpeak - MAKER Pi Pico #2 – Sensordaten auf einer SD-Card speichern Raspberry Pi Pico W - Raspberry Pi Pico W – Webserver programmieren - Thonny IDE auf Linux einrichten für den Raspberry Pi Pico W - Raspberry Pi Pico W – Zeit aus dem Internet lesen und auf einem Display anzeigen - Raspberry Pi Pico W – Creator Display erstellen
Fazit
Beide Mikrocontroller haben Ihre Daseinsberechtigung, jedoch finde ich den neuen Pi Pico W mit seiner Wi-Fi Schnittstelle und seinem kleinen Formfaktor etwas besser. Jedoch vermisse ich bei diesem so nette Features wie Groove Schnittstellen zum einfachen Anschließen von Sensoren / Aktoren. Für das Vorgängermodell des Raspberry Pi Pico W hatte ich mir ein kleines Board entworfen, welches über ein paar Groove Schnittstellen verfügt.
Tumblr media
Raspberry Pi Pico W auf DIY Expansionboard Read the full article
0 notes
draegerit · 3 years ago
Text
Raspberry Pi Pico W - Zeit aus dem Internet lesen und auf einem Display anzeigen
Tumblr media
Wie man die Zeit von Time Server aus dem Internet lädt und mit dem neuen Raspberry Pi Pico W auf einem LCD-Display per I²C anzeigen lassen kann, möchte ich dir in diesem ausführlichen Beitrag zeigen.
Tumblr media
Den neuen Raspberry Pi Pico W mit WiFi Support habe ich dir bereits in folgenden Beiträgen vorgestellt und einige kleine Projekte gezeigt. - Raspberry Pi Pico W mit Wi-Fi Support - Raspberry Pi Pico W – Webserver programmieren - Raspberry Pi Pico W mit Infineon CYW43438 Chip - Raspberry Pi Pico W – anzeigen von Sensordaten auf einer Webseite - Raspberry Pi Pico W – Webseite ins Internet veröffentlichen
Benötigte Ressourcen für dieses Projekt
Für dieses Projekt benötigst du, bzw. habe ich verwendet: - einen Raspberry Pi Pico W,- ein Micro-USB Datenkabel, - ein 2x16 Zeichen LCD-Display mit I²C Schnittstelle, - diverse Breadboardkabel
Aufbau der Schaltung, Raspberry Pi Pico W mit LCD-Display
In diesem Beitrag verwende ich ein einfaches 2x16 Zeichen LCD-Display mit I²C Schnittstelle. Es gibt jedoch auch größere Displays mit mehr Zeilen & Zeichen, wo du dann auch mehr Informationen anzeigen lassen kannst.
Tumblr media
Raspberry Pi Pico mit LCD-Display via I²C Der Raspberry Pi Pico W hat 2 I²C Schnittstellen, welche du über die nachfolgenden Pins erreichen kannst: - I²C 0- SDA – GP0, GP8, GP12, GP16, GP20 - SCL – GP1, GP9, GP13, GP17, GP21 - I²C 1- SDA – GP2, GP6, GP10, GP14, GP18, GP26 - SCL – GP3, GP7, GP11, GP15, GP19, GP27
Tumblr media
Auf der Schaltung - Raspberry Pi Pico W mit 2x20 Zeichen LCD-Display
Pinout des Raspberry Pi Pico (W)
Der neue Raspberry Pi Pico W ist mit dem Vorgängermodell von den Pins identisch, d.h. du kannst deine bestehenden Projekte recht einfach um die WiFi Fähigkeit erweitern.
Tumblr media
Pinout des Raspberry PI Pico Erweiterungsplatine für den Raspberry Pi Pico Für das Vorgängermodell dem Raspberry Pi Pico von 2021 habe ich ein kleines Board entwickelt welches mit die I²C Pins sowie ein paar GPIOs auf Groove Konnektoren bereitstellt.
Tumblr media
Raspberry Pi Pico W auf DIY Expansionboard
I²C Adapter für LCD-Display
Das verwendete LCD-Display hat einen kleinen I²C Adapter auf der Rückseite verbaut. Dieser Adapter verfügt über die Pins SDA, SCL, VCC und GND sowie über einen Drehpotentiometer (blaues Bauteil im Bild) über welchen die Helligkeit der Schrift gesteuert werden kann.
Tumblr media
I²C Adapter für das LCD-Display
Programmieren des LCD-Displays in der Thonny IDE mit MicroPython
Für die Programmierung nutze ich die Thonny IDE welche kostenfrei unter https://thonny.org/ für Microsoft Windows, macOS & auch Linux heruntergeladen werden kann. Download & kopieren des Modules für das LCD-Display Für die Programmierung des LCD-Displays verwende ich ein Modul, welches vom GitHub Repository dhylands/python_lcd geladen werden kann. Von diesem Repository benötigen wir jedoch nur die beiden Dateien: - https://github.com/dhylands/python_lcd/blob/master/lcd/lcd_api.py - https://github.com/dhylands/python_lcd/blob/master/lcd/machine_i2c_lcd.py Diese beiden Dateien müssen wir auf dem Pi Pico im Ordner "lib" speichern. Da wir jedoch keinen direkten Zugriff auf diesem Ordner haben, müssen wir die beiden Dateien in einem Editor öffnen (zbsp. Notepad++). Im geöffneten Editor markieren und kopieren, wir den gesamten Text in einem geöffneten Tab in der Thonny IDE und speichern dieses in den Ordner "lib" unter den jeweiligen Dateinamen. Troubleshooting Beim Programmieren sind mir einige Fehlermeldungen ausgegeben worden, welche ich dir hier gerne zeigen möchte. OSError 28 Diesen Fehler erhältst du, wenn der Speicher des Mikrocontrollers aufgebraucht ist. D.h. du musst Speicher freigeben, um diesen Fehler zu beheben. Dieses können zbsp. nicht benötigte Bibliotheken sein, welche auf dem Mikrocontroller abgelegt wurden. ValueError: bad SCL pin / bad SDA pin Die konfigurierte I²C Verbindung ist nicht lesbar. Hier musst du deine Verkabelung und die verwendete Adresse prüfen. Quellcode - "Hello World!" auf dem LCD-Display Schreiben wir zunächst in jede Zeile des Displays ein paar Zeichen. from time import sleep from machine import I2C, Pin from machine_i2c_lcd import I2cLcd i2c = I2C(0, sda=Pin(0), scl=Pin(1), freq=100000) lcd = I2cLcd(i2c, 0x27, 2, 16) zeile1 = 'Hello World!'; zeile2 = 'from Pi Pico W' lcd.putstr(zeile1 + "n" + zeile2) sleep(2)
Tumblr media
Auf der Schaltung - Raspberry Pi Pico W mit 2x20 Zeichen LCD-Display Auslesen einer Zeit vom Server Als Dienst nutze ich den Server http://worldtimeapi.org welchen wir in der URL die Zeitzone übergeben wie zbsp. http://worldtimeapi.org/api/timezone/Europe/Berlin und als Antwort ein JSON mit den Daten erhalten.
Tumblr media
Damit wir diesen HTTP Request absenden und einen Response vom Server empfangen können, müssen wir uns zu einem bestehenden WLAN Netzwerk verbunden haben. Wie du das machst, habe ich dir bereits im Beitrag Raspberry Pi Pico W – Webserver programmieren gezeigt. Hier der Vollständigkeit der Code zum Herstellen einer Verbindung zu einem WLAN Netzwerk. import network import time ssid = '*****' password = '*******' wlan = network.WLAN(network.STA_IF) wlan.active(True) wlan.connect(ssid, password) print("Waiting to connect:") while not wlan.isconnected() and wlan.status() >= 0: print(".", end="") time.sleep(1) print("") print(wlan.ifconfig()) Wenn diese Verbindung aufgebaut ist, dann müssen wir einen Request an die oben genannte Adresse senden und den Response (ein JSON) auswerten. Die Funktion zum Absenden des HTTP Requests und Empfangen des HTTP Response habe ich aus der offiziellen Dokumentation unter https://docs.micropython.org/en/latest/esp8266/tutorial/network_tcp.html entnommen. # Funktion zum absenden eines HTTP Request und # Rückgabe des HTTP Response # Quelle: https://docs.micropython.org/en/latest/esp8266/tutorial/network_tcp.html def http_get(url): result = '' _, _, host, path = url.split('/', 3) addr = socket.getaddrinfo(host, 80) s = socket.socket() s.connect(addr) s.send(bytes('GET /%s HTTP/1.0rnHost: %srnrn' % (path, host), 'utf8')) while True: data = s.recv(100) if data: result = result + str(data, 'utf8') else: break s.close() return result # Ermitteln des JSONs aus dem HTTP Response def findJson(response): txt = 'abbreviation' return response Aus diesem JSON Response können wir nun diverse Informationen entnehmen. In meinem Fall interessiere ich mich für den UNIX Timestamp "unixtime". { "abbreviation":"CEST", "client_ip":"80.128.77.199", "datetime":"2022-07-25T14:22:21.415593+02:00", "day_of_week":1, "day_of_year":206, "dst":true, "dst_from":"2022-03-27T01:00:00+00:00", "dst_offset":3600, "dst_until":"2022-10-30T01:00:00+00:00", "raw_offset":3600, "timezone":"Europe/Berlin", "unixtime":1658751741, "utc_datetime":"2022-07-25T12:22:21.415593+00:00", "utc_offset":"+02:00", "week_number":30 } Damit die Daten aus dem JSON (eigentlich ein einfacher String) ausgelesen werden kann, wandeln wir dieses in ein Dictionary um. import json aDict = json.loads(jsonData) Nun können wir auf die Werte recht einfach mit dem entsprechenden Key zugreifen und den UNIX Timestamp in ein Tupel mit den Datum & Zeit Werten umwandeln. # parsen des Zeitstempels # Parameter ist das JSON als Dictionary def parseDateTimeStr(responeDict): # umwandeln des UNIX Timestamp in eine Liste aus Datum & Zeit Werten dateTime = time.localtime(int(responeDict)) year = dateTime month = dateTime dayOfMonth = dateTime # Wenn der Monat kleiner als 10 ist, # dann eine führende Null anhängen if month < 10: month = str('0' + str(month)) if dayOfMonth < 10: dayOfMonth = str('0' + str(dayOfMonth)) dateStr = str(dayOfMonth)+'.'+str(month)+'.'+str(year) hour = dateTime minutes = dateTime # offset für die Uhrzeit auslesen timeOffset = responeDict # Wenn der Offset mit einem Minus beginnt # dann soll der Wert abgezogen werden if timeOffset == '-': hour = hour - int(timeOffset) elif timeOffset == '+': # beginnt der Offset mit einem "+" # dann soll die Zeit addiert werden hour = hour + int(timeOffset) if hour < 10: hour = str('0' + str(hour)) if minutes < 10: minutes = str('0' + str(minutes)) timeStr = str(hour)+':'+str(minutes) # auslesen der Zeitzone timezone = responeDict # zurückgeben der Zeitzone, des Datums sowie der Uhrzeit return timezone, dateStr, timeStr Die ermittelten Werte für timezone, dateStr und timeStr speichern wir uns in einer Variable welche wir auf dem Display dann mit der Funktion "displayDateTime" anzeigen lassen wollen. In der Funktion wird die Zeichenkette für die Timezone in min. 16 Zeichen umgewandelt bzw. es werden entsprechende Leerzeichen ergänzt. Der Hintergrund ist das wenn es weniger Zeichen sind, dann wird kein vernünftiger & zuverlässiger Zeilenumbruch gemacht. Das ist vor allem beim Aktualisieren des LCD-Displays aufgefallen. # parsen des Zeitstempels aus dem Dictionary timezone, dateStr, timeStr = parseDateTimeStr(aDict) # ausgeben der Werte auf dem LCD-Display displayDateTime(timezone, dateStr, timeStr) # Anzeigen der Daten auf dem Display # Hinweis: Wenn die Zeichen der Zeitzone # länger als 16 Zeichen ist, dann wird # diese automatisch umgebrochen! def displayDateTime(timezone, dateStr, timeStr): timezone = "{: Read the full article
0 notes
draegerit · 3 years ago
Text
Raspberry Pi Pico W - anzeigen von Sensordaten auf einer Webseite
Tumblr media
In diesem Beitrag möchte ich dir zeigen, wie du mit dem Raspberry Pi Pico W, Sensordaten auf einer kleinen Webseite anzeigen lassen kannst.
Tumblr media
Der Raspberry Pi Pico W verfügt über 26 digitale Pins, an welche wir diverse Umweltsensoren anschließen können. In meinem Fall möchte ich den Sensor BME280 anschließen, welcher die Umweltdaten für nachfolgende Werte liefert. - Temperatur, - Luftdruck und - relative Luftfeuchtigkeit Den Sensor BME280 habe ich dir bereits für den Arduino UNO im Beitrag Arduino Lektion 44: BME280 Temperatur, Luftfeuchtigkeit und Luftdruck Sensor vorgestellt.
Tumblr media
BME280 - Temperatur, Luftfeuchtigkeit und Luftdruck Sensor Den Mikrocontroller Raspberry Pi Pico W habe ich dir bereits in den beiden nachfolgenden Beiträgen vorgestellt und auch bereits gezeigt, wie man diesen in MicroPython programmiert. - Raspberry Pi Pico W mit Wi-Fi Support - Raspberry Pi Pico W - Webserver programmieren Hier möchte ich dir nun zeigen, wie du die Sensordaten auf einer kleinen Webseite anzeigen lassen kannst. Und das nicht nur einfach in Textform, sondern in schönen Diagrammen.
Benötigte Ressourcen für dieses Projekt
Für den Nachbau des Projektes benötigst du: - einen Raspberry Pi Pico W,- ein Micro-USB Datenkabel, - ein 400 Pin Breadboard, - ein BME280 Sensor, - diverse Breadboardkabel
Technische Daten des Sensors BME280
Der Umweltsensor BME280 hat nachfolgende technische Daten: - Betriebsspannung - 3.3V / 5V - Stromverbrauch - < 1mA - Temperatur- Messbereich -40 °C bis 85 °C - Genauigkeit ± 1,0 °C - Luftdruck- Messbereich 300 hPa bis 1100 hPa - Genauigkeit ± 1 hPa - relative Luftfeuchtigkeit- Messbereich 0 bis 100 % - Genauigkeit ± 3 %
Pinout des Raspberry Pi Pico
Der neue Raspberry Pi Pico W ist mit dem Vorgängermodell kompatibel und hat somit auch das gleiche Pinout / die gleiche Pinbelegung.
Tumblr media
Pinout des Raspberry PI Pico
Aufbau der Schaltung - Sensor BME240 am Raspberry Pi Pico W
Bauen wir nun die Schaltung auf, dafür benötigen wir: - vier Breadboardkabel, männlich-männlich, 10 cm, - ein 400 Pin Breadboard, sowie natürlich - den Raspberry Pi Pico W und - den Sensor BME280 Der Pi Pico W verfügt über 2x I²C Anschlüsse, welche wir wie folgt abgreifen können: - I²C 0- SDA - GP0, GP8, GP12, GP16, GP20 - SCL - GP1, GP9, GP13, GP17, GP21 - I²C 1- SDA - GP2, GP6, GP10, GP14, GP18, GP26 - SCL - GP3, GP7, GP11, GP15, GP19, GP27 In meinem Fall habe ich einen Sensor verbaut welcher mit 3,3V betrieben wird, solltest du eine 5V Variante haben so musst du natürlich VCC an Pin 40 des Pi Pico anschließen.
Tumblr media
DIY Expansionboard Für den Raspberry Pi Pico habe ich mir ein kleines, eigenes Expansionsboard entworfen, welches mir bequem die Pins für I²C bereitstellt. Da der neue Pi Pico W voll kompatibel mit dem Vorgängermodell ist, kann ich dieses kleine Board weiterverwenden.
Tumblr media
Raspberry Pi Pico W auf DIY Expansionboard Das selbst erstellte Expansionboard für den Raspberry Pi Pico habe ich dir bereits im Beitrag DIY Expansion Board für Raspberry PI Pico mit Grove Adapter vorgestellt.
Tumblr media
Programmieren des Sensors BME280 am Raspberry Pi Pico in der Thonny IDE
Damit wir den Sensor BME280 einfacher ansteuern können, verwenden wir ein Modul, welches wir in der Thonny IDE über das Hauptmenü "Extras" > "Verwaltete Pakete..." installieren können. Damit der Menüpunkt "Verwaltete Pakete..." aktiviert wird, muss dein Computer mit dem Pi Pico verbunden sein. Zunächst suchen wir nach "bme280" und wählen aus den Suchergebnissen den Eintrag "micropython-bme280" aus und wählen im nächsten Schritt die Schaltfläche "Installieren" (1) aus. Nachdem das Modul installiert wurde kann der Dialog über die Schaltfläche "Schließen" (2) verlassen werden.
Tumblr media Tumblr media Tumblr media
Schritt 1 - auslesen der Sensordaten des BME280
Zunächst lesen wir die Schaltfläche aus und lassen uns die Sensordaten auf der Console anzeigen. #Modul zum auslesen des Sensors from bme280 import BME280 #Modul zum ansteuern der Pins des Pico from machine import Pin, I2C #Modul um einekleine Pause einzulegen from time import sleep #definieren an welchen I2C Pins der Sensor angeschlossen ist i2c=I2C(0, sda=Pin(0), scl=Pin(1), freq=400000) #Objekt mit den definierten Werten instanziieren sensorBME = BME280(i2c=i2c) #mache Endlos... while True: #auslesen der Werte des Sensors temperatur, luftdruck, luftfeuchtigkeit = sensorBME.values #Ausgeben der gelesenen Werte print('Temperatur (°C): ' + temperatur) print('Luftdruck (hPa): ' + luftdruck) print('Luftfeuchtigkeit (%): ' + luftfeuchtigkeit) #eine kleine Pause von 2 Sekunden sleep(2) print('************************************') Ausgabe in der Console der Thonny IDE MicroPython v1.19.1-88-g74e33e714 on 2022-06-30; Raspberry Pi Pico W with RP2040 Type "help()" for more information. >>> %Run -c $EDITOR_CONTENT Temperatur (°C): 18.52C Luftdruck (hPa): 652.59hPa Luftfeuchtigkeit (%): 71.17% https://www.az-delivery.de/blogs/azdelivery-blog-fur-arduino-und-raspberry-pi/wetterstation-mit-raspberry-pi-pico-und-oled-display
Schritt 2 - erstellen der HTML Seite für die Sensordaten
Im zweiten Schritt erstellen wir uns die HTML Seite mit Platzhalter für die bereits ausgegebenen Sensordaten. Als Editor nutze ich den kostenfreien Notpad++, dieser bietet eine Vielzahl von nützlichen Funktionen und sogar eine Syntaxhervorhebung für HTML Code. Pi Pico W - BME280 Sensordaten
Raspberry Pi Pico W - Sensordaten vom BME280
Sensordaten Temperatur:  rel. Luftfeuchtigkeit:  Luftdruck:  An den Stellen im Code wo wir ein "%s" stehen haben werden wir später die echten Sensorwerte einfügen. Ausgabe der Seite im Browser Microsoft Edge:
Tumblr media
Da wir später die HTML Seite als Variable im MicroPython Code speichern nutzen wir das Tool https://www.html-code-generator.com/tools/html-compress welches uns Zeilenumbrüche usw. aus dem Code entfernt. Pi Pico W - BME280 Sensordaten
Raspberry Pi Pico W - Sensordaten vom BME280
SensordatenTemperatur:  rel. Luftfeuchtigkeit:  Luftdruck: 
Schritt 3 - ausliefern der Webseite mit Sensordaten am Raspberry Pi Pico W
Nachdem wir nun die HTML Seite erstellt und komprimiert haben, können wir uns dem Code auf dem Pi Pico widmen. Wie man eine Webseite ausliefert, habe ich dir bereits im Beitrag Raspberry Pi Pico W – Webserver programmieren gezeigt. import network import socket from bme280 import BME280 from machine import Pin, I2C from time import sleep i2c=I2C(0, sda=Pin(0), scl=Pin(1), freq=400000) sensorBME = BME280(i2c=i2c) ssid = 'FRITZBox7590GI_EXT' password = '22894580214767401850' wlan = network.WLAN(network.STA_IF) wlan.active(True) wlan.connect(ssid, password) html = 'Pi Pico W - BME280 Sensordaten
Raspberry Pi Pico W - Sensordaten vom BME280
SensordatenTemperatur:  rel. Luftfeuchtigkeit:  Luftdruck:  ' print('waiting for connection...') max_wait = 10 while max_wait > 0: if wlan.status() < 0 or wlan.status() >= 3: break max_wait -= 1 print('.', end='') sleep(1) print('') if wlan.status() != 3: raise RuntimeError('network connection failed') else: print('connected') status = wlan.ifconfig() print('ip = ' + status) addr = socket.getaddrinfo('0.0.0.0', 80) s = socket.socket() s.bind(addr) s.listen(1) print('listening on', addr) while True: try: cl, addr = s.accept() print('client connected from', addr) temperatur, luftdruck, luftfeuchtigkeit = sensorBME.values temperatur = temperatur.replace("C", "") luftfeuchtigkeit = luftfeuchtigkeit.replace("%", "") luftdruck = luftdruck.replace("hPa","") website = html % (temperatur, luftfeuchtigkeit, luftdruck) cl.send('HTTP/1.0 200 OKrnContent-type: text/htmlrnrn') cl.send(website) cl.close() except OSError as e: cl.close() print('connection closed') Hier nun die fertige Webseite mit den Sensordaten des BME280 Sensors.
Tumblr media
Eigentlich wäre damit die Hauptaufgabe erledigt, jedoch ist dieses nicht gerade hübsch, es ist zwar schlicht, aber könnte noch ein paar nette Gimmicks gebrauchen.
Ausblick
Im nächsten Schritt werden wir nun ein Diagramm einbauen und so die Sensordaten visualisieren. Für das Anzeigen von Diagrammen in HTML gibt es einige kostenlose JavaScript Bibliotheken, in diesem Fall möchte ich die Google Gauges nutzen. Die Google Gauges sind kostenfrei und sehr gut dokumentiert und ich habe bereits einige Beiträge mit diesen gemacht. Read the full article
0 notes
draegerit · 3 years ago
Text
Pico:ed #2: LEDs steuern
Tumblr media
In diesem Beitrag möchte ich dir zeigen, wie du am Mikrocontroller Pico:ed, LEDs anschließen und steuern kannst.
Tumblr media
Pico:ed - programmieren von LEDs Im Beitrag Mikrocontroller Pico:ed habe ich dir diesen bereits vorgestellt und gezeigt wie du diesen in MicroPython programmieren kannst.
Benötigte Ressourcen
Wenn du dieses Projekt mit dem Pico:ed nachbauen möchtest, dann benötigst du: - einen Pico:ed,- ein Micro-USB Datenkabel, - einen Adapter für Breadboardkabel, - ein 400 Pin Breadboard, - eine grüne, 5 mm, LED, - eine rote, 5 mm, LED, - eine gelbe, 5 mm, LED, - drei 220 Ohm Widerstände, - diverse Breadboardkabel
Hinweis
Wenn du meinen Blog schon länger verfolgst, dann habe ich dir bereits am Raspberry Pi Pico gezeigt, wie man LEDs und andere Bauteile steuern kann. - Raspberry PI Pico #2 – LEDs steuern - Raspberry PI Pico #4 – Taster mit PullDown & PullUp abfragen - Raspberry PI Pico #9 – kleines Spiel „Pixel Chaser“
Adapter / Expansionboards
Es gibt diverse Ausführungen von Adaptern / Expansionboards für den BBC micro:bit welche auch für den Pico:ed passen.
Tumblr media
Pico:ed mit Schneidklemmenadapter
Programmieren der BuildIn LED
Auf dem Pico:ed ist bereits eine kleine LED verbaut welche sich hinter dem "i" Punkt der Schrift "Pico:ed" versteckt. Diese kleine LED kann man über den Pin "LED" erreichen / programmieren. from picoed import * import board import digitalio import time led = digitalio.DigitalInOut(board.LED) led.direction = digitalio.Direction.OUTPUT while True: led.value = True time.sleep(1) led.value = False time.sleep(1)
Programmieren des Pico:ed mit LEDs
In diesem Abschnitt zeige ich dir nun, wie du kleine 5 mm LEDs an den Pico:ed anschließen und programmieren kannst. Als Entwicklungsumgebung verwende, ich den MU Editor welchen du kostenfrei unter https://codewith.mu/ herunterladen kannst. https://youtu.be/8stvD_rPgzk Beispiel 1 - aktivieren / deaktiven einer LED mit Taster A & B Auf dem Pico:ed sind zwei Taster verbaut, welche mit A & B beschriftet sind. Diese wollen wir nun verwenden, um eine LED zu aktivieren bzw. zu deaktivieren. In diesem Beispiel wird die Kathode der LED an den Pin 1 und die Anode über einen 220 Ohm Widerstand an GND angeschlossen. Der Code zum Steuern der grünen LED sieht in meinem Fall wie folgt aus: from picoed import * import board import digitalio led_gruen = digitalio.DigitalInOut(board.P1) led_gruen.direction = digitalio.Direction.OUTPUT while True: if button_a.is_pressed(): print("A") led_gruen.value = True if button_b.is_pressed(): print("B") led_gruen.value = False Beispiel 2 - wechsel Blinken von zwei LEDs Mit dem Modul "time" und der Funktion "sleep" können wir den Code für eine Anzahl x an Sekunden unterbrechen. Dieses wollen wir nun im zweiten Beispiel machen und zwei LED zum wechsel Blinken bringen. Die grüne LED ist weiterhin am Pin 1 angeschlossen, es kommt nun eine zweite, gelbe LED hinzu welche am Pin 2 angeschlossen wird.
Tumblr media
Im Code implementieren wir die gelbe LED wie die grüne, jedoch in der Endlosschleife vertauschen wir jeweils den Wert für das aktivieren / deaktivieren der LED um das wechsel Blinken zu erzeugen. import board import digitalio import time led_gruen = digitalio.DigitalInOut(board.P1) led_gruen.direction = digitalio.Direction.OUTPUT led_gelb = digitalio.DigitalInOut(board.P2) led_gelb.direction = digitalio.Direction.OUTPUT led_gruen.value = False led_gelb.value = False PAUSE = 0.5 while True: led_gruen.value = False led_gelb.value = True time.sleep(PAUSE) led_gruen.value = True led_gelb.value = False time.sleep(PAUSE) Beispiel 3 - Ampelschaltung Zum Abschluss wollen wir nun eine kleine Ampelschaltung realisieren, dazu benötigen wir eine grüne, gelbe und rote LED sowie drei 220 Ohm Widerstände.
Tumblr media
Wechsellichtzeichen nach §37 Abs.2 StVO Die LEDs werden an die Pins 1,2 und 3 angeschlossen. import board import digitalio import time led_gruen = digitalio.DigitalInOut(board.P1) led_gruen.direction = digitalio.Direction.OUTPUT led_gelb = digitalio.DigitalInOut(board.P2) led_gelb.direction = digitalio.Direction.OUTPUT led_rot = digitalio.DigitalInOut(board.P3) led_rot.direction = digitalio.Direction.OUTPUT led_gruen.value = False led_gelb.value = False led_rot.value = False PAUSE = 0.5 def lightUpLeds(ledGruen, ledGelb, ledRot): led_gruen.value = ledGruen led_gelb.value = ledGelb led_rot.value = ledRot while True: lightUpLeds(True, False, False) time.sleep(PAUSE) lightUpLeds(False, True, False) time.sleep(PAUSE) lightUpLeds(False, False, True) time.sleep(PAUSE) lightUpLeds(False, True, True) time.sleep(PAUSE) Read the full article
0 notes
draegerit · 3 years ago
Photo
Tumblr media
Raspberry Pi Pico W at DIY Expansionboard #raspberrypi #pico #pipico #RaspberryPIPico #maker #diy #tech #techy #technology #electronic #components #microcontroller #draegerit (hier: Stefan Draeger Software) https://www.instagram.com/p/Cf_ltehtk8J/?igshid=NGJjMDIxMWI=
0 notes
draegerit · 5 years ago
Text
BBC micro:bit Starter Set #1: Infrarot Modul
Tumblr media
In diesem Beitrag möchte ich dir zeigen wie du das Infrarot Modul an dem BBC micro:bit betreiben kannst.  Ein sehr ähnliches Infrarot Modul habe ich bereits für den Arduino in dem Beitrag Arduino Lektion 20: IR Fernbedienung auslesen ausgiebig vorgestellt, jedoch unterscheidet sich die Programmierung am BBC micro:bit deutlich vom Arduino. Bezug des Infrarot Modules Wie bereits erwähnt ist das Infrarot Modul Bestandteil des Microbit Starter Kit welches du im Shop von digitspace.com für knapp 31$ findest. Aufbau des Infrarot Modules Das Infrarot Modul hat eine Abmaße (L x B x H) von 3,5cm x 2,5cm x 1,5cm. Auf der linken Seite verfügt das Modul über eine 3 polige JST Buchse und auf der rechten Seite über die Infrarot Diode. Aufbau der Schaltung Für die Schaltung verwende ich neben dem IR Modul noch zusätzlich einen Piezo Buzzer und natürlich die mitgelieferte Infrarot Fernbedienung. Der Vorteil bei dem Microbit Starter Kit ist das alle benötigten Kabel beiliegen. (Jedoch ist kein BBC micro:bit und Datenkabel dabei.) Der Microcontroller wird in das Expansionboard gesteckt so das die Schrift "micro:bit" in Richtung der Pins zeigt.  Der Piezo Buzzer wird an den Pin P0, das IR Modul an den Pin P8 angeschlossen. Programmieren Zum programmieren verwende ich die Entwicklungsumgebung MakeCode. Dieses Tool ist kostenfrei unter https://makecode.microbit.org erhältlich und kommt mit sehr vielen Erweiterungsmodulen daher. einrichten Read the full article
0 notes
draegerit · 6 years ago
Text
BBC micro:bit #1: LED blinken & fade
Tumblr media
In diesem Tutorial möchte ich erläutern wie man LED's mit dem BBC micro:bit zum blinken und zum faden bringt.
Tumblr media
micro:bit mit LEDs Den Microcontroller micro:bit habe ich bereits im Tutorial Vorstellung #1 2019: BBC micro:bit vorgestellt. Der Microcontroller micro:bit verfügt über 20 Ein/Ausgänge von denen kann man 6 als analoge verwenden.
Aufbau der Schaltung
Schließen wir also zunächst an drei dieser Ausgänge jeweils eine LED an. Wie man eine LED zum blinken bringt habe ich bereits zum Microcontroller Arduino UNO unter Arduino Lektion 1: Blinkende LED erläutert. Der micro:bit wird jedoch in MicroPython bzw. mit dem visuellen Editor MakeCode etwas anders programmiert, daher möchte ich nun einige kleine Tutorials zu diesem Microcontroller bereitstellen. Für das nachfolgende Beispiel benötigst du: 1x micro:bit, 1x Erweiterungskarte, 3x 220 Ohm Widerstand, 1x LED, 5mm, rot, 1x LED, 5mm, gelb, 1x LED, 5mm, grün, 4x Breadboardkabel, 10cm, männlich - weiblich Da wie erwähnt das Abgreifen der Pins an der Schnittstelle des micro:bit sehr schwierig ist habe ich mir eine Erweiterungskarte besorgt. Man kann jedoch auch mit Bananenstecker die Pins 0,1,2 abgreifen,dafür sind die großen Löcher in der Platine vorgesehen und entsprechend Beschriftet.
Tumblr media
Schaltung - micro:bit mit 3 LEDs und Expansionboard
LED blinken
Zu nächst wollen wir die 3 LEDs gleichzeitig blinken lassen. Quellcode MicroPython # Bibliothek importieren um den Befehlssatz für den micro:bit zu verwenden from microbit import * # speichern des aktuellen Status der LEDs # 0 = aus # 1 = an ledState = 0 while True: # wenn der Wert 0 ist dann... if ledState == 0: # setze den Wert für die LEDs auf 1 ledState = 1 elif ledState == 1: # setze den Wert für die LEDs auf 0 ledState = 0 # aktivieren / deaktivieren der LEDs pin0.write_digital(ledState) pin1.write_digital(ledState) pin2.write_digital(ledState) # eine kleine Pause von 750ms. sleep(750) MakeCode
Tumblr media
"Code" zum LED blinken lassen Video Download
  LED fade Effekt
Die Pins des micro:bit fungieren gleichzeit allesamt als PWM Pins dieses finde ich als deutlichen Vorteil gegenüber dem Arduino denn hier sind diese meist mangelware. Quellcode MicroPython # Bibliothek importieren um den Befehlssatz für den micro:bit zu verwenden from microbit import * while True: # eine Schleife über die Zahlen von 0 bis 255 for i in range(0,255): # setzen des aktuellen Zählers als PWM Signal pin0.write_analog(i) pin1.write_analog(i) pin2.write_analog(i) # eine kleine Pause von 5ms. sleep(5) sleep(600) MakeCode
Tumblr media
MakeCode - LED fade Effekt Video Download   Read the full article
0 notes