Outils pour utilisateurs

Outils du site


issue136:great_cow_basic

Différences

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

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
issue136:great_cow_basic [2018/09/21 15:02] d52frissue136:great_cow_basic [2018/09/23 11:54] (Version actuelle) andre_domenech
Ligne 1: Ligne 1:
-**In FCM#129, I showed you how to use the analog-to-digital conversion (ADC) with a potentiometer, and how to control a LED with pulse width modulation (PWM) with the resulting value of the ADC. In this article, I will show how to use the ADC again, but this time we use a light dependent resistor (LDR) to gather information about the ambient brightness and how to communicate at distance.**+ **In FCM#129, I showed you how to use the analog-to-digital conversion (ADC) with a potentiometer, and how to control a LED with pulse width modulation (PWM) with the resulting value of the ADC. In this article, I will show how to use the ADC again, but this time we use a light dependent resistor (LDR) to gather information about the ambient brightness and how to communicate at distance.**
  
 Dans le FCM n° 129, j’ai montré comment utiliser la conversion analogique-numérique (ADC - Analog-Digital Conversion) avec un potentiomètre, et comment contrôler une LED par modulation de largeur d’impulsions (PWM - Pulse Width Modulation) avec la valeur résultante de l’ADC. Dans cet article, je montrerai à nouveau comment utiliser l’ADC, mais, cette fois, nous utiliserons une photo-résistance (LDR - Light Dependent Resistor) pour obtenir des informations sur la quantité de lumière ambiante et comment les communiquer à distance. Dans le FCM n° 129, j’ai montré comment utiliser la conversion analogique-numérique (ADC - Analog-Digital Conversion) avec un potentiomètre, et comment contrôler une LED par modulation de largeur d’impulsions (PWM - Pulse Width Modulation) avec la valeur résultante de l’ADC. Dans cet article, je montrerai à nouveau comment utiliser l’ADC, mais, cette fois, nous utiliserons une photo-résistance (LDR - Light Dependent Resistor) pour obtenir des informations sur la quantité de lumière ambiante et comment les communiquer à distance.
Ligne 9: Ligne 9:
 Photo-résistance Photo-résistance
  
-Une LDR ou cellule photo-électrique, est une résistance variable contrôlée par la lumière. La résistance décroît quand l’intensité de la lumière augmente. Par conséquent, vous pouvez l’utiliser pour développer des applications dépendantes de la lumière pour réagir aux changements de son intensité ou aux différences entre des conditions lumineuses et sombres. Dans le noir, la LDR a une résistance de plusieurs mégohms ; quand la LDR est dans la lumière, la résistance tombe à quelques centaines d’ohms. Les LDR sont disponibles en différentes tailles (comme les LED, en 3 ou 5 mm) et avec différentes résistances électriques. Lisez systématiquement la notice, qui contient les caractéristiques des LDR particulières.+Une LDR ou cellule photo-électrique, est une résistance variable contrôlée par la lumière. La résistance décroît quand l’intensité de la lumière augmente. Par conséquent, vous pouvez l’utiliser pour développer des applications dépendantes de la lumière pour réagir aux changements de son intensité ou aux différences entre des conditions lumineuses et sombres. Dans le noir, la LDR a une résistance de plusieurs mégaohms ; quand la LDR est dans la lumière, la résistance tombe à quelques centaines d’ohms. Les LDR sont disponibles en différentes tailles (comme les LED, en 3 ou 5 mm) et avec différentes résistances électriques. Lisez systématiquement la notice, qui contient les caractéristiques des LDR particulières.
  
 **LDR and the Analog Digital Conversion  **LDR and the Analog Digital Conversion 
Ligne 17: Ligne 17:
 Photo-résistance et conversion analogique-numérique Photo-résistance et conversion analogique-numérique
  
