Saturday, November 30, 2019

Air quality PM sensors comparison for arduino

Best accuracy sensor:
( note that it works under 70% humidity depending on what weather conditions you have where you life)


The Nova SDS011 - also recommenced by the https://luftdaten.info/ project


Price: 17$
Official website: http://www.inovafitness.com/en/a/chanpinzhongxin/95.html
Buy from aliexpress: http://s.click.aliexpress.com/e/Nz5SXZBE

Connections for code:
-connect pin TXD on SDS011 to pin 2 in section (Digital PWM) on arduino (it will act as RX on arduino)
-connect pin RXD on SDS011 to pin 3 in section (Digital PWM) on arduino (it will act as TX on arduino)
-5v and gnd - same

Arduino Code: - it will print both to a i2c lcd display and serial console

#include "LiquidCrystal_I2C.h"
#include "SoftwareSerial.h"
SoftwareSerial mySerial(2, 3); 

// Global Variables
static unsigned char buf[7], buffSDS[25];
unsigned int PM2_5,PM10=0;

LiquidCrystal_I2C lcd(0x27,20,4); 

void setup() {
  // put your setup code here, to run once:
  lcd.init();                      // initialize the lcd 
  lcd.backlight();
  lcd.clear();

  
  // Read SDS011 on Serial 
  mySerial.begin(9600);  // 
  mySerial.setTimeout(200);
  //mySerial.readBytesUntil(0xAB,buffSDS,20); // read serial until 0xAB Char received

  // Serial Monitor
  Serial.begin(115200);  


}

void loop() {
  // put your main code here, to run repeatedly:
  // Read SDS011
  mySerial.readBytesUntil(0xAB,buffSDS,20);

  // Serial monitor, print the HEX bytes received in buffSDS
//Serial.write(buffSDS,10);

for ( int8_t i=0; i<10 ; i=i+1 )
  {
  Serial.print( buffSDS[i],HEX);
  Serial.print(" ");

  }
Serial.println("");

  
PM2_5 = ((buffSDS[3]*256)+buffSDS[2])/10; // extract PM2.5 value
Serial.print("PM2.5: ");
Serial.println(PM2_5);

lcd.setCursor(0,0);
lcd.print("PM2.5: ");
lcd.print(PM2_5);


PM10 = ((buffSDS[5]*256)+buffSDS[4])/10; // extract PM10 value
Serial.print("PM10: ");
Serial.println(PM10);
lcd.print((char)228);
lcd.print("g/m3");

lcd.setCursor(0,1);
lcd.print("PM10: ");
lcd.print(PM10);
lcd.print((char)228);
lcd.print("g/m3");


delay(500);
}

The sensor has 8000 hours of usage and outputs data every second. In order to use it for longer time you have to use the sleep and wake up vis serial.

Use this library : https://github.com/ricki-z/SDS011
It also has support for hardware serial connection for the esp32 which does not have software serial.

Check example in the library.


Plantower
Official website: http://www.plantower.com/en/content/?108.html

https://airly.eu/en/ - a project by Philips in witch they use the Plantower PMS5003
You can see the sensor and the insides of their sensor here:
https://www.youtube.com/watch?v=FREADCgdq2M

Plantower PMS5003

Buy the Plantower PMS5003 from aliexpress: http://s.click.aliexpress.com/e/tb2qOLXK
Price: 12-13$


Popular Pm monitors on the market and what sensors they use:

Laser Egg - uses Plantower PMS3003


AirVisual Node : proprietary PM sensorSenseAir S8 - for CO2




Additional resources:

http://aqicn.org/sensor/

https://www.mysensors.org/build/dust

Wednesday, November 20, 2019

Program Arduino Mini Pro 3.3/5V with Arduino Uno



Connect RST pin to GND on Arduino Uno - to bypass the UNO's bootloader

Connect 5V or 3.3V to VCC on Mini
Connect GND to GND on Mini
Connect TX to TX
Connect RX to RX

