Register a SA Forums Account here!
JOINING THE SA FORUMS WILL REMOVE THIS BIG AD, THE ANNOYING UNDERLINED ADS, AND STUPID INTERSTITIAL ADS!!!

You can: log in, read the tech support FAQ, or request your lost password. This dumb message (and those ads) will appear on every screen until you register! Get rid of this crap by registering your own SA Forums Account and joining roughly 150,000 Goons, for the one-time price of $9.95! We charge money because it costs us money per month for bills, and since we don't believe in showing ads to our users, we try to make the money back through forum registrations.
 
  • Post
  • Reply
ryanrs
Jul 12, 2011

Man, this QFN looked a lot bigger when I was drawing it on a 27" display.

Adbot
ADBOT LOVES YOU

Slanderer
May 6, 2007

ante posted:

I've used them professionally a bunch, so I'm trying very very hard to keep my negativity at bay:


Why?

I need a break from writing unit and integration testable C++ written with multiple layers of abstraction on top of the hardware and I want to make something stupid

ante
Apr 9, 2005

SUNSHINE AND RAINBOWS
Ah, well then. They're targeted to industrial markets, so they're usually pricey. And annoying to work with. And safe! Which is not very sexy in personal projects, just extra annoying.

A contractor once gave me a system built with a Tri Logic PLC that I found reasonably easy to figure out, and then port to our garbage complicated expensive Siemens ecosystem.


Arduino might have put out a PLC? I think I vaguely remember that?

PDP-1
Oct 12, 2004

It's a beautiful day in the neighborhood.
I've never used them, but this place sells PLC systems that start at under $100 if you want a little one to play around with:
https://www.automationdirect.com/ad...#bodycontentppc

babyeatingpsychopath
Oct 28, 2000
Forum Veteran


PDP-1 posted:

I've never used them, but this place sells PLC systems that start at under $100 if you want a little one to play around with:
https://www.automationdirect.com/ad...#bodycontentppc

I've used Automationdirect PLCs professionally. They're good enough for hobbyist use. As with all PLCs, the programming software is garbage. The most annoying thing about the Automationdirect PLCs is no simulator. If you want to see how your program runs, you plug it in and run it.

Let's not talk about programming in ladder logic.

mobby_6kl
Aug 9, 2009

by Fluffdaddy

Lamont posted:

Does anyone have any recommended resources for (re)learning electronics - books, online courses etc?

The embarrassing thing is I actually have an electronic engineering degree, but it was almost twenty years ago, I only just scraped through and I never ended up using it after graduation. Now I can barely remember how a transistor works.

I'm pretty clueless but I've used The Art of Electronics, Electric Machinery Fundamentals, and Practical Electronics for Inverters if i needed to dig into something. PM me, I think I might be able to hook you up.

namlosh
Feb 11, 2014

I name this haircut "The Sad Rhino".

Lamont posted:

Does anyone have any recommended resources for (re)learning electronics - books, online courses etc?

The embarrassing thing is I actually have an electronic engineering degree, but it was almost twenty years ago, I only just scraped through and I never ended up using it after graduation. Now I can barely remember how a transistor works.

This is a post I made about 2 months ago to Boxman(I think?) asking a similar question:

quote:

2 years ago, I was where you are. and now... well I'm not that much more knowledgeable. But I know more of what I don't know so that's a thing at least.

Here is a list of links that I cooked up that might help. I've found youtube to be ridiculously good for this stuff. So much so that I subscribed to youtube premium after swearing I never would.
https://docs.google.com/spreadsheets/d/1_rHvJPEPygLfpxetDYFLnBFsGY9q6iDLrYp_SIf-Lzw/edit#gid=1044111967
It also has the Goon electronics swap as well, which might be helpful.

Only advice I give to people is to always plan to throw the first one away.

but I do appreciate that you asked about books and online courses and I get it. But thought I'd provide this as well.
One youtuber who took a hiatus and recently came back is: w2aew
Check him out, he's on the list above, but deserves special mention because he's really good imo

Lamont
Mar 31, 2007
Who knows what evil lurks in the hearts of men?

namlosh posted:

This is a post I made about 2 months ago to Boxman(I think?) asking a similar question:

but I do appreciate that you asked about books and online courses and I get it. But thought I'd provide this as well.
One youtuber who took a hiatus and recently came back is: w2aew
Check him out, he's on the list above, but deserves special mention because he's really good imo

