barney Posted July 1, 2015 Posted July 1, 2015 (edited) 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. Edited July 1, 2015 by barney Quote
Chrizz Posted July 1, 2015 Posted July 1, 2015 Ich sag nur Wixx-Control :-) V.1.0 special open source remote control for self made electro (turbo) boards. Oder so. Quote
barney Posted July 1, 2015 Author Posted July 1, 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.... Quote
Dude Posted July 1, 2015 Posted July 1, 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 Quote
barney Posted July 1, 2015 Author Posted July 1, 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 Quote
barney Posted July 1, 2015 Author Posted July 1, 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 Quote
barney Posted July 2, 2015 Author Posted July 2, 2015 Bestellung ist raus, mal sehen wie die Entwicklungsumgebung ist. Werde berichten. Quote
barney Posted July 2, 2015 Author Posted July 2, 2015 Joystick: Externe Links nur für Mitglieder sichtbar Das wäre dann der Joystick dazu: Quote
barney Posted July 10, 2015 Author Posted July 10, 2015 (edited) 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. Edited July 10, 2015 by barney Quote
barney Posted July 11, 2015 Author Posted July 11, 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. Quote
barney Posted July 12, 2015 Author Posted July 12, 2015 (edited) 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 Edited July 12, 2015 by barney 1 Quote
barney Posted July 13, 2015 Author Posted July 13, 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 Quote
barney Posted July 17, 2015 Author Posted July 17, 2015 @Dude: Es gibt wieder Wixel ohne Beine. 25 Stück am Lager für €18,60 Externe Links nur für Mitglieder sichtbar Quote
Dude Posted July 18, 2015 Posted July 18, 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 Quote
barney Posted July 18, 2015 Author Posted July 18, 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] Quote
barney Posted July 20, 2015 Author Posted July 20, 2015 (edited) 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 Edited July 20, 2015 by barney Quote
barney Posted July 20, 2015 Author Posted July 20, 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; } } Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.