Pokemon Go – новата вълна от зомби апокалипсиса

След началото на поредната интернет мания, а именно – Pokemon Go, някои хора зададоха въпроса – как стана така, че изведнъж, от нищото една игра стана толкова масивен хит, та дори измести думата „порно“ в гугъл, която е фаворит за всички времена. Как е възможно изобщо това и възможно ли е наистина?

Отговорите на тези и други въпроси се намират сравнително лесно с малко търсене, което ще ви спестя с този кратък материал 🙂

Но първо, ето и някои бисери от общите условия на играта 🙂

„We may disclose any information about you (or your authorized child) that is in our possession or control to government or law enforcement officials or private parties.“

https://www.nianticlabs.com/privacy/pokemongo/en

Т.е. създателите могат да предоставят всички ваши лични данни (а те са огромни като обем) на всеки и всичко, без оглед на обстоятелства или законово задължение. Ще попитате какво общо има това с популярността на играта ? Всъщност е (сравнително) просто. Някои наричат играта културен феномен, според мен обаче няма никакъв феномен, освен ако ЦРУ не се приеме за феномен 🙂
Най-кратко казано Pokemon Go е създадена от Niantic Labs. Тази компания е създадена от John Hanke, който е получавал в миналото финансиране от ЦРУ (чрез компанията In-Q-Tel на ЦРУ за рискови капитали) за основната си компания Keyhole, Inc. От същата тази компания ( Keyhole, Inc.) произлиза Google Maps, например 🙂 Niantic Labs пък е финансирана и от Google. Ако те и ЦРУ не могат да направят хит за един ден от всичко, то кой друг?
Всичко това прави изсипването на личните ви данни до последната капка в джоба на NSA, CIA и куп други организации на държавния департамент на САЩ приятна и забавна игра 🙂
Eстествено не е достатъчно да знаят кога къде сте били, вие им предоставяте пълна информация в снимки, които снимки също съдържат GPS локация 🙂 В първите версии на играта още при регистрацията се искаха повече лични данни, отколкото попълваш при издаването на лична карта 🙂 Във версията за Андроид например „по погрешка“ играта искаше пълен достъп до Google акаунта, т.е. да получи на практика цялата информация която е на телефона Ви 🙂
Стигна се до там, че в американското правителство се разпространи документ до своите служители със поне 20 точки какво да не се прави, за да не получи играта достъп до личните им данни 🙂
https://twitter.com/RidT/status/754298406034702336/photo/1

Някои от точките са:
Направете си нов gmail имейл специално за играта;
Не използвайте истинското си или подобно на истинското си име, не използвайте псевдоними от други игри, които могат да бъдат свързани с вас;
Не снимайте табели, улични знаци, регистрационни номера;
Внимавайте къде играете заради GPS данните, които се предават и какво ли още не 🙂

Но няма проблем, важното е всички да се радват на поредния „феномен“ и ако допреди два месеца са се смеели на тези, които все още играят покемон, сега вече се смеят на тези, които не играят покемон…

До вчера повечето хора може би са се притеснявали кой получава личните им данни, а днес вече с радост ги предоставят неизвестно на кого, неизвестно защо…

Едно кратко уточнение: Основната цел на това събиране на лични данни са гражданите на САЩ и ние сме сравнително защитени в България поради осезаемата си… (надявам се) незначителност в тези планове. Проблема обаче е принципен и поражда доста въпроси за бъдещето на хората в един все по-сбъркан свят, все по-отдалечаващ се от реалността.

Източници:
http://www.ifsecglobal.com/pokemon-go-security-risks-flagged-by-the-cia-middle-eastern-states-and-data-security-experts/
http://www.activistpost.com/2016/07/the-cias-pokemon-go-app-is-doing-what-the-patriot-act-cant.html

Поредната измама на КАТ – „новите“ закони и проверки за затъмнени стъкла, шумни гърнета и още

КАТ

Една фиктивна институция, каквито са повечето в България

България явно вече започва да се превръща в една джунгла, а хората – в маймуни. Никой не мисли, никой не се интересува, никой не помни какво е било вчера.

Поредната шумна измама са така наречените нови закони за шумни гърнета и затъмнени стъкла.
Странно защо поне един журналист не се хвана да обясни кое точно е новото ? Кои стъкла са забранени за затъмняване, колко шумни трябва да са изпускателните системи и т.н. Ако се бяха разровили, щяха да видят, че няма нищо ново – от 14 години предните и челното стъкло са забранени за затъмняване, за това се спира от движение, но повечето полицаи просто ги мързи да налагат закона.