Thanks for this! Youtube videos are good too, especially as sometimes explanations in books don't always click.

Rescue Toaster
Mar 13, 2003
Has anyone seen an AGM charger (or charger that can specifically set to AGM) in the 5-15 amp range? I have a setup involving a 30-50 Ah AGM mostly being driven around in a vehicle that has a 120v inverter output. But I also need it to be simple to use.

Most car chargers in that range (like NOCO genius and so forth) would work fine except that they always default to flooded whenever AC power is removed and re-applied. Since the vehicle AC inverter shuts off at every stop for gas/food/bathroom/whatever, making sure they never forget to set it back to AGM is going to be impossible.

Ideally some dip switches or even if it just internally saved the setting in flash or something would work. If the current is much over 10A, some way to limit the charger current would probably be necessary. And I'm hoping to not spend much more than $100 but who knows at this point.

EDIT: Supposedly the noco genius chargers save the settings on next start up, no clue why it doesn't seem to be working for me.

Rescue Toaster fucked around with this message at 18:45 on Apr 26, 2023

ANIME AKBAR
Jan 25, 2007

afu~

Rescue Toaster posted:

Most car chargers in that range (like NOCO genius and so forth) would work fine except that they always default to flooded whenever AC power is removed and re-applied.
AFAIK flooded and sealed (including AGM) batteries use the same 3-stage charging scheme, what difference are you expecting?

Salami Surgeon
Jan 21, 2001

Don't close. Don't close.


Nap Ghost
AGM needs to charge at a lower voltage, especially as they age

Rescue Toaster
Mar 13, 2003
I'm assuming the voltage thresholds are different in particular because the chargers always have separate settings for Flooded/gel-cel vs AGM. But it's true I should double-check the exact voltages.

Apparently the concorde sun xtender AGMs can handle a LOT of bulk charge current compared to normal lovely sealed lead acid UPS batteries so that aspect isn't such a problem after all. Not that I'm planning on going above like 0.2-0.25C anyway.

EDIT: Noco doesn't list the voltage thresholds they use, which is annoying. However looking at the concorde's data sheet, it looks like their AGMs prefer a more normal 14.2-14.4 absorption voltage unlike some AGMs which seem to prefer all the way up to 14.7. So I'm wondering if actually the normal flooded setting is actually better with the Nocos, I have reached out to their support to see if they can tell me what their chargers do.

Rescue Toaster fucked around with this message at 18:38 on Apr 27, 2023

ANIME AKBAR
Jan 25, 2007

afu~
It's the same chemical reaction, same potentials involved.

The only reason I could see to change the voltages is whether the battery is on standby duty or cycling duty. Basically depends on whether you expect the battery's life to be bottlenecked by sulfation or corrosion/outgassing.

babyeatingpsychopath
Oct 28, 2000
Forum Veteran


ANIME AKBAR posted:

It's the same chemical reaction, same potentials involved.

The only reason I could see to change the voltages is whether the battery is on standby duty or cycling duty. Basically depends on whether you expect the battery's life to be bottlenecked by sulfation or corrosion/outgassing.

I think the crux is the charge current and the logic by which chargers control it. Voltage thresholds will be the same, but the current levels in each stage will be different. That is, the charge profile for a starter battery and a deep-cycle battery will switch between the different curves at the same voltage, but the C rate in those curves is different. Charging the starter battery is probably fine at 10 or 20C, but the deep cycle will only charge at 0.1 to 1C.

A lot of lead-acid chargers are not constant-current sources, so they will adjust the open-circuit voltage to control charge current; the charger assumes an internal resistance which dictates charge rate. This logic really only needs to know what the battery type is and makes a bunch of assumptions about internal resistance. So set the charger to "AGM" or "FLA" or "DEEP CYCLE" and it'll change its charge rate by switching to "bulk charge mode" at different voltages, instead of having constant-current mode and switching at the same voltage. A constant-current mode means that the user would have to input the capacity of the battery into the charger to charge it properly.

Rescue Toaster
Mar 13, 2003
According to NOCO they charge Flooded/Gel to 14.5v, Lithium to 14.6v, and AGM to a whopping 14.8v during absorption. I don't understand the AGM number after looking at some datasheets for AGMs. I'm planning on just using the flooded setting, since that's closest to what the datasheets suggest at 14.2-14.4.

