admin 发布的文章

简单方便的使用datamark 用做 树莓派监控

第一步:
访问http://dm.trtos.com/ 获取id
会跳转到 http://dm.trtos.com/web/datamark/index.php?id=4DRtDABC 后面的4DRtDABC就是id
第二步
http://dm.trtos.com/web/datamark/set.php?id=4DRtDABC&name=这里填入项目&value=这里填入描述
第三步
访问 http://dm.trtos.com/web/datamark/index.php?id=4DRtDABC 就可以直接看到记录,可删除打印等
非常简单
微信截图_20200522104416.png

树莓派python 代码

import requests
url = "http://dm.trtos.com/web/datamark/set.php?id=4DRtDABC&name=这里填入项目&value=这里填入描述"
r = requests.get(url)
print(r)

python Post 数据 PHP 接收保存

KMjjTas.jpg

python端 读取文件post base64格式的数据

import base64
import urllib
import requests
name="KMjjTas.jpg"
f = open(name, 'rb')
img =base64.b64encode(f.read())
res = requests.post(url="http://www.xxxx.com/index.php?name="+name, data=img)
print(res.text)

php端 接收post base64格式数据解码 保存

<?php
    $postStr = file_get_contents("php://input");
    $name=$_REQUEST['name'];
    $decodedData = base64_decode($postStr);
    file_put_contents('tmp/'.$name,$decodedData);
    echo "write ok";
?>

fileMonitor 检测文件变化 执行脚本

检测文件发生变化 启动脚本并传入 变化的文件名用于 修改同步 文件到ftp adb linux 等 代码同步修改
源码下载地址
FileMonitor2.0exe
使用时 把 需要执行的脚本拖动到 fileMonitor 即可
需要执行的代码 通过%1%获取 变动的文件路径 具体干什么看具体需求
mac端 稍后更新上来
代码贴出来

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using System.Threading;

using System.Diagnostics;
namespace FileMonitor
{
    class Program
    {
        static void Main(string[] args)
        {
            string File2;
            if (args.Length<1)
            {
                Console.WriteLine("请输入要执行的文件....");
                File2 = Console.ReadLine();
            }
            else File2 = args[0];
            Console.WriteLine("监控目录[" + AppDomain.CurrentDomain.BaseDirectory + "]" + "执行文件[" + File2 + "]");
            FileSystemWatcher watcher = new FileSystemWatcher();
            watcher.Path = AppDomain.CurrentDomain.BaseDirectory;
            watcher.NotifyFilter =NotifyFilters.LastWrite |NotifyFilters.FileName;
            watcher.Changed += (object source, FileSystemEventArgs e) =>
            {
                Console.WriteLine("文件{0}已经被修改,修改类型{1}", e.FullPath, e.ChangeType.ToString());
                //System.Diagnostics.Process.Start(File2);
                exec(File2, e.FullPath);
            };
            watcher.Created += (object source, FileSystemEventArgs e) =>
            {
                Console.WriteLine("文件{0}被建立", e.FullPath);
            };
            watcher.Deleted += (object source, FileSystemEventArgs e) =>
            {
                Console.WriteLine("文件{0}已经被删除", e.FullPath);
            };
            watcher.Renamed += (object source, RenamedEventArgs e) =>
            {
                Console.WriteLine("文件{0}的名称已经从{1}变成了{2}", e.OldFullPath, e.OldName, e.Name);
            };
            watcher.EnableRaisingEvents = true;
            while (true) Thread.Sleep(1000);
        }
        public static void exec(string exePath, string parameters)
        {
            Process process = new System.Diagnostics.Process();
            process.StartInfo.FileName = exePath;
            process.StartInfo.Arguments = parameters;
            process.StartInfo.UseShellExecute = false;
            process.StartInfo.CreateNoWindow = true;
            process.StartInfo.RedirectStandardOutput = true;
            process.Start();
            process.BeginOutputReadLine();
            process.OutputDataReceived += new DataReceivedEventHandler(processOutputDataReceived);
            process.WaitForExit();
            process.OutputDataReceived -= new DataReceivedEventHandler(processOutputDataReceived);
            Console.WriteLine("执行完毕");
        }

        public static void processOutputDataReceived(object sender, DataReceivedEventArgs e)
        {
            Console.WriteLine(e.Data);
        }
    }
}

微信截图_20200508105631.png

openwrt 操作IIC

img_3075-removebg.png
img_3082-removebg.png

固件内置了i2ctools软件包

  1. 用i2cdetect -l 命令来列出所有I2C总线
    root@Widora:/# i2cdetect -l
    i2c-0 i2c 10000900.i2c I2C adapt
  2. 用i2cdetect -F 0 来查看I2C 0号总线启用的功能

    root@Widora:/# i2cdetect -F 0
    Functionalities implemented by /dev/i2c-0:
    I2C yes
    SMBus Quick Command yes
    SMBus Send Byte yes
    SMBus Receive Byte yes
    SMBus Write Byte yes
    SMBus Read Byte yes
    SMBus Write Word yes
    SMBus Read Word yes
    SMBus Process Call yes
    SMBus Block Write yes
    SMBus Block Read no
    SMBus Block Process Call no
    SMBus PEC yes
    I2C Block Write yes
    I2C Block Read yes

  3. 查看I2C 0号总线上挂载的设备

    root@Widora:/# i2cdetect -y 0
    0 1 2 3 4 5 6 7 8 9 a b c d e f
    00: -- -- -- -- -- -- -- -- -- -- -- -- --
    10: -- -- -- -- -- -- -- -- -- -- UU -- -- -- -- --
    20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    30: -- -- -- -- UU -- -- -- -- -- -- -- -- -- -- --
    40: -- -- -- -- -- -- -- -- 48 -- -- -- -- -- -- --
    50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    70: -- -- -- -- -- -- -- --

