Esempio n. 1
0
        private Dht22 GetSensor()
        {
            GpioDriver     driver     = new RaspberryPi3Driver();
            GpioController controller = new GpioController(PinNumberingScheme.Logical, driver);

            return(new Dht22(4, gpioController: controller));
        }
        public static void ReadSensor()
        {
            var        blinky     = false;
            GpioDriver driver     = new RaspberryPi3Driver();
            var        controller = new GpioController(PinNumberingScheme.Logical, driver);

            controller.OpenPin(16, PinMode.Output);

            using (var dht = new Dht11(4, gpioController: controller))
            {
                while (true)
                {
                    var temperature = dht.Temperature;
                    var humidity    = dht.Humidity;
                    if (dht.IsLastReadSuccessful)
                    {
                        Console.WriteLine($"Temperature: {temperature.DegreesCelsius} \u00B0C, Humidity: {humidity.Percent} %");
                    }

                    if (!blinky)
                    {
                        controller.Write(16, PinValue.High);
                    }
                    else
                    {
                        controller.Write(16, PinValue.Low);
                    }

                    blinky = !blinky;

                    Thread.Sleep(1000);
                }
            }
        }
Esempio n. 3
0
        static async Task SendEvents(ModuleClient moduleClient)
        {
            var count = 0;

            var        blinky     = false;
            GpioDriver driver     = new RaspberryPi3Driver();
            var        controller = new GpioController(PinNumberingScheme.Logical, driver);

            controller.OpenPin(16, PinMode.Output);

            using (var dht = new Dht11(4, gpioController: controller))
            {
                while (!cts.Token.IsCancellationRequested)
                {
                    var temperature = dht.Temperature;
                    var humidity    = dht.Humidity;
                    if (dht.IsLastReadSuccessful)
                    {
                        Console.WriteLine($"Temperature: {temperature.DegreesCelsius} \u00B0C, Humidity: {humidity.Percent} %");



                        var tempData = new MessageBody
                        {
                            Ambient = new Ambient
                            {
                                Temperature = temperature.DegreesCelsius,
                                Humidity    = Convert.ToInt32(humidity.Percent)
                            },
                            TimeCreated = DateTime.UtcNow
                        };

                        string dataBuffer   = JsonConvert.SerializeObject(tempData);
                        var    eventMessage = new Message(Encoding.UTF8.GetBytes(dataBuffer));
                        eventMessage.Properties.Add("sequenceNumber", count.ToString());
                        eventMessage.Properties.Add("batchId", BatchId.ToString());
                        Console.WriteLine($"\t{DateTime.Now.ToLocalTime()}> Sending message: {count}, Body: [{dataBuffer}]");

                        await moduleClient.SendEventAsync("temperatureOutput", eventMessage);

                        count++;
                    }

                    if (!blinky)
                    {
                        controller.Write(16, PinValue.High);
                    }
                    else
                    {
                        controller.Write(16, PinValue.Low);
                    }

                    blinky = !blinky;

                    await Task.Delay(1000, cts.Token);
                }
            }
        }
Esempio n. 4
0
        /// <summary>
        /// Attempt to get the best applicable driver for the board the program is executing on.
        /// </summary>
        /// <returns>A driver that works with the board the program is executing on.</returns>
        private static GpioDriver GetBestDriverForBoardOnLinux()
        {
            RaspberryPi3LinuxDriver?internalDriver = RaspberryPi3Driver.CreateInternalRaspberryPi3LinuxDriver(out _);

            if (internalDriver is object)
            {
                return(new RaspberryPi3Driver(internalDriver));
            }

            return(UnixDriver.Create());
        }
Esempio n. 5
0
        /// <summary>
        /// Initialize
        /// </summary>
        public void Initialize(int busId = 0)
        {
            var settings = new SpiConnectionSettings(busId, CS);

            settings.ClockFrequency = 8000000;
            settings.DataBitLength  = 8;
            settings.Mode           = SpiMode.Mode0;

            sensor = new UnixSpiDevice(settings);
            driver = new RaspberryPi3Driver();
            gpio   = new GpioController(PinNumberingScheme.Logical, driver);

            gpio.OpenPin(CE, PinMode.Output);
            gpio.Write(CE, PinValue.High);
            gpio.OpenPin(IRQ, PinMode.Input);
            gpio.RegisterCallbackForPinValueChangedEvent(IRQ, PinEventTypes.Falling, Irq_ValueChangedDown);

            gpio.Write(CE, PinValue.Low);
            // reflect RX_DR interrupt, TX_DS interrupt not reflected, power up, receive mode
            WriteRegister(R_REGISTER, 0b_0011_1011);
            gpio.Write(CE, PinValue.High);

            Thread.Sleep(20);
            SetRxPayloadSize(packetSize);

            SetChannel(25);
            if (SetDataRate(DataRate.DR250Kbps))
            {
                isPlusModel = true;
            }

            SetCRCLength(CRCLength.CRC8);
            SetPALevel(PALevel.PA_MAX);
            EnableAckPayload();
            SetRetryPolicy(3, 15);
            MaskDataSent(false);
            MaskMaskDataReady(false);
            MaskMaxRetries(false);
            SetAutoAck(true);
            FlushTX();
            FlushRX();
        }