They’re university software engineering students, probably a year or two into their degrees. I’m hoping to provide the robots as completed units that are controlled via API, because we’re not likely to get many students with electrical, mechanical, or embedded backgrounds. You’re right about the complexity though, and that’s something I’ve been thinking about – I guess I’ll start out with a bit of optimism regarding their talents, and scale back if needed :D
I don’t really have a scope, budget, timeline, or audience properly defined for this project – in short my client has a STEM program for building and interacting with digital maps, but it’s way too boring and I’m determined to breathe some life into it. So I’m going to have to play a lot of things by ear.
Glad to help! I find it quite neat that with effort and time, it’s possible to learn to make quite advanced electronic systems yourself at home. Some of the stuff the more advanced hobbyists make is quite a bit better than a lot of mass-produced goods. We truly live in an age of wonders!
Well, you could say that there are three branches of electronics: analog, digital, and discrete (sort of between the previous two). For your goals, you mainly need to learn about digital systems.
What you’ll mainly be dealing with in terms of digital systems are microcontrollers and other embedded systems. I’d say the main two places to get started with those are the Arduino and Raspberry Pi ecosystems. The first is “more pure microcontroller” and the second is “more advanced embedded systems”.
Microcontrollers are mostly programmed in C++ these days (with a few strange people like me using Assembly), and the Arduino ecosystem sort of teaches that. Microcontrollers are usually the most efficient system to make the control electronics for something like a keyboard. Sparkfun and Adafruit are good companies to buy parts to get started from.
Embedded systems like the Raspberry Pi stuff can often run a whole operating system. This is too expensive (power, space, and $) for most keyboard builds, but you may want to learn how to use them for other projects. However, they also make a microcontroller (the Pi Pico) which would be OK and can be programmed in Python.
For advanced computer peripherals, you might need to learn FPGAs. However, that can be a difficult topic to get into by comparison. So maybe leave that for later.
A good way to get started is to buy the parts for, and build, a few Arduino projects. There are specific libraries for making Arduinos emulate a PC keyboard too.
In terms of tools, at first you will just need a breadboard, some resistors, LEDs and jumper wires. Maybe a battery or USB power supply. A multimeter too.
Soon after you will probably want to learn to solder to start making your own standalone devices. You should get a soldering station with temperature control – some people swear by Hakko, myself I have a cheap-but-good Yihua soldering + hot air rework station.
Next, while Sparkfun and Adafruit are great businesses, they are not cost-effective ways to source a lot of parts. You’ll want to learn how to use the part search and ordering functions on Digikey, Mouser, Arrow, and RS Components. Maybe also McMaster-Carr if you do mechanical stuff.
When you have some working designs done, you will probably want to learn KiCAD. It’s software for designing circuits, and laying out printed circuit boards (PCBs) to send to a factory to be made professionally. Through the magic of globalization, this is actually pretty affordable! A typical run costs me 20-40$ for 10 units, and takes 16 business days – although I live in Asia, so it might cost a little more from the USA or Europe.
You’ll also maybe want to learn 3D modelling and printing, for designing cases (I struggle with this more than I’d like to admit). TinkerCAD is an OK place to get started, although tools like SolidWorks are certainly more advanced. You don’t need to buy a 3D printer unless you want to – you can just order your designs made online.
Anyway, the results with KiCAD + 3D printing can be really quite good and can last many years of use. They also let you share your design with others, so other people can make it!
Finally, if there’s a hackerspace / makerspace in your area, these are great communities of people you can learn from. Definitely check them out. They may have a 3D printer you can use, as well as other tools. Often they teach courses too.
One small note – getting from “hey neat this works!” to making and selling a product is (sadly) a really big step. So if you one day want to do that, build a network and ask for advice from someone who has gone through it first.
It’s a fun engineering challenge. Weird energy harvesting tech mostly has applications for sensor networks. Some of the new generation of bluetooth chips have ridiculously low power consumption – so being able to deploy them without a battery somewhere without maintenance is occasionally useful.
Some currently used technology are piezo energy harvesting from mechanical vibration, low-light solar, and thermocouples.
My approach is usually to think around the TPL5110 and a pseudocapacitor. The TPL5110 is a timer that has a current consumption of 35 nA and can operate down to 1.8V. Every 2 hours, it would activate an ATtiny10 that can operate in the microampere range. That chip (very quickly) measures the voltage on the capacitor relative to a reference and decides whether it has enough power to “do the thing”. If it does not, it signals to the TPL5110 to turn itself off for another 2 hours to let more charge build up.
If it does have enough power, the ATTiny10 either “does the thing” itself or switches a MOSFET to activate another system or whatever. The “thing” can be to use the power stored in the pseudocapacitor to charge a battery for a short time (e.g. around a second), if you want. Afterward, the system goes back to sleep until it has a relevant amount of power again. However it’s often a battle to outpace the self-discharge of a lithium cell, so having the system “do a thing” without a battery present is often better.
This does result in practical stuff sometimes, especially when using low-light solar. Besides sensor networks, you can for example manufacture replacements for tritium indicator lights this way that only activate on at night. In my experience, an SMT indicator LED is quite visible at night with under 10 uA of current. I have a series of ridiculously overengineered indicator lights that stick to the top of doorframes so I don’t hit my head on them at night (I am quite tall, and live in a traditional home in Asia).
Incidentally, I tried building a resonant circuit at 60Hz and was able to pick up a few mV from nearby fluorescent lights – not enough to use. I used a ridiculously large coil of wire that I happen to have lying around. A more fun trick is to use LEDs as their own power source – during the day they work as tiny solar cells, and that lets them flash occasionally at night :D
I use the Attiny10 in this context. At 3.5V operation and using the Watchdog timer + deep sleep… that should cost you about 4.5 uA when the lamp is off. Then a bit more when it is on (about 40uA assuming whatever the GPIO is connected to is high impedance), as you have to enable the I/O clock (but most things and peripherals can stay off). So an average consumption of 10.4 uA, or 31 years of operation off two 1.5V cells – of course they’re not rated for this long and the actual light will consume far far more power. The point is that the current consumption of the system is absolutely dominated by the light-producing component, in other words the control system is highly efficient.
You can implement as a state machine, e.g. something vaguely like:
Set WDT to trigger an interrupt instead of the RESET vector. Then set WDT to trigger after 8s. Then on wake increment a register (you will need 2 registers, 8 bits isn’t enough). Compare these registers to constants that set the timer duration. On compare match, change the machine state.
Machine state 1: GPIO HIGH, timer duration 4h, I/O clock enabled. CPU sleep mode IDLE. Machine state 2: GPIO LOW, timer duration 20h, sleep mode POWER DOWN.
I think in assembly language but should be a similar process in C++. I’ve successfully implemented very similar (night-light timing) algorithms on this chip. I can’t give you power consumption metrics as none have ever run out of power over the past 6 months.
Haha, I’ve done that too. However sometimes it rips the pads off or otherwise damages the vias. So instead I cut them along the other axis (parallel to the PCB), then remove the remaining nibs.
These days I mostly use a hot air rework station though. In my city this is integrated with many soldering stations on the market, for maybe an extra 10$. I think mine is Yihua brand, it’s quite OK.
Hm, that’s an unusual issue! I don’t know off the top of my head, but I’ll ask a few questions that might help diagnose the problem.
What kind of soldering iron are you using? A soldering station, or a dollar store ‘firestarter’? Also the wattage? It should be printed on it somewhere.
What type of solder are you using? It’s electronics solder, right?
You’re not getting molten plastic on the soldering iron tip? That tends to ruin them pretty fast.
I was thinking about that, but if they are using 12VDC + light load a MOSFET would be more cost and space efficient, and probably more electrically efficient too. No real voltage drop, and just a few milliohms added to the load.
I mainly use SSRs to switch mains power, although it’s true they can be used for other things too.
I sort of hate relays. For 12VDC and a light load, I might consider a depletion-mode MOSFET and a diode to protect the battery. Much faster switching time than a relay, and quite probably lower internal resistance! Also no moving parts and much lower current consumption. There are some cases where it’s not appropriate though.
Anyway, I looked through the datasheet and you’re right – no mention of wear and tear from just leaving the solenoid energized, only from switching. Failure time also seems to increase when switching high currents. Since you don’t seem to be doing either of those things, I think you should be in the clear.
Are you in Quebec? The CEGEP system there is specifically a great and cheap way to try out multiple career paths. It’s like a mix of trade school and the freshman year of every university faculty.
It’s still a system that sort of pushes you into university without any experience of what doing a real job is like, but it’s at least a good way to explore the academic side of a wide variety of subjects.
The best I can recommend is that you try out jobs now – but maybe skip anything ‘fake’ like online courses unless you think they prepare you for what’s in the next sentence. Go find people professionally doing a thing you might like, and try to work with them, somehow. Internships, volunteer work, organizing events, etc. File paperwork and make coffee, if that means you get to see the work actually being done.
Barring that, do the thing yourself if possible. Publish the results. All code goes on public repositories, all stories should be submitted to magazines or literature groups. All songs written must be sung in public. Get certified for CPR and first aid if considering medicine, and volunteer using it. Get an amateur radio license and build a radio. Look at jobs on a freelancing platform, and just do them on your own to build a portfolio (maybe actually apply for the jobs, once you have a portfolio). Not every type of job can be tried out this way, but many can.
You’re going to get rejected a lot, you can’t just show up with a resume and demand a job (people who claim this works are weird). People who create and do nothing will mock you sometimes. A lot of jobs want young people ‘out of sight and in school’ too. However, this kind of disappointment happens to all of us at some point anyway, so may as well get it over with.
If you’re lucky, you’ve got a few years between the age of say 14 and 19 where you’re not expected to support yourself financially but your brain works as well as it’s ever going to. While it’s useful to get good grades while you’re in school (although they are useless afterward), I think it’s a mistake to focus on that at the expense of actually trying to do things. A college degree is too big of an investment of time and money to go into blind.
If you’re in a situation where you do have to support yourself or your family before finishing school, then the necessities of life obviously take precedent. I won’t pretend I have a good solution to that difficult situation.
There’s some part of my brain that applies display:none to the upvote/downvote function on every platform.
So if I don’t vote on your content it’s not because I hate it. My brain is just wired to automatically edit out anything that’s not content. Mostly this means ads, but voting features seem to have been caught in the net too.