2019年11月

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 云便签 API

地址 http://dm.trtos.com/

JSON 操作 DataMark 数据项

地址: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"}]

上传背景图代码 可用于监控
微信截图_20200703145710.png

#!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

修改数据标签 指定选项内容
这种方式比较简单 直接通过浏览器访问方式操作
微信截图_20200703152045.png
eg:设置名和值 http://dm.trtos.com/web/datamark/update.php?id=5oOeooHz&index=149717&name=使用率&value=99%
eg:设置名 http://dm.trtos.com/web/datamark/update.php?id=5oOeooHz&index=149717&name=使用率
eg:获取名和值 http://dm.trtos.com/web/datamark/update.php?id=5oOeooHz&index=149717
下例 是使用python 上传 ip地址

import requests
import datetime
import socket
def get_host_ip():
    """
    查询本机ip地址
    :return: ip
    """
    try:
        s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        s.connect(('8.8.8.8', 80))
        ip = s.getsockname()[0]
    finally:
        s.close()
    return ip

hostname = socket.gethostname()
ip = socket.gethostbyname(hostname)
ip="0.0.0.0"
ip=get_host_ip()
date=datetime.datetime.now()
response = requests.get('http://dm.trtos.com/web/datamark/update.php?id=5oOeooHz&index=149717&name=树莓派IP&value='+ip+":"+str(date))
print(response.text)


共享变量

设置值 http://www.trtos.com/php/value.php?name=my_value&value=123456
读取值 http://www.trtos.com/php/value.php?name=my_value

极客虫

15年的一个众筹项目,失败了。

https://github.com/tongjinlv/TRTOS.git
_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
GeekInsect(IDE).zip

24058711_1139850856152505_7019318682367256450_n.jpg

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中使用。

粮食战争早已开始,我们却没有能发芽的种子(震惊)

中国正在成为全球第一粮食进口大国

QQ截图20191108100005.png
粮食是影响国家安全、政治稳定、经济发展和社会和谐的重要战略物资;是进行政治经济军事攻防策略的可怕武器!
可以说谁垄断粮食市场,谁就能掌控世界政治经济主导权。
换言之,尽管中国已经拥有强大的工业制造业,但农业依然落后,既不是农业大国,也不是农业强国。
美国著名外交家基辛格曾经说过:“如果你控制了石油,你就控制了所有的国家;如果你控制了粮食,你就控制了所有的人。”
中国经济的头等大事是确保国家粮食安全。为什么中国粮食产量在一百年当中最长的一个连续丰年周期之后,中国府库盈满,完全没有饥馑之忧的时候,中国还会把国家“粮食安全”放在历年中国经济的头等大事的位置上?
数据显示,随着中国人口增长和消费提升,粮食出现巨大缺口。2017年中国粮食进口1亿3千万吨,大豆和稻米进口量为世界第一。2002年至今,中国的粮食进口量增长了800%。中国已成为全球第一大粮食进口国。
QQ截图20191108100044.png

中国的粮食缺口在不断加大。

在过去三年中,玉米、小麦和大米的进口量都在翻倍增长。据农业部预测,到2020年,中国的粮食产量将上升到5.54亿吨。缺口将加大到1亿吨以上。这表明中国既不是农业生产的大国,也不是农业生产的强国。中国正在成为农产品的纯进口国。

与此同时,由于工业化和城市化的影响,中国的耕地面积在以每年40万公顷的速度减少。虽然中国不甘心沦为粮食纯进口国,但农业部官员认为,到21世纪第二个十年结束的时候,很可能会出现这种局面。
中国过去一直努力要把粮食进口控制在5%以下,现在看来,没能做到。政府转而加大了对国际市场的依赖度。业内认为,农产品也会像石油一样出现问题,成为农产品的纯进口国。中国将不惜一切代价,保证粮食供应的安全。
根据《经济学人》智库发布的《2013年世界粮食安全指数报告》,西方国家占领了全球粮食安全系数排行榜第一梯队,中国则位列第42位,大大领先于中国的,包括粮食严重依赖进口的日本(18位)和韩国(24位)。如今,中国的双脚已不可避免地踏上了海外粮食进口的疆土。
QQ截图20191108100159.png

粮食战争:这样的警告能不能让中国猛省?

多年以来,中国的粮食基本上能自给自足,粮食进出口大体相抵。直到前几年,中国还只是进口很少量的优质大米和少量的小麦,几乎不进口玉米,坚持自给自足。但是,这种现象正在发生转变,中国已经成为世界上最大的大豆进口国,现在又开始把玉米、小麦、大麦和大米等谷物,纳入其大宗进口产品名单。
对于中国来说,即使中国仅进口5%的玉米,那也将相当于全球玉米交易的1/3或者将近一半。影响竟大到如此程度。早在30多年前,开始进入高速经济增长阶段时,中国就一直面临一种可怕的预言式警告:中国对粮食日益增长的需求,可能导致全世界的粮食短缺。
不知道这一切能不能让中国猛省?尽管中国已经拥有了强大而现代的工业,相对较为发达的科学技术水平,但农业依然弱小而落后,弱小而落后的不是中国的农业科技,而是中国的土地制度。
从这个意义上说,中国的现代化强国是一个跛足的现代化强国,如果没有强大的农业,中国始终在用一条腿在现代化跑道上蹦跶的国家。
QQ截图20191108100224.png

