Décroissance …

Réfléchissez bien à cela : les sociétés doivent repenser ce que l’on entend par croissance et progrès et leur signification pour la durabilité mondiale … bref. ça craint.

Mes enfants vivront une large partie de leur vie dans un monde qui sera plutôt en contraction économique qu’en croissance. Voilà ! C’est comme ça. Je vais faire ce que je peux pour adoucir leur peine mais c’est bien ça qui va se passer et cela n’a désormais plus rien à voir avec l’économie de Marché ou le socialisme. Et c’est dans ce monde là qu’il faut re-penser complètement nos mécanismes de solidarité de proximité. C’est malheureusement le cadre de réflexion dans lequel il faut que l’on fonctionne.

Il n’y a pas d’échappatoire, pas de croissance verte, pas d’énergie renouvelable salvatrice. Non. C’est mathématique, c’est physique. Point. Moi cela ne me fait pas rire cette décroissance qui s’annonce. Je ne la souhaite pas mais elle sera INCONTOURNABLE. Une sorte de monde de renoncement, de sobriété, de pauvreté consentie, avec des rationnements ciblés et coercitifs, des interdictions, des règlementations sectorielles. Il y aurait un milliard de débats à avoir pour mettre tout ça en place mais, hélas, on a plus le temps …

Alors il faudra absolument s’appuyer les uns sur les autres afin que ce Monde ne retombe pas dans la sauvagerie. La question du partage, de l’équité, du sens, va devenir centrale… Sinon les réflexes de sauvegarde individuels vont augmenter. Les gens vont s’armer, vont se préparer comme ces américains qui entassent des victuailles dans des bunkers. Quand on aura plus le nécessaire on ira le prendre, le voler, et chacun défendra chèrement sa peau … Sans compter les religions diverses et variées qui vont apparaitre, de façon tout à fait irrationnelle avec leurs nouveaux messies… ( Mais Non !)

Pour l’instant, le Nucléaire reste le seul gouvernail de ce bateau branlant. Car il ne produit aucun CO2 et ne participe pas du réchauffement climatique. De plus, il est pilotable et la densité d’énergie produite est grande (dans ce concert, le compteur électrique type « Linky » est indispensable pour pouvoir agir en temps réel, à la demande, pour fournir l’énergie “just in time”). Plus on fera de Nucléaire (avec sérieux) plus on abaissera le risque global et on stabilisera la société en évitant un effondrement total. Oui je sais, pas mal d’écolos ne sont pas d’accords. Mais ceux là sont ignorants ou oublient ou minimisent un certain nombre de variables dans l’équation globale…

Pffffiouou. Il faut que je devienne un ascète. Heureux avec peu. Bon je vais aller manger ma soupe de poireaux avant de me coucher. Plus de viande. Il faut que je me prépare…

Publié dans Décroissance, Ecologie | Laisser un commentaire

Universalisme contre identité

universalisme

Je ne suis pas dupe des spectacles qui montrent deux prototypes de « fast-thinkers », rois de la joute verbale, tirant prestige de leur stature /posture de « philosophe » et/ou d’essayiste et historien pour distribuer bons et mauvais points avec une outrance des plus décomplexée. Pourtant j’ai été frappé par une phrase entendue dernièrement et je me suis demandé si elle pouvait exprimer une certaine réalité : Alors que je regardais l’autre soir à la Télévision sur CNews, un débat fort intéressant entre Eric Zemmour  et Raphaël Enthoven j’ai entendu  cette  phrase prononcée par Eric Zemmour : « Si l’Universel tue l’identité, alors on aura une autre identité« .  Il affirmait d’ailleurs que la France de 2021 n’a plus du tout l’esprit qu’elle pouvait avoir dans les années 1970,  en prenant par exemple comme illustration de ses dires, les films de Claude Sautet de cette époque là, impensables aujourd’hui selon lui.

Ces paroles émanent, je le sais bien, d’un intellectuel qui aime « intégralement » la France, son Pays d’adoption, et à laquelle il s’est totalement « intégré ». Un intellectuel qui, voulant à tout prix défendre ce Pays, craint que l’esprit « Français », son « Identité », disparaisse du fait des valeurs Universalistes  que la République d’aujourd’hui promeut faisant fi de son identité spécifique, séculaire et singulière. Car pour lui, en tant qu’Historien, cette identité n’est pas née seulement des valeurs universalistes de la République, mais prends ses racines dans toute sa longue histoire, en passant par Clovis, la Chrétienté, certains monarques “éclairés”, Napoléon, etc …

Le doute s’est insinué en moi … Comment ça la France perdrait son “identité” ? Ah ben zut alors !

En effet, en tant que  « Moderne » ayant la quasi certitude que la modernité, dans sa volonté de reformatage du monde, va  réussir à construire une société plus juste, par l’« expression » d’une « fonction civilisatrice universelle » ,  je suis un fervent défenseur de ces valeurs plutôt de Gauche, et que je considère presque comme indispensables pour transcender la condition humaine et progresser : Je m’appuie dans cet espoir sur le fameux triptyque « Liberté, Egalité, Fraternité » de l’Universalisme Républicain, auquel j’associe volontairement le concept de Laïcité. Et d’ailleurs je défends l’idée que la  France n’est pas un ensemble de Communautés, mais plutôt un ensemble de citoyens, qui doivent avoir les mêmes droits et les mêmes devoirs . D’ailleurs, notre pays pose le primat de la citoyenneté sur les appartenances communautaires, raciales, ethniques ou religieuses. La République s’enorgueillit de ne traiter que du citoyen universel et de ne jamais s’intéresser aux identités qui, relevant de la sphère de l’intime, ne regardent ni l’État, ni la chose publique. L’idée même de politique identitaire serait une invention des sociétés multiculturalistes qui font fructifier les appartenances et les allégeances, les étiquettes et les emblèmes.

En même temps mon grand-père paternel se nommait Clovis et je n’ai pas oublié que le genre humain a peu changé depuis la bataille de Poitiers (1356) lorsque Philippe le Hardi, ferraillant au côté de son père le roi Jean le Bon, s’écriait: «Père, gardez-vous à gauche, Père gardez-vous à droite.» Et donc je me sens ancré dans une histoire très très ancienne. ( Même si peut-être un de mes aieuls était Espagnol ou Italien, voire Viking comme dit mon fils …)

Et donc,  une petite voix me dit que, quelque part les règles sociales universalistes “républicaines” peuvent-être de nature à diluer voire faire disparaître dans un idéal fantasmé, l’identité singulière de telle ou telle communauté, ancienne ou nouvelle.

Pourtant, si l’on devait décrire le citoyen universel idéal dans la France des années 2000 en le déduisant de la sociologie du corps des représentants (personnel politique, médiatique et élites économiques, intellectuelles et associatives), le neutre est un homme blanc des classes moyennes et supérieures. J’ai donc le sentiment que cette vision, un tant soit peu « hors sol » peut effacer et contraindre ce qui est particulier, ce qui est différent …

Cependant  on ne peut pas s’abstraire du fait que les citoyens Français soient  chrétiens, juifs, musulmans ou bouddhistes ou athées, sans compter les particularités ethniques, tant cela influence leur rapport au monde : au pouvoir, au doute, au conflit, à la citoyenneté, à l’éducation, à la Nation, etc… Et comme je pense qu’il y a une opposition réelle entre modernité et tradition, je me dis que si l’idéal universaliste ne compose pas avec une prise en compte réaliste de la diversité du monde, il s’expose à être rejeté avec un retour à une logique identitaire pure et dure. Ce qui peut tout à fait concourir à une transformation de l’identité Française. CQFD. C’est Cornélien ce paradoxe ! On assiste d’ailleurs en ce moment à la progression de particularismes virulents qui n’admettent pas qu’il y ait un terrain d’entente ou un sens de l’appartenance collective …

Alors, en y réfléchissant bien, je crois bien, qu’avant tout autre chose, le respect des personnes (mis à part les intégristes religieux que je conchie) et de tout  ce qui peut correspondre à une manière propre à une culture d’incarner ces valeurs, pourrait rassurer ceux qui ont peur que la prise en compte de la diversité des cultures conduise au naufrage de l’idéal universaliste.

A cette fin, l’identité d’un groupe doit pouvoir s’articuler dans un « système élaboré de relations avec d’autres groupes » et non réclamer des privilèges légaux spécifiques dans un isolationnisme superbe. Et c’est justement le cas en France où ces relations sont  « régulées par des normes et des principes qui transcendent le particularisme de chaque groupe »  tels que , en France, les principaux textes garantissant les droits fondamentaux  :

Il y a néanmoins, selon moi,  un postulat : Pour qu’une Démocratie soit vivante, cela suppose un sentiment d’appartenance fort que, pour l’instant, seule une Nation, ayant progressé et ayant tenté de surmonter ses contradictions internes, peut offrir. Je pense, objectivement que c’est le cas de la France, qui n’a cessé de se transformer dans le sens du Bien Commun. Mais tout cela est très fragile. Et puis un certain ordre social est indispensable pour envisager le “vivre ensemble” en toute sérénité. Alors avant que de vouloir conserver à tout prix une identité un tant soit peu fantasmée face au Monde qui bouge,  attention chez nous à la ghettoïsation par la communauté dominante … Et attention aussi à ceux qui veulent déboulonner des statuts … car nous sommes ce que nous sommes parce que l’Histoire est ce qu’elle est. On ne peut pas la refaire, ni la ré-écrire. Simplement on doit apprendre d’elle les erreurs à ne pas reproduire…

Cependant il est bien évident que notre fameux triptyque Liberté Égalité Fraternité est effectivement soumis à rude épreuve. Il reste un idéal magnifique et généreux mais ne peut prendre du sens concrètement qu’à la condition que les Citoyens, aient certes, les mêmes droits, mais aussi les mêmes devoirs … Par voie de conséquence il faut  être capable de faire respecter l’ordre républicain. Je suis donc comme Clémenceau qui disait « la liberté ce n’est pas un renard libre dans un poulailler libre »!  Donc un de nos combats prioritaire devrait être de lutter en notre sein même, contre l’obscurantisme pour parvenir à permettre la pleine liberté de conscience et l’acceptation de ce principe de responsabilité collective par tous nos concitoyens, sans exception. Ce sera un long combat. Il dépasse de loin nos propres frontières. 

C’est pourquoi il ne faudrait pas non plus passer sous silence le rôle émancipateur de l’école publique qui sollicite en chacun un travail sur soi parfois inconfortable, et qui appelle une mutation par « réforme de l’entendement ». N’est-ce pas d’abord la possibilité de vivre et de penser à la première personne du singulier que l’école laïque offre à chaque élève en le mettant en contact avec ce que l’humanité a fait de mieux, en le conviant à s’approprier la plus haute forme de liberté qu’est le savoir, en lui offrant une « respiration » qui le met à l’abri des injonctions sociales possiblement étouffantes de sa Communauté d’origine ? Pour cela aussi il faut se poser les bonnes questions et cela n’est pas uniquement une question de salaire des enseignants !! Parce que pour moi ce n’est pas la couleur de peau, qui fait l’homme ou la femme. Ce n’est pas non plus le niveau de salaire qui fait l’Enseignant ! C’est plutôt son « logiciel » intérieur, ses connaissances, sa formation. Pour lui comme pour tous. Pour cela il faut pouvoir accéder à la liberté de penser et ancrer un sentiment d’appartenance et de respect de notre fameux triptyque. C’est cela notre identité française universaliste !  Vaste programme ! J’y suis attaché plus que tout, à cela et à la CULTURE car la culture c’est «ce qui est commun à un groupe d’individus» et comme «ce qui le soude». Et quand on se prend à rêver, cela va bien au delà de nos identités respectives !

