土斯 发布的文章

修仙不慎便成魔

东方大道:无我的精神,为人民服务,稍加修炼,靠后人的念想祭奠提供能量而实现永生,便是成仙。
西方邪路:为一己私利,祸害四方,陷入物质界太深,脱离物质界便魂魄消散,夺舍(转世)方式实现永生,实际为魔。

甲辰龙年—西游当返

甲辰龙年,给大家拜年,甲为首,辰为七八点苏醒时候,龙是华夏图腾,寓意,在这一年,华夏子孙尽数觉醒,将再次站立起来,屹立东方。在习主席的带领下,终将战胜邪恶势力,夺回教育部宣传部卫生部控制权,铭记华夏之辨,重返东天正道。

拆解一个六块多钱66瓦快充充电器

故事要从两年前说起,一次发现网上的快充充电器极其便宜,便有一探究竟的想法,于是
微信图片_20240120161055.jpg

微信图片_20240120161409.jpg
66w咱先不说,直接看变压器就知道
微信图片_20240120161400.jpg
铁块,似乎是标配
微信截图_20240120160527.png
大概原理是默认有个分压,快充芯片就是一个快充协议转模拟电阻的一个存在,模拟出的电阻改变反馈电压调整输出电压
微信截图_20240120155021.png
试下强行改变输出电压
微信图片_20240120155537.jpg
微信图片_20240120155504.jpg
很好,可以改成电位器,一个简易调压电源就产生了

node-red 体验分享

Node-RED是一种编程工具,用于以新颖有趣的方式将硬件设备、API和在线服务连接在一起。

它提供了一个基于浏览器的编辑器,使您可以轻松地使用设计器中的各种节点将流连接在一起,只需单击即可将其部署到其运行,简洁高效的完成一个服务的部署。

基于浏览器的流程编辑
Node-RED提供了一个基于浏览器的流编辑器,可轻松使用面板中的各种节点将流连接在一起。然后,单击即可将流部署到运行时。

可以使用富文本编辑器在编辑器中创建JavaScript函数。

内置库允许您保存有用的功能,模板或流程以供重复使用。

建立在Node.js之上
轻量级运行时基于Node.js构建,充分利用了其事件驱动的非阻塞模型。这使得它非常适合在低成本的硬件(如Raspberry Pi)上的网络边缘以及云中运行。

Node的软件包存储库中有超过225,000个模块,可以轻松扩展面板节点的范围以添加新功能。

生态发展
在Node-RED中创建的流使用JSON存储,可以轻松导入和导出以与他人共享。

在线流程库使您可以与世界分享优秀的节点。

请持续关注我,接下来的一段时间内,我会陆续更新!

NodeRED官网:https://nodered.org/

NodeREDGITHUB:https://github.com/node-red

NodeRED英文社区:https://discourse.nodered.org/

NodeRED中文社区:https://www.iotschool.com/topics/node81

1、先安装nodejs​​​​​​

Using Ubuntu

curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs
2、使用npm安装node-red
sudo npm install -g --unsafe-perm node-red
成功的话显示

node-red@1.1.0
added 332 packages from 341 contributors in 18.494s
found 0 vulnerabilities
3、启动
$ node-red

言归正传 我们用他来做一个气象站 先去申请 api 以便获取天气信息

https://api.openweathermap.org/data/2.5/weather?q=Shenzhen,cn&lang=zh_cn&appid=e713f553026dbf4f7f269c61e936338f
拖拖拽拽
微信截图_20240112163204.png

显示
微信截图_20240112163149.png

流池滤波法

/*******************************************************************************************
Func:流池滤波法
Time:2014-9-18
Ver.:V2.0
Note:
*******************************************************************************************/
uint16_t FlowPoolFilter(uint32_t *Pool,uint16_t Data,uint8_t *PoolIndex,uint8_t PoolSize)
{
    uint16_t Old_Filter=0;
    if(*PoolIndex)Old_Filter=((*Pool)/(*PoolIndex));
    (*Pool)+=Data;
    if((*PoolIndex)<PoolSize)(*PoolIndex)++;
    else (*Pool)-=Old_Filter;
    return (*Pool)/(*PoolIndex);
}

用法

