barney Geschrieben 14. August 2013 Geschrieben 14. August 2013 Erste Gedanken:  Ich habe gestern einen Nunchuk Controller zerlegt. Der Arduino Mini und ein BT-Modul passen hinein.  Folgende Funktionen stelle ich mir vor:  Von den 12 digitalen I/O: 1. zwei Taster -2 2. eine Zweifarben LED fĂŒr den Status -2 3. Piezo Summer -1 Rest 7  vier analoge I/O: 1. Joystick -2 2. Spannung des Akkus -1 Rest 1  Datenausgabe: Es sollen mindestens 10 Abtastungen die Sekunde ĂŒbertragen werden. Um die Entwicklung zu vereinfachen, wird eine schlichte Textausgabe durchgefĂŒhrt. Dann kann wie bei der Telemetrie mit den Handy die Verbindung ĂŒberprĂŒft werden.  Ausgabe: #Index (16Bit);Bit digital I/O 1;Bit digital I/O 2;Bit digital I/O n....;Wert analog 1(10Bit);Wert analog 2;Wert analog 3;Wert analog 4;<CR> 2010;1;0;0;0;0;0;0;0;0;0;0;0;512;512;850;0;<CR> -> HeiĂt Taste 1 gedrĂŒckt, Joystick X/Y Mittelstellung (512), Akku fast voll (850) Der fortlaufende Index soll einen Funkabriss aufzeigen.  RĂŒcksendekanal: Die Zweifarben LED und der Piezo 1;1;0 -> In der LED beide Chips an (1;1), Piezo aus (0)   Software: Init Routine fĂŒr BT-Modul: 1. Namensvergabe: Nunchuck 2. Baud Rate festlegen 3. Pairing mit Arduino Controller BT-Modul durchfĂŒhren.  Rest folgt  Bevor ich loslege, hat jemand noch eine Idee, die ich mit einbauen sollte? Vibrationsmotor?   VG  Barney  Hallo das o.g. hatte ich ja schon mal geschrieben. Ich möchte ein neues Projekt eröffnen, mit einen völlig eigen designten "Controller". Wer hat Lust einen Controller-GehĂ€use zu entwerfen, welches per 3D-Druck hergestellt wird? Es sollte an Nunchuk angelehnt sein und mit SicherheitsausrĂŒstung zu nutzen sein!  Bauteile sind: 1. Externe Links nur fĂŒr Mitglieder sichtbar 2. Joystick Soft-Touch-Knopf Schwarz 3. Arduino mini, 3.3V 8MHz 4. BT-Modul HC-05 5. Lithium Akku: Renata Lithium-Polymer Akku ICP402050PR 3.7 V 420 mAh ICP052153 (L x B x H) 52,5 x 20,7 x 4,5 mm, oder kleiner 6. zwei Taster: 7. Due/Triple-Color LED 8. Schalter On/Off 9. Buzzer (optional) 10. Vibrations-Motor (optional) 11. USB-Ladebuchse 12. 3D Print GehĂ€use  VG  Barney Zitieren
barney Geschrieben 26. Dezember 2013 Autor Geschrieben 26. Dezember 2013 neue Gedanken beim Löten:  Ausgabe: #ID; Index (32Bit);1 Bit digital I/O; 2 Bit digital I/O; 3 Bit digital I/O n...7;1 Wert analog (10Bit); 2 Wert analog; 3 Wert analog; 4 Wert analog;<CR> #ID;23948;1;0;0;0;0;0;0;512;512;850;0;<CR> -> HeiĂt Taste 1 gedrĂŒckt, Joystick X/Y Mittelstellung (512), Akku fast voll (850), Analog 4 nicht angeschlossen Der fortlaufende Index soll einen Funkabriss aufzeigen.  RĂŒcksendekanal: Die Zweifarben LED und der Piezo Index;1 Wert (Byte);2 Wert (Byte) 23948;0;0;0;0;0;0;0;1;5;0;0;4;<CR> -> In der Duo-LED LED1 an und LED2 blinken 500ms (1;5), Piezo an (4) fĂŒr 2000ms  ZustĂ€nde fĂŒr die Ausgangspins: 0 -> Aus 1 -> An 2 -> 500ms An 3 -> 1000ms An 4 -> 2000ms An 5 -> 500ms An/Aus wiederholend (z.B. blinken, Piezo piepst schnell) 6 -> 1000ms An/Aus wiederholend (z.B. blinken, Piezo piepst normal) 7 -> 2000ms An/Aus wiederholend (z.B. blinken, Piezo piepst langsam)  Das Display ist definitiv raus, da die AusgĂ€nge fĂŒr ein Display leider auf den ADC-AnschlĂŒssen liegen. LEDs und Vibrationsmotor sollten fĂŒr ein Feedback ausreichen. Telemetrie Daten werden an das Handy wie gehabt gesendet.  Momentan löte ich an einem Prototyp mit: 2 analog Achsen (Joystick) 1 Taster im Joystick 2 Taster 2 Duo-LED, davon eine fĂŒr das BT-Modul 1 BT-Modul HC-05 1 Piezo Buzzer 1 Arduino Uno 5V 16 MHz -> spĂ€ter 3.3V 8 Mhz Arduino mini ver. 5 Zitieren
barney Geschrieben 27. Dezember 2013 Autor Geschrieben 27. Dezember 2013 Die Programmierung kann beginnen! Zitieren
barney Geschrieben 29. Dezember 2013 Autor Geschrieben 29. Dezember 2013 Beim Programmieren kommen weitere Ideen auf: Es wird der derzeitige Status des Ausgangs zurĂŒckgesendet. Jeder Ausgang kann alleine Parametriert werden, damit muss keine Wissen ĂŒber die anderen AusgĂ€nge vorhanden sein. ----------------------------------------------------------------------------- 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;<CR> 23948;521;521;512;850;0;1;0;1;3;2;<CR> -> 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 -----------------------------------------------------------------------------  D.h. die AusgĂ€nge sind jetzt universeller. Es geht nicht nur an und aus, sondern auch Impuls und Intervall. Die Zeiten fĂŒr den Impuls können von 10ms bis ca 2,56 Sekunden im 10ms Raster eingestellt werden. Besonders mit dem Buzzer kann man Effekte wie bei einer Einparkhilfe erreichen.  * Es wurden drei analoge Achsen X/Y/Z und Ubatt umgesetzt * Drei Taster, davon ein Taster im Joystick * Drei AusgĂ€nge, zwei fĂŒr LEDs und einen Piezo Buzzer  Jetzt fehlt nur noch die Implementierung im Long-Board Dazu muss das EmpfĂ€nger HC-05 BT-Modul auf Master umgestellt werden. Mal sehen, wie das Ganze klappt und ob der Funkabriss (Fehlender fortlaufender Index) ein ausreichender Indikator ist.  Jetzt nur noch ein eigenes Controller GehĂ€use......  Reichweite ca. 5 Meter bis zum Handy als derzeitigen EmpfĂ€nger!  Barney Zitieren
barney Geschrieben 31. Dezember 2013 Autor Geschrieben 31. Dezember 2013 BTM-112 vs HC-05  Bis jetzt hat HC-05 gewonnen. Der Preis stimmt mit ca. 6 ⏠auch.  Jetzt nur noch den Parser schreiben... Zitieren
sonni Geschrieben 1. Januar 2014 Geschrieben 1. Januar 2014 Moin, Mit dem âąâąâąâą BT-Modul habe ich ca 20 Meter Reichweite.? Was denkst du was der Controller am Ende kosten wird? Mal ganz abgesehen von dem unermesslichen Entwicklungsaufwand . Zitieren
sonni Geschrieben 1. Januar 2014 Geschrieben 1. Januar 2014 Was hĂ€lst du von einem unkonventionellen Controllerdesign, wie z.B ein Handschutz (Druckbar)mit integriertem Controller o.Ă. Eine kleine 1W Led wĂ€re fĂŒr NĂ€chtliche ausfahrten auch ganz praktisch wenn man den Sonnenuntergang und die Ankunftszeit mal wieder unterschĂ€tz und einem dann noch ein gemeiner unsichtbarer Kabelbruch zwischen Arduino und Nunchuck quĂ€lt .   gruĂ sonni Zitieren
barney Geschrieben 1. Januar 2014 Autor Geschrieben 1. Januar 2014 Moin,Mit dem âąâąâąâą BT-Modul habe ich ca 20 Meter Reichweite.? Was denkst du was der Controller am Ende kosten wird? Mal ganz abgesehen von dem unermesslichen Entwicklungsaufwand .  Hi Sonni,  die Reichweite habe ich in der Wohnung erreicht. Da bin ich mittlerweile auf ca. 8 Meter gekommen. Ich will das Board steuern, wenn ich drauf stehe  Kosten:  *Sender: - BT-Modul HC-05 5-10 ⏠- Arduino Mini 10-15 ⏠- Taster 2x 4 ⏠- LEDs 1 ⏠- Piezo 2 ⏠- Joystick 2 ⏠- Kappe fĂŒr Joystick 1 ⏠- Akku LiIon 10-20 ⏠ GehĂ€use ?  Also zwischen 40-50 ⏠fĂŒr den Sender FĂŒr den EmpfĂ€nger ein weiteres BT-Modul HC-05  VG  Barney Zitieren
barney Geschrieben 1. Januar 2014 Autor Geschrieben 1. Januar 2014 Was hĂ€lst du von einem unkonventionellen Controllerdesign, wie z.B ein Handschutz (Druckbar)mit integriertem Controller o.Ă. Eine kleine 1W Led wĂ€re fĂŒr NĂ€chtliche ausfahrten auch ganz praktisch wenn man den Sonnenuntergang und die Ankunftszeit mal wieder unterschĂ€tz und einem dann noch ein gemeiner unsichtbarer Kabelbruch zwischen Arduino und Nunchuck quĂ€lt .  gruĂ sonni  Unkonventionell finde ich gut. Da lasse ich dir volle KreativitĂ€t. Ich hĂ€tte ein schlichtes Rohr verwendet. Ich lass mich ĂŒberraschen.... Zitieren
barney Geschrieben 1. Januar 2014 Autor Geschrieben 1. Januar 2014 Parser ist jetzt auch Fertig zum Testen. Jetzt noch die Routine schreiben, die den Funkabriss erkennt.... Â Serial2.find("/n"); Dass war die schlimmste Stelle im Parser... Hat Stunden gedauert bis ich dahinter kam. while (Serial2.available() > 0) { // Ist was im Empfangsbuffer? Serial2.find("<FB>;"); // Ist es denn die Ferbedienung? Index = Serial2.parseInt(); // Index finden X_Achse = Serial2.parseInt(); Y_Achse = Serial2.parseInt(); Z_Achse = Serial2.parseInt(); Ubatt = Serial2.parseInt(); Taster01 = Serial2.parseInt(); Taster02 = Serial2.parseInt(); Taster03 = Serial2.parseInt(); Output01 = Serial2.parseInt(); Output02 = Serial2.parseInt(); Output03 = Serial2.parseInt(); Serial2.find("/n"); // Ende der Uebertragung finden Dann den Kram ins Board basteln und in die Sonne fahren und freuen... Zitieren
barney Geschrieben 1. Januar 2014 Autor Geschrieben 1. Januar 2014 Ich habe den Vibrationsmotor vergessen  Dann noch ein Output(04) mehr! Zitieren
barney Geschrieben 2. Januar 2014 Autor Geschrieben 2. Januar 2014 Externe Links nur fĂŒr Mitglieder sichtbar ca. 3 ⏠mit MOSFET.  Dann bin ich preislich komplett. Bis auf....  Ich kann nicht anders. Mich drĂ€ngt es danach.....  SainSmart 1.8" Serial 128X160 SPI TFT LCD Modul Display + SD Socket For Arduino ca. 13 âŹ.  Und die Pins hĂ€tte ich auch noch frei!   VG  Barney Zitieren
sonni Geschrieben 2. Januar 2014 Geschrieben 2. Januar 2014 Ăber den TFT kann ja dann auch die Telemetrie ausgegeben werden... pw- geschĂŒtzter Startcode....... snake game falls der eboardakku alle ist.... Möglichkeiten ĂŒber Möglichkeiten .... GruĂ sonni Zitieren
barney Geschrieben 2. Januar 2014 Autor Geschrieben 2. Januar 2014 Ăber den TFT kann ja dann auch die Telemetrie ausgegeben werden... pw- geschĂŒtzter Startcode....... snake game falls der eboardakku alle ist.... Möglichkeiten ĂŒber Möglichkeiten ....GruĂ sonni  Wie wĂ€re es mit einem leistungsstarken Elektronen Rekombinations Quanten Emitter?  Du machst mir Angst.  VG  Barney Zitieren
barney Geschrieben 11. Januar 2014 Autor Geschrieben 11. Januar 2014 Display ist da .... Die Spannung steigt :-) Zitieren
barney Geschrieben 13. Januar 2014 Autor Geschrieben 13. Januar 2014 Erste Versuche. Unten ist leider der % Balken und Text von Ubatt nicht gut zu erkennen. 1 Zitieren
Beatbuzzer Geschrieben 13. Januar 2014 Geschrieben 13. Januar 2014 Schönes Ding! Hast Du ĂŒber Hardware SPI oder in Software (bit-banging^^) angesteuert? Ich hatte mal ein Siemens S65 Handydisplay per Software SPI an nem Atmega32 mit 16 MHz. Das taugte nur zum Schreiben von kleinen Bereichen, sonst gab es sichtbaren Bildaufbau. War eher nichts fĂŒr Echtzeit-Messwerte  Aber mit Hardware SPI und den recht kurzen Textzeilen sollte da schon was gehen. PS: Snake-Code hab ich hier fĂŒr VB-net, stammt von nem verregneten Wochenende. Das könnten wir portieren Zitieren
barney Geschrieben 13. Januar 2014 Autor Geschrieben 13. Januar 2014 Hi Beatbuzzer,  Hardware SPI! Ich ĂŒberlege noch, ob ich die SD-Karte auch anschlieĂe. FĂŒr ein Log der Daten auch nicht schlecht und es wĂŒrde die Verbindung zum Handy entfallen. Leider fehlt eine zuverlĂ€ssige Echtzeituhr, wie ich sie im Handy hĂ€tte!  Ich habe mich in die Library fĂŒr das Display eingelesen. Im Endeffekt sind alle Funktionen, Kreis-, Box, Text-zeichnen nur eine "einer" Pixel Operation. Die Geschwindigkeit ist aber ordentlich, so dass ich hoffen kann, alles in Echtzeit hin zubekommen. Da mĂŒssen noch einige Tests gemacht werden.  "Snake-Code hab ich hier fĂŒr VB-net" Sagt mir erst mal nichts, kannst Du mir das nĂ€her erklĂ€ren?  Layout -> Bis zum WE schaffe ich ein Demo-Layout zu erstellen, damit man einen Ăberblick bekommen kann, was alles angezeigt wird und wie.  VG  Barney Zitieren
barney Geschrieben 13. Januar 2014 Autor Geschrieben 13. Januar 2014 Interessant:  Der Displaycontroller ist doof wie Stroh. Keine primitiven Funktionen ersichtlich, so das die Libs, die ich gefunden habe alle auf Pixel-Operationen basieren. Hatte ich anders erwartet. Dies gibt aber auch ein die Möglichkeit sich frei auf dem Display zu bewegen. Der Text kann z.B. Pixelgenau verschoben werden. Batterien anzeigen können frei platziert werden.  Um nicht ĂŒber das Ziel hinaus zu schieĂen, werde ich den Text wie schon zu sehen war einbringen und ggf. eine Grafik mit den Strom und Spannungsverlauf, sowie eine Batterienanzeige fĂŒr die Fernbedienung.  Wenn kritische Werte erreicht werden, sollen sich die Zahlen von grĂŒn nach gelb nach rot einfĂ€rben. Der Piezobuzzer soll ja auch eine Aufgabe haben  Barney Zitieren
Beatbuzzer Geschrieben 13. Januar 2014 Geschrieben 13. Januar 2014 "Snake-Code hab ich hier fĂŒr VB-net" Sagt mir erst mal nichts, kannst Du mir das nĂ€her erklĂ€ren? Das war eher als Spass auf die Ideen von Sonni gemeint Fiel mir da grad wieder ein, dass ich mal in Visual basic fĂŒr PC nen Snake programmiert hatte.  Im Endeffekt sind alle Funktionen, Kreis-, Box, Text-zeichnen nur eine "einer" Pixel Operation. Meist gibts aber auch noch so ein "box-fill" Command. Wo man vorher mit zwei Koordinaten ein Rechteck angibt, welches dann einfach der Reihe nach mit Pixeln vollgeschoben wird. Macht aber bei Kreis und Linie nicht soviel Sinn. Bei Text evtl. schon eher, wenn man die Buchstaben immer als 5x7 Block hinterlegt. Dann könnte man eine Subroutine bauen, wo man nur noch ne Startkoordinate und zwei Farben (Font- und Back-Color) ĂŒbergibt. Zitieren
barney Geschrieben 13. Januar 2014 Autor Geschrieben 13. Januar 2014 Das war eher als Spass auf die Ideen von Sonni gemeint Fiel mir da grad wieder ein, dass ich mal in Visual basic fĂŒr PC nen Snake programmiert hatte.   Meist gibts aber auch noch so ein "box-fill" Command. Wo man vorher mit zwei Koordinaten ein Rechteck angibt, welches dann einfach der Reihe nach mit Pixeln vollgeschoben wird. Macht aber bei Kreis und Linie nicht soviel Sinn. Bei Text evtl. schon eher, wenn man die Buchstaben immer als 5x7 Block hinterlegt. Dann könnte man eine Subroutine bauen, wo man nur noch ne Startkoordinate und zwei Farben (Font- und Back-Color) ĂŒbergibt.  Snake -> ahhrg, man stand ich auf dem Schlauch  Primitives -> jup alles vorhanden, aber ĂŒber den Microcontroller! Alles Pixel fĂŒr Pixel vom Arduino aus. Ich will ja auch nicht Windows 8.1 emulieren. Zitieren
barney Geschrieben 14. Januar 2014 Autor Geschrieben 14. Januar 2014 (bearbeitet) Layout steht. Alle Daten sind Fake. Die Werteanzeigen mĂŒssen auf Parameter Ăbergabe umgestellt werden. Die Graphen werden auf Ganzzahl und Wertebereich 0 bis 10000 nomiert. Dann noch das hier in die FB Routine einbauen.  Edit:  Ub -> Akkuspannung Board I -> Strom am Akku Board Pm -> Leistung am Motor (Akku) Pa -> Akkurestleistung Ta -> Temperatur Akku Tm -> Temperatur Antrieb (Motor) Ufb -> Spannung Fernbedienung  Die Balken am Text verĂ€ndern die Farbe in AbhĂ€ngigkeit der Alarmgrenzen. D.h. GrĂŒn -> O.K. Geld -> geht noch Rot -> schlecht Blau -> keine Einteilung  Graph: Rot -> Strom am Akku Board Blau -> Spannung am Akku Board  Alle Werte werden im Sekundentakt erneuert. bearbeitet 14. Januar 2014 von barney Zitieren
barney Geschrieben 16. Januar 2014 Autor Geschrieben 16. Januar 2014 Codeoptimierung:  Dieses schlecht lesbare Konstrukt // Ausgabe von Ub itoa (ValueArray[0][0], Ub, 10); // Messwert von Integer nach Char, geht auch fĂŒr negative Int sprintf(Ubalign, "%5s", Ub); // Den Char Wert nach Rechts ausrichten // Da die Ausgaberoutine nicht die Funktionen von Print beherrscht, hier der schreckliche Umweg sprintf(Ubausgabe, "Ub %c%c%c%c,%c", Ubalign[0], Ubalign[1], Ubalign[2], Ubalign[3], Ubalign[4]); // Ein Komma einfĂŒgen testdrawtext(Ubausgabe, Colors[(ValueArray[0][3])][0], 0, 16, 1); nach drei Stunden durch dtostrf(ValueArray[0][0]/(float)10, 7, 1, Ubausgabe); // Wert/10, Rechts ausrichten, 1 Nachkommastelle testdrawtext("Ub" , Colors[(ValueArray[0][3])][0], 0, 16, 1); // Text ausgeben testdrawtext(Ubausgabe, Colors[(ValueArray[0][3])][0], 12, 16, 1); // Wert ausgeben ersetzt und schon 3 KByte Programmspeicher eingespart und die Abarbeitung dramatisch beschleunigt. Und der Code sieht schon viel lesbarer aus....  Display ist fertig und wird demnĂ€chst mit den Fernbedienungscode zusammengeworfen. Dann noch den Parser erweitern, dann können die Messwerte an die Fernbedienung gesendet werden.  Mal sehen, ob der Mikrocontroller dafĂŒr schnell genug ist. Zitieren
barney Geschrieben 16. Januar 2014 Autor Geschrieben 16. Januar 2014 So kann das ganze nachher aussehen. Die Werte werden durch Random Generator erstellt. Zitieren
Empfohlene BeitrÀge
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.