-Pour utiliser l’ADC, nous avons besoin de savoir comment connecter la LDR au microcontrôleur - ce qui semble simple - comme tout autre résistance. Mais ici, se présente la partie compliquée : vous avez besoin de la connecter à travers un diviseur de tension pour la connecter et obtenir des lectures utiles. Par conséquent, nous avons besoin d’un peu de théorie avant de pouvoir utiliser la LDR correctement. En utilisant la loi d’Ohm, le courant qui circule dans un conducteur entre deux points est directement proportionnel à la tension entre ces deux points. Pour calculer les valeurs du diviseur de tension, vous pouvez utiliser cette équation. Si vous utilisez des résistances avec une valeur de résistance fixe de 100 ohms, avec une tension Vin = 5 V, R1 valant 100 ohms et R2 100 ohms, nous aurons une sortie Vout fixe de 2,5 Volts. Ensuite, nous faisons les hypothèses que R1 est notre LDR, qu’il fait sombre et qu’ainsi la LDR a atteint sa résistance la plus élevée, 1 Mohms - alors Vout sera de 0,45 V. D’un autre côté, si nous décidons que R2 est la LDR et que R1 reste à 100 ohms, la tension de sortie sera de 4,55V. Comme vous pouvez le voir, le fait de savoir de quel côté se situe la LDR est important pour interpréter les valeurs mesurées. Aussi, vous devez décider d’abord où se situe la LDR sur votre circuit. Après s’être intéressé au placement de la LDR, l’ADC doit être connecté entre R1 et R2. Le schéma du circuit ressemble un peu à un L tordu avec une liaison sur le côté droit. Dans le diagramme, Vout sera la connexion au canal ADC du microcontrôleur.+Pour utiliser l’ADC, nous avons besoin de savoir comment connecter la LDR au microcontrôleur - ce qui semble simple - comme tout autre résistance. Mais voici la partie compliquée : vous avez besoin de la connecter à travers un diviseur de tension pour obtenir des lectures utiles. Par conséquent, nous avons besoin d’un peu de théorie avant de pouvoir utiliser la LDR correctement. En utilisant la loi d’Ohm, le courant qui circule dans un conducteur entre deux points est directement proportionnel à la tension entre ces deux points. Pour calculer les valeurs du diviseur de tension, vous pouvez utiliser cette équation. Si vous utilisez des résistances avec une valeur de résistance fixe de 100 ohms, avec une tension Vin = 5 V, R1 valant 100 ohms et R2 100 ohms, nous aurons une sortie Vout fixe de 2,5 Volts. Ensuite, nous faisons les hypothèses que R1 est notre LDR, qu’il fait sombre et qu’ainsi la LDR a atteint sa résistance la plus élevée, 1 Mohm - alors Vout sera de 0,45 V. D’un autre côté, si nous décidons que R2 est la LDR et que R1 reste à 100 ohms, la tension de sortie sera de 4,55 V. Comme vous pouvez le voir, le fait de savoir de quel côté se situe la LDR est important pour interpréter les valeurs mesurées. Aussi, vous devez décider d’abord où se situe la LDR sur votre circuit. Après s’être intéressé au placement de la LDR, l’ADC doit être connecté entre R1 et R2. Le schéma du circuit ressemble un peu à un L tordu avec une liaison sur le côté droit. Dans le diagramme, Vout sera la connexion au canal ADC du microcontrôleur.
  
 **Over the air data transmission **Over the air data transmission
Ligne 29: Ligne 29:
 Pour les premiers essais, je mesure des modifications de la valeur de la LDR en connectant le microcontrôleur et la LDR avec un adaptateur série pour voir comment les valeurs changent quand la quantité de lumière varie. Pour les premiers essais, je mesure des modifications de la valeur de la LDR en connectant le microcontrôleur et la LDR avec un adaptateur série pour voir comment les valeurs changent quand la quantité de lumière varie.
  
