Go Down

Topic: Modules radio ou autres pour portée et autonomie maximale (Read 7965 times) previous topic - next topic

josse34

#30
Jul 11, 2013, 03:52 pm Last Edit: Jul 11, 2013, 04:00 pm by josse34 Reason: 1
Ohlala c'est compliqué, je n'en ai besoin que pour l'émission, mais déjà que je nage un peu avec l'arduino!

Désolé d'insister mais dites moi pour conclure une bonne fois pour toute le choix de matériel, si prendre un arduino nano à la place du MSP430 affecterais énormément l'autonomie.
Je souhaiterais atteindre du 2 an en théorique sur 2 piles AA (2500mah) mais de toutes façon changerais les piles chaque année.
Si gagner 10% d'autonomie alors qu'elle est de plus de 3 ans, alors ça ne m'interresse pas même si c'est l'idéal car je vais devoir passer trop de temps à coder et souder!

Mes calculs pour un ATmega328 sur NANO
Capacity rating of battery (mAh)      2500mAh = 2 piles LR6
Current consumption of device during sleep (mA)      0.005mA (0,00075 du NANO + 0,0042 du NRF)
Current consumption of device during wake (mA)      0.22mA (0.2 du NANO + 115/6000 (1sec toutes les heures) = 0.02 du NRF)
Number of wakeups per hour      2500 If always on, enter 3600 here.
Duration of wake time (ms)      1ms = milli-Seconds. If always on, enter 1000 here.

5ans ou 1 an sans veille!!!
Les caractéristiques de consommation de l'ATmega sont très faibles elles aussi, autant que le MSP430 : - Active Mode: 0.2mA - Power-down Mode: 0.1?A - Power-save Mode: 0.75?A (Including 32kHz RTC) sauf erreur de ma part!
D'autant que prendre un ATmega168 peut faire gratter du temps.

Merci pour votre aide!

B@tto

Oué enfin il faut bien lire la datasheet, forcement sur la première page "il faut se la péter" ;)

Si tu veux réveille le µC de manière "software", il faut le watchdog et page 316 de la datasheet ça donne 4.2µA à 3V. Aparemment avec la RTC ça consomme moins et réveil possible par le timer 2.

Bref dans tout les cas tu perdras pas ton argent, ça servira toujours. Sur ebay une micro pro 3V + adaptateur FDTI + un nrf t'en a pour 15 €  maxi...

Et vaut mieux avoir bien en main l'Arduino avant de passer le cran au-dessus
Blog électronique : http://battomicro.wordpress.com/
Photographie : www.interactive-celebration.fr

josse34

Salut!
Bon j'imagine cela pour faire du 9V :

ca pour le recevoir :

Avec un ARDUINO NANO et un NRF24L01 comme cela :


Dans l'autre cas j'ai cela :

avec ce NRF24 :

Et pour programmer ce bidule : https://www.olimex.com/Products/MSP430/JTAG/MSP430-JTAG-TINY-V2/ qui coûte un bras!

J'avoue ne pas me décider, pourrais je compter sur votre aide [active] pour le MSP430????!!! :smiley-eek-blue:

josse34

Bonjour!
Bon j'ai acheté un launchpad MSP430 que je testerais, en attendant j'ai fait le montage de NRF24L01 sur deux arduino (l'un NANO en client, l'autre MEGA en serveur).
J'utilise ces modules :
http://www.ebay.fr/itm/2-PCS-NRF24L01-2-4GHz-RF-Wireless-Transceiver-Module-for-Arduino-/270975079068?pt=LH_DefaultDomain_0&hash=item3f175f929c#ht_3223wt_1157

Ainsi que la librairie MIRF : http://playground.arduino.cc/InterfacingWithHardware/Nrf24L01

Impossible de les faire fonctionner avec les sketch PING_CLIENT & PING_SERVER , j'ai pourtant respecté le pinage :
* 3.3V
* GND
* MISO -> 12
* MOSI -> 11
* SCK -> 13
* CE -> 8
* CSN -> 7

Mais le serial du serveur indique de façon ponctuelle plusieurs :
Quote
Got packet
Reply sent.

Si je débranche le NRF24, c'est la même chose.

Et le serial du client indique en permanence :
Quote
Timeout on response from server
Finished sending

Si je débranche le NRF24, ça bloque sur "beginning"

