Es ging weiter mit dem 3210 Board. Das Layout ist in der ersten Version fertig! Genauere Infos dazu gibt’s auf dem Hackaday Post zum heutigen Fortschritt.
Hackaday Post |
Es ging weiter mit dem 3210 Board. Das Layout ist in der ersten Version fertig! Genauere Infos dazu gibt’s auf dem Hackaday Post zum heutigen Fortschritt.
Hackaday Post |
Today I am putting out the first version of my KiCad via improvements. I created this during routing of my Nokia Retro Fit project. The board I wanted to create has this layer stack:
As you can see I want to be able to create micro vias on the layers 1,2,3 and 6,7,8. Using even the nightly builds of KiCad only allows you to place micro vias on the top or bottom to the adjacent layer below. so from 1 to 2 and 7 to 8. This where my additions come into to play.
I enhanced the user vias diameter and drill part of the Design Rules dialog. It now comes with more options.
The via class has those additional values as well.
Placing a micro vias during layout does not yet work as intended, but I am working on it. You can change it after placement nonetheless. So placing vias is not yet as comfortable as I would like it to be.
Editing a via after placing now gives you this dialog:
It gives you a list of all the vias created and you can double click to change the values below. It does not let you enter values that are not listed in the user via list. But you can select the „Add user via“ checkbox to add your desired values to the list of user vias.
With this modifications to the KiCad source code I think I should be able to finish routing my DDR3 signals.
The issue with measuring the tracks still is on my list of things to do. Placing micro vias in a sensible way was more important to achieve though.
To try out the changes for yourself you can find the source code here
Ich habe meine erste Änderung im KiCad Quelltext als Patch in die Mailingliste gegeben. Diese Änderung ermöglicht es den Via Eigenschaften Dialog dazu zu verwenden, den Via Typ, Start- und Endlage, sowie die Bohr- und Kupferdurchmesser festzulegen.
Ändern des Via Typs |
Ist der Netzklassen Durchmesser der Via kleiner als der angegebene Wert, wird eine Meldung angezeigt, mit der die Größe der Netzklasse übernommen werden kann. Das ist hilfreich, wenn eine Micro-Via zur Through-Hole werden soll, denn die ist meistens größer als die Micro-Via.
Der Patch befindet sich gerade in der Diskussion und wird eventuell in leicht abgeänderter Form in der nächsten Zeit integriert.
Wer den Dialog selbst mal ausprobieren möchte, findet das Projekt hier.
Ich bin gerade dabei ein relativ komplexes Design in KiCad zu entwicklen. Es handelt sich dabei um ein i.MX7 Prozessor mit DDR3 Anbindung. Für DDR3 sind einige Designrichtlinien einzuhalten. Diese sind neben der Leitungsimpedanz (50 Ω Transmission Line und 100 Ω Differantial Line) auch die Länge der einzelnen Signalgruppen und des Clock Signals. Darüber ein Überblick zu behalten ist nicht leicht. KiCad hat keine Funktion einfach diese Constraints zu checken und zu verwalten. Zum Glück handelt es sich um ein Open Source Projekt und daher habe ich den Versuch gestartet, pcbnew mit den nötigen Funktionen auszustatten. Ziel ist es einen angenehmen Routing-Vorgang solcher komplexen Schaltungen zu erhalten. Dazu gehören neben der Verwaltung der Constraints auch noch andere Features:
Ich möchte einige Änderungen in KiCad einfügen und dazu will ich mir die aktuellste Version aus dem Sourcecode übersetzen. Das ganze werde ich mit Ubuntu 17.4 durchführen. Dazu benötigen wir aber erst mal ein paar zusätzliche Funktionen
sudo apt install build-essential libwxbase3.0-dev libwxgtk3.0-dev libglew-dev libglm-dev libcurl4-gnutls-dev libcairo2-dev libboost-all-dev swig python-wxgtk3.0-dev doxygen libssl-dev git cmake
Mit all diesen Bibliotheken können wir nun anfangen den Code herunterzuladen, für unser System zu konfigurieren und zu übersetzen. Dazu laden wir den aktuellsten Code vom Git Repository herunter:
git clone -b master https://git.launchpad.net/kicad
Danach legen wir einen Ordner an in dem wir die Übersetzung vornehmen möchten und konfigurieren unsere Umgebung:
cd kicad
mkdir -p build/debug
cd build/debug
cmake -DCMAKE_BUILD_TYPE=Debug \
-DKICAD_SCRIPTING=ON \
-DKICAD_SCRIPTING_MODULES=ON \
-DKICAD_SCRIPTING_WXPYTHON=ON ../..
Wenn das dann durchgelaufen ist, können wir die eigentliche Übersetzung starten:
make
Der Prozess kann je nach Systemleistung einige Zeit dauern. Bei mir waren es ca. 30 Minuten. Nach Fertigstellung der Programme stehen sie in dem aktuellen Ordner zur Verfügung. Installieren kann man dann KiCad mit dem Befehl
sudo make install
Das nächste mal schauen wir dann, wie wir den Quellcode bearbeiten können um ein weiteres Menüfenster hinzuzufügen.
Ich habe mir (mal wieder) einen neuen 3D Drucker gekauft. Diesmal ist es kein FDM Drucker, wie die letzten, sondern ein SLA Drucker. Dieser druckt mit Licht in ein Harz. Es funktioniert also ganz anders als der Druck mit der Plastikschnur durch die CNC-Heisklebepistole.
Der Wanhao D7 (Amazon) ist der im Moment günstigste SLA Drucker und kostet zur Zeit ca. 550€ für die Version 1.3. Die neuste Asuführung, Version 1.4 ist für ca. 600€ bei Amazon zu bekommen. Direkt an die Haustür. 3 Tage Versand, Kein Zoll, kein Porto, keine Gebühren.
Im Set der Version 1.3 befindet sich folgendes: Oben links ist der lichtdichte Deckel, rechts daneben der eigentliche Drucker. Es sind 200ml Harz im Lieferumfang enthalten, ebenso wie ein lichtdichter Becher zum abwaschen des gedruckten Teils von überflüssigem Harz. Ein Schraubenzieher und Spatel gehören ebenso wie USB- und HDMI-Kabel zum Lieferumfang. Das externe Netzteil besitzt 60W und wird mit einem Stecker für britische Steckdosen geliefert. Hier passt aber jeder Kaltegeräte Netzstecker (Amazon). Zum Drucker gehört dann noch das Harzbecken und der Druckstempel. Zum Harzbecken gibt es noch eine Ersatzfolie. Der Stempel ist das Druckbett und misst 118x75mm.
Daneben sind noch zwei Latex Einweghandschuhe im Set, da das Harz alles andere als harmlos ist.
Also erst mal das Gehäuse aufschrauben. Der Deckel des Gehäuses ist mit 4 kleinen Schäubchen befestigt, für die ich keinen passenden Innenschskant-Schlüssel hatte, der 2mm war etwas zu klein und ist durchgerutscht. Aber ein T8 Torx tuts auch. Mit dem Deckel ab hab ich das lose Kabel auch schnell wieder auf den Endschalter stecken können. Strom dran und siehe da, die kleine LED auf dem Enschalter leuchtet rot. Das hat sie vorher nicht getan.
Das Streulicht der UV-LED ist ziemlich groß, deshalb ist es wichtig, dass das Gehäuse ebenso lichtdicht ist. Alles wieder zusammen bauen und erst mal einen Trockenlauf testen
Doch bevor es ans Drucken geht benötigt man noch einige Betriebsmittel. Um das gedruckte Objekt später von Resten des Harzes befreien zu können muss es mit Alkohol abgewaschen werden. Dazu braucht man Reinigungsalkohol (Amazon) in größeren Mengen. Auch sind immer Handschuhe zu tragen, daher gleich mal ein paar mehr und am Besten welche die nicht aus Latex sind. Latex ist nicht sonderlich resistent gegen Alkohol und das Harz. Daher lieber welche aus Nitril (Amazon), die sind etwas beständiger.
Das Harz wird in die Schale gegeben und der Druckstempel darin versenkt. Dann kann es auch schon los gehen. Der Arbeitsplatz muss unbedingt gut gelüftet sein, während dem Drucken entstehen Dämpfe, die alles andere als angenehm sind. Außerdem sind die Dämpfe nicht gesund.
Der Arbeitsplatz für den ersten Druck ist vorbereitet und der Drucker läuft. Nach 3 Stunden das Ergebnis. Von der Druckplatte gelöst und in Alkohol gereinigt. Dann 10 Minuten im Alkohol in die Sonne gestellt, dadurch härtet das Harz noch weiter aus und schlussendlich An der Luft getrocknet. Das Becken, den Stempel und alles andere, das mit dem Harz in Berührung gekommen ist, habe ich mit Alkohol und Zewa gründlich abgewischt. Die Harzreste können in die lichtundurchlässige Flasche zurückgegossen werden.
Ich versuche gerade ein Android Image für den i.MX7 auf meinem Nokia Retro Fit Board zu bauen. Das Buildsystem für Android ist gigantisch. Es besteht aus über 100 Git repositories, die mit Hilfe eine Tools heruntergeladen werden. Dazu benötigt man über 90GB Festplattenspeicher! Zusätzlich zu Android benötigt man auch noch den Linux Kernel und die passenden Patches um das originale Android und Kernel auf die CPU anzupassen auf der das System später laufen soll. Das alles dauert eine ganze Zeit, bis es einmal steht. Anschließend muss das System aus dem Quellcode kompiliert werden. Damit man nicht jede einzelne Datei selbst kompilieren muss, gibt es auch hierfür ein Tool, dass den Prozess automatisiert. Dieses Tool, mit dem Namen ‚lunch‘ geht durch die Verzeichnisstruktur und sammelt alle Informationen, welche Dateien für welches System wann kompiliert werden sollen. Danach wird noch ermittelt, welche Dateien zum System Image hinzugefügt werden sollen und zum Schluss in welchem Format das System Image erzeugt werden soll. Wenn das alles fertig ist, dann kann der Prozess starten, der aus dem Android Open Source Project ein Firmware Image erstellt, dass auf einem Embedded System lauffähig ist.
Ich habe den Prozess, wie man zu der passenden Buildsystem kommt hier dokumentiert:
https://github.com/DasBasti/NokiaRetrofitAplications
Jetzt bin ich dabei herauszufinden, wie man das Android anpasst, sodass es nicht für das Sabre Board baut, sondern für meine Hardware mit meinen Treibern und meiner Boot Konfiguration. Danach werde ich versuchen, das System auf Android Wear umzustellen, da das für so kleine Bildschirme wie ich ihn verwenden möchte optimiert ist. Wie das geht weiß ich noch nicht. Aber ich werde es versuchen.
Android im Simulator |
Ok, zugegeben. Das ganze Projekt ist ziemlich lächerlich, aber trotzdem ein interessanter Ansatz. Nicht umsonst gibt es für Android eine Hardware Mindestvoraussetzung, die unter Anderem auch die Displaygröße vorgibt. Das sind für gewöhnliche Android Hardwaren mindestens 426 x 320 pixel. Anders sieht es aber bei Android Wear aus, der Version für smart watches. Ich werde also weiter in Richtung Android Wear schauen, dort ist der Android App Starter besser aufgebaut und mit den Eingabe-Buttons des Nokias kann man sicherlich alle wichtigen Funktionen abbilden. Es sind immerhin mehr als an einer Armbanduhr.
Zum Schluss noch ein kleines Video, dass euch die Hardware ein wenig näher bringen soll.
Ich bin dabei ein Mainboard zu designen, dass sich als Nachrüstbausatz in ein Nokia 3210 einbauen lässt. Es wird das Nokia mit Android versorgen und ein OLED Display mitbringen. Anders als in einem früheren Beitrag werde ich kein STM32 Mikrocontroller, sondern einen Applikationsprozessor mit allem was dazugehört verwenden. Ziel dieser Übung ist es ein i.MX7 Board zu designen, zu layouten und mit Software in Betrieb zu nehmen.
In den letzten Tagen habe ich das Github Repository umgestellt, um die Symbole, Footprints und Software nicht im Board Repository zu haben. Ich hoffe so lässt es sich besser verwalten.
DDR3L Schaltung für das Retro Fit Board |
Schaltplan für PMIC und DDR3 sind fertig. Alles andere muss noch vom Schaltplan für den STM32 chip konvertiert und neu verdrahtet werden. Diesmal wird das TI-BLE/WIFI Modul WL1807MOD wieder zum Einsatz kommen. Die aktuellen Daten sind bei Github zu finden. Außerdem poste ich Updates auch auf meinem Hackaday.io Profil.
Von Itead.cc gibt es seit einiger Zeit verschiedene WiFi Smart Home Geräte. Einige dieser habe ich auch bei mir im Einsatz:
Allerdings läuft bei mir nicht die originale Firmware sondern Espurna. Diese gibt es aktuell in der Version 1.7 und stellt für mich alle gewünschten Funktionen bereit.
Das Beste daran ist, dass die Firmware ohne Anpassungen mit Home Assistant kompatibel ist.
Hier mein Workflow für den Sonoff POW
Als erstes wird das Sigel gebrochen. Zurückschicken lohnt sich eh nicht.
Auf der Platine sind am Rand vier Punkte zu sehen. Diese sind folgendermaßen belegt:
Ein USB auf Serial Konverter mit 3.3V Signal (Amazon) wird angeschlossen. Wichtig ist, dass die Platine nicht von Außen mit Strom versorgt, oder sogar noch am Netzkabel hängt! Mit gedrücktem Knopf wird die Versorgungsspannung zugeschaltet. Jetzt befindet sich der ESP im Bootloader Modus und kann neu programmiert werden. Das mache ich mit Atom, der PlatformIO IDE.
Nachdem das Firmware Image geladen wurde, wiederhole ich die Prozedur mit Versorgungsspannung stecken, während der Knopf gedrückt ist. Jetzt ist das Dateisystem an der Reihe, das beinhaltet die HTML Applikation zum Steuern der Schalter und anzeigen der Sensordaten.
Wenn dann das Dateisystem geflasht wurde, startet die Software einen WiFi Access Point. Mit dem Passwort „fibonacci“ kann man sich dort anmelden. Mit dem Netzwerk verbunden kann man das Gerät unter der Adresse 192.168.4.1 erreichen. Dort muss das Standardpasswort geändert werden und ein neues vergeben. Anschließend kann man unter dem Menüpunkt WiFi das gewünschte WiFi Netzwerk eintragen, in dem sich der Schalter aufhalten soll.
Anschließend befindet sich der Schlater im Netzwerk. Unter MQTT kann dann noch die Adresse des MQTT Brokers eingetragen werden. Dieser übernimmt die Kommunikation zwischen den Geräten und Home Assistant.
Die Konfiguration für Home Assistant wird um folgende Punkte erweitert:
homeassistant:
#[…]
customize:
sensor.sonoffpowa03803_leistung:
friendly_name: Leistung
sensor.sonoffpowa03803_spannung:
friendly_name: Spannung
switch:
– platform: mqtt
state_topic: „/Herbert/switch/SONOFF_POW_A03803/relay/0“
command_topic: „/Herbert/switch/SONOFF_POW_A03803/relay/0“
name: „sonoffpowa03803_relay„
qos: 0
payload_on: „1“
payload_off: „0“
sensor:
– platform: mqtt
state_topic: „/Herbert/switch/SONOFF_POW_A03803/voltage“
name: „sonoffpowa03803_spannung“
qos: 0
unit_of_measurement: „V“
– platform: mqtt
state_topic: „/Herbert/switch/SONOFF_POW_A03803/power“
name: „sonoffpowa03803_leistung“
qos: 0
unit_of_measurement: „W“