Jump to content
elektro-skateboard.de

Controllereigenbau + Bluetooth + Arduino


barney

Empfohlene Beiträge

Geschrieben

Chrizz und Ich haben in einer Runde der Verwirrung den möglichen Aufbau des Controllers diskutiert und folgende Idee entwickelt:

 

* Die Elektronik und das Display werden an den Unterarm geschnallt. Dort wird eine Anschlussbuchse für den Geschwindigkeitsgeber vorgesehen. Es kann dann z.B. ein Nunchuk-, oder Carrera Controller angeschlossen werden. Durch den allgemeinen Anschluss kann alles verwendet werden, was ein Poti hat. Warum? Ich fahre nur mit Schutzkleidung und da muss der Controller (Geber) so klein wie möglich sein. Der Nunchuk hat sich in seiner Bauweise bei mir sehr gut bewährt. Der Nunchuk muss natürlich intern umgelötet werden, da das i2c-Protokoll dann nicht mehr benötigt wird. Preiswert ist der Nunchuk auch. Durch das Display am Arm ist ein bequemes Ablesen, wie bei einer Armbanduhr möglich. Für diejenigen, mit geringer Sehschärfe, können dann ein größeres Display verwenden. Ab > 2 Zoll bekommt man auch Touch. Das ist aber eine andere Geschichte......

 

Für die Tasche den Begriff "Unterarmtasche" suchen.

 

Mit diesem Aufbau, sollte für jeden eine passende Lösung dabei sein.

Geschrieben

Beide Routinen, die Fernbedienung und das Display zusammengeführt. Mit Kommentar ca. 490 Zeilen. Nur 20 Zeilen weniger als die Arduino Nunchuk Motoransteuerung. Einige Anschlüsse müssen noch umgelötet werden, dann kann ich die FB-Seite mit meinem Handy als Dummy Empfänger testen und prüfen ob der Mikrocontroller das alles zeitlich schafft. Ich bin gespannt.

 

Am Arduino ist nur noch ein Pin frei. Das nenne ich mal effektiv ausgelastet.

 

Morgen geht es weiter....

Geschrieben

Fallen über Fallen,

 

natürlich muss man wissen, dass bei Verwendung der SPI-Lib, die für das Display benötigt wird, der Pin 12 nicht zur Verfügung steht. Nach einer halben Stunde wusste ich das dann auch. Also nochmal löten. Nachdem der Parser jetzt auch Befehle für das Display versteht und alles leuchtete und funktionierte, kam die erste Ernüchterung auf dem Handydisplay. Die Daten kommen nicht zeitlich äquidistant hinein, sondern paketweise. :mad:

 

Erste Analyse; Das dämliche Display. Dämlich, da es ohne Mikrocontroller nicht mal einen Pixel zeichnen kann. Macht alles der Arduino. Jeder Buchstabe wird Pixelblock weise geschrieben und kostet dadurch nun mal viel Zeit. Also das Programm umgeschrieben. Die Textausgabe, BarCharts und der Graphen Spannung Strom wird nicht mehr als Block aufgerufen und ausgegeben, sondern häppchenweise. Die 7 Messwerte und deren Charts werden jetzt einzeln, nach Seriellen Versand der Steuerdaten mittels BT, ausgegeben. Ergebnis; eine deutliche Besserung des Ausgabeverhalten der Steuerdaten. Aber noch nicht befriedigend!

Also die Trickkiste herausgeholt; Die BarCharts habe eine Diät hinter sich und sind nur noch halb so hoch. Der Takt der SPI-Schnittstelle wurde verdoppelt. Eine weitere Verbesserung, aber immer noch nicht optimal.

Weitere Trickkiste; zwei Arduinos? Einer für das Display, der andere für die Steuerdaten?

 

Vorgehensweise; jede Routine, die ich für CPU zeitaufwändig halte, wird mittels Zeitmessung einzeln untersucht und ggf. optimiert, wenn es geht. mal sehen....

 

Die SD-Karte ist damit gestorben. Die frisst zufiel CPU-Zeit.

 

Ärgerlich, dabei sieht das Ganze optisch so angebermäßig aus.

 

VG

 

Barney

Geschrieben
Sabber, lechts

 

Externe Links nur für Mitglieder sichtbar

 

 

Der Sollte wohl alles locker schaffen...

:D für große Jungs

 

Oder nen Xmega. Da gibts immerhin schon 32 MHz. Und er ist programmier-technisch sehr nahe an den Atmegas dran. Wenns was fertiges sein soll, hab ich das auf die schnelle gefunden:

