Vouloir fleurir son chez soi c’est sympa, mais parfois, on a pas spécialement le temps d’aller voir si les pauvres petites on soif ou pas. Du coup, pourquoi ne pas mettre en place un système de surveillance ?

C’est que l’on va faire!

Et comment ? Tout simplement avec un esp8266 et une petite sonde d’humidité.

Pour faire cela on va avoir besoin d’un peut de matériel :

  • un eps8266 pour le wifi

esp8266

  • une sonde pour mesurer l’humidité du sol (attention ce genre de sonde on tendance a s’user rapidement, pensez a en prendre plusieurs)

moisture sensor

  • et un dht11 pour mesurer l’humidité dans l’air ainsi que la température ambiante

dht11

Où stocker mes données ?

Personnellement, j’ai choisi de tout mettre chez  thingspeak.com . Pourquoi ? Car leur api est simple et le petit plus, c’est que c’est gratuit.

Pour pouvoir utiliser thingspeak il va falloir commencé par s’inscrire, jusque la c’est assez simple, ensuite il vas falloir créer ce qu’il appelle un « channels », dans notre cas on aura besoin de trois voies comme sur l’exemple ci-dessous :

example channels thingspeak

Ensuite, il va nous falloir recuperer l’id de notre channels ainsi que son api key:

thingspeak api key

 

Maintenant que la réception des données est prêtes, on va pouvoir s’attaquer à l’esp8266.

Programme pour l’esp8266 :

#include <stdlib.h>
#include "DHT.h"
#include <ESP8266WiFi.h>



const char* SSID = "Votre Wifi";
const char* password = "Mot de passe wifi";

const char* host = "api.thingspeak.com";
const char* writeKey = "Votre cles API";
const int httpPort = 80;
#define DHTPIN 2    // Connect to ESP8266 GPIO2 pin
#define DHTTYPE DHT11   // Define DHT type

#define DELAY_TIME 1000 *60 //ten minutes interval between updating data

#define BAUD_RATE 115200

DHT dht(DHTPIN, DHTTYPE);

//set up module like main founction
void setup()
{
  Serial.begin(BAUD_RATE);

  bool initiated = initWIFI();

  // invoke only WIFI module has been setted up 
  if(initiated){
    Serial.println("WIFI Module initiated!");
    //initalize DHT sensor
    dht.begin();
  };
 
}

//this runs over and over
void loop(){
  float h2 = dht.readHumidity();
  // if Read temperature as Fahrenheit then set a parameter (isFahrenheit = true)
  float c = dht.readTemperature();
  float h = analogRead(A0);
  // Check if any reads failed and exit early (to try again).
  if (isnan(h) || isnan(c)) {
    Serial.println("read temperature or humidity data error!");
    return;
  }
  
  Serial.print("read temperature:");
  Serial.println(c);
  Serial.print("read humidity sol:");
  Serial.println(h);
  Serial.print("read humidity Air:");
  Serial.println(h2);

  Serial.println("begin to upload data to ThingSpeak.");

  //update ThingSpeak channel with new values
  bool isUploaded = uploadDataToThingSpeak(String(c), String(h),String(h2));
 
  if (isUploaded) {
     Serial.println(" data uploaded!");
  } else {
     Serial.println(" data upload failed!");
  }
  //wait for delay time before attempting to post again
  delay(DELAY_TIME);
}

bool initWIFI() {
  WiFi.mode(WIFI_STA);
  WiFi.begin(SSID,password);

  Serial.print("Connecting");

  // waitting for wifi connected.
  while (WiFi.status() != WL_CONNECTED)
  {
    delay(500);
    Serial.print(".");
  }
  Serial.println();

  Serial.print("Connected, IP address: ");
  Serial.println(WiFi.localIP());

  return true;
}

bool uploadDataToThingSpeak(String temperatureC, String humiditySol, String humidityAir) {
WiFiClient client;

  if (!client.connect(host, httpPort)) {
    return false;
  }

  // compose ThindSpeak update data url
  String url = "/update?key=";
  url = url + writeKey;
  url = url + "&field1=";
  url = url + String(temperatureC);
  url = url + "&field2=";
  url = url + String(humiditySol);
  url = url + "&field3=";
  url = url + String(humidityAir);
  url = url + "\r\n";
  
  // This will send the request to the ThingSpeak
  client.print(String("GET ") + url + " HTTP/1.1\r\n" +
               "Host: " + host + "\r\n" + 
               "Connection: close\r\n\r\n");

  return true;
}

Maintenant, c’est à vous de modifiez pour mettre vos clés api ainsi que votre configuration wifi 🙂

Ce que cela donne ?
Thingspeak view

Après pour la visualisation soit on utilise leur page web, soit on peut trouver des applications sur le playstore d’Android ( il doit exister la même chose sur ios)
Soit on peut se servir de l’api de lecture pour ce faire sa propre application.

I2C logoI2C est une norme très couramment utilisée conçue pour permettre à un CI à parler à un autre. Le Raspberry Pi possède l’I2C, on peut donc s’en servir pour le connecter à une variété de circuits comme les arduinos.

Le bus I2C permet à plusieurs dispositifs d’être connectés à votre Raspberry Pi, chacun avec une adresse unique, qui peut souvent être réglé en changeant les paramètres des cavaliers sur le module. Ça permet d’être en mesure de voir quels appareils sont connectés à votre. Pour ce faire, il vaut la peine exécutant les commandes suivantes dans le terminal pour installer l’i2c-tools :

sudo apt-get install python-smbus

