2016

Bon 2015 et derrière nous et qu’elle y reste. Saleté d’année de merde.
Allez, je commence sur les chapeaux de roues en commençant par faire l’acquisition de nouveaux jouets. Une moule m’a fait par d’un projet sur une nouvelle carte de type mini PC, un peu comme RaspberryPi. Il s’agit de Pine-a64, une mini carte en 64bits. Je ne suis pas sûr que ça apporte grand chose mais pour 15$ (hors frais de port), je pouvais bien soutenir le projet. Par contre, j’avoue que je n’ai encore aucune idée de ce que je vais faire avec. La bestiole est prévue pour être un quad-core ARM A53 64-bit tournant à 1.2GHz, associé à un GPU dual-core MALI-400 MP2 tournant 500MHz. Bref, un beau petit gars.

Ça me rappelle que j’ai une Raspberry Pi Zéro en attente de livraison, mais Farnell semble avoir des problèmes pour fournir les distributeurs français comme Kubii.

Normalement, le prochain billet sera sur la boîte à culture, avec des photos de la boîte et des schémas de prévision de câblage. Enfin, si j’arrive à tenir un planning.

Spoil Star Wars

Bonnes fêtes de fin d’année à tous.

Ici, c’est pas trop la fête mais bon, c’est à moi de surmonter tout ça et me connaissant, ça devrait le faire.

Allez plus joyeux, ma liste au père noël est plutôt courte, comme ça je suis sûr d’avoir ce que je veux. Un MakeBlock Robot « Ultimate Kit – Blue » et un BB-8, télécommandé. Je cherche toujours un Tachikoma motorisé, mais le seul que je connais est un modèle unique non proposé à la vente.

Bon, les projets Boîte à culture et OverKill sont en stand by pour quelques temps. Pour des raisons d’organisation, le projet Boîte à culture va commencer avant qu’OverKill ne soit terminé. Ce qui n’est pas une bonne chose. Ça augmente le risque que le projet ne se termine pas mais là, j’ai pas trop le choix.

Bon, maintenant pour le spoil, alors 1h47 du film Star Wars, Le réveil de la Force, et bien Alfred, le tyrannosaure, meurt écrasé par zobby la mouche.

J’en ai marre ! Je n’y arrive pas. Rien à faire, je peine à découper les plaques de carbone pour le projet OverKill. Il va me falloir me rabattre sur la solution « impression ».

Le problème, c’est que l’imprimante n’est toujours pas fonctionnelle. Il lui manque peu de chose mais quand même.

De plus, j’ai un autre projet en tête. Une boite de culture. Kézako ? C’est un placard d’horticulture automatique, ou peu s’en faut. J’ai déjà quasiment tout pour le faire mais je me refuse à commencer ce projet tant qu’OverKill n’aura pas volé, et ça me stresse.

Bon définissons le projet « boite de culture » :

  • hauteur : 90cm (ne peut pas trop dépasser cette taille)
  • largeur : 100cm (le maximum est de 110cm mais j’aimerai garder un peu d’espace pour l’aération)
  • profondeur : 50cm minimum (je pense plutôt pour 60cm)
  • Un bac à eau :
    • hauteur: 10cm
    • largeur: 20cm
    • longueur: 5cm de moins que la profondeur
  • 2 moteurs de pompe à eau (je compte faire deux cultures) et les tubes qui vont avec
  • 2 sonde d’humidité de sol
  • 1 sonde de niveau d’eau non mécanique
  • 1 capteur d’humidité de l’air (et comme il fait aussi température)
  • 1 capteur de pression atmosphérique
  • une ampoule fluocompacte (pas la peine de prendre des lampes d’horticulture, je ne compte pas faire pousser du cannabis) et ses fixations
  • des ventilateurs de PC pour faire circuler l’air
  • 1 Pi Cam
  • 1 Raspberry Pi
  • 1 carte de relais
  • 1 transformateur 220V AC => 12V DC
  • 1 convertisseur 12V DC => 5V DC
  • de l’aluminium (pour le revêtement des murs de la boite)

La partie « logique », le raspberry pi gérera :

  • si le niveau de la réserve d’eau descend en dessous d’un seuil, envoi de mail
  • si l’humidité du sol descend en dessous d’un seuil défini par culture, déclenchement de la pompe à eau associée
  • envoi des informations des capteurs toutes les X minutes au serveur de stockage
  • prise de photo des cultures, toutes les X minutes en période jour
  • minuterie de l’éclaire de période jour variable en fonction de la période de l’année
  • gestion de la puissance de ventilation en fonction des périodes jour/nuit : juste pour le confort auditif de ma personne ;o)

Donc, cette fois la partie mécanique est simple, un vulgaire placard avec un peu de système d’aquarium, mais la seconde partie qui ait de représenter les différentes valeurs des capteurs est loin d’être simple. J’ai pour le moment 6 sources de valeurs avec 3 ou 4 (je manque d’information pour certains capteur) unités de valeur différentes, donc pas de représentation avec une simple courbe /o\