-Ensuite, comme développement ultérieur, il est intéressant de vérifier le niveau de la lumière hors de la maison, pour avoir une idée s’il fait sombre ou non. Pour récupérer les données depuis l’extérieur, un manière de transmettre sans fil les valeurs de la LDR serait superbe. Dans le monde d’Arduino, plusieurs technologies existent pour le faire : ZigBee, 2.4 GHz, Bluetooth, WLAN, LoRa pour en nommer quelques unes. Mais, par simplicité, nous utilisons la méthode la moins chère de transfert de données sans fil : un émetteur/récepteur 433 MHz (pour ceux qui ne vivent pas dans l’UE, ce sera 415 MHz). Ils sont vraiment bon marché, une paire peut être acquise pour quelques euros. Sur la plateforme de e-commerce de votre choix, par ex., eBay, vous pouvez les trouver facilement, avec « Arduino 433MHz », « Arduino 415 MHz » ; le mot-clé « superregenerative » peut aussi aider. Le récepteur est appelé « HX-RM-5V » et l’émetteur seul s’appelle « FS1000A ». Assurez-vous de ne prendre que ceux qui ne comportent que les seuls circuits d’émission/réception. Choisissez-les avec ou sans antenne ; si n’avez pas l’antenne incluse, vous pouvez choisir un fil fin. Ce réglage peut s’avérer peu fiable car le transfert des données est en concurrence avec les autres dispositifs comme les stations météo, les prises avec contrôle à distance et équivalents. Et lisez l’article jusqu’à la conclusion sur vous êtes sur le point d’en acheter des neufs.+Ensuite, comme développement ultérieur, il est intéressant de vérifier le niveau de la lumière hors de la maison, pour avoir une idée s’il fait sombre ou non. Pour récupérer les données depuis l’extérieur, une manière de transmettre sans fil les valeurs de la LDR serait superbe. Dans le monde d’Arduino, plusieurs technologies existent pour le faire : ZigBee, 2.4 GHz, Bluetooth, WLAN, LoRa pour en nommer quelques-unes. Mais, par simplicité, nous utilisons la méthode la moins chère de transfert de données sans fil : un émetteur/récepteur de 433 MHz (pour ceux qui ne vivent pas dans l’UE, ce sera 315 MHz). Ils sont vraiment bon marché, une paire peut être acquise pour quelques euros. Sur la plateforme e-commerce de votre choix, par ex., eBay, vous pouvez les trouver facilement, avec « Arduino 433MHz », « Arduino 315 MHz » ; le mot-clé « superregenerative » peut aussi aider. Le récepteur est appelé « HX-RM-5V » et l’émetteur seul s’appelle « FS1000A ». Assurez-vous de ne prendre que ceux qui ne comportent que les seuls circuits d’émission/réception. Choisissez-les avec ou sans antenne ; si n’avez pas l’antenne incluse, vous pouvez choisir un fil fin. Ce réglage peut s’avérer peu fiable car le transfert des données est en concurrence avec les autres dispositifs comme les stations météo, les prises avec contrôle à distance et équivalents. Et lisez l’article jusqu’à la conclusion si vous êtes sur le point d’en acheter des neufs.
  
 **For more important data, it is recommended to use other transfer methods. But, the simplicity with this hardware was intriguing: Just 3 Pins for a wireless data transfer, Vcc, GND and a DATA pin on both the transmitter and the receiver. Another point is the power consumption, transmitter and receiver draw only some mA of power which should give some neat wireless sensor nodes. With respect to the Arduino, there are some libraries to receive and send data over those modules. Multi-purpose: virtualwire, and its successor radiohead, or, for switching power plugs: rc-switch. Great Cow BASIC does not include a demonstration for this type of solution. Most of the demonstration code focuses on modem-like transmitter/receiver and the nrf24L01 (2.4 GHz) module support. **For more important data, it is recommended to use other transfer methods. But, the simplicity with this hardware was intriguing: Just 3 Pins for a wireless data transfer, Vcc, GND and a DATA pin on both the transmitter and the receiver. Another point is the power consumption, transmitter and receiver draw only some mA of power which should give some neat wireless sensor nodes. With respect to the Arduino, there are some libraries to receive and send data over those modules. Multi-purpose: virtualwire, and its successor radiohead, or, for switching power plugs: rc-switch. Great Cow BASIC does not include a demonstration for this type of solution. Most of the demonstration code focuses on modem-like transmitter/receiver and the nrf24L01 (2.4 GHz) module support.
