Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2542 connectés 

 


 Mot :   Pseudo :  
  Aller à la page :
 
 Page :   1  2  3  4  5  ..  277  278  279  280  281  282
Auteur Sujet :

[arduino] Topic Unique blabla @ Arduino

n°463810
froggycorp
Posté le 11-03-2025 à 11:01:52  profilanswer
 

Reprise du message précédent :
ha je savais pas, merci :)
ca veut dire qu'il y a 2 puces ? Cela fonctionne comment au niveau matériel ?

 

J'ai découvert il y a pas longtemps qu'un de mes PCs portable recents pouvait le faire et je pensais que cela demandait un matos spécial


Message édité par froggycorp le 11-03-2025 à 11:03:58
mood
Publicité
Posté le 11-03-2025 à 11:01:52  profilanswer
 

n°463848
fredo3
Posté le 11-03-2025 à 15:04:50  profilanswer
 

Oh alors là je ne sais pas comment ils ont fait.
 
 
J'aurais une question encore.
J'ai la fonction de mise à jour de firmware de painlessmesh qui est capricieuse.
https://gitlab.com/painlessMesh/pai [...] Sender.ino
 
Alors l'example en lien fonctionne parfaitement.
 
Le problème c'est quand j'essaye de l'intégrer à mon projet.
 
En gros, si j'enlève la boucle infini du setup:

Code :
  1. while (true) {
  2.             //This program will not reach loop() so we dont have to worry about
  3.             //file scope.
  4.             mesh.update();
  5.             usleep(1000);
  6.           }


 
Et met son contenu dans la fonction loop prédéfinie d'Arduino, comme c'est le cas pour les autres examples, et bien le MCU crash.
 
Bref elle est où la différence entre la boucle while infinie, et le loop arduino???
 
En commentaire de programmeur a écrit qu'il n'a pas besoin de se soucier du file scope.
Est-il là le problème justement???
 
edit:
Tiens je vais poser la question en section c++ plutôt.

Message cité 1 fois
Message édité par fredo3 le 11-03-2025 à 15:10:10
n°463853
froggycorp
Posté le 11-03-2025 à 15:44:03  profilanswer
 

J'ai souvenir être tombé sur le pourquoi du loop() en arduino, mais je ne retrouve plus la raison.
Je crois qu'il y a un simple while(true) loop(); quelque part lors de la compilation.

n°463880
crazytiti
http://crazytiti.free.fr/
Posté le 11-03-2025 à 21:15:55  profilanswer
 

Hum, on a parlé des nouvelles "failles" de l'esp32 ?
https://www.cachem.fr/esp32-failles [...] couvertes/
J'avoue que je vois plutôt ça comme des features.
Le changement de MAC n'est pas nouveau j'ai un orangePI qui prend une mac aléatoire à chaque boot alors bon...
Modifier la ram et la flash je ne vois pas le soucis non plus...
Enfin bref pour moi tout ça ne dépend finalement que du code qui est exécuté, ça ne permet pas le hack d'un objet existant ?


---------------
Le PC est une drogue... Téléchargez mes modèles 3D pour que j'ai du filament gratuit :-D https://www.printables.com/fr/@Crazytiti_1456354
n°463961
SuperSic
Posté le 12-03-2025 à 19:59:53  profilanswer
 

:hello:  
 
J'ai cet article https://korben.info/wokwi-le-simula [...] types.html qui a pop dans mon fil d'actu
Vous connaissez ? Ca a l'air bien sur le papier. :)


---------------
"Les soldats vivent. Et se demandent pourquoi." Toubib (La Compagnie noire) | [TU] Pronomoo
n°463969
froggycorp
Posté le 12-03-2025 à 20:36:22  profilanswer
 

Oui intéressant, à voir le debugger ce que cela donne.
 
A titre perso, je trouve ce point :

Citation :

Des enseignants l’utilisent même pour leurs cours d’électronique à distance… Pratique pour faire des TP sans avoir à distribuer de matériel ! D’ailleurs, plusieurs universités ont intégré Wokwi dans leur cursus d’ingénierie.


dommage, ce que je trouve rigolo avec arduino & co, c'est l'application concrete devant mes yeux ebahis.
 
-----------
 
Petite question, j'ai pas trouvé sur le forum. J'utilise feu l'extension arduino sur VSCode qui n'est plus maintenu pour du STM32. En soit cela fonctionne, sauf qu'il recompile tout à chaque fois (toutes les libs qui n'ont évidemment pas bougé) ce qui sur mon PC prend pas mal de temps.
Est-ce que platformIO a le même soucis ou c'est plus optimisé niveau compilation ?

n°463975
crazytiti
http://crazytiti.free.fr/
Posté le 12-03-2025 à 21:54:49  profilanswer
 

J'ai déja utilisé Wokwi, certainement ici même pour montrer des schémas.
Je ne l'ai pas mis dans mes favoris, il devait y avoir un truc qui m'a chagriné ?
 
Where's the catch ?


---------------
Le PC est une drogue... Téléchargez mes modèles 3D pour que j'ai du filament gratuit :-D https://www.printables.com/fr/@Crazytiti_1456354
n°464011
froggycorp
Posté le 13-03-2025 à 11:56:22  profilanswer
 

froggycorp a écrit :


Est-ce que platformIO a le même soucis ou c'est plus optimisé niveau compilation ?

 

