c# .net iot+香橙派orangepi开发板 200多块打造自家远程 浇花助手 系统

16 篇文章 3 订阅

由于出差多,这里的花经常过一段时间才能浇水,有些花都旱晕了,所以想做一个助手帮我远程就可以操作浇花,当然也完全可以发展为一个商用系统,拿浇花来做为一个测试平台吧,现在已经完成了,并已经运行了一个多月

总体来讲开发起来还是比较容易的,大家可以尝试,可以做很多物联网的产品

准备材料:

1、5V香橙派 zero2 一个

2、5V高低电平继电器一个

3、S8550 PNP三极管一个

4、12V转5V 转换器一个

5、5v 3cm散热风扇一个

6、sht30温湿计一个

7、12V水管专用的电磁阀门一个

8、浇花水管和喷头一套

9、电箱+底板一个

10、杜邦线几条

11、220V转12V电源一个

以上材料都是在某宝上采购的,成本一共200-250吧

另外我在腾讯云买了一个linux的轻应用服务器 作为我的云端服务器,由于我是首次购买:66元就可以一年

开发环境:

vs2022   .net 6+rabbitmq+mysql

先讲解一下各个元件的作用:

香橙派 zero2 :用作网关主机,安装官网提供的ubuntu系统,部署.net应用程序,用来控制高低电平继电器打开 水管专用的电磁阀门 和 散风扇开关

高低电平继电器:有控制断开和接通电路的用作,实现开关,接12V水管专用的电磁阀门火线

S8550 PNP三极管:用于控制开关散热风扇

也有控制断开和接通电路的用作,实现开关, 跟继电器类似,区别是 他没有负载电隔离功能,继电器有隔离,电流很大时发热量很大,多用于小电流场合,继电器用于大电流场合,所以两个我都体验用一下

220V转12V电源:接家用电,接12V水管专用的电磁阀门零线

12V转5V 转换器:接5V香橙派 zero2,5V高低电平继电器,5v 3cm散热风扇一个

5v 3cm散热风扇:装在机箱,如果 6、sht30温湿计检测的 温度高于35℃,风扇启动散热,33度关闭

三极管方式 mje13003三极管(做开关用),管脚说明,面对有文字说明的一面,从左到右:B C E,1k电容(下拉电阻,保护用),杜邦线若干 接线顺序一定要正确:
B(基极)-下拉1K电阻-GPIO 40(可以任选其他控制口);
E(发射极)-GND;
C(集电极)-风扇黑线;
风扇红线-5V

工作原理:

服务端发送指令到mq

网关香橙派zero接收消费mq,并执行指令

9e2f9c25176042a1a1fc73a5c6297b86.png

mysql主要用到的表

7e41e2187cc041bcaf9c432f815b5270.png

c#读取sht30温湿传感例子,使用nuget 包Iot.Device.bindings即可

using Iot.Device.Sht3x;
using System.Device.I2c;
  /// <summary>
    ///  //sht30温湿传感器
    /// </summary>
    public static class Device_Sensor_SHT30TempAndHumService
    {

        public static void test()
        {
            //运行调用例子
            while (true)
            {
                Model_Sht30TempAndHumu returnValue = getTempAndHum();               
                Thread.Sleep(1000);
            }
        }

        static I2cConnectionSettings set = new(0, (byte)OverWriteI2cAddress.AddrLow);
        static I2cDevice dev = I2cDevice.Create(set);
        static Sht3x sht = new Sht3x(dev);
        static Model_Sht30TempAndHumu returnValue = new Model_Sht30TempAndHumu();
        public static Model_Sht30TempAndHumu getTempAndHum()
        {
           // returnValue = new Model_Sht30TempAndHumu();
            // 温度
            returnValue.Temperature = sht.Temperature.DegreesCelsius;
            // 湿度
            returnValue.Humidity = sht.Humidity.Percent;
            returnValue.Agreement_type = AgreementTypeEnum.I2C;
            Console.WriteLine("温度:{0:N1} ℃\n湿度:{1:N1} %RH", returnValue.Temperature, returnValue.Humidity);
            return returnValue; ;
        }
        enum OverWriteI2cAddress : byte
        {
            AddrLow = 0x44
        }
    }
  public class Model_Sht30TempAndHumu
    {
        public double Temperature { get; set; }
        public double Humidity { get; set; }
        /// <summary>
        /// 通讯协议 i2c/rs485
        /// </summary>
        public string Agreement_type { get; set; }


    }