Ligne 35: Ligne 35:
 So, how to create a simple solution to this problem? I asked myself why not use a plain serial connection?.. this might do the job with ease. After some research, it seems that this idea has been thought through and tested before, so I found proof in some Instructables projects (see links below for more information), and that my idea was feasible.** So, how to create a simple solution to this problem? I asked myself why not use a plain serial connection?.. this might do the job with ease. After some research, it seems that this idea has been thought through and tested before, so I found proof in some Instructables projects (see links below for more information), and that my idea was feasible.**
  
-Pour des données plus importantes, il est recommandé d’utiliser d’autres méthodes de transfert. Maisla simplicité avec ce matériel est étonnante : juste 3 picots pour un transfert de données sans fil, Vcc (alim+), GND (masse) et DATA (données), sur l’émetteur comme sur le récepteur. Un autre point est la consommation électrique : l’émetteur et le récepteur n’absorbent que quelques mA d’alimentation ce qui devrait donner des capteurs ponctuels sans fil soignés. Grâce à Arduino, des bibliothèques existent déjà pour l’émission et la réception de données avec ces modules. Multi-usages : virtuawire, et son successeur radiohead, ou, pour commuter des prises d’alimentation : rcswitch. Great Cow BASIC ne dispose pas de démonstration de ce type de solution. La plupart du code de démonstration se focalise sur les émetteurs/récepteurs façon modems et le support du module nrf24L01 (2,4 GHz).+Pour des données plus importantes, il est recommandé d’utiliser d’autres méthodes de transfert. Mais la simplicité avec ce matériel est étonnante : juste 3 picots pour un transfert de données sans fil, Vcc (alim+), GND (masse) et DATA (données), sur l’émetteur comme sur le récepteur. Un autre point est la consommation électrique : l’émetteur et le récepteur n’absorbent que quelques mA d’alimentation ce qui devrait donner des capteurs ponctuels sans fil soignés. Quant à Arduino, des bibliothèques existent déjà pour l’émission et la réception de données avec ces modules. Multi-usages : virtuawire, et son successeur radiohead, ou, pour commuter des prises d’alimentation : rc-switch. Great Cow BASIC ne dispose pas de démonstration de ce type de solution. La plupart du code de démonstration se focalise sur les émetteurs/récepteurs façon modems et le support du module nrf24L01 (2,4 GHz).
  
-Aussi, comment créer un solution simple à ce problème ? Je me suis demandé pourquoi ne pas utiliser une simple liaison série ? Ceci ferait le boulot facilement. Après quelques recherches, il semble que cette idée est déjà sortie et a été étudiée avant, comme j’en ai trouvé la preuve dans certains projets Instructables (voir les liens ci-dessous pour plus d’informations) et cette idée était faisable.+Aussi, comment créer un solution simple à ce problème ? Je me suis demandé pourquoi ne pas utiliser une simple liaison série ? Ceci pourrait sans doute faire le boulot facilement. Après quelques recherches, il semble que cette idée est déjà sortie et a été étudiée avant, comme j’en ai trouvé la preuve dans certains projets Instructables (voir les liens ci-dessous pour plus d’informations) et cette idée était faisable.
  
 **Transmission software **Transmission software
Ligne 47: Ligne 47:
 Logiciel de transmission Logiciel de transmission
  
-L’utilisation d’une simple connexion série a un autre avantage. Vous n’avez pas besoin de faire de grands changements dans le paramétrage réalisé à partir des articles précédents publiés dans cette série. Le même code de programme pour l’envoi de données au convertisseur série USB peut être utilisé ; vous n’aurez qu’à intervertir les connexions entre le convertisseur série USB et l’émetteur. Le code suivant peut vous sembler familier, car les lectures d’un potentiomètre et d’une LDR avec l’ADC sont similaires ; la seule modification du code fût de renommer la variable POTI en LDR (le code est sur la page suivante, en haut à droite).+L’utilisation d’une simple connexion série a un autre avantage. Vous n’avez pas besoin de faire de grands changements dans le paramétrage réalisé à partir des articles précédents publiés dans cette série. Le même code de programme pour l’envoi de données au convertisseur série USB peut être utilisé ; vous n’aurez qu’à intervertir les connexions entre le convertisseur série USB et l’émetteur. Le code suivant peut vous sembler familier, car les lectures d’un potentiomètre et d’une LDR avec l’ADC sont similaires ; la seule modification du code fut de renommer la variable POTI en LDR (le code est sur la page suivante, en haut à droite).
  