Je m'auto réponds (l'installation a été un peu ...), effectivement c'est plus optimisé :D
Bon, je ne suis pas très fan des environnements qui ne sont pas totalement offline. J'ai l'impression que pour la création de projet, il faut systématiquement une connection internet.


Message édité par froggycorp le 13-03-2025 à 11:59:15
n°464152
froggycorp
Posté le 15-03-2025 à 11:40:41  profilanswer
 

fredo3 a écrit :


Bref elle est où la différence entre la boucle while infinie, et le loop arduino???

 

En commentaire de programmeur a écrit qu'il n'a pas besoin de se soucier du file scope.
Est-il là le problème justement???

 

J'ai retrouvé la réponse, cela se voit dans le cas d'un debuggage :

 
Code :
  1. /*
  2.   main.cpp - Main loop for Arduino sketches
  3.   Copyright (c) 2005-2013 Arduino Team.  All right reserved.
  4.   This library is free software; you can redistribute it and/or
  5.   modify it under the terms of the GNU Lesser General Public
  6.   License as published by the Free Software Foundation; either
  7.   version 2.1 of the License, or (at your option) any later version.
  8.   This library is distributed in the hope that it will be useful,
  9.   but WITHOUT ANY WARRANTY; without even the implied warranty of
  10.   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  11.   Lesser General Public License for more details.
  12.   You should have received a copy of the GNU Lesser General Public
  13.   License along with this library; if not, write to the Free Software
  14.   Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  15. */
  16. #define ARDUINO_MAIN
  17. #include "Arduino.h"
  18. // Force init to be called *first*, i.e. before static object allocation.
  19. // Otherwise, statically allocated objects that need HAL may fail.
  20. __attribute__((constructor(101))) void premain()
  21. {
  22.   // Required by FreeRTOS, see http://www.freertos.org/RTOS-Cortex-M3-M4.html
  23. #ifdef NVIC_PRIORITYGROUP_4
  24.   HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_4);
  25. #endif
  26. #if (__CORTEX_M == 0x07U)
  27.   // Defined in CMSIS core_cm7.h
  28. #ifndef I_CACHE_DISABLED
  29.   SCB_EnableICache();
  30. #endif
  31. #ifndef D_CACHE_DISABLED
  32.   SCB_EnableDCache();
  33. #endif
  34. #endif
  35.   init();
  36. }
  37. /*
  38. * \brief Main entry point of Arduino application
  39. */
  40. int main(void)
  41. {
  42.   initVariant();
  43.   setup();
  44.   for (;;) {
  45. #if defined(CORE_CALLBACK)
  46.     CoreCallback();
  47. #endif
  48.     loop();
  49.     serialEventRun();
  50.   }
  51.   return 0;
  52. }
 

La compilation arduino rajoute dans la boucle le CoreCallback(); et SerialEventRun(); qui doivent être géré en interne par le program


Message édité par froggycorp le 15-03-2025 à 11:41:00
n°464172
fredo3
Posté le 15-03-2025 à 16:36:29  profilanswer
 

Merci :jap:
 
Je ne comprends pas pourquoi ca plante alors :/

mood
Publicité
Posté le 15-03-2025 à 16:36:29  profilanswer
 

n°464336
froggycorp
Posté le 18-03-2025 à 16:04:08  profilanswer
 

Hola,

 

J'ai une question STM32(L03) concernant le SPI. J'essaye de le faire en drivers LL mais cela ... marche po :/

 

Je test SCK à l'oscilloscope qui me renvoit rien du tout, j'ai PA5 & PB3 qui font SCK.
Si je regarde le registre SPI, j'ai bien les données qui sont envoyées, je suppute que c'est un probleme de port.
Par ailleurs, le code avec la librairie arduino fonctionne sans problème, mais sur le port PB3.

 