Geschrieben

Hi Beatbuzzer,

 

danke auch nicht schlecht, ich möchte aber ab sofort mit 32 Bit arbeiten. Warum auf der Nebenstraße fahren, wenn eine vierspurige Autobahn möglich ist....:D

 

Nein, es geht um die Verfügbarkeit des Produktes....

Geschrieben

Der Teensy 3.1 ist bestellt. Die Arduino IDE wurde auch schon fit gemacht. Hoffentlich wird der Teensy keine Enttäuschung. Kann ich mir aber mit 48/96MHz nicht vorstellen. Zumal, dass er als 32bit Prozessor mit Floats besser zurechtkommt. Der Preis ist auch nicht schlecht 18.50 €

Geschrieben
Zumal, dass er als 32bit Prozessor mit Floats besser zurechtkommt.

Sowas kostet natürlich übel Zeit. Kommst Du da nicht auch mit bit-shift zurecht und dann den Punkt nur in der Ausgabe mit reinbasteln? Spart wertvolle Takte, wenns schon kritisch ist.

 

Aber der 32-bitter interessiert mich auch, wenngleich da bei mir das know-how fehlt. Gibts bis Samstag eigentlich schon ne alpha-Version zum Vorführen? :)

Geschrieben

Ein pre Alpha-Version des Controllers habe ich am Samstag mit dabei. Ist aber nicht im Empfänger implementiert! Ich habe dann auch mein Lappi und Lötkolben bei ggf. Logicanalyzer usw...

 

Lies dir mal die Eigenschaften vom Teensy durch in Bezug auf Math und DSP.

Geschrieben
Sowas kostet natürlich übel Zeit. Kommst Du da nicht auch mit bit-shift zurecht und dann den Punkt nur in der Ausgabe mit reinbasteln? Spart wertvolle Takte, wenns schon kritisch ist.

 

Hi Beatbuzzer,

 

ich denke beim Programmieren, durch meine Alttätigkeit immer noch so, als würde ich einen ACSIC oder FPGA machen. Dabei versuche ich mir immer vorzustellen, wie der Compiler das Ganze übersetzt und wie es in Hardware (Gattern) aussehen würde. Also wenn es geht, benutze ich sehr stark angepasste Typen und gehe sparsam mit den Floats um. Wenn ich die Arduino Libs sehe, oder die Beispiele zur programmierung, wird mir oft schlecht. Nicht dass ich ein ausgeprägter Programmierer bin, aber muss man für einen Zähler, der bis 10 zählt ein int verwendet? Wie soll im 8Bit Prozessor so was aussehen? Durch Nutzung von Byte und unsignd int wurden die Programme deutlich kompakter und schneller. Es fehlt leider der Bit-Typ. Bei FPGAs und ASICs war ich eine Gleichzeitigkeit der Prozesse gewohnt, die ich hier leider deutlich vermisse. Jetzt noch einen Teensy finden, der einen FPGA von Xilinx drauf hat..... Oder einen Mehrkernigen Teensy...

 

VG

 

Barney

Geschrieben

uploadfromtaptalk1391109906137.thumb.jpg.82a4a2adc47453ec3dd0134bc46afbcc.jpg

 

Mit dieser Baugröße hatte ich nicht gerechnet.

Und wenn man zufällig ein 32.768 kHz Quarz zur Hand hat, ist eine Batteriebetriebene RTC möglich.

 

Und so viele Analogpins, das eine Akku Einzelzellen Überwachung möglich ist. Es kommen schon viele neue Ideen auf....

Geschrieben

Eigentlich müsste ich ein neues Thema aufmachen. Der Teensy schleimt sich langsam aber sicher bei mir ein. bei 48MHz Takt ca. 23mA und bei 96MHz ca. 32mA Stromverbrauch. Vielen Projekte konnten gleich oder nach einspielen aktueller Libs genutzt werden. Ich musste erst mal dahinter kommen, dass die "alten" Libs im Projektverzeichnis die aktuellen Libs des Teensies überschreiben und damit dann nicht sich kompilieren lassen.

 

Zum Thema Display, der SPI-Anschluss lässt sich gnadenlos übertakten. Mit dem Arduino DUE habe ich den Takt auf 21 MHz hochgetaktet. Beim Teensy waren es immerhin 24 MHz. Ich habe es nicht nachgemessen, dass Display war deutlich schneller im Bildaufbau. Spezifiziert ist es aber nur bis 8 MHz! :devil:

 

