Outils pour utilisateurs

Outils du site


echopen_technique

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
echopen_technique [2018/09/28 14:51] – créée guillaumeechopen_technique [2020/12/01 17:43] (Version actuelle) – ↷ Liens modifiés en raison d'un déplacement. serge
Ligne 1: Ligne 1:
 ======Echopen-technique====== ======Echopen-technique======
 +
 Un projet d'échographie opensource http://echopen.org/\\ Un projet d'échographie opensource http://echopen.org/\\
-{{:echopen-bassin.jpg?300|fig:echopen-bassin.jpg}} {{:echopen-electronic.jpg?300|fig:echopen-electronic.jpg}}+{{media_03:echopen-bassin.jpg?300|fig:echopen-bassin.jpg}} {{media_03:echopen-electronic.jpg?300|fig:echopen-electronic.jpg}}
  
 L'idée est de construire un premier prototype puis plusieurs dans le but d'une performance artistique avec [[http://www.makery.info/2016/12/06/echopen-et-makery-invitent-lartiste-shu-lea-cheang-en-residence/|Shu Lea Cheang avec l'aide de makery]]. L'idée est de construire un premier prototype puis plusieurs dans le but d'une performance artistique avec [[http://www.makery.info/2016/12/06/echopen-et-makery-invitent-lartiste-shu-lea-cheang-en-residence/|Shu Lea Cheang avec l'aide de makery]].
Ligne 7: Ligne 8:
 EN COURS.... EN COURS....
  
-====== Informations générales ======+===== Informations générales ===== 
 + 
 +{{media_03:echographiehowitworks.png?800|}} 
 + 
 +==== Fonctionnement échographie ==== 
 +  - A chaque ligne, le transducteur se fige, il envoie un signal en créneau électrique, qui, une fois transformé par le transducteur cela fait une petite forme d'onde 
 +  - le moteur est mis à l'arrêt et attend les retours 
 +  - selon le nombre de points définis et la décimation (1 ou 8) conditionne la profondeur, le nombre de points définit le nombre de points reçus, le transducteur récupère au fur et à mesure de leur éloignement les échos correspondant à ce que rencontre la forme d'onde envoyée, les matériaux vont réfléchir (diffuser) + ou - ce qui va modifier l'amplitude du signal 
 +  - pour chaque ligne, on récupère donc le nombre de point définit, un amplificateur électronique peut amplifier le signal à la réception pour compenser l'atténuation des tissus 
 +  - ces valeurs sont envoyées sur la socket réseau 
 +  - on opère ensuite coté ordinateur à une transformée de Hilbert en utilisant une transformée Fourrier puis une analyse d'enveloppe  pour définir l'amplitude du signal pour chaque point 
 +  - on interpole la valeur de chaque pixel de l'image à afficher en fonction de la position de chaque point de mesure (polaire > cartésien) 
 +  - ensuite cette amplitude peut être traitée pour la convertir en 0 255 (niveaux de gris) et former une image
  
-https://www.info-radiologie.ch/echographie.php\\ +  * https://www.info-radiologie.ch/echographie.php\\ 
-https://fr.wikipedia.org/wiki/%C3%89chographie\\ +  https://fr.wikipedia.org/wiki/%C3%89chographie\\ 
-http://ultrasonographie-vasculaire.edu.umontpellier.fr/files/2012/08/MD-Bases-Echographie-DIUE-2014B4.pdf\\+  http://ultrasonographie-vasculaire.edu.umontpellier.fr/files/2012/08/MD-Bases-Echographie-DIUE-2014B4.pdf\\
  
  
-====== Achats ======+===== Achats =====
  
   * Composants divers + Board dev CI MAX + red pitaya   * Composants divers + Board dev CI MAX + red pitaya
Ligne 24: Ligne 37:
 chez radio-spare ~100€ chez radio-spare ~100€
  
-====== Les cartes filles/mère ======+===== Les cartes filles/mère =====
  
 Toutes les infos techniques se trouvent [[https://github.com/echopen/PRJ-medtec_kit|ici]]. Pour notre premier prototype nous utilisons les cartes suivantes : Toutes les infos techniques se trouvent [[https://github.com/echopen/PRJ-medtec_kit|ici]]. Pour notre premier prototype nous utilisons les cartes suivantes :
Ligne 30: Ligne 43:
   * DB-Pulser_V2 > Convertisseur ultra rapide logique / -100V   * DB-Pulser_V2 > Convertisseur ultra rapide logique / -100V
  
-{{:echopen-DB_pulser_V2.JPG?200|echopen-DB_pulser_V2.JPG echopen-DB_pulser_V2.JPG}}+{{media_03:echopen-db_pulser_v2.jpg?200|echopen-DB_pulser_V2.JPG echopen-DB_pulser_V2.JPG}}
  
   * DB-supply_V1 > Tensions régulées (+/-12V, +/-5V, +3.3V) (alim 18V)   * DB-supply_V1 > Tensions régulées (+/-12V, +/-5V, +3.3V) (alim 18V)
  
-{{:echopen-DB_supply_V1.JPG?200|echopen-DB_supply_V1.JPG echopen-DB_supply_V1.JPG}}+{{media_03:echopen-db_supply_v1.jpg?200|echopen-DB_supply_V1.JPG echopen-DB_supply_V1.JPG}}
  
   * DB-high_voltage_V1 > Générateur - 100V   * DB-high_voltage_V1 > Générateur - 100V
  
-{{:echopen-DB_high_voltage_V1.JPG?200|echopen-DB_high_voltage_V1.JPG echopen-DB_high_voltage_V1.JPG}}+{{media_03:echopen-db_high_voltage_v1.jpg?200|echopen-DB_high_voltage_V1.JPG echopen-DB_high_voltage_V1.JPG}}
  
   * DB-filter_V1 > filtre passe bande ~ 3.5MHz   * DB-filter_V1 > filtre passe bande ~ 3.5MHz
  
-{{:echopen-DB_filter_V1.JPG?200|echopen-DB_filter_V1.JPG echopen-DB_filter_V1.JPG}}+{{media_03:echopen-db_filter_v1.jpg?200|echopen-DB_filter_V1.JPG echopen-DB_filter_V1.JPG}}
  
   * DB-tr_switch_tgc_V1 > protection circuit + amplificateur à gain variable (pour contrer atténuation dans les tissus vivants)   * DB-tr_switch_tgc_V1 > protection circuit + amplificateur à gain variable (pour contrer atténuation dans les tissus vivants)
  
-{{:echopen-DB_tr_switch_tgc_V1.JPG?200|echopen-DB_tr_switch_tgc_V1.JPG echopen-DB_tr_switch_tgc_V1.JPG}}+{{media_03:echopen-db_tr_switch_tgc_v1.jpg?200|echopen-DB_tr_switch_tgc_V1.JPG echopen-DB_tr_switch_tgc_V1.JPG}}
  
   * DB-enveloppe_detector_V1 > Détecteur d'enveloppe   * DB-enveloppe_detector_V1 > Détecteur d'enveloppe
  
-{{:echopen-DB_envelopper_detector_V1.JPG?200|echopen-DB_envelopper_detector_V1.JPG echopen-DB_envelopper_detector_V1.JPG}}+{{media_03:echopen-db_envelopper_detector_v1.jpg?200|echopen-DB_envelopper_detector_V1.JPG echopen-DB_envelopper_detector_V1.JPG}}
  
   * DB-motor_control_V3 > Controleur de moteur, générateur pulse/trigger   * DB-motor_control_V3 > Controleur de moteur, générateur pulse/trigger
  
-{{:echopen-DB_motor_control_V3.JPG?200|echopen-DB_motor_control_V3.JPG echopen-DB_motor_control_V3.JPG}}+{{media_03:echopen-db_motor_control_v3.jpg?200|echopen-DB_motor_control_V3.JPG echopen-DB_motor_control_V3.JPG}}
  
   * carte TGC > Ampli à gain variable (-5>+55db commandé 0>1V (analogique)   * carte TGC > Ampli à gain variable (-5>+55db commandé 0>1V (analogique)
  
-{{:echopen-TGC.JPG?200|echopen-TGC.JPG echopen-TGC.JPG}}+{{media_03:echopen-tgc.jpg?200|echopen-TGC.JPG echopen-TGC.JPG}}
  
   * MAXIM4940 > Convertisseur ultra rapide logique / -100V   * MAXIM4940 > Convertisseur ultra rapide logique / -100V
  
-{{:echopen-MAX4940.JPG?200|echopen-MAX4940.JPG echopen-MAX4940.JPG}}+{{media_03:echopen-max4940.jpg?200|echopen-MAX4940.JPG echopen-MAX4940.JPG}}
  
   * Carte mère   * Carte mère
  
-{{:echopen-motherBoard.png?200|echopen-motherBoard.png echopen-motherBoard.png}}+{{media_03:echopen-motherboard.png?200|echopen-motherBoard.png echopen-motherBoard.png}}
  
   * Câbles SMA   * Câbles SMA
     * 3 x 30cm mâle/mâle     * 3 x 30cm mâle/mâle
  
-{{:echopen-SMA-cable.JPG?200|echopen-SMA-cable.JPG echopen-SMA-cable.JPG}}+{{media_03:echopen-sma-cable.jpg?200|echopen-SMA-cable.JPG echopen-SMA-cable.JPG}}
  
   *     * 3 x 60cm mâle/pin   *     * 3 x 60cm mâle/pin
  
-{{:echopen-SMA-Pin.JPG?200|echopen-SMA-Pin.JPG echopen-SMA-Pin.JPG}}+{{media_03:echopen-sma-pin.jpg?200|echopen-SMA-Pin.JPG echopen-SMA-Pin.JPG}}
  
   * liaison RedPitaya/motor-control   * liaison RedPitaya/motor-control
  
-{{:RP_bottom_view.png?200|RP_bottom_view.png RP_bottom_view.png}}+{{media_12:rp_bottom_view.png?200|RP_bottom_view.png RP_bottom_view.png}}
  
-====== Software ======+===== Software =====
  
-===== Pré-requis =====+==== Pré-requis ====
  
   * Il existe un script pour installer les logiciels nécessaires pour le développement et la programmation des divers microcontrôleurs depuis le git   * Il existe un script pour installer les logiciels nécessaires pour le développement et la programmation des divers microcontrôleurs depuis le git
  
-''%%cd /ici ou là/%%''\\ +  cd /ici ou là/ 
-''%%git clone %%''[[https://github.com/echopen/PRJ-medtec_kit.git|''%%https://github.com/echopen/PRJ-medtec_kit.git%%'']]\\ +  git clone https://github.com/echopen/PRJ-medtec_kit.git 
-''%%cd PRJ-medtec_kit/installation/linux_user%%''\\ +  cd PRJ-medtec_kit/installation/linux_user 
-''%%sudo apt-get update%%''\\ +  sudo apt-get update 
-''%%sh ./echopen_full.sh%%''+  sh ./echopen_full.sh
  
 ou ou
  
-''%%sh ./echopen_light.sh%%''+  sh ./echopen_light.sh
  
   * installer l'IDE Arduino   * installer l'IDE Arduino
Ligne 101: Ligne 114:
 voir [[https://www.arduino.cc/en/guide/linux|ici]] voir [[https://www.arduino.cc/en/guide/linux|ici]]
  
-===== Arduino =====+==== Arduino ====
  
   * Contrôle du moteur   * Contrôle du moteur
Ligne 107: Ligne 120:
 la compilation du code donne l'erreur suivante avec la verion 1.05 de l'IDE la compilation du code donne l'erreur suivante avec la verion 1.05 de l'IDE
  
-''%%MDL-motor_control_v1.ino : 76:52: error: ‘digitalPinToInterrupt’ was not declared in this scope%%''+  MDL-motor_control_v1.ino : 76:52: error: ‘digitalPinToInterrupt’ was not declared in this scope
  
 plus de soucis avec la verion 1.8.2 de l'IDE Arduino plus de soucis avec la verion 1.8.2 de l'IDE Arduino
  
-===== Red Pitaya =====+==== Red Pitaya ====
  
 https://github.com/echopen/PRJ-medtec_kit/tree/master/electronic/modules/hardware/MDL-redpitaya https://github.com/echopen/PRJ-medtec_kit/tree/master/electronic/modules/hardware/MDL-redpitaya
Ligne 117: Ligne 130:
 http://redpitaya.readthedocs.io/en/latest/doc/quickStart/SDcard/SDcard.html http://redpitaya.readthedocs.io/en/latest/doc/quickStart/SDcard/SDcard.html
  
-===== Visualisation =====+==== Visualisation ====
  
 Une fois les librairies et logiciels installés il faut éxecuter le script//instal.sh// qui se situe dans /PRJ-medtec_kit/installation/linux_user/src Une fois les librairies et logiciels installés il faut éxecuter le script//instal.sh// qui se situe dans /PRJ-medtec_kit/installation/linux_user/src
  
-''%%cd PRJ-medtec_kit/installation/linux_user/src%%''\\ +  cd PRJ-medtec_kit/installation/linux_user/src 
-''%%sh install.sh%%''+  sh install.sh
  
 Il existe deux programme : Il existe deux programme :
Ligne 129: Ligne 142:
  
 affiche ligne par ligne les mesure effectuées à la manière d'un oscilloscope\\ affiche ligne par ligne les mesure effectuées à la manière d'un oscilloscope\\
-{{:echopen-test-probeA-enveloppe.png?400|fig:echopen-test-probeA-enveloppe.png}} {{:echopen-test-probeA-RAW.png?400|fig:echopen-test-probeA-RAW.png}}+{{media_03:echopen-test-probea-enveloppe.png?400|fig:echopen-test-probeA-enveloppe.png}} {{media_03:echopen-test-probea-raw.png?400|fig:echopen-test-probeA-RAW.png}}
  
   * probe_mode_B   * probe_mode_B
  
 affiche une image en niveau de gris à la manière d'une échographie\\ affiche une image en niveau de gris à la manière d'une échographie\\
-{{:echopen-test-probeB.png?400|fig:echopen-test-probeB.png}}+{{media_03:echopen-test-probeb.png?400|fig:echopen-test-probeB.png}}
  
 ==== Mise en route ==== ==== Mise en route ====
Ligne 146: Ligne 159:
 via ordinateur via ordinateur
  
-''%%cd functional_code/firmware/MDL-motor_control_v3%%''\\ +  cd functional_code/firmware/MDL-motor_control_v3 
-''%%sh run.sh 192.168.128.3 probe %%''+  sh run.sh 192.168.128.3 probe
  
 via ssh via ssh
  
-''%%cd functional_code/firmware/MDL-motor_control_v3%%''\\ +  cd functional_code/firmware/MDL-motor_control_v3 
-''%%chmod 777 probe  %%''\\ +  chmod 777 probe   
-''%%scp ./probe root@192.168.128.3:/tmp/%%''\\ +  scp ./probe root@192.168.128.3:/tmp/ 
-''%%ssh root@192.168.128.3  %%''\\ +  ssh root@192.168.128.3   
-''%%root  %%''\\ +  root   
-''%%cd /tmp/  %%''\\ +  cd /tmp/   
-''%%./probe  %%''+  ./probe
  
   * lancer la visualisation   * lancer la visualisation
  
-''%%cd functional_code/display/probe_mode_B%%''\\ +  cd functional_code/display/probe_mode_B 
-''%%./probe_mode_B%%''+  ./probe_mode_B
  
 ==== Sonification avec Patch Pd ==== ==== Sonification avec Patch Pd ====
Ligne 191: Ligne 204:
   -  La table d'onde doit s'agiter   -  La table d'onde doit s'agiter
  
 +===== Echopen Unborn v1.1 2020 =====
 +Nouveau firmware pour redpitaya : à télécharger ici {{ media_01:20_04_using_true_data_for_emulator.zip |}} et nouvelle version de server : ajout d'un port (7540) uniquement en UDP {{ media_12:server.zip |}} et un logiciel de test pour recevoir l'image {{ media_12:simple_raspberrypi_display.zip |}}
 +
 +Pour l'utiliser, il faut brancher la RedPiaya, se connecter au wifi redpitaya et lancer le bash send.sh qui envoie le firmware sur la RedPitaya et un fichier text contenant les données pour l'émulateur. Le bash te connecte aussi directement en ssh à la RedPitaya, il te reste à lancer le firmware ( avec un ./server ). De mémoire il faut installer sshpass (pour linux).
 +
 +Ensuite pour le client, tu te connecte à l'IP 192.168.128.3 Port 7538 en TCP pour envoyer/recevoir les paramètres. Comme précédemment, à la connexion au server TCP tu reçois les paramètres par défaut de la RedPitaya, mais ils ne se présentent plus de la même façon, tu reçois un pacquet de 15*2 octet codés en int8_t. Les octets paires donnent l'id du paramère et celui qui suit la valeur de ce paramètre, voici l'énumération correspondante au paramétrage :
 +
 +<code>
 +enum Settings_ID
 +{
 +    na = 0,
 +    tcp_udp,
 +    number_of_bit,
 +    decimation,
 +    number_of_line,
 +    number_of_point_msb,
 +    number_of_point_lsb,
 +    delay_msb,
 +    delay_lsb,
 +    angle,
 +    tgc_start,
 +    tgc_end,
 +    emulator,
 +    start,
 +    settings_size, //use to know automaticly number of settings
 +    client_id,
 +    ready, //use for RedPitaya
 +    end
 +    //na
 +}; 
 +</code>
 +L'ID 0 ne sert pas au cas où on envoit un buffer à 0, les ID >=15 sont particulier et ne sont pas censé te servir (à par éventuellement le end (18) qui force l'arrêt du firmware si = 1).
 +
 +Pour changer les paramètres, tu renvoies les données de la même façon, sachant que tu peux envoyer le nombre de paramètres que tu veux, pas obligatoirement les 15. En réponse, la RedPitaya renvoie un buffer de 2*15 octet avec les nouveaux paramétrages pris en compte (ils peuvent changer de ceux que tu à envoyer si tu as dépasser leurs limites). Le nombre de points maximum est 16384.
 +
 +Pour recevoir des données il faut mettre start à 1, et émulateur à 1 dans ton cas. Si tcp_udp = 0 les données sont envoyées en UDP, sinon en TCP sur le port 7539. ATTENTION pour recevoir les données tu dois lancer un server TCP ou UDP, là tu n'es plus client (pour simplifier l'utilisation de l'UDP). L'émulateur envoie ensuite des pacquts de number_of_point +1 "mots", mots encodé en int8_t dans le cas ou number_of_bit = 8, et en int16_t dans le cas ou number_of_bit = 12. Avec number_of_point = 256*number_of_point_msb + number_of_point_lsb.
 +
 +Par défaut la décimation est à 1 je crois, mais il faut mieux se mettre à 8, on travaillera comme ça pour faire des images. En fonction émulateur, delay, angle, tgc_start et tgc_end ne sont pas pris en compte.
 +
 +Ensuite tu peux arrêter l'envoie de donner avec start = 0. 
 +
 +L'envoi de données se fait sur une autre socket
 +
 +
 +
 +==== Installer et utiliser l'interface graphique en QT ====
 +Code source à télécharger ici : {{ media_12:qt_gui.zip |}}
 +
 +Serveur 092020 multi clients ici : {{ media_03:display_server092020.zip |}} et pour la pi avec dernières modifs (socket video sur 7610) {{ media_03:displayserveur02102020pi.zip |}}
 +
 +Coque filet {{ media_05:coque_filet.stl |}} + gcode creality {{ media_05:ce3_coque_filet.zip |}}
 +
 +Reception de l'image sur Raspberry pi version ok {{ media_12:simple_raspberrypi_display02102020.zip |}}
 +
 +Boitier PVC {{ media_08:boitier_pvc.zip |}}
  
 +{{tag> bj echopen pure_data realisations_materielles }}
echopen_technique.1538146261.txt.gz · Dernière modification : 2018/09/28 14:51 de guillaume