-Mettez un adaptateur série USB avec la sortie RX sur la borne TX de l’ATtiny13a et lancez votre logiciel de terminal pour voir ce que se passe. Chez moi, pendant l’écriture et le test du logiciel, la lumière ambiante donnait des valeurs entre 66 et 71 ; en tenant le projecteur de l’appareil-photo de mon smartphone sur la LDR, les valeurs montaient jusqu’à 216, au maximum.+Mettez un adaptateur série USB avec la sortie RX sur la borne TX de l’ATtiny13a et lancez votre logiciel de terminal pour voir ce que se passe. Chez moi, pendant l’écriture et le test du logiciel, la lumière ambiante donnait des valeurs entre 66 et 71 ; en tenant le projecteur de l’appareil photo de mon smartphone sur la LDR, les valeurs montaient jusqu’à 216, au maximum.
  
 **Trial and Error **Trial and Error
Ligne 57: Ligne 57:
 The next test configuration was to set the Sender device 1m from the Receiver device. As it turned out, the characteristics of the receiver could not handle the constant data stream the software sent to it every second. The surrounding noise pollutes the data stream. To improve the reception reliability, the software has to be written with the characteristics of the hardware in mind, the simple 433 MHz set used is best used with short bursts of data and not a constant stream of data. Also noteworthy in this article: the Sender device is always on, even when no data is being sent, therefore the transmitter device always has power applied. In many other setups, I found that the transmitter device is switched off after transmit. Either by setting the microcontroller to a powersave status, or by switching the transmitter device over a transistor. So, it is getting a bit tricky to use this technique for a direct microcontroller to serial line connection. ** The next test configuration was to set the Sender device 1m from the Receiver device. As it turned out, the characteristics of the receiver could not handle the constant data stream the software sent to it every second. The surrounding noise pollutes the data stream. To improve the reception reliability, the software has to be written with the characteristics of the hardware in mind, the simple 433 MHz set used is best used with short bursts of data and not a constant stream of data. Also noteworthy in this article: the Sender device is always on, even when no data is being sent, therefore the transmitter device always has power applied. In many other setups, I found that the transmitter device is switched off after transmit. Either by setting the microcontroller to a powersave status, or by switching the transmitter device over a transistor. So, it is getting a bit tricky to use this technique for a direct microcontroller to serial line connection. **
  
-Test et erreur+Tâtonnements
  
-Après remplacement de la liaison filaire par une transmission sans fil, les résultats ont paru très étranges. C’était le résultat d’un installation rapide ; cependant, après soudure des antennes (env. 17 cm) de l’émetteur et du récepteur, les résultats de transmission se sont améliorés. Avec une distance de 40 cm pour la « transmission sans fil », la qualité était acceptable. La plupart des articles de référence que j’ai trouvés suggèrent d’envoyer les données plusieurs fois plutôt qu’une. Et, au premier test, montré ci-dessous, ceci fût prouvé par un test empirique (montré en bas à droite).+Après remplacement de la liaison filaire par une transmission sans fil, les résultats ont paru très étranges. C’était le résultat d’une installation rapide ; cependant, après soudure des antennes (env. 17 cm) de l’émetteur et du récepteur, les résultats de transmission se sont améliorés. Avec une distance de 40 cm pour la « transmission sans fil », la qualité était acceptable. La plupart des articles de référence que j’ai trouvés suggèrent d’envoyer les données plusieurs fois plutôt qu’une. Et, au premier test, montré ci-dessous, ceci fut prouvé par un test empirique (montré en bas à droite).
  