Чл. 105. (Изм. – ДВ, бр. 43 от 2002 г., в сила от 26.04.2002 г.) (1) Забранява се ограничаване на видимостта през челното стъкло и през страничните стъкла на автомобила, осигуряващи видимостта на водача към пътя, както и намаляване на прозрачността им.
(2) Ограничаване на видимостта през стъклата на задните врати на леките автомобили, както и намаляване на прозрачността им, се допуска само при наличие на огледала за виждане назад от двете страни на автомобила.

Същото важи и за шумните гърнета – замерва се със шумомер, ако не отговаря – спира се от движение автомобила – отново стар закон от преди 6 години.

Чл. 171. (Доп. – ДВ, бр. 43 от 2002 г., в сила от 26.04.2002 г., изм. – ДВ, бр. 51 от 2007 г.) За осигуряване на безопасността на движението по пътищата и за преустановяване на административните нарушения се прилагат следните принудителни административни мерки:

2. (изм. – ДВ, бр. 54 от 2010 г.) временно спиране от движение на пътно превозно средство:
а) (изм. – ДВ, бр. 54 от 2010 г.) до отстраняване на неизправността, когато пътното превозно средство е технически неизправно, включително и когато съдържанието на вредни вещества в изгорелите газове или шумът са над установените норми или конструкцията му е изменена без съответното разрешение;

Т.е. от над 6 години и за двете нарушения на базата на чл. 171, ал. 2, т. А е следвало автомобилите да се спират от движение, а КАТ масово не са го правили поради неясни причини.

Така обаче нямаме гръмки заглавия, няма драма, няма потрес. Заглавие „КАТ отново отчитат дейност“ някак не привлича толкова вниманието, понеже това дори не е новина. Пък и ако се напише от голяма медия, изведнъж се появяват проблеми за авторите на такъв материал.
Реално КАТ се опитват да представят стари закони като нови, за да не им се търси сметка защо досега не са налагали спазване на закона и не са спирали масово от движение технически неизправни автомобили. Това, че не им се е занимавало и са глобявали 20лв къде под масата, къде над масата някак остава извън фокуса на темата.
Вместо да кажат нещата такива каквито са, а именно, че това е едно голямо отчитане на дейност и демонстрация на безсилие, журналистите представят тези проверки като видите ли, нещо ново. Борба с нарушителите на пътя, намаляване на жертвите и т.н. Особено шумните гърнета като изключим, че пречат и дразнят, са и основна причина за ПТП-та. Същото важи и за затъмнените предни стъкла, каквито масово полицаи имат на личните си автомобили. Преборим ли се с тези два проблема, със сигурност ще приключи т.нар. война на пътищата! Това, че масово се спират коли и след едно-две телефонни обаждания се пускат не е никакъв проблем – за това не се говори.

Естествено нищо не става случайно – целия този шум се дигна след изнесен доклад, че България и Румъния имат най-много жертви от ПТП в целия ЕС. Тази новина веднага се смете под килима и започна да се бучи как КАТ прилага нови мерки (като прилага закони от преди 14 години) и как изведнъж, рязко започват да въвеждат ред по пътищата (след дългогодишна почивка).

iNews: ЕК: България и Румъния водят по жертви в пътни катастрофи в ЕС
DarkNews: Най-много катастрофи в България и Румъния – 71 европейци загиват всеки ден
Dir: България и Румъния първи по жертви на катастрофи в ЕС

Всички новини са публикувани около 31 Март, като след това темата спря да се коментира и започна масирано облъчване с „новите“ мерки на КАТ, а именно – борба с шумни гърнета и тъмни стъкла! Доста интересно как точно са установили тях като най-сериозната причина за жертвите на пътя ? Дали някога ще видим реални действия от тази нереална институция различни от отчитане на дейност покрай външни доклади за България ?

 

Наръчник за разпознаване на clickbait статии

Abstract background on risk business concept, metaphor to small fish being in danger among many hooks.

Замислете се какво четете и с какво си губите времето

От доста време мислех, че clickbait се разпознава от всеки и то от километри . Оказва се, че съм бил в голяма грешка.

Какво е clickbait ? Това са измислени статии маскирани обикновено като новини, които имат само една цел – да генерират посещения за дадения сайт.