如果我们仍在农业的改革开放上谨小慎微,小修小补,保守如斯,如果我们始终视中国的土地制度是中国改革开放的雷区,那么中国的粮食自给率便会不断下行,中国的农业便会依旧弱小。面对这样的现状,能不能让中国猛省?能不能让中国在土地制度的改革开放上,有所作为?我们在等待答案。

粮食战争早已开始,我们手里却没有能发芽的种子
一切不能自留种子的农业模式,都没有存在的价值。
2018年5月27日下午,我们去郊外的乡村徒步,在某山的深处,人迹罕至的地方,遇到一位姓曾的74岁的农民老伯。我们指着大爷屋门前的两分秧田,问,这个秧苗是什么品种,是自己留种子的吗?
大爷说,秧田种子是买的,不是自己留的。不能自己留种,必须每年去买牠们的,种子要50元一斤。自己留种则没有收成。水稻不能自己留种,玉米也不能自己留种,蔬菜不能自己留种啦!听完我的心里像针扎一样的痛。
我们反转基因是怎么反的?天天在微信群里反,吵得天翻地覆。可是有几个人走到田野上去?那里才是决定转基因去留的战场,这些人是我们的父母,我们只需要一句话,就能定夺。可是我们一败涂地。当我们在微信群里吵得你死我活的时候,转基因悄悄占领了我们的土地,大山最深处,人迹罕至的地方,水稻不能留种,玉米不能留种,可见转基因已经渗透到什么地步。

春种一粒粟,秋收万颗子。这是千万年来的传承。为什么我们对于“不能留种”这么大的事情,如此麻木不仁?当农作物失去生育能力的时候,它是受到了什么样的伤害?遭受了什么样的折磨?我们问过吗?我们体恤过吗?
当农作物不能生育的时候,它还能让我们生育吗?中国人的生育能力急剧下降,为什么没有人去追问,没有人去考证,没有人去做权威的统计调查,并锁定原因?当我们对自己的生育能力都不关心的时候,关心其他的东西还有意义吗?老祖先从来不吃没有生育能力的食物。
任何一个物种,要与不断变化的环境相适应,就必须在其一生中不断学习,如何适应环境获取能量。物种在与环境相适应的过程中,会向生殖细胞写入信息,并且能够向下一代遗传。所以,骡子,杂交水稻,无籽西瓜,转基因,基因编辑等物种,因为生殖细胞不发育,不具备生育能力,因而也就失去了与环境的适应性。吃这样的食物,也就必然导致我们失去生育能力。
思考用它抹一抹,止痒通鼻,不打喷嚏!
QQ截图20191108100232.png

生命必须与环境相适应,才能获得能量。生育的本质,就是与不可逆的环境相适应。当作物的生殖细胞不存在,环境适应性没有了,我们的生育能力从哪里来?阉割的家禽家畜可以吃,因为阉割的家禽家畜,它的生殖细胞是发育的。这和转基因、基因编辑、杂交水稻、骡子、三倍体无籽西瓜不一样。后者是生殖细胞根本不能发育。

QQ截图20191108100239.png
骡子和杂交水稻一样,也具备所谓的“杂交优势”,骡子一岁就能长到妈妈5岁的体型,而且力气特别足。可这样的“杂交优势”是以生殖细胞不发育为代价的。这样的“杂交优势”有意义吗?我们不结婚,可以留下彩礼钱;不读书,可以省下学费钱。这样肯定更加富裕。可这样的“富裕”有意义吗?
老祖先从来不吃没有生育能力的食物。一切没有生育能力的食物都是不能吃的。过去人生活艰苦,大多数生了8个10个孩子基本活了下来。他们那一代人吃的什么?一年才有三餐半肉,生育能力那么旺盛。反观现在的人,三四十岁就生不了孩子。还有更年轻的,一结婚就生不了孩子。
生不了孩子的痛苦,估计会有越来越多的人去体会。
种子天生就应该可以生育,可以自己留种,应该分散在每一个农民的手上。越分散越安全。那才是无法被摧毁的农业模式。哪怕发生战争,哪怕政权被摧毁,但是人还可以活下去,文化可以传承。政权以后还可以重建,血脉可以生生不息。
但如果农作物不能留种,并且种子的控制权落入敌对势力的手中,他们根本不需要发动战争,只需要掐断种子的供应,一个夏天就会饿殍遍野。
QQ截图20191108100247.png
大山的深处,水稻不能留种,玉米不能留种!瓜果、蔬菜不能自己留种,很无奈啊。每年都要买。那么多种子哪里来的?种子公司的制种基地在哪里?是不是美国人控制??
种子公司根本就不应该存在。种子公司是1978年以后才存在的。种子公司的存在,压根就是一个阴谋,是对一个国家的算计。历朝历代都没有种子公司。自留种子是农民的天赋权力。我们需要赶快恢复可自留种子的农业。
一切不能自留种子的农业模式,都没有存在的价值。
种子能生育,人才能生育。种子安全,人才安全,国家才安全

局域网通过模拟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": []
        }
    }
}