-La configuration du test suivant était d’installer le dispositif Émetteur à 1 m de distance du dispositif RécepteurComme cela a été montré, les caractéristiques du récepteur ne permettaient pas de gérer le flux constant de données que le logiciel lui envoyait toutes les secondes. Le bruit ambiant pollue le flux des données. Pour améliorer la fiabilité de la réception, le logiciel doit être écrit en gardant en tête les caractéristiques du matériel ; cet équipement simple à 433 MHz est mieux utilisé avec de courtes salves et non pas un flux constant de données. Un point intéressant dans cet article : l ‘Émetteur est toujours allumé, même si aucune donnée n’est envoyée ; par conséquent, le dispositif de transmission est toujours sous tension. Dans beaucoup d’autres paramétrages, j’ai trouvé que le dispositif transmetteur est éteint après transmission. Soit en plaçant le microcontrôleur dans un état d’économie d’énergie, soit en coupant l’alimentation du dispositif de transmission avec un transistor. Aussi, ça devient un peu compliqué d’utiliser cette technique avec un microcontrôleur directement utilisé en connexion de ligne série. +La configuration du test suivant était d’installer le dispositif émetteur à 1 m de distance du dispositif récepteurEn fait, les caractéristiques du récepteur ne permettaient pas de gérer le flux constant de données que le logiciel lui envoyait toutes les secondes. Le bruit ambiant pollue le flux des données. Pour améliorer la fiabilité de la réception, le logiciel doit être écrit en gardant en tête les caractéristiques du matériel ; cet équipement simple à 433 MHz est mieux utilisé avec de courtes salveset non pas un flux constantde données. Un point intéressant dans cet article : l'Émetteur est toujours allumé, même si aucune donnée n’est envoyée ; par conséquent, le dispositif de transmission est toujours sous tension. Dans beaucoup d’autres configurations, j’ai trouvé que le dispositif transmetteur est éteint après transmission. Soit en plaçant le microcontrôleur dans un état d’économie d’énergie, soit en coupant l’alimentation du dispositif de transmission avec un transistor. Aussi, il devient un peu compliqué d’utiliser cette technique avec un microcontrôleur directement utilisé en connexion de ligne série. 
  
 **Experimentation with Byte transmitted as preambles, as suggested in the research articles, were not of sufficient quality for the readability of the console output. The results were even the same if given a value as 0xFA or given a simple ‘dot’ as preamble. So, I added dots as pre- and postamble. The results on the console for the short range of 40cm to 1m looked promising and the data received was read as in the snippet below. **Experimentation with Byte transmitted as preambles, as suggested in the research articles, were not of sufficient quality for the readability of the console output. The results were even the same if given a value as 0xFA or given a simple ‘dot’ as preamble. So, I added dots as pre- and postamble. The results on the console for the short range of 40cm to 1m looked promising and the data received was read as in the snippet below.
Ligne 69: Ligne 69:
 So something was faulty in my code which gave poor results. After careful examination with the timings, the times the LDR values are sent and the last Byte value (Ser1Send 0b00000000) it seems that this last Byte value was too much. After deleting this line and recompiling it, the results (bottom right) were much better.** So something was faulty in my code which gave poor results. After careful examination with the timings, the times the LDR values are sent and the last Byte value (Ser1Send 0b00000000) it seems that this last Byte value was too much. After deleting this line and recompiling it, the results (bottom right) were much better.**
  
-Une expérience d’envoi de « Byte » (octet) comme préambule, comme suggéré dans des articles de ma recherche, ne fut pas d’une qualité suffisante pour une bonne lecture de la sortie sur la console. Les résultats étaient les mêmes, que le préambule soit une valeur OxFA ou un simple « point ». Aussi, j’ai ajouté des points en préambule et en conclusion. Le résultats sur la console pour une distance entre 40 cm et 1 m parraissaient prometteuses et les donées reçues étaient lues comme dans l’encart ci-dessous.+Une expérience d’envoi de « Byte » (octet) comme préambule, comme suggéré dans des articles de ma recherche, ne fut pas d’une qualité suffisante pour une bonne lecture de la sortie sur la console. Les résultats étaient les mêmes, que le préambule ait une valeur OxFA ou un simple « point ». Aussi, j’ai ajouté des points en préambule et en conclusion. Les résultats sur la console pour une distance entre 40 cm et 1 m parraissaient prometteurs et les donées reçues étaient lues comme dans l’encart ci-dessous.
  
