让python调用mongo读写速度加速10倍的方法

1.把mongo读写封装成api

2.在api初始化时保持数据库长链接;并且用线程每2分钟遍历一次所有的表并count一次

import sys import time import pymongo import json import log import traceback import threading //库名test,表名test_table server_list = ['test-mongos.all.serv:6365' for i in range(8)] conn_str = "mongodb://test:123456@" + ",".join(server_list) + "/test" print conn_str conn = pymongo.MongoClient(conn_str) test = conn.test def load_cache(){

阅读全文

小猪学arduino—使用GP2Y1010AU0F检测pm2.5空气质量

今天老婆不在家,申请的dueros和买的机器人零件都没到,儿子自己玩坦克玩的正hi,我也找点事干吧,从箱子里扒拉出一个GP2Y1010AU0F灰尘传感器,做个pm2.5检测吧。

GP2Y1010AU0F模块的检测原理:

传感器中心有个洞可以让空气自由流过,定向发射LED光,通过检测经过空气中灰尘折射过后的光线来判断灰尘的含量,跟激光的比成本较低。

硬件连线

传感器 -> Arduino
1白线Vled –> 5V (150ohm resistor)2
2蓝线 LED-GND –> GND3
3 绿线LED –> Digital pin 24
4 黄线S-GND –> GND5
5 黑线Vo –> Analog pin 06
6 红线Vcc –> 5V
示例没有接电容电阻,其中1、6红白线可以连一起后接5v;2、4蓝黄线连一起后接GND;3绿线接D2数字端口;5黑线接A0模拟端口。

检测结果:

今天下大雨空气太好,人工制造了点灰尘,这是灰尘被检测到散开的检测数据:

临时加了个警报灯,超过阈值就会亮起来,等esp板子到了就统一都传到server端显示。

程序代码

int measurePin = 0; // 引脚定义里的第5脚,黑色线接到A0 int pm25Pin = 2; // 引脚定义里的第3脚,白色线接到D2 int ledPin = 13; // led报警灯接到D13 int samplingTime = 280;//等待LED开启的时间是280μs int deltaTime = 40;//整个脉冲持续时间为320μs。因此,我们还需再等待40μs int sleepTime = 9680; float

阅读全文

小猪学arduino—欠儿子的坦克终于兑现了

最近公司事情比较多,有段时间没玩arduino了,这周末又拾起来了,打算把之前答应给儿子做的履带坦克兑现了。

在某宝上花几十大洋淘了个履带底盘,捣鼓了半天,先是用L298N控制2个DC3-6V电机时总是只有一个能转,后来用了1块9v方块电池做外接电源,终于两个都转了;然后把电机换成坦克的t130电机,又趴窝了,换成4块1.5v南孚,坦克在不坨东西的情况下能同时转,但是把数据线一拔,又趴窝了,确定是电压或电流不够的问题,试了1.5v南孚串联、9v方块电池、充电宝、手机锂电池,最后发现使用两节18650电池不但电压和电流够用,而且充满电能用好久,以后搞arduino用这种电池就行了,所以看到此文的人就不要在外接电池的问题上耽误时间了。

试验过程和连线图

写在另一篇l298n的文章里了:

小猪学arduino—使用L298N控制两个直流电机

效果图

下图是换了个底盘,儿子用一次性筷子和吸管做的炮管

坦克v1.0代码

#tank.ino #include <IRremote.h>//包含红外库 int infraredPin = 3;//红外线接收器端口 long INFRARED_PLAY = 0x00FFA857;//红外遥控器上的PLAY键指令 long INFRARED_LEFT = 0x00FFE01F;//红外遥控器上的左键指令 long INFRARED_RIGHT = 0x00FF906F;//红外遥控器上的右键指令 long INFRARED_UP = 0x00FF02FD;//红外遥控器上的上键指令 long

阅读全文

小猪学arduino—使用L298N控制两个直流电机

简介

L298N驱动模块,可以驱动2个直流电机,可分别实现正转,反转功能.

准备材料

Arduino Uno       * 1
L298N驱动模块   * 1
直流电机               * 2
18650电池            * 2
跳线                      若干

连线方法

注意:L298N必须外接6-12v电压及一定电流的外接电池,在这里被坑了好久,用普通的6v+电池外接时,不是只转一个轮子就是在拔掉电脑数据线后完全不转了,最后把外接电源换成两节18650电池后解决

程序代码

选用IO口为5,6,9,10,这四个均支持PWM,可以通过占空比代码实现控制转动速度的快慢

//LingShun Lab int input1 = 5; // 定义uno的pin 5 向 input1 输出 int input2 = 6; // 定义uno的pin 6 向 input2 输出 int input3 = 9; // 定义uno的pin 9 向 input3 输出 int input4 = 10; // 定义uno的pin 10 向 input4 输出 void setup() { // Serial.begin (9600); //初始化各IO,模式为OUTPUT 输出模式

阅读全文