*[NOTES]* The ones shown near the end were just to show that they exist. And some other good alternatives are mentioned in comments. *But for those curious what exactly was shown:* On the left is the Wemos D1 Mini or clone of it, I don't remember which. It's an ESP8266 based board. The USB connection goes to a CH340 serial transceiver so it's serial-only for the USB part. So if you're thinking making USB peripherals (e.g. keyboard/mouse) this not one you want. However it is fairly smallish and it does WiFi unlike the others. There are smaller WiFi enabled boards. This is just one I happened to have sitting there. In the middle is a board that is silkscreened with diymore.cc on the back. But it was sold under a different name I think, only described as a "Beetle" though. I don't know that specific one is still available, but there are multiple of those "beetle" designs of board. Some have with jacks instead of plugs. In any case, it's the same USB capable ATmega32U4 chip that's in a Leonardo or Micro, just with fewer pins broken out. The right-hand one is a Seeedstudio XIAO M0. Also supports USB natively. It's the same SAMD21 chip that's in the Arduino Zero and a lot of other boards. Also with fewer pins broken out. There are a number of other "XIAO" boards that are not "M0". *Regarding Target Audience* My experience has mostly been helping frustrated new users that are really expected something easier for them. Or in some cases people that didn't have problems getting the board going, but were really struggling to get their code size down enough to do what they'd wanted to do. I've usually been able to get people up and going with them. But often they're keen on getting something else by the end of it. I don't know if it will be there when you look at it, but in my channel banner is a board with an ATtiny45V on it. I like the chips well enough. And some of these seem like perfectly good devboards for them. The "your first Arduino" is in the title to target people who are thinking of it that way. It's just really good to know what it is you're about to get into with them.
Wish I saw this before doing battle with the ATTiny85. Got it to work as a mouse jiggler but not before steep learning curve! Thanks for the info. It certainly explains few things that I still didn’t understand.
Nice expression - mouse jiggler. That's precisely what I made for a friend so that they are busy. For me I have a ProMicro and pass data to be sent via buffer to HID keyboard. I generate info from the PC, use that to send to the keyboard via ProMicro ... random human like delays. A few type and fix mistakes. Super productive :-)
For all USB based stuff so far I have used the teensy boards, both the 4.0 and LC. The LC is reasonably cheap so might be something worth looking at for you. There is also one of the small arduino boards that supports it as well. A lot of STM32 boards have hardware usb and the rp2040 or raspberry pi pico does as well, a few ESP32 do too including the newest one the S3 but not all other versions have it. If you just want something easy to use, your best bet is the pi pico or another rp2040 based board, the arduino that supports usb or a clone or a teensy.
@@conorstewart2214 I can give my friend a £3 device to do the needful. I feel less likely to give them a powerful ESP32 for £11 knowing how little they would use it for.
yea I really struggled with attiny85/any attiny because it was very unfamiliar with their pins/functions that came with digispark library. even though I was very very familiar with arduino/esp series code. also, usb sucked so hard... don't recommend them even for experienced guys unless you are familiar with it/must use it.
I fiddled with the "benefit" of having USB support (let's call it that for now) a while ago and ran into said issues. Thanks for explaining and finally making my assumptions reasonable. I was using an ATTiny85 (not a digispark pcb) for one of my projects but didn't get it to run the way I wanted. Would be cool to see alternatives to have usb capabilities for the ATtiny85!
Digispark was my first Arduino board :) It had a lot of limitations, but for the time, price and money it was amazingly good. XIAO ESP32 C3 is so much better in every way, but unfortunately price is still a bit small. So far I am just using plain esp32 wroom modules :) They cost about a euro and require a minimum things to get working.
It's pretty amazing how much power you get from an ESP32 WROOM module. It's a relatively powerful microcontroller with WiFi and Bluetooth built in. They're one of my favorite microcontrollers.
I love Digisparks (preferably the "Kickstarter" editions with the jacks) for when you just need to turn something on or off or perform a basic task on a timer with power from a USB charger. I certainly wouldn't recommend starting with them, though, and they can indeed require additional knowledge in both OS management and hardware programming at times; I think every project I've built with them involved reading the datasheet and directly assigning values to registers rather than the "friendly" Arduino methods one might hope for.
The ATtiny4/5/9/10 series are really nice for this too. All of them use a SOT-23 package. The 10 is pretty much the high end with 12 MHz internal clock, 32kB RAM, 1k ROM and 3 (or 4) IO pins (which all can use an 8-bit ADC). Coding for them is bare-metal but pretty straight-forward. Mouser has them for USD0.47.
My first arduino type project was making a marine light controller using an attiny85. Almost every problem you listed comes from the board and using a bare attiny85 and making your own board is an easy way to go. Of course the number of i/o pins will limit your projects but if you only need a few its not hard at all.
I actually like having lose attiny13a to use without bootloader - even with Arduino framework, doesn't matter. Easy to just plop down and build a simple little circuit around.
It’s a miracle what Mitxela manages to cram into the things. Anyhow if you are looking for a native-USB microcontroller, I’d recommend firstly something with the RP2040 on it, like the Pi Pico. There’s also boards with USB-capable AVRs like the mega32U4 on the Arduino Pro Micro, and there’s a lot of newer ESP32S2/S3/C3/etc. boards that I think all have native USB. Then there’s STM32-based bluepills and blackpills, but watch out for fakes of those.
Totally agree. I built a programmer out of a UART-USB board and ATtiny84, and use the ATTiny85 DIP either in a socket or on a breadboard. The digispark bootloader is nothing but trouble.
Yeah. And most of them seem to ship with older Micronucleus versions, which doesn't help. These boards are a weird set of propositions all around. I'm not sure who they really make the most sense for, in the way they're designed to be used. Usually I'm just in the mode of helping people get them working if they already have them. But, I find myself needing to calibrate expectations of these boards whether someone already has one or is considering getting one.
@@brettb.345 Yeah the MH-ET Live ATtny88 that's in the video is like that. I'm not sure whether you're talking about that one or a different board. The MH-ET Live one is basically what you'd get if you took a classic nano an swapped the ATMega328P for an ATtiny88 and then removed the serial transceiver and replaced it with the Digispark style bit-banging components. It's otherwise largely pin compatible.
coincidentally it was actually my first Arduino board, and yep it caused me quite the headache atm, the micronucleus bootloader was not in that great state so programming was a hassle, i always used to struggle with pin definition in some libraries but overall i did learn a lot with it and made some cool stuff with, i still consider the attiny 85 as a viable option for some projects these days
my recommendation would be an atmega32U4 based board (micro, pro micro, teensy 2.0, feather 32u4, leonardo) , the clones are 4-10 bucks and reputable brands are 20 bucks. the 32U4 has an actual usb 2.0 controller, and will behave as a regular arduino, except you can also use it as a joystick, keyboard, mouse, or even mass storage (i.e. usb key) though it's a bit more involved, ESP32 S2 are also great candidates, as they are basically atmega32U4 on steroids with wifi and bluetooth, high speed (240Mhz vs 16Mhz) and relatively large amounts of memory (128 KB - 4MB ROM 320 KB SRAM) and they can be had absurdly cheap (22 bucks for 10 bare modules, or like 4-5 bucks for a breakout with usb) they only work on usb 1.1 speeds afaik, but they can work as a host, i.e. you can plug an usb keyboard or basically anything usb in it, which allows interesting stuff with gamepads, . not arduino, but a good alternative if you like recent stuff and are familiar with linux, is the Sipeed M1s/pine ox64 , it's available for
I find it immensely annoying that while Arduino Pro Nano type clones continue to remain available really cheap, the Arduino Pro Micro ones that originally sold at the same price seem to either completely be missing from the market now or else sell for ludicrous amounts of money (that gets you multiple STM32F103 clones instead!)...
Wow! I wish I saw this video two months ago. Fantastic job. On thing I would add though...Don’t give up on the actual AtTiny85 chip, it’s very handy. Just use it stand alone and program it with the ubiquitous UNO.
I’ve been called out. First project with a Digispark is exactly what I’m doing now!, haha. Yeah, no hardware UART is a killer. Using a software serial library, together with Micronucleus, already claims half of your flash. 😫 So using a HV programmer has become necessary for me. I’m switching to urboot (only 256 bytes! for UART programming, not USB), and using ATTinyCore v2, to make the most of it. I’ve been willing to F around and find out cos Digisparks seem to be the cheapest _and_ smallest _and_ most power efficient boards commonly available. Mostly I want them for offloading tasks from ESPs running on battery power, since those are power hogs and need to be in deep sleep whenever possible. I really wish low cost Digispark clones using some ATtiny16x4 or 32x4 existed, that would be _way_ more pleasant to program, while still using very little power. Will try one of those little ATmega32u4 boards though, eventually I might need it. RP2040-Zero boards also look neat, (when more power can be spared).
Not good for beginners, but I have used a few for tiny projects that I really couldn't justify a uno or similar for. A quick and dirty servo tester runs fine on it, since it uses 2 pins (1 in, 1 out) and doesn't need usb,or any other special functions. So yeah, not a good choice for beginners, but %90 of the issues you listed are irelevant for what these tiny cheap devices are really meant for.
The main thing I wanted to accomplish was making sure people know what they're getting into. In helping people I've found many of them just don't. A servo tester sounds like a perfectly good use for one.
Can only agree with this video. Wanted to use these boards as a lightweight macro but ended up with 3 bricked boards. I even made a small pcb with two buttons and an rgb led for debugging to solder on top, but once I did that I could even reflash the bootloader. They now live in my pile of shame together with my other unfinished projects...
Yeah, I have extensively modified my DigiCDC library -- to make it work more sensibly with Linux. Tried to compile an old program last night though, and there was an oddball "narrowing" error compiling DigiCDC.cpp / configDescrCDC[]. Had to figure which fields needed to be cast (char) to get the thing to compile. Maintainers have not touched the code in over 5 years. This library is so heavy though, there is little room left to write an interesting program on top of Miconucleous and DigiCDC. Have you ever noticed, that if you solder 5V/Gnd side pins down-facing, a Digispark is the perfect size to fit on a breadboard?
Yeah, I noticed there were commits that are slightly a little more recent. In the screenshot it I remember it looks more like 7 or 8 years, but that's because I take the stable tag that matches the released version that you find in the boards manager since that's what a beginner is likely to do, as opposed to cloning the latest commit into the hardware directory. I gather you were using braced initialization or something. I may have seen someone do that with spark, but I'm not surprised you can. I know on their site they seem to more or less expect people to solder female headers to it. I do have another one kicking around I was thinking of putting a different header style on it, so maybe I should do that. I don't use them that often so, I wasn't too picky on what I used. The Olimexino one I think came with right angled header and I didn't like that as much, so I swapped it out so it would go into a breadboard easier.
Fantastic and informative video, thank you very much. I haven't tried a digispark yet, but if I'd seen one in a catalog I'm sure they would have gotten me for a couple and apparently they'd be of very little practical use. A follow up on 'better alternatives' would be great.
The thing is those ATTiny's can cost cents. So, if you want to prototype a large volume using them they're cool to have around. Just, for hobby projects the $2 is worth way more than the days of frustration.
@@arthurmoore9488 fair enough but it sounds like they're just not very reliable so ultimately they cost more but you pay the difference in time, sanity, and lost productivity. I'll pass
And if you really want to increase your pain resistance, use microchip studio. (That's the IDE for the pro, where you have to do some bit shifting magic) And additionally these newer attinys (eg. atTiny1627) use a magic 'one wire system' for debugging and programming...
The Digispark development board is an extention of the ATTiny85 chip. In my opinion the board is helping to program the chip. After it is programmed I think the idea was to put it in a permanent application. Some development boards have a socket and you can remove the microcontroller easily. This would be handy if the bootloader is damaged. The development board is experimental but the ATTiny chip is a commercial product.
Sound advice. I have other experience and was looking at this option for some lightweight USB stuff. The serial issue is useful info though I'm not planning on using that yet. I was sure to want to sometime.
Wow thanks for this. It explains the intermittent problems I was having. What's your opinion of Atmega32U4-AU devices like the Beetle? Same form factor as the 'Spark, but from what I can tell, the USB connection is a real one.
I started Arduino with a Digispark clone since it was very cheap. Only trouble I had was pullup connected to one of the IO pins for USB functionality. I had no idea why it was always high. And if it's pulled down, the USB didn't work. Anyway, it was figured out after some internet searching.
I had been afraid to upload arduino code to my arduino mega on linux because I bricked my little Digispark board that way. Glad to see that was unnecessary as it had nothing to do with my setup. Guess I'll stick to full arduinos for now.
ATtiny85 is a great chip for really simple projects that require one or two pins. I bought some ATtiny boards that have micro USB connectors but they don't come with a bootloader. Still worth it for the small size, onboard voltage regulator and USB connector. Although not useful for programming, the USB connector is great for powering the ATtiny. No need to break out the bench power supply. For programming the ATtiny, just get an arduino shield.
You know, I agree. Beginners should indeed stick to the better documented devices like the uno, the nano and perhaps the Wemos D1 and NodeMCU boards to cut their teeth on. I am definitely NOT a beginner, but whenever the Digispark comes out, it rarely takes more than ten minutes until my cursing scares the birds out of the garden. What makes devices like the Digispark (and the ESP-01 for that matter) useful is their cheap price. You can get useable ones for under 50ct from china if you buy enough at a time. They are cheap enough that if you brick the occasional unit, you can just throw it out. When I build something where the small pin count isn't an issue, I tend to do my developing on more convenient boards and port my code to digispark or ESP-01 when it is time to deploy it cheaply in a tiny package.
Fell foul of this, the boards at the time looked very useful and so small but I have very limited skills progrming and never got anything working on one. They now have incredibly powerful boards in the same or smaller packages
I like tinkering with ATTiny, since it forces me to study many tricks, and tips to use every single bit of its limited memory. However ATTiny and beginner are not supposed to be in the same sentence.
Despite i had some Arduino Nanos around my desk, my first Arduino project was a USB (CDC) to I2C converter so i used it to interface 24CXX memories for reading and changing content throught a realterm sesion. Curiously I did not have any problem related to the ones in the video (but I agree that my code occupied 98% of the flash) but then I used the digispark with android cell phone connected to an OTG cable. And It worked really nice. A good portable interface. BUT the OTG cable was loosy and VCC had weak contact. Somehow because of that, the flash became corrupted and the terminal showed silly replies. The digispark wasn't able to appear as a programable device again, but i eventually use one of the Arduino Nanos as a programmer, and I could unbrick my digispark that is still working as always. However i guess that i won't update my WIN7 laptop until i had to replace it, if CDC for low speed devices stops working due to the tight standard constrainsts...
I find Digispark very useful and cheap, of course it's not that beginner friendly as arduino. But I have only one arduino uno which I use only for prototyping and several digisparks for the same price. Many trivial tasks can be offloaded to digispark. For example, I used digispark to display some info from python script via libusb to external I2C 2004 LCD display. Here is another idea: using internal ADC connect several keys in R-2R DAC scheme thus one creates a deck with programmable keys/functions (ideally 10bit ADC -> 10 keys).
I bought 10 clones. They were with reset pin. But I needed it as io pin (since all other pins are used for SPI). I followed some instruction I found to reconfigure reset pin to io pin, and it worked. The method requires UNO, a capacitor and is somehow risky
I'm guessing the "risky" part is if you don't have a high voltage mode programmer you can't recover from every possible settings change you don't want. If you wanted to go back to enabled reset you can't with only an isp/spi mode programmer. If you were using arduinoisp.ino the capacitor was probably to prevent the uno from auto-resetting when you were trying to program the attiny chip.
i like to use Arm Cortex based MCUs for my LED blinking needs with 800MHz clock, 200 GPIOs and a lot of memory i can blink my LEDs(typically just 1 or 2 LEDs, i'm just a beginner) fast and i don't need to think about hardware constraints and of course a hardware 480 Mbps USB 2.0 is really really useful when i need to send "Hello World" to my arduino serial monitor
I'm not sure what to make of this. There's a lot of middle ground between that and one of these. If your setup is getting a bunch of obstacles out of the way of the things that you are _actually_ trying to learn, good deal.
Also not a beginner but these look next to useless. What is that device with the MEGA32, and what would you recommend that’s competent in this functionality range?
The mega32U4 is one of the AVRs with native USB, and the most common one. It’s found on the Arduino Pro Micro board, and also on one or two versions of the Teensy. As an 8-bit microcontroller it falls short of the capability of 32-bit microcontrollers like the ESP32s, STM32s, and the RP2040, but unless you need to do some complex processing or use loads of memory or can write in nothing but copy-pasted calls to bloated libraries, you can fit a fair bit in an AVR.
Interesting. Yeah it would just lock up for me under a few different distributions. And dmesg reports something inline with what I was saying about need to be bulk. I'd need to do it again to get the exact message, basically the kernel saw that it was trying to create a bulk endpoint on low speed connection and just said "You must have meant interrupt... so I'm going to treat it as an interrupt mode endpoint." another comment here that mentions they had to modify their DigiCDC library to make it work for them. Where it gave one character on the system I'd tried it in on it didn't seem hopeless, but it's another barrier. I think I didn't mention this in the video, but I couldn't get their DigiUSB monitor software think working on the PC either. I don't remember what issues I ran into or how long I spent on it. But I was successful in writing my monitor for DigiUSB, coding against libusb on Linux, getting the single byte HID reports that it generates.
Corrupted all my 3 boards and now my pc did not recognise it and i have to program it with high voltage to set the fuses and these boards emulate usb more then actualy having usb hardware inside of it a arduino pro micro is better for beginners its in some countries a bit cheaper then a overpowered esp or rp2040 based board and are good for basic projects
yeah these were a hack and meant as a tool to teach I2c and one wire stacking. Bought a kit with like 5 levels of daughter boards, it was a fun thing to play with but in no mean was it meant for noobs. This is like level 8 out of 10 in difficulty.
I watch Arduino vids like a pauper looking through the window of a bakery - unable to buy. I cannot write code... and the whole concept of having to connect MY board (say an Uno) to MY computer and down/upload someone else's program to it... makes me far too dependent and vulnerable. Why would I do this? 'Flashing' = damn scary. About as doable in my spare time as brain surgery. All these programmable (Raspberry, Arduino, microcontrollers etc)... seem to operate the same way, and it seriously sucks... having to tell each output 'what to do', when, how... just to use what _I_ bought and paid for??? Yet it arrives... effectively useless? Would I buy a drill, or even a laptop... that was useless till I programmed it myself... manually??? Yeah/nah. I've looked closely at all the instructions they give, visited the pages where 'programs' are offered. Just plugging my board into my computer's USB raises red flags. Never had to do this with any of my previous electronic circuits and inventions... so why would I want to do this now? There HAS to be a better way. I'm leaving it all alone, even though I admire what others manage to get their devices to do.
That's a XIAO M0. It's the same samd21 chip that in the Arduino Zero but just smaller board with fewer pin broken out. But they have other ones in that same shape with the RP2040 and I think an ESP32 one.
@@astrolemonade349 If you mean at 8:10, left is a Wemos/Lolin D1 mini clone. Though there are a bunch of others in the same form factor. The one in the middle is a CJMCU Beetle. Although "Beetle" is also applied to a slightly smaller board also with a ATmega32U4 under the DFRobot name having a micro-b jack on it.
@@astrolemonade349 Actually some of that made it into the notes comment, which for some reason wasn't pinned. It now is. I wrote down that the middle on is silk screened with "diymore.cc" ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-Gg2nM0OdUtQ.html&lc=UgzsrfFyWjrfukZQOi94AaABAg
@@TM-zs7koThank you! This video helped me a lot! I just canceled an order of 4 Attiny85 Digispark since I really don't have the time for resetting bootloaders or dig into ancient stuff. It's sad that it's recommended like hell almost everywhere a tiny mcu is needed.
wait what's the point of these nowadays when the ATSAMD11C is basically the same price? still very constrained, too small for proper arduino, but native USB and orders of magnitude faster. and i assume there's even cheaper and better STM32s EDIT nevermind the cheapest STM with USB is more expensive. looks like the RP2040 is technically cheaper than the ATTiny85 but that's cheating since it needs external flash
I can think of a couple of reasons. But the ATSAM11C is neat. I found that when looking for an Arm chip that would do USB and was available in an SOIC package. I ended buying one and setting it up on SOIC/DIP adapter and getting it to work with USB just operating the PLL from the built-in 32.768khz OSC using its feature to have the PLL track against the inbound USB frames. Later got an xplained pro for it and then made my own little pcb with a samd11c on it. The thing about AVR chips is just that they're simpler if you want to understand them more completely. The documentation isn't all spread out. The instruction set is simpler. You don't have to do as much when coming out reset like configuring clocks. And there's a DIP version. And although I don't know for certain, I suspect the AVR takes a lot more abuse than the SAMD11 does. But, I haven't seen enough of people doing mean things to them to get a sense of that. I've liked learning about all of it, and I'm not manufacturing stuff, just helping people with stuff the want help with. So I don't have really strong opinions about most of this stuff.
As someone else suggested they are good at moving a mouse. I used one to interface to a PS2 keyboard. It presented itself as USB keyboard to a PS4. I could then remap the keyboard to send keypresses - added colour codes to shortcut a game. Quite handy.
Lots of stuff only needs a few IOs. The two uses I currently have are as a "dummy" USB mouse and as a low-power monitor which will switch on an esp8266 (which is much more power hungry) when it detects a signal.
Agreed. Development with the attiny85 is best done with its native OCD development tools such as the AVR Dragon with AVRStudio. Back in the day I used the ATMEL STK500 & STK600 with expansion kits, ICE200 emulator, both JTAG-ICE pods along with ImageCraft C.
wow this makes this board seem pretty useless. i am glad i just have a normal generic arduino uno clone. one of its most useful features for me has been its ability to serve as a USB 5V TTL serial port, bypassing the microcontroller, to connect to a separate TTL serial device when I do not have an adapter actually intended for that purpose. from the sound of it this board can't even do that since it doesn't have a real USB port.
It's a perfectly usable ATtiny85 dev board. It's just a question of whether or not ATTiny85 dev board is really want is wanted. Most Arduino beginners don't seem positioned to evaluate the answer to that well. A lot of those that aren't seem to be seduced by the size, price, and the promise of making USB things which I think they generally extent to whatever USB project they had in mind. Often whatever they'd hoped to do with USB is just not practical with it, even as a hobbyist.
@@TM-zs7ko May be we should call it Hybrid lol , Some call it active and some passive but as active mean , something that needs external power to operate . So diode can also be used as switch in RF circuit since it needs atleast some EMF minimum 0.3v for germanium so This logic supports it as active Components .
you've deserved a dislike for telling only what you think is negative but not mention the ATTinyCore library which is nowadays the go-to package for whole attiny family and which works just fine. and for almost all tasks a beginner could use arduino, attiny family is a cheaper and smaller choice.
A lot of stuff didn't make it in. Broadly solutions didn't. If I end up saying something about attinycore it will have a lot to do with transplanting the digispark usb libraries for it. But I wasn't about to cram all of that into one video. Along with a tutorial on how to get a serial like connection and everything else.