Gmail ongelezen mail teller met Nixie buisjes

Waarschuwing: Nixiebuizen werken met hoge spanning. Bij aanraking dan deze ernstig letsel veroorzaken. Indien je geen ervaring hebt met hoge spanningen: Zoek hulp. Ik ben op geen enkele wijze aansprakelijk te stellen bij het gebruik van de onderstaande informatie. Alles op eigen risico!

Op deze pagina kwam ik zo'n project tegen. Dit project maakt verbinding met Gmail en haalt het aantal ongelezen mail op. Deze worden dan op een tweetal nixiebuisjes weergegeven.

De werking is simpel: Op de PC draait een simpel Python script om verbinding te maken met je Gmail account (Hm....later eens kijken of dat via een ethernet shield kan inn de Arduino zelf). Dit gebeurt eens in de 5 minuten. De verkregen info wordt door het script bewerkt zodat er maar maximaal 99 mails op de nixies weergegeven kunnen worden. Dit omdat er gekozen is voor maar twee buisjes. Zelfs ik die zijn mails niet vaak leest moet moeite doen om er meer dan 99 te krijgen. Pas in het onderstaande Python script wel je mailadres en paswoord aan..

#!/usr/bin/python
#
#
import sys, feedparser, serial, time
#Settings - Change these to match your account details
USERNAME="jouwemail@gmail.com"
PASSWORD="jouwpaswoord"
PROTO="https://"
SERVER="mail.google.com"
PATH="/gmail/feed/atom"
SERIALPORT = "/dev/ttyACM0" # Change this to your serial port!
# type ls /dev/tty.usbserial* to find out what your USB serial port is 

# Set up serial port 
try: 
        ser = serial.Serial(SERIALPORT, 9600)
except serial.SerialException: 
        sys.exit() 
        time.sleep(5.0) # wacht op bootloader

while (1): 
        newmails = int(feedparser.parse(PROTO + USERNAME + ":" + PASSWORD + "@" + SERVER + PATH)["feed"]["fullcount"]) 
        print(newmails) 

        # get last two digits 
        newmails = newmails % 100 
        # print(newmails) geeft een dubbeling in display
        ser.write(str(newmails)) 
        time.sleep(300.0) 

time.sleep(1.0); 
# Close serial port 
ser.close()

Let er wel op als je deze code eruit kopieert dat je de formatting goed moet zetten. Heeft mij een halve dag gekost om die gein uit te vinden. Python is iets wat ik niet dagelijks programmeer. Maar werken doet het..

Het arduino printje spreekt voor zich. De Arduino-boardjes zijn kant en klaar te koop, maar wil je nixies aansturen dan heb je wat aanvullende hardware nodig welke niet standaard op het arduino boardje zit. Nu is op internet hierover veel te vinden, maar Ogi-lumen (nu lumenspar) heeft wel een heel leuk printje hiervoor bedacht. Met headers zodat zij aaneen te rijgen zijn.Zij verzenden echter niet naar Nederland, dus heb ik zelf iets in elkaar gevogeld in een avond. Niet uitbreidbaar, maar dat maakt toch eigenlijk niet uit als je het in een vast project zet? Het printje in de onderstaande foto kost nog geen 10 euro! Inclusief de nixies.



Het geheel is gebouwd op een stukje gaatjesprint. Op de gaatjesprint zitten met afstandsbusjes twee voetjes vastgeschroefd. De voetjes zijn met montagedraad direct aan de print gesoldeerd. Onder de voetjed zitten de twee k155id1 nixiedrivers, het Russische equivalent van de 74141. De 6-polige connector zorgt voor de verbinding met de Arduino, met uitzondering van de groene draad welke de 170 Volt anodespanning voert. Deze gaat naar het hoogspanningsprintje welke is te zien op de complete foto onderaan. Het is niet uitgevoerd met headers zoals het ogi-lumen printje. Hierdoor is het niet mogelijk meerdere printjes in rij te zetten, maar het printje is juist voor deze applicatie gemaakt. Het zou ook zo maar de temperatuur kunnen aangeven...Het schema van de duo-nixie:




Het schema is niet bijzonder. Een 74HC595 schuifregister zorgt ervoor dat de seriele data die van de arduino binnenkomt parallel aangeboden wordt. De parallele data wordt aangeboden aan een tweetal 74141 ofwel in mijn geval k155id1 IC's van Russische makelij. Deze IC's zorgen ervoor dat de parallele data omgezet worden naar getallen. Verder zijn deze IC's op de foto niet te zien daar zij onder de buisvoeten zitten gemonteerd. Zorg verder voor goede ontkoppeling. De 170 volt voor de nixie wordt door een standaard 555 voedinkje opgewekt. De 5 Volt voor de logica komt uit de arduino welke ook d.m.v. de Vin en een aparte voeding de 12 Volt voor de 555-voeding zou kunnen leveren. De 170 Volt is een richtlijn. Men dient de spanning over de anodeweerstand te meten en aan de hand van deze waarde de stroom door de Nixiebuis op 2 mA in te stellen. Over de hier genoemde weerstandswaarde van 15 kOhm dient de spanning dus 30 Volt te bedragen. Dit geldt overigens alleen voor de hier gebruikte IN12 nixiebuisjes. Andere nixiebuisjes zijn uiteraard ook bruikbaar. De IN12 heeft als voordeel dat deze nog steeds goedkoop zijn en de sockets goed verkrijgbaar zijn. Misschien een leuk gezicht met de IN18...Het programmacode in de arduino is op zich simpel. Er wordt geen gebruik gemaakt van bibliotheken, maar alleen van de standaard commando's in het arduino programma. Hieronder de Arduino programma listing:

/* Dit proggy geeft het aantal ongelezen mail weer van
   het Gmail account
   [20140420] (c) PE1NSU
*/

int latchpin = 5;
int clockpin = 6;
int datapin = 7;

boolean isData;
int data;
String buffer;            // Ontvangen karakters
byte index;

void setup() {
  // put your setup code here, to run once:
  pinMode(latchpin, OUTPUT);
  pinMode(clockpin, OUTPUT);
  pinMode(datapin, OUTPUT);
  
  digitalWrite(latchpin, 1);
  digitalWrite(clockpin, 0);
  
  Serial.begin(9600);
  isData = false;
}

void loop() {
  
  while (Serial.available() > 0) {
    buffer += (char)Serial.read();
    isData = true;
  } 
  
  if (isData == true) {  
    data = buffer.toInt();
    byte i = data / 10;
    i = i << 4;
    byte j = data % 10;
    i = i | j;
    digitalWrite(latchpin, 0);
    shiftOut(datapin, clockpin, MSBFIRST, i);
    digitalWrite(latchpin, 1);
    isData = false;
    buffer = "";
  }
  delay(1000);  

}

Het programma is grotendeels zelfverklarend. Er worden alleen vrij standaard commando's gebruikt welke in de Arduino reference op het net uitgelegt worden. Hier is ook een goed gedocumenteerde uitleg te vinden over het aansturen van de 74HC595. Een groot nadeel is dat de AVR microcontrollers moeilijk een gehele byte uit kunnen sturen. Dan is een shiftregister een goede uitkomst,en kost nog minder pinnen ook! Het gecompileerde proggy is maar 4,5 kBytes groot. In de onderstaande foto de comlete opstelling:


Ja, Ik heb 8 ongelezen mailtjes....weer die kl**e reclames zeker??

Op zich een leuk projectje welke ook nog eens laat zien dat het aansturen van Nixiebuisjes helemaal niet zo lastig is. Doordat de nixies beide gelijk worden aangestuurd is geen ingewikkelde software routine nodig om te multiplexen. Als je wil is dit ontwerp makkelijk uit te breiden. Maak een 2e nixieprintje en verbind het kabeltje van de tweede unit parallel aan de eerste, met uitzondering van de witte. Verbind de QH* uitgang van de eerste 74HC595 met de serial in van de tweede(het witte draadje). De QH* is overigens niet naar buiten uitgevoerd. Nu nog een leuk kastje.

[20140420] © PE1NSU

To do list & overdenksels: