分类 科学 的文章

利用树莓派结合datamark 实现远程移动监控

请输入图片描述

'`#encoding=utf-8
import cv2
import time
from poster.encode import multipart_encode
import urllib2
import os,shutil
import sys
from urllib2 import Request, urlopen, URLError, HTTPError
from poster.encode import multipart_encode
from poster.streaminghttp import register_openers
import datetime
import socket
import time

DATAMARK=1
TLINK=2
GIZWITS=3
print "open video0"
cap=cv2.VideoCapture(0)
print cap
pre_frame = None
def post(file):

register_openers()
f=open(file, "rb")
datagen, headers = multipart_encode({"myFile": f})
request = urllib2.Request("http://trtos.com/web/datamark/upload.php", datagen, headers)
try:
    response = urllib2.urlopen(request)
    print response.read()
     
except URLError,e:
    print e.reason
    print e.code

def send(context,name,id):
if name==DATAMARK:

   context=context+"\n"
   ss=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
   ss.connect(('trtos.com',80))
   msg="POST /php/api.php?id="+id+" HTTP/1.1\n"+ \
        "Content-Type: application/x-www-form-urlencoded\n"+ \
        "Host: trtos.com\n"+ \
        "Content-Length: "+str(len(context))+"\n"+ \
        "Expect: 100-continue\n"+ \
        "Connection: Keep-Alive\n\n\n"+context
   ss.sendall(msg)
   ss.close()
   print msg

elif name==TLINK:

   ss=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
   ss.connect(('tcp.tlink.io',8647))
   time.sleep(1)
   ss.sendall(id)
   time.sleep(1)
   ss.sendall(context)
   ss.close()
   print id,context,name

elif name==GIZWITS:

   print "机智云"
  

while(1):

ret,frame=cap.read()
curframe=frame.copy()
k=cv2.waitKey(1)
gray_img=cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
gray_img=cv2.resize(gray_img, (500, 500))
gray_img=cv2.GaussianBlur(gray_img, (21, 21), 0)
if pre_frame is None:
    pre_frame = gray_img
else:
    img_delta = cv2.absdiff(pre_frame, gray_img)
    thresh = cv2.threshold(img_delta, 25, 255, cv2.THRESH_BINARY)[1]
    thresh = cv2.dilate(thresh, None, iterations=2)
    thresh,contours, hierarchy = cv2.findContours(thresh.copy(),cv2.RETR_LIST,cv2.CHAIN_APPROX_SIMPLE)
    for c in contours:
        if cv2.contourArea(c) < 3000:
             print cv2.contourArea(c)
             continue
        else:
             (x,y,w,h) = cv2.boundingRect(c)
             cv2.rectangle(curframe,(x,y),(x+w,y+h),(0,255,0),2)
             cv2.imwrite("5uT5zGTG.jpg",curframe)
             post("5uT5zGTG.jpg")
             shutil.move("5uT5zGTG.jpg","/home/pi/record/"+datetime.datetime.now().strftime('%Y_%m_%d_%H_%M_%S')+".jpg")
             send("area:"+str(cv2.contourArea(c)),DATAMARK,"5uT5zGTG")
pre_frame = gray_img
time.sleep(1)

cap.release()`

python-opencv环境搭建

使用ubuntu18.2 系统或者其他系统
默认会安装python2.7
sudo apt install python
sudo apt install python-opencv
sudo apt install python-pip2019-11-23 18-12-21 的屏幕截图.png

DataMark 云便签 无需登录 永久记录

云便签的优势
面对传统二维码的信息量少,不便存储大信息量数据,云便签便应运而生,从而保证了数据的安全和可靠性。

如何使用云便签
扫描如下二维码可以获取一下信息
请输入图片描述
以上信息可以在二维码创建后添加。

DataMark是一个数据便签系统,用户可以对创建的二维码添加记录信息,并打印二维码,把得到的二维码以标签纸或者文件的形式跟随商品直到客户手里,客户拿到商品扫描商品附带的二维码即可获得商品详细信息,包括材料来源,检验员,生产环境等信息。每个二维码都有唯一识别信息,当手机扫描已经添加记录的二维码时,直接打开记录信息网页,网页内容支持导出,打印,供证明使用。

Datamark 系统分为软件部分和设备部分,通常对效率要求不是很高的场合只需要软件就可以,软件分为pc端客户端和手机端客户端,负责创建和录入信息功能。在有高效率要求的场合需要配套手动扫码录入设备或自动扫码录入设备。

应用场景
1、 工厂生产电子产品

在产品被上线的开始,会通过电脑创建一个唯一二维码,并添加基础信息,比如材料来源信息,产品功能信息,并贴在产品支架上,在产品进入流水线后,流水线上每个环节都设置一个二维码扫描录入设备,将各环节指标通过二维码录入到云端。

2、 畜牧业牲口

我们在餐厅吃吃饭点菜的时候,服务员会在每道菜的菜谱上附带二维码,扫码可以获知菜品的原材料信息,产地,养殖人,加工厂,物流信息等等。

3、 学校学生信息跟踪

在学生进入学校登记入学的时候每个人会生成一个唯一二维码,在校期间,学校班主任及各学科教师会对学生的表现及成绩信息进行记录,供评优秀级别及奖学金用,毕业后,二维码记录的信息会跟随档案伴随到终身。

软件及使用说明
打开软件如下,选菜单《标签》->《创建》会自动联网生产唯一二维码ID,随后添加的内容均被存入到该ID中。

填入信息及描述点击提交,信息会立即提交到云端,请在录入信息结束前务必打印或导出二维码,以防录入信息丢失。

扫描二维码可以进入该标签内容页面

电脑端打开效果
通过链接或二维码进入到标签页面进入编辑链接可以对便签内容进行编辑

DataMark(2.0) API

地址:http://dm.trtos.com/php/json.php
Post 添加数据
{"action":"add","id":"y9JM9Rd","content": [{"name": "项目1","value": "5555"},{"name": "项目2","value": "1234"}]}
返回
{"action":"add","status":"succeed"}
Post 删除所有数据
{"action":"del","id":"y9JM9Rd"}
返回
{"action":"del","status":"succeed"}
Post 获取分配ID
{"action":"getid"}
返回
{"action":"getid","id":"y9JM9Rd"}
Post 获取记录(必要参数id,可选参数name,value)
{"action":"get","id":"y9JM9Rd"}
{"action":"get","id":"y9JM9Rd","name":"项目1"}
{"action":"get","id":"y9JM9Rd","name":"项目1","value":"5555"}
返回
[{"Name":"Name1","Value":"xiaowu"},{"Name":"Name2","Value":"Xiaotian"}]

上传背景图 代码

#!usr/bin/python

image.py

-- coding=utf-8 --

from poster.encode import multipart_encode
import urllib2
import sys
from urllib2 import Request, urlopen, URLError, HTTPError
from poster.encode import multipart_encode
from poster.streaminghttp import register_openers

register_openers()
f=open("4UTmPcpw.jpg", "rb")

datagen, headers = multipart_encode({"myFile": f})
request = urllib2.Request("http://trtos.com/web/datamark/upload.php", datagen, headers)
try:

response = urllib2.urlopen(request)
print response.read()
 

except URLError,e:

print e.reason
print e.code

极客虫

15年的一个众筹项目,失败了。
_20191108143604.jpg
微信图片_20191108143556.jpg
原理图
QQ截图20191108144434.png
PCB截图

QQ截图20191108145330.png

代码地址 https://github.com/tongjinlv/TRTOS.git
硬件下载地址 使用Altium Designer 16 开发 https://github.com/RTOS-Developers/Geekinsect-Handware.git

1、项目背景

对于目前市面上的智能玩具功能单一,不具备扩展性,多以几个可选动作或循环几个动作为主,很古板单调,玩一段时间就疲倦乏味,这就是我们要开发这款可编程极客虫的原因,在玩的同时对提高编程思维能力有所帮助,并且非常适合用来开发儿童的创意性思维,极客虫也是一套极适合用来开发仿生机器人的硬件,携带的传感器完全可以实现趋光跟随避障和循迹等动作。

2、我想要做什么

极客虫是我们的第一款硬件产品既可以用来做编程练习又可以增加乐趣,我们已经尽可能的把体验做到极致。

1、灵活:两侧一对空心杯电机提供整只虫子的动力,极其灵活,可以实现原地旋转和任意方向爬行。

2 小巧:整体尺寸仅为3.9cm6.2cm2cm,大概只有两个多硬币大小,放置在大小刚刚好的碳化竹收藏盒内,刚好合适,方便随身携带。

3、方便:固件更新、应用下载、调试、充电等都通过尾部的micoUSB接口,内部固化的BOOT引导程序加上usb复位重启机制使之不可能死机。配套的固件开发环境支持F5一键下载固件,免去了使用stlink下载的繁琐,配套的拖拽式开发环境可以一键下载应用无需重启直接运行,无需任何设置。

4、集成化设计:所有传感器均集成到主板,保证了体积小高可靠性。

4、非常容易上手的集成拖拽式开发环境。

3、产品面向的用户群体

我们的用户群体:所有对仿生机器人、玩具开发有兴趣的人或以教学为目的的组织机构。

极客虫涉及到的软硬件都是我们自己研发的,没有使用任何开源组件:

极客虫运行的是我们自主开发的开源操作系统TRTOS,一直应用于工业设备开发,稳定性和灵活性很高,上手也非常容易。并已经开发出成熟的深度应用us级别解析器,多任务动态创建,配合拖拽式编程开发环境Geekinsect(IDE),就算你不会编程也能分分钟写出应用,Geekinsect(IDE)集成了固件和应用联网同步共享功能,联合MDK开发环境实现编译完成即刻共享。

4、产品的亮点、如何使用产品

我们的宗旨就是体验,质量,美感一个也不能少,始终把体验放在第一位,尽量保证在不需要说明书的前提下都能够直接使用。

用户在收到极客虫后登陆收纳盒上的网址,下载拖拽式开发环境并连接极客虫到电脑即可进行拖拽式开发,想了解更多或对其进行深层次的开发请加技术支持群或访问TRTOS主页。

5、项目的困难和风险

  1. 在进行电源设计的时候刚开始为了效果好用了DCDC,最后发现都没有手册上的描述的效果好,就后就换成了数字部分LDO供电其他部强供电。
  2. 由于考虑到拨动开关影响外观,用一个按钮做开关机和功能复用键,关机0功耗,在关机模式下usb能强制唤醒和复位,用来保证不可能成为板砖,为了这部分电路打了两次板调试了很久,最后终于获得满意的效果;
  3. 为了保证普通用户能够方便使用,单独开发了一套BOOT固件和BOOT升级APP可以嵌入到MDK中使用。

局域网通过模拟http协议共享文件

面对win的共享功能 时灵时不灵 很头疼,就做了一个局域网共享文件应用,实现的机理就是模拟web服务器共享本地文件,无任何依赖。

运行界面如下

QQ截图20191108151259.png

在局域网内其他电脑登陆 当前电脑IP地址 即可访问,如无法访问一般关闭防火墙即可,如果80端口被占用,重新命名文件Sardir[81].exe 再次运行即可改变端口到81

20191107164349.png

下载地址 包含代码

Shardir.zip

使用C# 开发

分享一个蓝牙BLE调试小程序LightBlue

界面如下,使用前先打开蓝牙,下滑启动扫描,点击连接就可以进行通信了

微信图片_20191106170323.jpg

安卓 IOS都可以使用,扫如下小程序码可以使用

微信图片_20191107120931.jpg
gh_b4c2afc67e18_258.jpg

欢迎提交BUG,或加入一起开发

https://git.weixin.qq.com/tongjinlv/airauto.git

使用前需要把"appid": "wx366ce055828d4046",改成你自己的

{
    "description": "项目配置文件。",
    "setting": {
        "urlCheck": true,
        "es6": true,
        "postcss": true,
        "minified": true,
        "newFeature": true
    },
    "compileType": "miniprogram",
    "libVersion": "2.8.2",
    "appid": "wx366ce055828d4046",
    "projectname": "lightblue",
    "simulatorType": "wechat",
    "simulatorPluginLibVersion": {},
    "condition": {
        "search": {
            "current": -1,
            "list": []
        },
        "conversation": {
            "current": -1,
            "list": []
        },
        "game": {
            "currentL": -1,
            "list": []
        },
        "miniprogram": {
            "current": -1,
            "list": []
        }
    }
}

无极论-宇宙大到无穷粒子小到无穷

宇宙的结构对大家来说并不陌生,可有问,银河系外是什么?大家都会说,还是宇宙,那么宇宙之外呢?对于这点本人有一些关点,或许证据不足,但希望能获到抛砖引玉的作用。以下就是本人的观点:
宇宙中有各种物质团(一些物质组合在一起的团体例如:地球、面包、电子等)而这些物质团只是在同等级观测的情况下辨别出该物质团的而称呼的。
宇宙的结构对大家来说并不陌生,可有问,银河系外是什么?大家都会说,还是宇宙,那么宇宙无极论
68396762x97851013775b.jpg
之外呢?对于这点本人有一些观点,或许证据不足,但希望能起到抛砖引玉的作用。以下就是本人的观点:
宇宙中有各种物质团(一些物质组合在一起的团体例如:地球、面包、电子等)而这些物质团只是在同等级观测的情况下辨别出该物质团的而称呼的(例如:一个苹果,我们用同一等级眼睛观测,它就是一个苹果,如果用显微镜看,那么它就是一堆细胞结构,但如果用比显微境小一个甚至多个观测级别去观测,那样会获得一个什么样的观测结果呢?同理我们也可用比观测太阳系级别大一个或多个级别的观测级去观测宇宙以及宇宙的属体(A属于B的一部分,就称为B是A的属体)就这样用一个非常大或非常小的观测级去观测对应物质团,那么又将会获得什么样的观测结果呢?对于这这一点任何一个物质团是可以再分的,也就是说没有最大或最小的观测级,目前人们还不知道宇宙之外是什么,那是因为现在的科学技术达不到。技术达不到是作的猜想当技术达到时更会加深猜想的准确性。个人猜想是,地球和原子只是不同观测级别的物质团,而地球与太阳的关系可以认为相同于原子核与电子的关系,同理可推出人们现在定义的宇宙只不过是某个物质团的组成部分,结论:任何一切实体都是一个属体,都可再分出多个甚至无数个物质团出来,这就是一种无极小(大)理论
【大概十年前发表在新浪博客上的,突然翻出来 贴过来】