Alors quand je pense à Aimé Césaire, à Léopold Sédar Senghor ou à Ghaleb Bencheikh ou encore à  Fatiha Boudjahlat par exemple, je n’ai pas peur de leurs “identités” respectives ou de leur visages qui ne ressemblent pas à ma gueule de Gaulois. Par contre, et c’est un bonheur, je reconnais leurs esprits comme très proches du mien car je vois en eux tout à fait ce qui participe de notre identité « Universaliste » : une longue lignée d’individus issus de communautés diverses et qui ont  contribué à l’entretien de la flamme de nos “Lumières” émancipatrices

Je terminerai par une pirouette : on dira que l’universalisme est un horizon jamais réalisé et que le modèle gagne en perfection  à chaque ajustement… Encore faudrait-il que nous soyons capables de sortir de l’arrogance du langage de la supériorité et de l’argument d’autorité dont tant de thuriféraires de l’ordre républicain usent et abusent … Me semble-t’il.

Je ne suis donc pas tout à fait d’accord avec Zemmour, ni avec Ethoven. Zemmour, en particulier, est en pleine contradiction, il est issu d’une famille française juive d’Algérie , et c’est bien l’universalisme de la république qui lui permis de devenir ce qu’il est ! Mais une chose est sûre : des prénoms “Clovis”, il y en aura de moins en moins. Je ne sais pas vraiment si je dois en être rassuré …

Publié dans Identité, Nation, Philosophons un peu, Universalisme, Zemmour | Laisser un commentaire

Et le délire continue …

Je partage ici un texte que je viens de lire … Voici le lien vers ce texte : https://www.dropbox.com/…/La_conscience_cosmique…

Ce texte me touche car, quelque part, et malgré mon rationalisme qui confine à l’obsession, j’ai tendance à avoir cette croyance : Nous faisons partie d’un grand TOUT et nous contribuons par notre perception individuelle et la construction d’un savoir collectif, à l’élaboration d’une « Conscience Collective » plus vaste que celles de nos vies individuelles et si courtes …

Partant de là, il n’y a qu’un pas pour se « projeter» dans une perspective “cosmique” , c’est-à-dire d’être et de vivre en éprouvant le sentiment de faire partie intégrante de la nature, dans sa globalité. En effet, je me sens appartenir pleinement – corps et esprit, tout un – à la nature, que l’on pourrait tout aussi bien appeler “Univers”.

Que l’on se sente faire partie de la nature par son propre corps n’est à vrai dire guère étrange. Ce qui l’est plus, dans la perspective de l’intuition que l’on a ordinairement de soi, c’est le sentiment d’appartenance à la nature par son esprit. Le concept évoque donc une forme d’identité entre l’homme (dans sa dimension à la fois physique et psychique) et la nature, sans préjuger encore de la particularité de cette identité.

Le grand problème, dans ce propos, c’est que la Nature ne constitue nullement une « conscience ». J’irais même jusqu’à ajouter que son absence de toute forme de conscience (et d’éthique) n’est plus à démontrer depuis longtemps. Et je ne souhaite pas non plus “déifier” la Nature et n’essaie pas non plus de lui attribuer une conscience, ce dont elle est bien incapable… 

Si l’arrivée de l’espèce humaine s’insère dans la longue histoire géologique et biologique de la Terre, précédée par l’apparition et la disparition de millions d’autres espèces, l’expérience humaine vécue de soi comme identité personnelle, comme agent,comme conscience de soi, tout cela ne semble être à première vue rien d’autre qu’un épiphénomène de la nature physique et biologique. La vision cosmique de l’environnement réinscrit donc l’homme dans la nature. Mais elle le dessaisit apparemment de sa singularité et de sa grandeur supposée par rapport au reste de la nature: la pensée, la culture, le langage, la civilisation, etc.ne sont que des phénomènes secondaires et dérivés de la réalité matérielle, physique et biologique. C’est là une conclusion partagée par de nombreux scientifiques.

Je ne saurais donc assigner à la Nature une volonté ou une causalité productrice; on ne peut en aucun cas affirmer que la Nature a “voulu” l’homme comme l’être par qui elle accède à la conscience, par contre on peut dire que l’homme émerge d’un insondable devenir et qu’avec lui la Nature devient “monde”. Comme disait Marx, l’Homme, c’est la Nature qui prend conscience d’elle même !

Par voie de conséquence, nous sommes cette Nature, ce qui peut nous conduire à penser notre corps propre, notre propre «chair», comme une partie de la «chair du monde».

Mais nous sommes à la fois issus de la Nature et séparés d’elle. Avec cette “perception” extraordinaire, cette conscience, acquise au fil des évolutions (et aussi du hasard, j’insiste) , ce qui importe, c’est que dans un Univers, à priori sans but, on puisse créer du sens. Lourde responsabilité ! Car notre conscience ne doit pas être uniquement centrée sur nous même puisque nous sommes une partie, une partie seulement, de la “chair” du Monde … en particulier il nous faut porter toute notre attention sur la vulnérabilité de la nature et s’efforcer d’y répondre en valorisant des pratiques de soin, à protéger notre environnement. Sinon, à brève échéance, plus de conscience cosmique, plus de conscience tout court …

Cette expérience, à vivre, ne serait-ce pas l’expression non pas d’une conscience ordinaire « anthropomorphique » mais d’une conscience cosmique ? Ouh là … ça y’est je pars en « live » …

Astronome

Tout ça vaut bien un petit coup de Soft Machine

Publié dans ça plane, Philosophons un peu | Laisser un commentaire

LE VIRUS REND FOU, C’EST UNE CERTITUDE …

Je publie ce texte de l’un de mes amis, Hubert Sage, car je suis d’accord avec quasiment l’ensemble de son contenu, et parce qu’il traite d’un sujet sur lequel je pense qu’on doit être le plus clair possible, sans la moindre  hypocrisie, surtout  quand on se  réclame d’une république laïque où la raison doit rester la clé de voute. (en rouge mes correctifs personnels sur le texte de Hubert Sage, qui est certes, mon ami,  mais dont je ne partage cependant pas tous les points de vue… J’espère qu’il ne m’en voudra pas !)

VirusFou

Dans le débat qui fait rage sur les vaccins contre la COVID, le dérapage s’accentue de jour en jour de la part des antivax et de leurs faux nez les antipass (comme les antisionistes sont les faux nez des antisémites, cf. Le Canard Enchainé),  à tel point que l’on peut parler désormais de folie collective.

Certes tout débat doit être libre pour être productif et approcher de la vérité surtout quand il s’agit de faits touchant à la médecine scientifique. Mais quand certains utilisent des fausses données scientifiques, ou des interprétations absolument loufoques pour étayer leurs dires, lesquels sont fondées uniquement sur des croyances a priori, il y a du souci à se faire. Et quand cela débouche sur des imprécations, insultes et comparaisons nauséabondes, voire des appels au meurtre nominal à peine déguisés (affaire des guillotines dans les Landes), cela relève de ce qui fut appelé depuis longtemps des processus de folies collectives pouvant aboutir à des autodafés ou des pogroms, comme le fut l’appel aux meurtres des juifs au Moyen Age (et plus tard) quand ils furent accusés d’empoisonner les puits et de tuer rituellement les petits enfants. Cette comparaison n’est pas exagérée, lisez sur les réseaux sociaux ce que des antivax, parfois des personnes instruites et BCBG, osent écrire et dire dans leur folie collective. L’un dit : « le vaccin c’est comme le scandale du sang empoisonné, c’est fait pour empoisonner nos enfants ;  et pour protéger quelques vieux, on empoisonne nos enfants et des jeunes adultes » ; ils osent tout dans l’abjection et le délire : « il y a plus de morts par le vaccin que par le virus », et hop on saccage des centres de vaccination (plus d’une dizaine quand même), on agresse les gens dans les pharmacies quand ils se font vacciner. Un autre dit « il n’y a pas eu 100 000 morts en un an en France du aux virus, mais à peine 10 000  car la plupart des décès ont été classés  consécutifs au virus pour faire vacciner en masse », mais un autre dit une autre version : « il y a plus de morts du aux vaccins qu’au Covid »,en attribuant tous les morts dans les semaines qui suivent une injection de vaccins !!! D’autres disent que les vaccins ne protègent pas contre l’infestation du Covid et sa transmission ; ils argumentent que quand il y a une majorité de vaccinés , il y a plus de transmission et de malades chez les vaccinés, sans se rendre compte de l’ineptie scientifique en terme d’interprétation des statistiques ; car c’est vrai les vaccins ne sont pas efficaces à 100%, mais on le savait depuis le début, car ce qui compte c’est qu’il soit très efficace quand même ; la preuve en ce moment : ce sont des régions d’outre mer peu vaccinées qui résistent le moins à la vague virale : une vraie étude observationnelle en grandeur nature ! Certains osent même dire sans sourciller que l’atteinte virale n’est pas grave puis qu’elle a un taux de létalité inférieure à 1%, faisant fi des 100 000 morts en un an en France (des millions dans le monde entier), sans doute ne prenant en considération la gravité que comparée au résultat de la peste au Moyen Age qui pouvait faucher mortellement  plus du tiers la population ! Et quand tous les chefs de services de réanimation de la France entière disent que 80 à 95% des hospitalisés en réanimation dus au Covid sont des non-vaccinés, ils hurlent à la fake news (dommage d’ailleurs qu’ils ne fassent pas de stage dans ces services pour aider les soignants, ça leur remettrait les idées en place). Etc…Etc…

Il est vrai que cette situation d’hystérie collective de négationnisme vis-à-vis de la science est du principalement aux mensonges et mesures inadéquates de notre roitelet avec ses ministres de pacotille ; plus personne ne le croit (ndlr : là je souhaite apporter un correctif parce que la phrase précédente de Hubert Sage, peut contribuer à entretenir la ire de ceux qui mélangent tout et qui pensent que le Président Macron profite de la situation pour instaurer une autocratie et limiter les libertés, à son profit  … Ce qui est proprement débile. Même si, j’en conviens, notre jeune Président se prend un peu trop souvent pour un Napoléon, il est moins de « pacotille » que tout un tas de politicards de mes deux qui ont dit encore plus de conneries que lui et de plus, il fait preuve d’un certain courage et de beaucoup de ténacité, et,  en une période ou l’exercice Démocratique est extrêmement difficile, il ne s’en sort pas si mal !!! Par ailleurs, la vie parlementaire n’a jamais été suspendue et toutes les mesures restrictives ont été votées par la loi … Et puis, à mon avis,  cela « brouille » le message que mon ami souhaite exprimer. Du coup j’aurais été plus « sobre » en disant simplement :  » Il est vrai que cette situation d’hystérie collective de négationnisme vis-à-vis de la science est dûe principalement aux mensonges et mesures inadéquates d’une Gouvernance qui a piloté à vue, en toute méconnaissance de cause et qui a dû avec beaucoup de légèreté, changer plusieurs fois d’avis ; ceci n’a pas contribué à établir un climat de confiance dans la population  et du coup, plus personne ne les croit … » ) : affaire des masques décriés parce qu’ils étaient absents,  affaire de la promotion déguisée du Redemsivir en faveur du laboratoire Giléad, alors qu’il s’est révélé rapidement toxique , en dénigrant l’efficacité de l’Hydroxychloroquine, certes faible, mais efficace quand même comme le montrent 120 études observationnelles du monde entier; à ce propos l’Ivermectine apparait aussi un peu efficace selon les dernières études de l’Institut Pasteur.  Et, c’est vrai on a vu là « les scientistes épidémiologistes dit de laboratoire » nier leur efficacité parce que celle-ci n’était pas à 100% !!!

Les dernières mesures brouillonnes et souvent inadéquates de notre président ne contribuent pas à instaurer la confiance et  l’adhésion : on demande de vacciner les enfants et adolescents mais non les enseignants et les forces de l’ordre, eux aussi pourtant  fonctionnaires (ou assimilés) au contact du public comme les soignants (rappel : c’est le devoir des soignants, lequel  est inscrit dans leur contrat de travail d’accepter toute mesure sanitaire pour eux même prescrite par les autorités, dont des vaccinations quand elles sont obligatoires ), mais on sait bien qu’il faudra plusieurs années pour que 75% au moins de la population mondiale soit vaccinée partout pour éradiquer le virus ; en ce sens, la vaccination obligatoire pour l’ensemble de la population et l’éviction scolaire des  enfants non vaccinés n’est pas raisonnable (leurs enseignants, eux, doivent être vaccinés) .