Mit drei Timern kann man zeitgetrennte ISR Routinen laufen lassen. Damit wird die Routine für die Display Ausgabe in kleine Abschnitte granuliert. Dann noch die Übertragungsroutine in eine eigene ISR-Routine und es sollte dann alles zeitlich passen.

 

Die Displayausgabe mit den Messwerten funktioniert schon mal einwandfrei auf den Teensy 3.1

Die Übertragung konnte ich nicht testen, da ich leider recht Prozessor nah die ISR-Routine parametriert habe und diese sich dann nicht auf einem anderen Target kompilieren lässt. Was solls ein Substitut dafür wurde gefunden, weiter gehts in den nächsten Tagen. Bin guter Dinge.....

Geschrieben

Die Fernbedienung steht. Ich habe im PJRC Forum eine neue Lib für die Displayansteuerung bekommen. Damit läuft die SPI nicht nur mit 24 MHz, sondern auch Hardware naher, mit einem 8 Byte Sendebuffer. Endlich eine äquidistante Ausgabe der Messwerte mit einer Genauigkeit von 12 Bit! D.h. der Joystick, sowie die Akkuspannung werden wesentlich genauer aufgelöst.

 

Die Empfangsroutine wurde ersten Anpassungen unterzogen. Die ISR Routine und die PWM Signalausgabe wurde sehr Register nah programmiert. So was ist immer daneben beim Plattform Wechsel.

Das ist aber jetzt Geschichte!

 

Jetzt muss "nur" noch der Nunchuk durch die neue FB ersetzt werden. Die Auflösung hat sich massiv verändert, da stimmen so manche Berechnungen nicht mehr und Rückantworten an den Nunchuk gab es vorher auch nicht.

  • 2 months later...
Geschrieben

Hi Barney

 

So nachdem ich nun alles bereits das zweite Mal durchgelesen habe, natürlich die Frage:

Wie lautet der aktuelle Stand.

Ich möchte über den Nunchuk 2 Funktionen ansteuern:

Gas (Beschleunigung)

Lenkung

 

Bremsen, Hupe ;) , und dergleichen benötige ich nicht.

Die Idee mit dem Display finde ich super.

Würde mich tierisch freuen, nen aktuellen Stand zu sehen!

 

Schönen Abend Dir

 

Fabian

Geschrieben

Hallo Fabian,

 

der Stand ist wie folgt:

-> Der Sender funktioniert, wie ich es mir vorstelle. Das Protokoll ist in der Software offengelegt und kann für eigene Anwendungen verwendet werden. Was du mit den Tastern oder den Joystick / Poti machst, ist deine Sache. Da gibt es keine Vorgaben. Wenn du über den BT-Kanal Rückwerte an die Fernbedienung sendest, werden diese, wie in den Fotos visualisiert.

 

Jetzt fehlt die Fangfrage: Wo ist der Empfänger? Bisher habe ich noch keine Zeile dafür geschrieben, weil ich derzeit am BLDC mit dem Toshiba Sigma arbeite. Das ganze ist modular aufgebaut. Es wird einen Teensy 3.1 für die FB geben, einen für den Empfänger und einen gekauften oder eigenen BLDC. So ist derzeit meine Planung. Ob Du die Sensoren einbaust, wie ich vorgesehen habe, bleibt dir überlassen. Ob die Daten des Empfängers an ein Handy zusätzlich auskoppelst, auch.

 

Für die FB fehlt mir noch ein wenig Näharbeit. Ich will das ganze als Manschette am Unterarm auslegen. Als Geber werde ich wahrscheinlich einen kabelgebundenen Nunchuk nehmen, der an die Manschette angeschlossen wird. Dann kann das Teil ein nicht aus der Hand fallen.

 

Kurzum, du kannst die Software gerne bekommen, wenn du willst.

 

VG

 

Barney

Geschrieben

Ausgabe:
Index (32Bit);1 Wert analog X-Achse (10Bit); 2 Wert analog Y-Achse; 3 Wert analog Z-Achse; 4 Wert analog UBatterie;
1 Bit digital I/O; 2 Bit digital I/O; 3 Bit digital I/O; Kommando Status Output01;
Kommando Status Output02; Kommando Status Output03; Kommando Status Output04;"/r/n"
23948;521;521;512;850;0;1;0;1;3;2;0/r/n
-> Heißt Taste 1 gedrückt, Joystick X/Y/Z Mittelstellung (512), Akku fast voll (850);
Der fortlaufende Index soll einen Funkabriss aufzeigen.

