[{"element_type":"user_image","content":"https://cdn-learn.adafruit.com/user_assets/assets/000/001/406/original/IMG_20241119_014817_2-ezgif.com-optimize.gif?1731982695","metadata":{"caption":""}},{"element_type":"user_image","content":"https://cdn-learn.adafruit.com/user_assets/assets/000/001/407/original/Screenshot_2024-11-19_021750.png?1731982752","metadata":{"caption":""}},{"element_type":"user_image","content":"https://cdn-learn.adafruit.com/user_assets/assets/000/001/405/original/IMG_20241118_225802_615.jpg?1731971665","metadata":{"caption":""}},{"element_type":"user_image","content":"https://cdn-learn.adafruit.com/user_assets/assets/000/001/404/original/IMG_20241118_225820_995.jpg?1731971648","metadata":{"caption":""}},{"element_type":"text","content":"\n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n        \u003ch1\u003eV1 - Adafruit Feather Forklift\u003c/h1\u003e\n      \n\n\n\n\n\n\n\n\n\n\n\n","metadata":{}},{"element_type":"text","content":"\n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n        \u003cp\u003e\u003cem\u003eThis is a bit of a project diary / set of notes for myself, to log the variations on the Fork lift builds that I make / encounter. I don't want to take money from the mouth of another so I won't provide good instructions / support.\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003eThere's a\u0026nbsp;\u003ca href=\"https://www.printables.com/model/1058749-3d-printed-rc-forklift-diy\"\u003efree 3D Model on Printables of an RC fork lift\u003c/a\u003e, not that that's a new concept, but this maker Professor Boots has some lovely Remote Controlled (RC) models. \u003cbr\u003eHe takes requests in the youtube comments for the next model to be designed which is an interesting move.\u0026nbsp;\u003cbr\u003eThe recent excavator and crane almost had me as they are really nice, but the models are free while parts lists and instructions are not (which is a fair/interesting model). The \u003ca href=\"https://github.com/ProfBoots?tab=repositories\"\u003esoftware is free\u003c/a\u003e though, so you \"could\" DIY.\u003c/p\u003e\n\u003cp\u003eHe has a skid-steer model (a beginner level RC model) that \u003ca href=\"https://professorboots.com/a/members/650f3661-3359-4cfb-adc2-71cbb8fea447/b40cabd7-99cf-40b4-a789-328ce7fec3da\"\u003eincludes free instructions + BOM\u003c/a\u003e as an example of what paying for his workshop guides offers (like software guidance along with instructions, parts buying links, custom pcbs if needed, and general hand holding).\u003c/p\u003e\n\u003cp\u003eI've considered it a couple of times, but then this fork lift model dropped a few weeks ago, designed to be another beginner level model, and I was hooked (I love forklifts/diggers/tractors - my first word).\u0026nbsp;\u003c/p\u003e\n\u003cp\u003eI decided to pay for the course in the future, but first, as it's meant to be beginner level and in theory understandable with just the model and youtube video, I decided to have a go without the instructions and just build one out of what I've got lying around...\u003c/p\u003e\n\u003cp\u003eFrom the video it looked like it has N20 motors for driving, servos for steering + forklift mast angle, and an ESP32 on a custom PCB with some nice stubby lithium rechargeable batteries.\u003c/p\u003e\n\u003cp\u003eAfter closer inspection there are 3 N20 motors (one per front wheel and one for mast height), but no idea what RPM required.\u0026nbsp;\u003c/p\u003e\n\u003cp\u003eI decided to attempt to use these dollar motor drivers, along with some tiny esp board, but then I got all modular in my head and thought I wonder if Adafruit Feathers or even a doubler would fit. \u003cbr\u003eSadly the doubler is sooo close but the model would need trimming, however a feather would fit, probably stacked with a DC motor or servo featherwing.\u003c/p\u003e\n\u003cp\u003eThen I tried the MG90S servos instead of the blue SG90 ones in the video.\u003cbr\u003e\u0026nbsp;And by tried I mean \u003ca href=\"https://cad.onshape.com/documents/85d7f2a88e6e4db451789f8e/w/5954e3ffa2db87c48972f265/e/b39c36463b87613063c1ebc5?renderMode=0\u0026amp;uiState=672a93f009160f3695370a2a\"\u003eI imported the Main Body .STL file into OnShape\u003c/a\u003e (free cad online), and started importing things like servos and feathers to see how well they aligned in the model of the forklift body.\u003cbr\u003eCAD was also a great way to see how some of the parts might fit together, but I decided to guess instead.\u003c/p\u003e\n\u003cp\u003eIt was too tight to use all the things I wanted, the doubler was a no, the AA batteries no, I could do AAA's or some random lipo to be decided in the future. Using continuous servos instead of N20 motors was also out without major body adjustment, so I decided to do a minor boolean operation for the MG90S as a steering servo and leave it at that (the main mast etc was printing at this point).\u003c/p\u003e\n\u003cp\u003e\u0026nbsp;\u003c/p\u003e\n      \n\n\n\n\n\n\n\n\n\n\n\n\n","metadata":{}},{"element_type":"text","content":"\n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n        \u003ch3\u003eTest Fitting\u003c/h3\u003e\n\u003cp\u003eGenerally good, although not great, but maybe good enough with a tiny bit of cleanup. I should have used supports on some bits, and looking again at the video I can see the mast servo support blocks (above the N20 wheel motors) have been printed with supports.\u003c/p\u003e\n\u003cp\u003eFirst assembly of the mast I've used sewing thread, which lasted a few days and many cycles, but by the time I was on my umpteenth cycle of test fitting circuitry before soldering - it snapped. Since then I've grabbed some thin fishing line which I had bought for circuit board / making projects and threaded that up, it's a bit too thin (0.20mm 3.2kg) but I have another thicker size (0.25mm 5.0kg) that I may use for the second forklift.\u003c/p\u003e\n\u003cp\u003eI think for the first version I've decided it's the Adafruit MiniBoost 5V @1Amp TPS61023 to give the servos 5volts, and rely on the N20 motors running at whatever I give them (I purchased some 3V-6V version a while back and have 3 left) directly from the battery. The brain will be an Adafruit Feather ESP32 v1 \"Huzzah32\", which will supply the servo signals, and be connected to a DC Motor Featherwing to drive all the motors.\u003c/p\u003e\n      \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","metadata":{}},{"element_type":"text","content":"\n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n        \u003ch3\u003eElectronics - Feather edition v1\u003c/h3\u003e\n      \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","metadata":{}},{"element_type":"text","content":"\n  \n  \n  \n        \u003ch4\u003eFirst draft is the Huzzah32 or the Feather ESP32 v1 as I call it (v2 has usb-c). Probably switch to the C6 feather next, but need ESP32 for BT EDR (GamePads)\u003c/h4\u003e\n      \n\n\n","metadata":{}},{"element_type":"product","content":"https://www.adafruit.com/product/3405","metadata":{}},{"element_type":"text","content":"\n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n        \u003cp\u003eI was originally going to use the long male headers that come on the pre-assembled DC Motor + Stepper featherwing, and poke them into the feather esp32 board's pcb holes, permanently soldering them together. Instead I decided to use the short female headers as it was only a tiny bit taller once stacked.\u003c/p\u003e\n      \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","metadata":{}},{"element_type":"text","content":"\n  \n  \n        \u003cp\u003eShort headers are not essential, but you will need either a male/female combo, or to permanently join the boards. Normal male headers work with short female headers (either accept the extra or trim).\u003c/p\u003e\n      \n\n","metadata":{}},{"element_type":"product","content":"https://www.adafruit.com/product/2940","metadata":{"name":"Short Female Headers Kit for Feather","url":"https://www.adafruit.com/product/2940","description":"12pin + 16pin short female headers (2.54mm)","quantity":"1","featured":false}},{"element_type":"product","content":"https://www.adafruit.com/product/3002","metadata":{"name":"Short Male Headers Set","url":"https://www.adafruit.com/product/3002","description":"12-pin + 16-pin male headers 2.54mm","quantity":"1","featured":false}},{"element_type":"text","content":"\n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n        \u003ch4\u003eA Motor driver with Four DC Motor outputs. We'll use 3 of the dc motor outputs (and maybe the 4th for Lights)\u003c/h4\u003e\n      \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","metadata":{}},{"element_type":"product","content":"https://www.adafruit.com/product/2927","metadata":{}},{"element_type":"text","content":"\n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n        \u003ch4\u003eAnd a 5Volt 1amp boost circuit (I've got the TPS61023, but any of these would work).\u003c/h4\u003e\n      \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","metadata":{}},{"element_type":"product","content":"https://www.adafruit.com/product/4654","metadata":{}},{"element_type":"product","content":"https://www.adafruit.com/product/2030","metadata":{}},{"element_type":"product","content":"https://www.adafruit.com/product/2465","metadata":{}},{"element_type":"text","content":"\n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n        \u003ch4\u003eSome large capacitors. I had some 16v 1000uF electrolytic capacitors lying around so used 2, but anything like these would do:\u003c/h4\u003e\n      \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","metadata":{}},{"element_type":"product","content":"https://www.adafruit.com/product/1589","metadata":{}},{"element_type":"product","content":"https://www.adafruit.com/product/2192","metadata":{}},{"element_type":"text","content":"\n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n        \u003ch4\u003eThree N20 Motors (6-9mm shank or something, 100-300rpm)\u003c/h4\u003e\n      \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","metadata":{}},{"element_type":"parts","content":"\n  \u003cdiv class=\"parts-details\"\u003e\n    \u003cdiv\u003e\n      \u003cspan class=\"parts-quantity\"\u003e3\u003c/span\u003e\u003cspan\u003e x \u003c/span\u003e\n        \u003ca href=\"https://www.aliexpress.com/item/1005004953961556.html\" class=\"parts-name\" target=\"_blank\"\u003eN20 5V 300RPM Motors\u003c/a\u003e\n      \u003cdiv class=\"parts-description\"\u003eDon't forget to select the correct variant - I've gone with some 150rpm and 300rpm models\u003c/div\u003e\n    \u003c/div\u003e\n  \u003c/div\u003e\n  \u003cdiv class=\"parts-action\"\u003e\n  \u003cdiv\u003e\n      \u003ca href=\"https://www.aliexpress.com/item/1005004953961556.html\" class=\"parts-url btn-secondary\" target=\"_blank\"\u003eBuy Now\u003c/a\u003e\n\n  \u003c/div\u003e\n\u003c/div\u003e\n\n  \u003cdiv class=\"clearfix\"\u003e\u003c/div\u003e\n","metadata":{"name":"N20 5V 300RPM Motors","url":"https://www.aliexpress.com/item/1005004953961556.html","description":"Don't forget to select the correct variant - I've gone with some 150rpm and 300rpm models","quantity":"3"}},{"element_type":"text","content":"\n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n        \u003ch4\u003eTwo Servos (SG90, or one SG90 and one MG90S in my case)\u003c/h4\u003e\n      \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","metadata":{}},{"element_type":"product","content":"https://www.adafruit.com/product/169","metadata":{}},{"element_type":"product","content":"https://www.adafruit.com/product/1143","metadata":{}},{"element_type":"product","content":"https://www.adafruit.com/product/4326","metadata":{}},{"element_type":"product","content":"https://www.adafruit.com/product/5592","metadata":{}},{"element_type":"text","content":"\n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n        \u003ch4\u003eBattery and some JST-PH plugs and connectors. I used JST male for input, with 3 outputs (2jst + 1wires)\u003c/h4\u003e\n      \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","metadata":{}},{"element_type":"product","content":"https://www.adafruit.com/product/354","metadata":{}},{"element_type":"product","content":"https://www.adafruit.com/product/1863","metadata":{"name":"JST PH 2-Pin Cable - Female Connector 100mm","url":"https://www.adafruit.com/product/1863","description":"2pin connector the same as the LiPo battery","quantity":"1","featured":false}},{"element_type":"product","content":"https://www.adafruit.com/product/1131","metadata":{"name":"JST-PH Battery Extension Cable","url":"https://www.adafruit.com/product/1131","description":"500mm extension cable, we'll cut both ends off to use, and the middle segment too.","quantity":"1","featured":false}},{"element_type":"text","content":"\n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n        \u003ch3\u003eFinally create the Battery Splitter, 5V Boost Circuit, and Servo headers:\u003c/h3\u003e\n\u003cp\u003e\u0026nbsp;\u003c/p\u003e\n      \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","metadata":{}},{"element_type":"text","content":"\n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n        \u003cp\u003e\u0026nbsp;Battery splitter is just the male connector joined to the 3 outputs (two female jst connectors and one set of plain wires), with a 1000uF capacitor joined in the mix to keep the battery voltage from sagging too much.\u003cbr\u003eOne JST female will be plugged into the Feather mainboard (ESP32), one will be attached to the 5V boost circuitry, and the final wired output will be hardwired into the screw terminals of the DC motor featherwing.\u003c/p\u003e\n\u003cp\u003e\u0026nbsp;\u003c/p\u003e\n\u003cp\u003eThe 5V Boost is just a JST PH Male connector for PCBs soldered on to the TPS61023 breakout on the V\u003cem\u003einput\u0026nbsp;\u003c/em\u003e side, along with a 1000uF capacitor on the 5V output side plus the output wires.\u003c/p\u003e\n\u003cp\u003e\u0026nbsp;\u003c/p\u003e\n\u003cp\u003eThe output wires of the 5V boost converter are connected to 3 strips of 4-pin male headers (2.54mm dupont male jumper/header). One each for Ground, Power (5V), and signal. \u003cbr\u003eI've mounted the power+ground strips to a bit of prototype board, and the 4 signal pins are connected via 30AWG silicone wire directly to the DC Motor featherwing.\u003c/p\u003e\n      \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","metadata":{}},{"element_type":"text","content":"\n  \n  \n  \n  \n  \n        \u003ch3\u003eTest wiring\u003c/h3\u003e\n\u003cp\u003eAt this point assuming all the motors are wired up as in the photos and code, it should be good to go. \u003cbr\u003eIt might look something like this:\u003c/p\u003e\n      \n\n\n\n\n","metadata":{}},{"element_type":"user_image","content":"https://cdn-learn.adafruit.com/user_assets/assets/000/001/402/original/IMG_20241117_223549_913.jpg?1731883356","metadata":{"caption":""}},{"element_type":"user_image","content":"https://cdn-learn.adafruit.com/user_assets/assets/000/001/403/original/IMG_20241117_223636_573.jpg?1731883376","metadata":{"caption":""}},{"element_type":"text","content":"\n  \n  \n  \n  \n        \u003ch3\u003eCode:\u003c/h3\u003e\n\u003cp\u003eSo there's some arduino code, 3 different examples (wifi, PS3 controller, bluetooth/gamepad version), and I've added my pins and some rudimentary switching to support the DC Motor featherwing (which only uses the I2C pins) instead of direct pin to motor driver configurations.\u003c/p\u003e\n\u003cp\u003eThen instead of testing that, \u003ca href=\"https://github.com/tyeth/ProfBoots_Mini-Fork/tree/adafruit_motor_library/MiniFork_wifi_CircuitPython\"\u003eI ported the wifi example to circuitpython.\u003c/a\u003e Made some tweaks to websocket/server code, a link back to edit from the control page, and fixed a few expectation errors. Finally with the code sorted I could wait to solder the last bits no longer, so I did that and then tried out the webpage. It worked, but had this appearance of rebooting when I went full power (brownout?), that actually turned out to be a bug / out of range error. Lastly the steering servo needed adjusting as the original code behaved differently than circuitpython.\u003c/p\u003e\n\u003cp\u003ePost use notes: Think I missunderstood the original webpage a bit, but I've got the keys and dials working with my new slider ranges, and not over messaging (onKeyDown repeatedly happens when a key is held).\u003c/p\u003e\n\u003ch3\u003eThoughts:\u003c/h3\u003e\n\u003cp\u003eThe model possibly worked better before adding grease. I should probably have used lubricating oil rather than some synthetic grease, or possibly just white lithium grease, and just a dab'll do ya as AvE would say...\u003cbr\u003eCleanup of the prints in the corner edges of the mast is crucial, ideally that would be avoidable...\u003cbr\u003eYou'll notice the weights on the mast in the video to help the fork carriage return, which I may need to adopt.\u003c/p\u003e\n\u003cp\u003eIt couldn't cope with lifting a full cup of tea, maybe for the next one I can have a better voltage at the motor at low batteries point (got some 3Amp boost converters arriving), barely did empty Captain mug.\u003cbr\u003eOn the plus side, I killed two batteries as it was great fun regaining my forklift skills, rusty but not forgotten!\u003c/p\u003e\n      \n\n\n\n","metadata":{}},{"element_type":"text","content":"\n  \n        \u003ch1\u003eV1.1 - Svelte Edition with separate drivers\u003c/h1\u003e\n\u003cp\u003eInitial thoughts are the red dollar motor drivers I've got soldered up already, and a mini S3 board of some type. I did wonder about having a tiny console where the steering wheel is, which displays the ip address (or at least the end bit) on boot, and battery level generally or something. Similar screen size to the tiny lego screen (0.49\")\u003c/p\u003e\n      \n","metadata":{}},{"element_type":"text","content":"\n        \u003cp\u003eI'd quite like to stick some sensors in there too, show the accelerometer or something, maybe the temperature of the motor drivers, current and voltage too (INA3221).\u003c/p\u003e\n      ","metadata":{}}]