-
No cords
07/12/2024 at 00:47 • 0 commentsAll of the peripherals connected to the ESP32 have working code roughed out. A work around for the cpu panic issue with the TFT_eSPI init was figured out to update the project from esp library 2.0.14. The ESP32 lockup issue was related to the usb_serial.begin() function and was fixed in 2.0.15 so that got resolved as well. The IR library doesn't support V3 of the ESP Ardunio library so still stuck on major rev 2 for time being. The light sensor library worked well without any issues. I couldn't find a good RTTTL library, the buzzer output was pretty low as well but at least made noise. The IR led output was pretty disappointing. Resistor was sized for 80 mA current (100 mA is rated max). The transmissions were barely detectable on camera screen. The stock remote IR leds show up pretty brightly when viewed with camera. Need to resize resistor to drive at 300-500 mA to see if that makes these LEDs usable. Started looking for some alternate ones as well.
Haven't started any MSP peripheral work yet. Power via the cradle and battery was tested and both seem to work. Haven't tested battery charging yet. One of the remotes from eBay had a battery that was below the protection board cutoff. It seems to be working after a slow charge back up to 3.6 volts direct to battery terminals and then charged up to 4.2 with one of the eBay remotes.
-
Alpha3 assembly
06/23/2024 at 22:20 • 0 commentsGot the board populated. Forgot one capacitor and grabbed the wrong usb connector, otherwise looked really good. A few solder balls. The TDFN-8 package was really pushing my laser cut stencil but looks like it worked nicely. The IR leds are pretty tiny, will be interesting to see what range they can get.
Tried a 3d printed diffuser / snap dome alignment jig. It worked well for getting the domes onto the tape in right spot. It was too thick for the buttons to work properly. The battery powered vacuum tweezers from ali-express were a great addition to the workbench.
The boss for the bottom case mounting screws interfered with IR demodulator and the light sensor/usb tvs ic. I modified the case to fit. Added courtyard to the bottom layer for the next board.
Baseline code for ESP and MSP were loaded, power via USB connector was working. Sometimes ESP seems to lockup when USB is connected. Also noted some noise on the button matrix. Pressing 4 or 7 seems to trigger a bunch of random button presses.
-
Alpha3 PCB
06/15/2024 at 01:37 • 0 commentsAlpha3 PCB has been finished and sent off for fabrication. All of the power management, battery charging, and IR parts are on a remote shaped PCB to test the fitup. I started routing some of the button matrix and ended up getting everything routed on a 2 layer PCB. Lots of vias and room for some improvements. Maybe 4 layer pcb can be avoided.
-
Schematic updates
06/07/2024 at 22:30 • 0 commentsAdded the the power management to the schematic. LM66200 ideal diode will switch between cradle and usb supply. The 8V from the cradle will get dropped to 5V with LDO regulator. Same ESD protection on the USB lines as alpha2. A second LM66200 is used to switch between the 5V inputs and the battery. MCP73831 charging IC and MAX17048 fuel gauge added for battery charging and status. Two 3.3V regulators, one for the MSP430 and stuff that will run in battery operation, 2nd 3.3V regulator controlled by the MSP for all the peripherals.
IR input and output added. 2 Leds like the original. Backlight for LCD and the buttons are both separately controlled by ESP32. A VEML7700 ambient light sensor was added to attempt to control backlight brightness. The ESP32 has 6 free GPIO non strapping or jtag pins.
The MSP430 has 24 GPIO. 15 are used by button matrix. The rest are used for battery thermistor ADC, fuel gauge alert and i2c. Uart TX to ESP32, battery powered input from LM66200, charger status, and output to control the 3.3V peripheral LDO. The rolling ball switch uses 8th pin on port 2. ESP UART to the MSP was removed.
Think I'm going to do another 2 layer board with all the added parts to test everything out without size constraints before the final 4/6 layer. Another remote test part with the IR and ambient light sensor for testing to test fit-up and operation inside the case.
-
LVGL + EEZ Studio
06/05/2024 at 00:16 • 0 commentsStumbled through getting LVGL working. Struggled getting the screen rotation to work properly in 9.1 of the Arduino library. Eventually gave up and downgraded to 8.3, which worked with the example code. Found an issue/pr that fixed the rotation bug but wasn't yet in a release. Over writing the arduino lvgl library src folder with the current version from github got 9.1 working properly.
Testing EEZ Studio for generating the LVGL code, single screen and label seemed to work. Got the label to update based on button press similar to prior demo code.
-
Alpha2 Progress
05/31/2024 at 14:20 • 0 commentsMade a few tweaks to the Alpha2 board, made R3 a pull-down so backlight defaults to off. This was ESP can be shutdown and screen stays off. The MSP can control the ESP EN pin, currently there is a glitch where it seems to shutdown startup and shutdown again, hopefully just a software issue....
2nd change was to add a vibration sensor to wake up the remote. The original remotes had a 4 pin SMD plastic cage with a gold ball that shakes around on the inside. I couldn't find any economical similar parts from the big US suppliers. Found something similar in a 1210 smd package on Ali-express. This seems to be normally open, but makes the smallest little pulse when moved. It didn't register on DMM but when bodged to the MSP it will wake up the processor on the port2 interrupt. I ordered a few more different types from Ali-express to experiment with.
MSP430 software has been reworked with some look up tables to eliminate the big nested switch statement. Saved 280 bytes of flash. Moved the processing out of the ISR. Button press and release consistently detected.
Next steps to start working on the menu logic in the ESP and getting all the PCB feature complete.
-
Alpha2 Testing
05/25/2024 at 01:38 • 0 commentsAlpha2 PCB was assembled. The MSP430 CCS was cut and paste into a platformio project. A few hiccups getting the chip flashed. ESP32S3 was flashed over the USB. Needed to tweak a few settings to get debug serial output over USB but working consistently now. A weird problem was encountered with the button matrix. 8 buttons weren't working, somewhat grouped in the physical remote, but spread across a number of rows and columns. Turns out the dome switches don't work too well when there is packing tape between them and the PCB. The dome switches were quite fiddly. To save time, I transferred the tape with the dome switches in place from the first alpha board to alpha2. I was focused on alignment of the buttons and didn't realize the order I moved the sections over resulted in excess tape over other pads.
Basic code is working now on both MCU to display the button presses on the LCD. Case fully assembles around the PCB
-
Alpha2 PCB
05/19/2024 at 15:33 • 0 commentsSecond revision of the alpha PCB arrived yesterday. This one was 0.8mm thick and allowed the case to snap shut properly (at least while still bare). Most of the routing is the same with the notable update to mount the ESP32-S3 module on the PCB. The mini usb connector is wired up to the ESP and 3v3 power so complete test of the LCD, button matrix, and button backlight LEDs can be done with the case completely assembled.
The solder paste stencil was laser cut out from mylar and ready to go before the PCBs arrived, a pretty rare occurrence in my workshop. Started to spec out some of the battery charging and power management. The stock cradle voltage is 8Vdc so need to decide to keep remote compatible or if mods to cradle/charger are needed.
Got a blink demo running on a MSP430 launchpad with same MCU but different package running with platformio. Can add migrating the code from the TI CCS to platformio to the todo list.
-
Button matrix scanning
02/22/2023 at 02:27 • 0 commentsI found a full installation for code composer studio 6 and MSPware and ended up installing it on a windows xp vm. It would have been way quicker to just figure out the register settings by hand. Got test code installed on the MSP430 for the button matrix scanning. MSP430 will stay in low power mode with all the matrix rows energized. Interrupt on any column input will start timer for scanning the rows. Byte value for detected key presses are transmitted over uart to the ESP32. ESP32 code was updated to fix the screen rotation and output the key presses on the lcd. Logic for scanning only looks for single button presses, no debouncing. Works good enough for testing.
Next step is to start refining the MSP430 code and functionality. I think it will control the remote button backlight leds, rx/tx to esp32, esp32 power/wakeup, and movement sensor. This will use 6 of the 8 port 1 gpio pins.
The esp32 will just need to handle the screen, battery voltage, and the IR leds leaving room for extra scope. i2s microphones for voice control, buzzer or haptic motor seem like some good additional features.
-
MSP430 Efforts
08/14/2022 at 16:18 • 0 commentsMy last MSP430 project was quite a while ago. It looked like a good choice for the keypad matrix being low power and a lot of I/O plus prior experience developing and programming. TI code composer studio went from revision 6 to 12 in the interim and dropped graphical configuration of the MSP430 peripherals (Grace) from the package. CCS6 was still on laptop but didn't work when I started it up. I uninstalled and upgraded to CSS12 before realizing Grace had been removed. TI doesn't appears to have removed ability to download legacy versions and my CSS6 installer was the online variant which doesn't work so well once servers are shutdown. My experience with Grace was that it was a bit buggy but saved time wadding through data sheet to get up and running. Going to see if any of the old desktops will boot that had CSS6 installed...