It was so close to programming in raw assembly code that you might have been able to bit-bash your I2C functionality. Even on the smaller chip. The watchdog was the first thing that came to mind when I saw the way the LED was behaving. Every time you move to a new microcontroller there's a bit of a learning curve.
@@ChimpyChamp if you know how the i2c protocol works on the signal level, all you have to do is reproduce those signals by turning on and off the pins yourself
@@ChimpyChamp nah, you just need an input pin, output pin and enough program space to save all the packets you need to communicate with the slave. Simplest i2c bit basnging program is around 1kb.
@@ChimpyChamp Usually you start by looking up timing diagrams and protocol definition. The first tells you what lines carry a signal for what time. The latter tells you what the signals need to contain in information so that another device can make sense of it. Having HW interrupts in your uC helps a lot but you can manage without. One thing that is critical though is that you either have HW timers or that your architecture can produce repeatable timings when given the same set of instructions (unlike complex platforms like computers, where that timing would break as soon as the CPU gets a little too busy) From there it is just writing functions and abstract your way upwards to a level where you can simply receive and send data like you are used to on Arduino. It is a lot of work, though. But it is not outside the scope of a beginner with a scope (see what i did there? 🙂)
Watchdog timers are brilliant when used properly - deserving of a video of their own. Basically, inside your loops you reset the timer. If your program crashes, it won't reset the timer and the watchdog circuit will reset the whole device. Absolutely fantastic for circuits that aren't easily accessible in particular.
Yeah, I was watching this video thinking how not fully explaining the watchdog timer can lead lots of people down the road of bad coding practices. I have no problems with disabling it for such simple code, but if you have a project that does anything more advanced (like wireless communication or has a display), you definitely should consider learning how to properly use it. Watchdog timers are great for error handling. Nice video in general, though!
@@realdragon Because watchdog timers run independently of the ALU. Your ALU can deadlock, but the watchdog can still keep counting down and reset your ALU
I feel like a little RISCV chip makes a lot of sense here, like the CH32V003. It’s even cheaper than your $0.20 part and can work as an I2C controller.
Upvote for the CH32V003. The SOP-8 version can be obtained for about 10 eurocents and the TSSOP-20 for about 20 eurocents. It has a functioning Arduino core that does the basics but needs some further development to support its peripherals. When using the Arduino IDE v2.x it even supports regular debugging (i.e. stepping through code, watching variables, etc),
The premise of the video is a bit off. If you are only making 14 boards, then the 2€ difference in price for the MCU doesn't justify the cost of buying a new programmer and spending a week worth of extra engineering time. On the other hand, if you are making thousands of these boards, then something like missing hardware support for an I2C master interface isn't going to stop you from buying the less expensive controller. That's a very easy fix in software, and you can find countless reference implementations online going back at least 30 years. Of course, if the goal is to make an entertaining and educational video, the incentives look very different. The cost for a new programmer is negligible, if you get a successful video out of it. And for me as a viewer, this is certainly more entertaining than yet another video showing how to program an Arduino.
If you are going to do a 'proper' job of bitbanging the master, it's not so trivial. You have to deal with corner cases such as when the SCLK pin is an input (from master perspective). For only 1 device, if it's well-behaved -- then yes, the code for master can be simpler. But I2C edge cases are a pain. I *hate* I2C when I have a better option (e.g. SPI, and if you are pin limited, use, say, 74LV8153 which can be driven by a spare uart TX pin, bitbanged, and has output OC or push-pull, separate Vcc for the 8 output pins, and can drive 40 ma --- one pin from the uC neeced to get 8 out! With a simple SPI setup, you have the 'selects' you need with the expander. SPI -- always SPI.
CH32V003F4P6 - $0.21 per piece 48 MHz, 16k flash, 2k RAM, 18 GPIO, SPI, i2c, USART...etc. You are welcome! If you need less hardware and want to have an even smaller form factor, then CH32V003J4M6 comes in a SOP-8 package. It beats ATTiny85 in specs.
I think he would have to use the 84 to get the extra GPIO, ofcause depending on the project, though the AT are usually a few bucks for a SOC, but still pretty cheap in small batches, depending if you want to pay wages or chips. But in 10x productions i would go for less time working vs higher price SOC, he spent 3 days on it and where i live that would cover about 500 pcs of ATTiny84
I use the ATTiny85 MCUs which can be programmed using an Arduino and works great with the Arduino IDE. Once programmed in a DIY ZIF Arduino programming shield require no additional components. The V models run on 1.8V/300uA @ 1 MHz in low power mode with 0.1uA in standby and you can boost the clock to 10Mhz with 2.7V. I only use Arduinos for prototyping and then design my production boards using an ATTiny instead. I keep a tube around they are super handy. They cost $13 per 100 or $1.30ish each. Not as cheap for mass production but the hassle for under 1000 units isn’t worth the time or effort of a custom MCU and IDE.
The ATtiny's have excellent Arduino cores available. For small projects that need a few more pins than the ATtiny85 I've enjoyed using the ATtiny44A and ATtiny84A, which are often somewhat cheaper than the '85. For really small things I find the ATtiny13A interesting, but the limited memory can also be a bit of a challenge.
@@JanKluiver - I've read they have better features indeed, but I still have some stock to empty first. As for new cheap tiny MCU's I'm looking into the CH32V003, which is cheaper, has more memory and even supports debugging.
There is a tomm of stm32f103 chip`s, which cost less then $1, sometimes $0.5. Or you can find chineese clone for even less price. And STM32 have a tonn of features, like USB or advanced timers. And they can be programmed through Arduino IDE or CubeIDE and there are a lot of examples.
NOT a pointless video at all! Ive been following the channel for a few years now and I always appreciate the ones like this! The ones where you put in the hard tedious work to show us something *new/not well known. Cheers from Texas!
in our microcontroller programming course we had to program like first few weeks in assembly language - it really made people appropriate how much higher level languages with proper libraries enable people to do with much less effort
The programming pin names OCDSDA and OCDCLK do hint at On Chip Debugging, the IDE even has a Debug menu. It might support breakpoints, much better than using Serial.print
Debugging is only possible for their "special" development boards. I was sadly not able to use it with their normal uC. But maybe I was also just too stupid.
@@greatscottlab Yes you need the HT66V rather than HT66F part to debug. You can get them from a Holtek rep, from Bestmodules or from dev boards and just hot air gun them off. They do it to reduce the cost of the production parts
I came across the Attiny85 recently after many years of projects with atmega328s and it certainly has made a difference for smaller projects for both cost and size.
Yeah, that was my first thought, too. For a project like this, why not just switch to an ATtiny? The CPU is substantially similar to that used on the ATmega Arduino boards, and I believe that there are even folks selling ATtiny boards that have added the appropriate tweaks to the Arduino ecosystem (IDE and libraries) to be able to use that to program and run the ATtiny.
@@Curt_Sampson you have development boards like the digistump which runs micronucleus bootloader, only problem is that if you use them in-circuit you want to disconnect some of the pins while uploading because they are used for the usb function too... :/ Also not sure if it has enough pins for what he is trying and probably the price is still too high: around 1.41 eur / piece for 25 pieces on mouser... is not that different from the arduino microcontroller he mentions in his video costs around 2dollar ~ 1.8 eur / piece for 20 pieces
Same. I’ve found few 8bit MCU projects I couldn’t substitute a tiny for. I’m more likely to go to a 32-bit MCU when I need more for the kinds of projects I do anyway.
If you have GPIOs and are using PWM through a timer, it's not too difficult to implement i2c master in SW, much less simple to implement slave which is probably why they have it on some versions.
Great to see you're using my Instructables guide! To be honest I never thought anyone would read it 😂 I've been using Holtek for years mostly on commercial products and always found them great for the price. Keep up the great videos! On another point, maybe you could bit-bash the I2C, but it will be a difficult task.
The MCU of air001 produced by a Chinese company named hezhou is only sold for $0.1, supporting Arduino, with the following performance: - Adopts the MO+ core of ARM 32-bit, and the main frequency can reach 48MHz; - 4K RAM + 32K Flash; - Ultra-wide power supply range of 1.7~5.5V, which can be powered directly by USB or battery; - Built-in configurable RC oscillators of 4/8/16/22.12/24MHz, which can run at 48MHz without external crystals; - A 12-bit ADC, supporting 9 input channels; - 9 timers, 2 USARTs, 2 SPIs, 1 I12C, 2 comparators, very rich peripherals; - 3-channel DMA, efficient data processing; - Standby power consumption as low as 2μA.
Actually this video demonstrates nicely why Arduino was such a game changer. The time for learning and debugging will never justify the price savings in an hobbyist environment.
I have always run with ESP-01 I bought for $0.5 a pop off aliexpress for cheap Arduino replacement but good to know there are even cheaper alternatives. Everything suggested in the comments is useful as well. It's good that you made this video.
8 cent : PY32F002/PY32F003 from PUYA for microcontrollers with an ARM Cortex M0+ core clocked at 24/32MHz. PY32F002 20kB FLASH, 3kB RAM, SPI, USART, I2C, ADC, timer... nothing to complain about. PY32F003 additionally DMA and a few more timers, there is also an additional memory selection. It is an SWD interface that does not require a special exotic programmer. Power supply 1.7V...5.5V, TSSOP, to small QFNs or DFNs.
Yep. Right on schedule: Exactly at 6:45 of a 13m30s video (50.0%) the 'Blink' is finally working. I've said this for years: Getting 'Blink' (or 'Hello World') to work is typically the *halfway* point of any small project in any new µC ecosystem. Not usually so precise. That's why Arduino, which includes 'Blink' from the start, has such an easy learning curve. Everyone should understand this point; it's important for planning and scheduling.
What? This is a video. The pacing of a video has nothing to do with the pacing of the learning process and everything to do with the creator's directorial intent. I also think that the Arduino Blink sketch is VERY simple and mostly is an intro to digitalwrite. Sure, there is timing involved, but I'd hardly call it an intro to scheduling since there is only one thing happening.
@@MarioPL989 Except notice this: Our channel host spent "3 days" (he mentioned it) in this new-to-him ecosystem, just to get a few 'simple' routines up and running. I expect that another several days would be more than sufficient for what you describe. Keep in mind that primary point, and it's not an argument about "50%" versus 20% or anything else. It's that it can be time well spent in a new ecosystem getting as far as ''Blink'. If you're managing coders, direct them (firmly) to go get 'Blink' (or 'Helllo World') running first. They might not be back for several days, no matter how smart they think they are. It's a valid point and ignored at your peril.
@@MarioPL989 You may not understand the purpose of a blink program. It's not about precision or accuracy. It's about taking a chip you've never used before, and getting code into it, and having that code do something you can easily verify is working.
Absolutely. Blink or Hello is the absolute hardest thing to get working. Or the equivalent for any other hardware. I just spent 3 days getting a SPI LCD panel to show anything other than a solid white screen. And then I spent another couple of hours the next day getting eight other (different models) LCDs hello worlding me. It also took me about 2 days to get my first Blink going on one of the new AVR 0 series chips, using the new UPDI interface. But that's because there was a lot of almost-right information out there on RU-vid.
Nice vid! Not sure why you didnt mention that you can implement a bit banged i2c master! No need to have it as a hardware module, specially at lower speeds
@@greatscottlab no worries! And the development + troubleshooting time is not free either 😅 unless you plan to make thousands of these, its probably cheaper overall to go with a slightly bigger micro with the features that you need
@@greatscottlab Long story short, you can practically bit bang anything as long as you can generate and/or read signals fast (often) enough. That essentially programs your general purpose processor core to do the specific application, which the usual hardware bus processor is meant to do. They can be functionally identical, although it does obviously pose some limitations in terms of speed, as well as efficiency on power and processing capacity. If your module/sensor supports SPI or UART, they are much easier to bit-bang. Bit banging will be pretty much the same for any platform, give or take the I/O or timer specific functions which you've already explored!
bit banging I2C is so simple you'll regret not implementing it, especially when you have a oscilloscope and an arduino for testing your code. You can clock I2C at any speed even with a CPU running at 32khz. No timing is required (a clock cycle can be 1hz and the next one 1Mhz in the same byte, it doesn't matter). Master or slave, with minimal error processing, would take about 10 lines of C code. Funny thing is master is much simpler to program than slave.
Go for the enhanced family of PIC, the newest versions feature many useful peripherals, larger program memories and the IDE supports a GUI for setting up configurations instead of manipulating registers!
@@greatscottlab would it not be possible to use something like a raspberry pi pico as a programmer using software ? (offcourse there will need to be decent documentation about the programming protocol and probably allot of time)
@@ChristopheVerdonck Something I've noticed is that many microcontroller makers don't document the programming process. They just say, "use our programmer and our free software". I was very unhappy when I decided to use one of the newer-generation AVR 0 chips, only to discover that 1) they don't program like the older AVRs, and 2) they did not specify how programming was done. Fortunately there are enough hackers out there that it has been reverse engineered well enough that I was able to get it working, but to me it's inexcusable that they would sell me chips and then require me to use their software. If you could get the programming specs for the Holtek chips, it's likely it would be in Chinese and would not translate well. I suspect that the reason Scott bit the bullet and bought the programmer was that he intends to make at least a limited production run, and the 110 € expense was justifiable. Last time I priced ATmega328P, 110 € would only have bought about thirty of them.
I did the halfway version of this project.. I bought an Arduino trinket which is powered by an 8pin dip attiny85 processor and programmed it using the Arduino environment, I then bought a USB Tiny programmer for ~$6 and some bare ATTiny85 chips at $1 to prototype my project. My programming was all done in the Arduino software for the trinket, and with code from the ATTiny Datasheet. but for my final pieces I bought boards fully populated by PCBway, and used an SMD chip clip to finally program the ATTiny chips on the boards.
Arduino encompasses the atmega chip which... Is the core of it and is a microprocessor... So yes it can be considered an alternative. Or simply, it's "another possibility"
I mean they are. Merriam-Webster dictionary definition 2 of alternative "different from the usual or conventional" technically a toaster can be an alternative to an Arduino.
This type of thing is NEVER a waste! And, instead of three days, or hours for other issues, you've well detailed the process, saving the rest of us all that time you spent on it! (For some of us, it convinces us not to bother, or visualize the system a bit differently, maybe multiplexing or another solution depending on the need and context.) Watching your process alone taught me some general things, plus, you gave an update on JLCPCB offering more colors soon, so, yeah: another GREAT video!!!
While you spent some time learning the syntax to code these chips, the good news is you can create your own reusable wrapper libraries that are compatible with Arduino code and make future projects easier and faster to build. Arduino was originally based on Atmel microcontrollers, which have had really nice opensource tools for a long time. You can easily build your own programmer for them as well. You can still buy these chips independently and use them in your projects. Fun project and demonstration of the power of more generic microcontrollers. Thanks for sharing!
A great alternative could be the attiny series (not the 85 but their newer attiny chips). They are available in 8 to 24 pin packages, with 2 to 16kB memory and come with SPI, I2C, UART, multiple timers with either 16Bit or 8 Bit pwm, and adc and much more. Im pretty sure you can also programm them with the arduino ide and an arduino nano if you dont want to fork over 160€ for microchips own programmer.
Ben Eater has an EXCELLENT series about building a PC from scratch, including the evolution from code bytes to assembly instructions, all the way up to C code which is a great complement to this info.
Personally, I'm a big fan of the CH32V003 (it's 32 bit, RISC-V, way more capable and even cheaper). I believe it even has pretty good Arduino support as of right now.
I never advise my students to use the delay() statement, given that it kills the program for the time they've set and it's a waste of resources. On Arduino it is preferable to use the "millis()" function and for the HT66F002 it is easy to implement an interrupt handler and build a similar "millis()" function for the HT66F002. Especially in robotics we should avoid using "delay()" instructions.
Hello GS, I started watching your videos 10 years ago while I was in Highschool (Electronics Major) today I came across again with your videos and I really miss your Led backlight leds intro 😢 I am glad you are still this active.
Even if I play the old intro with no sound I still have that sound in my head. Today I am 28, and feel old because I saw your first videos and noticed they were uploaded few years back 😅 (I am sure it was only some months back but not this long. I always have admired your work 👏🏼👏🏼👏🏼
Haven't understand almost anything (I don't have any engeneering background whatsoever), yet I always watch your videos and feel happy new ones show up in my feed... I kept wondering why. And it hit me a moment ago - you seem to me to be very precise and very honest, balanced in your opinions. I find your materials well thought thru, well prepared and deep into the topic. All of theese factors lead me to one conclusion - it seems I TRUST YOU, and that's the main reason for me - a complete amateur in yoir field - to watch your stuff and keep coming back. You have build a trust in me by keeping up to noble standards in the field of your craft and - what is also important - in the way of comunication across that field. Therefore I wanted to thank you for sharing your passion, your way of thought, your skills in a way which not only does not DISCOURAGE noobs, but rather INVITE them into the topics you present. And this habit of yours - to use pen and paper... as a motion graphics solution :) - this constantly blow my mind as a remedy so simple yet still so effective in our modern overstimulating times! (plus, I find it part of your "signature", your style, identity). Overall - Kudos and big thanks!❤ Greetings from Poland.
You should be able to use the programmer to debug as well, just like an Arduino. Usually there are functions that allow you to write to the serial bus, which should even show up in your Arduino IDE if you pick the right port.
@@lifeai1889 I know what you mean. It's incredible to have reliable step debugging/breakpoints and access to the stack. It ruins any platform that doesn't support them. Some bugs just can't be fixed without it!
I've used both debuggers and "print" on many, many projects, and have found the debuggers had a much higher learning curve. I can get a lot of debugging done just by sending a single character to a serial port or even blink codes to an LED.
Embedded hardware engineer here. "w95 interface" is mostly an industry standard. It wont lag and will run on any crappy pc anyone could have. For an i2c - you can always make soft-i2c through bit-banging. Thats always worth the time spend, because it allows our clients to pay us once for making it possible, than to spend lots(+20-40%) of money on every device they'll need.
It's not exactly "standard", it's just Keil and IAR do not want to invest in updating their ancient IDEs look-and-feel because it's a small market, much smaller than, say, web dev. General purpose Eclipse or VSCode are modern enough.
I love that you covered the topic and shared it regardless of it not being what you can use for your project. We were able to see the process of learning which I and probably others also learned from.
I commend you for making this video, especially for exploring an unfamiliar MCU. There are so many makers who are reluctant to go beyond the Arduino and Arduino "IDE" - I think your explorations here will give some the added push to go out and venture beyond the ATmega328 + bootloader + Arduino "IDE" environment. The Arduino ecosystem has injected a lot of interest in electronics, but the community needs makers who aren't afraid of datasheets and getting their hands dirty with new hardware and software.
My go-to controller series these days is the STM32G030 series. There is a 20 pin version from about 0.5$ and it has all the goodies that its bigger package brothers have. I use it with ST's IDE which certainly has a steep learning curve after Arduino but the raw amount of hardware features is worth it for me. The only downside is that division and floating point math are basically non existent on the controller but it's easy to get by them. E.g. I can do integer divide by power of 2 by right shifting, if I don't need to be super precise.
But it requires external flash and a lot of passives and a crystal, and is not easy to manually solder / build your project without a better tooling - they have a place, sure, but they are too complex to implement in many use cases
Very nice! I'm so glad you documented this process! Learning that the process ultimately did not achieve what was hoped makes is just as valuable as learning a process that does achieve this.
At some point this make you love Audrino more. This remind me of my project of adding midi to a vintage 3 manual and full peddle Rogers organ with single ground bus and need to find a cost effective way to expand ardrino to have hundreds of digits in gpio to generate serial midi signal for virtual organ software.
I go back and forth on this. My first Atmel AVR project I did bare-metal, using the gcc-avr tools and buying an Arduino Nano just to use as a programmer, because I really didn't like the Arduino way of doing things, hiding all kinds of stuff from the user. And I would have been in serious trouble had I not found an example project on Adafruit that included a Makefile and a header file for pin definitions. With that, I had no use for the Arduino IDE, or for that matter, any other IDE. BUT, the second time I used an AVR was to modify the code on a hobby radio called the ATS-20, which used an Arduino Nano to control the radio-on-a-chip and an OLED display, so I was very thankful that the developer of this radio released the code as an Arduino sketch, since this made it easy to understand the interface to the I2C-connected display. So it's love/hate for me, and now I fully understand that if I want to make a microcontroller-based project for others to build on, this is the way to make that easy.
Yeah, depending on how much communication you actually need, it's definitely possible to bit-bang the i2c commands. The limitation will be the memory though, it'll take a fair bit of space to manually code in the timing
@@NewtoRah Only very few I2C Slave devices have actual lower bound timing requirement. So by dropping the speed low enough you can just ignore the timing all together using I2C. That's why implicitly, all MCUs with atleast one Input/Output pin support I2C Master-Mode. The Code isn't even complicated if you don't care for the MCU being blocked during this time. The Adafruit OLED Library actually has that code in it. It's ~15 lines.
@@NewtoRah This HT66F0176 has 2Kx16 of Flash and 128x8 RAM. So yes, I agree that memory is a limitation, but it's possible. One thing he should take care of is timer interrupts, which can mess up communication timing.
As someone whose interest in microcontrollers predates the Arduino, I'm always worried about how that "easy mode" could affect the collective skill level of this field. I'm glad you're shining some light on other options. Also worth noting, it is entirely possible to write your own I2C code. Not _quite _ as trivial as SPI, but still well within reach of a hobbyist.
It is easy to implement I²C Master in Software. Maybe a little bit slower and consuming more CPU time. But not a problem like I²C Slave. Does it not fit into the limited memory?
Exactly my thought too. I2C is not hard at all to implement as master. Sometimes even easier than trying to interface the hardware peripheral if just wanting to hack together and reading out a simple value, without bothering with DMA and such
The only way I know about Holtek was when I took apart a laminator machine. I was planning on taking it apart and reprogramming it to have a "slow" mode for thermal transfer toner of PCB images. Unfortuantely there wasn't much to dump the firmware or to re-program it, and within months Holtek locked down their documentation archive. I also needed to reverse how the heater was modulated, temperature was measured, and how the AC motor was being controlled. It was far easier for me to just run the PCB through the laminator 20 times than to reprogram the machine.
110 Euro isn't that bad... I'd think that their IDE being limited to Windows is more of the issue... I wonder if WINE (et al) would be able to utilize the USB device properly for programming in Linux.
Was about to comment about the ATTiny Microcontroller It may not be as cheap as the MC's in the video, but it has nice interface, easy programming and lots of tutorials, so they can get the job done Nice video as always
Great video! It is important to show failures sometimes to highlight the thinking and work involved with solving novel problems. I also liked it because I came across the same family of controllers while adding wireless control to a toilet seat warmer recently, so I could turn it on as soon as someone walked toward the bathroom.
I feel like something from ST probably would fit the bill pretty well they have some really low cost small boards and the HAL and arduino compatibility make it easy to start things up
I don't remember if these are "real" arduinos or only compatibles with the ide, but some boards are cheaper and don't have the USB support. They require an USBI2S converter, but you only have to buy it once. Not as cheap à 0.20$, but if you don't need USB then you don't have to pay for the built in converter in each board which will only ever be used during programming.
@@greatscottlab You propbably seen Andreas Spiess' Video about the new ATtinys. Is there a reason you seem to use the ATiny402 (13:09) and not the newer 412 or even newer ones from the TinyAVR 2 Familiy?
I've been looking at the ATTiny 10 for a micro project that I have in mind but suspect that the 85's would be best to buy given the range of things I can try to make it do.
Try an attiny402. Costs €0.38 here, should be available in germany but price may vary. Upto 20mhz@5v 2x uart ports 1x i2c 1x spi 2x interrupts 4x pwms 5x gpio(all can do analog or digital readings) Can use at once : 1 uart + spi 1uart + i2c 2 uart ports 5 gpios Edit:added reasons.
FYI Depending on the storage space that the microcontroller has, you can implement the I2C bus in software. I have done this in the past on two occasions, and it works well.
Nice to see a much less clickbaity title! Nice vid. BTW the DeArrow title for this is 'Trying out the Holyek HT66F002 Microcontroller'. I reckon something in between would be ideal so people researching the chip can find it and those looking for alternatives can too. But it's not financially viable to title for maximum viewer usefulness I guess. Still a big improvement over the usual thanks
Very cool video. i may not need one of these in a project personally but found it very interesting to know there are alternatives that cost almost nothing if you willing to buy the not so cheap programmer.
What's the problem with implementing i2c in software?! At least, i2c master mode is totally straightforward and it takes only about 50 lines or so... Just stop being obsessed with that libraries and h/w implementations.
If you don't feel like dealing with Chinese micros, Microchip makes a PIC16F15213 (8 pin) which is well under $1 (the SOIC pkg is under 50c qty 1) and covers your list. There are also pin upgrades to increase pin count, memory, etc in the same and other families. Edit: The ATTiny402 is another good choice (and also made by Microchip).
I found buying Wemos D1 Mini Pro's to be my sweet spot. When I buy them in bulk, I end up paying about $1 each. They are Arduino compatible, have all the bells and whistles, and have on-board wifi.
6:12 the correct term is actually Download, as it is to a "lower lovel device". You can search the web and discover multible poeple have asked on the Arduino Forums for a reason to why their termonoligy is revers, and unly find the answer "IDK". In PLC's a download always referes to a data being downloaded to the PLC and an Upload being when data is uploaded from the PLC. SO in conclusion Download is the correct term, even though in arduino it is called Upload.
You can still do this project with this micro, if you use operations with registers and disconnect the output by hardware you can achieve high impedance and write a library to communicate this micro through I2C. I did it with a pic 12f615.
Making pauses in code is a bit off. It's better to count and use a variable. Mode 1 is the first 20.000 or whatever. Main_loop: If c40000 then c=0 endif Now you can run a clock or whatever on displays and whatnot in between. if mode=1 then blink(x,y,z) endif if mode=2 then blink(x,y,z) endif if clocktime or secret_project then a _bunch_of_code(x,y,z) endif goto main_loop (or your way of doing it, maybe while true.) This is to help yourself, not me.
I get Attiny85 vibes of this. That chip is maybe 1€, and works in the Arduino workflow we already know. You can even buy it on a 2mm thick mini-board that fits straight into the USB port. It has I2C, SPI, UART and 3x PWM and can have an USB bootloader.
i use an REDACTED flashed with the arduino bootloader. They are cheap and support all the features you outlined here. I designed a flasher board and even an arduino-like prototyping board. I would tell you all what i use but im sorry i dont want the demand and prices to shoot through the roof lol
I have been using Holtek MCU for decades. It was the most popular MCU for DIY and electronic enthusiasts before Arduino was launched. The downside of Holtek MCU is the price of their emulator. Holtek MCU is ideal for project that involve mass production, but not for end user who only need one or two MCU for their circuit design. And for the e-link emulator, a bare board version will only cost around USD20 if you can find it in Taobao. Hope this info will help for those who would like to know more about this MCU.
Totally recommend the attiny series 0 parts. Cheapest come at $0.44 in quantity of 100 from mouser. Gives you Arduino support for everything you just asked for.
Doing I²C in software is very straightforward, especially for master. You probably have some serial peripheral that can do the job or most of it as well.
Actually the i2c master is much easier to implement than a slave, you could easily do it via bit banging. That is the reason why most cheap controllers don't support it directly. Doing a slave via bit banging is much more difficult, sometimes even impossible on high level controllers running "proper" operating system. It is a pity that you gave up so quickly :) otherwise a nice video considering you are not a software engineer. greetings from Slovakia!
You can get an HT66F002 D-board which gives you pin-out for debugging. This lets you try before you burn it to a real chip :) Fits into the same programmer you already have
Choosing that mcu doesn't make much sense? The py32f002a is $0.11, 32K flash, 4K ram... Actually everything from the more expensive py32f030 is there (dma, timers...) and doesn't need any fancy programmer, in fact it can be programmed with a serial adapter and the embedded bootloader. Sleep current was about 4uA if I remember correctly. And it has Arduino support!
Just came across a video on Twitter of "Touchable Flames". The "flames" are made from water vapor and red led lights. It looks like flames, even while putting your hands through the misting.
As you are a complete beginner then I suggest to google "Arduino kit" and buy it. You'll get Arduino board (chip), some cables, some LEDs, some sensors, etc. Then google "Arduino beginner tutorial" to get the most simplest things up and working. What he did in the video is more advanced.
It seems my comment got nuked as it contained a link to my guide setting up a arduino nano as a programmer for the Attiny412.. but yeah it would have been perfect for your application as it should support all of your features, keep it up, love these videos!
Give TI-Launchpad a try. It's basically an Arduino with a socketed microchip, so you can program as many microcontrollers as you want, then use just those chips in your project. It's cheap, too, something like $20.
But you can add software I2C - "Bit Bang" and it's very common. I've used it with 8051 for communicating with 24CXX I2C EEPROMs and with ATtiny85 for driving SSD1306 I2C OLED module.
Nice! I believe you could've gotten i2c to work by using a bitbang library, esentially just doing what the i2c hardware would do in software using GPIO. Since your MCU is acting as the master in this situation, this can be as slow and intermitten as you need it to be to allow it to run its other functions. There's not really any strict timing requirements here.
I think it has to be noted, that you picked a pretty challenging way. If you were to choose a more popular microcontroller, you could have ready libraries like with the Arduino. Then it would be more Arudino-like and as easy or almost as easy, depending on what you do. :)
Not sure if this is mentioned in 1k comments, but the CH32V003 probably meets your requirements. Its programmer is a lot cheaper and you can even build one. The only catch is that it currently does not have decent support for the Arduino IDE. I will also second the many comments on implementing I2C in software, master mode is actually simpler than slave (as you generate the clock instead of waiting for it to change).
Nice video. I started using ATtiny 412 and 1614 a couple of weeks ago. Lots of searching to get the board libraries installed. But with that working, the chip(s) are easy to program using an Arduino Nano as the UPDI programmer. Use an FT232 board for serial.Print commands. Thanks again for all your videos.
I looked at the Nano-based UPDI programmers last summer when I did my first tiny412 project, but in the end I used a USB/serial interface and avrdude. The "programmer" costs about $3 that way, and you just need a 4kohm resistor tying TXD and RXD together to connect to the programming/reset pin.