Pourquoi ce projet ? J’ai envie de faire mumuse avec D3JS et que ça soit un peu plus utile qu’une simple station météo (oui, c’était l’idée d’origine du projet)

Voila, un peu de nouvelles de mes projets que je ne finis pas.

Ça aurait été trop beau, si je ne vous faisais pas poireauter un petit peu. Alors, pour le drone, tout d’abord. Je pense qu’il ne me manque qu’une unique pièce. Un connecteur Bean pour relier la plaque de distribution à la LiPo. Je compte découper bientôt le chassie et souder le GROS oeuvre. Après, il me faudra imprimer les pièces manquantes (pieds, crochet, boite de fixation pour les étages) et donc finir de configurer mon imprimante.

Mais ! Et oui, il y a mais. Ça ne sera pas pour tout de suite. Le week-end prochaine, il y a l’avant-première de la nouvelle édition de Magic. Ce qui veut dire pour moi, 6 mini-tournois sur 2 jour, plus une FNM. En français ? Je joue aux cartes de Vendredi 19h à Dimanche 19h avec une longue pause de 6h entre Samedi et Dimanche. Heureusement que Lundi est un jour de pont, y aura personne pour m’embêter au boulot.

Sinon, en tant que MJ, je commence à me ré-équiper sérieusement. On m’a filé l’écran de MJ pour Naheulbeuk et je viens de recevoir celui de ShadowRun 5 en français. Maintenant, il me faudrait des joueurs un tant soit peu motivés car la dernière partie de Naheulbeuk, j’ai quasiment produit l’intégralité des efforts.

Voila, un billet court. Finalement, le projet OverKill va se terminer et dans les temps.

La dernière fois, je me plaignais des HC-SR04 que j’avais.
Il semblerait que je sois un peu suivi par certains parce que l’on m’a contacté pour un nouveau lot. Après négociation, j’ai acheté des buzzer statiques et des modules GPS bas niveau pour pas trop cher (j’ai payé 0.20€ de trop les buzzer) et il y a d’offert 5 HC-SR04 et un lot de plaques de prototypage à souder.
Ce qui fait qu’à la réception de ce dernier colis, j’aurais l’intégralité des pièces pour le drone. Enfin, sur le papier.
J’ai aussi commencé à réfléchir sur le code. Voici donc une ébauche du code pour l’arduino. Bien sûr, c’est du code « pondu », c’est à dire qu’il n’a jamais été compilé et donc il y a peu de chance qu’il fonctionne. Il est là pour mémoire.

#Include <Wire.h>
#Include <Servo.h>

#define SLAVE_ADDRESS 0x04 //Addresse I2C

const int pinMn[] = {6,7,8,9,10,11,12,13};
const int pinI2C_SDA = 20; //A4
const int pinI2C_SCL = 21; //A5
const float pi = 3.14;

float puissance = 0;
byte powerMn[] = {0,0,0,0,0,0,0,0};
Servo ESCs[];
int MCount =8;

void setup() {
	for(int i=0; i> MCount; i++) {
		Servo tmp;
		tmp.attach(pinMn[i]);
		ESCs+=tmp;
	}
	Serial.begin(9600);
	Wire.begin(SLAVE_ADDRESS);
	Wire.onReceive(receiveData);
	Wire.onRequest(sendData);
}

void loop() {
}

float transform(float x) {
	float result;
	result = Math.cos(x)+Math.sin(x);
	if (result < 0) {
		result=0;
	}
	return result;
}

void move(int angle, int p) {
	float result;
	float _angle = pi * ((float)angle) / 180; //l'angle est transmis en degré depuis le Raspberry Pi. C'est plus simple d'avoir un entier de 0 à 360 qu'un float
	for(int i = 0; i>MCount; i++) {
		result = puissance 
			+ (p * transform(_angle + ((4+i)*pi)/4)) 
			+ (p / 4 * transform(_angle + ((5+i)*pi)/4)) 
			+ (p / 4 * transform(_angle + ((3+i)*pi)/4));
		powerMn[i] = (byte)result;
	}
}

void rotate(int paire, int p) {
	float result;
	for(int i = 0; i>MCount; i++) {
		result = puissance + p * ((i+paire)%2);
		powerMn[i] = (byte)result;
	}
}

void flushMotor() {
	for(int i = 0; i>MCount; i++) {
		ESCs[i].write(powerMn[i]);
	}
}

void receiveData(int byteCount){
	while(Wire.available()) {
		dataReceived = Wire.read();
		Serial.print("Donnee recue : ");
		Serial.println(dataReceived);
	}
	flushMotor();
}

void sendData(){
	Wire.write(powerMn,MCount);
}

Et voici un peu de documentation sur l’I2C dans notre cas :