275 | | .... la suite arrive :-) |
276 | | |
277 | | {{{#!protected |
278 | | |
279 | | - **sensor** (emetteur) |
280 | | Le programme c- |
281 | | {{{#!c |
282 | | #include <SPI.h> |
283 | | #include "RF24.h" |
284 | | #include "printf.h" |
285 | | |
286 | | RF24 radio(9,10); // radio(CE,CS) |
287 | | |
288 | | byte addresses[][6] = {"0XXXX"}; |
289 | | |
290 | | void setup() { |
291 | | Serial.begin(115200); |
292 | | printf_begin(); |
293 | | radio.begin(); |
294 | | radio.setPALevel(RF24_PA_LOW); |
295 | | radio.openWritingPipe(addresses[0]); |
296 | | radio.printDetails(); |
297 | | delay(1000); |
298 | | } |
299 | | |
300 | | |
301 | | void loop() { |
302 | | Serial.println(F("Now sending !")); |
303 | | |
304 | | unsigned long start_time = millis(); // Take the time, and send it. This will block until complete |
305 | | if (!radio.write( &start_time, sizeof(unsigned long) )){ |
306 | | Serial.println(F("failed!")); |
307 | | } |
308 | | |
309 | | delay(1000); |
310 | | } |
311 | | }}} |
312 | | |
313 | | |
314 | | - **baseSensor** (sur la raspberry pi) |
| 277 | - **emet** (émetteur sur une !RaspberryPi)[[BR]] |
| 278 | Ce code est donné à titre indicatif, il ne sera pas utilisé aujourd'hui par vous. Il s'agit du code qui tourne sur l'une des !RaspberryPi. |
327 | | RF24 radio(15,0); |
328 | | |
329 | | byte addresses[][6] = {"0Node","1Node","2Node","3Node","4Node","5Node"}; |
| 292 | RF24 radio(15,8); // radio(CE,CS) |
| 293 | |
| 294 | byte addresses[][6] = {"0XXXX"}; |
| 295 | |
| 296 | void setup() { |
| 297 | radio.begin(); |
| 298 | radio.setPALevel(RF24_PA_LOW); |
| 299 | radio.openWritingPipe(addresses[0]); |
| 300 | radio.printDetails(); |
| 301 | } |
| 302 | |
| 303 | char mess[16]; |
| 304 | char buffer[32]; |
| 305 | unsigned long timer; |
| 306 | |
| 307 | void loop() { |
| 308 | cout << "." << flush; |
| 309 | sprintf(buffer,"%s %d", mess, timer); |
| 310 | radio.write( buffer, sizeof(buffer) ); |
| 311 | timer++; |
| 312 | sleep(1); |
| 313 | } |
| 314 | |
| 315 | int main(int argc, char **argv) |
| 316 | { |
| 317 | if (argc > 1) strcpy(mess, argv[1]); |
| 318 | setup(); |
| 319 | while (1) |
| 320 | loop(); |
| 321 | return 0; |
| 322 | } |
| 323 | }}} |
| 324 | |
| 325 | - **Sensor** (sur l'Arduino) |
| 326 | {{{#!c |
| 327 | #include <SPI.h> |
| 328 | #include "RF24.h" |
| 329 | #include "printf.h" |
| 330 | |
| 331 | RF24 radio(9,10); |
| 332 | |
| 333 | byte addresses[][6] = {"0XXXX"}; |
385 | | * Le but initial est de lire la valeur envoyée par l'Arduino et de l'afficher sur le terminal de la raspberry. Il y a donc au moins 2 noeuds, un émetteur (l'arduino) et un récepteur (la raspberry). |
386 | | * Ensuite, l'idée est de faire une communication entre deux raspberry pi. Il va falloir que vous lisiez la documentation du NRF pour comprendre comment numéroter les noeuds. Une raspberry allume la led de sa voisine. |
387 | | * Comme, il n'y a pas assez de raspberry, nous allons ajouter des arduinos. |
388 | | * [http://www.mon-club-elec.fr/pmwiki_reference_arduino/pmwiki.php?n=Main.ReferenceMaxi Langage Arduino] |
389 | | |
390 | | == Programmation des Arduinos == |
391 | | |
392 | | Vous devez utiliser la dernière version d'arduino qui se trouve `/opt/arduino-1.6.8/arduino`. |
393 | | Vous commencerez par compiler le programme `blink` qui fait clignoter la led 13 présente sur l'arduino. |
394 | | Pour pouvoir compiler un programme sur le NRF24, il faut ajouter la bibliothèque. |
395 | | |
396 | | **L'usage des bibliothèques Arduino** |
397 | | |
398 | | * Ce qu'il y a de bien dans l'écosystème Arduino, c'est la volonté de faire simple. |
399 | | En effet, pour presque tous les "périphériques" existants il existe un et même |
400 | | souvent plusieurs bibliothèques de fonctions écrites par des "amateurs" souvent très doués. |
401 | | En plus, les sources sont ouvertes, et il est donc possible d'adapter ces codes pour des |
402 | | besoins spécifiques. |
403 | | |
404 | | * Les bibliothèques sont trouvées, en général, en tapant sur un moteur de recherche, la requête |
405 | | "nom-du-module Arduino". Les projets sont souvent sur github. Pour faire court, |
406 | | * Vous téléchargez la bibliothèque (un RF24-master.zip) |
407 | | * Vous ajoutez la bibliothèque dans l'environnement Arduino (import Library) |
408 | | * Vous lancer l'IDE Arduino et dans le menu '''file/exemples''' vous avez un exemple (souvent plusieurs) de la nouvelle bibliothèque. |
409 | | * Vous en choisissez un, vous le chargez, vous le compilez, vous l'uploadez, vous le testez :-) |
410 | | |
411 | | L'idée sera d'allumer la led de l'arduino depuis la raspberry pi ou l'inverse. |
412 | | |
413 | | }}} |
| 385 | Commencer par compiler sur l'Arduino le code du recepteur seul, et ajouter une tâche qui lit le message envoyé et l'affche sur l'écran Oled. |