Au niveau du code, la fonction d'init (SPIx est hardcoded pour tester) :

 
Code :
  1. STM32_SPI::STM32_SPI(SPI_TypeDef *SPIx, uint8_t _SPI_pin) {
  2.     SPI_pin = _SPI_pin;
  3.    
  4.     if (SPI_pin == 1) {//PA5=SCK PA6=MISO PA7=MOSI PA4=NSS
  5.         // Enable clocks
  6.    
  7.         LL_GPIO_InitTypeDef GPIO_InitStruct;
  8.         /* (1) Enables GPIO clock and configures the SPI1 pins ********************/
  9.           /* Enable the peripheral clock of GPIOA */
  10.         LL_IOP_GRP1_EnableClock(LL_IOP_GRP1_PERIPH_GPIOA);
  11.         // Configure Pins
  12.         // Pin PA5 (SCK) must be configured as as 50MHz push pull
  13.         GPIO_InitStruct.Pin = LL_GPIO_PIN_5;
  14.         GPIO_InitStruct.Mode = LL_GPIO_MODE_OUTPUT;
  15.         GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_VERY_HIGH;
  16.         GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL;
  17.         GPIO_InitStruct.Pull = LL_GPIO_PULL_NO;
  18.         GPIO_InitStruct.Alternate = LL_GPIO_AF_0;
  19.         LL_GPIO_Init(GPIOA, &GPIO_InitStruct);
  20.         // Pin PA6 (MISO) must be configured as as input pull-up
  21.         GPIO_InitStruct.Pin = LL_GPIO_PIN_6;
  22.         GPIO_InitStruct.Mode = LL_GPIO_MODE_INPUT;
  23.         GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_HIGH;
  24.         GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL;
  25.         GPIO_InitStruct.Pull = LL_GPIO_PULL_NO;
  26.         GPIO_InitStruct.Alternate = LL_GPIO_AF_0;
  27.         LL_GPIO_Init(GPIOA, &GPIO_InitStruct);
  28.         // Pin PA7 (MOSI) must be configured as as 50MHz push pull
  29.         GPIO_InitStruct.Pin = LL_GPIO_PIN_7;
  30.         GPIO_InitStruct.Mode = LL_GPIO_MODE_OUTPUT;
  31.         GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_HIGH;
  32.         GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL;
  33.         GPIO_InitStruct.Pull = LL_GPIO_PULL_NO;
  34.         GPIO_InitStruct.Alternate = LL_GPIO_AF_0;
  35.         LL_GPIO_Init(GPIOA, &GPIO_InitStruct);
  36.        
  37.         // Pin PA4 (NSS)
  38.         GPIO_InitStruct.Pin = LL_GPIO_PIN_4;
  39.         GPIO_InitStruct.Mode = LL_GPIO_MODE_OUTPUT;
  40.         GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_HIGH;
  41.         GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_OPENDRAIN;
  42.         GPIO_InitStruct.Pull = LL_GPIO_PULL_DOWN;
  43.         GPIO_InitStruct.Alternate = LL_GPIO_AF_0;
  44.         LL_GPIO_Init(GPIOA, &GPIO_InitStruct);
  45.     }
  46.    
  47.     if (SPI_pin == 2) {//PB3=SCK PB4=MISO PB5=MOSI PA15=NSS
  48.         // Enable clocks
  49.           /* Enable the peripheral clock of GPIOB */
  50.         LL_IOP_GRP1_EnableClock(LL_IOP_GRP1_PERIPH_GPIOA | LL_IOP_GRP1_PERIPH_GPIOB);
  51.         LL_GPIO_InitTypeDef GPIO_InitStruct;
  52.         // Configure Pins
  53.         // Pin PB3 (SCK) must be configured as as 50MHz push pull
  54.         GPIO_InitStruct.Pin = LL_GPIO_PIN_3;
  55.         GPIO_InitStruct.Mode = LL_GPIO_MODE_OUTPUT;
  56.         GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_VERY_HIGH;
  57.         GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL;
  58.         GPIO_InitStruct.Pull = LL_GPIO_PULL_NO;
  59.         GPIO_InitStruct.Alternate = LL_GPIO_AF_0;
  60.         LL_GPIO_Init(GPIOB, &GPIO_InitStruct);
  61.         // Pin PB4 (MISO) must be configured as as input pull-up
  62.         GPIO_InitStruct.Pin = LL_GPIO_PIN_4;
  63.         GPIO_InitStruct.Mode = LL_GPIO_MODE_INPUT;
  64.         GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_HIGH;
  65.         GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL;
  66.         GPIO_InitStruct.Pull = LL_GPIO_PULL_NO;
  67.         GPIO_InitStruct.Alternate = LL_GPIO_AF_0;
  68.         LL_GPIO_Init(GPIOB, &GPIO_InitStruct);
  69.      
  70.         // Pin PB5 (MOSI) must be configured as as 50MHz push pull
  71.         GPIO_InitStruct.Pin = LL_GPIO_PIN_5;
  72.         GPIO_InitStruct.Mode = LL_GPIO_MODE_OUTPUT;
  73.         GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_HIGH;
  74.         GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL;
  75.         GPIO_InitStruct.Pull = LL_GPIO_PULL_NO;
  76.         GPIO_InitStruct.Alternate = LL_GPIO_AF_0;
  77.         LL_GPIO_Init(GPIOB, &GPIO_InitStruct);
  78.        
  79.         // Pin PA15 (NSS)
  80.         GPIO_InitStruct.Pin = LL_GPIO_PIN_15;
  81.         GPIO_InitStruct.Mode = LL_GPIO_MODE_OUTPUT;
  82.         GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_HIGH;
  83.         GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_OPENDRAIN;
  84.         GPIO_InitStruct.Pull = LL_GPIO_PULL_DOWN;
  85.         GPIO_InitStruct.Alternate = LL_GPIO_AF_0;
  86.         LL_GPIO_Init(GPIOA, &GPIO_InitStruct);
  87.     }
  88.    
  89.     // Configure device
  90.     LL_APB2_GRP1_EnableClock(LL_APB2_GRP1_PERIPH_SPI1); 
  91.     LL_SPI_InitTypeDef SPI_InitStruct;
  92.     SPI_InitStruct.TransferDirection = LL_SPI_FULL_DUPLEX;
  93.     SPI_InitStruct.Mode = LL_SPI_MODE_MASTER;
  94.     SPI_InitStruct.DataWidth = LL_SPI_DATAWIDTH_8BIT;
  95.     SPI_InitStruct.ClockPolarity = LL_SPI_POLARITY_LOW; //HIGH ? CF doc STM32
  96.     SPI_InitStruct.ClockPhase = LL_SPI_PHASE_1EDGE; //2e edge ? CF Dox STM32
  97.     SPI_InitStruct.NSS = LL_SPI_NSS_SOFT;
  98. //    SPI_InitStruct.NSS = LL_SPI_NSS_HARD_OUTPUT;
  99.     SPI_InitStruct.BaudRate = LL_SPI_BAUDRATEPRESCALER_DIV2;
  100.     SPI_InitStruct.BitOrder = LL_SPI_MSB_FIRST;
  101.     SPI_InitStruct.CRCCalculation = LL_SPI_CRCCALCULATION_DISABLE;
  102.     LL_SPI_Init(SPI1, &SPI_InitStruct);
  103.     LL_SPI_SetStandard(SPI1, LL_SPI_PROTOCOL_MOTOROLA);   
  104. };
 

