Saturday, May 13, 2023

LCD Display - Nan Ya Plastics Corp. LMDDCS423CK

Trying to figure out this display, that I acquired. No real plans for it. Just thought that it was pretty cool. The only thing I have going so far is the electroluminescent (EL) backlight.

Just using this to keep notes, as I learn more about it. Also open to suggestions and clues.

Numbers on white sticker:
  • 1C290503A320
  • LMDDCS423C

Details on Board:

  • (1) 2 pin power connector for EL backlight
  • (2) 40 Pin Connector
  • (1) OKI M6255 (MSM6255) Dot Matrix LCD Controller
  • (4) Sanyo LC79401 Dot-Matrix LCD Drivers
  • (3) Sanyo LC79430 Dot-Matrix LCD Drivers
  • (2) MT62C256F-70LL
  • (2) 74HC245D CMOS OCTAL BUS TRANSCEIVER

Possible Board details on 40 PIN Connector:

  • Pin 09: Power 5V or 3.3V?
  • Pin 10: Power 5V or 3.3V?
  • Pin 11: Ground
  • Pin 12: Ground

Board details about MSM625:

White sticker with the following text:

  • D1C202A1O
  • M423-GB

Memory Address inputs:

  • A0 is...
  • A1-A15 (Memory Address inputs) are all tied together, and held low.
  • DB0-DB7 (Data Bus) all feed into 74HC245D.

Board details about LCD Drivers:

The combination of the LC79401 & LC79430 tells me that it is possibly 320x240 pixels.

Pictures:

Front:

Back:

Powered EL:

References:

Saturday, March 14, 2020

Woods WiOn 50055 Trigger & Sensor (For Ocotpi)

I was given a Creality CR-10S, and use OctoPi to control the printer.

I wanted to be able to have OctoPi power on and off the printer.

Modifying the Woods WiOn 50055 outlet is perfect for me:
  • Has USB ports to power the Raspberry PI 3 B+.
    • I did learn that I need to use 20AWG usb cables.  The voltage drop on the 28AWG cords that come with everything has too large of a voltage drop.
  • Has an internal switch, and status LED.
  • I can also control it remotely, via WiOn's app.
Finished External Modification: (3.5mm Jack)

I decided to accomplish this by interacting with the WiOn's (ESP8266) GPIO ports that interface the momentary push-button, and power indicator LED.  I could have done it by writing custom firmware for the device, but I didn't want to rely on a network being available.

The USB power supply, and the ESP8266 inside this device do not share a common ground, so I opted to use a NTE Electronics NTE3086 Dual Optocoupler.  Probably good idea to do this, none the less.

Even though this was designed with a Raspberry PI in mind, there is no reason why you couldn't use this with any other circuit that supplies 3.3VDC.  I've also tested the trigger with 5VDC.

The WiOn toggles power on the release of the momentary switch (LOW to HIGH). That translates to HIGH to LOW on the LED side of the optocoupler.


Schematic:


 Circuit On StripBoard:

Ended up just using StripBoard because the circuit was so simple.

3.5mm to Dupont connector for Rasbperry PI: 


OctoPrint PSU Control Settings:

Software:
OctoPrint
PSU Control


Trigger Portion:
I opted to use GPIO 17 for Trigger.  PSU Control allows you to call a Python program to control power. 

Python Code:
## Using GPIO 17 (BCM) to toggle the WiOn device on and off.
## WiOn trigger toggles on Hight to Low.

## Import GPIO library
import RPi.GPIO as GPIO
import time
GPIO.setwarnings(False)

GPIO.setmode(GPIO.BCM)
GPIO.setup(17, GPIO.OUT)
GPIO.output(17, True)
time.sleep(1)
GPIO.output(17, False)


Thw follow screen is where you set up switching and sensing.  You can see where I call my Python program.

I opted to use GPIO 04 for Sensor.  This GPIO pin is pulled up internally with a resistor.  The optocoupler pulls it down whenever the WiOn's power LED is illuminated.

OctoPrint PSU Supply Settings:

You may be interested in my older programming based WiOn entry:
Woods WiOn Indoor Wi-Fi Outlet Modification (Amazon Echo Too!) 

Saturday, December 8, 2018

Nixie Tube Fun

I've always wanted to tinker around with some nixie tubes. I acquired some IN-18 tubes about 15 years ago, and just kind of ignored them. I have finally started tinkering with them.

The first thing I needed to do before I could even do anything with the Nixie Tubes, is build a power supply that is capable of driving them.

I utilized DIYLC (Do it Yourself Layout Creator) to design the layout of the strip-board.

Circuit Layout designed with DIYLC:

DIYLC was missing an Axial Lead Inductor on it's component palette.  I ended up using Java to create my own component.