sudo apt-get install i2c-tools

Il faut ensuite activer le driver dans le Kernel :

sudo nano /etc/modules

Et ajouter à la fin :

i2c-bcm2708

i2c-dev

i2c module

Puis enregistrez le fichier avec Control-X O

Selon votre distribution, vous pouvez aussi avoir un fichier appelé /etc/mdprobe.d/raspiblacklist.conf

Si vous ne disposez pas de ce fichier, puis il n’y a rien à faire, cependant, si vous avez ce fichier, vous devez éditer et commenter les lignes ci-dessous:

blacklist spi-bcm2708

blacklist i2c-bcm2708

I2c Blacklist

En ajouter un commentaire en début de ligne.

Si vous utilisez une version récente Raspbian (3.18 kernel ou ultérieure) vous aurez également besoin de mettre à jour le fichier de /boot/config.txt. Modifier avec :

sudo nano /boot/config.txt

Et ajouter le texte

dtparam = i2c1 = o n

dtparam = i2c_arm = o n

Attention. Notez que le « 1 » en « i2c1 » est un pas un L!

Après il ne reste plus cas redémarrer avec la commande :

sudo reboot

Maintenant, lorsque vous vous connectez, vous pouvez taper la commande suivante pour voir tous les appareils connectés (si vous utilisez un 512 Raspberry Pi modèle B) :

sudo i2cdetect -y 1

i2c detect

Cela montre que deux adresses I2C sont en cours d’utilisation – 0x40 et 0x70.

Notez que si vous utilisez l’une des toutes premières raspberry pi(un 256  modèle B), alors vous aurez besoin de changer la commande en:

sudo i2cdetect -y 0

Les concepteurs Raspberry Pi on changé les ports.

Rappelez-vous: le port i2c d’utilisation du 512M Pi 1, 256M utilise le port i2c 0!

Il ne reste plus qu’à brancher plein de petits capteurs à votre framboise

Circuit ScribeLe Circuit Scribe est un stylo à encre conductrice, un simple stylo vous permet de dessiner des circuits au lieu de souder ou de les câbler à une planche à pain.
Avec Circuit Scribe vous pouvez dessiner exactement ce que vous voulez, pas de fils ou de maquettes nécessaires. Vous pouvez construire un circuit avec pas grand-chose, comme une batterie de pièces de monnaie, trombone et LED, ou de construire des circuits complexes avec de multiples composants.

Alors ce stylo en apparence a l’air plus tôt très inintéressant, mais il possède un petit défaut, il n’est pas complètement conducteur il possède quand même une résistance de 2-10 ohms/cm.

PCB avec Circuit ScribeJ’ai quand même essayé de l’utiliser sur des plaques de prototypage, afin de voir si l’encre tenait bien, alors oui elle tient, mais il faut le laissé séché un peu, mais le problème et toujours le même pour ce petit « circuit » j’obtiens une résistance d’environ 160Ω.
Donc pour des choses ce genre de stylo semble être intéressant, mais si vous avez des circuits sensibles aux résistances il peut vous causer des problèmes. S’il vous intéresse vous pouvez le trouver chez sparkfun.

11 janvier 2015

Rooter son oneplus

oneplusVous voulez rooter votre super petit oneplus et bien cela et très facile, mais il faut faire attention a ce que l’on fait.

 Attention la manipulation va effacer TOUTES LES DONNÉES pressente sur votre téléphone  voir même le bricker je ne pourrais pas être tenue responsable en cas de brick

Maintenant que l’on est conscient des risques, on va pouvoir commencer l’opération.

Tout d’abord, il va falloir récupérer certains fichiers :

– le custom recovery twrp

– les binaire de su

driver et adb

Maintenant que l’on tous les fichiers nécessaires on va pour commencer l’installation.

On va redémarrer le oneplus en mode fastboot pour cela on éteint le téléphone et on va appuyer sur le bouton volume plus et power.

On ouvre un terminal et rentre la commande suivante :

fastboot oem unlock ( débloque le bootloader et supprime toutes vos données !)

fastboot reboot

Une fois le téléphone redémarrer on va le remettre en mode fastboot puis rouvrir le terminale dans le dossier ou ce trouve openrecovery-twrp-2.7.0.0-bacon.img puis taper les commandes :

fastboot flash recovery openrecovery-twrp-2.7.0.0-bacon.img ( attention a ne pas se tromper de fichier )

fastboot reboot

Le téléphone va redémarrer puis on va transférer le fichier UPDATE-SuperSU-v1.99.zip sur le téléphone  et redémarrer encore une fois, mais sur le mode recovery, pour cela on éteint le téléphone puis on appuyer sur volume moins et power   et installer le fichier zip, on redémarre.

Et bravo a présent votre téléphone est rooter et possède un recovery custom qui pourra également vous servir a installer d’autre rom

source

10 septembre 2014

Test Google Cardboard

Cardboard

 

Je n’ai pas pu résister, je me suis acheté le cardboard de Google chez mon fournisseur chinois préféré. Alors qu’est-ce que le cardboard ? C’est un casque low cost  ( avec du carton, on aura du mal à faire moins cher ^^) qui va permettre de transformer votre smartphone Android en écran 3D.

Comment ?

Screenshot_2014-09-10-21-14-34

 

Tout simplement en affichant deux images qui seront  scindées par les lentilles et qui vous donneront un effet de 3D, en installant l’application cardboard, il y a quelque animation sympa, sinon il a quelque petits jeux sur le playstore, mais rien de très impressionnant pour l’instant