Et le main :

 
Code :
  1. #include <Arduino.h>
  2. #include "STM32_SPI.h"
  3. STM32_SPI spi = STM32_SPI(SPI1, 1);
  4. void setup(void)
  5. {
  6.     Serial.begin(19200);
  7. }
  8. void loop()
  9. {
  10. LL_SPI_Enable(SPI1);
  11. LL_SPI_TransmitData8(SPI1, 0xFF);
  12. Serial.println(SPI1->CR1, BIN);
  13. Serial.println(SPI1->CR2, BIN);
  14. Serial.println(SPI1->SR, BIN);
  15. Serial.println(SPI1->DR, BIN);
  16. while(!LL_SPI_IsActiveFlag_TXE(SPI1));
  17. Serial.println("" );
  18. LL_SPI_Disable(SPI1);
  19. }
  20. extern "C" void SystemClock_Config(void)
  21. {
  22.     RCC_OscInitTypeDef RCC_OscInitStruct = {0};
  23.     RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
  24.     RCC_PeriphCLKInitTypeDef PeriphClkInit = {0};
  25.  
  26.     /** Configure the main internal regulator output voltage
  27.     */
  28.     __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);
  29.  
  30.     /** Initializes the RCC Oscillators according to the specified parameters
  31.     * in the RCC_OscInitTypeDef structure.
  32.     */
  33.     RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_LSI|RCC_OSCILLATORTYPE_MSI;
  34.     RCC_OscInitStruct.LSIState = RCC_LSI_ON;
  35.     RCC_OscInitStruct.MSIState = RCC_MSI_ON;
  36.     RCC_OscInitStruct.MSICalibrationValue = 0;
  37.     RCC_OscInitStruct.MSIClockRange = RCC_MSIRANGE_6;
  38.     RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE;
  39.     if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
  40.     {
  41.       Error_Handler();
  42.     }
  43.  
  44.     /** Initializes the CPU, AHB and APB buses clocks
  45.     */
  46.     RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
  47.                                 |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
  48.     RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_MSI;
  49.     RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
  50.     RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
  51.     RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
  52.  
  53.     if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK)
  54.     {
  55.       Error_Handler();
  56.     }
  57.     PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USART2|RCC_PERIPHCLK_LPUART1
  58.                                 |RCC_PERIPHCLK_I2C1|RCC_PERIPHCLK_RTC;
  59.     PeriphClkInit.Usart2ClockSelection = RCC_USART2CLKSOURCE_PCLK1;
  60.     PeriphClkInit.Lpuart1ClockSelection = RCC_LPUART1CLKSOURCE_PCLK1;
  61.     PeriphClkInit.I2c1ClockSelection = RCC_I2C1CLKSOURCE_SYSCLK;
  62.     PeriphClkInit.RTCClockSelection = RCC_RTCCLKSOURCE_LSI;
  63.     if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK)
  64.     {
  65.       Error_Handler();
  66.     }
  67.  
  68. }
 

Le pin PA5 est bien initialisé, je peux le faire changer d'état. Que je test avec SPI_pin = 1 ou 2, cela ne change rien.

 

Une idée ? J'ai cherché et je trouve le même code que moi, mais sans effet ... :/

 

D'une manière générale, comment se décide dans quel port va les periphériques ? Au reset, j'ai la fonction SCK sur PA5 & PB3, si je veux utiliser PB3 pour une led (ou autre), comment limité SCK à PA5 ?

 

Merki :)


Message édité par froggycorp le 18-03-2025 à 16:26:02
n°464348
froggycorp
Posté le 18-03-2025 à 18:51:28  profilanswer
 

Bon, je m'autoréponds comme un grand.
L'"alternate function" se definit sur GPIO_InitStruct.Mode J'avais c/c du code qui était comme cela et pas une bonne idée (je suppute qu'ensuite c'était du SPI soft)

 