Inductor I Added:

This is my first circuit built on strip-board. I am a tad messy, hence the reason why I am opting for Strip-Board instead of etching a PCB. You can see where I accidentally laid it on my hot iron. I made a few placement mistakes and and I did not feel like unsoldering, so I utilized DYLC to move some of the components around to accommodate my mistakes.

Circuit built on Strip-Board:

Finally, I was able to load test the circuit, to make sure that it would drive four nixies.

Load Testing Circuit:

I'm pretty clumsy, so I designed a tube socket holder for the nixie tubes:
- Thingiverse IN-18 Nixie Tube PL31p Socket Mounts

Holder:

I also mounted everything to a board, while tinkering, because of the very same reason.

Wood Board:

Video:

Logic:

I am utilizing an Adafruit HUZZAH ESP8266 Breakout board to control what is displayed on the tubes.

https://github.com/jefferoonie/ESP-Huzzah-Nixie-Tube-Clock

ESP8266 → MCP23017 → K155ID1

Breadboard rats-nest to PCB:

Decided to have a PCB made, so that I could get rid of the rats nest that is hanging out on that breadboard.

Drew Schematic:

Routes:

Blank PCB Arrived:

Populated PCB:

There are many things that I would have done differently like:

  • Better labeling and marking of polarity, and etc.
  • Bigger screw holes.
  • Maybe flipped two of the BCD chips.

Finished:
Ended up making the finished housing out of a wood box from Hobby Lobby.
Drew up, and printed a top of the box, based on my previous tube socket holder:
IN-18 Nixie Tube PL31p Socket Mounts - Hobby Lobby Box Lid

Update: Webserer Controls
Decided to throw a web-server on it, for changing time zones, and daylight savings. It captures the offset that correlates with the time zone, and puts it into the emulated EEPROM. The code in Github has been updated to reflect this
Ugly, but works for me.

Saturday, May 19, 2018

HAM Hero!

Something just came on TV about Amelia Earhart.  It reminded me of someone that I knew as a kid, that was influenced by Amelia.

Fern V. Fisher (Call Sign: W9LCJ) was an interesting person from Racine, that was a pilot, flight instructor, mechanic & radio tech.

I used to live by her as a kid, in the 80's. She is one of the people that kind of guided me into the world of computers & electronics.  Little did she know that I would end up making a career out of it.

Fern used to bring me to the HAM swap meets, so that I could bring home a bunch of electronic goodies, to tinker with. I also received a few electronic kits from her, like the Radio Shack 150in1. Even gave me an aircraft receiver.  I just remember that the antenna was a phono plug, so I had to get a phono to F connector, in order to connect it to the rooftop TV antenna.  Yes, I know now that the impedance was probably off.

I was also recently asking a friend, Blake, about amateur radio stuff, and she came to mind. I'm pretty sure my brother remembers me going through the trash, when she tossed out electronic goodies. :P

Still remember when she shook my hand and said, "You shook the hand that Amelia Earhart shook."

Learn About Her:
40 years at Batten
A passion for flight: Local aviation pioneers join Hall of Fame
Obit: Fern Viola Fisher (Call Name W9LCJ)
Southeastern Wisconsin Aviation Hall of Fame

Update June 21, 2019:
I was at the EAA Chapter 838 Museum, and stumbled on some pictures & information. She was inducted into chapter 838's hall of fame, back in 1999.  Took some pictures of them with my phone, so the quality is not the best.  Click on them to enlarge.

Working on a Cub, circa 1943:

Fern with the same Cub (NC37905) in 1991:

A chic Fern Fisher with her Cub Coupe:

Fern with one of the Cubs she flew as an instructor during World War II:

Working the unicom in 1985:

Misc Photo:

Hall of Fame Letter:

Tuesday, February 27, 2018

TI-99/4A & HDX (Dsk2Pc)

I have been playing around with Fred Kaal's HDX server programs, for the TI-99/4a.  Just testing out the DSK2PC portion for a friend.  I don't have a windows machine, so I had to utilize Wine for Linux.

Software:
Hardware:
Wine Notes:
In order for an application running under Wine to see COM1, I had to had a symbolic link:
ln -s /dev/ttyUSB0 ~/.wine/dosdevices/com1

TI Steps:
  1. Boot the Extended Basic v2.7 Cart
  2. Take option [B: TI Writer/Assembler]
  3. Take option [6: RUN PROGRAM FILE]
  4. Enter: DSK1.NPDSK2PC
DSK2PC: File Sent

HDX Server: File Received

Console File Listing: On HDX server, after transfer:

Friday, December 29, 2017

Raspberry Pi 3 Experimentation

