Faits :
A.
Par jugement du 9 octobre 2019, le Tribunal de police de l'arrondissement de Lausanne a reconnu A._ coupable d'escroquerie et l'a condamné, outre aux frais de la procédure, à une peine pécuniaire de 30 jours-amende à 30 fr. le jour, assortie du sursis pendant deux ans.
B.
Statuant le 28 janvier 2020, la Cour d'appel pénale du Tribunal cantonal vaudois a partiellement admis l'appel de A._. Elle l'a condamné à une peine pécuniaire de 15 jours-amende à 30 fr. le jour, assortie du sursis pendant deux ans. La cour cantonale a libéré A._ d'une partie des faits fondant le chef de prévention d'escroquerie.
La cour cantonale a notamment retenu les faits suivants.
A._ a travaillé en qualité d'agent de sécurité au sein de l'entreprise B._ entre 2010 et 2014. Au bénéfice des prestations du revenu d'insertion, il n'a pas annoncé au Centre social régional de C._ (ci-après: CSR) l'existence d'un compte épargne ouvert à son nom auprès de la Banque D._. En mai 2012, il a annoncé avoir perçu un salaire de l'entreprise B._, pour le mois d'avril 2012, de 448 fr. 95 et a produit une fiche de salaire pour ce montant correspondant à ce qu'il avait gagné en avril 2011. Il a en réalité perçu sur son compte de chèque postal - déclaré auprès du CSR - le montant de 1'310 fr. 95. En décembre 2012, il a annoncé n'avoir perçu aucun salaire alors qu'il a reçu une rémunération de 2'584 fr. 10 de la part de l'entreprise B._ sur son compte de chèque postal, percevant ainsi un montant indu de 2'133 francs. En janvier 2013, il a annoncé avoir perçu un salaire de l'entreprise B._, pour décembre 2012, de 1'236 fr. 05 et a produit un justificatif pour ce montant correspondant à ce qu'il avait gagné en décembre 2011. Il a, en réalité, perçu sur le compte ouvert auprès de la Banque D._ - non déclaré auprès du CSR - le montant de 3'334 fr. 15. La Direction des sports et de la cohésion sociale, Service social de la Ville de C._, a porté plainte le 3 juillet 2018.
C.
A._ forme un recours en matière pénale au Tribunal fédéral contre le jugement précité. Il conclut, avec suite de frais et dépens, à sa réforme, en ce sens qu'il est acquitté du chef d'escroquerie, subsidiairement, qu'il est exempté de toute peine. Par ailleurs, il requiert l'octroi de l'assistance judiciaire.