Ето основните черти:
1. Драматично заглавие, обикновено не особено ясно. Например „едикой си шокира света“, „няма да повярвате какво направи този човек“ и прочие заглавия на материали, които нито ще ви шокират, нищо ще ви интересуват като цяло, ако не бяха гръмките заглавия.
2. източника е сайт, който чувате за първи път, или новините от него обикновено съдържат „шок“, „нечувано“, „разтърси“ и т.н.
3. Новината ако все пак се разбира от заглавието, е толкова невероятна, че за малко да се излъжете и да я кликнете.

Научете се да ги разпознавате и:
1. Няма да се излагате всеки ден като малоумници пред приятели и познати, споделяйки ги в социалните медии;
2. Няма да генерирате печалба на тарикати, които разчитат на малоумници да им споделят измислиците.

Image: jesadaphorn/Getty Images

Цената на новите винетки – как едната ръка измива другата

vinetkiСлед намеците от лятото за поскъпване на винетките, вече се говори открито за драстично покачване на цените – в пъти. Най-вероятният вариант изглежда е 67лв -> 145лв – над 2 пъти увеличение за годишната винетка. Останалите винетки няма да коментирам, но увеличенията са пропорционални.

Какви са аргументите ? – От 8 години не са дигани цените, а парите не стигали. Защо чак сега след 8 години се сетиха, че парите не стигат ? Дали е правилно изведнъж да се наваксва ? А дали наистина парите не стигат заради ниските винетки, или имат и други разходи ?
Веднага си спомних една статия на в. Капитал, която разглеждаше стотиците милиони загуби за бюджета ни заради пътищата, които се строят с европари.

Понеже строителството на пътища с европари си е цяла престъпна схема, както знаете винаги печелят определени фирми, които са дали най-ниска оферта. Качеството не се гледа, а задължително цената. Тези фирми никога не са случайни, цените им също.
ЕС плащат само средствата, които са договорени първоначално в офертата и нито Евро повече. Оказва се обаче, че масово се налагат „непредвидени“ разходи – укрепване на участъци, изграждането на допълнителни съоръжения по пътя и т.н. Колкото и да е странно, държавата ще покрие тези разходи, въпреки, че няма никакво законово задължение да го направи, нито ЕС ще дадат допълнително пари. Реално вината е на строителя, защото не е проучил внимателно и не е заложил буфер за такива непредвидени разходи. Естествено строителя е съвсем наясно с крайната цена от самото начало, но дава по-ниска оферта, за да спечели поръчката. След това държавата му възстановява допълнително парите, които са извън предвиденото. Крайния резултат е стотици милиони, които ние ще платим от своя джоб, защото определена фирма е трябвало да спечели поръчката.
Сега обаче идва реално момента да се намерят от някъде пари да се запълни дупката и какво виждаме ? Охооо, ама ние не сме дигали скоро винетките…. cha-ching!

Как да си направим собствена метео станция – част 3

В част 3 от проекта домашна метео станция вече стигаме до най-интересната (за мен) част – свързването на всички сензори и извличане на данните от тях.

Първата стъпка ще е добавянето на ethernet shield-a към основната платка – просто го щракваме върху нея – нищо особено 🙂

*Тук е момента де се отбележи - ако станцията ви ще е в някаква малка кутия или метео клетка, доста желателно е да изведете датчиците с кабел максимално далече от платката. 
Основния чип на ethernet shield-a загрява съвсем спокойно до 42-43 градуса при 22 градуса околна температура, което може да повлияе сериозно на получените данни.

След като имаме основните модули събрани, може да добавим и сензорите:

Това което направих аз е:

  • Свързване на BMP180 сензора за атм. налягане и температура: SCL към аналогов пин 5, SDA към аналогов пин 4, VDD към пина с 5 волта, GND към маса;
  • Свързване на SHT75 сензора за темп. и влажност: Clock(Pin1) на цифров пин 2, Data(Pin4) на цифров пин 3, Vcc (Pin2) към пина с 5 волта, GND (Pin3) към маса. За DHT11 свързването става по сходен начин;
  • Свързване на сензора за дъжд: А1 на аналогов пин 1, Vcc към пина с 5 волта, GND към маса.

Ето как изглежда тестовия вариант на платката със закачени сензори BMP180 и DS18B20, който ползвах първоначално за температурата:

IMAG0511

След като сме свързали сензорите, остава да напишем кода, който да извлича данните. Някои сензори изискват библиотека за използването им, например BMP180 изисква библотека, която може да бъде свалена от ТУК