Rücksendekanal:
Output01 bis Output03
1 Output Channel(Byte) Command(Byte) Value(Byte)
1 3 10<CR> -> Ausgang 1, blinken, Intervall 1000ms auf Wunsch auch in Komma Trennung

Command fuer die Ausgangspins:
0 -> Aus
1 -> An
2 -> Flash (fuer die Zeitdauer Value)
3 -> Blink (fuer das Interval Value) (z.B. blinken, Piezo piepst langsam)
4-255 -> aus

Value (Byte) 10ms Wertigkeit

Werteuebergabe an das Display
Fuer die Anzeige der Messwerte als text oder Grafik werden folgende Informationen
benoetigt.
ValueNumber -> was soll angezeigt werden, (1:Ub, 2:I, 3:Pm, 4:Pa, 5:Tm, 6:Ta, 7:Ufb)
(Ub -> UAkku,I -> Strom,Pm -> Leistung momentan,Pa -> Restkapazität
,Tm -> Temperatur Motor; Ta -> Temperatur Akku ;Ufb -> UFernbedienung kommt von hier)
Value     -> den Messwert ansich
ValueMin  -> wie klein kann der Wert werden
ValueMax  -> wie gross kann der Wert werden
ValueColor-> mit welcher Farbe soll der Wert angezeigt werden
Die Werte des Arrays werden über [X][Y] und Wert verändert
10;0;265/r/n
Bedeutet Ub 10,0 (10-10,0)[0,0] Bekommt den Wert 265 (26,5V)

24.01.2014 Bareny
*/

#define BAUDRATE 115200   // Festsetzen der Datenrate für die Arduino Debug Schnittstelle und oder Bluetooth Modul


// Display Anschluesse
//#define sclk 13         // Dummy Hinweis, an welchen Pin das Display angeschlossen wird
//#define mosi 11         // Dummy Hinweis, an welchen Pin das Display angeschlossen wird
#define cs   10           // Pin 10 fuer Chip Select
#define dc   9            // Pin 12 will an mehren Board nicht
#define rst  A5           // ist am Arduino Reset Pin angeschlossen
Adafruit_ST7735 tft = Adafruit_ST7735(cs, dc, rst);
// Eingaenge analog
#define Pin_Y_Achse A0    // Pin A0 Joystick Y-Achse
#define Pin_X_Achse A1    // Pin A1 Joystick X-Achse
#define Pin_Z_Achse A2    // Pin A2 Z-Achse
#define Pin_Ubatt   A3    // Pin A3 UBatterie
// Eingaenge digital
#define Pin_Input01 6     // Pin 6 Joystick Taster
#define Pin_Input02 7     // Pin 7 Taster schwarz
#define Pin_Input03 8     // Pin 8 Taster rot
// Ausgaenge digital
#define Pin_Output01 3    // Pin  3 LED rot
#define Pin_Output02 4    // Pin  4 LED grün
#define Pin_Output03 5    // Pin  5 Piezo Buzzer
#define Pin_Output04 2    // Pin  9 Vibrationsmotor

 

Ich Schlumpe, die Joystick Auflösung beträgt sogar 12Bit

-> analogReadResolution(12); // analoge Auflösung 12 Bit

Geschrieben

Hi Barney

 

Danke für die schnelle Antwort.

Jetzt nehmen wir mal an, ich möchte alles Funktionen haben und auch alles was Du Dir noch einfallen lässt :D

Ein kabelloser Nunchuk ist vorhanden, ebenso ein paar Basics von Arduino Teilen.

Was benötige ich jetzt für das selbige vorhaben?

Entspricht dieses Display Deiner Version?

Externe Links nur für Mitglieder sichtbar

 

Was müsste ich bis auf den Nunchuk besorgen um das Ganze 1:1 aufbauen zu können.

 

Nähen, hast Du jemanden an der Hand?

Damit könnt ich vielleicht dienen.

Als Basis vielleicht ein Handgelenkprotektor "wie früher von ROCES" und dann auf die Oberseite das Display?

 

Ciao

Fabian

Geschrieben (bearbeitet)

Du benötigst:

 

1 x Display (wie du es gefunden hast!)

2 x 7805 am besten als Schaltregler R-78 5.0-1.0 Segor ->

Externe Links nur für Mitglieder sichtbar

2 x Teensy 3.1