ryanrs
Jul 12, 2011

My LCD display wants a 1.0mm pitch, 2 position FPC connector for the backlight (actually front-lit) but I'm not seeing any such connectors on Digikey.

The display is a 2.7" Sharp Memory LCD, integrated with an Azumo front-lit film. Azumo 11103-06_T7.


Azumo datasheet.

Maybe they are doing something cheeky like using a 0.5mm pitch, 4-position connector? I've never used/specced FPC connectors before, but they look fiddly. I emailed Azumo tech support, but maybe a goon knows the answer faster? I didn't see a specific connector mentioned in the Azumo docs.

e: oh wait I found the part numbers in the datasheet

ryanrs fucked around with this message at 04:26 on Apr 29, 2023

jkr266s
Feb 16, 2008

Rescue Toaster posted:

According to NOCO they charge Flooded/Gel to 14.5v, Lithium to 14.6v, and AGM to a whopping 14.8v during absorption. I don't understand the AGM number after looking at some datasheets for AGMs. I'm planning on just using the flooded setting, since that's closest to what the datasheets suggest at 14.2-14.4.

The biggest problem with AGM is over-charging, they really dislike being overcharged, where as FLA doesn't really care all the much so a lot of cheap chargers will just dump current into the battery as long as it is plugged in. A big no no with AGM.

Cojawfee
May 31, 2006
I think the US is dumb for not using Celsius
Anybody have any tips for designing two boards that will fit together with standoffs and header pins? I'm currently designing something that's going to be two PCBs that are connected with a header and be held apart by standoffs. My issue is that standoffs seem to be 10mm and all the headers and sockets I can find add up to be 11 mm. I guess I can just stick some washers under the standoff, but it feels like there should be a better way of doing this.

Shame Boy
Mar 2, 2010

Standoffs come in a bunch of different sizes, you could absolutely find 12mm ones.

Like here's the first result on amazon for M3 12mm standoff for example:

https://www.amazon.com/Hxchen-Female-Hexagon-Standoff-Pillars/dp/B07ZHW8LCW/

Cojawfee
May 31, 2006
I think the US is dumb for not using Celsius
Wow, I don't know why I didn't think to look for 12mm. I guess I got stuck seeing a bunch of 5, 10, and 15mm ones that it didn't cross my mind.

Shame Boy
Mar 2, 2010

Cojawfee posted:

Wow, I don't know why I didn't think to look for 12mm. I guess I got stuck seeing a bunch of 5, 10, and 15mm ones that it didn't cross my mind.

I bought a bunch of sets of them a while ago when I decided to standardize all my projects on M3, so I basically have every length between 4mm and 26mm in 2mm increments :v:

e: Also one other tip, I assume you're using the default library stuff in KiCad? Double check that the actual pin headers and connectors you plan to use match the dimensions of the models good enough (or better yet, grab the manufacturer's STL file and use that instead if it's available), cuz I've had visually similar ones be several mm longer or shorter than the generic ones that come with KiCad and it's bitten me in the rear end once or twice when trying to do exactly what you're trying to do.

Shame Boy fucked around with this message at 07:28 on May 4, 2023

ryanrs
Jul 12, 2011

Small metric machine screw lengths go 10, 12, 16, 20.

14 and 15 are less common.13 can gently caress right off.

Rescue Toaster
Mar 13, 2003
Any thoughts on fan speed controls? Like for ceiling fans or small blowers. I have a small blower (~220 watts) which is a shaded pole, as there is no capacitor and it's single phase.

I tried to use a leviton speed control with it, but holy poo poo does it make the motor hum/buzz badly even at slightly reduced speeds. It does properly control the speed very well, so I don't accidentally have a split capacitor motor or something. I'm sure any motor will buzz when you drop the speed low enough, but I'm having a tough time finding out to what degree this is inherent or if it's a lovely dimmer. I don't really want to just keep buying dimmers and hoping for the best. I've seen some people say that the stepped speed controls (that have high/medium/low) don't make the motors buzz as much, but I can't imagine why, as they would still just be using a triac, no?

The one thought I had was trying to find a trailing-edge dimmer, like you need for various capacitor input LED lights to dim properly. Since that stops the current surge at the beginning of each 120hz half-cycle. But all the ones I can find are either too low power or extremely expensive.