По-долу ще пусна кода, който написах аз със коментари кое какво прави по-точно. Като цяло резултата от кода е принтирането на резултатите от сензорите в серийния монитор (Tools > Serial Monitor), както и Web сървър на определен IP адрес, който вади данните в минималистичен вид, така че после да може да се свалят и обработят лесно:

#include <Wire.h>
#include <SPI.h>
#include <Ethernet.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BMP085_U.h>
#include <Sensirion.h>
     
/*    
   Connections [BMP180]
   ===========
   Connect SCL to analog 5
   Connect SDA to analog 4
   Connect VDD to 5V DC
   Connect GROUND to common ground

   Connections [SHT75]
   ===========
   Connect Clock(Pin1 - White) to 2 (digital)
   Connect Data(Pin4 - Yellow) to 3 (digital)
   Connect Vcc (Pin2 - Red) to 5V DC
   Connect GND (Pin3 - Black) to common ground
*/
/*Sensirion SHT75 Constants*/
const uint8_t dataPin =  3;              // SHT serial data
const uint8_t sclkPin =  2;              // SHT serial clock
const uint32_t TRHSTEP   = 5000UL;       // Sensor query period
const int rainMin = 0;     // rain sensor minimum
const int rainMax = 1024;  // rain sensor maximum

Sensirion sht = Sensirion(dataPin, sclkPin);
 
uint16_t rawData;
float temperature;
float humidity;
float humidex;
float dewpoint;
 
byte measActive = false;
byte measType = TEMP;
 
unsigned long trhMillis = 0;             // Time interval tracking

/*Sensirion SHT75 Constants END*/

Adafruit_BMP085_Unified bmp = Adafruit_BMP085_Unified(10085); //BMP180 code
/*OneWire  ds(7);  // on pin 2 (a 4.7K resistor is necessary)*/
float celsius = 0; // global temperature variable
float pressurekPa = 0; //global pressure variable

//Ethernet setup >
byte mac[] = {
  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED
};
IPAddress ip(192, 168, 1, 200);
IPAddress gateway(192, 168, 1, 1);
IPAddress subnet(255, 255, 255, 0);
EthernetServer server(80);

void setup(void) 
{
  Serial.begin(9600);
  /*SHT75 SETUP:*/
  delay(15);                             // Wait >= 11 ms before first cmd
// Demonstrate blocking calls
  sht.measTemp(&rawData);                // sht.meas(TEMP, &rawData, BLOCK)
  temperature = sht.calcTemp(rawData);
  sht.measHumi(&rawData);                // sht.meas(HUMI, &rawData, BLOCK)
  humidity = sht.calcHumi(rawData, temperature);
  dewpoint = sht.calcDewpoint(humidity, temperature);
  logData();
  /*SHT75 SETUP END*/
  
  /* Ethernet config */
  Ethernet.begin(mac, ip);
  server.begin();
  Serial.print("server is at ");
  Serial.println(Ethernet.localIP());
  
  /* Initialise the BMP180 sensor */
  if(!bmp.begin())
  {
    /* There was a problem detecting the BMP180 ... check your connections */
    Serial.print("Ooops, no BMP180 detected ... Check your wiring or I2C ADDR!");
    while(1);
  }

}