c#操作香橙派gpio高低电平例子

安装nuget包:IotDeviceToolHepler

香橙派安装WiringOP;

using IotDeviceToolHepler.WiringOPSharp;    
public class OrangePi_GpioService
    {
        //运行调用例子
        public void test()
        {

            Console.WriteLine("输入引脚WPI编号");
            //控制台中输入内容
            int pinNum = int.Parse(Console.ReadLine());
            Console.WriteLine("输入o打开,输入c关闭");
            string command = Console.ReadLine();
            if (!string.IsNullOrWhiteSpace(command))
            {
                setGpioOutputMode(command, pinNum);
            }

        }
        /// <summary>
        /// pin输入高电平或低电平
        /// </summary>
        /// <param name="command"></param>
        /// <param name="pinNum"></param>
        public  string setGpioOutputMode(string command, int pinNum)
        {

            try
            {
                Setup.WiringPiPiSetup();
                GPIO.PinMode(pinNum, WiringPi.Output);

                if (command == "open")
                {   //open

                    GPIO.DigitalWrite(pinNum, WiringPi.High);
                    Console.WriteLine("执行开");
                    return DeviceConstant.GpioPinOpen;
                }
                else if (command == "close")
                {   //close

                    GPIO.DigitalWrite(pinNum, WiringPi.Low);
                    Console.WriteLine("执行关");
                    return DeviceConstant.GpioPinClose;
                }

                return DeviceConstant.GpioPinError;
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
                return DeviceConstant.GpioPinError;
            }
        }
        public  string getGpioOutputMode(int pinNum)
        {
            try
            {
                Setup.WiringPiPiSetup();
                GPIO.PinMode(pinNum, WiringPi.Output);
                int value = GPIO.DigitalRead(pinNum);
                if (value == WiringPi.High)
                {
                    Console.WriteLine("获得状态 开");
                    return DeviceConstant.GpioPinOpen;
                }
                else if (value == WiringPi.Low)
                {

                    Console.WriteLine("获得状态  关");
                    return DeviceConstant.GpioPinClose;
                }
                return DeviceConstant.GpioPinError;
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
                return DeviceConstant.GpioPinError;
            }
        }
    }
 public class DeviceConstant
    {
        /// <summary>
        /// 开
        /// </summary>
        public static string GpioPinOpen = "open";
        /// <summary>
        /// 关
        /// </summary>
        public static string GpioPinClose = "close";


        /// <summary>
        /// 关
        /// </summary>
        public static string GpioPinError = "error";


    }

电箱装好

95c7d5b22a0545408d66fa6e4c32a2cb.jpg

 H5界面效果

f5596f4c94534ddf8d5357ba482e8871.png

水管

209d5cb8633a464a958b44b085725c70.jpg

电箱安装

0631d8bf85eb44a789138b21c05cc00e.jpg

f2848b1f4e6348bd96a13a88604666bb.png

b12b8d20334d44ca8cba3794ea6f766e.jpg

5bb5213bc7be4b43b774a570cd628c1e.jpg

操作香橙派的引脚,需要用官方的wiringOP库,他是c++的,我这里已经将她融合到.net里面,成为一个工具类库,源代码已开源

代码在:https://gitee.com/yihong-lin/IotDeviceForCsharp.git

代码里面包括 香橙派 c# 引用 wiringOP 类库, 操作其它设备的代码 ,包括串口,i2c  等操作

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

.net亦洪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值