Pour que la confiance revienne  au cours de ces prochaines années soumises au virus, il sera nécessaire de dire toujours la vérité, de ne jamais rien cacher, et de prendre des mesures cohérentes :

  • Oui, il faut dire publiquement que les vaccins ne sont pas efficaces à 100% dans la transmission du virus et dans la prévention de ses effets, mais présenter les chiffres qui démontrent qu’ils sont quand même très efficaces.
  • Oui il faut dire publiquement que  la protection vaccinale est de courte durée et que des rappels tous les 6 ou 8 mois sont nécessaire (démontré scientifiquement par un grand virologue en Israël, mais on le prévoyait depuis le début !), ne serait-ce que pour l’adapter aux variants (comme pour la grippe).
  • Oui, il faut dire publiquement que certains vaccins comme l’Astra Zéneca et le Johnson- Jonhson ont trop de conséquences toxiques (1 thrombose ou 1 paralysie pour 1million de vaccinés) et qu’ils doivent être retirés, mais aussi qu’il faut imposer des contrindications strictes comme  pour ceux qui ont souvent des allergies et des chocs allergiques (exemple mortel récent ).

Mais  ceux qui parlent de substance étrangère que serait l’ARN messager qui serait potentiellement dangereux à l’avenir, alors que la technique est totalement maitrisée depuis 15 ans (découverte il y a 50 ans), se rendent-il compte que cela ne concerne pas justement l’Astra Zéneca et le Johnson-Johnson, eux pourtant les plus à risques ? Quand la bêtise rejoint l’ignorance !!!

Enfin, OUI, l’institution d’un pass sanitaire pour aller dans des lieux publics est une mesure de bon sens pour limiter la transmission et n’est en rien une mesure contre les libertés individuelles quand en ce moment et temporairement l’intérêt général est en jeu ; aller au restaurant, au cinéma comme dans un lieu de culte n’est pas une nécessité pour chacun, et c’est une bonne mesure pour permettre à ceux qui sont protégés par le vaccin de s’y rendre plutôt que de fermer ces lieux à tous.

Les foules hurlantes, menaçantes (voire les vidéo des manifestations) et invoquant Hitler, Auschwitz et l’étoile jaune sont vraiment les signes d’un délabrement intellectuel massif qui est la principale source d’une folie collective. Il est vrai que cette dernière est , la plupart du temps, téléguidée par des agitateurs professionnels et dirigeants politiques (issus de mouvances variées souvent antirépublicaines et extrémistes de Droite ou de Gauche) qui tentent d’exploiter cette situation au maximum et sans vergogne ; cela n’est sans doute pas un hasard.

Par contre, il est attristant de voire des amis se laisser embobiner par des arguments de dangerosité et de protection des libertés individuelles,  particulièrement fallacieux dans ces circonstances.

C’est pourquoi les organisations associatives et politiques qui se réclament d’une république laïque où la raison est reine doivent rester fermes et intransigeantes dans cette affaire et surtout ne pas garder le silence.

Il s’agit bien là d’une lutte de plus contre l’OBSCURANTISME. (Et je rajouterai, contre la CONNERIE !!!)

Texte de Hubert SAGE, Président de « Laicité et République Sociale » avec les correctifs, en rouge, de Jean Gaillat.

Publié dans COVID, vaccin, virus, Virus; vaccin; COVID; Folie collective | 2 commentaires

Transformer un vieil appareil photo en numérique …

Pour faire suite à mes expérimentations diverses sur l’ordinateur Raspberry Pi Zero W … Tout d’un coup, comme ça, sans prévenir, mon cerveau fébrile a décidé que ce bon vieux Lubitel 6X6 sur lequel j’ai appris les rudiments de la photographie il y a plus de 50 ans (et qui croupissait dans un coin, le pôvre !), pourrait faire un appareil photo numérique sympathique, moyennant quelques “transformations” de mon cru … Alors toujours sur la base de l’utilisation d’un mini ordinateur Raspberry Pi Zero W, mais, cette fois, associé à un module capteur d’image, et  un mini écran plat, je me suis attelé à cette tâche ignominieuse : intégrer un coeur numérique dans un vieil appareil photo.

photo8_DxO

Fabriquer un appareil photo “numérique” ? Mais c’est très simple ! Suivez le guide …

Coût de l’opération 50 Euros !

Mini ordinateur Raspberry Pi Zero W :

Capture d'écran 2021-06-01 19.47.57.png

Module Pi camera et son câble de raccordement :

Capture d'écran 2021-06-01 19.45.35.pngCapture d'écran 2021-06-01 19.49.48

Mini écran (commandé chez AliExpress) :

Capture d'écran 2021-06-01 19.38.29.png photo_1

Ensuite il faut connecter tout ces composants.  Voici les circuits assemblés auxquels j’ai rajouté un bouton poussoir et une diode Led et une nappe de connexion en fils souples.

photo_2

Puis il s’agit de mettre tout ce bins dans le boitier de ce bon vieux Lubitel 6X6. Alors là pas de quartier : J’ai carrément démantibulé le vieil objet, pratiquement  viré tout son contenu, limé et scié l’intérieur afin d’y insérer le mini raspberry puis  l’écran sur le dessus du boitier, le module camera à la place de l’objectif … De plus il faut que je place le bouton poussoir de déclenchement de l’appareil, plus la diode  Led. J’ai du fabriquer une nappe de câblage souple entre l’écran et l’ordinateur ! Attention aux soudures qui se touchent, les connections sont très proches ! Enfin il faudra bien alimenter le tout en 5 Volts …

Lub1 Lub2

Bon alors comment marche ce truc ? Tout d’abord il faut une carte mémoire mini SD dans l’ordinateur (32 Go, 9 Euros à rajouter …). Sur celle ci on aura préalablement installé le système d’exploitation RASPBIAN light pour activer le raspberry Pi Zero. Puis ensuite ( à l’aide d’un écran d’ordi “classique” connecté en HDMi et d’un clavier connecté en USB) il faut configurer le bazar afin qu’il puisse se connecter sur votre Box Internet en WiFi ( il faut connaître le nom de votre Box et le mot de passe d’accès).

Par ailleurs, le mini écran nécessite une programmation particulière pour remplacer un écran “classique”. On doit configurer le système  de cette façon:

1. Téléchargez ce fichier Https://drive.google.com/file/d/1umwEAKLKlEohKUbLIMdVNIeku9UUctaf/view?usp=sharing .
2. Décompressez le et stocker temporairement les fichiers ainsi générés. Il va falloir les copier sur la carte SD …
3. Copiez le fichier  mddpi. dtbo dans le répertoire/boot/superpositions, et copiez les autres fichiers dans le répertoire/boot
4. Redémarrez le raspberry pi; maintenant le système s’affiche sur le mini écran. C’est cool !

Ensuite , on peut débrancher écran et clavier annexes pour programmer le Raspberry Pi via le WiFi, depuis son PC, à l’aide d’un logiciel de terminal comme par exemple le logiciel PUTTY. Tout cela pour ajouter les composants logiciels supplémentaires indispensables. Il faut d’abord  intégrer le langage Python qui va permettre de créer le programme activant la fonction de prise d’images dès l’appui sur le bouton. Je ne vais pas développer ici toutes ces manipulations. Elles sont décrites et se trouvent aisément sur Internet. Je me suis particulièrement inspiré d’un article qui décrivait ce genre de réalisation. J’ai aussi étudié la documentation du module Pi camera qui est très détaillée. Ce module capteur photo permet de réaliser des photographies numériques au format de 8 MegaPixels. On peut faire des séquences d’images, des “time lapes”, des vidéos … Bref, que du bonheur ! Le tout est d’être capable de le programmer … ET là, ce n’est pas gagné !

Pour ma part, hormis l’utilisation d’un mini écran,  je souhaitais faire simple, voire très simple. Mais je souhaitais aussi permettre un accès facile aux photos numériques. Mon idée étant d’être capable de récupérer  les photographies qui seront stockées sur la carte SD de l’engin dans le dossier “Pictures”. L’idée (géniale en fait , si, si) est de partager ce dossier afin de le “voir” sur mon PC sous Windows, à travers le réseau WiFi. Pour cela j’ai dû également installer le serveur de fichiers SAMBA sur le Raspberry Pi. L’article suivant décrit comment procéder pour partager un dossier du Raspberry sur un PC Windows via le réseau local de votre habitation.

Bon ! ça prend forme … Manque le principal : LE PROGRAMME de commande de l’appareil photo … Le voici. C’est un programme écrit en langage Python. Il utilise les commandes que le module PI camera exploite. Je l’ai nommé ChoixMode.py. Il y a certainement des optimisations et améliorations possibles car je ne suis pas un grand spécialiste de ce langage. Mais ça devrait le faire … Et voilà  !!!

import os
import RPi.GPIO as GPIO
import time
import picamera
from picamera import PiCamera
import subprocess as sp
from time import sleep
from RPi import GPIO
from PIL import Image
import time
import threading
import random, string
from twython import Twython
import datetime as dt
from subprocess import call
from gpiozero import Button

 

#****************************************************************
GPIO.setmode(GPIO.BCM)
video = 26 #choix video
GPIO.setup(video, GPIO.IN, pull_up_down=GPIO.PUD_UP)
Gif = 25 # choix Gif
GPIO.setup(Gif, GPIO.IN, pull_up_down=GPIO.PUD_UP)
Picture = 18 # Choix Photo
GPIO.setup(Picture, GPIO.IN, pull_up_down=GPIO.PUD_UP)
Arret = 27 # Choix Arret
GPIO.setup(Arret, GPIO.IN, pull_up_down=GPIO.PUD_UP)
ledCancel = 19
GPIO.setup(ledCancel,GPIO.OUT)
buttonLed = GPIO.PWM(ledCancel, 10)
GPIO.setwarnings(False)
buttonP = Button(18)
buttonG = Button(25)
buttonV = Button(26)
#buttonA = Button(27)
#****************************************************************

#****************************************************************
def onLeds():
    GPIO.output(ledCancel,True)
    sleep(1)

def offLeds():
    GPIO.output(ledCancel,False)
#*****************************************************************
def Video():
print « ************************** mode video actif »
time.sleep(2)
# Initiate the camera module with pre-defined settings.
camera = PiCamera()
camera.resolution = (640, 480)
camera.framerate = 90
def convert(file_h264, file_mp4):
    # Record a 15 seconds video.
    camera.start_preview()
    camera.start_recording(file_h264)
    onLeds()
    sleep(15)
    camera.stop_recording()
    offLeds()
    camera.stop_preview()
    print(« Rasp_Pi => Video Recorded! \r\n »)
    # Convert the h264 format to the mp4 format.
    command = « MP4Box -add  » + file_h264 +  »  » + file_mp4

    call([command], shell=True)
    print(« \r\nRasp_Pi => Video Convertie! \r\n »)
    command1 = « rm  » + file_h264 # cleanup source images
    call([command1], shell=True)

# Record a video name it and convert it to (MP4)and delete h264 source
filename = « /home/pi/Pictures/%s » % (time.strftime(« %G%m%d%H%M%S »))
convert(filename + ‘.h264’, filename + ‘.mp4’)

#retour lecture du choix des modes
print  »     retour au choix des fonctions »
time.sleep(1)
camera.close()

#*****************************************************************
def GIF():
print « ******************** mode GIF actif »
time.sleep(2)
########################
#
# Behaviour Variables
#
########################
num_frame = 8       # Number of frames in Gif
gif_delay = 15      # Frame delay [ms]
rebound = True      # Create a video that loops start <=> end