J'ai essayé 2 autres librairie (NRF24 et RF24_MASTER), avec des resistances de 10K sur les digitals, plusieurs codes exemples, rien n'y fait!

Une idée??

Merci!

Artouste


...

Une idée??
...

bonjour
c'est le genre de situation pas simple à dem....der à distance :smiley-mr-green:

question :  l'echange des module NRF amène les mêmes symptômes ?

skywodd

Attend une minute ...
Pourquoi TOUT prendre sur ebay, il existe des sites qui font des cartes dans le même ordre de prix.

Exemple : prend une launchpad MSP430 de TexasInstrument, 12€ fdp compris sur le estore de Ti.
Bonus : le debuggeur (le truc qui coute un bras) est inclut, de même qu'un second MSP430 !

Ensuite pour la prog utilise l'ide Energia, tu seras comme avec une carte Arduino classique, le prix et la consommation en moins ;)
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

josse34

Bonsoir!
Bon avec le bon pinage ça vas un peu mieux mais je pense quand même que pendant mes expérimentations, mes NRF24 ont peut être pris un choc, voici d'ailleurs la copie du sketch GettingStarted dont les transmissions réussies ne dépassent pas les 8 premières tentatives que ce soit dans un sens ou dans l'autre :
Quote

RF24/examples/GettingStarted/

ROLE: Pong back

*** PRESS 'T' to begin transmitting to the other node

STATUS = 0x0e RX_DR=0 TX_DS=0 MAX_RT=0 RX_P_NO=7 TX_FULL=0
RX_ADDR_P0-1 = 0xf0f0f0f0d2 0xf0f0f0f0e1
RX_ADDR_P2-5 = 0xc3 0xc4 0xc5 0xc6
TX_ADDR   = 0xf0f0f0f0d2
RX_PW_P0-6 = 0x08 0x08 0x00 0x00 0x00 0x00
EN_AA = 0x3f
EN_RXADDR= 0x03
RF_CH = 0x4c
RF_SETUP = 0x07
CONFIG = 0x0f
DYNPD/FEATURE = 0x00 0x00
Data Rate = 1MBPS
Model = nRF24L01+
CRC Length = 16 bits
PA Power = PA_HIGH
*** CHANGING TO TRANSMIT ROLE -- PRESS 'R' TO SWITCH BACK

Now sending 7236...ok...Got response 7236, round-trip delay: 47

Now sending 8285...ok...Got response 8285, round-trip delay: 68

Now sending 9354...ok...Got response 9354, round-trip delay: 72

Now sending 10428...failed.

Failed, response timed out.

Now sending 11706...ok...Failed, response timed out.

Now sending 12947...ok...Failed, response timed out.

Now sending 14187...ok...Failed, response timed out.

Now sending 15427...failed.

Failed, response timed out.

Now sending 16705...failed.

Failed, response timed out.

Now sending 17983...failed.

Failed, response timed out.

Now sending 19262...failed.

Failed, response timed out.


J'en attends d'autres d'ici peu pour voir.

Skywood, j'ai pris via Ebay mais chez HackSpark pour 10€ le lauchnpad port compris (http://hackspark.fr/fr/ti-msp430-launchpad.html) mais je ne trouve rien dans le estore qui est à 12€, uniquement cela à 9.9USD frais de port compris apparemment : https://estore.ti.com/MSP-EXP430G2-MSP430-LaunchPad-Value-Line-Development-kit-P2031.aspx

B@tto

Oui c'est bien celui à 9.9$ (il était même à 4.5$ il y a quelques mois !)
Blog électronique : http://battomicro.wordpress.com/
Photographie : www.interactive-celebration.fr

skywodd


Oui c'est bien celui à 9.9$ (il était même à 4.5$ il y a quelques mois !)

Héhé moi j'en ai eu quatre en précommande, j'ai sauté dessus direct dés l'annonce de Ti ^_^
Deux pour la v1.4 et deux pour la v1.5 8)

Bon erratum c'est la stellaris qui est à 12€, sinon la launchpad classique c'est 7€ (enfin 9.99$), fdp compris.
Même si le prix de la launchpad a doublé depuis les pré-commande ça reste LA carte de dév tout compris (debug + cpu) la moins chère du marché.
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

B@tto

