- Robot Maker
- → Contenu de Snyp54
Contenu de Snyp54
Il y a 29 élément(s) pour Snyp54 (recherche limitée depuis 21-juin 13)
Par type de contenu
Voir pour ce membre
#100090 Minus V1.0 Un vigibot simplifié pour Noël en précommande ?
Posté par Snyp54 sur 12 novembre 2018 - 08:51 dans Archives vigibot
#100053 Minus V1.0 Un vigibot simplifié pour Noël en précommande ?
Posté par Snyp54 sur 11 novembre 2018 - 07:37 dans Archives vigibot
Minus n'utilise pas de servo modifiés 360°.
Pour les caractéristique je laisse mike118.
#100041 Minus V1.0 Un vigibot simplifié pour Noël en précommande ?
Posté par Snyp54 sur 11 novembre 2018 - 04:55 dans Archives vigibot
#100136 Minus V1.0 Un vigibot simplifié pour Noël en précommande ?
Posté par Snyp54 sur 14 novembre 2018 - 09:07 dans Archives vigibot
#100139 Minus V1.0 Un vigibot simplifié pour Noël en précommande ?
Posté par Snyp54 sur 14 novembre 2018 - 10:08 dans Archives vigibot
J'ai monté les moteurs seulement ce soir, ils ne sont pas sur les photos précédente.
#100233 Minus V1.0 Un vigibot simplifié pour Noël en précommande ?
Posté par Snyp54 sur 17 novembre 2018 - 09:23 dans Archives vigibot
La raspberry se met en veille,donc les ports gpio reste à l'état( a confirmer par mike118 ou pascal).
Voici donc mon bot fonctionnel.La powerbank doit être fixer ailleur pour l'équilibre du robot mais cela fonctionne en l'état. Je laisse comme ça en attendant le hat-ups.
#100156 Minus V1.0 Un vigibot simplifié pour Noël en précommande ?
Posté par Snyp54 sur 15 novembre 2018 - 08:58 dans Archives vigibot
je ne peut que te conseiller de regarder ça https://lh3.googleus...hCA_oo7e5mFk29Q .
Pour les moteur, pin 26 et 27 de la raspberry pi 3 b+ à ne pas confondre avecle numéro GPIO
#99987 Minus V1.0 Un vigibot simplifié pour Noël en précommande ?
Posté par Snyp54 sur 10 novembre 2018 - 09:01 dans Archives vigibot
#100094 Minus V1.0 Un vigibot simplifié pour Noël en précommande ?
Posté par Snyp54 sur 12 novembre 2018 - 09:33 dans Archives vigibot
#99865 Minus V1.0 Un vigibot simplifié pour Noël en précommande ?
Posté par Snyp54 sur 06 novembre 2018 - 10:57 dans Archives vigibot
Mike118, ou trouve t'on la carte de gestion des moteurs, les moteurs, ainsi que le système d'alimentation?
#99839 Minus V1.0 Un vigibot simplifié pour Noël en précommande ?
Posté par Snyp54 sur 05 novembre 2018 - 09:06 dans Archives vigibot
J'avais pas vu le lien, désolé.
Bon une autre question après j’arrête:
-Y aura t'il possibilité de rajouter des capteur? du style télémètre laser ou autre pour éviter que les invités qui utilise ces robots la ne les colles dans les murs ou autres.
#99874 Minus V1.0 Un vigibot simplifié pour Noël en précommande ?
Posté par Snyp54 sur 06 novembre 2018 - 05:48 dans Archives vigibot
#99827 Minus V1.0 Un vigibot simplifié pour Noël en précommande ?
Posté par Snyp54 sur 05 novembre 2018 - 04:07 dans Archives vigibot
#100558 Télémétrie pour mon robot d'exploration
Posté par Snyp54 sur 03 décembre 2018 - 12:08 dans Electronique
Salut j'ai lu tout ton projet qui est vraiment classe.
Pour la communication, tu pourrais envisager d'utiliser des modules dorji1276.
Cela utilise la liaison série. un sur ton robot et un sur ton pc, serveur, etc...
#104851 MOORE (Mobile-Open-Omnidirectional-Robot-Experience)
Posté par Snyp54 sur 23 août 2019 - 10:26 dans Robots roulants, chars à chenilles et autres machines sur roues
Bonjour,
à mon avis avec les roues omni-wheel cela ne sera pas un 4x4.
son évolution ce limitera sur les sol assez lisse ( du moin il faut oublier le sable etc....)
Bonjour,
je vais suivre le projet.
As-tu pensé aussi mettre une go pro pour filmer ses évolutions dans tous les terrains ( sable , cailloux , terre , lunaire ... )
#107277 Vigibot Pi arduino Serial Communication Example
Posté par Snyp54 sur 10 janvier 2020 - 10:14 dans Vigibot
Hi all,
With Mike118 ( and only Mike118 ^^ ), we have make a code for use FEETECH SCS15 servo to work with Vigibot.
The full code
/* * Vigibot Pi to Arduino Uart default remote configuration example by Mike118 */ #include <SCServo.h> SCSCL sc; int uint16toSCS15( uint16_t value ) { return (value - 32768)* 512 * 180 / (100 * 32768) + 512; } uint8_t servoId[4] {2, 3 , 4, 5}; // Meta Type : struct Point { union { struct { uint16_t x; uint16_t y; }; uint16_t coordonnees[2]; uint8_t bytes[4]; }; } ; struct Vitesses{ union { struct { int8_t x; int8_t y; int8_t z; }; uint8_t bytes[3]; }; }; // CONFIG #define PISERIAL Serial2 #define NBPOSITIONS 2 #define FAILSAFE 200 // ms // TTS #define TTSBUFFERSIZE 255 uint8_t ttsBuffer[TTSBUFFERSIZE]; uint8_t ttsCurseur = 0; // TX #define TXFRAMESIZE (NBPOSITIONS * 4 + 17) struct TrameTx { union { struct { uint8_t sync[4]; // 4 Point positions[NBPOSITIONS]; // NBPOSITIONS * 4 uint16_t val16[2]; // 2 * 2 uint8_t choixCameras; // 1 Vitesses vitesses; // 3 uint8_t interrupteurs; // 1 uint8_t val8[4]; // 4 }; uint8_t bytes[TXFRAMESIZE]; }; }; // RX #define RXFRAMESIZE (NBPOSITIONS* 4 + 9) struct TrameRx{ union { struct { // Sizes uint8_t sync[2]; // 4 Point positions[NBPOSITIONS]; // NBPOSITIONS * 4 uint8_t choixCameras; // 1 Vitesses vitesses; // 3 uint8_t interrupteurs; // 1 }; uint8_t bytes[RXFRAMESIZE]; }; } ; TrameTx trameTx; TrameRx trameRx; uint32_t lastTrameTimestamp = millis(); Point oldPositions[NBPOSITIONS]; // NBPOSITIONS * 4 void setup() { PISERIAL.begin(115200); // add all your init here Serial1.begin(1000000); sc.pSerial = &Serial1; } void loop() { if(readPiSerial()) { writePiSerial(); lastTrameTimestamp = millis(); } if( millis() - lastTrameTimestamp > FAILSAFE ) { // Stop the robot in case the robot lost connection with the Pi } else { // put your main code here, to run repeatedly: updateServo(); } } void updateServo() { for(uint8_t i = 0; i < NBPOSITIONS; i++) { for(uint8_t j = 0; j < 2 ; j++) { if(oldPositions[i].coordonnees[j] != trameRx.positions[i].coordonnees[j]) { sc.WritePos(servoId[i + j], uint16toSCS15(trameRx.positions[i].coordonnees[j]), 200); oldPositions[i].coordonnees[j] = trameRx.positions[i].coordonnees[j]; } } } } bool readPiSerial() { uint8_t current; static uint8_t lastType = 0; static uint8_t n = 0; static uint8_t frame[RXFRAMESIZE]; while(PISERIAL.available()) { current = PISERIAL.read(); switch(n) { case 0: if(current == '$') n = 1; break; case 1: if(current != 'T' && lastType == 'T') writeTtsBuffer('\0'); if(current == 'S' || current == 'T') { lastType = current; n = 2; } else n = 0; break; default: frame[n++] = current; if(n == RXFRAMESIZE) { if(lastType == 'T') { for(uint8_t i = 2; i < RXFRAMESIZE; i++) writeTtsBuffer(frame[i]); } else if(lastType == 'S') { for(uint8_t p = 0; p < RXFRAMESIZE; p++) trameRx.bytes[p] = frame[p]; } n = 0; return true; } } } return false; } void writePiSerial() { // Header, do not modify trameTx.sync[0] = '$'; trameTx.sync[1] = 'R'; trameTx.sync[2] = ' '; trameTx.sync[3] = ' '; // modify the feedback according your need. By default we copy the trameRx content ... for(uint8_t i = 0; i < NBPOSITIONS; i++) { trameTx.positions[i].x = trameRx.positions[i].x; trameTx.positions[i].y = trameRx.positions[i].y; } trameTx.val16[0] = 0; // Voltage trameTx.val16[1] = 0; // Percent trameTx.choixCameras = trameRx.choixCameras; trameTx.vitesses.x = trameRx.vitesses.x; trameTx.vitesses.y = trameRx.vitesses.y; trameTx.vitesses.z = trameRx.vitesses.z; trameTx.interrupteurs = trameRx.interrupteurs; trameTx.val8[0] = 0; // CPU load trameTx.val8[1] = 0; // Soc temp trameTx.val8[2] = 0; // link trameTx.val8[3] = 0; // RSSI for( uint8_t i = 0; i < TXFRAMESIZE; i++) PISERIAL.write(trameTx.bytes[i]); } void displayTtsBuffer (uint8_t * ttsBuffer, uint8_t bufferSize) { // you can modify this function to display text on a screen depending on your hardware... for( uint8_t i = 0; i < bufferSize; i++) Serial.write(ttsBuffer[i]); Serial.println(""); } void writeTtsBuffer( uint8_t ttsChar) { static uint8_t ttsCurseur = 0; if( ttsCurseur < TTSBUFFERSIZE && ttsChar != '\0') { ttsBuffer[ttsCurseur] = ttsChar; ttsCurseur ++; } if( ttsCurseur == TTSBUFFERSIZE || ttsChar == '\0') { displayTtsBuffer (ttsBuffer, ttsCurseur); ttsCurseur = 0; } }
Add SCS Library and convert 0 65535 -> -180° à 180° to 0 1023 -> -100° à 100°:
#include <SCServo.h> SCSCL sc; int uint16toSCS15( uint16_t value ) { return (value - 32768)* 512 * 180 / (100 * 32768) + 512; }
Configure ID servo with POSITIONS: ( sc.WritePos(IDSERVO, uint16toSCS15(trameRx.positions[0].y), 200);
uint8_t servoId[4] {2, 3 , 4, 5}; void updateServo() { for(uint8_t i = 0; i < NBPOSITIONS; i++) { for(uint8_t j = 0; j < 2 ; j++) { if(oldPositions[i].coordonnees[j] != trameRx.positions[i].coordonnees[j]) { sc.WritePos(servoId[i + j], uint16toSCS15(trameRx.positions[i].coordonnees[j]), 200); oldPositions[i].coordonnees[j] = trameRx.positions[i].coordonnees[j]; } } } }
And voila!
#99983 Système pan tilt avec servo 9G imprimé en 3D pour camera Pi
Posté par Snyp54 sur 10 novembre 2018 - 08:11 dans Bras robots, pinces, tourelles, et autres manipulateurs
Ah oui en effet ... Du coup je veux bien que tu mettes ici la version modifiée =) Comme ça ça profitera à tout le monde =)
Ou si tu as fait une modification manuellement sur la pièce après son impression, poste une photo et je ferais la modification sur le fichier =)
Je suis parti la mais à modifier mieux je pense. j'ai modifier qu'un côté pour que tu puisse voir.
Fichier(s) joint(s)
- corpstourelle.stl 92,86 Ko 192 téléchargement(s)
#99924 Système pan tilt avec servo 9G imprimé en 3D pour camera Pi
Posté par Snyp54 sur 08 novembre 2018 - 09:07 dans Bras robots, pinces, tourelles, et autres manipulateurs
Allez hop je fait chauffer l'imprimante demain soir xD
#99962 Système pan tilt avec servo 9G imprimé en 3D pour camera Pi
Posté par Snyp54 sur 10 novembre 2018 - 01:19 dans Bras robots, pinces, tourelles, et autres manipulateurs
#100426 Besoin d'aide avec python et arduino
Posté par Snyp54 sur 28 novembre 2018 - 05:23 dans Programmation
Alors j'ai oublié de préciser que le code ce lance et ce bloque ici:
try: print "Trying to get data"
je regarde pour ce que tu me dit @R1D1
#100423 Besoin d'aide avec python et arduino
Posté par Snyp54 sur 28 novembre 2018 - 04:18 dans Programmation
Bonjour a tous,
voila j'aurais besoin d'un coup de main. Je réalise une station météo avec un Arduino qui envoie ses données sur le port série @9600.
j'arrive à lire les valeurs sur le port série de l'Arduino IDE. Jusque la, pas de problème.
Maintenant j'utilise deux modules Dorji,un du coté de l'Arduino, un autre sur un serveur Debian avec adaptateur usb visible en /var/ttyUSB0 reglé en 9600 lié entre eux.
Coté arduino, la led rouge du module dorji s'allume lorsque le port série envoie quelque chose.
Coté serveur, la led bleu du module dorji s'allume signifiant qu'il à recu des données du module dorji de l'arduino
Mon problème est que je n'arrive pas ,du coté du serveur avec python, à lire le port /var/ttyUSB0.
Je vous met le code python(2.7) ainsi que le code Arduino.
#!/usr/bin/python import serial import MySQLdb import sys #establish connection to MySQL. dbConn = MySQLdb.connect("adress","login","pass","bdd_name") or die ("could not connect to database") #open a cursor to the database cursor = dbConn.cursor() device = '/dev/ttyUSB0' # usually ttyUSB0 or ttyUSB1 for linux, or COM port number for windows baudrate = 9600 def getSerialData(): try: print "Trying...",device arduino = serial.Serial(device, baudrate) except: print "Failed to connect on",device try: print "Trying to get data" next(arduino) data = arduino.readline() #read the data from the arduino pieces = data.split("\t") #split the data by the tab print "Data: %s" % data print "Piece 1: %s" % pieces[0] print "Piece 2: %s" % pieces[1] #Here we are going to insert the data into the Database try: print "Trying insertion..." cursor.execute("INSERT INTO data (temp,humidity) VALUES (%s,%s)", (pieces[0],pieces[1])) dbConn.commit() #commit the insert except MySQLdb.IntegrityError: print "failed to insert data" finally: print "closing cursor" del pieces[:] except: print "Failed to get data from Arduino!" sys.exit(1) val = 0 while val == 0 : getSerialData()
#include <Wire.h> #include "SparkFunHTU21D.h" //Create an instance of the object HTU21D myHumidity; void setup() { Serial.begin(9600); myHumidity.begin(); } void loop() { float humd = myHumidity.readHumidity(); float temp = myHumidity.readTemperature(); Serial.print(temp, 1); //HTU21D temperature (°C) Serial.print("\t"); Serial.print(humd, 1); //HTU21D humidite (%) Serial.print("\t"); delay(1000); }
Merci pour l'aide que vous pourrez m'apporter.
#99779 Comment créer mon robot vigibot " Minus like " ?
Posté par Snyp54 sur 04 novembre 2018 - 12:02 dans Archives vigibot
Allez, je me plante ici avec ma tente et j'attend
#100462 Besoin d'aide avec python et arduino
Posté par Snyp54 sur 29 novembre 2018 - 09:47 dans Programmation
Bonsoir, bon j'ai farfouillé un peu le net et en ajoutant un timeout=10 cela marche presque.
Oui presque, car mon Arduino envoyé ses données sur le port série toutes les 5 secondes et mon programme python en prend que un sur deux :/.
Le code rectifié:
#!/usr/bin/python import serial import MySQLdb import sys #establish connection to MySQL. dbConn = MySQLdb.connect("localhost","root","18Avril1989","weather") or die ("could not connect to database") #open a cursor to the database cursor = dbConn.cursor() device = '/dev/ttyUSB0' baudrate = 9600 def getSerialData(): try: print "Connection sur:",device arduino = serial.Serial(device, baudrate, timeout=10) except: print "Connection impossible sur:",device try: print "Recuperation des donnees:" next(arduino) data = arduino.readline() #read the data from the arduino pieces = data.split("\t") #split the data by the tab print "Data: %s" % data print "Piece 1: %s" % pieces[0] print "Piece 2: %s" % pieces[1] print "Piece 3: %s" % pieces[2] print "Piece 4: %s" % pieces[3] print "Piece 5: %s" % pieces[4] #Here we are going to insert the data into the Database try: print "Trying insertion..." cursor.execute("INSERT INTO data (temp,humidity,tempp,humdp,pres) VALUES (%s,%s,%s,%s,%s)", (pieces[0],pieces[1],pieces[2],pieces[3],pieces[4])) dbConn.commit() #commit the insert except MySQLdb.IntegrityError: print "failed to insert data" finally: print "closing cursor" del pieces[:] except: print "Impossible de recuperer les donnees!!!" sys.exit(1) val = 0 while val == 0 : getSerialData()
- Robot Maker
- → Contenu de Snyp54
- Privacy Policy