2 Révisions

Auteur SHA1 Message Date
  Bernd Gottschlag b3b216871a Merge branch 'master' of git.gottschlag.net:bernd/smart-home il y a 5 ans
  Bernd Gottschlag 4245c1eee7 Receive weather data from the weather sensor and print it out il y a 5 ans
1 fichiers modifiés avec 15 ajouts et 1 suppressions
  1. 15
    1
      base-station/software/src/main.rs

+ 15
- 1
base-station/software/src/main.rs Voir le fichier

2
 use linux_embedded_hal::spidev::{SpiModeFlags, Spidev, SpidevOptions};
2
 use linux_embedded_hal::spidev::{SpiModeFlags, Spidev, SpidevOptions};
3
 use linux_embedded_hal::sysfs_gpio::Direction;
3
 use linux_embedded_hal::sysfs_gpio::Direction;
4
 use linux_embedded_hal::Pin;
4
 use linux_embedded_hal::Pin;
5
+use std::convert::TryInto;
6
+use std::time::Instant;
5
 
7
 
6
 use spi::EmbeddedHalSpidev;
8
 use spi::EmbeddedHalSpidev;
7
 
9
 
43
     // Initialize the radio module.
45
     // Initialize the radio module.
44
     let mut nrf24 = NRF24L01::new(ce, cs, spi).unwrap();
46
     let mut nrf24 = NRF24L01::new(ce, cs, spi).unwrap();
45
     nrf24.set_frequency(0x32).unwrap();
47
     nrf24.set_frequency(0x32).unwrap();
46
-    nrf24.set_rf(DataRate::R2Mbps, 0).unwrap();
48
+    nrf24.set_rf(DataRate::R2Mbps, 3).unwrap();
47
     nrf24.set_crc(Some(CrcMode::OneByte)).unwrap();
49
     nrf24.set_crc(Some(CrcMode::OneByte)).unwrap();
48
     nrf24.set_auto_retransmit(250, 3).unwrap();
50
     nrf24.set_auto_retransmit(250, 3).unwrap();
49
     nrf24
51
     nrf24
60
 
62
 
61
     println!("width: {}", nrf24.get_address_width().unwrap());
63
     println!("width: {}", nrf24.get_address_width().unwrap());
62
 
64
 
65
+    let mut start = Instant::now();
66
+
63
     // Receive data.
67
     // Receive data.
64
     let mut nrf24 = nrf24.rx().unwrap();
68
     let mut nrf24 = nrf24.rx().unwrap();
65
     println!("Starting to receive:");
69
     println!("Starting to receive:");
67
         if let Some(pipe) = nrf24.can_read().unwrap() {
71
         if let Some(pipe) = nrf24.can_read().unwrap() {
68
             let payload = nrf24.read().unwrap();
72
             let payload = nrf24.read().unwrap();
69
             println!("packet received on pipe {}: {:?}", pipe, payload.as_ref());
73
             println!("packet received on pipe {}: {:?}", pipe, payload.as_ref());
74
+            let pressure = u32::from_le_bytes(payload.as_ref()[0..4].try_into().unwrap());
75
+            let temperature = u32::from_le_bytes(payload.as_ref()[4..8].try_into().unwrap());
76
+            let humidity = u32::from_le_bytes(payload.as_ref()[8..12].try_into().unwrap());
77
+            println!("pressure: {}", pressure as f32 / 100.0);
78
+            println!("temperature: {}", temperature as f32 / 100.0);
79
+            println!("humidity: {}", humidity as f32 / 1024.0);
80
+            let end = Instant::now();
81
+            let elapsed = end.duration_since(start);
82
+            println!("Debug: {:?}", elapsed);
83
+            start = end;
70
         }
84
         }
71
     }
85
     }
72
 }
86
 }

Loading…
Annuler
Enregistrer