Blog électronique : http://battomicro.wordpress.com/
Photographie : www.interactive-celebration.fr

alex72

Bonjour!

Je te conseille aussi les NRF24, je les utilise avec succès et sur de bonnes distances. Pour autonomie, je te conseille des arduino pro mini 3v3, tu prends une pince et tu casse la led smd liée à la pin 13 tu gagneras déjà quelques ma. Tu peux aussi utiliser l'horloge interne avec un programmateur externe. Ensuite désactives tout ce qui ne t'es pas utile de manière logicielle(ADC..)...bref la bidouilla après   ]:) Perso j'arrive à une consommation de 32ua en mode veille.

Bonne chance!
Alex.


Bonjour à tous!!

Je suis à la recherche de modules radio ou autres permettant une portée maximale à travers divers obstacles tout en gardant une excellente autonomie.

Mon projet serait de mettre un arduino en intérieur et un module déporté duquel je souhaite compter une impulsion et l'envoyer ce compte toutes les 10min à l'arduino. Ou alors d'envoyer un signal à chaque impulsion.

Avez vous des idées et conseils?

Grand merci et bonne journée!

skywodd

Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

josse34


Bonjour!

Je te conseille aussi les NRF24, je les utilise avec succès et sur de bonnes distances. Pour autonomie, je te conseille des arduino pro mini 3v3, tu prends une pince et tu casse la led smd liée à la pin 13 tu gagneras déjà quelques ma. Tu peux aussi utiliser l'horloge interne avec un programmateur externe. Ensuite désactives tout ce qui ne t'es pas utile de manière logicielle(ADC..)...bref la bidouilla après   ]:) Perso j'arrive à une consommation de 32ua en mode veille.

Bonne chance!
Alex.


Salut!
J'avais la même idée que toi de casser la led, avec 32µA, cela fait une autonomie de prés de 5ans! http://oregonembedded.com/batterycalc.htm Pas mal du tout!

Je vais essayer, en attendant je viens de recevoir mon MSP430 Launchpad, c'est bien conçu et Energia est magnifique! Un véritable clone de l'arduino, c'est agréable!!!
J'ai essayé de suivre ce tuto pour l'utilisation avec NRF24L01 : http://battomicro.wordpress.com/2013/03/27/tutorial-le-nrf24l01-larduino-et-le-msp-430/ ainsi que la librairie : https://github.com/spirilis/msprf24 :
Code: [Select]
#include <msp430.h>
#include "msprf24.h"
#include "nrf_userconfig.h"

char addrTX[]={'t','e','s','t','2'};

char buf[]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}; // trame exemple

int main(void) {

WDTCTL = WDTPW + WDTHOLD;
BCSCTL2 = SELM_0 + DIVM_0 + DIVS_0;

if (CALBC1_1MHZ != 0xFF) {
DCOCTL = 0x00;
BCSCTL1 = CALBC1_1MHZ; /* Set DCO to 1MHz */
DCOCTL = CALDCO_1MHZ;
}

BCSCTL1 |= XT2OFF + DIVA_3;
BCSCTL3 = XT2S_0 + LFXT1S_0 + XCAP_0;
TA0CCTL0 = CM_0 + CCIS_0 + OUTMOD_0 + CCIE; // configuration du timer à 1 s
TA0CCR0 = 4095;
TA0CTL = TASSEL_1 + ID_0 + MC_1;

UCB0CTL1 |= UCSWRST; // configuration du SPI
UCB0CTL0 = UCMSB + UCMST + UCMODE_0 + UCSYNC;
UCB0CTL1 = UCSSEL_2 + UCSWRST;
UCB0BR0 = 64;
UCB0BR1 = 6;
UCB0CTL1 = ~UCSWRST;

P1DIR|=BIT0;

rf_crc=RF24_EN_CRC|RF24_CRCO; // CRC active, 16-bit
rf_addr_width=5; // On utilise une adresse de 5 bytes
rf_speed_power=RF24_SPEED_2MBPS|RF24_POWER_0DBM; // vitesse 1MBPS et puissance max
rf_channel=1;

msprf24_init();

msprf24_set_pipe_packetsize(0,16); // payload de 16 byte sur le pipe 0
msprf24_open_pipe(0,1); // ouverture du pipe avec Auto-Acknowledgement

w_tx_addr(addrTX); // configuration adresse émission
w_rx_addr(0,addrTX); // configuration adresse réception idem à celle de transmission
                      // pour permettre la réception de l'ACK

msprf24_standby(); // module en veille (pas endormi)

while(1){

if(msprf24_is_alive()) { // fait clignoter la LED rouge sur launchpad si
    P1OUT^=BIT0; // le nrf est bien connecté
}else{
    P1OUT&=!BIT0;
}

LPM3; // on endort

w_tx_payload(16,buf); // on charge le FIFO avec le tableau buf
msprf24_activate_tx(); // émission
msprf24_get_irq_reason(); // récupère les alertes du NRF
while(!(rf_irq && RF24_IRQ_TX)) msprf24_get_irq_reason(); // tant que la transmission n'est pas finie, on boucle
msprf24_irq_clear(RF24_IRQ_TX); // on efface les flags d'alerte

}

}