I've always wanted a Raspberry PI, but I have never bought one for myself, because I didn't have any plans.  I still do not have any plans, but it will be fun to tinker with, so bear with me.

My father in law gave me one, for Christmas, along with a bunch of goodies to tinker with.

Toys used so far:
  • Raspberry Pi 3,Model B, 1gb RAM
  • Kuman 5 inch Resistive Touch Screen 800x480 HDMI TFT LCD Display
  • Kuman RPI Powerpack v1.2
  • Rii H9S Mini 2.4Ghz Wireless Keyboard
Pi booted into Raspbian, and checking out the command prompt:

As you can see, the screen is chopped off, on the right side. 

I order to remedy this, I added the following to [/boot/config.txt]:
hdmi_group=2
hdmi_mode=87
hdmi_cvt 800 480 60 6 0 0 0


Pi Assembled to Kuman RPI Powerpack:

Utilizing GPIO Extension Board:

This board is where the real fun/experimentation starts. Yes, I like to start small.

Python script to test the LED:
## Import GPIO library
import RPi.GPIO as GPIO

## Use BCM (more later) pin numbering
GPIO.setmode(GPIO.BCM) 
GPIO.setup(5, GPIO.OUT) 
GPIO.output(5, False)

Ended up moving this onto something that was more self contained:



Wednesday, November 30, 2016

TI-99/4A & Woods WiOn IOT Home Automation Testing

So, I decided that I would expand on this past experiment:
Woods WiOn Indoor Wi-Fi Outlet Modification (Amazon Echo Too!)

***NOTE*** This is a work in progress, and who knows where it will go as it is just BSing around.

I wrote a different program, utilizing the Arduino IDE, that would allow my TI-99/4A to make a connection to this device, utilizing Stuart's Web Browser.

WiOn_TI99 ESP8266 Arduino Code:
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>

const char* ssid = "FrogFi";
const char* password = "**********";

ESP8266WebServer server(80);

const int relay = 15;

void handleRoot() { 
  Serial.println("test");
  server.send(200, "text/html", "<99ml><p>TEST</p></99ml>");
}
void handleNotFound(){
  digitalWrite(relay, 1);
  String message = "<99ml><p>File Not Found</p></99ml>";
  message += "URI: ";
  message += server.uri();
  message += "\nMethod: ";
  message += (server.method() == HTTP_GET)?"GET":"POST";
  message += "\nArguments: ";
  message += server.args();
  message += "\n";
  for (uint8_t i=0; i<server.args(); i++){
    message += " " + server.argName(i) + ": " + server.arg(i) + "\n";
  }
  server.send(404, "text/plain", message);
  digitalWrite(relay, 0);
}

void setup(void){
  pinMode(relay, OUTPUT);
  digitalWrite(relay, 0);
  Serial.begin(115200);
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);
  Serial.println("");

  // Wait for connection
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.print("Connected to ");
  Serial.println(ssid);
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());

  if (MDNS.begin("esp8266")) {
    Serial.println("MDNS responder started");
  }

  server.on("/", handleRoot);

  server.on("/on", [](){
    server.send(200, "text/html", "<99ml><p>ON</p></99ml>");
    digitalWrite(relay, 1);
  });

  server.on("/off", [](){
    server.send(200, "text/plain", "<99ml><p>OFF</p></99ml>");
    digitalWrite(relay, 0);
  });

  server.onNotFound(handleNotFound);

  server.begin();
  Serial.println("HTTP server started");
}

void loop(void){
  server.handleClient();
}

I did run into some problems, that I am still working through.  This little web-server not being kind to the older & slower TI.

I figured this out by utilizing telnet.  I would telnet into port 80, on the device, and I noticed that it didn't give very much time to issue HTTP commands like: [GET / HTTP/1.1]

I have been working though the timing by messing with ESP8266WebServer.h, that is part of the esp8266/Arduino libraries.

ESP8266WebServer.h
...
#define HTTP_DOWNLOAD_UNIT_SIZE 1460
#define HTTP_UPLOAD_BUFLEN 2048
#define HTTP_MAX_DATA_WAIT 1000 //ms to wait for the client to send the request
#define HTTP_MAX_POST_WAIT 1000 //ms to wait for POST data to arrive
#define HTTP_MAX_CLOSE_WAIT 200 //ms to wait for the client to close the connection
...

HTTP_MAX_DATA_WAIT is the value that seems to give the TI some time.

I noticed the ESP8266WebServer.h out in the GitHub project has some more timing settings:

I may want to upgrade the packages that I am using.

The good news is, I was able to turn a lamp on, from my TI-99/4A. :)

It is probably a better idea to have a modern server talk to the ESP8266 devices, and have the TI go through that.  That would allow more devices, and a centralized website created for all of them.   It would also eliminate having to play around with the timing on these.