barney Geschrieben 1. Juli 2015 Geschrieben 1. Juli 2015 (bearbeitet) Nach einem fulminanten Scheitern einer zu groß angesetzten Fernbedienung, habe ich was einfaches gesucht, wo nur noch der Joystick (Doppelpoti) und die Taster angelötet werden müssen. Nach längerer Recherche ist folgendes zu Tage getreten: Externe Links nur für Mitglieder sichtbar Der Name ist schon nicht ohne und schreit nach ... ach was solls. Wunderbare Weise liegt das Programm schon fast komplett vor: für je € 20,- kein Verlust. Durch noch freie Analoge Anschlüsse ist die Akku-Spannungsmessung auch noch möglich. bearbeitet 1. Juli 2015 von barney Zitieren
Chrizz Geschrieben 1. Juli 2015 Geschrieben 1. Juli 2015 Ich sag nur Wixx-Control :-) V.1.0 special open source remote control for self made electro (turbo) boards. Oder so. Zitieren
barney Geschrieben 1. Juli 2015 Autor Geschrieben 1. Juli 2015 Ich sag nur Wixx-Control :-) V.1.0 special open source remote control for self made electro (turbo) boards.Oder so. Da hast du noch ganz knapp die Kurve bekommen.... Zitieren
Dude Geschrieben 1. Juli 2015 Geschrieben 1. Juli 2015 Da hast du noch ganz knapp die Kurve bekommen.... Schon allein der Name ist einen Kauf wert ... verstehe ich das Konzept richtig: 1. Senderseitig einen Wixel + Poti und Schalter (am einfachsten aus einem ausgeschlachtete Nunchuk) anbringen 2. Empfängerseitig BamBam-Teensy Controller mit einem weiteren Wixel erweitern und fertig Zitieren
barney Geschrieben 1. Juli 2015 Autor Geschrieben 1. Juli 2015 Schon allein der Name ist einen Kauf wert ... verstehe ich das Konzept richtig: 1. Senderseitig einen Wixel + Poti und Schalter (am einfachsten aus einem ausgeschlachtete Nunchuk) anbringen 2. Empfängerseitig BamBam-Teensy Controller mit einem weiteren Wixel erweitern und fertig Genau das war die Intention. Der Empfänger Wixel muss von USB auf Serielle oder I2C umgebogen werden. Bevorzugt I2C um an den Nunchuk Anschluss angeschlossen werden zu können. Dort liegt auch die 3.3V Versorgungsspannung für den Wixel vor. 6 Analogeingänge, davon einer für die Akkumessung. Also: 2 x Kreuzpoti 2 x Taster (analog) durch Widerstände kann man die Anzahl der Taster am analogen Port erhöhen. 1 x Reserve als analoger Geber @Dude: Hast du die beiden Programme schon mal angesehen? Die API hat auch Befehle für die Empfangsqualität. VG Barney Zitieren
barney Geschrieben 1. Juli 2015 Autor Geschrieben 1. Juli 2015 Chrizz bestellt gerade: 50 - 500mA LiPo Laderegler für 1S Lithium Polymer Akku 3,7V LiPo / Lader Regler: Externe Links nur für Mitglieder sichtbar Lipo Akku 3,7 v - 300 mAh: Da ich vom Nunchuk Akku etwas entnervt bin. Ich hoffe die Akkus reichen auch für den Wixel Umbau. Operating voltage: 2.7 – 6.5 V Operating current: up to approximately 30 mA (can get down to ~100 μA when in sleep mode) RadioFrequency: 2400 – 2483.5 MHz Range: approximately 50 feet (under typical conditions indoors) Bit rate: programmable, up to 350 kbps Effective data rate: up to 10 KB/s [*]Size: 0.7" × 1.5" [*]Weight without header pins installed: 3.2 g Zitieren
barney Geschrieben 2. Juli 2015 Autor Geschrieben 2. Juli 2015 Bestellung ist raus, mal sehen wie die Entwicklungsumgebung ist. Werde berichten. Zitieren
barney Geschrieben 2. Juli 2015 Autor Geschrieben 2. Juli 2015 Joystick: Externe Links nur für Mitglieder sichtbar Das wäre dann der Joystick dazu: Zitieren
barney Geschrieben 10. Juli 2015 Autor Geschrieben 10. Juli 2015 (bearbeitet) DHL machts möglich. Heute sind die beiden Wixel angekommen. 10 Minuten später waren beide mit der "wireless_adc_tx" und "wireless_adc_rx" app eine Fernbedienung, die noch auf den USB-Port senden. Das nenne ich mal überzeugend. Jetzt muss die Ausgabe nur noch auf die serielle Schnittstelle, später auf I2C umgeleitet werden. Serielle stelle ich mir noch einfach vor, I2C etwas anspruchsvoller. Reichweitentest steht noch an. Der Nachteil ein meiner Bestellung war, dass die Beinchen schon alle angelötet sind. Also nur was für das Demoboard. Gut muss ja auch sein. Abmaße: 37mm x 18mm x 7mm 35-D2-F3-45 25448 229 229 229 229 229 229 35-D2-F3-45 25548 229 229 229 229 229 229 35-D2-F3-45 25648 229 229 229 229 229 231 35-D2-F3-45 25748 229 229 229 229 229 229 35-D2-F3-45: Eindeutige Wixel ID 25448: Fortlaufender Counter 16 Bit, hier alle 100ms ein neues Paket 229: Die Werte der 6 ADC im Sender, hier nichts angeschlossen. bearbeitet 10. Juli 2015 von barney Zitieren
barney Geschrieben 11. Juli 2015 Autor Geschrieben 11. Juli 2015 Und der nächste Schritt ID: BA-36-83-C8 Time: 7153 RSSI (Feldstärke in dB):-53 je kleiner desto besser Danach 6 ADC Werte BA-36-83-C8, 7153, -53, 229, 229, 229, 229, 229, 231 BA-36-83-C8, 7253, -82, 229, 229, 231, 229, 229, 231 BA-36-83-C8, 7453, -63, 229, 229, 229, 229, 229, 231 BA-36-83-C8, 7553, -82, 229, 229, 229, 229, 229, 231 BA-36-83-C8, 7653, -86, 231, 229, 231, 229, 229, 231 Jetzt kommt die Serielle Schnittstelle ran. Zitieren
barney Geschrieben 12. Juli 2015 Autor Geschrieben 12. Juli 2015 (bearbeitet) Kleine Anpassungen: Der Empfänger arbeitet default so, dass er nur Pakete anzeigt, die den CRC bestanden haben. Das klingt erst mal gut, macht aber Probleme in der Auswertung, wenn nichts vom Empfänger zum Teensy gesendet wird und ich nicht weiß warum. Jetzt sind die Millisekunden zu sehen und der CRC-Pass Test. Millisekunden 32bit geht doch, alle 1111 Stunden Überlauf des Counters Paketlänge wird angezeigt (hier 16) RSSI wird angezeigt (-65dBm, < 60 gut, > 75 wird problematisch) LQI wird angezeigt (in was auch immer), wenn LQI > 125 Signal nicht mehr auswertbar CRC Pass 0 oder 1 (1=OK 0=Fail) BA-36-83-C8, 5964, 16, -65, 81,1, 229, 229, 229, 231, 229, 231 BA-36-83-C8, 6064, 16, -65, 53,1, 229, 231, 231, 229, 229, 231 BA-36-83-C8, 6164, 16, -65, 127,0, 229, 231,16613, 225, 113, 195 BA-36-83-C8, 6264, 16, -65, 52,1, 231, 229, 229, 229, 229, 231 BA-36-83-C8, 6364, 16, -65, 76,1, 229, 229, 229, 229, 229, 231 BA-36-83-C8, 6464, 16, -65, 48,1, 229, 229, 229, 229, 231, 231 bearbeitet 12. Juli 2015 von barney 1 Zitieren
barney Geschrieben 13. Juli 2015 Autor Geschrieben 13. Juli 2015 Jetzt werden die Daten vom Teensy 3.1 über die Serielle Schnittstelle #3 entgegengenommen. ToDo: Wixel * ADC Werte auf 12bit umstellen Teensy * Wixel Lib schreiben (Parsen der Seriellen Schnittstelle #3 und an die typischen Nunchuk Register übergeben, Umschreiben der Funkabriss Logik, es müssen nicht mehr die Beschleunigungssensoren ausgewertet werden.) * Auswerten des Empfangssignals und der Akkuspannung des Senders Zitieren
barney Geschrieben 17. Juli 2015 Autor Geschrieben 17. Juli 2015 @Dude: Es gibt wieder Wixel ohne Beine. 25 Stück am Lager für €18,60 Externe Links nur für Mitglieder sichtbar Zitieren
Dude Geschrieben 18. Juli 2015 Geschrieben 18. Juli 2015 Bestellung für 2 Wixel ist raus, auch wenn ich keinen Plan habe, wann ich den ausprobieren kann. Gerüstet zu sein ist aber schon mal ein gutes Gefühl Dude Zitieren
barney Geschrieben 18. Juli 2015 Autor Geschrieben 18. Juli 2015 Bestellung für 2 Wixel ist raus, auch wenn ich keinen Plan habe, wann ich den ausprobieren kann. Gerüstet zu sein ist aber schon mal ein gutes Gefühl Dude Das ist die richtige Einstellung[emoji1] Zitieren
barney Geschrieben 20. Juli 2015 Autor Geschrieben 20. Juli 2015 (bearbeitet) Jetzt werden die Daten vom Teensy 3.1 über die Serielle Schnittstelle #3 entgegengenommen. ToDo: Wixel * ADC Werte auf 12bit umstellen Teensy * Wixel Lib schreiben (Parsen der Seriellen Schnittstelle #3 und an die typischen Nunchuk Register übergeben, Umschreiben der Funkabriss Logik, es müssen nicht mehr die Beschleunigungssensoren ausgewertet werden.) * Auswerten des Empfangssignals und der Akkuspannung des Senders Der ADC gibt jetzt 12bit Werte als dezimal aus. Der Wertebereich geht dabei von 0..2047 und konnte auch so in der Realität erreicht werden. Die Schalter werden für eine Mehrfachnutzung am Besten über ein Widerstandsnetzwerk verschaltet. So können vier Taster an einem ADC-Eingang angeschlossen und getrennt ausgewertet werden. (Für die Kenner/-innen, DAC-Prinzip für high speed DACs.) Jetzt die Lib für den Teensy. Hier ein kleiner Rückschlag. Die Teensy Lib UartEnevent hat noch einen weiteren Fehler. Wird diese bei 72 oder 96MHz kompiliert, wird die Baudrate für die Serielle Schnittstelle 3 (Uart2) nicht richtig in den Registern gesetzt. Workaround ist derzeit die Multiplizierung der Baudrate mit dem Faktor 2. Der Autor der Lib ist informiert und wird diese korrigieren. Edit: http://esk8b.de/git/Elektroskate_Fernbedienung.zip bearbeitet 20. Juli 2015 von barney Zitieren
barney Geschrieben 20. Juli 2015 Autor Geschrieben 20. Juli 2015 Teensy * Wixel Lib schreiben (Parsen der Seriellen Schnittstelle #3...) Parser ist rettich und kann als function() umgeschrieben werden. Seriennummer gefunden Counter: 8576671 Bytes: 16 dBm: -69 LQI: 75 CRC: 1 ADC_01: 138 ADC_02: 138 ADC_03: 138 ADC_04: 138 ADC_05: 138 ADC_06: 138 Ist jemand C Spezialist/-inn und kann das etwas kompakter umschreiben? void loop() { if (Serial.available()) { char c = Serial.read(); Event1.print(c); } if (print_flag) { uint32_t x = 0; uint32_t i = 0; uint32_t arg1 = 0; //Counter char arg1_String[15]; uint32_t arg2 = 0; //Byte Anzahl sollte immer 16 sein // 4 Bytes Seriennummmer, 12 Bytes 6 ADCs char arg2_String[5]; int32_t arg3 = 0; //RSSI -dBm char arg3_String[6]; int32_t arg4 = 0; //LQI char arg4_String[4]; int32_t arg5 = 0; //CRC char arg5_String[2]; int32_t arg6 = 0; //ADC_01 char arg6_String[5]; int32_t arg7 = 0; //ADC_02 char arg7_String[5]; int32_t arg8 = 0; //ADC_03 char arg8_String[5]; int32_t arg9 = 0; //ADC_04 char arg9_String[5]; int32_t arg10 = 0; //ADC_05 char arg10_String[5]; int32_t arg11 = 0; //ADC_06 char arg11_String[5]; if (strstr(buffer, Seriennummer)) //Seriennummer gefuden und damit den Startblock { Serial.println("Seriennummer gefunden"); while (buffer[x] != ',') { //Serial.print(buffer[x]); x++; } //Wert1 Counter x++; i=0; while (buffer[x] != ',') arg1_String[i++] = buffer[x++]; //Wert2 Bytes x++; i=0; while (buffer[x] != ',') arg2_String[i++] = buffer[x++]; //Wert3 RSSI x++; i=0; while (buffer[x] != ',') arg3_String[i++] = buffer[x++]; //Wert4 LQI x++; i=0; while (buffer[x] != ',') arg4_String[i++] = buffer[x++]; //Wert5 CRC x++; i=0; while (buffer[x] != ',') arg5_String[i++] = buffer[x++]; //Wert6 ADC_01 x++; i=0; while (buffer[x] != ',') arg6_String[i++] = buffer[x++]; //Wert7 ADC_02 x++; i=0; while (buffer[x] != ',') arg7_String[i++] = buffer[x++]; //Wert8 ADC_03 x++; i=0; while (buffer[x] != ',') arg8_String[i++] = buffer[x++]; //Wert9 ADC_04 x++; i=0; while (buffer[x] != ',') arg9_String[i++] = buffer[x++]; //Wert10 ADC_05 x++; i=0; while (buffer[x] != ',') arg10_String[i++] = buffer[x++]; //Wert11 ADC_06 x++; i=0; while (buffer[x] != 0x0d) arg11_String[i++] = buffer[x++]; //Konverteiren der Strings zu Integer //Serial.println(arg2_String); arg1 = atol(arg1_String); arg2 = atol(arg2_String); arg3 = atol(arg3_String); arg4 = atol(arg4_String); arg5 = atol(arg5_String); arg6 = atol(arg6_String); arg7 = atol(arg7_String); arg8 = atol(arg8_String); arg9 = atol(arg9_String); arg10 = atol(arg10_String); arg11 = atol(arg11_String); //Debugausgabe Serial.print("Counter: "); Serial.println(arg1); Serial.print("Bytes: "); Serial.println(arg2); Serial.print("dBm: "); Serial.println(arg3); Serial.print("LQI: "); Serial.println(arg4); Serial.print("CRC: "); Serial.println(arg5); Serial.print("ADC_01: "); Serial.println(arg6); Serial.print("ADC_02: "); Serial.println(arg7); Serial.print("ADC_03: "); Serial.println(arg8); Serial.print("ADC_04: "); Serial.println(arg9); Serial.print("ADC_05: "); Serial.println(arg10); Serial.print("ADC_06: "); Serial.println(arg11); } print_flag = false; } } 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.