#pragma vector=TIMER0_A0_VECTOR
__interrupt void TIMER0_A0_ISR_H


Le fichier "nrf_userconfig.h" contient :
Code: [Select]
/* nrf_userconfig.h
* User configuration of nRF24L01+ connectivity parameters, e.g.
* IRQ, CSN, CE pin assignments, Serial SPI driver type
*
*
* Copyright (c) 2012, Eric Brundick <spirilis@linux.com>
*
* Permission to use, copy, modify, and/or distribute this software for any purpose
* with or without fee is hereby granted, provided that the above copyright notice
* and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
* REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT,
* OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
* ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/

#ifndef _NRF_USERCONFIG_H
#define _NRF_USERCONFIG_H

/* CPU clock cycles for the specified amounts of time--accurate minimum delays
* required for reliable operation of the nRF24L01+'s state machine.
*/
/* Settings for 1MHz MCLK.
#define DELAY_CYCLES_5MS       5000
#define DELAY_CYCLES_130US     130
#define DELAY_CYCLES_15US      15
*/

/* Settings for 8MHz MCLK.
#define DELAY_CYCLES_5MS       40000
#define DELAY_CYCLES_130US     1040
#define DELAY_CYCLES_15US      120
*/

/* Settings for 16MHz MCLK */
#define DELAY_CYCLES_5MS       80000
#define DELAY_CYCLES_130US     2080
#define DELAY_CYCLES_15US      240

/* Settings for 24MHz MCLK.
#define DELAY_CYCLES_5MS       120000
#define DELAY_CYCLES_130US     3120
#define DELAY_CYCLES_15US      360
*/

/* SPI port--Select which USCI port we're using.
* Applies only to USCI devices.  USI users can keep these
* commented out.
*/
//#define RF24_SPI_DRIVER_USCI_A 1
#define RF24_SPI_DRIVER_USCI_B 1

/* Define whether this library should use LPM0+IRQs during SPI I/O and whether this library should provide the ISR. */
#define RF24_SPI_DRIVER_USCI_USE_IRQ 1
#define RF24_SPI_DRIVER_USCI_PROVIDE_ISR 1


/* Operational pins -- IRQ, CE, CSN (SPI chip-select)
*/

/* IRQ */
#define nrfIRQport 2
#define nrfIRQpin BIT2

/* CSN SPI chip-select */
#define nrfCSNport 2
#define nrfCSNportout P2OUT
#define nrfCSNpin BIT1

/* CE Chip-Enable (used to put RF transceiver on-air for RX or TX) */
#define nrfCEport 2
#define nrfCEportout P2OUT
#define nrfCEpin BIT0

#endif


Dans le tuto il indique :
Quote
Modification du nrf_userconfig.h : en haut il y des constantes suivant la fréquence de fonctionnement, il suffit de décommenter la partie qui vous correspond et de commenter les autres et en bas la partie hardware pour définir où sont brancher les pins CE, CSN et IRQ si vous l'utilisez

Je ne sais pas à quelle pin physique correspond les BIT0, BIT1 et BIT2 pour regler en fonction du pinage que j'utilise :

P1.5: SCK
P1.6: MISO
P1.7: MOSi
P2.0: CE
P2.1: CSN
P2.2: IRQ