Cojawfee
May 31, 2006
I think the US is dumb for not using Celsius

Shame Boy posted:

e: Also one other tip, I assume you're using the default library stuff in KiCad? Double check that the actual pin headers and connectors you plan to use match the dimensions of the models good enough (or better yet, grab the manufacturer's STL file and use that instead if it's available), cuz I've had visually similar ones be several mm longer or shorter than the generic ones that come with KiCad and it's bitten me in the rear end once or twice when trying to do exactly what you're trying to do.

I started out using default stuff, but now I'm grabbing footprints and step models directly from parts on mouser. Hopefully those are mostly decent, though I've had to fix the footprint of one part that had way too big holes for the legs.

Fanged Lawn Wormy
Jan 4, 2008

SQUEAK! SQUEAK! SQUEAK!

Rescue Toaster posted:

Any thoughts on fan speed controls? Like for ceiling fans or small blowers. I have a small blower (~220 watts) which is a shaded pole, as there is no capacitor and it's single phase.

I tried to use a leviton speed control with it, but holy poo poo does it make the motor hum/buzz badly even at slightly reduced speeds. It does properly control the speed very well, so I don't accidentally have a split capacitor motor or something. I'm sure any motor will buzz when you drop the speed low enough, but I'm having a tough time finding out to what degree this is inherent or if it's a lovely dimmer. I don't really want to just keep buying dimmers and hoping for the best. I've seen some people say that the stepped speed controls (that have high/medium/low) don't make the motors buzz as much, but I can't imagine why, as they would still just be using a triac, no?

The one thought I had was trying to find a trailing-edge dimmer, like you need for various capacitor input LED lights to dim properly. Since that stops the current surge at the beginning of each 120hz half-cycle. But all the ones I can find are either too low power or extremely expensive.

I wish I had an answer but I know a bit about why it’s difficult. Only a bit though, so somebody please correct me if I’m wrong on this:

Basically, motor coils are really dirty power-wise. The coils of the motor act like a generator and throw power “backwards” through the system. Generally, a motor is designed to work with the specific voltage and frequency to optimize use if power. Once those factors start to change, the generated power in the system makes the coils have to work harder as they have to fight to go in the correct direction, and you get a lot of heat buildup.

I know on an industrial level, motors kinda have to be specifically built to work on adjustable speeds. There’s a thing called a Variable Frequency Drive (VFD) that is generally used to do this. I believe they alter the AC phase frequency rather than the phase waveform itself to accomplish more acceptable electric properties for speed control.

Shame Boy
Mar 2, 2010

Cojawfee posted:

I started out using default stuff, but now I'm grabbing footprints and step models directly from parts on mouser. Hopefully those are mostly decent, though I've had to fix the footprint of one part that had way too big holes for the legs.

I've never had problems with default footprints in KiCad (ymmv of course), but yeah definitely use the actual models from the manufacturer (mouser's model should be that one)

Rescue Toaster
Mar 13, 2003

Fanged Lawn Wormy posted:

I wish I had an answer but I know a bit about why it’s difficult. Only a bit though, so somebody please correct me if I’m wrong on this:

Basically, motor coils are really dirty power-wise. The coils of the motor act like a generator and throw power “backwards” through the system. Generally, a motor is designed to work with the specific voltage and frequency to optimize use if power. Once those factors start to change, the generated power in the system makes the coils have to work harder as they have to fight to go in the correct direction, and you get a lot of heat buildup.

I know on an industrial level, motors kinda have to be specifically built to work on adjustable speeds. There’s a thing called a Variable Frequency Drive (VFD) that is generally used to do this. I believe they alter the AC phase frequency rather than the phase waveform itself to accomplish more acceptable electric properties for speed control.

Certain kinds of motors do require VFDs. But shaded pole motors can nominally be controlled basically by voltage control or a leading-edge dimmer. A true voltage control would presumably be quieter, and is why shaded-pole motors built with tapped windings can be set to speed steps with just a switch and without any weird humming.

I was thinking about it and found some stuff online that confirms a trailing-edge dimmer is a bad idea with an inductive load, since when you attempt to switch off during the current cycle you'll get an enormous voltage spike especially with fast MOSFETs, just like when turning off a relay or similar.