-Après avoir placé le dispositif Émetteur dans une autre pièce (env. 3 m et un mur entre eux), les résultats semblaient prometteurs pendant les premières secondes, mais après un moment, les données étaient illisibles. Même dans la même pièce (env. 3 m, mais sans mur) les données de la console restaient inutilisables comme montré dans cet autre encart (en haut à droite).+Après avoir placé le dispositif émetteur dans une autre pièce (environ 3 m et un mur de séparation), les résultats semblaient prometteurs pendant les premières secondes, mais après un moment, les données étaient illisibles. Même dans la même pièce (environ 3 m, mais sans mur) les données de la console restaient inutilisables comme montré dans cet autre encart (en haut à droite).
  
-Ainsi, mon code contenait quelque chose de faux qui donnait de mauvais résultats. Après une étude minutieuse des intervalles de temps, les moments où les valeurs de la LDR sont envoyés et la dernière valeur Byte (Ser1Send 0b00000000), il semble que cette dernière valeur de Byte soit de trop. Après suppression de cette ligne et recompilation, les résultats (en bas à droite) étaient bien meilleurs.+Ainsi, mon code contenait quelque chose d'erroné qui donnait de mauvais résultats. Après une étude minutieuse des intervalles de temps, les moments où les valeurs de la LDR sont envoyés et la dernière valeur Byte (Ser1Send 0b00000000), il semble que cette dernière valeur de Byte soit de trop. Après suppression de cette ligne et recompilation, les résultats (en bas à droite) étaient bien meilleurs.
  
 **Breadboard circuitry **Breadboard circuitry
Ligne 81: Ligne 81:
 Circuit de la plaque d’essai Circuit de la plaque d’essai
  
-Pour tester le logiciel, vous devrez connecter le Récepteur directement au convertisseur série USB, connecter le 5V au Vcc, le Rx à la borne DATA (une seule, pas les deux en même temps) et GND à GND. Le dispositif transmetteur et la LDR devront être connectés à l’ATtiny13a comme montré ci-dessous.+Pour tester le logiciel, vous pourriez connecter le récepteur directement au convertisseur série USB, connecter le 5V au Vcc, le Rx à la borne DATA (une seule, pas les deux en même temps) et GND à GND. Le dispositif transmetteur et la LDR devront être connectés à l’ATtiny13a comme montré ci-dessous.
  
 **Conclusion **Conclusion
Ligne 91: Ligne 91:
 Conclusion Conclusion
  
-La solution de logiciel série pour Great Cow BASIC a fait le travail comme prévu. Mais, pour obtenir des résultats fiables avec une transmission sans fil, le travail a été plus long que ce que j’avais prévu. Le test de ce petit Transmetteur à l’extérieur était hors sujet pour cette fois du fait de mon peu de temps disponible. Mais, pour une solution alimentée par piles, j'implémenterais une sorte d’économiseur d’énergie sur le transmetteur parce que l’envoi de données toutes les 8 secondes sans coupure d’alimentation absorberait rapidement l’énergie disponible de la plus puissante pile. Le binaire compilé faisait 772 octets ; il y a ainsi assez d’espace restant pour implémenter peut-être une solution avec un « watchdog » (litt., chien de garde - solution de surveillance d’une durée) et une routine de gestion d’énergie pourrait être ajoutée.+La solution de logiciel série pour Great Cow BASIC a fait le travail comme prévu. Mais, pour obtenir des résultats fiables avec une transmission sans fil, le travail a été plus long que ce que j’avais prévu. Le test de ce petit transmetteur à l’extérieur était hors sujet pour cette fois-ci du fait du peu de temps qui m'était disponible. Mais, pour une solution alimentée par piles, j'implémenterais une sorte d’économiseur d’énergie sur le transmetteur parce que l’envoi de données toutes les 8 secondes sans coupure d’alimentation absorberait rapidement l’énergie disponible de la plus puissante pile. Le binaire compilé faisait 772 octets ; il y a ainsi assez d’espace restant pour implémenter peut-être une solution avec un « watchdog » (litt., chien de garde - solution de surveillance d’une durée) et une routine de gestion d’énergie pourrait être ajoutée.
  
