Hi, am I to late to get one too?
Not at all, the thing is that mostly I am a coward and didn’t release yet.
That’s not good, so let me make it up to all and finally do it.
Tough I must stress that I consider it unfinished because the fan support is basically none as of yet and the main daemon and printer software is only tested on A06, instruction manuals won’t be included and I hope I can give all the support needed in this thread.
I calculated the component costs and it’s totaling 37.07€, I’m willing to give it away at 40€ as I consider it not a complete product.
I got only 5 pieces soldered up completely, which was a pain to do and I won’t do any more.
The main reason is that I chose the wrong TVS diodes for input protection of which there are 17 per board, and it takes 5-15 minutes to solder one as the pads aren’t designed for hand soldering.
Give me one more month give or take and I’ll have all the things (EXT, printer kit, USB kit, Ethernet & RS232 module, breakout board kit) listed on Tindie.
Currently, only the 5 EXTs and 8 Ethernet/RS232 cartridges are ready.
I need to work a bit on the printer case as it’s not stable enough.
Also all the cases for the breakout board cartridge have yet to be printed.
TL;DR sorry for neglecting this project, give me a month or so to get into it again and I’ll release it
So what would be the price for everything?
And maybe I can help with the printer driver.
I shared a updated printer driver some days ago here that should work with new releases of wiringpi. I only tested it on cm4 yet, because I only have cm4.
But maybe, if your printer modules spi is accessible via /dev/spidev, i could make a version of my driver, that should work with your printer module
I calculated the price for everything, it’ll be 40€ for the EXT, and with all the accessories it’s totaling to 142€. That’s the absolute cheapest I can give those away for. I don’t know how to feel about labor put in, if it’s okay I’ll bump up the baseline prices by a few euros.
Ethernet and RS232: 50€
Components | Ethernet+RS232 | ||||||
---|---|---|---|---|---|---|---|
Item | Amount | Bulk Price/EUR | Unit Price/EUR | Amount | Component Price | ||
Populated PCB | 10 | 299.82 | 29.982 | 1 | 29.982 | ||
RJ45 Ethernet | 16 | 56.16 | 3.51 | 2 | 7.02 | ||
RJ45 Serial | 8 | 44.8 | 5.6 | 1 | 5.6 | ||
Printed Case | 1 | 2 | 2 | 1 | 2 | ||
Sum Per Unit | 44.602 | EUR |
Let’s just round this to 50€.
Printer Kit: 20€
Components | Printer Kit | ||||||
---|---|---|---|---|---|---|---|
Item | Amount | Bulk Price/EUR | Unit Price/EUR | Amount | Component Price | ||
Populated PCB | 10 | 146.82 | 14.681999999999999 | 1 | 14.681999999999999 | ||
Printed Case | 1 | 2 | 2 | 1 | 2 | ||
Sum Per Unit | 16.682 | EUR | |||||
Let’s say 20€. |
USB Kit: 12€
Components | USB Kit | ||||||
---|---|---|---|---|---|---|---|
Item | Amount | Bulk Price/EUR | Unit Price/EUR | Amount | Component Price | ||
Bare PCB | 10 | 69.95 | 6.995 | 1 | 6.995 | ||
USB Sockets | 30 | 32.7 | 1.09 | 3 | 3.2700000000000005 | ||
Sum Per Unit | 10.265 | EUR | |||||
12€ is a nice number, let’s say that. |
Breakout Board: 20€
Components | Breakout Board | ||||||
---|---|---|---|---|---|---|---|
Item | Amount | Bulk Price/EUR | Unit Price/EUR | Amount | Component Price | ||
Bare PCB | 10 | 16.75 | 1.675 | 1 | 1.675 | ||
Pinheader 22x1 | 20 | 25 | 1.25 | 2 | 2.5 | ||
Socket 44pin Expander | 5 | 34.65 | 6.93 | 1 | 6.93 | ||
Socket 44pin Cartridge | 12 | 9.75 | 0.8125 | 1 | 0.8125 | ||
Cable | 10 | 24.8 | 2.48 | 0.82 | 2.0336 | ||
IDC Socket | 10 | 21.9 | 2.19 | 2 | 4.38 | ||
Printed Case | 1 | 1.5 | 1.5 | 1 | 1.5 | ||
Sum Per Unit | 19.8311 | EUR |
Rounded up it’s 20€.
About the printer driver, it works without any problems but it’s messy code.
You can find the code here.
To clarify, the kit for the printer needs your stock DevTerm thermal printer module,
so it’s basically the same code apart from using a different I2C ADC for temperature sensing.
Then sadly i can only afford the ext and printer module for now, and only in one or two months…
This looks like an interesting module and I would definitely like to buy one once you’re ready
Thanks for sticking with me. I think it’s time for another update.
The network+serial and the breakout carts are ready, and the printer cartridge cases are currently printing.
However I made a mistake while soldering the extension boards, which was revealed as this nasty white crud once I washed them with alcohol. Apparently this is a sign I was soldering too hot.
I am currently waiting on a professional PCB cleaner to arrive in the mail and hoping that this will clean it up.
Here’s a view of my unit, the battery holder now has a sticker to prevent shorts from its screws.
Don’t worry about the cable colors, the polarity of the board socket is reversed.
The fans I ordered tough have an absurdly long cable, I can either bunch them up like this or cut+solder them, I think I’ll go with shortening them.
Again, thank you for your patience.
I had a lot going on the last couple of months, but I am glad I am back on track on delivering this.
It also has been quite the learning experience for me regarding manufacturing of a product.
I’ve been away from this community for a while, its awesome to see you are not only still going with this but actually close to it being a real, tangible thing!
since my original ext board seems to be toast I am interested in this module. I’d be willing and able to get the full set of cartridges as well. I am using an R-01 module though (I may be able to sort out any issues with that).
Good, but keep in mind that the printer cartridge kit needs the stock printhead because I couldn’t source this part for the life of me. Yours seems too far gone I’m afraid.
Another update while I’m at it, the EXT modules are all assembled, cleaned with no more residue, and now need to be tested. A short manual will be included as well for the EXT, printer and USB kits.
Tasks to be done are the following, in order of priority:
- testing of the EXT modules themselves by checking the USB ports, scanning the I2C bus and printing a test page
- print the last batch of printer cart cases again because I ran out of filament
- writing the manual for the printer kit, the assembly can be a bit tricky
One more weekend should do it if testing goes well, two more weeks if I run into some last-minute troubles, hoping for the best
I will burn that bridge when I cross it (-: I wouldn’t want to burn yet another ext board with it.
It’s been 16d since my last update, I think I am overdue for some explaining.
TL;DR: I am waiting on Tindie to approve all my listings.
That’s about it, all the stuff has been tested, manuals are printed and packing material is ready.
I am waiting on all products to be public and finally post here before I enter stock.
That way everyone has an equal chance to get one.
Recently, the Openterface Mini-KVM caught my attention and the first thing I thought when I realized this was fully open is stealing their homework and designing a KVM cartridge for this system.
I for sure would get good use out of that, and I feel like I am not alone with that notion.
Tough there’s still quite a bit to do for the software side, unless I’m told otherwise I won’t procrastinate with another project.
Bumping again for an unfortunate update, after a really long time not using my LimeSDR cartridge I now noticed that the TVS diodes cause trouble with some (could be even the majority) of USB devices. With these soldered, some devices as this SDR don’t seem to enumerate with an errno 71. I’m at a crossroads now, I invested a very long time to solder these, because having no input protection is not acceptable. If I desolder them, well, the USB hub could get damaged by static discharges, which is also unacceptable, but less so in my opinion.
The diode is SDD32C05L01 by YAEGO for the interested.
My plan forward is that I’ll list all of my stock as prototypes in the fleamarket section of Tindie with the TVS diodes removed from all USB data lines, with a hefty discount of course.
There will be however a second batch later this year, and that one will fix several issues mainly with production, but also this issue.
I guess I got fooled by the self-tests, as plugging in a CH341 USB UART worked just fine.
Sorry for the disappointment, this whole batch is cursed
Tindie approved all of the listings, so I updated the stock.
Here are the links:
Look what just arrived from Austria! I can’t wait to try it out! Superb job putting this together, thank you!
I’ve had a chance to test my board and have a few questions:
- How does fan control work? The fan on my board is always going full blast. Does it use a GPIO pin or some other mechanism?
- Which direction does the USB module insert into the slot? I don’t see a mention of that detail in the manual.
- I haven’t yet gotten devterm-cartridge-daemon to bulid. There are some smaller issues that I plan to submit a patch for, but one issue is references to a util.h file that doesn’t exist in the repo. Did you forget to commit it?
Hi, thank you for the kind words. Glad you enjoy it. Now to the questions:
- It’s controlled by the EMC2301 with the I2C address
0x2F
. I had success controlling the fan using the following utility and patch: GitHub - Shuudoushi/EMC2301: Software for controlling an EMC2301 via i2c and other standards. / patch
I have to yet come around to porting the fan deamon perhaps. - There’s a hint at page 4 in the manual regarding the orientation inside the cartridge shell, but you are correct. If you want to plug it in directly, this is the correct orientation, with the sockets on top:
- I blundered, yeah it is missing. I pushed the file.
Edit: I see you are using a Pi. I forgot to mention in the manual that you’d have to set the DIP switch in the lower right corner to the correct setting. Good thing yatli added a handy table next to it.
Wonderful, thank you for the responses. And yes, I did notice the nice table next to the DIP switch.
Mind if I ask all of the people who got their Cart EXT which distro and hardware they’re on?
While I tinker on revision 5 of the hardware I might work on an installation guide for the necessary device tree configuration needed for it. Specifically, adding the MCP23008 for slow GPIO and with a little luck the fan controller if the kernel supports it.
I got the CM4, A06, A04 and at last the R01 modules, so I can test anything if I buy a few extra SD cards.
I got it working with this patch. Maybe the i2c device is different on CM4.
I also had to enable I2C with sudo raspi-config nonint do_i2c 0
diff --git a/lib/Config/DEV_Config.c b/lib/Config/DEV_Config.c
index e3e66e4..015cfc3 100644
--- a/lib/Config/DEV_Config.c
+++ b/lib/Config/DEV_Config.c
@@ -147,7 +147,7 @@ void DEV_Delay_ms(UDOUBLE xms)
void GPIO_Config(void)
{
- int Equipment = DEV_Equipment_Testing();
+ /*int Equipment = DEV_Equipment_Testing();
if(Equipment=='R'){
INT_PIN = 4;
}else if(Equipment=='J'){
@@ -159,7 +159,7 @@ void GPIO_Config(void)
while(1);
}
- DEV_GPIO_Mode(INT_PIN, 0);
+ DEV_GPIO_Mode(INT_PIN, 0);*/
}
/******************************************************************************
@@ -241,7 +241,7 @@ void DEV_I2C_Init(uint8_t Add)
#elif USE_DEV_LIB
printf("DEV I2C Device\r\n");
- DEV_HARDWARE_I2C_begin("/dev/i2c-10");//Mount I2C to I2C-10
+ DEV_HARDWARE_I2C_begin("/dev/i2c-1");//Mount I2C to I2C-10
DEV_HARDWARE_I2C_setSlaveAddress(Add);
#endif
#endif
diff --git a/lib/Config/DEV_Config.h b/lib/Config/DEV_Config.h
index ad71b30..c4b5e06 100644
--- a/lib/Config/DEV_Config.h
+++ b/lib/Config/DEV_Config.h
@@ -21,7 +21,7 @@
#include <unistd.h>
#define DEV_SPI 0
-#define DEV_I2C 10
+#define DEV_I2C 1
#define UBYTE uint8_t
#define UWORD uint16_t
diff --git a/lib/Waveshare_EMC2301.c b/lib/Waveshare_EMC2301.c
index b73764e..42d1fc4 100644
--- a/lib/Waveshare_EMC2301.c
+++ b/lib/Waveshare_EMC2301.c
@@ -12,6 +12,11 @@
#include "DEV_Config.h"
#include "Waveshare_EMC2301.h"
+uint8_t MIN_RPM_MULTIPLIER;
+uint8_t MULTIPLIER;
+uint8_t POLES;
+uint16_t TARGET_TACHCOUNT;
+int FAN_SPEED;
int TachoRead_Hb[] = {32,64,128,256,512,1024,2048,4096};
int TachoRead_Lb[] = {0,0,0,1,2,4,8,16};
@@ -21,7 +26,7 @@ int TachoTar_Lb[] = {16,8,4,2,1};
int TachoTar_Sum[] = {128,64,32,16,8,4,2,1};
/******************************************************************************
-function: Read one byte of data to EMC2301 via I2C
+function: Read one byte of data to EMC2301 via
parameter:
Addr: Register address
Info:
@@ -505,4 +510,4 @@ void EMC2301_Directspeedcontrol(UBYTE value)
EMC2301_Write_Byte(EMC2301_FANCONFIG1, 0x00);
EMC2301_Write_Byte(EMC2301_FANSETTING,value);
DEV_Delay_ms(2000);
-}
\ No newline at end of file
+}
diff --git a/lib/Waveshare_EMC2301.h b/lib/Waveshare_EMC2301.h
index bd41119..12045cb 100644
--- a/lib/Waveshare_EMC2301.h
+++ b/lib/Waveshare_EMC2301.h
@@ -87,11 +87,11 @@
// EMC2301_REG_FANMAXSTEP
#define EMC2301_FANMAXSTEP_MAX 0b00111111
- uint8_t MIN_RPM_MULTIPLIER;
- uint8_t MULTIPLIER;
- uint8_t POLES;
- uint16_t TARGET_TACHCOUNT;
- int FAN_SPEED;
+extern uint8_t MIN_RPM_MULTIPLIER;
+extern uint8_t MULTIPLIER;
+extern uint8_t POLES;
+extern uint16_t TARGET_TACHCOUNT;
+extern int FAN_SPEED;
/***************************************************************************/
void EMC2301_setPWMFrequencyBase(double frequencyKHz);
I have a CM4 running Rex’s Bookworm image.