So I think short of some kind of variable-voltage 60hz drive (a large variac?) I just have to live with leading-edge dimming and a fairly small window of speed control before it starts humming.

ryanrs
Jul 12, 2011

Yeah a variac should work. $50 or so.

PDP-1
Oct 12, 2004

It's a beautiful day in the neighborhood.
Anyone know of a good book that teaches how Ethernet works at a low level?

I've been tasked with implementing an Ethernet port on an STM32 processor for work, apparently the official way to do this is with LightWeightIP (LWIP) which is pretty poorly documented and then ST stacks their god-awful HAL on top of that, plus I don't know the low level protocols so it feels like this is gonna be a painful shitshow to get running.

I can find the standards documents for things like, say, UDP but standards documents can be pretty difficult to learn from as they tend to assume that you're already an expert in the subject. There are also a ton of IT worker level books that describe how to use an already implemented UDP port but don't really get down into the 'send these bits to the PHY to do X' level.

I guess what I'm looking for is something that would walk through how to build your own Ethernet stack (MAC/PHY/protocols) in a pedagogical way, starting with an overview and then delving down into what each bit of a header frame actually does.

Charles Ford
Nov 27, 2004

The Earth is a farm. We are someone else’s Ford Focus.
The standard is definitely Lwip - it's not overly efficient and it has the occasional security vulnerability but implementing a TCP/IP stack itself is a big task (see the osdev.org forums for people who do that kind of thing as a hobby) and fraught with peril for the same reasons. Lwip can run in multithreaded or singlethreaded modes (and you can e.g. do your own multithreading on top of it in singlethreaded mode) and you just kind of plumb in a driver for the MAC/PHY in a single file, it's pretty convenient. I've seen many products use Lwip, including my Chamberlain "MyQ" garage door opener (the web server it briefly ran after setup revealed Lwip as its user agent), and I've used it at work and for hobby stuff too.

In my case I actually wanted to put a USB host-enabled project I had online so I connected an Amazon Basics USB2 (e.g. very slow) ethernet adapter to my PCB and wrote a USB driver for Lwip on my microcontroller. The hardest bit was NXP's crappy USB stack (licensed from some guy who made an Arduino USB stack, it had many bugs to find and a few broken assumptions about how USB works, at least in real world terms).

There's definitely books on "implementing TCP/IP from an Operating System Development" front, which seems to be what you're asking for, but as I mention, that's more rare than just using an existing solution (Lwip or something proprietary). However, if you *actually* just want to know how to do a network once you have Lwip fired up, it works almost exactly the same as on desktop except it's slightly less confusing (it's pretty much just "open a socket, do a thing", and Lwip actually has examples to do simple stuff as well as things like web servers (the web server example in Lwip is terrible and you can make it much better with some programming, too). Once place I worked I added all sorts of dynamic JSON generation and parsing to the Lwip server by using JSON templates that were precomputed into header files by Python scripts at build time that could then be run on the microcontroller in the field, which was a good laugh.

Cojawfee
May 31, 2006
I think the US is dumb for not using Celsius
I don't know about that specifically, but in my experience, if you can't get the information you want out of a tutorial for the device you're working with, look for a tutorial or information about doing it with something else. I was trying to figure out how to interface with an SD card with my FPGA board, but most things I could find were just "here's the verilog for reading an SD card" but I wanted to actually understand it. Actually it was worse than that, the examples i could find were in VHDL and I didn't understand VHDL at the time. I ended up finding a write up a guy did where he was bit banging a SPI protocol to read floppy images off an SD card with a Z80. He went into exactly what needed to be done to set the different modes for the SD card and it helped much more than any fpga tutorial did.

ANIME AKBAR
Jan 25, 2007

afu~
Can't imagine trying to learn how to learn about complicated and esoteric embedded subjects like TCP/IP or god forbid USB, especially since google has become absolute garbage for technical questions.

Literally every project I've been involved with developing a USB device (Atmel, TI, NXP, etc), the manufacturer-provided library/stack is a house of cards which only works if you architect all your code around whatever example project they give you (don't even think about using any interrupts which have priority over their USB stack! And no using any power saving features or different clock speeds!). Whenever things go wrong even the distributor FAEs shrug their shoulders and say they can't help us. We don't buy enough chips to be worth real technical support.

Stack Machine
Mar 6, 2016