2 x HC05 BT-Kontroller

4 x 2 Farb LED

2 x 2 Taster verschiedene Farben

1 x Poti-Joystick wie von Conrad oder Segor ->

8 x 330 Ohm Widerstände

 

Optional:

1 x 1 Poti 10k

1 x Vibrationsmotor (Achtung MOSFET als Treiber vorschalten!)

1 x Piezosummer

1 x Nunchuk Kabelversion!

 

Zum testen ein Handy mit BT-Terminal App

bearbeitet von barney
Geschrieben

Hi Barney

 

Da das BT Modul etwas schwer zu bekommen ist in der Schweiz, würde ich auf ein andere BT Modul umswitchen.

Denke das sollte keine grossen Probleme darstellen.

Das folgende Modul würde ich verwenden:

Externe Links nur für Mitglieder sichtbar

Sollte auch möglich sein für einen Versuch?

 

Dann werde ich alles mal bestellen, wenn ich von Dir das i.O. bekomme :thumbsup:

 

Bin schon gespannt...

 

Grüsse

Fabian

Geschrieben

Hi Barney

 

Teile sind alle bestellt. Auch ein Arduino Kit ist bestellt.

Ich muss mich ja erst mal richtig vertraut machen.

Für alle Nachbauer wie mich (mit wenig Kenntnissen) wäre es noch hilfreich, wenn Du bitte die ein oder andere Hilfestellung wegen der Verdrahtung geben könntest.

Gerne kannst Du es auch skizzieren?

Sorry, als Ingenieur Maschinenbau kommt man sich einfach "nackt" vor wenn es um Strom und programmierbare Logik geht.

Das ist sozusagen der Supergau - das Traurige:

Ich konnte das alles mal vor ein paar Jahren noch....

 

Ich danke Dir vielmals & Respekt für Dein Schaffen!!!

 

Liebe Grüsse

Fabian

Geschrieben
Hi Barney

 

Da das BT Modul etwas schwer zu bekommen ist in der Schweiz, würde ich auf ein andere BT Modul umswitchen.

Denke das sollte keine grossen Probleme darstellen.

Das folgende Modul würde ich verwenden:

Externe Links nur für Mitglieder sichtbar

Sollte auch möglich sein für einen Versuch?

 

Dann werde ich alles mal bestellen, wenn ich von Dir das i.O. bekomme :thumbsup:

 

Bin schon gespannt...

 

Grüsse

Fabian

 

Ich kann nicht zu allen Teilen was sagen, wichtig ist nur der Master / Slave Mode. Ein Modul muss als Master umstellbar sein, damit er eine Verbindung zur FB aufbaut. Dein Smartphone kann sowas. Damit kannst du dann die FB testen und die LEDs oder den Piezo ansteuern.

Geschrieben
Hi Barney

 

Teile sind alle bestellt. Auch ein Arduino Kit ist bestellt.

Ich muss mich ja erst mal richtig vertraut machen.

Für alle Nachbauer wie mich (mit wenig Kenntnissen) wäre es noch hilfreich, wenn Du bitte die ein oder andere Hilfestellung wegen der Verdrahtung geben könntest.

Gerne kannst Du es auch skizzieren?

Sorry, als Ingenieur Maschinenbau kommt man sich einfach "nackt" vor wenn es um Strom und programmierbare Logik geht.

Das ist sozusagen der Supergau - das Traurige:

Ich konnte das alles mal vor ein paar Jahren noch....

 

Ich danke Dir vielmals & Respekt für Dein Schaffen!!!

 

Liebe Grüsse

Fabian

 

Und für was brauchst du einen Arduino? Es wird nur ein Teensy 3.1!!! benötigt. Dieser lässt sich mit der Arduino Software 1.0.5 programmieren, wenn du die Erweiterung von PJRC 1.8 installierst.

Die Verdrahtung werde ich noch in der Erklärung der Software wie immer mit hinein schreiben.

 

Es wird dir hoffentlich viel Freude machen!

Geschrieben

Teensy 3.1:

 

Bitte daran denken, dass die analog Ein- und Ausgänge des Teensy 3.1 einen Spannungsbereich von 0..3,3V haben und nicht 5V tolerant sind! Die digitalen Ausgänge geben 0..3,3V aus, können aber eingangsseitig mit 0..5V angesteuert werden!

Tritt dem Gespräch bei

Du kannst jetzt posten und dich später registrieren. Wenn du bereits einen Account hast kannst du dich hier anmelden.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...