Jump to content

borg

Administrators
  • Gesamte Inhalte

    3.592
  • Benutzer seit

  • Letzter Besuch

  • Tagessiege

    58

Alle erstellten Inhalte von borg

  1. Dann kannst du den Wert nur entweder pollen oder den normalen Callback nutzen (der wird ja nur aufgerufen wenn sich der Wert auch geändert hat). Eine minimale Spannungsänderung zum triggern eines Callbacks gibt es leider nicht.
  2. We have some applications on our homepage: https://www.tinkerforge.com/en/home/applications/ Some of them are similar to the "case study" that you linked, but the descriptions are not as detailed. There is also the "From idea to finished product"-story. It shows how EnBW did go from prototype to small batch production to mass market product with Tinkerforge: https://www.tinkerforge.com/en/home/smight/
  3. Step-Down Power Supply mit mehr Schutz Blogeintrag
  4. Step-Down Power Supply with more protection Blog Entry
  5. Den Wert von get_humidity, aber skaliert auf %RH (und Temperatur skaliert auf °C). Also: temperature = t.get_temperature()/100.0 humidity = h.get_humidity()/10.0 temperature_compensated_humidity = humidity/(1.0546 - 0.00216*temperature)
  6. Angenommen die Temperatur beträgt 32,1°C und der Rückgabewert des Humidity Bricklets ist 54,3% würdest du folgendes berechnen: True RH = 54.3/(1.0546 - 0.00216*32.1) = 55.11
  7. Sehr cool! Sieht richtig professionell aus . Zum Thema Ambient/UV Light: Du müsstest denke ich irgendwie eine UV Durchlässige Scheibe (Plexiglas?) in die obere Ebene bringen und die Bricklets dadrunter anbringen.
  8. Ich vermute das dem brickd auf deinem RED Brick dieser Patch fehlt: https://github.com/Tinkerforge/brickd/commit/0b8cdaa80a0d4ea0e633a89c139d93c4ff6c6b15 Du kannst entweder den brickd auf dem RED Brick aktualisieren oder das 1.10 beta Image nutzen: https://www.tinkerunity.org/forum/index.php/topic,4123.0.html Edit: 1.9 reicht auch, du verwendest also wahrscheinlich noch 1.8?
  9. 3D Modelle von Bricks und Bricklets Blogeintrag
  10. 3D Models of Bricks and Bricklets Blog Entry
  11. RS485 Bricklet und neue Streaming-API Blogeintrag
  12. RS485 Bricklet and new Streaming-API Blog Entry
  13. Hello ganesh, To simply measure ambient temperature you need a Master Brick and a Temperature Bricklet (+ USB cable + Bricklet cable): https://www.tinkerforge.com/de/shop/bricks/master-brick.html https://www.tinkerforge.com/de/shop/bricklets/sensors/temperature-bricklet.html
  14. Die tizen apps werden normalerweise in C/C++ programmiert oder? Würden nicht einfach die C Bindings funktionieren? Wenn du über die C Bindings eine Verbindung zu einem Stapel mit WIFI Extension aufbaust benötigst du keinen zusätzlichen Brick Daemon irgendwo.
  15. Je 50m Abstand oder in Summe 50m Abstand? Das geht leider nicht, der letzte Empfänger muss ein PC/RPi o.ä. mit Brick Daemon sein. Das sollte exakt so funktionieren! Leder nicht, siehe oben. Wenn es sich um einen Radius von insgesamt 50m handelt auf denen die Knoten verteilt sind könnte es denke ich auch reichen einfach einen WLAN Router in die Mitte zu setzen und die WIFI Extensions verbinden sich ganz normal damit. Da geht dann natürlich mehr Durchsatz drüber.
  16. If all other indicators are green you probably have to hold it still for some more time (without moving) to get the system green too.
  17. No, the M/F is 1mm smaller than the F/F. You got a 9mm mounting kit: https://www.tinkerforge.com/en/shop/accessories/mounting/mounting-kit-9mm.html If you ordered them as 12mm mounting kits there must have been a mixup during packaging. Sorry! Please write an email to info@tinkerforge.com with your order number. We will of course send you the the 12mm mounting kits.
  18. The inside/inside thread spacers are allways 10. The inside/outside thread spacers are either 9mm or 12mm. There are no 10mm inside/outside thread spacers.
  19. You can't do any more than to use the provided calibration function. If the changes of the magnetic field are too big for the IMU to cope, you can try to used the sensor fusion mode with magnetometer (see set_sensor_fusion_mode in the API). In this mode the magnetometer is not used and thus can't contribute false readings. However, in this mode you can't of course use the IMU to calculate absolute heading (since the magnetometer is necessary for that)!
  20. If you purchased the 12mm mounting kit there are two kinds of spacers in there: One has one thread inside and one thread outside, the other has both threads inside. The 12mm mounting kit has 4 12mm inside/outside spacers and 4 10mm inside/inside spacers in it. You can put the 10mm spacer at the bottom and screw the 12mm spacer in the top. The small plastic washers can be used inbetween to fill the small gap. Like here: Or did you purchase the 9mm mounting kits? They can't be used for the Bricks!
  21. Mh, es scheint nicht ein Problem mit dem NMEA parsen zu sein wie ich erst gedacht hab. Dein Problem sieht so aus als würde das FireFly X1 (GPS Modul) keine Interrupts mehr senden. Dadurch lese ich nicht mehr und die Daten bleiben einfach auf einem alten Stand stehen. Hast du irgendeine Methode dieses Problem zuverlässig zu reproduzieren? Oder tritt es einfach irgendwann auf?
  22. borg

    IMU ROS node

    All of the examples that we have work over Ethernet, you just have to put in the correct IP (ip of the Ethernet Extension instead of "localhost")!
  23. borg

    IMU ROS node

    I have not done it, but you can use the Python Bindings and create a node yourself. There are Python node examples on the ROS wiki: http://wiki.ros.org/ROSNodeTutorialPython
  24. Mh, die API gibt exakt das zurück was wir per NMEA bekommen. Einfach alles mit 0 zu überschreiben wenn der Fix nicht mehr da ist, ist nicht richtig. Zum Beispiel die Uhrzeit und die Satellitenpositionen können auch noch korrekt sein wenn kein Fix vorhanden ist (dafür reicht ein Satellit). Die Latitude/Longitude können wir denke ich auf 0 setzen wenn kein Fix vorhanden ist, wie das mit Speed ist bin ich mir nicht sicher, da muss mal drüber nachlesen. Ich gucke mir das morgen genauer an .
  25. @ufechner: Ihr hattet die API leider nicht richtig verstanden. Der Index mit dem auf die Satellitennummer zugegriffen wird läuft immer von 1-32. Der Code müsste so aussehen: #include <stdio.h> #include <signal.h> #include <unistd.h> #include "ip_connection.h" #include "bricklet_gps_v2.h" //#define HOST "192.168.1.6" #define HOST "localhost" #define PORT 4223 #define UID "CHk" // Change XYZ to the UID of your GPS Bricklet 2.0 volatile sig_atomic_t terminate = 0; GPSV2 gps; void sig_handler(int signo) { if (signo == SIGINT) { printf("received SIGINT\n"); terminate = 1; } } void readSatelliteStatus() { uint8_t satellite_system; uint8_t ret_satellite_numbers_length; uint8_t ret_satellite_numbers_data[12]; int16_t ret_elevation; int16_t ret_azimuth; int16_t ret_snr; uint8_t ret_fix; uint16_t ret_pdop, ret_hdop, ret_vdop; uint8_t satellite_index; int sum_satellite = 0; for (satellite_system = 0; satellite_system < 2; satellite_system++) { if (gps_v2_get_satellite_system_status_low_level( &gps, satellite_system, &ret_satellite_numbers_length, ret_satellite_numbers_data, &ret_fix, &ret_pdop, &ret_hdop, &ret_vdop)< 0) { fprintf(stderr, "Could not get satellite status_low_level, probably timeout\n"); } if (satellite_system == 0){ printf("GPS satellite (Satellite system number = %d)\n", satellite_system); printf("Number of GPS satellite in use = %hu\n", ret_satellite_numbers_length); } else if (satellite_system == 1) { printf("Glonass satellite (Satellite system number = %d)\n", satellite_system); printf("Number of Glonass satellite in use = %hu\n", ret_satellite_numbers_length); } else { fprintf(stderr, "Not proper satellite system\n"); } for (int i=0; i<ret_satellite_numbers_length; i++) { switch (i) { case 0: printf("First "); break; case 1: printf("Second "); break; case 2: printf("Third "); break; default: printf("%dth", i); break; } printf("satellite number = %d\n", ret_satellite_numbers_data[i]); if (satellite_system == 0) { satellite_index = ret_satellite_numbers_data[i]; } else if (satellite_system == 1) { satellite_index = ret_satellite_numbers_data[i] - 64; } else { fprintf(stderr, "Not proper satellite system\n"); } if (gps_v2_get_satellite_status( &gps, satellite_system, satellite_index, &ret_elevation, &ret_azimuth, &ret_snr) < 0) { fprintf(stderr, "Could not get satellite status, probably timeout\n"); } printf("signal_noise = %d\n", ret_snr); } usleep(1e5); } } int main(void) { /* Register a signal handling function */ if (signal(SIGINT, sig_handler) == SIG_ERR) { fprintf(stderr, "Can't catch SIGINT\n"); abort(); } // Create IP connection IPConnection ipcon; ipcon_create(&ipcon); // Create device object gps_v2_create(&gps, UID, &ipcon); // Connect to brickd if(ipcon_connect(&ipcon, HOST, PORT) < 0) { fprintf(stderr, "Could not connect\n"); return 1; } readSatelliteStatus(); printf("Press key to exit\n"); getchar(); gps_v2_destroy(&gps); ipcon_destroy(&ipcon); // Calls ipcon_disconnect internally return 0; }
×
×
  • Neu erstellen...