private void hScrollBar1_Scroll(object sender, ScrollEventArgs e)
        {
            fiter = new Fiter(hScrollBar1.Value);
            this.Text = hScrollBar1.Value.ToString();
            fiter.FlowPoolFilter(0);
            float[] fiter_data = new float[length];
            float[] src_data = new float[length];
            DateTime[] times = new DateTime[length];
            double[] data = GenerateSinusoidalData(length, 3,10);
            for (int i = 0; i < length; i++)
            {
                Random random = new Random();
                src_data[i] = (float)(data[i] * 30) + 100;
                fiter_data[i] = (float)fiter.FlowPoolFilter((float)src_data[i]);
                times[i] = DateTime.Now.AddSeconds(1);
            }
            hslCurveHistory1.SetLeftCurve("fiter_data", fiter_data, Color.Red);
            hslCurveHistory1.SetRightCurve("src_data", src_data, Color.White);
            hslCurveHistory1.ValueMaxLeft = 255;
            hslCurveHistory1.ValueMinLeft = 0;
            hslCurveHistory1.ValueMaxRight = 255;
            hslCurveHistory1.ValueMinRight = 0;
            hslCurveHistory1.SetDateTimes(times);
            hslCurveHistory1.RenderCurveUI();
        }

效果
微信截图_20231114145426.png

微信截图_20231114145741.png
微信截图_20231114145758.png

微信截图_20231114145819.png

使用esp8266 连接 见登iot 远程控制继电器

微信截图_20210131131922.png

 #include <ESP8266WiFi.h>
    #include <PubSubClient.h>
    #include <ArduinoJson.h>
     
    const char* ssid = "Sanby";
    const char* password = "1234567890";
    const char* mqtt_server = "182.92.223.22";
    const char* mqtt_id = "v1/devices/me/telemetry";
    const char* mqtt_subid = "v1/devices/me/rpc/request/+";
    const int mqttPort = 1883;
    
     
    WiFiClient espClient;
    PubSubClient client(espClient);
    int switch1=0;
    int tempture=0;
    void setup() {
    
      Serial.begin(115200);
     
      WiFi.begin(ssid, password);
     
      while (WiFi.status() != WL_CONNECTED) {
        delay(500);
        Serial.println("Connecting to WiFi..");
      }
      Serial.println("Connected to the WiFi network");
     
      client.setServer(mqtt_server, mqttPort);
      client.setCallback(callback);
     
      while (!client.connected()) {
        Serial.println("Connecting to MQTT...");
     
        if (client.connect("93834a00-2631-11eb-af1a-37260a6003e5","DHT11_DEMO_TOKEN","")) {
          Serial.println("connected");  
     
        } else {
     
          Serial.print("failed with state ");
          Serial.print(client.state());
          delay(2000);
     
        }
      }
     
      client.publish(mqtt_id, "{'value':10.0}");
      client.subscribe(mqtt_subid);
     
    }
     
    void callback(char* topic, byte* payload, unsigned int length) {
      DynamicJsonDocument doc(1024);
      Serial.print("Message arrived in topic: ");
      Serial.println(topic);
      Serial.print("Message:");
      Serial.println((char *)payload);
      DeserializationError error = deserializeJson(doc, payload);
      if(error)return;
      String method_=doc["method"];
      String params_=doc["params"];
      if(!method_.compareTo("setLight1SwitchStatus"))
      {
        
         if(!params_.compareTo("on")){digitalWrite(0,HIGH);pinMode(0,OUTPUT);}
         if(!params_.compareTo("off")){digitalWrite(0,LOW);pinMode(0,OUTPUT);};
      }
      if(!method_.compareTo("setLight2SwitchStatus"))
      {
         if(!params_.compareTo("on")){digitalWrite(0,HIGH);pinMode(0,OUTPUT);}
         if(!params_.compareTo("off")){digitalWrite(0,LOW);pinMode(0,OUTPUT);}
      }
      Serial.println(doc["method"].as<String>());
      Serial.println(doc["params"].as<String>());
    }
    
    void loop() {
      client.loop();
      
      tempture++;
      if(tempture%100000==0)
      {
        String bbbb= "{\"tongjinlv\":"+String(tempture)+"}";
        client.publish(mqtt_id, bbbb.c_str());
        Serial.println(bbbb.c_str());
      }
      if(!client.connected())setup();
      if(WiFi.status() != WL_CONNECTED)ESP.reset();
    }

遥控改io 控制方案

临时改一个无线控制灯的方案 买了这家的 灯 https://item.taobao.com/item.htm?spm=a1z09.2.0.0.56b02e8dZZ5qYi&id=618040741772&_u=ldclr3i4d66
微信图片_20201221165856.jpg
打算用单片机io 去控制 按键 ,谁知道 按钮既不是 上拉又不是下拉 居然上不沾天下不沾地,空闲状态 1腿 3.3v 2 腿0 v 按下按键 1腿 2v 2 腿 1.2v 用镊子 短接 1腿到地或2腿到vcc 均不触发按钮事件,没办法io口直接驱动 只能加个三极管
微信图片_20201221165850.jpg

改装测试


微信图片_20201221165853.jpg