Et comme on peut le voir, l'initialisation du SPI se fait lors de la création de l'objet, qui se passe avant le setup();
MAUVAISE IDEE !!!
Le systemclockconfig est initialisée après (non visible dans le code version arduino, mais appelé lors de la construction de l'exe)

 

Entre ça et le BOOT0 que j'avais pas soudé suite à une petite erreur de conception de PCB et qui forcément, entrainait un boot aléatoire. J'ai bien perdu mon temps.


Message édité par froggycorp le 18-03-2025 à 19:02:59
n°464792
froggycorp
Posté le 23-03-2025 à 19:10:31  profilanswer
 

Il y en a qui ont déjà joué avec des modules comme ceux là :
https://fr.aliexpress.com/item/1005006837715553.html

 

J'en ai pris et j'ai l'impression que cela capte que dalle. J'ai bien une modification de la tension sur l'entrée analog mais j'ai pas l'impression que ce soit exploitable.
En continu, j'ai la tension planchée et quand je fais du bruit (quasiment dessus) j'ai une montée mais c est pas ouf
Est-ce que cela pourrait du au faite qu'il y a un serial.print avec la valeure ce qui amenerait trop de latence dans l'analogique ? (arduino)
J'ai joué avec la résistance, cela augmente les valeurs, mais rien de transcendant.

 

En pratique j'aurais voulu reperer des harmoniques ou des ambiances. Je pensais remplir un tableau avec les valeurs sur x ms et faire des opérations dessus


Message édité par froggycorp le 23-03-2025 à 19:11:46
n°464793
rat de com​bat
attention rongeur méchant!
Posté le 23-03-2025 à 19:23:07  profilanswer
 

A première vue je vois LM393, c'est un comparateur, le truc doit simplement sortir un signal numérique si le volume sonore est supérieur à un seuil non?
 
Toi il te faudrait un micro + préampli ou un truc I2S.


---------------
Ne laissez pas mourir vos sujets en cours de route!
n°464799
Natopsi
☄️Just end it already!☄️
Posté le 23-03-2025 à 20:44:17  profilanswer
 

https://win.adrirobot.it/sensori/37 [...] ircuit.jpg
Sur A0 t'aurais le signal en sortie brute du micro, si c'est un authentique électret t'auras pas un signal de grande amplitude et pour en faire quelque chose faut passer par un filtre passe haut pour virer la composante continue et un ampli.
 
Après ça peut aussi être un de ces faux microphones avec une sorte de membrane dont la résistivité varie avec le son mais j'y crois pas trop.


---------------
ACH/VDSHFRCoin◈1435mm⚡
n°464800
froggycorp
Posté le 23-03-2025 à 21:02:43  profilanswer
 

mouais, pas ouf en gros
 
Je vais voir si je peux néanmoins en tirer quelque chose, il y a plein de tuto avec ce modele.
 
J'avoue que j'ai pas envie d'y investir trop de temps, c'est un projet un peu secondaire où je pensais finir rapido. Je pensais que ce serait PnP ^^
 
Merki

n°464899
rat de com​bat
attention rongeur méchant!
Posté le 24-03-2025 à 15:25:44  profilanswer
 

Natopsi a écrit :

https://win.adrirobot.it/sensori/37 [...] ircuit.jpg
Sur A0 t'aurais le signal en sortie brute du micro

Y'a donc "qu"'à remplacer le potard par un DAC et faire un convertisseur à approximations successives avec le LM393. :o :o


---------------
Ne laissez pas mourir vos sujets en cours de route!
n°464911
crazytiti
http://crazytiti.free.fr/
Posté le 24-03-2025 à 16:50:03  profilanswer
 

Je viens de zieuter le schéma.
La sensibilité du réglage doit etre très élevée : A vue d'oeil 1/4 de tour du potar en plus ou moins et c'est trop ou pas assez sensible.
Sachant que c'est un multi-tour.
Essaye dans un environnement calme tu tourne jusqu'a trouver le point de bascule entre L1 et L2, attention les vibration que tu fait en tournant se transmettent au micro.
Une fois le point de bascule trouvé tu essaye 1/2 tour en plus ou moins pour voir comment ça réagit au bruit.

 

Nb : tu devrait avoir un signal 0 ou 5V en sortie de ce montage, le LM393 est monté en comparateur (= AOP avec gain infini/maxi)


Message édité par crazytiti le 24-03-2025 à 16:51:37

---------------
Le PC est une drogue... Téléchargez mes modèles 3D pour que j'ai du filament gratuit :-D https://www.printables.com/fr/@Crazytiti_1456354
n°464920
froggycorp
Posté le 24-03-2025 à 17:19:52  profilanswer
 

J'ai bidouillé et fait comme tu dis, le problème c'est que l'amplification est pas ouf. Si je parle fort sur le micro, je peux voir une montée de la tension. Sinon, je vois pas grand chose.
Je récup les valeurs sur x mS dans un tableau et je cherche la valeure max pour déja avoir une idée. A 1mètre, j'ai pas vraiment de valeurs qui se dégagent du tableau.

n°464921
rat de com​bat
attention rongeur méchant!
Posté le 24-03-2025 à 17:32:07  profilanswer
 

Tu as branché quel signal sur ton Arduino?
 
Juste pour clarifier, le signal en sortie du 393 est numérique, 0 ou 5V, selon si le bruit ambiant est inférieur ou supérieur à un seuil (peut-être dans le sens inverse, pas revérifié le schéma).


---------------
Ne laissez pas mourir vos sujets en cours de route!
n°464923
froggycorp
Posté le 24-03-2025 à 17:49:33  profilanswer
 

L'analogique ;)

n°464924
froggycorp
Posté le 24-03-2025 à 18:09:32  profilanswer
 

A l'oscillo (j'ouble toujours que j'en ai de compet maintenant), avec le bruit ambiant, j'ai 150-158mV et si je joue une note a cote, j'ai une pointe à 164mV en sensibilité max.
A 1m, j'ai déjà plus grand chose quand je tape dans les mains, mais ce serait exploitable comme detecteur de bruit

n°464925
rat de com​bat
attention rongeur méchant!
Posté le 24-03-2025 à 18:17:54  profilanswer
 

C'est pourri comme signal, surtout pour un ADC. :o  
 
Prend un autre module avec un vrai pré-ampli micro et attention à la composante continue.


---------------
Ne laissez pas mourir vos sujets en cours de route!
n°464926
froggycorp
Posté le 24-03-2025 à 18:31:10  profilanswer
 

Je suis déception, pourtant ce module est reference partout dans les montages arduino + capteur son. Genre ça https://www.youtube.com/watch?v=2n_JiXvBwsw mais maintenant je comprends qu'il a mis le haut parleur à fond.
Sachant que le module du dessus est HS, je l'ai vu avec un autre module que j'ai testé par acquis de conscience. Mais le résultat est pas vraiment mieux.
 
Braif, https://fr.aliexpress.com/item/1005006468621971.html ca c'est mieux ?
C'est un MAX9814 qui semble est plus fait pour.

n°464930
rat de com​bat
attention rongeur méchant!
Posté le 24-03-2025 à 19:11:27  profilanswer
 

Je peux pas voir le lien ("êtes vous un robot" etc :kaola: ), mais le CI (clone :o ) semble ok à première vue. Sinon on doit pouvoir bricoler un truc soi-même, si tu as un AOP en stock... Vu que tu ne cherches pas la qualité sonore ultime ça doit bien être possible. :o


---------------
Ne laissez pas mourir vos sujets en cours de route!
n°464940
crazytiti
http://crazytiti.free.fr/
Posté le 24-03-2025 à 22:09:19  profilanswer
 

Moi je vois plusieurs problèmes dans ta façon de procéder :
 
1) On est déja 2 à te dire que ce montage sort un signal numérique (0 ou 5V, 0 ou 1 en binaire) et tu dit l'avoir branché sur une entrée analogique
 