Select in the Arduino IDE -> Tools -> Board -> Arduino Pro or Pro Mini
Select in the Arduino IDE -> Tools -> Board -> Processor -> 3.3V 8Mhz or 5V 16Mhz
Select in the Arduino IDE -> Tools -> Port

Select File->Examples ->Basics->Blink and press Upload button
When uploading appears in the Arduino IDE press the RESET button on the mini.
When you press the RESET button you should see the rx,tx lights on the uno start to blink fast for a short time - the sketch it is being uploaded.

The led on the Mini Pro should start blinking at one second.
DONE. ENJOY.

Tuesday, November 19, 2019

Bosch BME280 sensor with arduino for temp humidity and pressure


Buy sensor for here: http://s.click.aliexpress.com/e/KY9P6WRm



Arduino Libraries Required:
Adafruit_Sensor.h
Adafruit_BME280.h

Go to Tools -> Manage Libraries :
search for bme280 and select the adafruit one, and install all.

Wire connections:
- 5V and GND to coresponding
- the marked ones SDA, SCL on the end of the digital pins
- or the analog pins A4 (SDA) A5 (SCL)

Arduino Code:

#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>
Adafruit_BME280 bme; // I2C
void setup()
{
    bool status;
    status = bme.begin();
}
void loop() {
float temp = bme.readTemperature();   // celsius
  float humidity = bme.readHumidity();  // read humidity
  float altitude = bme.readAltitude(1013.25);// read altitude  SEA LEVEL PRESSURE_HPA (1013.25)
  float pressure = bme.readPressure() / 100.0F; // read pressure
delay(5000);

}

Display 2004A generic 4 line 20 characters display with PCF8574T expander



4 line display with PCF8574T -  I/O expander for I2C-bus -  two-wire bidirectional (serial clock (SCL), serial data (SDA))

Arduino Library required: LiquidCrystal_I2C.h
Put the files in Documents -> Arduino -> libraries

Tip: also buy a case for the display, it stands up and its easy to read: http://s.click.aliexpress.com/e/lqzxEDeo

Wire connections:
- 5V and GND to corresponding
- the marked ones SDA, SCL on the end of the digital pins
- or the analog pins A4 (SDA) A5 (SCL)

Arduino Code:

#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,20,4);  // set the LCD address to 0x27
void setup()
{
  lcd.init();                      // initialize the lcd
  lcd.backlight();
  lcd.clear();
 lcd.setCursor (0,3);   // first parameter its the line 0,1,2,3 - second character position 0-20
 lcd.print("Hello World");
}
void loop() {
}
 If you have more devices on the I2C buss you can change the address by soldering the A0, A1 OR A2 connection on the PCF8574T  board.


To display a special character : lcd.print((char)228);

Contract and Backlight
- In case you don't see nothing on the screen, use a screwdriver and adjust the blue potentiometer on the back.
- The backlight on/off is controlled by the jumper
- jumper in place: backlight on
- jumper removed: backlight off

The backlight can also be controlled with software.
Use  lcd.backlight(); to turn it on and lcd.noBacklight(); to turn it off.




Tuesday, July 17, 2018

Ergonomic bicycle saddle


Brooks leather saddles with springs - comfortable firm saddle - or buy a cheap Chinese copy.





Tuesday, May 8, 2018

Ghid calatorie


Verifica daca ai nevoie de viza. In zona EU nu este nevoie.
Verifica ce moneda se foloseste local. Instaleaza-ti revolut.
Casele de schimb valutar din aeroporturi ofera un curs prost. Scoate cash de la ATM.
Verifica avertizarile MAEhttps://www.mae.ro/travel-conditions/3703
Adaptor prizahttps://www.worldstandards.eu/electricity/plugs-and-sockets/
Companii ieftine:
Vezi conexiuni:
  • SEATGURU - vezi schita avionului cu locurile inainte sa-ti faci booking online si sa-ti alegi locul.
    For ex. check this Boeing 737 from KLM : KLM_Boeing_737-800
