A SAO board that can be used to communicate to other SAO boards through infrared.
To make the experience fit your profile, pick a username and tell us what interests you.
We found and based on your interests.
Hi all,
Alec here! I've finished and published the assembly video for the IR SAO! It was a fun process, I had never edited a video, recorded voice lines, or even made a set before! Hopefully it helps everyone figure out how to put our SAO together at Hackaday Supercon! You can always find Dmitry or I if you need help as well!
Hi all!
Alec here! We've received most of the parts for the boards at this point. We did have some hiccups with the ATTINY85 shipment from AliExpress but we're sorting that out. I did get two boards working with a test program and can confirm that they communicate between each other! So happy they work!
We did have one heart attack moment when testing. We had a test program that sends a value and checked if it had received that same value. Our test boards were saying they had a communication even when the other one wasn't on! Turns out that the IR light can be reflected off of a surface and the IR Receiver can see that. I realized this was happening when i put my hand close to the LED and that was received by the board. By changing the value to be unique to each board, the board wouldn't show they received anything until both were on! Heart attacked passed!
I've also been working on a tutorial video to show how to put the SAO together! I've never made a video like this before so its been a learning process! Here's a teaser image, we'll post the video as we get closer to Hackaday Supercon!
Hello Everyone!
Happy to say our IR SAO has hit Version 1!
We are working hard to have quite a few ready for Supercon as well! Come say hi if your interested in getting your own IR SAO.
Additionally, if your offering an SAO trade we have some limited edition version available for trade. (They are just different colors but I think they are neat.)
Quite a bit has happened since our last update.
The technical details are:
- IR LED silkscreen updated (Silly mistake.)
- Pull Up Resistors added to the I2C pins.
- Components and Silkscreen moved to top.
- Jumpers updated to be more functional.
- Added a ground plane.
Additionally we have sample programs for all the core functions and are working on the stock program to ship the SAOs with while we wait for all our components to come in.
We are working through some supply issues at the moments as well...
Some of the ATTiny's we ordered turned out to not be ATTiny's. Additionally I ordered a batch of the wrong IR LEDs but... we are getting everything built up slowly and steadily.
It's alive!
Hello everyone!
This update will be going through the validation process for our first prototype boards.
I have begun to call them Version 0 boards give the handful of issues that popped up.
Overall it looks amazing! For my first attempt at a PCB, I am quite please reguardless of the handful of issues.
Programming the ATTiny85 was simple enough. Unlike the version in the photo, I added the optional pin headers to the board I was using for validation like shown below.
Using the pins, programming and testing was extremely simple. I added a DIP socket to the first board as well just to add additional troubleshooting options if needed. This ended up not being needed.
Testing the hardware, the first issue found was the IR Led.
Running code to transmit seemed to do nothing. I verified this with my photo to see if I could spot the IR Led and saw nothing. It seemed odd but I had a feeling there might have been an issue with the polarity and simply flipped the IR LED. Surprisingly this fixed the issue and transmitting was no longer a problem.
Next bit of trouble I found was using the SAO header for Serial.
This was never in the design but actually using the SAO board, I realized having Serial for debugging would be very useful. I ended up using the SCL pin and ATtinySerialOut library.
The ATTiny85 requires software serial to get any serial support. SoftwareSerial was an option however, ATtinySerialOut was used due to the VERY limited space on the ATTiny85. Additionally, the ATTiny85 clock speed needs to be set to 8MHz instead of the default 1. That took me a little bit to realize of course.
I've decided to add an optional pin header for TX out to simplify things instead of having to wire through the SAO headers. That said either Serial or i2c can be used, not both.
Now the IR Receiver, I spent a good while troubleshoot this. In the end I spent hours not realize that the incorrect pin was being used to initialize the IR Receiver and since it was default to Pin2, the ATTiny85 would just hang.
The one issue I did find was for the solder bridge to avoid using a resister and capacitor. While troubleshooting and removing components to see if that was the issue, I discovered the solder bridge was way too small to use.
The reset button worked great. :)
I have yet to test the i2c functionality but we suspect that will require 10k resisters to work correctly. Also I still need to test the top button and the GPIO functionality.
Once that's done, we will order another batch of PCBs. This version I will be calling version 1 hopefully.
Oh and of course the code can be found on Github:
https://github.com/alecjprobst/IR-Transceiver-SAO
The repository is currently quite barren since we are just doing validation of the PCB design. However, full instructions and guides along with a few sample programs will be found there soon.
PCB Updates needed:
- Add a TX pin header option.
- Flip IR Transmitter polarity on silkscreen.
- Increase size of solder bridge.
- Resisters for i2c.
- GPIO Validation.
- A couple of random silkscreen text changes.
Hi all,
We've slowly been working on the design, Dmitry is soldering the PCB's as we speak (or type since this is an article, english is weird). He'll probably have an update with some pictures soon!
The good part about working with hardware is that we find issues quickly. I found out that the ATTiny85 doesn't have internal pull-up resistors on its pins! Woops, big oversight on my part. Our initial boards won't have i2c working due to this but we can jerry rig a solution for now. We'll be adding in 10K Ohm resistors as pull-ups. We may also add pull-up resistors to the buttons as well, though this hasn't been drawn out yet. The updated circuit diagram can be seen below:
This also means we have updated parts list:
Speaking of updated parts list, I've also found all of the parts for the SMD version of the board! No PCB design yet since we're still testing the initial through-hole design but thought these might be interesting to look at. The SMD parts list is here:
Hi all,
While we're waiting for our first batch of PCB's to come in, I wanted to start going over out software plan with you.
In our first update, Update #0, we talked about our goals which you can see below:
Goals:
While these are overall goals for the project, we also have some specific software goals:
Software Goals:
With this in mind, we want to use ATTinyCore as our go-to Arduino core. This is done for a couple reasons:
We also want to use Arduino-IRremote as out IR Protocol library. This was done as:
As we get closer to programming our ATTiny85, here's a YouTube video we're following to program it:
Hi all,
This update will show how we're calculating the max distance possible using this communication method. We also have changed the IR LED (again) to get a cost savings and an improvement in communications distance.
To calculate the max distance our SAO is expected to be able to communicate we, used this document from Everlight . The equation for distance is on page two as:
For our newly chosen IR LED, we need to figure out the Ie. While Digikey does give this to us in the data summary as 150mW/sr @ 100mA, we must limit our circuit to 20mA per output pin on the ATTINY85. Diving into the LED data sheet, we can find the graph below:
This graph shows us the relationship between the current (x-axis) and the resulting Ie (y-axis). From this, our Ie will be around 40mW/sr. Be careful about reading this graph, both the x and y axis are logarithmic, meaning they don't change as one might expect. Going diagonally on this graph greatly increase both the x-axis and y-axis. One thing to note here is the looking at the 100mA line, we see it crosses over around the 200mW/sr. Digikey was showing the min Ie of 150mW/sr in its summary and this LED may be brighter than this as that value takes into account the variance possible in this LED.
Now we need to find the Eemin for our receiver. This can be a bit tricky to find but one of the reasons we chose this specific IR Receiver is because it has the graph below that answers our questions:
This graph shows the relationship between the amount of light around the sensor (x-axis) and how sensitive the receiver is (y-axis). Be careful here, the x-axis is logarithmic while the y-axis is linear. Going to the right increase much faster than moving up the graph. One of the reasons this graph is helpful is that it specifies how bright daylight is (10 W/m^2) and what wavelength is assumed (950nm). Since daylight is the worst case scenario we expect this SAO to be used in, we can follow the 10W/m^2 line up to around 1.5mW/m^2 Eemin. Since the 950nm wavelength estimated for ambient illumination is close to our IR LED's wavelength of 940nm, we should expect this graphs relationship to hold for our setup. Note that this is our worst case sensitivity, if we're in a darker environment than daylight, the sensor will be more sensitive. This makes sense as our sensor has less light hitting it, thus less noise that may interfere with the signal.
With all of the required values found, we can now calculate the distance as:
This isn't too bad, it's about the length of a standard bedroom. We expect that most people will use this indoors and will get more range than this. One thing to note is that while 20mA is the safe current for the ATTINY85, a single pin can technically go up to 40mA if we change the resistor. This could get us a Ie around 90mW/sr and a theoretical range of 7.746 meters in sunlight. We don't recommend this but if anyone does try this, let us know how it works.
Now that we know the distance, we need to find the new resistor value for our LED. We used Kirchhoff's current...
Read more »Hello again, another update from me!
I present:
The TV Remote. Infrared Communication SAO.
A bunch of updates and changes with this updated so I decided I would go through them in sections.
A bit more TV remoteness has been added to give a bit more of an TV remote appearance. Playing around with adding some fun things to the back of the PCB but will keep that hidden for now. ;)
If anyone has more suggestion on how to add to the "TV Remote"ness, please let me know!!!
A TV remote NEEDS buttons! I just so happen to have a couple hundred buttons laying around so things work would wonderfully.
Specifically buttons that look very similar to these:
https://www.digikey.com/en/products/detail/cui-devices/TS02-66-50-BK-260-LCR-D/15634249
(Granted, the ones I have are half a decade old and were from a random amazon seller... Should be fine.)
For now the buttons are connected to attiny85 pins 1 and 6 since the they unused.
This means by default the top button will act as a reset button. It is possible to change this behavior by setting a fuse in the attiny85 to use pin 1 as a normal pin. Something I will need to look into later.
A idea I wanted to implement as much as possible is expandability. This is an SAO first and foremost but, it is also at it's heart an attiny85. With that in mind I added optional pin headers to make accessing the attiny85 directly easy.
Of course as soon as I am done with this version, a few more nice to haves came out of conversations Alec and I had.
Specifically:
Now for the big shock (for me), as mentioned earlier Alec pointed out to me that actual rules of the SAO contest! Awkward, I missed those entirely!
Specifically, I missed the following:
Our design:
Luckily both are simple enough to fix, there should be enough room to shrink the height by 10mm. The components can also be switched to SMD which is something Alec and I are discussing now.
Part of the idea was this SAO would be something Alec and I could assemble ourselves and having through hole components makes that much easier. So I've decided to keep working on the existing version in parallel with a SMD version that will be within the design contest rules.
Hello hello,
When Alec mentioned an Infrared Communications SAO, one of the first things that came to mind is an old 90s TV Remote.
With that as an inspiration, I think I've gotten a reasonable shape down.
When discussing with Alec, we realized that technically the resister and capacitor for the IR receiver are optional. To give an option for testing, I've went ahead and added an R3 resister with 0 ohms in Kicad as a solder bridge point. The intention is to give a method to bypass the resistor and capacitor if needed.
This is my first attempt at designing a PCB and for using Kicad for that matter so I've been entertaining myself with learning all sorts of things.
More updates to come soon! :)
Hi all,
This update to show some changes to our part list.
As our PCB designer, Dmitry, was looking at the parts, he noticed that the chosen IR LED was a Market Place Product that could only be bought in a quantity of 5,323 and has a separate $8 shipping fee. We don't need that many LED's so we found another one which can be seen in the list below.
We also knew that there were more passive components that could be used with the IR receiver and LED. The diagram below shows that we need an resistor and capacitor for the receiver. We also need a resistor to limit the current for the LED to protect it and limit the max current to 20mA from a single pin for the ATTINY85. Since the LED can support up to 100mA of current, the ATTINY85's output current limit of 20mA is what will limit the LED. To limit part creep, we plan to use the same resistor for the IR LED as for the IR Receiver.
Since we have most of the basic parts here, we've now drawn out the first circuit diagram as can be seen below:
Parts List:
Create an account to leave a comment. Already have an account? Log In.
Become a member to follow this project and never miss any updates
heck yes, let's gooo