Je recontre une erreur de compilation :
Quote
sketch_jul18a.cpp.o: In function `main':
C:\Users\acer\AppData\Local\Temp\build4513026607041527577.tmp/sketch_jul18a.cpp:40: undefined reference to `msprf24_init()'
C:\Users\acer\AppData\Local\Temp\build4513026607041527577.tmp/sketch_jul18a.cpp:42: undefined reference to `msprf24_set_pipe_packetsize(unsigned char, unsigned char)'
C:\Users\acer\AppData\Local\Temp\build4513026607041527577.tmp/sketch_jul18a.cpp:43: undefined reference to `msprf24_open_pipe(unsigned char, unsigned char)'
C:\Users\acer\AppData\Local\Temp\build4513026607041527577.tmp/sketch_jul18a.cpp:45: undefined reference to `w_tx_addr(char*)'
C:\Users\acer\AppData\Local\Temp\build4513026607041527577.tmp/sketch_jul18a.cpp:46: undefined reference to `w_rx_addr(unsigned char, char*)'
C:\Users\acer\AppData\Local\Temp\build4513026607041527577.tmp/sketch_jul18a.cpp:49: undefined reference to `msprf24_standby()'
C:\Users\acer\AppData\Local\Temp\build4513026607041527577.tmp/sketch_jul18a.cpp:53: undefined reference to `msprf24_is_alive()'
C:\Users\acer\AppData\Local\Temp\build4513026607041527577.tmp/sketch_jul18a.cpp:61: undefined reference to `w_tx_payload(unsigned char, char*)'
C:\Users\acer\AppData\Local\Temp\build4513026607041527577.tmp/sketch_jul18a.cpp:62: undefined reference to `msprf24_activate_tx()'
C:\Users\acer\AppData\Local\Temp\build4513026607041527577.tmp/sketch_jul18a.cpp:63: undefined reference to `msprf24_get_irq_reason()'
C:\Users\acer\AppData\Local\Temp\build4513026607041527577.tmp/sketch_jul18a.cpp:64: undefined reference to `msprf24_get_irq_reason()'
C:\Users\acer\AppData\Local\Temp\build4513026607041527577.tmp/sketch_jul18a.cpp:65: undefined reference to `msprf24_irq_clear(unsigned char)'
collect2: ld returned 1 exit status


Merci et bonne journée!!!

B@tto

#43
Jul 18, 2013, 11:37 am Last Edit: Jul 18, 2013, 11:40 am by B@tto Reason: 1
C'est un tuto pour CCS, pas pour Energia ;)

Il faudrait faire quelques modifications pour que la lib soit correctement intégrée.

Pour Energia il y a une toute prête : http://unboxnbeyond.wordpress.com/2013/05/22/connecting-msp430-and-stellaris-launchpad-through-nrf24l01/
Blog électronique : http://battomicro.wordpress.com/
Photographie : www.interactive-celebration.fr

alex72

Hey!

Quote
Salut!
J'avais la même idée que toi de casser la led, avec 32µA, cela fait une autonomie de prés de 5ans! http://oregonembedded.com/batterycalc.htm Pas mal du tout!


Oui c'est impressionnant, après il faut voir aussi ta consommation en mode normale et le temps d'utilisation dans ce mode...mais globalement on peut économiser beaucoup!  :)


Quote
Je vais essayer, en attendant je viens de recevoir mon MSP430 Launchpad, c'est bien conçu et Energia est magnifique! Un véritable clone de l'arduino, c'est agréable!!!


Je ne connais pas 'Energia' mais du coup tu éveilles ma curiosité et pour cela je t'en remercies!  ;)

Quote
J'ai essayé de suivre ce tuto pour l'utilisation avec NRF24L01 : http://battomicro.wordpress.com/2013/03/27/tutorial-le-nrf24l01-larduino-et-le-msp-430/ ainsi que la librairie : https://github.com/spirilis/msprf24 :


Je ne connaissais pas cette librairie, du coup je ne pourrais pas t'aider sur ton problème de connections. Par contre, je ne saurais mieux te conseiller que d'utiliser la librairie disponible sur ce blog:

http://maniacbug.wordpress.com/2011/11/02/getting-started-rf24/

En fouinant, tu y trouveras une tonne de choses intéressantes sur notamment la réduction de consommation, la possibilité de créer une véritable réseau de nœuds NRF24L01 ...bref, je l'utilise et en suis entièrement satisfait. A toi de voir, je ne connais pas tes contraintes...

A bientôt!
Alex.

Go Up