Cabin Max Metz Backpack
Alege un rucsac care se deschide ca un bagaj pe laterala.
NU mai stai sa-ti recuperezi bagajul si salvezi mult timp, in special daca ai legaturi unde poti pierde urmatorul zbor.
Cabin Max Metz 44L


By bus :
  • Flixbus – check their Route Map – its super cool for finding connections between cities

    Let me give you my itinerary i did :
    I left Paris at 22 and arrived in Munich at 10 – visited Munich until 18 and took a bus to Prague where I arrived at 23 and when to a hostel – as Prague its 2-3 times cheaper compared to Munich).
    I stayed two nights in Prague then did another drive through Vienna and went to Budapest where again I stayed a few nights ( even cheaper rent for a hostel bed ).
By train :
  • Check InterRail – package train travel around Europe
Click this link and get a $15 Reward










For stays:
* booking.com


For stays check reviews first at:
* Google reviews



Local transportation and airport transfer

Verifica costul transportului de la aeroporturile mici pana in oras.
Zborurile lowcost aterizeaza departe de oras si costul/disntanta pot sa nu merite.
http://www.terravision.eu - low cost airport trasfers


Check Uber prices as well, especially if you have a night flight in some places its cheaper then taxi in others is more expensive.
I got in Paris a shared Uber for 6.5 euro and public transport would have costed me 4 euros but it was more hassle and I was tired so the Uber was well worth the extra 2.5 euros.

Taxi: foloseste o aplicatie sau comanda din aeroport. Intreaba pretul altfel.

Tip: ask for a free metro/transport network at your hotel/hostel, don't spend 10 euro on one.

USEFUL TRAVEL SITES:




Thursday, March 29, 2018

How to get amazon checks safe

If you are an amazon affiliate and are about to receive your first check you might be worried about how safe can you receive it.

The easiest fix for this is using Payoneer, it's an payment system similar to Paypal, and it opens an us dollars account for you.
You also get the benefit of payments as small as 10$ from amazon.

1. First step open for free a Payoneer account. Use this link to register so you also get 25$ bonus after your receive payments.
Log in to your account and go to Receive - Global Payment Service. Make sure USD is selected from the left as in the image below.

2.1. Go to your amazon affiliate account and log in.
Go to Account Settings - Change Payment Method. See the image below.

2.2. Chose Pay me by direct deposit (United States Based Associates Only)
Fill in the data from the page on Payoneer opened earlier. See picture above.
3. Get at least 50$ in payments from Amazon then go and withdraw your earning to your local non-US bank account.



Monday, January 1, 2018

Understanding Bitcoin

Bitcoin: Is a cash system where the ledger with transactions is hold by a Peer-to-Peer public network, where anybody can check transactions.

In order to validate transactions miners have to do some work - solve some mathematical problems, and hence use some power and resources. The more people participating the more difficult the mathematical problems and the higher the security, as it requires huge amounts of processing power.
It becomes unprofitable for one individual to spend that much money on the hardware and power need it to run it vs the value gained.

Miners assemble all new transactions appearing into large bundles called blocks, which collectively constitute an authoritative record of all transactions ever made, the blockchain.
In order to make sure there is only one blockchain blocks are really hard to produce.
So instead of just being able to make blocks at will, miners have to produce a cryptographic hash of the block that meets certain criteria, and the only way to find one is to try computing many of them until you get lucky and find one that works. This process is referred to as hashing. The miner that successfully creates a block is rewarded with some freshly created bitcoins.
Every few days, the difficulty of the criteria for the hash is adjusted based on how frequently blocks are appearing, so more competition between miners equals more work needed to find a block. This network difficulty, so called because it is the same for all miners, can be quantified by a number.

Mining pools: by sharing their processing power, miners can find blocks much faster. Pool users earn shares by submitting valid proofs of work, and are then rewarded according to the amount of work they contributed to solving a block.

Resources:
Bitcoin core: https://bitcoin.org
The blockchain: https://blockchain.info/
To find bitcoin ATMs around the world: https://coinatmradar.com/