I can see through time!
Fun Shoe
I'm coming up to speed on USB right now, and this is true! Other than the standard, the website USB in a Nutshell was fairly decent, but most of my knowledge comes from patiently watching bits fly over the wire. I sacrificed a late-90s optical mouse to the cause.

ryanrs
Jul 12, 2011

ANIME AKBAR posted:

Literally every project I've been involved with developing a USB device (Atmel, TI, NXP, etc), the manufacturer-provided library/stack is a house of cards which only works if you architect all your code around whatever example project they give you (don't even think about using any interrupts which have priority over their USB stack! And no using any power saving features or different clock speeds!). Whenever things go wrong even the distributor FAEs shrug their shoulders and say they can't help us. We don't buy enough chips to be worth real technical support.

ST Forum: Does USB device code for STM32 really allocate dynamic memory from interrupts?

(yes it does, lol)

PDP-1
Oct 12, 2004

It's a beautiful day in the neighborhood.

Charles Ford posted:

The standard is definitely Lwip - it's not overly efficient and it has the occasional security vulnerability but implementing a TCP/IP stack itself is a big task (see the osdev.org forums for people who do that kind of thing as a hobby) and fraught with peril for the same reasons. Lwip can run in multithreaded or singlethreaded modes (and you can e.g. do your own multithreading on top of it in singlethreaded mode) and you just kind of plumb in a driver for the MAC/PHY in a single file, it's pretty convenient. I've seen many products use Lwip, including my Chamberlain "MyQ" garage door opener (the web server it briefly ran after setup revealed Lwip as its user agent), and I've used it at work and for hobby stuff too.

Thanks, good to know that at least LWIP is a reasonable path to take. It's a huge Rube Goldberg device made out of #ifdef switches, but in the little time I've played with it I've found that setting the options I want in lwipopts.h, letting the IDE grey out big chunks of non-used code, and then manually deleting the dead code results in a surprisingly compact function call. It's also much easier to read as you don't have to scroll past literal screenfulls of dead code between the lines that actually execute.

I figure that I'll start with the STM32 HAL/LWIP default setup and make it do something simple like echo a character back, then begin sifting through the code stripping out parts that I don't need and commenting heavily along the way. Hopefully that'll result in a reasonable implementation that isn't obscured by the HAL's typical 57 layers of abstraction.

Anyway, I found this book that is kinda-sorta what I want. It doesn't go into as much depth as I'd like but maybe it will help me get a framework set up in my head for what stuff like ARP or ICMP are supposed to do and I can dig into each protocol later as needed.

ante
Apr 9, 2005

SUNSHINE AND RAINBOWS
Obligatory:

Do you have to modify LwIP? Can you not just drop it in and move on with your life?

Dominoes
Sep 20, 2007

I've never had trouble with USB on STM32 using USBD (older) and synopsys-usb-otg (newer). But I've only used these for USB 2.0 serial ports. (never HID devices or as hosts) And the reason those crates exist is USB is complicated compared to other periphs. (Ethernet, as mentioned, and to a lesser extent CAN being the other offenders)

Charles Ford
Nov 27, 2004

The Earth is a farm. We are someone else’s Ford Focus.
I almost started implementing my own USB stack to replace that NXP one for host, the actual USB hardware on that range of microcontrollers (LPC1857-type range) just implements an almost completely standard EHCI interface (and the places it deviates are often improvements like using a speed translator instead of requiring a companion OHCI or UHCI controller to support USB1.1 devices), so it wouldn't be *totally* wasted work if I ever moved to another (standards-compliant) microcontroller or add USB to my homebrew OS. Weirdly, the various open source alternative stacks didn't (at the time, at least) seem to support the chip.

Sadly, I did then move to a microcontroller that seems to do its own thing for USB and isn't standard, but its provided stack also seems to work much better anyway.

But agree re: Lwip, do you really want to remove the code you disabled? On multiple different projects I've definitely had to go back and turn something on that I or someone else initially didn't think we needed!

Shame Boy
Mar 2, 2010

That's what version control is for

Adbot
ADBOT LOVES YOU

ante
Apr 9, 2005

SUNSHINE AND RAINBOWS
Counterpoint: if your issue with dead code is that you have to scroll past it, modern IDEs will minimize the section so you can't even see it

  • 1
  • 2
  • 3
  • 4
  • 5
  • Post
  • Reply