void loop(void) 
{
    /* Temp readings: */
    /*SHT75 loop: */
      unsigned long curMillis = millis();          // Get current time
     
      // Demonstrate non-blocking calls
      if (curMillis - trhMillis >= TRHSTEP) {      // Time for new measurements?
        measActive = true;
        measType = TEMP;
        sht.meas(TEMP, &rawData, NONBLOCK);        // Start temp measurement
       
        BMP180();                                  // Pressure measurement
        
        trhMillis = curMillis;
      }
      if (measActive && sht.measRdy()) {           // Note: no error checking
        if (measType == TEMP) {                    // Process temp or humi?
          measType = HUMI;
          temperature = sht.calcTemp(rawData);     // Convert raw sensor data
          sht.meas(HUMI, &rawData, NONBLOCK);      // Start humidity measurement
        } else {
          measActive = false;
          humidity = sht.calcHumi(rawData, temperature); // Convert raw sensor data
          dewpoint = sht.calcDewpoint(humidity, temperature);
          
          //humidex code:
          float h,e; //humidex and other
          e = 6.11 * exp(5417.7530 * ((1/273.16) - (1/(dewpoint + 273.15)))); 
          h = (0.5555)*(e - 10.0);
          humidex = temperature + h;
          logData();
        }
      }
    /*SHT75 loop end*/
    
    
  /* Web server: */
    EthernetClient client = server.available();
  if (client) {
    Serial.println("new client");
    // an http request ends with a blank line
    boolean currentLineIsBlank = true;
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        Serial.write(c);
        // if you've gotten to the end of the line (received a newline
        // character) and the line is blank, the http request has ended,
        // so you can send a reply
        if (c == '\n' && currentLineIsBlank) {
          // send a standard http response header
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html"); // text/html
          client.println("Connection: close");  // the connection will be closed after completion of the response
          //client.println("Refresh: 5");  // refresh the page automatically every 5 sec
          client.println();
          //client.println("<!DOCTYPE HTML>");
          //client.println("<html>");
          // output the data
            client.print(temperature);
            client.print(" ");
            client.print(humidity);
            client.print(" ");
            client.print(pressurekPa);
            client.print(" ");
            client.print(dewpoint);
            client.print(" ");
            client.print(humidex);
            client.print(" ");
            client.print(analogRead(A1));
            //client.println("<br />");
          
          //client.println("</html>");
          break;
        }
        if (c == '\n') {
          // you're starting a new line
          currentLineIsBlank = true;
        }
        else if (c != '\r') {
          // you've gotten a character on the current line
          currentLineIsBlank = false;
        }
      }
    }
    // give the web browser time to receive the data
    delay(1);
    // close the connection:
    client.stop();
    Serial.println("client disconnected");
  }
}



void BMP180() {
  delay(1500);
  /* Get a new sensor event */ 
  sensors_event_t event;
  bmp.getEvent(&event);
 
  /* Display the results (barometric pressure is measure in kPa) */
  if (event.pressure)
  {
    /* Display atmospheric pressue in kPa */
    Serial.print("[BMP180]Pressure:    ");
    Serial.print(event.pressure / 10);
    pressurekPa = event.pressure / 10;
    Serial.println(" kPa");
         
    /* First we get the current temperature from the BMP085 */
    float temperature;
    bmp.getTemperature(&temperature);
    Serial.print("[BMP180]Temperature: ");
    Serial.print(temperature);
    Serial.println(" C");

    /* Then convert the atmospheric pressure, and SLP to altitude         */
    /* Update this next line with the current SLP for better results      */
    float seaLevelPressure = 1022 /*SENSORS_PRESSURE_SEALEVELHPA*/;
    Serial.print("[BMP180]Altitude:    "); 
    Serial.print(bmp.pressureToAltitude(seaLevelPressure,
                                        event.pressure)); 
    Serial.println(" m");
    Serial.println("");
  }
  else
  {
    Serial.println("Sensor error");
  }
}

    void logData() {
      Serial.print("[SHT75]Temperature = ");   Serial.print(temperature);
      Serial.print(" C, Humidity = ");  Serial.print(humidity);
      Serial.print(" %, Dewpoint = ");  Serial.print(dewpoint);
      Serial.println(" C");
      Serial.print("Humidex: ");
      Serial.println(humidex);
      Serial.print("Water Level: ");
      Serial.println(analogRead(A1));
    }

По-горния код ще направи уеб сървър на IP адрес 192.168.1.200, където на един ред ще се извеждат данните от всички сензори. Тези данни вече може да взимате, за да си генерирате графики, да си ги съхранявате във файл или каквото намерите за най-удобно във вашия случай. Аз лично използвам линукс машина, която чертае графики посредством munin софтуер за графики (базиран на rrdtool). Има хиляди решения за чертане на графики, просто трябва да разгледате опциите.

В най-общи линии това е техническата част на станцията, ако искате точни данни обаче, съветвам ви да си направите дървена метео клетка.

Как да си направим собствена метео станция – част 2

След като вече си набавихме материалите за метео станцията в част първа , време е да пристъпим към подготовка за програмирането им 🙂

Преди това обаче трябва да си подготвим софтуера, с който ще програмираме Arduino-то. Последната версия на софтуера може да се изтегли от ТУК. Понеже обаче нашето Arduino не е оригинално, трябва да си изтеглим драйвери за него допълнително 🙂 Драйвери за Arduino с чипсет CH340/CH341 може да се свалят от ТУК или ТУК. Ако не знаете как се инсталират драйверите, може да намерите инструкции на официалния им сайт. Единствено на стъпката където посочвате .inf файла естествено посочвате файла, който предварително свалихме и разархивирахме от линковете по-горе 🙂