2) le réglage du potentiomètre est très important, ils ont mis des LED sur le montage autant en profiter.


---------------
Le PC est une drogue... Téléchargez mes modèles 3D pour que j'ai du filament gratuit :-D https://www.printables.com/fr/@Crazytiti_1456354
n°464941
crazytiti
http://crazytiti.free.fr/
Posté le 24-03-2025 à 22:11:11  profilanswer
 

Tiens le rat voici la version compatible avec tes aspirations à plus de liberté :bounce:
https://rehost.diberie.com/Picture/Get/r/381182


---------------
Le PC est une drogue... Téléchargez mes modèles 3D pour que j'ai du filament gratuit :-D https://www.printables.com/fr/@Crazytiti_1456354
n°464949
froggycorp
Posté le 25-03-2025 à 09:04:30  profilanswer
 

crazytiti a écrit :

Moi je vois plusieurs problèmes dans ta façon de procéder :
 
1) On est déja 2 à te dire que ce montage sort un signal numérique (0 ou 5V, 0 ou 1 en binaire) et tu dit l'avoir branché sur une entrée analogique
 
2) le réglage du potentiomètre est très important, ils ont mis des LED sur le montage autant en profiter.


 
A0 sur A0 et D0 sur D0 :D
Mais moi je veux faire comme le M, dans la vidéo qui détecte des notes  :cry:  
Si c'est juste la detection d'un bruit en fonction d'un seuil plancher, cela m'interesse pas trop. Et même après reglage, cela change po grand chose, c'est pas ouf. (sur la detection)

n°464951
crazytiti
http://crazytiti.free.fr/
Posté le 25-03-2025 à 10:05:56  profilanswer
 

Euh, ça me semble difficile de détecter des notes avec ce truc :ouch:  
Tu aurais la vidéo ?
 
Les trucs qui détectent des notes c'est les appli d'accord d'instrument sur smartphone ou alors de spectrogramme par ex spectroid https://play.google.com/store/apps/ [...] trum&hl=fr


---------------
Le PC est une drogue... Téléchargez mes modèles 3D pour que j'ai du filament gratuit :-D https://www.printables.com/fr/@Crazytiti_1456354
n°464960
froggycorp
Posté le 25-03-2025 à 10:35:03  profilanswer
 

C'est ce que j'ai mis au dessus :
https://www.youtube.com/watch?v=2n_JiXvBwsw

 

En faite il met le HP à fond juste devant et j'avais pas percuté.
Mon envie, c'était de mettre en lien des leds RGB avec les notes détectées. Il n'y a pas besoin d'une grosse précision non plus. Mais là, je me suis fait eu :D

 

Comme dit rdc, je peux faire le montage moi même avec AOP, j'ai tout le matos en plus, mais j'aurais voulu un truc clé en main.

Message cité 1 fois
Message édité par froggycorp le 25-03-2025 à 10:37:24
n°464970
M4vrick
Mad user
Posté le 25-03-2025 à 11:13:59  profilanswer
 

Il a clairement bidouillé pour que ca marche, ce genre de module est juste concu pour détecter un seuil de niveau sonore et basculer une sortie. En gros c'est une détecteur de clap.
 
Toujours se méfier des projets de ce genre et bien comprendre comment cela fonctionne avant de se lancer.


---------------
--== M4vr|ck ==--
n°464973
froggycorp
Posté le 25-03-2025 à 11:38:59  profilanswer
 

Cela me fait un truc en plus à stocker. En pratique, j'ai cherché sur le net et beaucoup semble penser comme moi. J'avoue, j'ai pas regardé le schéma avant (<sifflote> ), je me suis basé sur les différents projets.
D'ailleurs, même dans le kit eleegoo, cela affiche la valeur analogique du signal comme quoi il y a une mauvaise information assez générale.