其中标识为UU的设备(地址分别为0x1a和0x34)表示内核已经加载了相应的驱动,而地址为0x48的I2C设备尚未被内核所驱动。

  1. 在sysfs文件中可查看已被内核驱动的I2C设备的名称

    
        root@Widora:/# ls /sys/bus/i2c/devices
        0-001a  0-0034  i2c-0
        root@Widora:/# cat /sys/bus/i2c/devices/0-001a/name
        wm8960
        root@Widora:/# cat /sys/bus/i2c/devices/0-0034/name
        codec_wm8960
    
  2. 用i2cdump -y 0 0x48 W 命令来读取地址为0x48的I2C设备(LM75温度传感器)所有寄存器中的内容
 root@Widora:/# i2cdump -y 0 0x48 W
    0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f    0123456789abcdef
    00: 1e 00 4b 00 ff ff ff ff 1e 00 4b 00 ff ff ff ff    ?.K.....?.K.....
    10: 1e 00 4b 00 ff ff ff ff 1e 00 4b 00 ff ff ff ff    ?.K.....?.K.....
    20: 1e 00 4b 00 ff ff ff ff 1e 00 4b 00 ff ff ff ff    ?.K.....?.K.....
    30: 1e 00 4b 00 ff ff ff ff 1e 00 4b 00 ff ff ff ff    ?.K.....?.K.....
    40: 1e 00 4b 00 ff ff ff ff 1e 00 4b 00 ff ff ff ff    ?.K.....?.K.....
    50: 1e 00 4b 00 ff ff ff ff 1e 00 4b 00 ff ff ff ff    ?.K.....?.K.....
    60: 1e 00 4b 00 ff ff ff ff 1e 00 4b 00 ff ff ff ff    ?.K.....?.K.....
  1. 用i2cget -y 0 0x48 0 w 命令来读取地址为0x48的I2C设备0号寄存器中的内容

K210 例程

20200424105607.png

扫描IIC设备

from machine import I2C
i2c = I2C(I2C.I2C0, freq=100000, scl=28, sda=29)
devices = i2c.scan()
print(devices)

PWM

from machine import Timer,PWM
import time

tim = Timer(Timer.TIMER0, Timer.CHANNEL0, mode=Timer.MODE_PWM)
ch = PWM(tim, freq=500000, duty=50, pin=board_info.LED_G)
duty=0
dir = True
while True:
    if dir:
        duty += 10
    else:
        duty -= 10
    if duty>100:
        duty = 100
        dir = False
    elif duty<0:
        duty = 0
        dir = True
    time.sleep(0.05)
    ch.duty(duty)

实时拍照

   import sensor
    import image
    import lcd
    lcd.init()
    sensor.reset()
    sensor.set_pixformat(sensor.RGB565)
    sensor.set_framesize(sensor.QVGA)
    sensor.run(1)
    while True:
        img=sensor.snapshot()
        lcd.display(img)

找颜色

import sensor
import image
import lcd
import time
lcd.init()
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.run(1)
green_threshold   = (0,   80,  -70,   -10,   -0,   30)
while True:
    img=sensor.snapshot()
    blobs = img.find_blobs([green_threshold])
    if blobs:    
        for b in blobs:
            tmp=img.draw_rectangle(b[0:4]) 
            tmp=img.draw_cross(b[5], b[6]) 
            c=img.get_pixel(b[5], b[6])
    lcd.display(img)

显示fps

import sensor
import image
import lcd
import time

clock = time.clock()
lcd.init()
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.run(1)
sensor.skip_frames(30)
while True:
    clock.tick()
    img = sensor.snapshot()
    fps =clock.fps()
    img.draw_string(2,2, ("%2.1ffps" %(fps)), color=(0,128,0), scale=2)
    lcd.display(img)

扫描二维码

import sensor
import image
import lcd
import time

clock = time.clock()
lcd.init()
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.set_vflip(1)
sensor.run(1)
sensor.skip_frames(30)
while True:
    clock.tick()
    img = sensor.snapshot()
    res = img.find_qrcodes()
    fps =clock.fps()
    if len(res) > 0:
        img.draw_string(2,2, res[0].payload(), color=(0,128,0), scale=2)
        print(res[0].payload())
    lcd.display(img)

古人很容易开发预知能力,而现在人却很难

人类拥有第三只眼,称为松果体,早在7万多年前就开始进化出现,松果体不仅有控制激素分泌生物钟等功能,还可以观看眼睛看不到的东西,例如磁场能和量子能 红外能 等等,而灵魂也是某种能量物质的一种呈现方式,松果体在人类出生后的几个月发育到最大,随后越长大越萎缩,得到开发的人便有了预知能力,像 袁天罡 诸葛亮刘伯温爱因斯坦特斯拉等都是松果体开发比较好才会拥有平常人没有的超能力,松果体作为唯一与灵魂连接的地方,过度开发如果控制不好容易被鬼魔缠身,现在伟人少 是因为 人类过于忙碌 加上不规律的生活及各种垃圾食品导致松果体钙化或变质导致无法感知宇宙世界。
15571361ed7e45f8a948440ebff57f2b.jpeg

刚出生的小孩和一些动物都能感受到人类感受不到的惊吓也是源于此。