Considérant en droit :
1.
Le recourant dénonce une violation de l'<ref-law>.
1.1. Le Tribunal fédéral n'est pas une autorité d'appel, auprès de laquelle les faits pourraient être rediscutés librement. Il est lié par les constatations de fait de la décision entreprise (<ref-law>), à moins qu'elles n'aient été établies en violation du droit ou de manière manifestement inexacte au sens des art. 97 al. 1 et 105 al. 2 LTF, à savoir, pour l'essentiel, de façon arbitraire au sens de l'art. 9 Cst. Une décision n'est pas arbitraire du seul fait qu'elle apparaît discutable ou même critiquable; il faut qu'elle soit manifestement insoutenable et cela non seulement dans sa motivation mais aussi dans son résultat (<ref-ruling> consid. 1.1 p. 155 s.; <ref-ruling> consid. 1.1 p. 503; sur la notion d'arbitraire v. <ref-ruling> consid. 2.3.1 p. 244). Le Tribunal fédéral n'entre en matière sur les moyens fondés sur la violation de droits fondamentaux, dont l'interdiction de l'arbitraire, que s'ils ont été invoqués et motivés de manière précise (<ref-law>; ATF <ref-ruling> consid. 1.1 p. 503). Les critiques de nature appellatoire sont irrecevables (<ref-ruling> consid. 1.1 p. 156).
1.2. Aux termes de l'<ref-law>, se rend coupable d'escroquerie celui qui, dans le dessein de se procurer ou de procurer à un tiers un enrichissement illégitime, aura astucieusement induit en erreur une personne par des affirmations fallacieuses ou par la dissimulation de faits vrais ou l'aura astucieusement confortée dans son erreur et aura de la sorte déterminé la victime à des actes préjudiciables à ses intérêts pécuniaires ou à ceux d'un tiers.
L'escroquerie consiste à tromper la dupe. Pour qu'il y ait escroquerie, une simple tromperie ne suffit cependant pas; il faut qu'elle soit astucieuse. Il y a tromperie astucieuse, au sens de l'<ref-law>, lorsque l'auteur recourt à un édifice de mensonges, à des manoeuvres frauduleuses ou à une mise en scène, mais aussi lorsqu'il donne simplement de fausses informations, si leur vérification n'est pas possible, ne l'est que difficilement ou ne peut raisonnablement être exigée, de même que si l'auteur dissuade la dupe de vérifier ou prévoit, en fonction des circonstances, qu'elle renoncera à le faire en raison d'un rapport de confiance particulier (<ref-ruling> consid. 2.2.2 p. 154 s.; <ref-ruling> consid. 5.2 p. 79 s.). L'astuce n'est pas réalisée si la dupe pouvait se protéger avec un minimum d'attention ou éviter l'erreur avec le minimum de prudence que l'on pouvait attendre d'elle. Il n'est cependant pas nécessaire qu'elle ait fait preuve de la plus grande diligence ou qu'elle ait recouru à toutes les mesures possibles pour éviter d'être trompée. L'astuce n'est exclue que si elle n'a pas procédé aux vérifications élémentaires que l'on pouvait attendre d'elle au vu des circonstances. Une co-responsabilité de la dupe n'exclut toutefois l'astuce que dans des cas exceptionnels (<ref-ruling> consid. 2.2.2 p. 155; <ref-ruling> consid. 5.2 p. 81).
La définition générale de l'astuce est également applicable à l'escroquerie en matière d'assurances et d'aide sociale. L'autorité agit de manière légère lorsqu'elle n'examine pas les pièces produites ou néglige de demander à celui qui requiert des prestations les documents nécessaires afin d'établir ses revenus et sa fortune, comme par exemple sa déclaration fiscale, une décision de taxation ou des extraits de ses comptes bancaires. En revanche, compte tenu du nombre de demandes d'aide sociale, une négligence ne peut être reprochée à l'autorité lorsque les pièces ne contiennent pas d'indice quant à des revenus ou à des éléments de fortune non déclarés ou qu'il est prévisible qu'elles n'en contiennent pas. En l'absence d'indice lui permettant de suspecter une modification du droit du bénéficiaire à bénéficier des prestations servies, l'autorité d'assistance n'a pas à procéder à des vérifications particulières (arrêts 6B_152/2020 du 1er avril 2020 consid. 3.2; 6B_1369/2019 du 22 janvier 2020 consid. 1.1.2; 6B_1255/2018 du 22 janvier 2019 consid. 1.1; 6B_117/2015 du 11 février 2016 consid. 23.2).
1.3. La cour cantonale a constaté qu'aucun versement d'argent n'avait été effectué sur le compte épargne du recourant entre 2006 et décembre 2012. Par ailleurs, elle a écarté l'escroquerie concernant les salaires déclarés aux mois de mai 2012 et janvier 2013. Le recourant avait certes déclaré pour les mois d'avril et décembre 2012 les salaires - quoique inférieurs - qu'il avait perçus pour les mois d'avril et décembre 2011 en produisant les fiches de salaire de ces mêmes mois pour 2011. Cependant, un simple examen de ces documents aurait permis à l'autorité de se rendre compte que les justificatifs n'étaient pas "valables". En revanche, il en allait différemment du mois de décembre 2012. A cet égard, le recourant n'avait rien déclaré du tout dans le questionnaire qu'il avait adressé au CSR pour cette période, alors qu'il avait perçu un salaire de 2'584 fr. 10, touchant ainsi indûment un montant de 2'133 fr. au titre de revenu d'insertion. En ne répondant pas de manière conforme à la vérité au sujet de modifications dans sa situation économique, il avait adopté un comportement activement trompeur, constitutif d'une escroquerie. Aucune négligence ne pouvait être reprochée à l'autorité, vu le nombre de demandes à traiter, lorsque, comme en l'espèce, les pièces ne contenaient pas d'indice quant à des revenus ou à des éléments de fortune non déclarés. Le CSR n'avait donc pas à effectuer des recherches bancaires ou auprès de l'employeur. Le recourant ne pouvait en outre pas invoquer que l'autorité aurait su qu'il travaillait au sein de l'entreprise B._ et qu'il percevait un salaire, dès lors que son activité auprès de cette société était irrégulière. Sa désorganisation administrative ne changeait rien au fait qu'il ne pouvait qu'être conscient, en décembre 2012, d'avoir reçu à la fois un revenu d'insertion et un revenu versé par son employeur. En définitive, seules les investigations de l'autorité avaient permis de découvrir les revenus dissimulés. Le recourant avait dès lors agi dans le dessein de s'enrichir illicitement, à tout le moins par dol éventuel. La cour cantonale a confirmé le verdict de culpabilité du chef d'escroquerie pour ce dernier cas, les éléments objectifs et subjectifs de cette infraction étant réunis.
1.4. Le recourant reconnaît qu'il n'a pas annoncé au CSR le salaire qu'il a perçu en décembre 2012 pour l'activité du mois précédent. Il conteste toutefois le caractère astucieux de sa tromperie. Invoquant l'arbitraire dans l'établissement des faits, il se prévaut notamment de la pièce 5/7 du dossier cantonal, soit le décompte chronologique mensuel du "dossier du revenu d'insertion". Il soutient que la cour cantonale aurait arbitrairement qualifié son activité auprès de B._ d'irrégulière. Pour cette activité, le recourant aurait perçu et déclaré, de juillet 2010 à février 2013, tous les mois, un salaire variable déduit de son indemnité. En décembre 2012, il exerçait cet emploi sans interruption depuis 30 mois. Dès lors, le CSR aurait dû suspecter qu'il travaillait encore pour B._ en novembre 2012 et qu'il recevrait donc une rémunération à ce titre le mois suivant. Cas échéant, il aurait été aisé au CSR d'exiger un extrait du compte - déclaré - de chèque postal.
Il ressort des constatations cantonales, qui lient le Tribunal fédéral, que le recourant a été employé par B._ de 2010 à 2014. A teneur de la pièce invoquée par le recourant, il appert (cf. <ref-law>, pièce 5/7 du dossier cantonal) que le recourant a touché un salaire presque chaque mois durant la période courant de juillet 2010 à février 2013, à savoir hormis en décembre 2011 et décembre 2012. Aucun décompte n'est établi pour les mois d'août 2010 et octobre 2011. Le montant du salaire varie considérablement, étant au plus bas de 86 fr. 90 (mars 2011) et au plus haut de 1'549 fr. (novembre 2011). Enfin, le s extraits ne renseignent que sur le montant du salaire, pas la personne de l'employeur. Au regard de ces éléments, il n'apparaît pas que la cour cantonale ait, de manière insoutenable, qualifié l'activité professionnelle du recourant d'irrégulière. A tout le moins, celle-ci n'a pas sombré dans l'arbitraire en retenant que le recourant ne pouvait pas invoquer le fait que l'autorité aurait su que celui-ci exerçait une activité lucrative auprès de B._ depuis plus de deux ans sans interruption. Le recourant soutient en outre que la cour cantonale n'aurait pas retenu, de manière arbitraire, qu'il bénéficiait de l'aide sociale sans interruption depuis le 1er janvier 2006. Il n'expose toutefois pas en quoi cet élément aurait été arbitrairement omis, se contentant de l'affirmer. Infondée, l'argumentation du recourant est rejetée, dans la mesure de sa recevabilité (<ref-law>).
En décembre 2012, le recourant ne s'est pas seulement abstenu de signaler au CSR le salaire de 2'584 fr. 10. qui a été versé, pour le mois de novembre 2012, sur son compte de chèque postal, ce qui ne serait pas suffisant pour retenir une tromperie (<ref-ruling> consid. 2.4 p. 14 ss). Le recourant a bel et bien eu un comportement actif puisqu'il a renvoyé à cette autorité un formulaire mensuel, sur lequel il n'a annoncé aucun revenu dans la rubrique idoine pour cette période. La signature du recourant figure au bas dudit document (cf. <ref-law>, pièce 5/6 du dossier cantonal). Ce comportement actif est constitutif d'escroquerie. L'autorité n'avait pas de motif de douter de la véracité des indications qui lui étaient fournies par le recourant. Elle n'avait en particulier pas à s'étonner spécialement du fait que celui-ci n'eut déclaré aucun salaire en décembre 2012, dans la mesure où ses revenus étaient irréguliers, ceux-ci ayant même parfois été proches de zéro (mars 2011). Compte tenu du nombre de demandes d'aide sociale, et en l'absence d'indice lui permettant de suspecter une modification du droit du recourant à bénéficier des prestations servies, elle n'avait dès lors pas à procéder à des vérifications particulières. Cela indépendamment du fait qu'elle avait connaissance du compte courant du recourant. Il ressort en outre des constatations cantonales que seules les "investigations" de l'autorité ont permis de découvrir les revenus dissimulés, ce qui va au-delà de ce qui peut être exigé de l'autorité lors du traitement d'une demande ordinaire. Infondé, ce grief doit être rejeté.
Au vu de ce qui précède, c'est sans arbitraire, ni violation du droit fédéral que la cour cantonale a condamné le recourant pour escroquerie à l'assurance sociale en raison des agissements constatés.
2.
Le recourant soutient que les conditions d'une exemption de peine au sens des art. 52 et 53 CP sont réalisées.
2.1. L'<ref-law> prévoit que, si la culpabilité de l'auteur et les conséquences de son acte sont peu importantes, l'autorité compétente renonce notamment à lui infliger une peine. L'importance de la culpabilité et celle du résultat dans le cas particulier doivent être évaluées par comparaison avec celle de la culpabilité et celle du résultat dans les cas typiques de faits punissables revêtant la même qualification; en effet, il ne s'agit pas d'annuler, par une disposition générale, toutes les peines mineures prévues par la loi pénale (<ref-ruling> consid. 5.3.3 p. 135 s.). La culpabilité de l'auteur se détermine selon les règles générales de l'<ref-law> (<ref-ruling> consid. 5.2.1 p. 133 s.), mais aussi selon d'autres critères, comme le principe de célérité ou d'autres motifs d'atténuation de la peine indépendants de la faute tels que l'écoulement du temps depuis la commission de l'infraction (<ref-ruling> consid. 5.4 p. 137).
Les conditions de l'<ref-law> ne sont pas réalisées. Dans la fixation de la peine, la cour cantonale a certes relevé le faible montant indûment perçu par le recourant et le fait que celui-ci n'a pas agi de façon répétée. Elle a cependant également souligné la volonté du recourant de profiter du système, se référant à l'appréciation du juge de première instance (jugement entrepris, p. 12 s.). Cela exclut de qualifier le cas d'anodin.
Le recourant invoque essentiellement le fait qu'il n'aurait jamais eu le moindre problème lié aux déclarations de ses revenus au CSR, à l'exception de ceux ayant mené à la présente procédure, alors qu'il bénéficierait de l'aide sociale depuis de nombreuses années. Cet argumentaire n'est pas pertinent par rapport à l'appréciation de l'importance du cas qui dépend essentiellement des faits reprochés. Lorsque le recourant soutient, par ailleurs, qu'une inscription à son casier judiciaire ne lui permettrait plus d'exercer une activité d'agent de sécurité, il ne s'agit pas non plus d'un critère pertinent sous l'angle de cette disposition. En définitive, les conditions de l'<ref-law> ne sont pas réunies, de sorte que le grief du recourant doit être rejeté.
2.2. A teneur de l'<ref-law>, dans sa teneur jusqu'au 30 juin 2019, qui est plus favorable au recourant (<ref-law>; cf. rapport de la Commission des affaires juridiques du Conseil national du 3 mai 2018 sur l'initiative parlementaire "Modifier l'<ref-law>", FF 2018 3881), lorsque l'auteur a réparé le dommage ou accompli tous les efforts que l'on pouvait raisonnablement attendre de lui pour compenser le tort qu'il a causé, l'autorité compétente renonce à le poursuivre, à le renvoyer devant le juge ou à lui infliger une peine, si les conditions du sursis à l'exécution de la peine sont remplies (art. 42) (let. a) et si l'intérêt public et l'intérêt du lésé à poursuivre l'auteur pénalement sont peu importants (let. b).
Cette disposition vise avant tout l'intérêt du lésé qui préfère en général être dédommagé que de voir l'auteur puni. Cette possibilité fait appel au sens des responsabilités de l'auteur en le rendant conscient du tort qu'il a causé; elle doit contribuer à améliorer les relations entre l'auteur et le lésé et à rétablir ainsi la paix publique. La réparation du dommage justifie une exemption de peine et l'intérêt à punir est réduit à néant parce que l'auteur effectue de façon active une prestation sociale à des fins de réconciliation et de rétablissement de la paix publique. L'intérêt public à la poursuite pénale doit être minime, voire inexistant. Il est ainsi tenu compte des cas dans lesquels aucun particulier n'est lésé. Par ailleurs, il convient d'éviter de privilégier les auteurs fortunés susceptibles de monnayer leur sanction (<ref-ruling> consid. 3.4.1 p. 21).
2.3. Le recourant soutient qu'il aurait intégralement remboursé le montant litigieux au CSR par le biais des prélèvements effectués par celui-ci sur les indemnités allouées. Cet élément aurait été arbitrairement omis par la cour cantonale alors qu'il aurait été relevé dans le jugement de première instance.
Certes, les conditions du sursis sont réalisées et le dommage a été réparé, selon les constatations du tribunal de première instance. Toutefois, le prononcé d'une sanction dans le cadre d'une escroquerie à une assurance sociale se justifie dans une optique de prévention générale. Il n'apparaît pas non plus que le recourant aurait reconnu le caractère illicite de son comportement. L'intérêt public à poursuivre l'auteur d'un détournement de prestations sociales n'est pas négligeable et exclut en l'espèce l'application de l'<ref-law>.
3.
Le recourant semble enfin soutenir que l'absence d'intérêt à punir résulterait du temps qui s'est écoulé depuis les événements. Il ne formule cependant aucun grief recevable (<ref-law>) tiré d'une violation de l'art. 48 let. e CP, disposition qu'il n'invoque même pas. Au demeurant, les deux tiers du délai de prescription ne sont pas atteints (cf. <ref-ruling> consid. 3.1 p. 147 s.).
4.
Le recours doit être rejeté dans la mesure où il est recevable. Comme il était dénué de chance de succès, la demande d'assistance judiciaire doit être rejetée (<ref-law>). Le recourant, qui succombe, supporte les frais judiciaires, dont le montant sera fixé en tenant compte de sa situation financière, laquelle n'apparaît pas favorable (art. 65 al. 2 et 66 al. 1 LTF).

Par ces motifs, le Tribunal fédéral prononce :
1.
Le recours est rejeté dans la mesure où il est recevable.
2.
La demande d'assistance judiciaire est rejetée.
3.
Les frais judiciaires, arrêtés à 1'200 fr., sont mis à la charge du recourant.
4.
Le présent arrêt est communiqué aux parties et à la Cour d'appel pénale du Tribunal cantonal du canton de Vaud.
Lausanne, le 21 juillet 2020
Au nom de la Cour de droit pénal
du Tribunal fédéral suisse
Le Président : Denys
La Greffière : Rettby