########################
#
# Camera
#
########################
camera = picamera.PiCamera()
camera.resolution = (540, 405)
#camera.rotation = 90
#camera.brightness = 70
camera.image_effect = ‘none’
# Indicate ready status
buttonLed.start(100)
#statusLed.start(0)

#print(‘En attente de prises de vues’)
camera.annotate_background = picamera.Color(‘green’)
camera.annotate_text = ‘OK pour prises de vues…’
time.sleep(2)
camera.start_preview()
def random_generator(size=10, chars=string.ascii_uppercase + string.digits):
    return  ».join(random.choice(chars) for x in range(size))

### TAKING PICTURES ###
#print(‘sequence en cours’)
#camera.annotate_text = ‘prise de vues active’
camera.annotate_background = picamera.Color(‘red’)
camera.annotate_text = dt.datetime.now().strftime(‘%d-%m-%Y %H:%M:%S’)

#            statusLed.ChangeDutyCycle(0)
buttonLed.ChangeDutyCycle(50)
randomstring = random_generator()
for i in range(num_frame):
    camera.capture(‘{0:04d}.jpg’.format(i))
### PROCESSING GIF ###
#   statusLed.ChangeDutyCycle(50)
buttonLed.ChangeDutyCycle(0)
if rebound == True: # make copy of images in reverse order
  for i in range(num_frame – 1):
                    source = str(num_frame – i – 1) + « .jpg »
                    source = source.zfill(8) # pad with zeros
                    dest = str(num_frame + i) + « .jpg »
                    dest = dest.zfill(8) # pad with zeros
                    copyCommand = « cp  » + source +  »  » + dest
                    os.system(copyCommand)