n°465047
rat de com​bat
attention rongeur méchant!
Posté le 25-03-2025 à 15:56:35  profilanswer
 

crazytiti a écrit :

Tiens le rat voici la version compatible avec tes aspirations à plus de liberté :bounce:
https://rehost.diberie.com/Picture/Get/r/381182

Merci :jap: , mais Natopsi avait déjà posté un lien vers le schéma. Concernant les libertés, c'est surtout limiter (à défaut de pouvoir éviter) le pistage sur internet...

 
froggycorp a écrit :

comme quoi il y a une mauvaise information assez générale.

C'est assez récurrent avec les modules "Ali" ça... Faut toujours bien regarder/lire/chercher.

 

Sinon pour détecter des notes il te faudra du FFT ou sa version "simplifiée" Algo de Goertzel. Je te souhaite bien du courage si tu veux faire ça à la main (ce dont je doute vu le sujet :o ).


Message édité par rat de combat le 25-03-2025 à 15:57:02

---------------
Ne laissez pas mourir vos sujets en cours de route!
n°465049
froggycorp
Posté le 25-03-2025 à 15:58:44  profilanswer
 

cela tourne sur un arduino ? :D

n°465058
rat de com​bat
attention rongeur méchant!
Posté le 25-03-2025 à 16:21:05  profilanswer
 

Ca dépend. :o Sur un ESP certainement sans trop de soucis, sur un AVR 8 bit faudra trouver une lib très optimisée et pas trop pousser. Perso j'ai fait du Goertzel sur AVR 8 bits, mais sans surcouche Arduino et pour quelque fréquences uniquement.


---------------
Ne laissez pas mourir vos sujets en cours de route!
n°465065
M4vrick
Mad user
Posté le 25-03-2025 à 16:50:21  profilanswer
 

j'imagine que ca doit tourner, il y a des vumetre 8 ou 12 canaux à base d'Arduino.


---------------
--== M4vr|ck ==--
n°465074
crazytiti
http://crazytiti.free.fr/
Posté le 25-03-2025 à 17:58:29  profilanswer
 

froggycorp a écrit :

C'est ce que j'ai mis au dessus :
https://www.youtube.com/watch?v=2n_JiXvBwsw

 

En faite il met le HP à fond juste devant et j'avais pas percuté.
Mon envie, c'était de mettre en lien des leds RGB avec les notes détectées. Il n'y a pas besoin d'une grosse précision non plus. Mais là, je me suis fait eu :D

 

Comme dit rdc, je peux faire le montage moi même avec AOP, j'ai tout le matos en plus, mais j'aurais voulu un truc clé en main.

 

Merci j'avais pas vu le lien.
J'ai regardé et le gars se branche effectivement sur A0 avec A0 donc il utilise la partie analogique du montage.
Ca a une chance de marcher si le potard est réglé comme il faut...

 

J'ai regardé son code, ligne 60 tu peut dé-commenter ça pour essayer de voir si tu tourne autour de 512 pendant la calibration.

 

   //Serial.println(offSet[i]); //use this to adjust the sound detection module to approximately half or 512 when no sound is played.

 

Nb : si j'ai bien lu il fait du sampling à 2Khz, donc faut pas espérer mesurer quelque chose plus haut que 1Khz.

 

Le code pour ceux qui ne veulent pas faire un compte
https://pastebin.com/qJuqCnCA


Message édité par crazytiti le 25-03-2025 à 18:03:02

---------------
Le PC est une drogue... Téléchargez mes modèles 3D pour que j'ai du filament gratuit :-D https://www.printables.com/fr/@Crazytiti_1456354
n°465232
froggycorp
Posté le 26-03-2025 à 21:51:58  profilanswer
 

C'est des rigolos chez ST.

Citation :

Bits 9:0 SADD[9:0]: Slave address (master mode)
In 7-bit addressing mode (ADD10 = 0):
SADD[7:1] should be written with the 7-bit slave address to be sent. The bits SADD[9],
SADD[8] and SADD[0] are don't care
.

 

Ce qui est encore plus drole c'est :

Code :
  1. #define MODIFY_REG(REG, CLEARMASK, SETMASK)  WRITE_REG((REG), (((READ_REG(REG)) & (~(CLEARMASK))) | (SETMASK)))
  2. #define I2C_CR2_SADD_Pos             (0U)   
  3. #define I2C_CR2_SADD_Msk             (0x3FFUL << I2C_CR2_SADD_Pos)              /*!< 0x000003FF */
  4. #define I2C_CR2_SADD                 I2C_CR2_SADD_Msk                          /*!< Slave address (master mode) */
  5. /**
  6.   * @brief  Configure the slave address for transfer (master mode).
  7.   * @note   Changing these bits when START bit is set is not allowed.
  8.   * @rmtoll CR2          SADD           LL_I2C_SetSlaveAddr
  9.   * @param  I2Cx I2C Instance.
  10.   * @param  SlaveAddr This parameter must be a value between Min_Data=0x00 and Max_Data=0x3F.
  11.   * @retval None
  12.   */
  13. __STATIC_INLINE void LL_I2C_SetSlaveAddr(I2C_TypeDef *I2Cx, uint32_t SlaveAddr)
  14. {
  15.   MODIFY_REG(I2Cx->CR2, I2C_CR2_SADD, SlaveAddr);
  16. }
 

Il y a pas un truc chelou ? :D

 

Et puis il y a aussi :