Best Bitcoin Exchange: https://www.binance.com/en


https://bitcoin.org/en/full-node#what-is-a-full-node

An episode on the inside man where Morgan Spurlock buys bitcoins and tries to live one week by it  : https://vid.me/gjbm/morgan-makes-cents-out-of-bitcoin

A documentary released in 2014 The Rise and Rise of Bitcoin

How is the bitcoin fee calculated ?

The value of the fee its not related to value of transferred bitcoins but by the size of the transaction in bytes.
This is calculated by the number of in transaction for the wallet multiplied by something like 180 plus the number of out transactions for the wallet multiplied by something  like 34. So getting bitcoins paid adds more to the fee then paying with bitcoins.
Then the bytes values of the transaction get multiplied by a value called satoshis that its network dependent : how many transactions are happening and what fees people use.
Most apps have some default values where they will use a value so that you transaction will get into the next n-th block based on some settings you input or uses some default values.
You can check satoshisvalue here : https://bitcoinfees.21.co/

How much profit can you make mining ?
(Your power / network hash power)* Coins generated per day * Coin price
Say you have 1 THash miner
1.03.2018 for Bitcoin:
(1/23.500.000)*1800*11.000 $ =~ 0.85$ / day

Minimum bitcoin transation is : 5460 satoshi or 0,05460 mBTC.
This is the same amount as the minimum fee recommended.
1 BTC  = 1,000,000,00 satoshi

Why is there a minimum limit of transaction in bitcoin ?
This limit is not forced by the protocol but by a consensus between both bitcoin clients as well as miners in an effort to fight transaction spam


Altcoins
Altcoins are the alternative cryptocurrencies launched after the success of Bitcoin, as peer-to-peer digital currencies, that offer modifications in areas like transaction speed, privacy, proof-of-stake, DNS resolution and more,  in an attempt to imitate that success.

How to solo mine bitcoin with vga