-Côté matériel, à long terme, je changerais probablement le récepteur car il pourrait y avoir de meilleures solutions pour lui. Les autres récepteurs qui ont été notés comme fonctionnant mieux sans être beaucoup plus chers que celui utilisé sont les « RXB6 », « RXB8 », « RXB12 ». Au cas où j’achèterais du nouveau matériel, je testerais peut-être un autre récepteur car il semble que celui utilisé est celui qui a la plus mauvaise réception possible. Le transmetteur fonctionne bien et semble ne pas avoir de concurrent meilleur.+Côté matériel, à long terme, je changerais probablement le récepteurcar il pourrait y avoir de meilleures solutions. Les autres récepteurs qui ont été notés comme fonctionnant mieux sans être beaucoup plus chers que celui utilisé sont les « RXB6 », « RXB8 », « RXB12 ». Au cas où j’achèterais du nouveau matériel, je testerais peut-être un autre récepteurcar il semble que celui utilisé est celui qui a la plus mauvaise réception possible. Le transmetteur fonctionne bien et semble ne pas avoir de concurrent meilleur.
  
 **For more reliable data transfers, it could be a good idea to implement another algorithm and receive the data first through another microcontroller, there are some suggestions in the references and elsewhere on the internet. Maybe change the transmitter and receiver side to a completely different solution would be another valid option. And, I would definitely add some kind of switching for the transmitter to power it off if no data is to be sent - otherwise your power plug cannot be switched - this project interferes with them. **For more reliable data transfers, it could be a good idea to implement another algorithm and receive the data first through another microcontroller, there are some suggestions in the references and elsewhere on the internet. Maybe change the transmitter and receiver side to a completely different solution would be another valid option. And, I would definitely add some kind of switching for the transmitter to power it off if no data is to be sent - otherwise your power plug cannot be switched - this project interferes with them.
Ligne 99: Ligne 99:
 Essentially, it works. The Tiny13a can support LDR and data transmission over the air.** Essentially, it works. The Tiny13a can support LDR and data transmission over the air.**
  
-Pour des transferts de données plus fiables, ce serait une bonne idée d’implémenter un autre algorithme et de recevoir d’abord les données via un autre microcontrôleur ; il y a quelques suggestions dans les références et partout sur Internet. Peut-être qu’un changement des émetteur et récepteur pour une solution complètement différente serait une autre solution valable. Etj’ajouterais pour de bon une sorte de sectionnement sur le transmetteur pour couper l’alimentation quand aucune donnée n’est à envoyer - autrement, votre prise d’alimentation ne peut pas être coupée - ce projet interfère avec eux.+Pour des transferts de données plus fiables, ce serait peut-être une bonne idée d’implémenter un autre algorithme et de recevoir d’abord les données via un autre microcontrôleur ; il y a quelques suggestions dans les références et partout sur Internet. Peut-être qu’un changement des émetteur et récepteur pour une solution complètement différente serait une autre solution valable. Et j’ajouterais sans aucun doute une sorte de sectionnement sur le transmetteur pour couper l’alimentation quand aucune donnée n’est à envoyer - autrement, votre prise d’alimentation ne peut pas être coupée - ce projet interfère avec eux.
  
 En gros, ça marche. Le Tiny13a peut supporter une LDR et une transmission de données sans fil. En gros, ça marche. Le Tiny13a peut supporter une LDR et une transmission de données sans fil.
Ligne 109: Ligne 109:
 Sources Sources
  
-Si vous voulez télécharger les sources plutôt que de les copier/coller, vous pouvez les récupérer avec git ou un client SVN. Regardez à  https://github.com/Anobium/Great-Cow-BASIC-Demonstration-Sources/tree/master/Publication%20Solutions/Full%20Circle pour plus d’information+Si vous voulez télécharger les sources plutôt que de les copier/coller, vous pouvez les récupérer avec git ou un client SVN. Regardez à  https://github.com/Anobium/Great-Cow-BASIC-Demonstration-Sources/tree/master/Publication%20Solutions/Full%20Circle pour plus d’information.
    
 **References **References
issue136/great_cow_basic.1537534948.txt.gz · Dernière modification : 2018/09/21 15:02 de d52fr