filename = ‘/home/pi/Pictures/’ + randomstring + ‘-0’
#print(‘Calculs en cours’)
camera.annotate_text = ‘FABRICATION DU GIF EN COURS’
time.sleep(2)
graphicsmagick = « gm convert -delay  » + str(gif_delay) +  »  » + « *.jpg  » + filename + « .gif »
os.system(graphicsmagick)
os.system(« rm ./*.jpg ») # cleanup source images

camera.annotate_text = ‘GIF OK’
time.sleep(2)
camera.stop_preview()

print  »     retour au choix des fonctions »
time.sleep(1)
camera.close()
#******************************************************************
def Photo():
print « ****************** mode Photo actif « 
time.sleep(2)
# parametrage camera
camera = picamera.PiCamera()
camera.resolution = (1280,1024)
camera.framerate = 24
camera.brightness = 55
camera.sharpness = 0
camera.contrast = 0
#camera.exposure_compensation = 0
camera.exposure_mode = ‘auto’
camera.meter_mode = ‘average’
camera.image_effect = ‘denoise’
# Fonction pour images de comptage 1, 2, 3 en overlay sur la prise de vue
def overlayCounter():
    #load images
    img1 = Image.open(‘3.png’)
    img2 = Image.open(‘2.png’)
    img3 = Image.open(‘1.png’)

    # Create an overlay
    # Used with img1 because all are the same size
    pad = Image.new(‘RGB’, (
        ((img1.size[0] + 31) // 32) * 32,
        ((img1.size[1] + 15) // 16) * 16,
    ))

    # paste the overlay – 3
    pad.paste(img1, (0,0))
    ov = camera.add_overlay(pad.tobytes(), size=img1.size)
    ov.alpha = 30
    # layer is 3 because camera preview is on layer 2
    ov.layer = 3
    sleep(1)
    camera.remove_overlay(ov)

    # paste the overlay – 2
    pad.paste(img2, (0,0))
    ov = camera.add_overlay(pad.tobytes(), size=img2.size)
    ov.alpha = 30
    # layer is 3 because camera preview is on layer 2
    ov.layer = 3
    sleep(1)
    camera.remove_overlay(ov)
    # paste the overlay – 1
    pad.paste(img3, (0,0))
    ov = camera.add_overlay(pad.tobytes(), size=img3.size)
    ov.alpha = 30
    # layer is 3 because camera preview is on layer 2
    ov.layer = 3
    sleep(1)
    camera.remove_overlay(ov)

#Overlay image du viseur (pour simuler viseur vieil appareil photo)

img4 = Image.open(‘Viseur.png’)
pad = Image.new(‘RGB’, (
      ((img4.size[0] + 31) // 32) * 32,
      ((img4.size[1] + 15) // 16) * 16,
        ))
pad.paste(img4, (0,0))
o= camera.add_overlay(pad.tobytes(), size=img4.size)
o.alpha = 40
o.layer = 3
 
camera.start_preview()
 
#eclairage Led et decomptage 3 secondes
onLeds()
overlayCounter()

# Definir nom des images prises et dossier d’accueil
filename = « Pictures/%s.jpg » % (time.strftime(« %G%m%d%H%M%S »))
camera.capture(filename)
#retour choix du mode de prise de vue
camera.stop_preview()
offLeds()
print  »     retour au choix des fonctions »
time.sleep(1)
camera.close()

#********************************************************************
def Stop():
print  »   ATTENTION ARRET DU SYSTEME »
time.sleep(5)
os.system(« sudo shutdown -h now »)

#********************************************************************
def LiveViewP ():
  # parametrage camera
camera = picamera.PiCamera()
camera.resolution = (1280,1024)
camera.framerate = 24
camera.brightness = 55
camera.sharpness = 0
camera.contrast = 0
#camera.exposure_compensation = 0
camera.exposure_mode = ‘auto’
camera.meter_mode = ‘average’
#Overlay image du viseur (pour simuler viseur vieil appareil photo)

img4 = Image.open(‘Viseur.png’)
pad = Image.new(‘RGB’, (
      ((img4.size[0] + 31) // 32) * 32,
      ((img4.size[1] + 15) // 16) * 16,
        ))
pad.paste(img4, (0,0))
o= camera.add_overlay(pad.tobytes(), size=img4.size)
o.alpha = 40
o.layer = 3

camera.start_preview()
camera.annotate_text = ‘APPUYEZ SUR BOUTON ROUGE’
while True:
  if GPIO.input(Arret) == False: # selecteur rotatif mis sur Arret
       Stop()
  if GPIO.input(video) == False: # selecteur rotatif mis sur Video
       camera.close()
       Video()
  if GPIO.input(Gif) == False: # selecteur rotatif mis sur  GIF
       camera.close()
       GIF()
  if GPIO.input(Picture) == False: # selecteur rotatif mis sur Picture
       camera.close()
       Photo()
 
 
#*******************************************************************
def LiveViewV ():
  # parametrage camera
camera = picamera.PiCamera()
camera.resolution = (1280,1024)
camera.framerate = 24
camera.brightness = 55
camera.sharpness = 0
camera.contrast = 0
#camera.exposure_compensation = 0
camera.exposure_mode = ‘auto’
camera.meter_mode = ‘average’
#Overlay image du viseur (pour simuler viseur vieil appareil photo)

img4 = Image.open(‘Viseur.png’)
pad = Image.new(‘RGB’, (
      ((img4.size[0] + 31) // 32) * 32,
      ((img4.size[1] + 15) // 16) * 16,
        ))
pad.paste(img4, (0,0))
o= camera.add_overlay(pad.tobytes(), size=img4.size)
o.alpha = 40
o.layer = 3

camera.start_preview()
camera.annotate_text = ‘APPUYEZ SUR BOUTON ROUGE’
while True:
   if GPIO.input(Arret) == False: # selecteur rotatif mis sur Arret
       Stop()
   if GPIO.input(Picture) == False: # selecteur rotatif mis sur Picture
       camera.close()
       Photo()
   if GPIO.input(Gif) == False: # selecteur rotatif mis sur  GIF
       camera.close()
       GIF()
   if GPIO.input(video) == False: # selecteur rotatif mis sur Video
       camera.close()
       Video()
 

#********************************************************************
def LiveViewG ():
  # parametrage camera
camera = picamera.PiCamera()
camera.resolution = (1280,1024)
camera.framerate = 24
camera.brightness = 55
camera.sharpness = 0
camera.contrast = 0
#camera.exposure_compensation = 0
camera.exposure_mode = ‘auto’
camera.meter_mode = ‘average’
#Overlay image du viseur (pour simuler viseur vieil appareil photo)

img4 = Image.open(‘Viseur.png’)
pad = Image.new(‘RGB’, (
      ((img4.size[0] + 31) // 32) * 32,
      ((img4.size[1] + 15) // 16) * 16,
        ))
pad.paste(img4, (0,0))
o= camera.add_overlay(pad.tobytes(), size=img4.size)
o.alpha = 40
o.layer = 3

camera.start_preview()
camera.annotate_text = ‘APPUYEZ SUR BOUTON ROUGE’
while True:
  if GPIO.input(Arret) == False: # selecteur rotatif mis sur Arret
       Stop()
  if GPIO.input(video) == False: # selecteur rotatif mis sur Video
       camera.close()
       Video()
  if GPIO.input(Picture) == False: # selecteur rotatif mis sur  Picture
       camera.close()
       Photo()
  if GPIO.input(Gif) == False: # selecteur rotatif mis sur  GIF
       camera.close()
       GIF()

 
#********************************************************************
def Photo1 ():

with PiCamera() as camera:
    camera.resolution = (1280, 1024)
    camera.framerate = 5
    frame = int(time.time())
    camera.start_preview()
    button.wait_for_press()
    camera.capture(‘/home/pi/Pictures/%03d.jpg’ % frame)
    frame += 1
    camera.close()

#*******************************************************************
os.system(‘clear’)
LiveViewP()

while True:
     
     
      print(« \033[1;31;40m     Appuyer sur le bouton ROUGE  \n »)
      if GPIO.input(video) == False: # selecteur rotatif mis sur video
       Video()
       LiveViewV()

      if GPIO.input(Gif) == False: # selecteur rotatif mis sur GIF
       GIF()
       LiveViewG()

      if GPIO.input(Picture) == False: # selecteur rotatif mis sur Photo
       Photo()
       LiveViewP()
 
      if GPIO.input(Arret) == False: # selecteur rotatif mis sur Arret
       Stop()

Lorsqu’on active ce programme à l’aide de la commande : python ChoixMode.py , en fonction du préréglage d’un commutateur rotatif,  et après appuie sur le déclencheur, l’appareil photo prendra soit une photographie numérique, soit un GIF animé de durée 3 secondes, soit une vidéo de 15 secondes de la scène “vue” par l’appareil.  Quand on choisit le mode Photo simple, les chiffres 1, 2 et 3 s’affichent en surimpression et une image fixe est prise au bout de 3 secondes… Puis le programme revient en position d’attente. Les photos et les GIFs et les Vidéos sont nommées automatiquement par un algorithme d’horodatage et stockées par le programme dans le dossier “Pictures” que j’ai partagé via le serveur Samba. Sur mon PC le dossier partagé apparait et je peux alors récupérer les images … Trop cool !!! 

Capture d'écran 2021-06-01 23.58.25.png

En ce qui concerne la production des GIFS animés le programme permet de prendre pour une durée totale de 3 secondes, 8 images .jpg successives séparées par un délai de 15 millisecondes (la diode rouge clignote), de calculer ensuite l’image GIF animée (.gif) à partir de cette séquence d’images .jpg, d’effacer les images .jpg d’origine et enfin de stocker le GIF avec la date et l’heure en surimpression, dans le dossier “Pictures”. Ahahah trop sympa ! Bon je ne “pousse” pas trop la résolution que je fixe à 540 X 405 pixels afin que les fichiers résultants ne soient pas trop volumineux (typiquement de 900 Ko à 2 Mo).

Enfin, il faut que à chaque mise en marche de l’appareil photo, le programme décrit plus haut démarre automatiquement et tourne “en boucle sans fin” pour qu’on puisse prendre plein de photos … Comment faire ça ?

Créons le script suivant que l’on appellera demarrage.sh; en ligne de commande, taper  sudo nano demarrage.sh et insérons les commandes suivantes :

#!/bin/bash
cd /home/pi
python ChoixMode.py

On sauvegarde, puis on rend ce fichier exécutable via la commande : sudo chmod +x demarrage.sh
Enfin, il faut faire appel à ce script à chaque démarrage du Raspberry. On y parvient en modifiant le fichier rc.local du pi.
Via la commande sudo nano /etc/rc.local on va insérer juste avant l’instruction exit 0 , la commande /home/pi/demarrage.sh & p
uis on sauvegarde le fichier rc.local ainsi modifié.

A partir de maintenant à chaque démarrage du Raspberry Pi, le programme Python ChoixMode.py s’exécutera ! C’est magique !

Voici l’engin à peu près terminé – Derrière l’objectif du haut j’ai caché une grosse diode Led rouge qui s’allume pendant les prises de vue (super pour réaliser des “selfies”). le module camera est derrière l’objectif du bas :

photo_2photo_3photo_1

 

Pour terminer voici le câblage du commutateur et du déclencheur qui permettent à  l’utilisateur de l’appareil photo de présélectionner au démarrage le mode de fonctionnement choisi, soit, prise de vues fixes, soit, prise de séquences GIFs, soit Vidéos… Il comprends également une 4ème possibilité, qui déclenchera l’arrêt logiciel du Raspberry Pi . En effet, le Raspberry Pi étant un ordinateur et il faut l’arrêter “proprement” ( sinon la carte SD peut être corrompue).  Je n’avais pas la possibilité de câbler plusieurs boutons, tout ça parce que l’écran plat utilise presque toutes les bornes du GPIO du PI. J’ai donc dû faire preuve d’astuce …

IMG_4098

Voici l’appareil “numérisé” terminé. On distingue le déclencheur (bouton rouge) et le commutateur rotatif de choix du mode de fonctionnement…

IMG_4101

Enfin il y avait le problème de l’alimentation électrique de tout ce système. Pour générer du 5 volts, à partir d’une batterie au Lithium Ion module 18650 de 3,8 Volts, j’ai utilisé un module step-up réglé sur 5,2 volts qui permet sans problème de tenir l’intensité de 300 à 400 mA demandée par le Raspberry Pi Zero, son écran et son module camera. Ce module élévateur de tension, avec MICRO USB est un MT3608 LM2577. Il est commercialisé pour une somme inférieure à 1 € ! Quand à l’accu 18650 il fait partie des batteries que je récupère régulièrement … Mais il faut un circuit pour le recharger. J’ai donc câblé également un module de chargeur de batterie au Lithium Micro USB 5V TP4056, carte de charge avec Protection,  5 pièces pour 1 € !

Le câblage est le suivant :

Alim  IMG_4111

J’ai dû expérimenter afin de vérifier que l’accumulateur 18650 allait tenir la décharge suffisamment longtemps pour une utilisation confortable de l’appareil photo. Le système consomme 350 mA maxi. Pas de problème !

IMG_4109

 

Voilà ! C’est tout simple … Clignement d'œil En tous cas si vous êtes parvenus jusqu’au bout de cet article, vous avez eu bien du courage … Je suis très content de cette petite réalisation qui m’a permis de comprendre pas mal de choses … Comme disait Léonard, c’est en sciant qu’on devint scie … Je vais de ce pas, précieusement cloner la carte SD qui contient toute cette programmation absolument dantesque … On ne sait jamais ! ça m’ennuierait de tout perdre si la carte SD s’altérait ( ce qui n’est pas rare …)

Tous les programmes et les fichiers nécessaires sont téléchargeables ICI.

Et voici mes premières photos numériques réalisées avec ce Lubitel 166 modifié “Grand Sport” :

20210602164237   20210602165140   20210605090430

Euréka ! ça marche …

Et enfin voici le genre de fichiers GIF qu’il est capable de produire :

C9HJPHNH72-0 33LXVMXRH7-0 0NYTYY19O7-0

Bon … Je pense quand même à des évolutions car le module Pi Camera est capable de capturer des time-lapses – Par ailleurs il existe un autre module de Pi Camera de plus “haute résolution” en 12 Mpixels, compatible avec les objectifs en monture C … Alors, je l’ai acheté (45 € c’est pas la ruine)! Le capteur est bien meilleur et l’on peut adapter tout un tas de vieux objectifs … Voici la bête modifiée; là, ça commence vraiment à ressembler à un vrai !!!

photo_1

Publié dans photographie, Programmation, Python, Raspberry Pi | 2 commentaires

Indispensable Commissaire au Plan …

Le Haut-Commissaire au Plan est chargé d’animer et de coordonner les travaux de planification et de réflexion prospective conduits pour le compte de l’Etat et d’éclairer les choix des pouvoirs publics au regard des enjeux démographiques, économiques, sociaux, environnementaux, sanitaires, technologiques et culturels.

Dernièrement j’ai visionné une Vidéo de l’audition du Haut Commissaire au Plan François Bayrou, par l’association « La Nation Citoyenne » . Indépendamment du personnage et de ses “Ben Heue …” que d’aucuns se plaisent encore à brocarder, j’ai trouvé ses explications très claires, très pragmatiques et très au-dessus des logiques partisanes.

Je suis complètement d’accord avec cette phrase prononcée par Pierre Massé, un ancien Commissaire au Plan :”supprimer le Plan au nom d’un libéralisme impulsif serait priver le pouvoir d’une de ses armes contre la dictature de l’instant “. Et j’aurais aimé être commissaire au Plan … scruter de façon la plus lucide l’univers des possibles, tenir compte de façon précise et neutre des faits objectifs, agir par pure logique avec une vision à 30 ou 40 ans en se méfiant de la dictature de l’immédiaté et des idées trop simplistes … en tenant compte de la préservation du Contrat Social qui est le creuset de la Nation, concept que je n’ai personnellement, pas abandonné… Et qui fait toujours sens selon moi parce que la question républicaine reste une exigence.

Alors, pour en revenir au sujet, dans cette vidéo, le Haut Commissaire au Plan reprend les arguments pro nucléaires réalistes développés entre autres par Jean Marc Jancovici. Mais à la différence de ce dernier jamais il n’est évoqué l’impératif de réduction de consommation (selon Jean Marc Jancovici, afin d’éviter un désastre écologique, il serait nécessaire de diviser par 6  notre consommation énergétique individuelle). Si un écologiste peut évoquer la «décroissance» par contre un «politique» sait bien que les 3/4 de ses électeurs veulent gagner plus pour, non pas consommer plus, mais consommer tout court … D’ailleurs, essayez d’aller parler de la décroissance dans les pays dit émergeants ou sous développés, vous verrez comment vous serez reçus …  Quand dans certains pays  plus de la moitié des habitants vivent avec 100 euros par moi, la moitié des jeunes sont au chômage, d’autres vivant payés comme des journaliers … C’est là où on prend vraiment conscience de l’indécence de certains  “bobos écolos” de notre pays ! 

Cela ne veut pas dire, évidemment qu’il ne faut pas lutter contre le gaspillage énergétique en Europe;  on peut moins “gaspiller”, mieux consommer, etc. Mais vouloir absolument décroître est tout aussi absurde que de vouloir absolument croître. Il s’agit plutôt de changer de modèle de société … C’est plutôt un pouvoir d’achat « non monétaire » qui permettrait de desserrer l’étau de l’économie. Et là c’est le drame ! Quand on voit que, par exemple, les 27 pays membres de l’Union européenne n’arrivent toujours pas à s’entendre sur l’harmonisation de leur fiscalité… Bref. Il y a loin de la coupe aux lèvres. Donc déjà au niveau de notre propre Pays,  il faudrait selon moi,  pratiquer d’abord une real politik pragmatique pour converger vers des solutions viables au sein des blocs géo stratégiques politiquement stabilisés. Autant dire que ça va mettre un certain temps… Malheureusement le temps nous est compté et si nous n’avons pas suffisamment de temps, on va plonger dans le chaos !

Mais avoir une vision “planifiée” ne suffit pas. Il faudrait aussi introduire dans les stratégies politiques une méthode permettant des résultats intermédiaires rapides. Exactement comme dans une entreprise: si tu fais plus vite que tes concurrents, c’est toi que les clients choisissent d’abord… Une méthode dans le style de la méthode “AGILE” que j’ai connue en entreprise pour l’ingénierie logicielle : ce genre de méthode préconise une planification adaptative, un développement évolutif, tout cela dans un cadre d’ amélioration continue. Ces efforts visant à apporter des petites améliorations à intervalles réguliers (de façon incrémentale). L’efficience, la praticabilité et la flexibilité des processus élaborés ainsi  sont constamment évalués et améliorés (via des points de contrôle qu’il faut avoir préalablement prévus) . Malheureusement, l’amélioration continue ne semble pas vraiment être une pratique partagée par les milieux politiques ! Et pour cause , ce que l’un fait, l’autre le défait !!! Ceci est certainement du en partie à la durée limitée des mandats électifs, mais aussi à l’absence crasse de la culture du Processus parmi les Politiques, qui sont plutôt dans la culture des promesses … Et d’ailleurs peut importe qu’elles ne soient pas tenues, de toute façon le coup d’après c’est un autre pantin qui s’y colle…

C’est pourquoi je pense que les choix idéalistes, d’une certaine façon “visionnaires”, sont  inapplicables à court terme. Il faut plutôt être efficace rapidement pour mettre en place les soubassements de ce nouveau monde, le “gros oeuvre”. Mais bien sûr, en gardant bien à l’esprit, en “mémoire” je dirai, où on veut aller (c’est le long terme, c’est la planification, d’où selon moi, l’intérêt du “Plan” …) . Et aussi, un peu comme aux échecs, il faut être capable de réagir très vite : on peux habilement choisir délibérément de se laisser prendre une pièce, à la condition que cela nous fasse gagner un coup d’avance dans notre stratégie d’ensemble. Donc OUI, il faut un Commissaire au Plan et NON cela n’est pas contradictoire avec une capacité de réaction rapide. Mais c’est un parcours du combattant “aussi bien tactique que technique” comme dirait l’autre ! Pour cela il faut une réelle ambition, des projets porteur d’espoirs, bien au delà de la seule gestion de l’économie car réduire l’avenir à la seule perspective économique ne fait pas rêver.

Il faut donc  des politiciens talentueux soutenus par des scientifiques réalistes, une techno structure administrative efficace pour porter, au delà des cycles de votation, cette “mémoire”, cette nécessaire vision à long terme donnée par le “Plan” (une vision, qui explique où on veut aller, comment on y va et comment on contrôle le chemin parcouru). En sommes nous encore capables, dans ce Pays qui a abandonné pas mal d’expertise,  dans cette jungle néo libérale où la Dictature de l’instant et le souhait de Démocratie “immédiate” prédominent et peuvent très vite tourner à l’inconséquence ?  En sommes nous capables encore, avec le boulet de tous ces labyrinthes administratifs inadaptés ou non tenus à jour , qui plombent toute réactivité ? En sommes-nous encore capables avec cette multitude de candidats braillards, impulsifs et hystériques qui se tirent une balle dans le pieds tant ils sont engagés dans des batailles stériles d’égotismes sots et voire, sans le moindre PLAN si ce n’est celui de dégommer l’autre … Ce qui donne au final un pas en avant, deux pas en arrière … l’implosion de la GAUCHE, un taux d’abstention énorme, le retour des extrémistes … et des retraités à la gomme (moi donc …) qui passent leur temps à ronchonner (ceci étant dit le processus de pension des retraités fonctionne bien, ouf !).

Pourtant, il faudrait faire vite pour voir loin car, en attendant, la France  git sur le flanc, râle et chie partout sa décomposition comme une vieille baudruche qui se dégonfle. Un Napoléon PDG à sa proue tente bien des effets de manche, croyant mener une “start-up” alors qu’il ne fait qu’accentuer le désastre, oublieux qu’il est des fondamentaux fondateurs de la République. Et vous pouvez convoquer toutes les figures tutélaires de notre belle Nation au chevet de cette grande malade. La misère explose dans notre pays, 300 000 SDF ne connaissent que la rue, 5,8 millions de nos concitoyens sont au chômage, 10 millions de Français sont considérés comme pauvres, voilà des chiffres (fondation abbé Pierre) qui n’ont jamais été atteints en France. Dans ce concert, la richesse ne cesse de se concentrer entre les mains de quelques-uns et la France a été le deuxième pays au monde où la fortune des milliardaires a le plus progressé en un an. Dans le même temps, les formations « progressistes » surnagent comme elles peuvent dans notre société fracturée, où les crises culturelles et identitaires sur fond de conflit ethno religieux s’exacerbent.

On est bel et bien dans la Merde … Je commence sérieusement à me dire que le bout de ce chemin pour notre pays n’est rien d’autre que l’effacement.

Je ne peux pas l’accepter.

JJ

PS : je sais que cet article pourra être perçu par certains comme ayant un relent de “populisme” ou de “nationalisme” ou un côté “franchouillard”… Mais que je sois bien clair : Mon modèle c’est Jean Jaurès et  l’universalisme républicain plutôt que Jacques Doriot … Je combattrai l’extrême droite par tous les moyens et je n’aurai donc aucun état d’âme à voter pour celui (ou celle) qui permettra in fine d’y faire barrage…

Publié dans Ecologie, Politique | 5 commentaires

Raspberry Pi Zero multi fonctions …

Pour les fans du Raspberry Pi Zero … les programmeurs en langage PYTHON et plus globalement les bidouilleurs fous !

Je vais dans cet article rassembler sous une forme de synthèse, tout ce que j’ai appris depuis quelques semaines ( cf. mes articles précédents) après avoir réalisé plusieurs projets sonores avec une carte électronique de mini ordinateur sous Linux, Raspberry Pi Zero W :

– 1 un générateur aléatoire de sons
– 2 une alarme sonore à détection infra rouge
– 3 une radio Internet
– 4 une horloge parlante
– 5 un lecteur musical

Voici la merveille :

IMG_4049

Alors bien sûr, on peut activer ces différentes fonctions via des commandes manuelles en mode   “terminal” via une fenêtre de commande (comme PUTTY par exemple) depuis un PC distant en WiFi, ou un depuis un mobile équipé d’une application spécifique mais mon but est de faire exécuter automatiquement la fonction choisie préalablement de façon manuelle et autonome. L’idée pour rassembler ces différentes fonctions étant de câbler un commutateur à plusieurs positions qui permettra après sélection de la fonction voulue, de faire démarrer le mini ordinateur Raspberry Pi avec la fonction choisie. En effet on ne peut pas faire cohabiter plusieurs fonctions de génération de sons simultanément car lorsque le Raspberry Pi utilise ses circuits sonores, une autre application sonore ne pourra pas générer un son, puisque le circuit son est déjà occupé. Donc il faudra choisir avant le démarrage du Raspberry Pi la fonction sonore qu’on veut lui faire gérer.

Par exemple en câblant les broches 31, 33, 35 et 37 du GPIO au commutateur de cette façon :

commutateur

Comme, finalement j’ai trouvé un mini commutateur à 5 positions, j’ai câblé le GPIO sur les broches 33, 35, 36, 37, 38, soit 5 choix possibles. En détectant au démarrage du Pi sur quelle broche le Zéro Volt est connecté à l’aide d’un programme (nommé “ChoixFunc.py ”) qui sera lancé automatiquement au démarrage du PI (via crontab –e et les codes @reboot python /home/shares/public/disk1/ChoixFunc.py&), le Raspberry se comportera ensuite soit en générateur de sons rigolos toutes les 2 minutes, soit en alarme, soit en radio Internet, soit en Horloge parlante, soit en générateur de Musique …

Voici donc le code PYTHON que j’ai imaginé pour le programme qui sera exécuté au démarrage du RaspBerry Pi Zero W et qui “surveille” le commutateur de fonctions : 

#!/usr/bin/python
# -*- coding: utf-8 -*-
import os, signal
import RPi.GPIO as GPIO
import time
import subprocess

GPIO.setmode(GPIO.BOARD)
Func1 = 33
Func2 = 35
Func3 = 36
Func4 = 37
Func5 = 38

os.chdir( ‘/home/shares/public/disk1’ )

GPIO.setup(Func1, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(Func2, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(Func3, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(Func4, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(Func5, GPIO.IN, pull_up_down=GPIO.PUD_UP)

if GPIO.input(Func1):
print (« Fonction 1 inactive – pas de bruitage « )
else :
os.system( ‘bash /home/shares/public/disk1/SonMinute.sh’ )
if GPIO.input(Func2):
print (« Fonction 2 inactive – pas d’alarme »)
else :
os.system( ‘./Alarme/Alarme.py’ )
if GPIO.input(Func3):
print (« Fonction 3 inactive – pas de Radio »)
else :
os.system( ‘./Radios/Radios.py’ )
if GPIO.input(Func4):
print (« Fonction 4 inactive – pas d’horloge »)
else :
os.system( ‘./Horloge.sh’ )
if GPIO.input(Func5):
print (« Fonction 5 inactive – pas de musique »)
else :
os.system( ‘bash /home/shares/public/disk1/MusiqueAleatoire/JoueMusiques.sh’ )

Pour changer de fonction il faudra redémarrer le Raspberry en ayant basculé le commutateur sur une autre position parmi les 5 possibles. Je fais au plus simple.

Voici maintenant les codes des différents sous programmes permettant d’exécuter les dites fonctions …

Pour la fonction 1, voici le code de SonMinute.sh le sous programme script capable de générer de façon aléatoire, toutes les 2 minutes, en recherchant un son mp3 choisi au hasard dans le dossier home/shares/public.disk1/Music (pour info j’ai rassemblé 103 sons ou bruits rigolos différents dans ce dossier ! J’aime beaucoup travailler les enregistrements sonores pour conserver ce qui me plait )

cd /home/shares/public/disk1/
while true
do
nombre=0   #initialise
PLANCHER=1
ECHELLE=103
while [ « $nombre » -le $PLANCHER ]
do
  nombre=$RANDOM
  let « nombre %= $ECHELLE »  # Ramène $nombre dans $ECHELLE.
done

S= »Music/ » »$nombre » ».mp3″
echo $S
play -q « $S »

sleep 120
done &

Pour la fonction 2, voici le code PYTHON de Alarme.py le sous programme que j’ai créé pour gérer un mini détecteur infra rouge :

#!/usr/bin/python
import os, signal
import RPi.GPIO as GPIO
import subprocess
os.chdir( ‘/home/shares/public/disk1/Alarme’ )

GPIO.setmode(GPIO.BOARD)
butPin = 13
GPIO.setup(butPin, GPIO.IN)
Niveau = GPIO.input(butPin)
try:
     while 1:
         if GPIO.input(butPin):
            print(« Broche 13 au niveau logique 1 »)
            subprocess.call(‘/home/shares/public/disk1/Alarme/SonsAlarme.sh’)
         else:
            print(« Broche 13 au niveau logique 0 »)
            #subprocess.call(‘/home/shares/public/disk1/Alarme/SonsAlarme.sh’)
except KeyboardInterrupt:
    GPIO.cleanup()

On remarque que ce programme fait appel au script SonsAlarme.sh dont voici le code  : (après détection de présence, il génère de façon aléatoire des sons d’alarme situés dans le dossier home/shares/public/disk1/Alarme; j’ai actuellement 19 sons mp3 dans ce dossier, des aboiements de chiens, des sirènes, ma voix truquée, bref que des trucs bien gonflants !)

#!/bin/bash

nombre=0   #initialise
PLANCHER=1
ECHELLE=19
while [ « $nombre » -le $PLANCHER ]
do
  nombre=$RANDOM
  let « nombre %= $ECHELLE »  # Ramène $nombre dans $ECHELLE.
done

S= »$nombre » ».mp3″

echo $S

play -q « $S »

Pour la fonction 3, voici le code PYTHON de Radios.py le sous programme qui gère la Radio Internet. Je gère une vingtaine de stations Web Radios :

Voir mon article précédent sur le sujet : https://jeangaillat.wordpress.com/2021/04/17/radios-internet-avec-un-raspberry-pi-zero-w/

Pour la fonction 4, voici le code du script Horloge.sh, qui permet à l’ordinateur de nous dire l’heure courante (avec la cloche du Carillon en prime…) :

#!/bin/bash
for (( ; ; ))

do
#jouer un petit son sympa
espeak -a 200 -v mb-fr1 -s 150 « l’heure exacte est » –stdout | aplay
cd /home/shares/public/disk1/
# prononcer l’heure courante
H=$(date +%k)
./dit.sh « $H » »heure »;
M=$(date +%M)
./dit.sh « $M » »minute »;

#Faire sonner le son du carillon autant de fois  que nécessaire à l’heure pile $
i=0

if test $H -gt 12
then
i=12
fi

if test $M -eq 0
then
play -q IntroBigBen.mp3;
while [ $i -ne $H ] ; do
play -q Carillon.mp3;
i=$(($i + 1))
done
fi

On trouvera plus amples explications dans ce précédent article : https://jeangaillat.wordpress.com/2017/12/25/jai-fabriqu-une-horloge-parlante/

Pour la fonction 5, voici le code du script JoueMusiques.sh, qui permet à l’ordinateur de jouer les uns après les autres, de façon aléatoire, des fichiers mp3 stockés dans le répertoire home/shares/public/disk1/MusiqueAleatoire. J’ai mis là dedans un certain nombre de mes mes morceaux préférés de Soft Machine, en passant par Tchaïkovsky, Pink Floyd, Genesis ou Malher …. Oui, je suis assez éclectique !

mpg123 -Z /home/shares/public/disk1/MusiqueAleatoire/*.mp3

Ce qui est remarquable  dans ce petit système c’est que je peux l’alimenter en nouveaux sons à distance très facilement depuis mon PC car les dossiers sont accessibles du fait de la fonction NAS préprogrammée en background dans le système .(voir mon précédent article sur le sujet ici )

Capture d'écran 2021-05-03 10.16.04.png

Voici le bijou : On distingue un bouton rouge en haut  pour le changement de stations quand la radio est activée, un bouton rouge en bas qui permet d’arrêter logiciellement l’ordinateur, le détecteur infra rouge (rond blanc) en haut à droite du bouton rouge, sur le côté les cônes des 2 mini haut parleurs et entre les deux, le commutateur sélecteur de fonctions… au dessus l’interrupteur de mise en marche général et la prise de charge des accus.

Cliquer sur l’image pour visionner une démonstration :

bijou

Voilà vous savez tout sur ce petit montage associant électronique, batteries, programmation informatique, transmission WiFi et sons ! Une bonne bidouille de confiné quoi ! Alors oui je sais ça ne sert à rien ! Pfff ! Mais qu’est-ce que cela a été amusant à concevoir … Et puis c’est sans doute moins grave que de passer son temps devant la Télé … C’est ma “Soft Machine” à moi. Bref, de l’Art à l’état pur. Si si. Comme ce morceau de musique, totalement inutile, mais tellement jouissif !

Publié dans Alarme infra rouge, bidouillage, Horloge parlante, lecteur mp3, Pi Zero, Programmation, Raspberry Pi | Laisser un commentaire

Science sans conscience …

J’entends dire en ce moment : “La religion empoisonne tout. La religion se mêle de sexe, contrôle ce que nous mangeons et exacerbe notre propension à la culpabilité en multipliant les interdits les plus arbitraires. La religion diabolise la science, se fait complice de l’ignorance et de l’obscurantisme. Source de haine, de tyrannie et de guerres, la religion met notre monde en danger.” Et on trouve de plus en plus sur les réseaux sociaux des articles où on parle de Dieu, du Christ, de Allah, et de tout le Saint Frusquin en disant qu’on y croit pas et que c’est infantilisant, simpliste , etc … Et je suis, globalement, de cet avis.

Cependant on trouve bien peu d’articles et d’avis qui évoquent la possibilité d’une spiritualité sans Dieu … Cela me navre.

De surcroit, on ne devrait pas combattre les croyances en les fustigeant. De mon point de vue cela est totalement contre productif et voire même, insultant.  Je serai plutôt d’avis d’évoquer l’espérance du fait de la progression de notre conscience collective par le rationalisme, les sciences, la logique, la cohérence, et aussi l’amour de son prochain, dont je ne vois pas pourquoi ce dernier devrait être revendiqué uniquement par les tenants d’un Monde religieux … Quand on est sans Dieu, on devrait parler un peu plus d’Humanité, de Fraternité. Sans les artéfacts moyen âgeux dont on peut se passer. Et c’est cela qu’il faut montrer : on peut s’en passer. Et il faut expliquer pourquoi et comment on peut s’en passer. Rien ne sert de faire l’exégèse de telle ou telle croyance, telle ou telle Religion car l’on peut s’y perdre et discuter à l’infini alors même qu’il faudrait expliquer, clarifier la posture de l’Athée. Montrer en quoi il est clairvoyant, lucide, mais sans jamais oublier que sans le cœur, sans la générosité de l’esprit, le rationalisme reste sec et froid comme l’espace inter sidéral.

Pour moi, le sans Dieu, la spiritualité c’est la recherche d’une augmentation de la sensibilité de la conscience. Voir plus loin que soi en tant qu’individu, se projeter dans la beauté de la complexité, donner du sens si cela est possible ( car il n’y a pas de sens sans une construction de la réalité)  … et faire en sorte que l’émotion porte la beauté et pas la peur ou la haine. Et puis s’en réjouir. l’Athée passe généralement pour un hédoniste, un consumériste, un nihiliste, incapable de tendre la main, et qui serait sans moral et ne se poserait aucune question sur le sens de la vie.

Je le regrette. C’est tout le contraire : Je considère le bonheur comme le souverain bien et le critère ultime de choix des actions humaines. Notre seule chance d’épanouissement est constitué par la vie terrestre et la constitution du Bien Commun. Mais peut-on se fonder uniquement sur une confiance générale en l’être humain ? Hummm ? Hein ?… Telle est la question que je me pose …

Publié dans Philosophons un peu | 5 commentaires

Radios Internet avec un Raspberry Pi Zero W

Faisant suite à mes précédentes expérimentations, les possibilités d’interactions entre l’ordinateur Raspberry PiZero W et un bouton de commande m’ont donné l’idée de créer une fonction “Radio” sur ce petit ordinateur sans écran et sans clavier. En effet, il est très facile d’écouter des flux radio en provenance d’Internet avec un ordinateur équipé d’une carte son et d’un accès WiFi … Pas besoin de clavier, ni de souris ! Aussitôt dit, aussitôt fait … J’ai un peu galéré pour trouver la bonne façon de programmer mon idée mais maintenant ça fonctionne. Voici le code du programme “Radios.py” que j’ai écrit en langage PYTHON pour ce projet. Pour l’articulation des commandes logicielles, je me suis inspiré d’idée glanées sur le Net ici. On peut certainement faire plus élégant en terme de codage, mais j’ai voulu aller au plus simple :

#!/usr/bin/python
# -*- coding: utf-8 -*-
import os, signal
import RPi.GPIO as GPIO
import subprocess
from time import sleep
GPIO.setmode(GPIO.BOARD)
butPin = 11
GPIO.setup(butPin, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(12, GPIO.IN, pull_up_down=GPIO.PUD_UP)
oldButtonState1 = True
i=0
os.system( ‘espeak -a 200 -v mb-fr1 -s 150 « Radio Internet activée » –stdout | aplay’ )
try:
    os.system( ‘play Start.mp3’)

    while 1:
         if GPIO.input(butPin):
          
print (i)
           #print(« Attente appui sur bouton »)
        
else:
          # print(« Bouton appuyé »)
          i = i+1
          if (i==1):
           os.system( ‘espeak -a 200 -v mb-fr1 -s 150 « Musique Tchilaoute » –stdout | aplay’ )
           subprocess.call([‘killall’, ‘mpg123’])
           subprocess.Popen([‘mpg123’, ‘http://mp3channels.webradio.antenne.de/chillout’%5D)
          else:
            if (i==2):
             subprocess.call([‘killall’, ‘mpg123’])
             os.system( ‘mpg123 reglage.mp3’ )
             os.system( ‘espeak -a 200 -v mb-fr1 -s 150 « Radio Nostalgie » –stdout | aplay’ )
             subprocess.Popen([‘mpg123’, ‘http://185.52.127.132/fr/30601/mp3_128.mp3?origine=fluxradios’%5D)
            else:
             if (i==3):
              subprocess.call([‘killall’, ‘mpg123’])
              os.system( ‘mpg123 reglage.mp3’ )
              os.system( ‘espeak -a 200 -v mb-fr1 -s 150 « Station Europe Numéro 1 » –stdout | aplay’ )
              subprocess.Popen([‘mpg123’, ‘http://ais-live.cloud-services.paris:8000/europe1.mp3’%5D)
             else:
              if (i==4):
               subprocess.call([‘killall’, ‘mpg123’])
               os.system( ‘mpg123 reglage.mp3’ )
               os.system( ‘espeak -a 200 -v mb-fr1 -s 150 « station France Info » –stdout | aplay’ )
               subprocess.Popen([‘mpg123’, ‘http://direct.franceinfo.fr/live/franceinfo-midfi.mp3’%5D)
              else:
               if (i==5):
                subprocess.call([‘killall’, ‘mpg123’])
                os.system( ‘mpg123 reglage.mp3’ )
                os.system( ‘espeak -a 200 -v mb-fr1 -s 150 « Station France Inter » –stdout | aplay’ )
                subprocess.Popen([‘mpg123’, ‘http://direct.franceinter.fr/live/franceinter-midfi.mp3’%5D)
               else:
                if (i==6):
                 subprocess.call([‘killall’, ‘mpg123’])
                 os.system( ‘mpg123 reglage.mp3’ )
                 os.system( ‘espeak -a 200 -v mb-fr1 -s 150 « Station Grouve Salade » –stdout | aplay’ )
                 subprocess.Popen([‘mpg123’, ‘http://ice3.somafm.com/groovesalad-128-mp3’%5D)
                else:
                 if (i==7):
                  subprocess.call([‘killall’, ‘mpg123’])
                  os.system( ‘mpg123 reglage.mp3’ )
                  os.system( ‘espeak -a 200 -v mb-fr1 -s 150 « Station de Jazz et de Blouze » –stdout | aplay ‘ )
                  subprocess.Popen([‘mpg123’, ‘http://jazzblues.ice.infomaniak.ch/jazzblues-high.mp3’%5D)
                 else:
                  if (i==8):
                   subprocess.call([‘killall’, ‘mpg123’])
                   os.system( ‘mpg123 reglage.mp3’ )
                   os.system( ‘espeak -a 200 -v mb-fr1 -s 150 « Station Allemande » –stdout | aplay’ )
                   subprocess.Popen([‘mpg123’, ‘http://mp3channels.webradio.antenne.de:80/antenne’%5D)
                  else:
                   if (i==9):
                    subprocess.call([‘killall’, ‘mpg123’])
                    os.system( ‘mpg123 reglage.mp3’ )
                    os.system( ‘espeak -a 200 -v mb-fr1 -s 150 « Radio Maroc » –stdout | aplay’ )
                    subprocess.Popen([‘mpg123’, ‘http://medradio-maroc.ice.infomaniak.ch/medradio-maroc-64.mp3?.mp3’])
                   else:
                    if (i==10):
                     subprocess.call([‘killall’, ‘mpg123’])
                     os.system( ‘mpg123 reglage.mp3’ )
                     os.system( ‘espeak -a 200 -v mb-fr1 -s 150 « Radio Italienne Raye Ouno » –stdout | aplay’ )
                     subprocess.Popen([‘mpg123’, ‘http://icestreaming.rai.it/3.mp3’%5D)
                    else:
                     if (i==11):
                      subprocess.call([‘killall’, ‘mpg123’])
                      os.system( ‘mpg123 reglage.mp3’ )
                      os.system( ‘espeak -a 200 -v mb-fr1 -s 150 « Radio Américaine » –stdout | aplay’ )
                      subprocess.Popen([‘mpg123’, ‘http://stream-mp3.infowars.com:80/’%5D)
                     else:
                      if (i==12):
                       subprocess.call([‘killall’, ‘mpg123’])
                       os.system( ‘mpg123 reglage.mp3’ )
                       os.system( ‘espeak -a 200 -v mb-fr1 -s 150 « Radio Croate » –stdout | aplay’ )
                       subprocess.Popen([‘mpg123’, ‘http://195.168.61.226:8000/96.mp3’%5D)
                      else:
                       if (i==13):
                        subprocess.call([‘killall’, ‘mpg123’])
                        os.system( ‘mpg123 reglage.mp3’ )
                        os.system( ‘espeak -a 200 -v mb-fr1 -s 150 « Radio Russe » –stdout | aplay’ )
                        subprocess.Popen([‘mpg123’, ‘http://icecast.vgtrk.cdnvideo.ru/vestifm_mp3_192kbps’%5D)
                       else:
                        if (i==14):
                         subprocess.call([‘killall’, ‘mpg123’])
                         os.system( ‘mpg123 reglage.mp3’ )
                         os.system( ‘espeak -a 200 -v mb-fr1 -s 150 « France Musique » –stdout | aplay’ )
                         subprocess.Popen([‘mpg123’, ‘http://icecast.radiofrance.fr/francemusiqueeasyclassique-midfi.mp3’%5D)
                        else:
                         if (i==15):
                          subprocess.call([‘killall’, ‘mpg123’])
                          os.system( ‘mpg123 reglage.mp3’ )
                          os.system( ‘espeak -a 200 -v mb-fr1 -s 150 « Radio Québec » –stdout | aplay’ )
                          subprocess.Popen([‘mpg123’, ‘http://stream02.ustream.ca:8000/cfid128.mp3’%5D)
                         else:
                          if (i==16):
                           subprocess.call([‘killall’, ‘mpg123’])
                           os.system( ‘mpg123 reglage.mp3’ )
                           os.system( ‘espeak -a 200 -v mb-fr1 -s 150 « Radio Espagnole » –stdout | aplay’ )
                           subprocess.Popen([‘mpg123’, ‘http://icecast-streaming.nice264.com/ondacero’%5D)
                          else:
                           if (i==17):
                            subprocess.call([‘killall’, ‘mpg123’])
                            os.system( ‘mpg123 reglage.mp3’ )
                            os.system( ‘espeak -a 200 -v mb-fr1 -s 150 « Echo des Garrigues » –stdout | aplay’ )
                            subprocess.Popen([‘mpg123’, ‘http://91.121.159.124:8000/eko-des-garrigues-128k.mp3’%5D)
                           else:
                            if (i==18):
                             subprocess.call([‘killall’, ‘mpg123’])
                             os.system( ‘mpg123 reglage.mp3’ )
                             os.system( ‘espeak -a 200 -v mb-fr1 -s 150 « Station Europa Pluss » –stdout | aplay’ )
                             subprocess.Popen([‘mpg123’, ‘http://ep256.hostingradio.ru:8052/europaplus256.mp3’%5D)
                            else:
                             if (i==19):
                              subprocess.call([‘killall’, ‘mpg123’])
                              os.system( ‘mpg123 reglage.mp3’ )
                              os.system( ‘espeak -a 200 -v mb-fr1 -s 150 « Radio Loundje » –stdout | aplay’ )
                              subprocess.Popen([‘mpg123’, ‘http://stream1.addictradio.net/addictlounge.mp3’%5D)
                             else:
                              if (i==20):
                               subprocess.call([‘killall’, ‘mpg123’])                              
                               os.system( ‘mpg123 reglage.mp3’ )
                               os.system( ‘espeak -a 200 -v mb-fr1 -s 150 « FIP Grouve » –stdout | aplay’ )
                               subprocess.Popen([‘mpg123’, ‘http://icecast.radiofrance.fr/fipgroove-midfi.mp3’%5D)
                              else:
                               if (i==21):
                                subprocess.call([‘killall’, ‘mpg123’])
                                os.system( ‘mpg123 reglage.mp3’ )
                                os.system( ‘espeak -a 200 -v mb-fr1 -s 150 « FIP Régué » –stdout | aplay’ )
                                subprocess.Popen([‘mpg123’, ‘http://direct.fipradio.fr/live/fip-webradio6.mp3’%5D)
                               else:
                                if (i==22):
                                 subprocess.call([‘killall’, ‘mpg123’])
                                 os.system( ‘mpg123 reglage.mp3’ )
                                 os.system( ‘espeak -a 200 -v mb-fr1 -s 150 « Radio Funki » –stdout | aplay’ )
                                 subprocess.Popen([‘mpg123’, ‘http://streaming.hotmixradio.fm/hotmixradio-funky-128.mp3’%5D)
                                else:
                                 if (i==23):
                                  subprocess.call([‘killall’, ‘mpg123’])
                                  os.system( ‘mpg123 reglage.mp3’ )
                                  os.system( ‘espeak -a 200 -v mb-fr1 -s 150 « Sud Radio » –stdout | aplay’ )
                                  subprocess.Popen([‘mpg123’, ‘https://start-sud.ice.infomaniak.ch/start-sud-high.mp3’%5D)                                
                                 else:
                                  if (i==24):
                                   subprocess.call([‘killall’, ‘mpg123’])
                                   os.system( ‘mpg123 reglage.mp3’ )
                                   os.system( ‘espeak -a 200 -v mb-fr1 -s 150 « France Culture » –stdout | aplay’ )
                                   subprocess.Popen([‘mpg123’, ‘http://icecast.radiofrance.fr/franceculture-midfi.mp3’%5D)
                                   i=0
 
except KeyboardInterrupt:
       GPIO.cleanup()
os.system( ‘play Stop.mp3’ )

 

Voilà ! Il suffit d’activer ce programme depuis Putty ( ./Radios.py) , ou au démarrage de l’ordinateur via la Crontab (sudo crontab -e puis rajouter la ligne @reboot bash /home/shares/public/disk1/Radios/Radios.py), et ensuite, à chaque appui sur le bouton câblé sur la broche 11 du GPIO, l’ordinateur émettra le son d’une nouvelle radio parmi les 13 flux que j’ai choisis. C’est amusant …

Mais, en principe il faut arrêter logiciellement le Raspberry Pi car si on le fait brutalement la carte SD peut être détruite … J’ai donc rajouté un second bouton de commande (connecté à la broche 12 ) qui permet d’arrêter correctement  le Raspberry Pi et en même temps d’arrêter la Radio. Puis j’ai créé un nouveau programme que j’ai intitulé Shutdown.py et dont le codage est le suivant :

#!/usr/bin/python
# -*- coding: utf-8 -*-
import os, signal
import RPi.GPIO as GPIO
import time
import subprocess
GPIO.setmode(GPIO.BOARD)
GPIO.setup(12, GPIO.IN, pull_up_down=GPIO.PUD_UP)
oldButtonState1 = True
while 1:
etatbouton = GPIO.input(12)
if etatbouton != oldButtonState1 and etatbouton == False:
os.system( ‘sudo shutdown -h now’ )
oldButtonState1 = etatbouton
time.sleep(.5)

Ensuite il faut faire en sorte que le Raspberry Pi puisse exécuter ce programme en arrière plan et ce, dès son démarrage. Donc il faut entrer la commande :

crontab -e, puis entrer les codes suivants :

@reboot sudo python /home/shares/public/disk1/Radios/shutdown.py &

Voilà ! On peut redémarrer le Raspberry PI. Il est désormais capable d’être arrêté proprement par appui sur ce deuxième bouton.

Publié dans bidouillage, Programmation, Raspberry Pi | Laisser un commentaire

Alarme sonore avec un Raspberry Pi Zero W

Dans la série “les bidouilles du conconfiné du Dauphiné” …

Lors d’un précédent article j’ai décrit comment transformer un ordinateur Raspberry Pi Zero W en NAS et machine parlante. Puis dans un autre article j’avais montré comment lui faire générer des sons de façon aléatoire.
J’affectionne le Raspberry Pi zero W car il est très peu coûteux, il est multi tâches, et on peut y accéder très facilement en WiFi, pour le programmer via une fenêtre Putty depuis son PC sous Windows. Un régal !

L’intérêt que j’avais trouvé à coupler la fonction NAS avec celle de machine parlante était qu’on peut connecter à son PC Windows (via “connecter un lecteur réseau”) , le disque partagé du NAS ainsi créé et injecter facilement dans celui-ci de nouveaux sons créés depuis Windows :

Voici par exemple ce que je “vois” depuis mon PC; tous les dossiers de la partie accessible “Disk1” de la carte SD du Raspberry sont accessibles sur le lecteur “Z” :

Capture d'écran 2021-04-15 09.51.55

Je peux aussi accéder à l’aide programme “Putty” et programmer en mode “lignes de commandes” le Raspberry :

Capture d'écran 2021-04-15 09.58.11

Alors, dans cet article je vais vous montrer comment à partir de ces premières expérimentations, j’ai transformé ce montage en une alarme parlante.

Pour cela il faut d’abord un détecteur de “présence humaine”. A cet effet je souhaitais  exploiter un signal en provenance d’un détecteur, mini-capteur de mouvement. Il en existe des dizaines de modèles à très bas prix sur Internet, comme par exemple celui-ci :

HC-SR501_1

Le détecteur est capable de fermer un contact lorsqu’il détecte une présence humaine à proximité. Je vais exploiter ce contact, cet “interrupteur” en le câblant sur le Raspberry et je vais écrire un petit programme qui viendra “surveiller” à intervalles réguliers et avec une fréquence élevée, l’état de ce contact. Lorsque le contact sera établi, l’idée est de faire beugler le Raspberry Pi Zero W. J’exploiterai alors le programme que j’avais écrit, pour générer des sons aléatoires, en tant que “sous programme” de ce programme d’alarme … (Je sais pas si je suis bien clair …)

Mais, pour parvenir à tout ça il faut exploiter les broches d’entrée-sorties de mon Raspberry Pi ZeroW. En effet il faut savoir que cet ordinateur possède une rangée de broches accessibles électriquement et pour peu qu’on programme préalablement l’accès à ces broches, on peut alors s’en servir pour activer d’autres programmes et donc, interagir avec l’environnement … Ces ports GPIO (General Purpose Input/Output) soit entrée/sortie sont des ports qui selon la configuration, peuvent être configurés pour jouer soit le rôle d’une entrée, soit le rôle d’une sortie. Cependant pour pouvoir les programmer il faut préalablement charger sur le Raspberry Pi un ensemble de modules logiciels particuliers. Voici ICI la description de ce chargement préalable et le minimum à comprendre pour pouvoir piloter ces broches. C’est ce que j’ai utilisé en tous cas dans ce projet. Attention donc ! Il faut bien préalablement charger sur l’ordinateur les « bibliotèques » Python de commande du GPIO en activant la commande :
sudo apt-get install –yes python-rpi.gpio python3-rpi.gpio

Les broches sont accessibles selon la numérotation suivante :

GPIOPiZero

Pour ma part j’ai exploité la broche 11 (GPIO17 sur le schéma).

Détecteur Raspberry

A l’aide du programme suivant, écrit en langage PYTHON, que j’ai intitulé Alarme.py :

#!/usr/bin/python

import RPi.GPIO as GPIO
import subprocess


GPIO.setmode(GPIO.BOARD)
butPin = 11
GPIO.setup(butPin, GPIO.IN, pull_up_down=GPIO.PUD_UP)
Niveau = GPIO.input(butPin)
try:
while 1:
if GPIO.input(butPin):
print(« Broche 11 au niveau logique 1 »)
else:
# print(« Broche 11 au niveau logique 0 »)
subprocess.call(‘/home/shares/public/disk1/Alarme/SonsAlarme.sh’)
except KeyboardInterrupt:
GPIO.cleanup()

La commande while 1: permet d’activer une boucle de surveillance de la broche 11. Par ailleurs on voit que dans ce programme Alarme.py, je fais appel au sous programme SonsAlarme.sh; Ce sous programme va générer un son de façon aléatoire chaque fois que le détecteur ferme son contact. Voici le détail de ce sous programme :

#!/bin/bash
cd /home/shares/public/disk1/Alarme

#array=(`ls Music/`)

#F=${array[$(expr $RANDOM % ${#array[@]})]}
#echo $F

nombre=0   #initialise
PLANCHER=1
ECHELLE=13
while [ « $nombre » -le $PLANCHER ]
do
nombre=$RANDOM
let « nombre %= $ECHELLE »  # Ramène $nombre dans $ECHELLE.
done

S= »$nombre » ».mp3″

echo $S

play -q « $S »

J’ai utilisé une astuce logicielle dans ce script bash qui joue les sons qui se situent dans le dossier Alarme du Raspberry : Comme je peux ajouter facilement des sons depuis mon PC, le nombre de sons peut être amené à évoluer au gré de mes créations sonores. Donc j’ai prévu la possibilité de modifier l’échelle de détection du nombre de sons jouables aléatoirement (paramètre ECHELLE). Voici actuellement ce que contient le dossier Alarme de mon Raspberry Pi Zero W :

pi@raspberrypi:/home/shares/public/disk1/Alarme $ dir
10.mp3  12.mp3  1.mp3  3.mp3  5.mp3  7.mp3  9.mp3      SonsAlarme.sh
11.mp3  13.mp3  2.mp3  4.mp3  6.mp3  8.mp3  Alarme.py

Il contient des fichiers intitulés de 1.mp3 à 13.mp3, le programme Python Alarme.py et le sous programme script bash SonsAlarme.sh

Principe : lorsque le programme Alarme.py est actif, il surveille la broche 11 du GPIO du Raspberry (celle qui est connectée au détecteur de présence). Lorsqu’une présence est détectée, le contact se ferme et cela active le sous programme SonsAlarme.sh qui active à son tour , de façon aléatoire, un des sons de 1 à 13. Et voilà ! Une alarme bien rigolote. Comme je les aime !

 Correctifs en cas d’utilisation du détecteur infra rouge PIR HC-SR501 : Dans ce cas de figure le détecteur passe sa sortie qui est normalement à l’état bas  (0 Volt) à l’état 1 (3,3Volts) quand il détecte une présence. Inutile de passer par le contact d’un relais relié au zéro volts ! Il suffit de relier la sortie du détecteur sur la broche du GPIO (ici la broche 11).
PIR_detecteur_presence_14
Dans ce cas le programme de détection Alarme.py doit s’écrire comme ceci  :

#!/usr/bin/python

import RPi.GPIO as GPIO
import subprocess
GPIO.setmode(GPIO.BOARD)
butPin = 11
GPIO.setup(butPin, GPIO.IN)
Niveau = GPIO.input(butPin)
try:
while 1:
if GPIO.input(butPin):
print(« Broche 11 au niveau logique 1 »)
subprocess.call(‘/home/shares/public/disk1/Alarme/SonsAlarme.sh’)
else:
print(« Broche 11 au niveau logique 0 »)
except KeyboardInterrupt:
GPIO.cleanup()

 

Publié dans bidouillage, Informatique, Pédagogie, Programmation, Raspberry Pi | Laisser un commentaire