Get BFGminer 4.10.6 ( this one works for sure, i'm not sure exactly in what version they removed some option).
Download link here: http://bfgminer.org/files/4.10.6/

Get bitcoin core install and wait to download the blockchain - requires ~190GB of storage space [on 14.07.2018].
When you install the core chose to save the blockchain in other location then by default on C, for easier access. Put it in D:\Bitcoin if you have another partition or in C:\Bitcoin.
There you will have your configuration file: bitcoin.conf.
Note that depending on you internet connection it might take couple of days to fully download and sync to the network.
You cannot mine until the sync is completed.
Download link here: https://bitcoin.org/en/download

Now go and edit the bitcoin.conf file. If it does not exist just create one with notepad.

server=1
rpcuser=whaterver-user-you-like
rpcpassword=any-password
rpcport=8332
rpcallowip=127.0.0.1
disablewallet=1

Save and restart the bitcoin app.

Go to the folder where you unrared your bfgminer.
Create a mine.bat file to save the command so you don't have to type it every time you run it.

bfgminer -S opencl:auto -o http://127.0.0.1:8332 -u whaterver-user-you-like -p any-password --set-device intensity=9 --coinbase-addr 18Mzayw6yHve2zn1ZQkxKYnM9TcvfEF7Y2
pause

Replace the username and password with the ones you set in bitcoin core.
Go to https://www.blockchain.com/wallet and create a bitcoin wallet.
Replace the --conbase-addr with your new created wallet.
To get the address press the receive bitcoins button and you will get your address.

Run the file and I wish you good luck.
If you are lucky and win the bitcoin lottery don't forget to show your appreciation :)
My bitcoin address is: 18Mzayw6yHve2zn1ZQkxKYnM9TcvfEF7Y2

Friday, July 21, 2017

How to buy from china electronics cheap online


  • Aliexpress - cheapest, only card payment 
  • Gearbest -  best for buying phones, camera and laptops and accesories as well, also offers Paypal payments 
  • Banggood - a bit more expensive but offers Paypal payments and has good customer service
Standard shipping takes from 2 weeks to 2 months.
When buying more expensive stuff it is worth paying for a tracking number.
For cheap 1-5$ products tracking cost its almost as much as the product.

On aliexpress you can get international tracking even with the no cost shipping method.

Monday, July 3, 2017

Nikon Coolpix P900 full spectrum / infrared camera modification tutorial



You can see in the video above how to remove the filter inside the camera for increased IR spotting.
This is the camera with an external IR filter :



K&F CONCEPT DIGITAL IR 720 67mm JAPAN OPTICS
COOLPIX P900
Coolpix 900 with IR Filter




















Here are pictures taken with the camera :
Auto mode - no ir filter 
Auto mode - external ir filter 720nm



Enhanced monochrome - no IR filter

Enhanced monochrome - external IR filter 720nm
Ir filter 720nm cuts the red colors so its not the same as the original ir filter in the camera.
Monocrome mode with inside camera filter

Monocrome mode with inside camera filter removed


Friday, March 10, 2017

Apache mod_rewrite module tutorial

<IfModule mod_rewrite.c>
RewriteEngine On # Turn on the rewriting engine

</IfModule>


Rewrite rules can be preceded by one or more rewrite conditions.
Eg :
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /wordpress/index.php [L]


. (any character)
* (zero of more of the preceding)
+ (one or more of the preceding)
{} (minimum to maximum quantifier)
? (ungreedy modifier)
! (at start of string means "negative pattern")
^ (start of string, or "negative" if at the start of a range)
$ (end of string)
[] (match any of contents)
- (range if used between square brackets)
() (group, backreferenced group)
| (alternative, or)
\ (the escape character itself)

Flags :

C (chained with next rule)
CO=cookie (set specified cookie)
E=var:value (set environment variable var to value)
F (forbidden - sends a 403 header to the user)
G (gone - no longer exists)
H=handler (set handler)
L (last - stop processing rules)
N (next - continue processing rules)
NC (case insensitive)
NE (do not escape special URL characters in output)
NS (ignore this rule if the request is a subrequest)
P (proxy - i.e., apache should grab the remote content specified in the substitution section and return it)
PT (pass through - use when processing URLs with additional handlers, e.g., mod_alias)
R (temporary redirect to new URL)
R=301 (permanent redirect to new URL)
QSA (append query string from request to substituted URL)
S=x (skip next x rules)
T=mime-type (force specified mime type)

To redirect all requests missing "www" (yes www):
RewriteCond %{HTTP_HOST} ^domain\.com [NC]
RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301]

Friday, November 25, 2016

Change rdp default port

If you have many computers at home or on a network and you have to connect to them remotelly using RDP you will have to change the default port and set a different one on every computer so you can then set the port forwarding rules on your wan router.

To change the default port you have to edit the registry.
Open regedit and navigate to :
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp\PortNumber

Change the port for ex to 3390 , 3391 etc and then set the port forward rules mapping the port to a fixed ip. You can either set the computers with fixed ip or map them in the dhcp server with ip & mac binding or Reserved IP Address.

You can use check open port to check if your port forwarding is working properlly and the rpd service is listening to the specified port.

Thursday, September 1, 2016

No user name in task manager windows xp

To solve this open services : services.msc or in control panel.
Find Terminal Services and activate it and set it to Automatic.


Enjoy!

Wednesday, July 27, 2016

The trust relationship between this workstation and the primary domain failed

You can get this message if you restore a virtual machine, or have a raid problem and restore a raid 1 mirror from a slightly older hdd. I got and offline member for two weeks without noticing and then the second hdd when bad so i could not boot anymore.
Reactivated the offline member and changed the bad hdd rebuild the raid and then you get the error message while trying to access the domain.

Also got this but making an image of a pc in the domain and restored it a few month later to a new pc, then could not add it to domain.

You can try to remove it from domain and add it back and it should work.
Or (you need at leas Power shell 3.0 or upgrade to it if not) then run:
Reset-ComputerMachinePassword