Code :
  1. /**
  2.   * @brief  Generate a START or RESTART condition
  3.   * @note   The START bit can be set even if bus is BUSY or I2C is in slave mode.
  4.   *         This action has no effect when RELOAD is set.
  5.   * @rmtoll CR2          START           LL_I2C_GenerateStartCondition
  6.   * @param  I2Cx I2C Instance.
  7.   * @retval None
  8.   */
  9. __STATIC_INLINE void LL_I2C_GenerateStartCondition(I2C_TypeDef *I2Cx)
  10. {
  11.   SET_BIT(I2Cx->CR2, I2C_CR2_START);
  12. }
 

Qui en faite fait un START + adresse du slave.

 

Comment perdre x jours sur une connerie :'(

Message cité 1 fois
Message édité par froggycorp le 26-03-2025 à 21:58:11
n°465621
froggycorp
Posté le 01-04-2025 à 15:03:00  profilanswer
 

froggycorp a écrit :


Il y a pas un truc chelou ? :D

 

Je vois qu'il n'y a plus grand monde ;)

 

La réponse était que la fonction est sensée définir l'adresse I2C (mettons 0x12), sauf que cela copie SlaveAddr dans le registre I2C_CR2_SADD.
Et que le registre I2C_CR2_SADD, le bit0 correspond à rien, ce qui est un peu con. La fonction devrait faire automatiquement un décalage de bit.

 

--------

 

Sinon, pour STM32, j'ai pris le STLINKV3 PWR que j'ai un peu utilisé. Avant j'avais du stlink(c) aliexpress qui deconne et une STM32F0DISCOVERY comme programmateur. Sauf que ce modèle n'a pas assez de mémoire pour l'USART. Cela fait que pour tester d'autres uC STM32, cela nécessitait d'un côté le discovery comme programmateur et de l'autre un USB<-> USART.
L'avantage du STLINKV3 PWR c'est également d'avoir un suivi de conso tout en un (au ~prix du NRF-PPK2) sur une plage de mesure équivalente (A few nA to 500 mA current pour le stlink) contre (Accurate measurement down to approximately 200 nA pour le NRF-PPK2).
Niveau logiciel, c'est du ST, donc lourd (fait en java ?), mais fonctionnel. Principale inconvenient, le format 1.25" via un bus qui oblige à voir un PCB de transfert.
Il y a également un système de trigger, qui n'existe pas sur le PPK2, plutôt pratique pour ne pas avoir à chercher où se trouve la séquence à debugger. Du ON/OFF du circuit et des ports I2C & co en rab.

 

Bref, malgré le prix, je recommande ;) (et je pense revendre le PPK2)

 

---------------

 

Question annexe, mais je crois qu'il n'y a pas foule en STM. Si l'arrêt des clocks GPIO permet d'économiser de la batterie, dans le cas du mode OUTPUT est-ce que cela n'a pas un interêt de modifier la clock "on the fly" :
- enableclock(GPIOA)
- modification de l'état du port
- disableclock(GPIOA)

 

En macro de digitalWrite() (si on prend la lib arduino)

 

Pour donner une idée, actuellement à 4Mhz, cela consomme environ 400uA (sans utilisation des ports) en modifiant quelques fonctions arduino par des fonctions "low drivers". Delay() augmente la conso de 200uA par rapport à la version low drivers par exemple. Donc je me dis qu'il y a moyen de gratter encore un peu sans pour autant ralentir le program en automatisant la gestion on the fly de la modification des ports en mode output.
En plus on peut modifier toutes les fréquences à la volée. Donc par exemple, accélérer la communication avec un capteur allumé pour diminuer son temps allumé.

 

Globalement, c'est très long, mais c'est ultra fun :D

 

Message cité 1 fois
Message édité par froggycorp le 01-04-2025 à 15:10:27
n°465625
rat de com​bat
attention rongeur méchant!
Posté le 01-04-2025 à 15:37:02  profilanswer
 

froggycorp a écrit :

Je vois qu'il n'y a plus grand monde ;)

Désolé, j'ai (toujours pas :( ) eu l'occasion de toucher aux STM32 et autres ARM, du coup je peux rien dire sur ton histoire. Je suis juste étonné que tu aies besoin de t'embêter avec ce genre de choses si tu utilises Arduino, mais j'imagine que soit y'a pas de lib' toute faite ou alors tu cherches vraiment à minimiser la conso électrique?


---------------
Ne laissez pas mourir vos sujets en cours de route!
n°465628
froggycorp
Posté le 01-04-2025 à 15:55:43  profilanswer
 

Il y a compatiblité entre les deux, sauf que c'est pas la même taille.
Me souvient plus comment j'ai fait mon bouzin, mais lib SPI+I2C+Serial = cela rentrait pas dedans > 30Ko.
C'est un peu comme l'arduino, tu as les librairies passe partout et si tu veux optimiser, tu es obligé de faire toi même (ou de recupérer une lib si elle existe) et là pour le coup, les optimisations me semblent assez impressionnantes :)

Message cité 1 fois
Message édité par froggycorp le 01-04-2025 à 15:56:37
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3  4  5  ..  277  278  279  280  281  282

Aller à :
Ajouter une réponse
 

Sujets relatifs
* Réparations de vos appareils électroniques & electromenager * 
Plus de sujets relatifs à : [arduino] Topic Unique blabla @ Arduino


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)