След като имаме всичко необходимо, стартираме IDE-то, което изглежда така:

В менюто Tools отивате на подменюто Board и избирате „Arduino/Genuino Uno“ или каквато платка притежавате съответно.

В подменюто Port избирате порта, на който се вижда платката. Тук е момента да уточня, че за да изпълните тази стъпка, платката трябва да е свързана посредством USB кабела към компютъра. Ако това подменю е сиво, това означава, че драйверите ви не са инсталирани коректно. НЕ инсталирайте драйверите, които идват с IDE-то от официалния сайт на Arduino, освен ако не сте си купили оригинална платка – платките, които се продават по 10-20лв в интернет не са оригинални и съответно ви трябват драйверите, които споменахме по-горе.

Нека разгледаме и структурата на кода, който ще пишем:

Блок setup (void setup() {  }):

Тук въвеждаме кода, който ще се изпълнява еднократно при включване на платката или след рестартирането й от reset бутона.

Блок setup (void loop() {  }):

Тук въвеждаме кода, който ще се повтаря постоянно, докато платката работи.

* Ако искаме да ползваме глобални променливи, да инициализираме библиотеки за определени сензори и т.н., попълват се извън тези два блока.

В менюто File > Examples > 01.Basics има елементарни примери, които може да се тестват за първи стъпки с платката (например Read Analog Voltage)

В част трета ще преминем към свързване на сензорите към основната платка, както и към извличане на данните от сензорите 🙂

Как да си направим собствена метео станция – част 1

Предполагам на доста хора им е хрумвало по едно или друго време да си направят метео станция и най-вече на тези, които имат нужда от нещо специфично или просто обичат сами да си правят нещата. С такава станция може да следите времето на село, над жилището си или вътре в него 🙂 В моя случай нуждата беше породена от факта, че в града ни няма метео станция и данните, които всички сайтове дават са реално от други градове.

Преди да продължим, да уточним какво точно ще прави станцията, която аз правя:

  1. Ще измерва температура, влажност, атмосферно налягане и интензивност на валежите посредством датчици, свързани към arduino (eдноплатков микроконтролер – звучи страшно, но не е);
  2. Ще измерва dew point и humidex (температура както се усеща от човешкото тяло) на база формули с данните от другите датчици;
  3. Ще прави данните достъпни в  мрежа/интернет, като за визуализирането им ще се използват графики, които се чертаят от сървър, който ще събира данните;

Какви знания са нужни ?

  1.  Минимален опит с поялник;
  2.  Минимални познания по програмиране – контролера се програмира с IDE на C, всички датчици, които ще използваме имат готови библиотеки, кода просто трябва да се нагласи според нуждите ви;

Ето и какви материали ще са ни необходими:

  • Базова платка Arduino Uno, версията със запоен чип е достъпна за около 12лв из olx и други родни места:
  • Датчик за температура и влажност – аз ще използвам SHT75, защото имам случайно под ръка, но препоръчвам използването на DHT11/DHT22 (на снимката по-долу) – цената му е 6-7лв отново в olx и подобни сайтове:
  • Датчик за атмосферно налягане BMP180, произведен от Bosch – цената отново е 5-6лв в olx, доста прецизен датчик. Има вграден датчик за температура, но не е съвсем точен – ако не ви пречат отклонения от 2-3 градуса, може съвсем спокойно да се използва:
  • Arduino Ethernet Shield – намира се за около 15лв в olx и подобните сайтове у нас:
  • Rain sensor – намира се за около 5-6лв в olx и подобните:Eдно уточнение – всички датчици и самата основна платка може да се намерят по-евтино по китайските сайтове, ако ви се чака доставката 🙂

В част втора ще преминем към конфигуриране на IDE-то, с което ще програмираме основната платка 🙂

Здравей, вселена!

Добре дошли в war3z.org - още един блог за обмяна на идеи, мнения, опит.

Защо ? Защото в днешно време ако искаш да изразиш мнението си в интернет, трябва да е 
на свой терен. Новинарски сайтове, форуми, социални мрежи - навсякъде дебнат тролове. 

Е, тук тролове няма да се толерират :)

war3z.org e на над 10 години, претърпявал е десетки трансформации и мисля, че сега това трябва 
да бъде призванието му.

Ако има желаещи за своя колонка в блога на каквато и да е тематика, свържете се с мен!