diff --git a/translated_images/IMG_5305.aa291c8812a9f1e5b08f3e789f9858e9eacc88c4bbc23296df1bffbbd9c671b3.br.png b/translated_images/IMG_5305.aa291c8812a9f1e5b08f3e789f9858e9eacc88c4bbc23296df1bffbbd9c671b3.br.png
new file mode 100644
index 00000000..1ba4f5c7
Binary files /dev/null and b/translated_images/IMG_5305.aa291c8812a9f1e5b08f3e789f9858e9eacc88c4bbc23296df1bffbbd9c671b3.br.png differ
diff --git a/translated_images/IMG_5305.aa291c8812a9f1e5b08f3e789f9858e9eacc88c4bbc23296df1bffbbd9c671b3.tr.png b/translated_images/IMG_5305.aa291c8812a9f1e5b08f3e789f9858e9eacc88c4bbc23296df1bffbbd9c671b3.tr.png
new file mode 100644
index 00000000..1ba4f5c7
Binary files /dev/null and b/translated_images/IMG_5305.aa291c8812a9f1e5b08f3e789f9858e9eacc88c4bbc23296df1bffbbd9c671b3.tr.png differ
diff --git a/translated_images/IMG_5306.d575b9ab7025877b0ceba872490fa561edf3c4fcd5e8cca4ae2607a309d48c50.br.png b/translated_images/IMG_5306.d575b9ab7025877b0ceba872490fa561edf3c4fcd5e8cca4ae2607a309d48c50.br.png
new file mode 100644
index 00000000..3cac91bb
Binary files /dev/null and b/translated_images/IMG_5306.d575b9ab7025877b0ceba872490fa561edf3c4fcd5e8cca4ae2607a309d48c50.br.png differ
diff --git a/translated_images/IMG_5306.d575b9ab7025877b0ceba872490fa561edf3c4fcd5e8cca4ae2607a309d48c50.tr.png b/translated_images/IMG_5306.d575b9ab7025877b0ceba872490fa561edf3c4fcd5e8cca4ae2607a309d48c50.tr.png
new file mode 100644
index 00000000..3cac91bb
Binary files /dev/null and b/translated_images/IMG_5306.d575b9ab7025877b0ceba872490fa561edf3c4fcd5e8cca4ae2607a309d48c50.tr.png differ
diff --git a/translated_images/IMG_5307.f9c9b8361a8aa7345cc6e8ae05cf6b7583d43d3c37ecfbd76d3fdc531e3ac59c.br.png b/translated_images/IMG_5307.f9c9b8361a8aa7345cc6e8ae05cf6b7583d43d3c37ecfbd76d3fdc531e3ac59c.br.png
new file mode 100644
index 00000000..967e6539
Binary files /dev/null and b/translated_images/IMG_5307.f9c9b8361a8aa7345cc6e8ae05cf6b7583d43d3c37ecfbd76d3fdc531e3ac59c.br.png differ
diff --git a/translated_images/IMG_5307.f9c9b8361a8aa7345cc6e8ae05cf6b7583d43d3c37ecfbd76d3fdc531e3ac59c.tr.png b/translated_images/IMG_5307.f9c9b8361a8aa7345cc6e8ae05cf6b7583d43d3c37ecfbd76d3fdc531e3ac59c.tr.png
new file mode 100644
index 00000000..967e6539
Binary files /dev/null and b/translated_images/IMG_5307.f9c9b8361a8aa7345cc6e8ae05cf6b7583d43d3c37ecfbd76d3fdc531e3ac59c.tr.png differ
diff --git a/translated_images/IMG_5308.cbd6ed7007e6906012162c19b9e4097936c57873cdb2e54159899066c4281dc5.br.png b/translated_images/IMG_5308.cbd6ed7007e6906012162c19b9e4097936c57873cdb2e54159899066c4281dc5.br.png
new file mode 100644
index 00000000..247c1dd6
Binary files /dev/null and b/translated_images/IMG_5308.cbd6ed7007e6906012162c19b9e4097936c57873cdb2e54159899066c4281dc5.br.png differ
diff --git a/translated_images/IMG_5308.cbd6ed7007e6906012162c19b9e4097936c57873cdb2e54159899066c4281dc5.tr.png b/translated_images/IMG_5308.cbd6ed7007e6906012162c19b9e4097936c57873cdb2e54159899066c4281dc5.tr.png
new file mode 100644
index 00000000..247c1dd6
Binary files /dev/null and b/translated_images/IMG_5308.cbd6ed7007e6906012162c19b9e4097936c57873cdb2e54159899066c4281dc5.tr.png differ
diff --git a/translated_images/IMG_5309.23fbc3b6667bfb64fa44804f835f38885ad37d02b0a1c1c6e8d89f9a78ba19b4.br.png b/translated_images/IMG_5309.23fbc3b6667bfb64fa44804f835f38885ad37d02b0a1c1c6e8d89f9a78ba19b4.br.png
new file mode 100644
index 00000000..e89d81c4
Binary files /dev/null and b/translated_images/IMG_5309.23fbc3b6667bfb64fa44804f835f38885ad37d02b0a1c1c6e8d89f9a78ba19b4.br.png differ
diff --git a/translated_images/IMG_5309.23fbc3b6667bfb64fa44804f835f38885ad37d02b0a1c1c6e8d89f9a78ba19b4.tr.png b/translated_images/IMG_5309.23fbc3b6667bfb64fa44804f835f38885ad37d02b0a1c1c6e8d89f9a78ba19b4.tr.png
new file mode 100644
index 00000000..e89d81c4
Binary files /dev/null and b/translated_images/IMG_5309.23fbc3b6667bfb64fa44804f835f38885ad37d02b0a1c1c6e8d89f9a78ba19b4.tr.png differ
diff --git a/translated_images/IMG_5310.0ee0eb2fbc1c2d0e2d331e74d32b371a4086c07b0839817e9d6b7d4b5c98fc60.br.png b/translated_images/IMG_5310.0ee0eb2fbc1c2d0e2d331e74d32b371a4086c07b0839817e9d6b7d4b5c98fc60.br.png
new file mode 100644
index 00000000..0237836d
Binary files /dev/null and b/translated_images/IMG_5310.0ee0eb2fbc1c2d0e2d331e74d32b371a4086c07b0839817e9d6b7d4b5c98fc60.br.png differ
diff --git a/translated_images/IMG_5310.0ee0eb2fbc1c2d0e2d331e74d32b371a4086c07b0839817e9d6b7d4b5c98fc60.tr.png b/translated_images/IMG_5310.0ee0eb2fbc1c2d0e2d331e74d32b371a4086c07b0839817e9d6b7d4b5c98fc60.tr.png
new file mode 100644
index 00000000..0237836d
Binary files /dev/null and b/translated_images/IMG_5310.0ee0eb2fbc1c2d0e2d331e74d32b371a4086c07b0839817e9d6b7d4b5c98fc60.tr.png differ
diff --git a/translated_images/IMG_5311.8c90da6446c2d8c2ad70dd9e64f29b2b6f2b4d117f8502c3181be66297cc84da.br.png b/translated_images/IMG_5311.8c90da6446c2d8c2ad70dd9e64f29b2b6f2b4d117f8502c3181be66297cc84da.br.png
new file mode 100644
index 00000000..4229fee0
Binary files /dev/null and b/translated_images/IMG_5311.8c90da6446c2d8c2ad70dd9e64f29b2b6f2b4d117f8502c3181be66297cc84da.br.png differ
diff --git a/translated_images/IMG_5311.8c90da6446c2d8c2ad70dd9e64f29b2b6f2b4d117f8502c3181be66297cc84da.tr.png b/translated_images/IMG_5311.8c90da6446c2d8c2ad70dd9e64f29b2b6f2b4d117f8502c3181be66297cc84da.tr.png
new file mode 100644
index 00000000..4229fee0
Binary files /dev/null and b/translated_images/IMG_5311.8c90da6446c2d8c2ad70dd9e64f29b2b6f2b4d117f8502c3181be66297cc84da.tr.png differ
diff --git a/translated_images/IMG_5312.a45550ddd8ce8e654919361d52b919e2f8b1dbd01439268b5d3b813133a4e19b.br.png b/translated_images/IMG_5312.a45550ddd8ce8e654919361d52b919e2f8b1dbd01439268b5d3b813133a4e19b.br.png
new file mode 100644
index 00000000..9b503ac8
Binary files /dev/null and b/translated_images/IMG_5312.a45550ddd8ce8e654919361d52b919e2f8b1dbd01439268b5d3b813133a4e19b.br.png differ
diff --git a/translated_images/IMG_5312.a45550ddd8ce8e654919361d52b919e2f8b1dbd01439268b5d3b813133a4e19b.tr.png b/translated_images/IMG_5312.a45550ddd8ce8e654919361d52b919e2f8b1dbd01439268b5d3b813133a4e19b.tr.png
new file mode 100644
index 00000000..9b503ac8
Binary files /dev/null and b/translated_images/IMG_5312.a45550ddd8ce8e654919361d52b919e2f8b1dbd01439268b5d3b813133a4e19b.tr.png differ
diff --git a/translated_images/IMG_5313.ed1b45211271dbd23dc596ce9f72078aba665bd5f21088a616a85dd966100427.br.png b/translated_images/IMG_5313.ed1b45211271dbd23dc596ce9f72078aba665bd5f21088a616a85dd966100427.br.png
new file mode 100644
index 00000000..c98b7aaf
Binary files /dev/null and b/translated_images/IMG_5313.ed1b45211271dbd23dc596ce9f72078aba665bd5f21088a616a85dd966100427.br.png differ
diff --git a/translated_images/IMG_5313.ed1b45211271dbd23dc596ce9f72078aba665bd5f21088a616a85dd966100427.tr.png b/translated_images/IMG_5313.ed1b45211271dbd23dc596ce9f72078aba665bd5f21088a616a85dd966100427.tr.png
new file mode 100644
index 00000000..c98b7aaf
Binary files /dev/null and b/translated_images/IMG_5313.ed1b45211271dbd23dc596ce9f72078aba665bd5f21088a616a85dd966100427.tr.png differ
diff --git a/translated_images/IMG_5314.c2203206a05a74b5a4f10a68bbe274e65849a63e1fefe008b2c94be4ae86839c.br.png b/translated_images/IMG_5314.c2203206a05a74b5a4f10a68bbe274e65849a63e1fefe008b2c94be4ae86839c.br.png
new file mode 100644
index 00000000..706f83bc
Binary files /dev/null and b/translated_images/IMG_5314.c2203206a05a74b5a4f10a68bbe274e65849a63e1fefe008b2c94be4ae86839c.br.png differ
diff --git a/translated_images/IMG_5314.c2203206a05a74b5a4f10a68bbe274e65849a63e1fefe008b2c94be4ae86839c.tr.png b/translated_images/IMG_5314.c2203206a05a74b5a4f10a68bbe274e65849a63e1fefe008b2c94be4ae86839c.tr.png
new file mode 100644
index 00000000..706f83bc
Binary files /dev/null and b/translated_images/IMG_5314.c2203206a05a74b5a4f10a68bbe274e65849a63e1fefe008b2c94be4ae86839c.tr.png differ
diff --git a/translated_images/IMG_5315.f698228e0e031bd430efcfab0d08b00d9f3af5289133ce88a9f56c0c3478cd71.br.png b/translated_images/IMG_5315.f698228e0e031bd430efcfab0d08b00d9f3af5289133ce88a9f56c0c3478cd71.br.png
new file mode 100644
index 00000000..76bec4da
Binary files /dev/null and b/translated_images/IMG_5315.f698228e0e031bd430efcfab0d08b00d9f3af5289133ce88a9f56c0c3478cd71.br.png differ
diff --git a/translated_images/IMG_5315.f698228e0e031bd430efcfab0d08b00d9f3af5289133ce88a9f56c0c3478cd71.tr.png b/translated_images/IMG_5315.f698228e0e031bd430efcfab0d08b00d9f3af5289133ce88a9f56c0c3478cd71.tr.png
new file mode 100644
index 00000000..76bec4da
Binary files /dev/null and b/translated_images/IMG_5315.f698228e0e031bd430efcfab0d08b00d9f3af5289133ce88a9f56c0c3478cd71.tr.png differ
diff --git a/translated_images/IMG_5316.29dc70d802ce83497258426614e3e1426a91d6f9777e853daa4a9351b841b94f.br.png b/translated_images/IMG_5316.29dc70d802ce83497258426614e3e1426a91d6f9777e853daa4a9351b841b94f.br.png
new file mode 100644
index 00000000..b49060a2
Binary files /dev/null and b/translated_images/IMG_5316.29dc70d802ce83497258426614e3e1426a91d6f9777e853daa4a9351b841b94f.br.png differ
diff --git a/translated_images/IMG_5316.29dc70d802ce83497258426614e3e1426a91d6f9777e853daa4a9351b841b94f.tr.png b/translated_images/IMG_5316.29dc70d802ce83497258426614e3e1426a91d6f9777e853daa4a9351b841b94f.tr.png
new file mode 100644
index 00000000..b49060a2
Binary files /dev/null and b/translated_images/IMG_5316.29dc70d802ce83497258426614e3e1426a91d6f9777e853daa4a9351b841b94f.tr.png differ
diff --git a/translated_images/IMG_5317.ed81e4c1ca5046dc50613049e39c905157fbb318ea19db44c738db513ac501b1.br.png b/translated_images/IMG_5317.ed81e4c1ca5046dc50613049e39c905157fbb318ea19db44c738db513ac501b1.br.png
new file mode 100644
index 00000000..3ca064d5
Binary files /dev/null and b/translated_images/IMG_5317.ed81e4c1ca5046dc50613049e39c905157fbb318ea19db44c738db513ac501b1.br.png differ
diff --git a/translated_images/IMG_5317.ed81e4c1ca5046dc50613049e39c905157fbb318ea19db44c738db513ac501b1.tr.png b/translated_images/IMG_5317.ed81e4c1ca5046dc50613049e39c905157fbb318ea19db44c738db513ac501b1.tr.png
new file mode 100644
index 00000000..3ca064d5
Binary files /dev/null and b/translated_images/IMG_5317.ed81e4c1ca5046dc50613049e39c905157fbb318ea19db44c738db513ac501b1.tr.png differ
diff --git a/translated_images/IMG_5318.15dfffeb7f47abf7ca0393628024c1fd45761193ab23185c315e899bd0e7048b.br.png b/translated_images/IMG_5318.15dfffeb7f47abf7ca0393628024c1fd45761193ab23185c315e899bd0e7048b.br.png
new file mode 100644
index 00000000..1f5f2412
Binary files /dev/null and b/translated_images/IMG_5318.15dfffeb7f47abf7ca0393628024c1fd45761193ab23185c315e899bd0e7048b.br.png differ
diff --git a/translated_images/IMG_5318.15dfffeb7f47abf7ca0393628024c1fd45761193ab23185c315e899bd0e7048b.tr.png b/translated_images/IMG_5318.15dfffeb7f47abf7ca0393628024c1fd45761193ab23185c315e899bd0e7048b.tr.png
new file mode 100644
index 00000000..1f5f2412
Binary files /dev/null and b/translated_images/IMG_5318.15dfffeb7f47abf7ca0393628024c1fd45761193ab23185c315e899bd0e7048b.tr.png differ
diff --git a/translated_images/IMG_5319.b549b1fff0dcf143c2483044d0519a3c6dc3de12c88860911b378688e7a4e01b.br.png b/translated_images/IMG_5319.b549b1fff0dcf143c2483044d0519a3c6dc3de12c88860911b378688e7a4e01b.br.png
new file mode 100644
index 00000000..2953cea1
Binary files /dev/null and b/translated_images/IMG_5319.b549b1fff0dcf143c2483044d0519a3c6dc3de12c88860911b378688e7a4e01b.br.png differ
diff --git a/translated_images/IMG_5319.b549b1fff0dcf143c2483044d0519a3c6dc3de12c88860911b378688e7a4e01b.tr.png b/translated_images/IMG_5319.b549b1fff0dcf143c2483044d0519a3c6dc3de12c88860911b378688e7a4e01b.tr.png
new file mode 100644
index 00000000..2953cea1
Binary files /dev/null and b/translated_images/IMG_5319.b549b1fff0dcf143c2483044d0519a3c6dc3de12c88860911b378688e7a4e01b.tr.png differ
diff --git a/translated_images/IMG_5320.8268d3f61972f348df46401d107399af17512db9ef769f6a44c6cbb18faba998.br.png b/translated_images/IMG_5320.8268d3f61972f348df46401d107399af17512db9ef769f6a44c6cbb18faba998.br.png
new file mode 100644
index 00000000..2ce7dedf
Binary files /dev/null and b/translated_images/IMG_5320.8268d3f61972f348df46401d107399af17512db9ef769f6a44c6cbb18faba998.br.png differ
diff --git a/translated_images/IMG_5320.8268d3f61972f348df46401d107399af17512db9ef769f6a44c6cbb18faba998.tr.png b/translated_images/IMG_5320.8268d3f61972f348df46401d107399af17512db9ef769f6a44c6cbb18faba998.tr.png
new file mode 100644
index 00000000..2ce7dedf
Binary files /dev/null and b/translated_images/IMG_5320.8268d3f61972f348df46401d107399af17512db9ef769f6a44c6cbb18faba998.tr.png differ
diff --git a/translated_images/IMG_5321.b207cf143a59458d150cb1fbd44c3678d14f9cfffe77a0ec64e1cdfe1436df1c.br.png b/translated_images/IMG_5321.b207cf143a59458d150cb1fbd44c3678d14f9cfffe77a0ec64e1cdfe1436df1c.br.png
new file mode 100644
index 00000000..157c08c6
Binary files /dev/null and b/translated_images/IMG_5321.b207cf143a59458d150cb1fbd44c3678d14f9cfffe77a0ec64e1cdfe1436df1c.br.png differ
diff --git a/translated_images/IMG_5321.b207cf143a59458d150cb1fbd44c3678d14f9cfffe77a0ec64e1cdfe1436df1c.tr.png b/translated_images/IMG_5321.b207cf143a59458d150cb1fbd44c3678d14f9cfffe77a0ec64e1cdfe1436df1c.tr.png
new file mode 100644
index 00000000..157c08c6
Binary files /dev/null and b/translated_images/IMG_5321.b207cf143a59458d150cb1fbd44c3678d14f9cfffe77a0ec64e1cdfe1436df1c.tr.png differ
diff --git a/translated_images/IMG_5322.974809b9461a9e200e99ae46142b4885e093e5b9b668e0fd818de461e27856a7.br.png b/translated_images/IMG_5322.974809b9461a9e200e99ae46142b4885e093e5b9b668e0fd818de461e27856a7.br.png
new file mode 100644
index 00000000..031361a6
Binary files /dev/null and b/translated_images/IMG_5322.974809b9461a9e200e99ae46142b4885e093e5b9b668e0fd818de461e27856a7.br.png differ
diff --git a/translated_images/IMG_5322.974809b9461a9e200e99ae46142b4885e093e5b9b668e0fd818de461e27856a7.tr.png b/translated_images/IMG_5322.974809b9461a9e200e99ae46142b4885e093e5b9b668e0fd818de461e27856a7.tr.png
new file mode 100644
index 00000000..031361a6
Binary files /dev/null and b/translated_images/IMG_5322.974809b9461a9e200e99ae46142b4885e093e5b9b668e0fd818de461e27856a7.tr.png differ
diff --git a/translated_images/IMG_5323.4939fa17958f291bb856032bbd044a709c0199b2e3846f1801a7836d4455dd26.br.png b/translated_images/IMG_5323.4939fa17958f291bb856032bbd044a709c0199b2e3846f1801a7836d4455dd26.br.png
new file mode 100644
index 00000000..3a43eb23
Binary files /dev/null and b/translated_images/IMG_5323.4939fa17958f291bb856032bbd044a709c0199b2e3846f1801a7836d4455dd26.br.png differ
diff --git a/translated_images/IMG_5323.4939fa17958f291bb856032bbd044a709c0199b2e3846f1801a7836d4455dd26.tr.png b/translated_images/IMG_5323.4939fa17958f291bb856032bbd044a709c0199b2e3846f1801a7836d4455dd26.tr.png
new file mode 100644
index 00000000..3a43eb23
Binary files /dev/null and b/translated_images/IMG_5323.4939fa17958f291bb856032bbd044a709c0199b2e3846f1801a7836d4455dd26.tr.png differ
diff --git a/translated_images/IMG_5324.0afbc6f0caceb1a341a9606fc9b879938eebebbc8401fce37dff2b167ed4b410.br.png b/translated_images/IMG_5324.0afbc6f0caceb1a341a9606fc9b879938eebebbc8401fce37dff2b167ed4b410.br.png
new file mode 100644
index 00000000..7c9552e3
Binary files /dev/null and b/translated_images/IMG_5324.0afbc6f0caceb1a341a9606fc9b879938eebebbc8401fce37dff2b167ed4b410.br.png differ
diff --git a/translated_images/IMG_5324.0afbc6f0caceb1a341a9606fc9b879938eebebbc8401fce37dff2b167ed4b410.tr.png b/translated_images/IMG_5324.0afbc6f0caceb1a341a9606fc9b879938eebebbc8401fce37dff2b167ed4b410.tr.png
new file mode 100644
index 00000000..7c9552e3
Binary files /dev/null and b/translated_images/IMG_5324.0afbc6f0caceb1a341a9606fc9b879938eebebbc8401fce37dff2b167ed4b410.tr.png differ
diff --git a/translated_images/IMG_5325.9e9d9e9b85a10b06ac6038bf88ef91ef56fd371ed9e67b53495cd6878019faf9.br.png b/translated_images/IMG_5325.9e9d9e9b85a10b06ac6038bf88ef91ef56fd371ed9e67b53495cd6878019faf9.br.png
new file mode 100644
index 00000000..78f695b7
Binary files /dev/null and b/translated_images/IMG_5325.9e9d9e9b85a10b06ac6038bf88ef91ef56fd371ed9e67b53495cd6878019faf9.br.png differ
diff --git a/translated_images/IMG_5325.9e9d9e9b85a10b06ac6038bf88ef91ef56fd371ed9e67b53495cd6878019faf9.tr.png b/translated_images/IMG_5325.9e9d9e9b85a10b06ac6038bf88ef91ef56fd371ed9e67b53495cd6878019faf9.tr.png
new file mode 100644
index 00000000..78f695b7
Binary files /dev/null and b/translated_images/IMG_5325.9e9d9e9b85a10b06ac6038bf88ef91ef56fd371ed9e67b53495cd6878019faf9.tr.png differ
diff --git a/translated_images/IMG_5326.35bbc9e054c704d0418a8ba7418aa38f51baee13bd2b00cfe8300e1500fa9f32.br.png b/translated_images/IMG_5326.35bbc9e054c704d0418a8ba7418aa38f51baee13bd2b00cfe8300e1500fa9f32.br.png
new file mode 100644
index 00000000..77f563fb
Binary files /dev/null and b/translated_images/IMG_5326.35bbc9e054c704d0418a8ba7418aa38f51baee13bd2b00cfe8300e1500fa9f32.br.png differ
diff --git a/translated_images/IMG_5326.35bbc9e054c704d0418a8ba7418aa38f51baee13bd2b00cfe8300e1500fa9f32.tr.png b/translated_images/IMG_5326.35bbc9e054c704d0418a8ba7418aa38f51baee13bd2b00cfe8300e1500fa9f32.tr.png
new file mode 100644
index 00000000..77f563fb
Binary files /dev/null and b/translated_images/IMG_5326.35bbc9e054c704d0418a8ba7418aa38f51baee13bd2b00cfe8300e1500fa9f32.tr.png differ
diff --git a/translated_images/IMG_5327.804b63a605b5a77a7b60c2fbf370be0f7364f2b5acb98c736420728e61845b62.br.png b/translated_images/IMG_5327.804b63a605b5a77a7b60c2fbf370be0f7364f2b5acb98c736420728e61845b62.br.png
new file mode 100644
index 00000000..8dccd514
Binary files /dev/null and b/translated_images/IMG_5327.804b63a605b5a77a7b60c2fbf370be0f7364f2b5acb98c736420728e61845b62.br.png differ
diff --git a/translated_images/IMG_5327.804b63a605b5a77a7b60c2fbf370be0f7364f2b5acb98c736420728e61845b62.tr.png b/translated_images/IMG_5327.804b63a605b5a77a7b60c2fbf370be0f7364f2b5acb98c736420728e61845b62.tr.png
new file mode 100644
index 00000000..8dccd514
Binary files /dev/null and b/translated_images/IMG_5327.804b63a605b5a77a7b60c2fbf370be0f7364f2b5acb98c736420728e61845b62.tr.png differ
diff --git a/translated_images/IMG_5328.925a9da23d96759f6c7c13bfcd94b8063bb5082d2e8a0431058c057e6d14446b.br.png b/translated_images/IMG_5328.925a9da23d96759f6c7c13bfcd94b8063bb5082d2e8a0431058c057e6d14446b.br.png
new file mode 100644
index 00000000..b75e015e
Binary files /dev/null and b/translated_images/IMG_5328.925a9da23d96759f6c7c13bfcd94b8063bb5082d2e8a0431058c057e6d14446b.br.png differ
diff --git a/translated_images/IMG_5328.925a9da23d96759f6c7c13bfcd94b8063bb5082d2e8a0431058c057e6d14446b.tr.png b/translated_images/IMG_5328.925a9da23d96759f6c7c13bfcd94b8063bb5082d2e8a0431058c057e6d14446b.tr.png
new file mode 100644
index 00000000..b75e015e
Binary files /dev/null and b/translated_images/IMG_5328.925a9da23d96759f6c7c13bfcd94b8063bb5082d2e8a0431058c057e6d14446b.tr.png differ
diff --git a/translated_images/IMG_5329.27da5fcbc3336773e94bbd2640df07799c76051bf97d2db7891d47bc462c6e09.br.png b/translated_images/IMG_5329.27da5fcbc3336773e94bbd2640df07799c76051bf97d2db7891d47bc462c6e09.br.png
new file mode 100644
index 00000000..5bfed282
Binary files /dev/null and b/translated_images/IMG_5329.27da5fcbc3336773e94bbd2640df07799c76051bf97d2db7891d47bc462c6e09.br.png differ
diff --git a/translated_images/IMG_5329.27da5fcbc3336773e94bbd2640df07799c76051bf97d2db7891d47bc462c6e09.tr.png b/translated_images/IMG_5329.27da5fcbc3336773e94bbd2640df07799c76051bf97d2db7891d47bc462c6e09.tr.png
new file mode 100644
index 00000000..5bfed282
Binary files /dev/null and b/translated_images/IMG_5329.27da5fcbc3336773e94bbd2640df07799c76051bf97d2db7891d47bc462c6e09.tr.png differ
diff --git a/translated_images/IMG_5330.3db3d5ea01c8cca2ae41cf5ea501a0a836569a3abbc2ae95696e0ad1dd005b6a.br.png b/translated_images/IMG_5330.3db3d5ea01c8cca2ae41cf5ea501a0a836569a3abbc2ae95696e0ad1dd005b6a.br.png
new file mode 100644
index 00000000..34ca765c
Binary files /dev/null and b/translated_images/IMG_5330.3db3d5ea01c8cca2ae41cf5ea501a0a836569a3abbc2ae95696e0ad1dd005b6a.br.png differ
diff --git a/translated_images/IMG_5330.3db3d5ea01c8cca2ae41cf5ea501a0a836569a3abbc2ae95696e0ad1dd005b6a.tr.png b/translated_images/IMG_5330.3db3d5ea01c8cca2ae41cf5ea501a0a836569a3abbc2ae95696e0ad1dd005b6a.tr.png
new file mode 100644
index 00000000..34ca765c
Binary files /dev/null and b/translated_images/IMG_5330.3db3d5ea01c8cca2ae41cf5ea501a0a836569a3abbc2ae95696e0ad1dd005b6a.tr.png differ
diff --git a/translated_images/IMG_5331.181987d3d094472fbf569a61760fadf282575f2821138de50007e408fd63182e.br.png b/translated_images/IMG_5331.181987d3d094472fbf569a61760fadf282575f2821138de50007e408fd63182e.br.png
new file mode 100644
index 00000000..d1f7bc09
Binary files /dev/null and b/translated_images/IMG_5331.181987d3d094472fbf569a61760fadf282575f2821138de50007e408fd63182e.br.png differ
diff --git a/translated_images/IMG_5331.181987d3d094472fbf569a61760fadf282575f2821138de50007e408fd63182e.tr.png b/translated_images/IMG_5331.181987d3d094472fbf569a61760fadf282575f2821138de50007e408fd63182e.tr.png
new file mode 100644
index 00000000..d1f7bc09
Binary files /dev/null and b/translated_images/IMG_5331.181987d3d094472fbf569a61760fadf282575f2821138de50007e408fd63182e.tr.png differ
diff --git a/translated_images/IMG_5332.4beed56eaa5158e3785dbacb53c9670a0ef1699ce386528f4bb9bad50adf88ca.br.png b/translated_images/IMG_5332.4beed56eaa5158e3785dbacb53c9670a0ef1699ce386528f4bb9bad50adf88ca.br.png
new file mode 100644
index 00000000..c215b446
Binary files /dev/null and b/translated_images/IMG_5332.4beed56eaa5158e3785dbacb53c9670a0ef1699ce386528f4bb9bad50adf88ca.br.png differ
diff --git a/translated_images/IMG_5332.4beed56eaa5158e3785dbacb53c9670a0ef1699ce386528f4bb9bad50adf88ca.tr.png b/translated_images/IMG_5332.4beed56eaa5158e3785dbacb53c9670a0ef1699ce386528f4bb9bad50adf88ca.tr.png
new file mode 100644
index 00000000..c215b446
Binary files /dev/null and b/translated_images/IMG_5332.4beed56eaa5158e3785dbacb53c9670a0ef1699ce386528f4bb9bad50adf88ca.tr.png differ
diff --git a/translated_images/IMG_5333.53c3364c2ee0e7bb5db0e299915faaf31e47bb99ad045ec8f6de6ca23d323f47.br.png b/translated_images/IMG_5333.53c3364c2ee0e7bb5db0e299915faaf31e47bb99ad045ec8f6de6ca23d323f47.br.png
new file mode 100644
index 00000000..63f58daa
Binary files /dev/null and b/translated_images/IMG_5333.53c3364c2ee0e7bb5db0e299915faaf31e47bb99ad045ec8f6de6ca23d323f47.br.png differ
diff --git a/translated_images/IMG_5333.53c3364c2ee0e7bb5db0e299915faaf31e47bb99ad045ec8f6de6ca23d323f47.tr.png b/translated_images/IMG_5333.53c3364c2ee0e7bb5db0e299915faaf31e47bb99ad045ec8f6de6ca23d323f47.tr.png
new file mode 100644
index 00000000..63f58daa
Binary files /dev/null and b/translated_images/IMG_5333.53c3364c2ee0e7bb5db0e299915faaf31e47bb99ad045ec8f6de6ca23d323f47.tr.png differ
diff --git a/translated_images/IMG_5334.979472e433948c109b122ae4bbd0f96971dc2e7b1e64615776ebb7337a97e183.br.png b/translated_images/IMG_5334.979472e433948c109b122ae4bbd0f96971dc2e7b1e64615776ebb7337a97e183.br.png
new file mode 100644
index 00000000..3eb38501
Binary files /dev/null and b/translated_images/IMG_5334.979472e433948c109b122ae4bbd0f96971dc2e7b1e64615776ebb7337a97e183.br.png differ
diff --git a/translated_images/IMG_5334.979472e433948c109b122ae4bbd0f96971dc2e7b1e64615776ebb7337a97e183.tr.png b/translated_images/IMG_5334.979472e433948c109b122ae4bbd0f96971dc2e7b1e64615776ebb7337a97e183.tr.png
new file mode 100644
index 00000000..3eb38501
Binary files /dev/null and b/translated_images/IMG_5334.979472e433948c109b122ae4bbd0f96971dc2e7b1e64615776ebb7337a97e183.tr.png differ
diff --git a/translated_images/IMG_5335.9f5bfba69a8d5a901c3e3b994a69f62a00d73ef9209b85561553d2ae99a56615.br.png b/translated_images/IMG_5335.9f5bfba69a8d5a901c3e3b994a69f62a00d73ef9209b85561553d2ae99a56615.br.png
new file mode 100644
index 00000000..4f960870
Binary files /dev/null and b/translated_images/IMG_5335.9f5bfba69a8d5a901c3e3b994a69f62a00d73ef9209b85561553d2ae99a56615.br.png differ
diff --git a/translated_images/IMG_5335.9f5bfba69a8d5a901c3e3b994a69f62a00d73ef9209b85561553d2ae99a56615.tr.png b/translated_images/IMG_5335.9f5bfba69a8d5a901c3e3b994a69f62a00d73ef9209b85561553d2ae99a56615.tr.png
new file mode 100644
index 00000000..4f960870
Binary files /dev/null and b/translated_images/IMG_5335.9f5bfba69a8d5a901c3e3b994a69f62a00d73ef9209b85561553d2ae99a56615.tr.png differ
diff --git a/translated_images/IMG_5336.1b46586fdec957670ea71c1bd68c26f73aa95cd5671d057328fd198640729db7.br.png b/translated_images/IMG_5336.1b46586fdec957670ea71c1bd68c26f73aa95cd5671d057328fd198640729db7.br.png
new file mode 100644
index 00000000..ca5b5882
Binary files /dev/null and b/translated_images/IMG_5336.1b46586fdec957670ea71c1bd68c26f73aa95cd5671d057328fd198640729db7.br.png differ
diff --git a/translated_images/IMG_5336.1b46586fdec957670ea71c1bd68c26f73aa95cd5671d057328fd198640729db7.tr.png b/translated_images/IMG_5336.1b46586fdec957670ea71c1bd68c26f73aa95cd5671d057328fd198640729db7.tr.png
new file mode 100644
index 00000000..ca5b5882
Binary files /dev/null and b/translated_images/IMG_5336.1b46586fdec957670ea71c1bd68c26f73aa95cd5671d057328fd198640729db7.tr.png differ
diff --git a/translated_images/IMG_5337.91c82be4d37029b03cbb07553d92b9d2dd672e22a07fee6453cbc40568fbdef3.br.png b/translated_images/IMG_5337.91c82be4d37029b03cbb07553d92b9d2dd672e22a07fee6453cbc40568fbdef3.br.png
new file mode 100644
index 00000000..2c3440cd
Binary files /dev/null and b/translated_images/IMG_5337.91c82be4d37029b03cbb07553d92b9d2dd672e22a07fee6453cbc40568fbdef3.br.png differ
diff --git a/translated_images/IMG_5337.91c82be4d37029b03cbb07553d92b9d2dd672e22a07fee6453cbc40568fbdef3.tr.png b/translated_images/IMG_5337.91c82be4d37029b03cbb07553d92b9d2dd672e22a07fee6453cbc40568fbdef3.tr.png
new file mode 100644
index 00000000..2c3440cd
Binary files /dev/null and b/translated_images/IMG_5337.91c82be4d37029b03cbb07553d92b9d2dd672e22a07fee6453cbc40568fbdef3.tr.png differ
diff --git a/translated_images/IMG_5338.9ab356541448923b528f2dedecd72d7ecd07d53cc69118aeb861c39dccb8b8cc.br.png b/translated_images/IMG_5338.9ab356541448923b528f2dedecd72d7ecd07d53cc69118aeb861c39dccb8b8cc.br.png
new file mode 100644
index 00000000..5294a9dc
Binary files /dev/null and b/translated_images/IMG_5338.9ab356541448923b528f2dedecd72d7ecd07d53cc69118aeb861c39dccb8b8cc.br.png differ
diff --git a/translated_images/IMG_5338.9ab356541448923b528f2dedecd72d7ecd07d53cc69118aeb861c39dccb8b8cc.tr.png b/translated_images/IMG_5338.9ab356541448923b528f2dedecd72d7ecd07d53cc69118aeb861c39dccb8b8cc.tr.png
new file mode 100644
index 00000000..5294a9dc
Binary files /dev/null and b/translated_images/IMG_5338.9ab356541448923b528f2dedecd72d7ecd07d53cc69118aeb861c39dccb8b8cc.tr.png differ
diff --git a/translated_images/IMG_5340.8440651b3ce1dd35d9962036330b32a600fb3f59078a581a05c93920c5012b3a.br.png b/translated_images/IMG_5340.8440651b3ce1dd35d9962036330b32a600fb3f59078a581a05c93920c5012b3a.br.png
new file mode 100644
index 00000000..912ac4ca
Binary files /dev/null and b/translated_images/IMG_5340.8440651b3ce1dd35d9962036330b32a600fb3f59078a581a05c93920c5012b3a.br.png differ
diff --git a/translated_images/IMG_5340.8440651b3ce1dd35d9962036330b32a600fb3f59078a581a05c93920c5012b3a.tr.png b/translated_images/IMG_5340.8440651b3ce1dd35d9962036330b32a600fb3f59078a581a05c93920c5012b3a.tr.png
new file mode 100644
index 00000000..912ac4ca
Binary files /dev/null and b/translated_images/IMG_5340.8440651b3ce1dd35d9962036330b32a600fb3f59078a581a05c93920c5012b3a.tr.png differ
diff --git a/translated_images/IMG_5341.a1aa041c42dbc534c033447b06f0546fdd779b3ed5034992ded08a45a960fff5.br.png b/translated_images/IMG_5341.a1aa041c42dbc534c033447b06f0546fdd779b3ed5034992ded08a45a960fff5.br.png
new file mode 100644
index 00000000..8e47de7d
Binary files /dev/null and b/translated_images/IMG_5341.a1aa041c42dbc534c033447b06f0546fdd779b3ed5034992ded08a45a960fff5.br.png differ
diff --git a/translated_images/IMG_5341.a1aa041c42dbc534c033447b06f0546fdd779b3ed5034992ded08a45a960fff5.tr.png b/translated_images/IMG_5341.a1aa041c42dbc534c033447b06f0546fdd779b3ed5034992ded08a45a960fff5.tr.png
new file mode 100644
index 00000000..8e47de7d
Binary files /dev/null and b/translated_images/IMG_5341.a1aa041c42dbc534c033447b06f0546fdd779b3ed5034992ded08a45a960fff5.tr.png differ
diff --git a/translated_images/IMG_5342.9f3b93d9fab90d3b3c1936edb55768b57024c9ebe88a214be315f5ebb083e45d.br.png b/translated_images/IMG_5342.9f3b93d9fab90d3b3c1936edb55768b57024c9ebe88a214be315f5ebb083e45d.br.png
new file mode 100644
index 00000000..b3c98d83
Binary files /dev/null and b/translated_images/IMG_5342.9f3b93d9fab90d3b3c1936edb55768b57024c9ebe88a214be315f5ebb083e45d.br.png differ
diff --git a/translated_images/IMG_5342.9f3b93d9fab90d3b3c1936edb55768b57024c9ebe88a214be315f5ebb083e45d.tr.png b/translated_images/IMG_5342.9f3b93d9fab90d3b3c1936edb55768b57024c9ebe88a214be315f5ebb083e45d.tr.png
new file mode 100644
index 00000000..b3c98d83
Binary files /dev/null and b/translated_images/IMG_5342.9f3b93d9fab90d3b3c1936edb55768b57024c9ebe88a214be315f5ebb083e45d.tr.png differ
diff --git a/translated_images/IMG_5343.fa30105d3c10cad2079ca2b2f023e9dab8f82824a235be61837d7e9d09d8d067.br.png b/translated_images/IMG_5343.fa30105d3c10cad2079ca2b2f023e9dab8f82824a235be61837d7e9d09d8d067.br.png
new file mode 100644
index 00000000..1d494613
Binary files /dev/null and b/translated_images/IMG_5343.fa30105d3c10cad2079ca2b2f023e9dab8f82824a235be61837d7e9d09d8d067.br.png differ
diff --git a/translated_images/IMG_5343.fa30105d3c10cad2079ca2b2f023e9dab8f82824a235be61837d7e9d09d8d067.tr.png b/translated_images/IMG_5343.fa30105d3c10cad2079ca2b2f023e9dab8f82824a235be61837d7e9d09d8d067.tr.png
new file mode 100644
index 00000000..1d494613
Binary files /dev/null and b/translated_images/IMG_5343.fa30105d3c10cad2079ca2b2f023e9dab8f82824a235be61837d7e9d09d8d067.tr.png differ
diff --git a/translated_images/IMG_5344.acfcd61ee5281321426b2d93efeeb01a60505e73b4c5ee6224c7fa375027b9d8.br.png b/translated_images/IMG_5344.acfcd61ee5281321426b2d93efeeb01a60505e73b4c5ee6224c7fa375027b9d8.br.png
new file mode 100644
index 00000000..47ced39a
Binary files /dev/null and b/translated_images/IMG_5344.acfcd61ee5281321426b2d93efeeb01a60505e73b4c5ee6224c7fa375027b9d8.br.png differ
diff --git a/translated_images/IMG_5344.acfcd61ee5281321426b2d93efeeb01a60505e73b4c5ee6224c7fa375027b9d8.tr.png b/translated_images/IMG_5344.acfcd61ee5281321426b2d93efeeb01a60505e73b4c5ee6224c7fa375027b9d8.tr.png
new file mode 100644
index 00000000..47ced39a
Binary files /dev/null and b/translated_images/IMG_5344.acfcd61ee5281321426b2d93efeeb01a60505e73b4c5ee6224c7fa375027b9d8.tr.png differ
diff --git a/translated_images/IMG_5345.3d305ee2bb4ee8040102a8d1922cdf0450f619c6824add16014a4c0887c18b1d.br.png b/translated_images/IMG_5345.3d305ee2bb4ee8040102a8d1922cdf0450f619c6824add16014a4c0887c18b1d.br.png
new file mode 100644
index 00000000..88d5c896
Binary files /dev/null and b/translated_images/IMG_5345.3d305ee2bb4ee8040102a8d1922cdf0450f619c6824add16014a4c0887c18b1d.br.png differ
diff --git a/translated_images/IMG_5345.3d305ee2bb4ee8040102a8d1922cdf0450f619c6824add16014a4c0887c18b1d.tr.png b/translated_images/IMG_5345.3d305ee2bb4ee8040102a8d1922cdf0450f619c6824add16014a4c0887c18b1d.tr.png
new file mode 100644
index 00000000..88d5c896
Binary files /dev/null and b/translated_images/IMG_5345.3d305ee2bb4ee8040102a8d1922cdf0450f619c6824add16014a4c0887c18b1d.tr.png differ
diff --git a/translated_images/IMG_5346.281dcc267f69c70b2bc2353b5e8289617c7bf3608f889dae8a582b9376a9ae7d.br.png b/translated_images/IMG_5346.281dcc267f69c70b2bc2353b5e8289617c7bf3608f889dae8a582b9376a9ae7d.br.png
new file mode 100644
index 00000000..e0706533
Binary files /dev/null and b/translated_images/IMG_5346.281dcc267f69c70b2bc2353b5e8289617c7bf3608f889dae8a582b9376a9ae7d.br.png differ
diff --git a/translated_images/IMG_5346.281dcc267f69c70b2bc2353b5e8289617c7bf3608f889dae8a582b9376a9ae7d.tr.png b/translated_images/IMG_5346.281dcc267f69c70b2bc2353b5e8289617c7bf3608f889dae8a582b9376a9ae7d.tr.png
new file mode 100644
index 00000000..e0706533
Binary files /dev/null and b/translated_images/IMG_5346.281dcc267f69c70b2bc2353b5e8289617c7bf3608f889dae8a582b9376a9ae7d.tr.png differ
diff --git a/translated_images/IMG_5347.48a4a981e76910ae1c65bf75102883039be5f0ded32b73f3d09d855f5b7dc977.br.png b/translated_images/IMG_5347.48a4a981e76910ae1c65bf75102883039be5f0ded32b73f3d09d855f5b7dc977.br.png
new file mode 100644
index 00000000..a1f17249
Binary files /dev/null and b/translated_images/IMG_5347.48a4a981e76910ae1c65bf75102883039be5f0ded32b73f3d09d855f5b7dc977.br.png differ
diff --git a/translated_images/IMG_5347.48a4a981e76910ae1c65bf75102883039be5f0ded32b73f3d09d855f5b7dc977.tr.png b/translated_images/IMG_5347.48a4a981e76910ae1c65bf75102883039be5f0ded32b73f3d09d855f5b7dc977.tr.png
new file mode 100644
index 00000000..a1f17249
Binary files /dev/null and b/translated_images/IMG_5347.48a4a981e76910ae1c65bf75102883039be5f0ded32b73f3d09d855f5b7dc977.tr.png differ
diff --git a/translated_images/IMG_5348.3961d3b444537c131299f8906dc4e2f7c3c172591ffeacb45719ec3d3718b625.br.png b/translated_images/IMG_5348.3961d3b444537c131299f8906dc4e2f7c3c172591ffeacb45719ec3d3718b625.br.png
new file mode 100644
index 00000000..3adc61ef
Binary files /dev/null and b/translated_images/IMG_5348.3961d3b444537c131299f8906dc4e2f7c3c172591ffeacb45719ec3d3718b625.br.png differ
diff --git a/translated_images/IMG_5348.3961d3b444537c131299f8906dc4e2f7c3c172591ffeacb45719ec3d3718b625.tr.png b/translated_images/IMG_5348.3961d3b444537c131299f8906dc4e2f7c3c172591ffeacb45719ec3d3718b625.tr.png
new file mode 100644
index 00000000..3adc61ef
Binary files /dev/null and b/translated_images/IMG_5348.3961d3b444537c131299f8906dc4e2f7c3c172591ffeacb45719ec3d3718b625.tr.png differ
diff --git a/translated_images/IMG_5349.1f0ec7fbf8807b3bf991dd5400cfb69ded9fe53059bd1e71934f4dbd7ff963db.br.png b/translated_images/IMG_5349.1f0ec7fbf8807b3bf991dd5400cfb69ded9fe53059bd1e71934f4dbd7ff963db.br.png
new file mode 100644
index 00000000..1c3c8d53
Binary files /dev/null and b/translated_images/IMG_5349.1f0ec7fbf8807b3bf991dd5400cfb69ded9fe53059bd1e71934f4dbd7ff963db.br.png differ
diff --git a/translated_images/IMG_5349.1f0ec7fbf8807b3bf991dd5400cfb69ded9fe53059bd1e71934f4dbd7ff963db.tr.png b/translated_images/IMG_5349.1f0ec7fbf8807b3bf991dd5400cfb69ded9fe53059bd1e71934f4dbd7ff963db.tr.png
new file mode 100644
index 00000000..1c3c8d53
Binary files /dev/null and b/translated_images/IMG_5349.1f0ec7fbf8807b3bf991dd5400cfb69ded9fe53059bd1e71934f4dbd7ff963db.tr.png differ
diff --git a/translated_images/Roadmap.bb1dec285dda0eda691788b95ddfc96d31d76bb7649e3f04a135e4ad395f323e.br.jpg b/translated_images/Roadmap.bb1dec285dda0eda691788b95ddfc96d31d76bb7649e3f04a135e4ad395f323e.br.jpg
new file mode 100644
index 00000000..0f4a9a38
Binary files /dev/null and b/translated_images/Roadmap.bb1dec285dda0eda691788b95ddfc96d31d76bb7649e3f04a135e4ad395f323e.br.jpg differ
diff --git a/translated_images/Roadmap.bb1dec285dda0eda691788b95ddfc96d31d76bb7649e3f04a135e4ad395f323e.tr.jpg b/translated_images/Roadmap.bb1dec285dda0eda691788b95ddfc96d31d76bb7649e3f04a135e4ad395f323e.tr.jpg
new file mode 100644
index 00000000..0f4a9a38
Binary files /dev/null and b/translated_images/Roadmap.bb1dec285dda0eda691788b95ddfc96d31d76bb7649e3f04a135e4ad395f323e.tr.jpg differ
diff --git a/translated_images/amqp.804bd4fce83301578f19af1b877f8ce87a6473a3616fb6c3f901fe4041ab6c96.br.png b/translated_images/amqp.804bd4fce83301578f19af1b877f8ce87a6473a3616fb6c3f901fe4041ab6c96.br.png
new file mode 100644
index 00000000..32dab60c
Binary files /dev/null and b/translated_images/amqp.804bd4fce83301578f19af1b877f8ce87a6473a3616fb6c3f901fe4041ab6c96.br.png differ
diff --git a/translated_images/amqp.804bd4fce83301578f19af1b877f8ce87a6473a3616fb6c3f901fe4041ab6c96.tr.png b/translated_images/amqp.804bd4fce83301578f19af1b877f8ce87a6473a3616fb6c3f901fe4041ab6c96.tr.png
new file mode 100644
index 00000000..32dab60c
Binary files /dev/null and b/translated_images/amqp.804bd4fce83301578f19af1b877f8ce87a6473a3616fb6c3f901fe4041ab6c96.tr.png differ
diff --git a/translated_images/analog-sensor-voltage.3b6f3153922473997cae6f71a6110d89a020a8a1838a83fba4f97e8fa6cef3ac.br.png b/translated_images/analog-sensor-voltage.3b6f3153922473997cae6f71a6110d89a020a8a1838a83fba4f97e8fa6cef3ac.br.png
new file mode 100644
index 00000000..78e9b675
Binary files /dev/null and b/translated_images/analog-sensor-voltage.3b6f3153922473997cae6f71a6110d89a020a8a1838a83fba4f97e8fa6cef3ac.br.png differ
diff --git a/translated_images/analog-sensor-voltage.3b6f3153922473997cae6f71a6110d89a020a8a1838a83fba4f97e8fa6cef3ac.tr.png b/translated_images/analog-sensor-voltage.3b6f3153922473997cae6f71a6110d89a020a8a1838a83fba4f97e8fa6cef3ac.tr.png
new file mode 100644
index 00000000..78e9b675
Binary files /dev/null and b/translated_images/analog-sensor-voltage.3b6f3153922473997cae6f71a6110d89a020a8a1838a83fba4f97e8fa6cef3ac.tr.png differ
diff --git a/translated_images/arducam-wio-terminal-connections.a4d5a4049bdb5ab800a2877389fc6ecf5e4ff307e6451ff56c517e6786467d0a.br.png b/translated_images/arducam-wio-terminal-connections.a4d5a4049bdb5ab800a2877389fc6ecf5e4ff307e6451ff56c517e6786467d0a.br.png
new file mode 100644
index 00000000..fb87dd71
Binary files /dev/null and b/translated_images/arducam-wio-terminal-connections.a4d5a4049bdb5ab800a2877389fc6ecf5e4ff307e6451ff56c517e6786467d0a.br.png differ
diff --git a/translated_images/arducam-wio-terminal-connections.a4d5a4049bdb5ab800a2877389fc6ecf5e4ff307e6451ff56c517e6786467d0a.tr.png b/translated_images/arducam-wio-terminal-connections.a4d5a4049bdb5ab800a2877389fc6ecf5e4ff307e6451ff56c517e6786467d0a.tr.png
new file mode 100644
index 00000000..fb87dd71
Binary files /dev/null and b/translated_images/arducam-wio-terminal-connections.a4d5a4049bdb5ab800a2877389fc6ecf5e4ff307e6451ff56c517e6786467d0a.tr.png differ
diff --git a/translated_images/arducam.20e4e4cbb268296570b5914e20d6c349fc42ddac9ed4e1b9deba2188204eebae.br.png b/translated_images/arducam.20e4e4cbb268296570b5914e20d6c349fc42ddac9ed4e1b9deba2188204eebae.br.png
new file mode 100644
index 00000000..acaa9a02
Binary files /dev/null and b/translated_images/arducam.20e4e4cbb268296570b5914e20d6c349fc42ddac9ed4e1b9deba2188204eebae.br.png differ
diff --git a/translated_images/arducam.20e4e4cbb268296570b5914e20d6c349fc42ddac9ed4e1b9deba2188204eebae.tr.png b/translated_images/arducam.20e4e4cbb268296570b5914e20d6c349fc42ddac9ed4e1b9deba2188204eebae.tr.png
new file mode 100644
index 00000000..acaa9a02
Binary files /dev/null and b/translated_images/arducam.20e4e4cbb268296570b5914e20d6c349fc42ddac9ed4e1b9deba2188204eebae.tr.png differ
diff --git a/translated_images/arduino-sketch.79590cb837ff7a7c6a68d1afda6cab83fd53d3bb1bd9a8bf2eaf8d693a4d3ea6.br.png b/translated_images/arduino-sketch.79590cb837ff7a7c6a68d1afda6cab83fd53d3bb1bd9a8bf2eaf8d693a4d3ea6.br.png
new file mode 100644
index 00000000..b6afaa8a
Binary files /dev/null and b/translated_images/arduino-sketch.79590cb837ff7a7c6a68d1afda6cab83fd53d3bb1bd9a8bf2eaf8d693a4d3ea6.br.png differ
diff --git a/translated_images/arduino-sketch.79590cb837ff7a7c6a68d1afda6cab83fd53d3bb1bd9a8bf2eaf8d693a4d3ea6.tr.png b/translated_images/arduino-sketch.79590cb837ff7a7c6a68d1afda6cab83fd53d3bb1bd9a8bf2eaf8d693a4d3ea6.tr.png
new file mode 100644
index 00000000..b6afaa8a
Binary files /dev/null and b/translated_images/arduino-sketch.79590cb837ff7a7c6a68d1afda6cab83fd53d3bb1bd9a8bf2eaf8d693a4d3ea6.tr.png differ
diff --git a/translated_images/assignment-1-flow.7552a51acb1a5ec858dca6e855cdbb44206434006df8ba3799a25afcdab1665d.br.png b/translated_images/assignment-1-flow.7552a51acb1a5ec858dca6e855cdbb44206434006df8ba3799a25afcdab1665d.br.png
new file mode 100644
index 00000000..18f92ede
Binary files /dev/null and b/translated_images/assignment-1-flow.7552a51acb1a5ec858dca6e855cdbb44206434006df8ba3799a25afcdab1665d.br.png differ
diff --git a/translated_images/assignment-1-flow.7552a51acb1a5ec858dca6e855cdbb44206434006df8ba3799a25afcdab1665d.tr.png b/translated_images/assignment-1-flow.7552a51acb1a5ec858dca6e855cdbb44206434006df8ba3799a25afcdab1665d.tr.png
new file mode 100644
index 00000000..18f92ede
Binary files /dev/null and b/translated_images/assignment-1-flow.7552a51acb1a5ec858dca6e855cdbb44206434006df8ba3799a25afcdab1665d.tr.png differ
diff --git a/translated_images/assignment-1-internet-flow.3256feab5f052fd273bf4e331157c574c2c3fa42e479836fc9c3586f41db35a5.br.png b/translated_images/assignment-1-internet-flow.3256feab5f052fd273bf4e331157c574c2c3fa42e479836fc9c3586f41db35a5.br.png
new file mode 100644
index 00000000..e1eb6df0
Binary files /dev/null and b/translated_images/assignment-1-internet-flow.3256feab5f052fd273bf4e331157c574c2c3fa42e479836fc9c3586f41db35a5.br.png differ
diff --git a/translated_images/assignment-1-internet-flow.3256feab5f052fd273bf4e331157c574c2c3fa42e479836fc9c3586f41db35a5.tr.png b/translated_images/assignment-1-internet-flow.3256feab5f052fd273bf4e331157c574c2c3fa42e479836fc9c3586f41db35a5.tr.png
new file mode 100644
index 00000000..e1eb6df0
Binary files /dev/null and b/translated_images/assignment-1-internet-flow.3256feab5f052fd273bf4e331157c574c2c3fa42e479836fc9c3586f41db35a5.tr.png differ
diff --git a/translated_images/azure-container-registry-logo.09494206991d4b295025ebff7d4e2900325e527a59184ffbc8464b6ab59654be.br.png b/translated_images/azure-container-registry-logo.09494206991d4b295025ebff7d4e2900325e527a59184ffbc8464b6ab59654be.br.png
new file mode 100644
index 00000000..dfcfde45
Binary files /dev/null and b/translated_images/azure-container-registry-logo.09494206991d4b295025ebff7d4e2900325e527a59184ffbc8464b6ab59654be.br.png differ
diff --git a/translated_images/azure-container-registry-logo.09494206991d4b295025ebff7d4e2900325e527a59184ffbc8464b6ab59654be.tr.png b/translated_images/azure-container-registry-logo.09494206991d4b295025ebff7d4e2900325e527a59184ffbc8464b6ab59654be.tr.png
new file mode 100644
index 00000000..dfcfde45
Binary files /dev/null and b/translated_images/azure-container-registry-logo.09494206991d4b295025ebff7d4e2900325e527a59184ffbc8464b6ab59654be.tr.png differ
diff --git a/translated_images/azure-functions-logo.1cfc8e3204c9c44aaf80fcf406fc8544d80d7f00f8d3e8ed6fed764563e17564.br.png b/translated_images/azure-functions-logo.1cfc8e3204c9c44aaf80fcf406fc8544d80d7f00f8d3e8ed6fed764563e17564.br.png
new file mode 100644
index 00000000..44af1896
Binary files /dev/null and b/translated_images/azure-functions-logo.1cfc8e3204c9c44aaf80fcf406fc8544d80d7f00f8d3e8ed6fed764563e17564.br.png differ
diff --git a/translated_images/azure-functions-logo.1cfc8e3204c9c44aaf80fcf406fc8544d80d7f00f8d3e8ed6fed764563e17564.tr.png b/translated_images/azure-functions-logo.1cfc8e3204c9c44aaf80fcf406fc8544d80d7f00f8d3e8ed6fed764563e17564.tr.png
new file mode 100644
index 00000000..44af1896
Binary files /dev/null and b/translated_images/azure-functions-logo.1cfc8e3204c9c44aaf80fcf406fc8544d80d7f00f8d3e8ed6fed764563e17564.tr.png differ
diff --git a/translated_images/azure-iot-edge-logo.c1c076749b5cba2e8755262fadc2f19ca1146b948d76990b1229199ac2292d79.br.png b/translated_images/azure-iot-edge-logo.c1c076749b5cba2e8755262fadc2f19ca1146b948d76990b1229199ac2292d79.br.png
new file mode 100644
index 00000000..6d749e6c
Binary files /dev/null and b/translated_images/azure-iot-edge-logo.c1c076749b5cba2e8755262fadc2f19ca1146b948d76990b1229199ac2292d79.br.png differ
diff --git a/translated_images/azure-iot-edge-logo.c1c076749b5cba2e8755262fadc2f19ca1146b948d76990b1229199ac2292d79.tr.png b/translated_images/azure-iot-edge-logo.c1c076749b5cba2e8755262fadc2f19ca1146b948d76990b1229199ac2292d79.tr.png
new file mode 100644
index 00000000..6d749e6c
Binary files /dev/null and b/translated_images/azure-iot-edge-logo.c1c076749b5cba2e8755262fadc2f19ca1146b948d76990b1229199ac2292d79.tr.png differ
diff --git a/translated_images/azure-iot-hub-logo.28a19de76d0a1932464d858f7558712bcdace3e5ec69c434d482ed7ce41c3a26.br.png b/translated_images/azure-iot-hub-logo.28a19de76d0a1932464d858f7558712bcdace3e5ec69c434d482ed7ce41c3a26.br.png
new file mode 100644
index 00000000..7485e36c
Binary files /dev/null and b/translated_images/azure-iot-hub-logo.28a19de76d0a1932464d858f7558712bcdace3e5ec69c434d482ed7ce41c3a26.br.png differ
diff --git a/translated_images/azure-iot-hub-logo.28a19de76d0a1932464d858f7558712bcdace3e5ec69c434d482ed7ce41c3a26.tr.png b/translated_images/azure-iot-hub-logo.28a19de76d0a1932464d858f7558712bcdace3e5ec69c434d482ed7ce41c3a26.tr.png
new file mode 100644
index 00000000..7485e36c
Binary files /dev/null and b/translated_images/azure-iot-hub-logo.28a19de76d0a1932464d858f7558712bcdace3e5ec69c434d482ed7ce41c3a26.tr.png differ
diff --git a/translated_images/azure-maps-logo.35d01dcfbd81fe6140e94257aaa1538f785a58c91576d14e0ebe7a2f6c694b99.br.png b/translated_images/azure-maps-logo.35d01dcfbd81fe6140e94257aaa1538f785a58c91576d14e0ebe7a2f6c694b99.br.png
new file mode 100644
index 00000000..0f499097
Binary files /dev/null and b/translated_images/azure-maps-logo.35d01dcfbd81fe6140e94257aaa1538f785a58c91576d14e0ebe7a2f6c694b99.br.png differ
diff --git a/translated_images/azure-maps-logo.35d01dcfbd81fe6140e94257aaa1538f785a58c91576d14e0ebe7a2f6c694b99.tr.png b/translated_images/azure-maps-logo.35d01dcfbd81fe6140e94257aaa1538f785a58c91576d14e0ebe7a2f6c694b99.tr.png
new file mode 100644
index 00000000..0f499097
Binary files /dev/null and b/translated_images/azure-maps-logo.35d01dcfbd81fe6140e94257aaa1538f785a58c91576d14e0ebe7a2f6c694b99.tr.png differ
diff --git a/translated_images/azure-region-existing.73f704604f2aa6cb9b5a49ed40e93d4fd81ae3f4e6af4a8ca504023902832f56.br.png b/translated_images/azure-region-existing.73f704604f2aa6cb9b5a49ed40e93d4fd81ae3f4e6af4a8ca504023902832f56.br.png
new file mode 100644
index 00000000..710c440c
Binary files /dev/null and b/translated_images/azure-region-existing.73f704604f2aa6cb9b5a49ed40e93d4fd81ae3f4e6af4a8ca504023902832f56.br.png differ
diff --git a/translated_images/azure-region-existing.73f704604f2aa6cb9b5a49ed40e93d4fd81ae3f4e6af4a8ca504023902832f56.tr.png b/translated_images/azure-region-existing.73f704604f2aa6cb9b5a49ed40e93d4fd81ae3f4e6af4a8ca504023902832f56.tr.png
new file mode 100644
index 00000000..710c440c
Binary files /dev/null and b/translated_images/azure-region-existing.73f704604f2aa6cb9b5a49ed40e93d4fd81ae3f4e6af4a8ca504023902832f56.tr.png differ
diff --git a/translated_images/azure-region-planned-expansion.a5074a1e8af74f156a73552d502429e5b126ea5019274d767ecb4b9afdad442b.br.png b/translated_images/azure-region-planned-expansion.a5074a1e8af74f156a73552d502429e5b126ea5019274d767ecb4b9afdad442b.br.png
new file mode 100644
index 00000000..24cecced
Binary files /dev/null and b/translated_images/azure-region-planned-expansion.a5074a1e8af74f156a73552d502429e5b126ea5019274d767ecb4b9afdad442b.br.png differ
diff --git a/translated_images/azure-region-planned-expansion.a5074a1e8af74f156a73552d502429e5b126ea5019274d767ecb4b9afdad442b.tr.png b/translated_images/azure-region-planned-expansion.a5074a1e8af74f156a73552d502429e5b126ea5019274d767ecb4b9afdad442b.tr.png
new file mode 100644
index 00000000..24cecced
Binary files /dev/null and b/translated_images/azure-region-planned-expansion.a5074a1e8af74f156a73552d502429e5b126ea5019274d767ecb4b9afdad442b.tr.png differ
diff --git a/translated_images/azure-speech-logo.a1f08c4befb0159f2cb5d692d3baf5b599e7b44759d316da907bda1508f46a4a.br.png b/translated_images/azure-speech-logo.a1f08c4befb0159f2cb5d692d3baf5b599e7b44759d316da907bda1508f46a4a.br.png
new file mode 100644
index 00000000..b36025d9
Binary files /dev/null and b/translated_images/azure-speech-logo.a1f08c4befb0159f2cb5d692d3baf5b599e7b44759d316da907bda1508f46a4a.br.png differ
diff --git a/translated_images/azure-speech-logo.a1f08c4befb0159f2cb5d692d3baf5b599e7b44759d316da907bda1508f46a4a.tr.png b/translated_images/azure-speech-logo.a1f08c4befb0159f2cb5d692d3baf5b599e7b44759d316da907bda1508f46a4a.tr.png
new file mode 100644
index 00000000..b36025d9
Binary files /dev/null and b/translated_images/azure-speech-logo.a1f08c4befb0159f2cb5d692d3baf5b599e7b44759d316da907bda1508f46a4a.tr.png differ
diff --git a/translated_images/azure-storage-logo.605c0f602c640d482a80f1b35a2629a32d595711b7ab1d7ceea843250615ff32.br.png b/translated_images/azure-storage-logo.605c0f602c640d482a80f1b35a2629a32d595711b7ab1d7ceea843250615ff32.br.png
new file mode 100644
index 00000000..b21a4bed
Binary files /dev/null and b/translated_images/azure-storage-logo.605c0f602c640d482a80f1b35a2629a32d595711b7ab1d7ceea843250615ff32.br.png differ
diff --git a/translated_images/azure-storage-logo.605c0f602c640d482a80f1b35a2629a32d595711b7ab1d7ceea843250615ff32.tr.png b/translated_images/azure-storage-logo.605c0f602c640d482a80f1b35a2629a32d595711b7ab1d7ceea843250615ff32.tr.png
new file mode 100644
index 00000000..b21a4bed
Binary files /dev/null and b/translated_images/azure-storage-logo.605c0f602c640d482a80f1b35a2629a32d595711b7ab1d7ceea843250615ff32.tr.png differ
diff --git a/translated_images/azure-translator-logo.c6ed3a4a433edfd2f11577eca105412c50b8396b194cbbd730723dd1d0793bcd.br.png b/translated_images/azure-translator-logo.c6ed3a4a433edfd2f11577eca105412c50b8396b194cbbd730723dd1d0793bcd.br.png
new file mode 100644
index 00000000..8da6f9a4
Binary files /dev/null and b/translated_images/azure-translator-logo.c6ed3a4a433edfd2f11577eca105412c50b8396b194cbbd730723dd1d0793bcd.br.png differ
diff --git a/translated_images/azure-translator-logo.c6ed3a4a433edfd2f11577eca105412c50b8396b194cbbd730723dd1d0793bcd.tr.png b/translated_images/azure-translator-logo.c6ed3a4a433edfd2f11577eca105412c50b8396b194cbbd730723dd1d0793bcd.tr.png
new file mode 100644
index 00000000..8da6f9a4
Binary files /dev/null and b/translated_images/azure-translator-logo.c6ed3a4a433edfd2f11577eca105412c50b8396b194cbbd730723dd1d0793bcd.tr.png differ
diff --git a/translated_images/banana-arducam.be1b32d4267a8194b0fd042362e56faa431da9cd4af172051b37243ea9be0256.br.jpg b/translated_images/banana-arducam.be1b32d4267a8194b0fd042362e56faa431da9cd4af172051b37243ea9be0256.br.jpg
new file mode 100644
index 00000000..437f3d07
Binary files /dev/null and b/translated_images/banana-arducam.be1b32d4267a8194b0fd042362e56faa431da9cd4af172051b37243ea9be0256.br.jpg differ
diff --git a/translated_images/banana-arducam.be1b32d4267a8194b0fd042362e56faa431da9cd4af172051b37243ea9be0256.tr.jpg b/translated_images/banana-arducam.be1b32d4267a8194b0fd042362e56faa431da9cd4af172051b37243ea9be0256.tr.jpg
new file mode 100644
index 00000000..437f3d07
Binary files /dev/null and b/translated_images/banana-arducam.be1b32d4267a8194b0fd042362e56faa431da9cd4af172051b37243ea9be0256.tr.jpg differ
diff --git a/translated_images/banana-picture-compare.174df164dc326a42cf7fb051a7497e6113c620e91552d92ca914220305d47d9a.br.png b/translated_images/banana-picture-compare.174df164dc326a42cf7fb051a7497e6113c620e91552d92ca914220305d47d9a.br.png
new file mode 100644
index 00000000..cc61fb13
Binary files /dev/null and b/translated_images/banana-picture-compare.174df164dc326a42cf7fb051a7497e6113c620e91552d92ca914220305d47d9a.br.png differ
diff --git a/translated_images/banana-picture-compare.174df164dc326a42cf7fb051a7497e6113c620e91552d92ca914220305d47d9a.tr.png b/translated_images/banana-picture-compare.174df164dc326a42cf7fb051a7497e6113c620e91552d92ca914220305d47d9a.tr.png
new file mode 100644
index 00000000..cc61fb13
Binary files /dev/null and b/translated_images/banana-picture-compare.174df164dc326a42cf7fb051a7497e6113c620e91552d92ca914220305d47d9a.tr.png differ
diff --git a/translated_images/banana-ripe-1.6ed72365ffc9230064fbaefdb698bde74529ad5b3c747a4a28421b534730fa5f.br.png b/translated_images/banana-ripe-1.6ed72365ffc9230064fbaefdb698bde74529ad5b3c747a4a28421b534730fa5f.br.png
new file mode 100644
index 00000000..3472b1d9
Binary files /dev/null and b/translated_images/banana-ripe-1.6ed72365ffc9230064fbaefdb698bde74529ad5b3c747a4a28421b534730fa5f.br.png differ
diff --git a/translated_images/banana-ripe-1.6ed72365ffc9230064fbaefdb698bde74529ad5b3c747a4a28421b534730fa5f.tr.png b/translated_images/banana-ripe-1.6ed72365ffc9230064fbaefdb698bde74529ad5b3c747a4a28421b534730fa5f.tr.png
new file mode 100644
index 00000000..3472b1d9
Binary files /dev/null and b/translated_images/banana-ripe-1.6ed72365ffc9230064fbaefdb698bde74529ad5b3c747a4a28421b534730fa5f.tr.png differ
diff --git a/translated_images/banana-ripe-1.780e9be3a60d8879826126ee1e84e135ffa20ec91697bb759daf7ba0b76c811b.br.png b/translated_images/banana-ripe-1.780e9be3a60d8879826126ee1e84e135ffa20ec91697bb759daf7ba0b76c811b.br.png
new file mode 100644
index 00000000..0bbca602
Binary files /dev/null and b/translated_images/banana-ripe-1.780e9be3a60d8879826126ee1e84e135ffa20ec91697bb759daf7ba0b76c811b.br.png differ
diff --git a/translated_images/banana-ripe-1.780e9be3a60d8879826126ee1e84e135ffa20ec91697bb759daf7ba0b76c811b.tr.png b/translated_images/banana-ripe-1.780e9be3a60d8879826126ee1e84e135ffa20ec91697bb759daf7ba0b76c811b.tr.png
new file mode 100644
index 00000000..0bbca602
Binary files /dev/null and b/translated_images/banana-ripe-1.780e9be3a60d8879826126ee1e84e135ffa20ec91697bb759daf7ba0b76c811b.tr.png differ
diff --git a/translated_images/banana-ripe-10.c3d98eb280e7464ffa36da1fa18413db4fd032da973b098bb4978d6d99c1a3af.br.png b/translated_images/banana-ripe-10.c3d98eb280e7464ffa36da1fa18413db4fd032da973b098bb4978d6d99c1a3af.br.png
new file mode 100644
index 00000000..b5775adc
Binary files /dev/null and b/translated_images/banana-ripe-10.c3d98eb280e7464ffa36da1fa18413db4fd032da973b098bb4978d6d99c1a3af.br.png differ
diff --git a/translated_images/banana-ripe-10.c3d98eb280e7464ffa36da1fa18413db4fd032da973b098bb4978d6d99c1a3af.tr.png b/translated_images/banana-ripe-10.c3d98eb280e7464ffa36da1fa18413db4fd032da973b098bb4978d6d99c1a3af.tr.png
new file mode 100644
index 00000000..b5775adc
Binary files /dev/null and b/translated_images/banana-ripe-10.c3d98eb280e7464ffa36da1fa18413db4fd032da973b098bb4978d6d99c1a3af.tr.png differ
diff --git a/translated_images/banana-ripe-11.3d932f292b95b9a202082ce75f5b52ecaf43718721661810b53f7a5a2c4b4133.br.png b/translated_images/banana-ripe-11.3d932f292b95b9a202082ce75f5b52ecaf43718721661810b53f7a5a2c4b4133.br.png
new file mode 100644
index 00000000..bc58477a
Binary files /dev/null and b/translated_images/banana-ripe-11.3d932f292b95b9a202082ce75f5b52ecaf43718721661810b53f7a5a2c4b4133.br.png differ
diff --git a/translated_images/banana-ripe-11.3d932f292b95b9a202082ce75f5b52ecaf43718721661810b53f7a5a2c4b4133.tr.png b/translated_images/banana-ripe-11.3d932f292b95b9a202082ce75f5b52ecaf43718721661810b53f7a5a2c4b4133.tr.png
new file mode 100644
index 00000000..bc58477a
Binary files /dev/null and b/translated_images/banana-ripe-11.3d932f292b95b9a202082ce75f5b52ecaf43718721661810b53f7a5a2c4b4133.tr.png differ
diff --git a/translated_images/banana-ripe-12.9f87e663b9da6c8525f3ce63c5c0a1c095e42675e2a6af9b0fddb14ebb1e0b4b.br.png b/translated_images/banana-ripe-12.9f87e663b9da6c8525f3ce63c5c0a1c095e42675e2a6af9b0fddb14ebb1e0b4b.br.png
new file mode 100644
index 00000000..1b7a40f4
Binary files /dev/null and b/translated_images/banana-ripe-12.9f87e663b9da6c8525f3ce63c5c0a1c095e42675e2a6af9b0fddb14ebb1e0b4b.br.png differ
diff --git a/translated_images/banana-ripe-12.9f87e663b9da6c8525f3ce63c5c0a1c095e42675e2a6af9b0fddb14ebb1e0b4b.tr.png b/translated_images/banana-ripe-12.9f87e663b9da6c8525f3ce63c5c0a1c095e42675e2a6af9b0fddb14ebb1e0b4b.tr.png
new file mode 100644
index 00000000..1b7a40f4
Binary files /dev/null and b/translated_images/banana-ripe-12.9f87e663b9da6c8525f3ce63c5c0a1c095e42675e2a6af9b0fddb14ebb1e0b4b.tr.png differ
diff --git a/translated_images/banana-ripe-13.b7402e05160f454309533a578849d7e79f92dd70799428943d7211c2fbb82465.br.png b/translated_images/banana-ripe-13.b7402e05160f454309533a578849d7e79f92dd70799428943d7211c2fbb82465.br.png
new file mode 100644
index 00000000..011b07a3
Binary files /dev/null and b/translated_images/banana-ripe-13.b7402e05160f454309533a578849d7e79f92dd70799428943d7211c2fbb82465.br.png differ
diff --git a/translated_images/banana-ripe-13.b7402e05160f454309533a578849d7e79f92dd70799428943d7211c2fbb82465.tr.png b/translated_images/banana-ripe-13.b7402e05160f454309533a578849d7e79f92dd70799428943d7211c2fbb82465.tr.png
new file mode 100644
index 00000000..011b07a3
Binary files /dev/null and b/translated_images/banana-ripe-13.b7402e05160f454309533a578849d7e79f92dd70799428943d7211c2fbb82465.tr.png differ
diff --git a/translated_images/banana-ripe-14.85cf309aa702cfa870286a5f8838ee5875a655074a982bafe5b8d32d4d5819f2.br.png b/translated_images/banana-ripe-14.85cf309aa702cfa870286a5f8838ee5875a655074a982bafe5b8d32d4d5819f2.br.png
new file mode 100644
index 00000000..7f9d24ef
Binary files /dev/null and b/translated_images/banana-ripe-14.85cf309aa702cfa870286a5f8838ee5875a655074a982bafe5b8d32d4d5819f2.br.png differ
diff --git a/translated_images/banana-ripe-14.85cf309aa702cfa870286a5f8838ee5875a655074a982bafe5b8d32d4d5819f2.tr.png b/translated_images/banana-ripe-14.85cf309aa702cfa870286a5f8838ee5875a655074a982bafe5b8d32d4d5819f2.tr.png
new file mode 100644
index 00000000..7f9d24ef
Binary files /dev/null and b/translated_images/banana-ripe-14.85cf309aa702cfa870286a5f8838ee5875a655074a982bafe5b8d32d4d5819f2.tr.png differ
diff --git a/translated_images/banana-ripe-15.933412eb14a3f8e419c764c8157d1e5f25256972a8dcf450aa630b8c007c8c3d.br.png b/translated_images/banana-ripe-15.933412eb14a3f8e419c764c8157d1e5f25256972a8dcf450aa630b8c007c8c3d.br.png
new file mode 100644
index 00000000..0c6a7067
Binary files /dev/null and b/translated_images/banana-ripe-15.933412eb14a3f8e419c764c8157d1e5f25256972a8dcf450aa630b8c007c8c3d.br.png differ
diff --git a/translated_images/banana-ripe-15.933412eb14a3f8e419c764c8157d1e5f25256972a8dcf450aa630b8c007c8c3d.tr.png b/translated_images/banana-ripe-15.933412eb14a3f8e419c764c8157d1e5f25256972a8dcf450aa630b8c007c8c3d.tr.png
new file mode 100644
index 00000000..0c6a7067
Binary files /dev/null and b/translated_images/banana-ripe-15.933412eb14a3f8e419c764c8157d1e5f25256972a8dcf450aa630b8c007c8c3d.tr.png differ
diff --git a/translated_images/banana-ripe-16.781a68a01401f89e5e523c88e659a0f9697b7de378571c91e597edc0d0c2eb07.br.png b/translated_images/banana-ripe-16.781a68a01401f89e5e523c88e659a0f9697b7de378571c91e597edc0d0c2eb07.br.png
new file mode 100644
index 00000000..8f7968a5
Binary files /dev/null and b/translated_images/banana-ripe-16.781a68a01401f89e5e523c88e659a0f9697b7de378571c91e597edc0d0c2eb07.br.png differ
diff --git a/translated_images/banana-ripe-16.781a68a01401f89e5e523c88e659a0f9697b7de378571c91e597edc0d0c2eb07.tr.png b/translated_images/banana-ripe-16.781a68a01401f89e5e523c88e659a0f9697b7de378571c91e597edc0d0c2eb07.tr.png
new file mode 100644
index 00000000..8f7968a5
Binary files /dev/null and b/translated_images/banana-ripe-16.781a68a01401f89e5e523c88e659a0f9697b7de378571c91e597edc0d0c2eb07.tr.png differ
diff --git a/translated_images/banana-ripe-17.f8e2853a40d3ac450e290036792b75ac4b8da5883536478722fb336d5f66517e.br.png b/translated_images/banana-ripe-17.f8e2853a40d3ac450e290036792b75ac4b8da5883536478722fb336d5f66517e.br.png
new file mode 100644
index 00000000..20c6036f
Binary files /dev/null and b/translated_images/banana-ripe-17.f8e2853a40d3ac450e290036792b75ac4b8da5883536478722fb336d5f66517e.br.png differ
diff --git a/translated_images/banana-ripe-17.f8e2853a40d3ac450e290036792b75ac4b8da5883536478722fb336d5f66517e.tr.png b/translated_images/banana-ripe-17.f8e2853a40d3ac450e290036792b75ac4b8da5883536478722fb336d5f66517e.tr.png
new file mode 100644
index 00000000..20c6036f
Binary files /dev/null and b/translated_images/banana-ripe-17.f8e2853a40d3ac450e290036792b75ac4b8da5883536478722fb336d5f66517e.tr.png differ
diff --git a/translated_images/banana-ripe-18.3d05f5f78ecf6f0d74aecdafb8e415851a5333e5dbc016ac1870ab5e4c383b07.br.png b/translated_images/banana-ripe-18.3d05f5f78ecf6f0d74aecdafb8e415851a5333e5dbc016ac1870ab5e4c383b07.br.png
new file mode 100644
index 00000000..f077b6e9
Binary files /dev/null and b/translated_images/banana-ripe-18.3d05f5f78ecf6f0d74aecdafb8e415851a5333e5dbc016ac1870ab5e4c383b07.br.png differ
diff --git a/translated_images/banana-ripe-18.3d05f5f78ecf6f0d74aecdafb8e415851a5333e5dbc016ac1870ab5e4c383b07.tr.png b/translated_images/banana-ripe-18.3d05f5f78ecf6f0d74aecdafb8e415851a5333e5dbc016ac1870ab5e4c383b07.tr.png
new file mode 100644
index 00000000..f077b6e9
Binary files /dev/null and b/translated_images/banana-ripe-18.3d05f5f78ecf6f0d74aecdafb8e415851a5333e5dbc016ac1870ab5e4c383b07.tr.png differ
diff --git a/translated_images/banana-ripe-19.ac3b0fc6cf6fdfd5523227bc246c915b228bc3d4bc1c72f6612723ed889023b5.br.png b/translated_images/banana-ripe-19.ac3b0fc6cf6fdfd5523227bc246c915b228bc3d4bc1c72f6612723ed889023b5.br.png
new file mode 100644
index 00000000..484206d5
Binary files /dev/null and b/translated_images/banana-ripe-19.ac3b0fc6cf6fdfd5523227bc246c915b228bc3d4bc1c72f6612723ed889023b5.br.png differ
diff --git a/translated_images/banana-ripe-19.ac3b0fc6cf6fdfd5523227bc246c915b228bc3d4bc1c72f6612723ed889023b5.tr.png b/translated_images/banana-ripe-19.ac3b0fc6cf6fdfd5523227bc246c915b228bc3d4bc1c72f6612723ed889023b5.tr.png
new file mode 100644
index 00000000..484206d5
Binary files /dev/null and b/translated_images/banana-ripe-19.ac3b0fc6cf6fdfd5523227bc246c915b228bc3d4bc1c72f6612723ed889023b5.tr.png differ
diff --git a/translated_images/banana-ripe-2.8ab96da692df69f1c78bd3a93acfdb17bc292ac964a3f3bac9249ba1dd1681c3.br.png b/translated_images/banana-ripe-2.8ab96da692df69f1c78bd3a93acfdb17bc292ac964a3f3bac9249ba1dd1681c3.br.png
new file mode 100644
index 00000000..9fa156e2
Binary files /dev/null and b/translated_images/banana-ripe-2.8ab96da692df69f1c78bd3a93acfdb17bc292ac964a3f3bac9249ba1dd1681c3.br.png differ
diff --git a/translated_images/banana-ripe-2.8ab96da692df69f1c78bd3a93acfdb17bc292ac964a3f3bac9249ba1dd1681c3.tr.png b/translated_images/banana-ripe-2.8ab96da692df69f1c78bd3a93acfdb17bc292ac964a3f3bac9249ba1dd1681c3.tr.png
new file mode 100644
index 00000000..9fa156e2
Binary files /dev/null and b/translated_images/banana-ripe-2.8ab96da692df69f1c78bd3a93acfdb17bc292ac964a3f3bac9249ba1dd1681c3.tr.png differ
diff --git a/translated_images/banana-ripe-2.96ddc53114c5f020a328b264174eef43d2096620c6b10ff5189e99674c1dfa8c.br.png b/translated_images/banana-ripe-2.96ddc53114c5f020a328b264174eef43d2096620c6b10ff5189e99674c1dfa8c.br.png
new file mode 100644
index 00000000..b0813972
Binary files /dev/null and b/translated_images/banana-ripe-2.96ddc53114c5f020a328b264174eef43d2096620c6b10ff5189e99674c1dfa8c.br.png differ
diff --git a/translated_images/banana-ripe-2.96ddc53114c5f020a328b264174eef43d2096620c6b10ff5189e99674c1dfa8c.tr.png b/translated_images/banana-ripe-2.96ddc53114c5f020a328b264174eef43d2096620c6b10ff5189e99674c1dfa8c.tr.png
new file mode 100644
index 00000000..b0813972
Binary files /dev/null and b/translated_images/banana-ripe-2.96ddc53114c5f020a328b264174eef43d2096620c6b10ff5189e99674c1dfa8c.tr.png differ
diff --git a/translated_images/banana-ripe-20.a4d0ad33a7e6f037ac9276dc751ae62d56d3cc16e625837197ef49da426bc3c8.br.png b/translated_images/banana-ripe-20.a4d0ad33a7e6f037ac9276dc751ae62d56d3cc16e625837197ef49da426bc3c8.br.png
new file mode 100644
index 00000000..4f2da8dc
Binary files /dev/null and b/translated_images/banana-ripe-20.a4d0ad33a7e6f037ac9276dc751ae62d56d3cc16e625837197ef49da426bc3c8.br.png differ
diff --git a/translated_images/banana-ripe-20.a4d0ad33a7e6f037ac9276dc751ae62d56d3cc16e625837197ef49da426bc3c8.tr.png b/translated_images/banana-ripe-20.a4d0ad33a7e6f037ac9276dc751ae62d56d3cc16e625837197ef49da426bc3c8.tr.png
new file mode 100644
index 00000000..4f2da8dc
Binary files /dev/null and b/translated_images/banana-ripe-20.a4d0ad33a7e6f037ac9276dc751ae62d56d3cc16e625837197ef49da426bc3c8.tr.png differ
diff --git a/translated_images/banana-ripe-21.07e03d64f265d55dfe3b304df3e36f06140b87f80ae2cadd22a7736e2855eb8f.br.png b/translated_images/banana-ripe-21.07e03d64f265d55dfe3b304df3e36f06140b87f80ae2cadd22a7736e2855eb8f.br.png
new file mode 100644
index 00000000..8ae3904c
Binary files /dev/null and b/translated_images/banana-ripe-21.07e03d64f265d55dfe3b304df3e36f06140b87f80ae2cadd22a7736e2855eb8f.br.png differ
diff --git a/translated_images/banana-ripe-21.07e03d64f265d55dfe3b304df3e36f06140b87f80ae2cadd22a7736e2855eb8f.tr.png b/translated_images/banana-ripe-21.07e03d64f265d55dfe3b304df3e36f06140b87f80ae2cadd22a7736e2855eb8f.tr.png
new file mode 100644
index 00000000..8ae3904c
Binary files /dev/null and b/translated_images/banana-ripe-21.07e03d64f265d55dfe3b304df3e36f06140b87f80ae2cadd22a7736e2855eb8f.tr.png differ
diff --git a/translated_images/banana-ripe-22.a63c05aeb7f866fc64b6ac04e6fa68e1d1a22d729ad16d9fadf3357df97654a3.br.png b/translated_images/banana-ripe-22.a63c05aeb7f866fc64b6ac04e6fa68e1d1a22d729ad16d9fadf3357df97654a3.br.png
new file mode 100644
index 00000000..ea5cbe30
Binary files /dev/null and b/translated_images/banana-ripe-22.a63c05aeb7f866fc64b6ac04e6fa68e1d1a22d729ad16d9fadf3357df97654a3.br.png differ
diff --git a/translated_images/banana-ripe-22.a63c05aeb7f866fc64b6ac04e6fa68e1d1a22d729ad16d9fadf3357df97654a3.tr.png b/translated_images/banana-ripe-22.a63c05aeb7f866fc64b6ac04e6fa68e1d1a22d729ad16d9fadf3357df97654a3.tr.png
new file mode 100644
index 00000000..ea5cbe30
Binary files /dev/null and b/translated_images/banana-ripe-22.a63c05aeb7f866fc64b6ac04e6fa68e1d1a22d729ad16d9fadf3357df97654a3.tr.png differ
diff --git a/translated_images/banana-ripe-23.6f3364afcab19e571497cb5a3fa2b0c603a303beb31034cb82ae25635f4cc005.br.png b/translated_images/banana-ripe-23.6f3364afcab19e571497cb5a3fa2b0c603a303beb31034cb82ae25635f4cc005.br.png
new file mode 100644
index 00000000..eab9fb03
Binary files /dev/null and b/translated_images/banana-ripe-23.6f3364afcab19e571497cb5a3fa2b0c603a303beb31034cb82ae25635f4cc005.br.png differ
diff --git a/translated_images/banana-ripe-23.6f3364afcab19e571497cb5a3fa2b0c603a303beb31034cb82ae25635f4cc005.tr.png b/translated_images/banana-ripe-23.6f3364afcab19e571497cb5a3fa2b0c603a303beb31034cb82ae25635f4cc005.tr.png
new file mode 100644
index 00000000..eab9fb03
Binary files /dev/null and b/translated_images/banana-ripe-23.6f3364afcab19e571497cb5a3fa2b0c603a303beb31034cb82ae25635f4cc005.tr.png differ
diff --git a/translated_images/banana-ripe-24.ff2c02cc80a9c4301d1f851af0a96f414fcc844f912ea4bea902877c9d6978f6.br.png b/translated_images/banana-ripe-24.ff2c02cc80a9c4301d1f851af0a96f414fcc844f912ea4bea902877c9d6978f6.br.png
new file mode 100644
index 00000000..c49c0459
Binary files /dev/null and b/translated_images/banana-ripe-24.ff2c02cc80a9c4301d1f851af0a96f414fcc844f912ea4bea902877c9d6978f6.br.png differ
diff --git a/translated_images/banana-ripe-24.ff2c02cc80a9c4301d1f851af0a96f414fcc844f912ea4bea902877c9d6978f6.tr.png b/translated_images/banana-ripe-24.ff2c02cc80a9c4301d1f851af0a96f414fcc844f912ea4bea902877c9d6978f6.tr.png
new file mode 100644
index 00000000..c49c0459
Binary files /dev/null and b/translated_images/banana-ripe-24.ff2c02cc80a9c4301d1f851af0a96f414fcc844f912ea4bea902877c9d6978f6.tr.png differ
diff --git a/translated_images/banana-ripe-25.65ce63418cdc4de2d1d29d0fd35401a9f99e967938e01c3578f13a6b6812ae50.br.png b/translated_images/banana-ripe-25.65ce63418cdc4de2d1d29d0fd35401a9f99e967938e01c3578f13a6b6812ae50.br.png
new file mode 100644
index 00000000..127b0257
Binary files /dev/null and b/translated_images/banana-ripe-25.65ce63418cdc4de2d1d29d0fd35401a9f99e967938e01c3578f13a6b6812ae50.br.png differ
diff --git a/translated_images/banana-ripe-25.65ce63418cdc4de2d1d29d0fd35401a9f99e967938e01c3578f13a6b6812ae50.tr.png b/translated_images/banana-ripe-25.65ce63418cdc4de2d1d29d0fd35401a9f99e967938e01c3578f13a6b6812ae50.tr.png
new file mode 100644
index 00000000..127b0257
Binary files /dev/null and b/translated_images/banana-ripe-25.65ce63418cdc4de2d1d29d0fd35401a9f99e967938e01c3578f13a6b6812ae50.tr.png differ
diff --git a/translated_images/banana-ripe-3.4fae05a0a1d2b5f010998afee52fb77a113453a95331c76eb4b509c14d5cb5d7.br.png b/translated_images/banana-ripe-3.4fae05a0a1d2b5f010998afee52fb77a113453a95331c76eb4b509c14d5cb5d7.br.png
new file mode 100644
index 00000000..0b528799
Binary files /dev/null and b/translated_images/banana-ripe-3.4fae05a0a1d2b5f010998afee52fb77a113453a95331c76eb4b509c14d5cb5d7.br.png differ
diff --git a/translated_images/banana-ripe-3.4fae05a0a1d2b5f010998afee52fb77a113453a95331c76eb4b509c14d5cb5d7.tr.png b/translated_images/banana-ripe-3.4fae05a0a1d2b5f010998afee52fb77a113453a95331c76eb4b509c14d5cb5d7.tr.png
new file mode 100644
index 00000000..0b528799
Binary files /dev/null and b/translated_images/banana-ripe-3.4fae05a0a1d2b5f010998afee52fb77a113453a95331c76eb4b509c14d5cb5d7.tr.png differ
diff --git a/translated_images/banana-ripe-5.c762086879ccec4c5402fb5dd5387f4ee4c208de3ec13fd69a5461ef36cde34a.br.png b/translated_images/banana-ripe-5.c762086879ccec4c5402fb5dd5387f4ee4c208de3ec13fd69a5461ef36cde34a.br.png
new file mode 100644
index 00000000..e5b04c65
Binary files /dev/null and b/translated_images/banana-ripe-5.c762086879ccec4c5402fb5dd5387f4ee4c208de3ec13fd69a5461ef36cde34a.br.png differ
diff --git a/translated_images/banana-ripe-5.c762086879ccec4c5402fb5dd5387f4ee4c208de3ec13fd69a5461ef36cde34a.tr.png b/translated_images/banana-ripe-5.c762086879ccec4c5402fb5dd5387f4ee4c208de3ec13fd69a5461ef36cde34a.tr.png
new file mode 100644
index 00000000..e5b04c65
Binary files /dev/null and b/translated_images/banana-ripe-5.c762086879ccec4c5402fb5dd5387f4ee4c208de3ec13fd69a5461ef36cde34a.tr.png differ
diff --git a/translated_images/banana-ripe-6.5131bcbf492980cb737c3658b96f6ff3381ced4cd6505588b05bd95d82965c49.br.png b/translated_images/banana-ripe-6.5131bcbf492980cb737c3658b96f6ff3381ced4cd6505588b05bd95d82965c49.br.png
new file mode 100644
index 00000000..46543926
Binary files /dev/null and b/translated_images/banana-ripe-6.5131bcbf492980cb737c3658b96f6ff3381ced4cd6505588b05bd95d82965c49.br.png differ
diff --git a/translated_images/banana-ripe-6.5131bcbf492980cb737c3658b96f6ff3381ced4cd6505588b05bd95d82965c49.tr.png b/translated_images/banana-ripe-6.5131bcbf492980cb737c3658b96f6ff3381ced4cd6505588b05bd95d82965c49.tr.png
new file mode 100644
index 00000000..46543926
Binary files /dev/null and b/translated_images/banana-ripe-6.5131bcbf492980cb737c3658b96f6ff3381ced4cd6505588b05bd95d82965c49.tr.png differ
diff --git a/translated_images/banana-ripe-7.5fc18dfe7b7ae9dc5afe27cc6c0ce162c819b78b69b05f6f9c1636d5d1b82edc.br.png b/translated_images/banana-ripe-7.5fc18dfe7b7ae9dc5afe27cc6c0ce162c819b78b69b05f6f9c1636d5d1b82edc.br.png
new file mode 100644
index 00000000..46e99668
Binary files /dev/null and b/translated_images/banana-ripe-7.5fc18dfe7b7ae9dc5afe27cc6c0ce162c819b78b69b05f6f9c1636d5d1b82edc.br.png differ
diff --git a/translated_images/banana-ripe-7.5fc18dfe7b7ae9dc5afe27cc6c0ce162c819b78b69b05f6f9c1636d5d1b82edc.tr.png b/translated_images/banana-ripe-7.5fc18dfe7b7ae9dc5afe27cc6c0ce162c819b78b69b05f6f9c1636d5d1b82edc.tr.png
new file mode 100644
index 00000000..46e99668
Binary files /dev/null and b/translated_images/banana-ripe-7.5fc18dfe7b7ae9dc5afe27cc6c0ce162c819b78b69b05f6f9c1636d5d1b82edc.tr.png differ
diff --git a/translated_images/banana-ripe-8.dba1d33bd34d4830201c15a9c35c56fde4b1a45dc7dc5e3a7def9986bf1b6c28.br.png b/translated_images/banana-ripe-8.dba1d33bd34d4830201c15a9c35c56fde4b1a45dc7dc5e3a7def9986bf1b6c28.br.png
new file mode 100644
index 00000000..c012d47d
Binary files /dev/null and b/translated_images/banana-ripe-8.dba1d33bd34d4830201c15a9c35c56fde4b1a45dc7dc5e3a7def9986bf1b6c28.br.png differ
diff --git a/translated_images/banana-ripe-8.dba1d33bd34d4830201c15a9c35c56fde4b1a45dc7dc5e3a7def9986bf1b6c28.tr.png b/translated_images/banana-ripe-8.dba1d33bd34d4830201c15a9c35c56fde4b1a45dc7dc5e3a7def9986bf1b6c28.tr.png
new file mode 100644
index 00000000..c012d47d
Binary files /dev/null and b/translated_images/banana-ripe-8.dba1d33bd34d4830201c15a9c35c56fde4b1a45dc7dc5e3a7def9986bf1b6c28.tr.png differ
diff --git a/translated_images/banana-ripe-9.32f91462c8b0e2d3666f49a12afd84462212c5834835f988b3c37441c0493952.br.png b/translated_images/banana-ripe-9.32f91462c8b0e2d3666f49a12afd84462212c5834835f988b3c37441c0493952.br.png
new file mode 100644
index 00000000..fa44061a
Binary files /dev/null and b/translated_images/banana-ripe-9.32f91462c8b0e2d3666f49a12afd84462212c5834835f988b3c37441c0493952.br.png differ
diff --git a/translated_images/banana-ripe-9.32f91462c8b0e2d3666f49a12afd84462212c5834835f988b3c37441c0493952.tr.png b/translated_images/banana-ripe-9.32f91462c8b0e2d3666f49a12afd84462212c5834835f988b3c37441c0493952.tr.png
new file mode 100644
index 00000000..fa44061a
Binary files /dev/null and b/translated_images/banana-ripe-9.32f91462c8b0e2d3666f49a12afd84462212c5834835f988b3c37441c0493952.tr.png differ
diff --git a/translated_images/banana-training-images.530eb203346d73bc23b8b990fb4609470bf4ff7c942ccc13d4cfffeed9be1ad4.br.png b/translated_images/banana-training-images.530eb203346d73bc23b8b990fb4609470bf4ff7c942ccc13d4cfffeed9be1ad4.br.png
new file mode 100644
index 00000000..e499b2fd
Binary files /dev/null and b/translated_images/banana-training-images.530eb203346d73bc23b8b990fb4609470bf4ff7c942ccc13d4cfffeed9be1ad4.br.png differ
diff --git a/translated_images/banana-training-images.530eb203346d73bc23b8b990fb4609470bf4ff7c942ccc13d4cfffeed9be1ad4.tr.png b/translated_images/banana-training-images.530eb203346d73bc23b8b990fb4609470bf4ff7c942ccc13d4cfffeed9be1ad4.tr.png
new file mode 100644
index 00000000..e499b2fd
Binary files /dev/null and b/translated_images/banana-training-images.530eb203346d73bc23b8b990fb4609470bf4ff7c942ccc13d4cfffeed9be1ad4.tr.png differ
diff --git a/translated_images/banana-unripe-1.910c8606a300fa2014a0e0adb31348effd6e0fdd5760fdfe80b8e69533bac6f7.br.png b/translated_images/banana-unripe-1.910c8606a300fa2014a0e0adb31348effd6e0fdd5760fdfe80b8e69533bac6f7.br.png
new file mode 100644
index 00000000..66e9927a
Binary files /dev/null and b/translated_images/banana-unripe-1.910c8606a300fa2014a0e0adb31348effd6e0fdd5760fdfe80b8e69533bac6f7.br.png differ
diff --git a/translated_images/banana-unripe-1.910c8606a300fa2014a0e0adb31348effd6e0fdd5760fdfe80b8e69533bac6f7.tr.png b/translated_images/banana-unripe-1.910c8606a300fa2014a0e0adb31348effd6e0fdd5760fdfe80b8e69533bac6f7.tr.png
new file mode 100644
index 00000000..66e9927a
Binary files /dev/null and b/translated_images/banana-unripe-1.910c8606a300fa2014a0e0adb31348effd6e0fdd5760fdfe80b8e69533bac6f7.tr.png differ
diff --git a/translated_images/banana-unripe-1.b2c7051d9c8a4e617be0425bea42775d16f896f3a183344e9038da2d1fb81dea.br.png b/translated_images/banana-unripe-1.b2c7051d9c8a4e617be0425bea42775d16f896f3a183344e9038da2d1fb81dea.br.png
new file mode 100644
index 00000000..e512cf63
Binary files /dev/null and b/translated_images/banana-unripe-1.b2c7051d9c8a4e617be0425bea42775d16f896f3a183344e9038da2d1fb81dea.br.png differ
diff --git a/translated_images/banana-unripe-1.b2c7051d9c8a4e617be0425bea42775d16f896f3a183344e9038da2d1fb81dea.tr.png b/translated_images/banana-unripe-1.b2c7051d9c8a4e617be0425bea42775d16f896f3a183344e9038da2d1fb81dea.tr.png
new file mode 100644
index 00000000..e512cf63
Binary files /dev/null and b/translated_images/banana-unripe-1.b2c7051d9c8a4e617be0425bea42775d16f896f3a183344e9038da2d1fb81dea.tr.png differ
diff --git a/translated_images/banana-unripe-10.38dab0db918a24870e655b62e7f3af030eaebe5bcfb7cfebbfb010637b46ba44.br.png b/translated_images/banana-unripe-10.38dab0db918a24870e655b62e7f3af030eaebe5bcfb7cfebbfb010637b46ba44.br.png
new file mode 100644
index 00000000..89e41b8a
Binary files /dev/null and b/translated_images/banana-unripe-10.38dab0db918a24870e655b62e7f3af030eaebe5bcfb7cfebbfb010637b46ba44.br.png differ
diff --git a/translated_images/banana-unripe-10.38dab0db918a24870e655b62e7f3af030eaebe5bcfb7cfebbfb010637b46ba44.tr.png b/translated_images/banana-unripe-10.38dab0db918a24870e655b62e7f3af030eaebe5bcfb7cfebbfb010637b46ba44.tr.png
new file mode 100644
index 00000000..89e41b8a
Binary files /dev/null and b/translated_images/banana-unripe-10.38dab0db918a24870e655b62e7f3af030eaebe5bcfb7cfebbfb010637b46ba44.tr.png differ
diff --git a/translated_images/banana-unripe-11.ec8d0eefe63e10b953579d18d4fdd9d89cedc247749ec1d11fdbe49a43f1bc90.br.png b/translated_images/banana-unripe-11.ec8d0eefe63e10b953579d18d4fdd9d89cedc247749ec1d11fdbe49a43f1bc90.br.png
new file mode 100644
index 00000000..257c3e55
Binary files /dev/null and b/translated_images/banana-unripe-11.ec8d0eefe63e10b953579d18d4fdd9d89cedc247749ec1d11fdbe49a43f1bc90.br.png differ
diff --git a/translated_images/banana-unripe-11.ec8d0eefe63e10b953579d18d4fdd9d89cedc247749ec1d11fdbe49a43f1bc90.tr.png b/translated_images/banana-unripe-11.ec8d0eefe63e10b953579d18d4fdd9d89cedc247749ec1d11fdbe49a43f1bc90.tr.png
new file mode 100644
index 00000000..257c3e55
Binary files /dev/null and b/translated_images/banana-unripe-11.ec8d0eefe63e10b953579d18d4fdd9d89cedc247749ec1d11fdbe49a43f1bc90.tr.png differ
diff --git a/translated_images/banana-unripe-12.b95a088ccae935db01b47786dac829cb356feb5d4dbfcf8d91e000e9ed3be7a2.br.png b/translated_images/banana-unripe-12.b95a088ccae935db01b47786dac829cb356feb5d4dbfcf8d91e000e9ed3be7a2.br.png
new file mode 100644
index 00000000..85a581ed
Binary files /dev/null and b/translated_images/banana-unripe-12.b95a088ccae935db01b47786dac829cb356feb5d4dbfcf8d91e000e9ed3be7a2.br.png differ
diff --git a/translated_images/banana-unripe-12.b95a088ccae935db01b47786dac829cb356feb5d4dbfcf8d91e000e9ed3be7a2.tr.png b/translated_images/banana-unripe-12.b95a088ccae935db01b47786dac829cb356feb5d4dbfcf8d91e000e9ed3be7a2.tr.png
new file mode 100644
index 00000000..85a581ed
Binary files /dev/null and b/translated_images/banana-unripe-12.b95a088ccae935db01b47786dac829cb356feb5d4dbfcf8d91e000e9ed3be7a2.tr.png differ
diff --git a/translated_images/banana-unripe-13.37e5a7cac5aa0920343a6dd17dc720499d9f9b7c990cf4bc002f681216a545b7.br.png b/translated_images/banana-unripe-13.37e5a7cac5aa0920343a6dd17dc720499d9f9b7c990cf4bc002f681216a545b7.br.png
new file mode 100644
index 00000000..c07f67c3
Binary files /dev/null and b/translated_images/banana-unripe-13.37e5a7cac5aa0920343a6dd17dc720499d9f9b7c990cf4bc002f681216a545b7.br.png differ
diff --git a/translated_images/banana-unripe-13.37e5a7cac5aa0920343a6dd17dc720499d9f9b7c990cf4bc002f681216a545b7.tr.png b/translated_images/banana-unripe-13.37e5a7cac5aa0920343a6dd17dc720499d9f9b7c990cf4bc002f681216a545b7.tr.png
new file mode 100644
index 00000000..c07f67c3
Binary files /dev/null and b/translated_images/banana-unripe-13.37e5a7cac5aa0920343a6dd17dc720499d9f9b7c990cf4bc002f681216a545b7.tr.png differ
diff --git a/translated_images/banana-unripe-14.d19ddd6bbf63a2591db0d88a6c81e17d2186dee04b9bb4ff60031009fc0cce0a.br.png b/translated_images/banana-unripe-14.d19ddd6bbf63a2591db0d88a6c81e17d2186dee04b9bb4ff60031009fc0cce0a.br.png
new file mode 100644
index 00000000..c598913b
Binary files /dev/null and b/translated_images/banana-unripe-14.d19ddd6bbf63a2591db0d88a6c81e17d2186dee04b9bb4ff60031009fc0cce0a.br.png differ
diff --git a/translated_images/banana-unripe-14.d19ddd6bbf63a2591db0d88a6c81e17d2186dee04b9bb4ff60031009fc0cce0a.tr.png b/translated_images/banana-unripe-14.d19ddd6bbf63a2591db0d88a6c81e17d2186dee04b9bb4ff60031009fc0cce0a.tr.png
new file mode 100644
index 00000000..c598913b
Binary files /dev/null and b/translated_images/banana-unripe-14.d19ddd6bbf63a2591db0d88a6c81e17d2186dee04b9bb4ff60031009fc0cce0a.tr.png differ
diff --git a/translated_images/banana-unripe-15.274e48544326077a58c0e00e04e98c7abe04bc473caaab64fe3154c551d8a0a8.br.png b/translated_images/banana-unripe-15.274e48544326077a58c0e00e04e98c7abe04bc473caaab64fe3154c551d8a0a8.br.png
new file mode 100644
index 00000000..a630a6f3
Binary files /dev/null and b/translated_images/banana-unripe-15.274e48544326077a58c0e00e04e98c7abe04bc473caaab64fe3154c551d8a0a8.br.png differ
diff --git a/translated_images/banana-unripe-15.274e48544326077a58c0e00e04e98c7abe04bc473caaab64fe3154c551d8a0a8.tr.png b/translated_images/banana-unripe-15.274e48544326077a58c0e00e04e98c7abe04bc473caaab64fe3154c551d8a0a8.tr.png
new file mode 100644
index 00000000..a630a6f3
Binary files /dev/null and b/translated_images/banana-unripe-15.274e48544326077a58c0e00e04e98c7abe04bc473caaab64fe3154c551d8a0a8.tr.png differ
diff --git a/translated_images/banana-unripe-16.bd058f64bd7ec014d10bdeb9da39568aeb5871908b5c2a6376a5f97d3101c273.br.png b/translated_images/banana-unripe-16.bd058f64bd7ec014d10bdeb9da39568aeb5871908b5c2a6376a5f97d3101c273.br.png
new file mode 100644
index 00000000..f63ad48d
Binary files /dev/null and b/translated_images/banana-unripe-16.bd058f64bd7ec014d10bdeb9da39568aeb5871908b5c2a6376a5f97d3101c273.br.png differ
diff --git a/translated_images/banana-unripe-16.bd058f64bd7ec014d10bdeb9da39568aeb5871908b5c2a6376a5f97d3101c273.tr.png b/translated_images/banana-unripe-16.bd058f64bd7ec014d10bdeb9da39568aeb5871908b5c2a6376a5f97d3101c273.tr.png
new file mode 100644
index 00000000..f63ad48d
Binary files /dev/null and b/translated_images/banana-unripe-16.bd058f64bd7ec014d10bdeb9da39568aeb5871908b5c2a6376a5f97d3101c273.tr.png differ
diff --git a/translated_images/banana-unripe-17.408382d679bfa079fbe89e269fbc05a2602d2f980834601380633a5471c72396.br.png b/translated_images/banana-unripe-17.408382d679bfa079fbe89e269fbc05a2602d2f980834601380633a5471c72396.br.png
new file mode 100644
index 00000000..73c0aea6
Binary files /dev/null and b/translated_images/banana-unripe-17.408382d679bfa079fbe89e269fbc05a2602d2f980834601380633a5471c72396.br.png differ
diff --git a/translated_images/banana-unripe-17.408382d679bfa079fbe89e269fbc05a2602d2f980834601380633a5471c72396.tr.png b/translated_images/banana-unripe-17.408382d679bfa079fbe89e269fbc05a2602d2f980834601380633a5471c72396.tr.png
new file mode 100644
index 00000000..73c0aea6
Binary files /dev/null and b/translated_images/banana-unripe-17.408382d679bfa079fbe89e269fbc05a2602d2f980834601380633a5471c72396.tr.png differ
diff --git a/translated_images/banana-unripe-18.39c0eb79d7b3b9baf71858801fb8cb8b01e395289bab8c7091a57a97d1dfa075.br.png b/translated_images/banana-unripe-18.39c0eb79d7b3b9baf71858801fb8cb8b01e395289bab8c7091a57a97d1dfa075.br.png
new file mode 100644
index 00000000..0768efbc
Binary files /dev/null and b/translated_images/banana-unripe-18.39c0eb79d7b3b9baf71858801fb8cb8b01e395289bab8c7091a57a97d1dfa075.br.png differ
diff --git a/translated_images/banana-unripe-18.39c0eb79d7b3b9baf71858801fb8cb8b01e395289bab8c7091a57a97d1dfa075.tr.png b/translated_images/banana-unripe-18.39c0eb79d7b3b9baf71858801fb8cb8b01e395289bab8c7091a57a97d1dfa075.tr.png
new file mode 100644
index 00000000..0768efbc
Binary files /dev/null and b/translated_images/banana-unripe-18.39c0eb79d7b3b9baf71858801fb8cb8b01e395289bab8c7091a57a97d1dfa075.tr.png differ
diff --git a/translated_images/banana-unripe-19.e61e6d7efaf2d8c81a25acbff9c40f018b78c3c240c8e384d54da374eda70f9b.br.png b/translated_images/banana-unripe-19.e61e6d7efaf2d8c81a25acbff9c40f018b78c3c240c8e384d54da374eda70f9b.br.png
new file mode 100644
index 00000000..a6c3afe8
Binary files /dev/null and b/translated_images/banana-unripe-19.e61e6d7efaf2d8c81a25acbff9c40f018b78c3c240c8e384d54da374eda70f9b.br.png differ
diff --git a/translated_images/banana-unripe-19.e61e6d7efaf2d8c81a25acbff9c40f018b78c3c240c8e384d54da374eda70f9b.tr.png b/translated_images/banana-unripe-19.e61e6d7efaf2d8c81a25acbff9c40f018b78c3c240c8e384d54da374eda70f9b.tr.png
new file mode 100644
index 00000000..a6c3afe8
Binary files /dev/null and b/translated_images/banana-unripe-19.e61e6d7efaf2d8c81a25acbff9c40f018b78c3c240c8e384d54da374eda70f9b.tr.png differ
diff --git a/translated_images/banana-unripe-2.43a73b544521afc7efd54de90fd585f314844de67b16509fff2ab80c05eec7bd.br.png b/translated_images/banana-unripe-2.43a73b544521afc7efd54de90fd585f314844de67b16509fff2ab80c05eec7bd.br.png
new file mode 100644
index 00000000..eed10ecb
Binary files /dev/null and b/translated_images/banana-unripe-2.43a73b544521afc7efd54de90fd585f314844de67b16509fff2ab80c05eec7bd.br.png differ
diff --git a/translated_images/banana-unripe-2.43a73b544521afc7efd54de90fd585f314844de67b16509fff2ab80c05eec7bd.tr.png b/translated_images/banana-unripe-2.43a73b544521afc7efd54de90fd585f314844de67b16509fff2ab80c05eec7bd.tr.png
new file mode 100644
index 00000000..eed10ecb
Binary files /dev/null and b/translated_images/banana-unripe-2.43a73b544521afc7efd54de90fd585f314844de67b16509fff2ab80c05eec7bd.tr.png differ
diff --git a/translated_images/banana-unripe-2.9591d1a6aa27deebbaec0955b227bbae20d6bfae43f29d832bd412bbafa45bfd.br.png b/translated_images/banana-unripe-2.9591d1a6aa27deebbaec0955b227bbae20d6bfae43f29d832bd412bbafa45bfd.br.png
new file mode 100644
index 00000000..4c086050
Binary files /dev/null and b/translated_images/banana-unripe-2.9591d1a6aa27deebbaec0955b227bbae20d6bfae43f29d832bd412bbafa45bfd.br.png differ
diff --git a/translated_images/banana-unripe-2.9591d1a6aa27deebbaec0955b227bbae20d6bfae43f29d832bd412bbafa45bfd.tr.png b/translated_images/banana-unripe-2.9591d1a6aa27deebbaec0955b227bbae20d6bfae43f29d832bd412bbafa45bfd.tr.png
new file mode 100644
index 00000000..4c086050
Binary files /dev/null and b/translated_images/banana-unripe-2.9591d1a6aa27deebbaec0955b227bbae20d6bfae43f29d832bd412bbafa45bfd.tr.png differ
diff --git a/translated_images/banana-unripe-20.85b7a74eaab5634e769fe2fec57405201513094c400f71e16d75cd79bde092ab.br.png b/translated_images/banana-unripe-20.85b7a74eaab5634e769fe2fec57405201513094c400f71e16d75cd79bde092ab.br.png
new file mode 100644
index 00000000..9f641588
Binary files /dev/null and b/translated_images/banana-unripe-20.85b7a74eaab5634e769fe2fec57405201513094c400f71e16d75cd79bde092ab.br.png differ
diff --git a/translated_images/banana-unripe-20.85b7a74eaab5634e769fe2fec57405201513094c400f71e16d75cd79bde092ab.tr.png b/translated_images/banana-unripe-20.85b7a74eaab5634e769fe2fec57405201513094c400f71e16d75cd79bde092ab.tr.png
new file mode 100644
index 00000000..9f641588
Binary files /dev/null and b/translated_images/banana-unripe-20.85b7a74eaab5634e769fe2fec57405201513094c400f71e16d75cd79bde092ab.tr.png differ
diff --git a/translated_images/banana-unripe-21.ccc1333439b344bc502fbfa9b60e5e9013a4d57ba539ba87000ccd69dc0675e2.br.png b/translated_images/banana-unripe-21.ccc1333439b344bc502fbfa9b60e5e9013a4d57ba539ba87000ccd69dc0675e2.br.png
new file mode 100644
index 00000000..9404843f
Binary files /dev/null and b/translated_images/banana-unripe-21.ccc1333439b344bc502fbfa9b60e5e9013a4d57ba539ba87000ccd69dc0675e2.br.png differ
diff --git a/translated_images/banana-unripe-21.ccc1333439b344bc502fbfa9b60e5e9013a4d57ba539ba87000ccd69dc0675e2.tr.png b/translated_images/banana-unripe-21.ccc1333439b344bc502fbfa9b60e5e9013a4d57ba539ba87000ccd69dc0675e2.tr.png
new file mode 100644
index 00000000..9404843f
Binary files /dev/null and b/translated_images/banana-unripe-21.ccc1333439b344bc502fbfa9b60e5e9013a4d57ba539ba87000ccd69dc0675e2.tr.png differ
diff --git a/translated_images/banana-unripe-22.27dff4b438163080fcace0af6f24b8c9866b76a15269844e9ed1b722ae2220e7.br.png b/translated_images/banana-unripe-22.27dff4b438163080fcace0af6f24b8c9866b76a15269844e9ed1b722ae2220e7.br.png
new file mode 100644
index 00000000..9636ac68
Binary files /dev/null and b/translated_images/banana-unripe-22.27dff4b438163080fcace0af6f24b8c9866b76a15269844e9ed1b722ae2220e7.br.png differ
diff --git a/translated_images/banana-unripe-22.27dff4b438163080fcace0af6f24b8c9866b76a15269844e9ed1b722ae2220e7.tr.png b/translated_images/banana-unripe-22.27dff4b438163080fcace0af6f24b8c9866b76a15269844e9ed1b722ae2220e7.tr.png
new file mode 100644
index 00000000..9636ac68
Binary files /dev/null and b/translated_images/banana-unripe-22.27dff4b438163080fcace0af6f24b8c9866b76a15269844e9ed1b722ae2220e7.tr.png differ
diff --git a/translated_images/banana-unripe-23.c4c9067f23370e90c5156d7659a0d17590d952e2defd6550aeded84e847c1e4b.br.png b/translated_images/banana-unripe-23.c4c9067f23370e90c5156d7659a0d17590d952e2defd6550aeded84e847c1e4b.br.png
new file mode 100644
index 00000000..38a2b35d
Binary files /dev/null and b/translated_images/banana-unripe-23.c4c9067f23370e90c5156d7659a0d17590d952e2defd6550aeded84e847c1e4b.br.png differ
diff --git a/translated_images/banana-unripe-23.c4c9067f23370e90c5156d7659a0d17590d952e2defd6550aeded84e847c1e4b.tr.png b/translated_images/banana-unripe-23.c4c9067f23370e90c5156d7659a0d17590d952e2defd6550aeded84e847c1e4b.tr.png
new file mode 100644
index 00000000..38a2b35d
Binary files /dev/null and b/translated_images/banana-unripe-23.c4c9067f23370e90c5156d7659a0d17590d952e2defd6550aeded84e847c1e4b.tr.png differ
diff --git a/translated_images/banana-unripe-24.6f0b781c309da62f71147fcc87699967bef10c57a794029ede2eb0d1d88e4b73.br.png b/translated_images/banana-unripe-24.6f0b781c309da62f71147fcc87699967bef10c57a794029ede2eb0d1d88e4b73.br.png
new file mode 100644
index 00000000..cd09e177
Binary files /dev/null and b/translated_images/banana-unripe-24.6f0b781c309da62f71147fcc87699967bef10c57a794029ede2eb0d1d88e4b73.br.png differ
diff --git a/translated_images/banana-unripe-24.6f0b781c309da62f71147fcc87699967bef10c57a794029ede2eb0d1d88e4b73.tr.png b/translated_images/banana-unripe-24.6f0b781c309da62f71147fcc87699967bef10c57a794029ede2eb0d1d88e4b73.tr.png
new file mode 100644
index 00000000..cd09e177
Binary files /dev/null and b/translated_images/banana-unripe-24.6f0b781c309da62f71147fcc87699967bef10c57a794029ede2eb0d1d88e4b73.tr.png differ
diff --git a/translated_images/banana-unripe-25.21d553d84880ac4ff73128909d01c79c4544424d218f740482da46bdae46f74b.br.png b/translated_images/banana-unripe-25.21d553d84880ac4ff73128909d01c79c4544424d218f740482da46bdae46f74b.br.png
new file mode 100644
index 00000000..4cc4f4bc
Binary files /dev/null and b/translated_images/banana-unripe-25.21d553d84880ac4ff73128909d01c79c4544424d218f740482da46bdae46f74b.br.png differ
diff --git a/translated_images/banana-unripe-25.21d553d84880ac4ff73128909d01c79c4544424d218f740482da46bdae46f74b.tr.png b/translated_images/banana-unripe-25.21d553d84880ac4ff73128909d01c79c4544424d218f740482da46bdae46f74b.tr.png
new file mode 100644
index 00000000..4cc4f4bc
Binary files /dev/null and b/translated_images/banana-unripe-25.21d553d84880ac4ff73128909d01c79c4544424d218f740482da46bdae46f74b.tr.png differ
diff --git a/translated_images/banana-unripe-26.823c48b61feb1d5c319e9cf54f5e7c2bb43f91e781bf42d57f386d0dabf3fd12.br.png b/translated_images/banana-unripe-26.823c48b61feb1d5c319e9cf54f5e7c2bb43f91e781bf42d57f386d0dabf3fd12.br.png
new file mode 100644
index 00000000..33e03220
Binary files /dev/null and b/translated_images/banana-unripe-26.823c48b61feb1d5c319e9cf54f5e7c2bb43f91e781bf42d57f386d0dabf3fd12.br.png differ
diff --git a/translated_images/banana-unripe-26.823c48b61feb1d5c319e9cf54f5e7c2bb43f91e781bf42d57f386d0dabf3fd12.tr.png b/translated_images/banana-unripe-26.823c48b61feb1d5c319e9cf54f5e7c2bb43f91e781bf42d57f386d0dabf3fd12.tr.png
new file mode 100644
index 00000000..33e03220
Binary files /dev/null and b/translated_images/banana-unripe-26.823c48b61feb1d5c319e9cf54f5e7c2bb43f91e781bf42d57f386d0dabf3fd12.tr.png differ
diff --git a/translated_images/banana-unripe-27.f98fd272deeb02d9b6771340fe6da2de82db652ade770d9eca14ba6be2d0ad17.br.png b/translated_images/banana-unripe-27.f98fd272deeb02d9b6771340fe6da2de82db652ade770d9eca14ba6be2d0ad17.br.png
new file mode 100644
index 00000000..489d49e3
Binary files /dev/null and b/translated_images/banana-unripe-27.f98fd272deeb02d9b6771340fe6da2de82db652ade770d9eca14ba6be2d0ad17.br.png differ
diff --git a/translated_images/banana-unripe-27.f98fd272deeb02d9b6771340fe6da2de82db652ade770d9eca14ba6be2d0ad17.tr.png b/translated_images/banana-unripe-27.f98fd272deeb02d9b6771340fe6da2de82db652ade770d9eca14ba6be2d0ad17.tr.png
new file mode 100644
index 00000000..489d49e3
Binary files /dev/null and b/translated_images/banana-unripe-27.f98fd272deeb02d9b6771340fe6da2de82db652ade770d9eca14ba6be2d0ad17.tr.png differ
diff --git a/translated_images/banana-unripe-28.5331ba409ce41c07caa09d72d6ad7375b5a5b3d7609fcabdaa82d9799439fd21.br.png b/translated_images/banana-unripe-28.5331ba409ce41c07caa09d72d6ad7375b5a5b3d7609fcabdaa82d9799439fd21.br.png
new file mode 100644
index 00000000..80b39b63
Binary files /dev/null and b/translated_images/banana-unripe-28.5331ba409ce41c07caa09d72d6ad7375b5a5b3d7609fcabdaa82d9799439fd21.br.png differ
diff --git a/translated_images/banana-unripe-28.5331ba409ce41c07caa09d72d6ad7375b5a5b3d7609fcabdaa82d9799439fd21.tr.png b/translated_images/banana-unripe-28.5331ba409ce41c07caa09d72d6ad7375b5a5b3d7609fcabdaa82d9799439fd21.tr.png
new file mode 100644
index 00000000..80b39b63
Binary files /dev/null and b/translated_images/banana-unripe-28.5331ba409ce41c07caa09d72d6ad7375b5a5b3d7609fcabdaa82d9799439fd21.tr.png differ
diff --git a/translated_images/banana-unripe-29.84e126f389bf627ed464abdf8127f3a58e8b0131b5b1b9ee038de51703c31657.br.png b/translated_images/banana-unripe-29.84e126f389bf627ed464abdf8127f3a58e8b0131b5b1b9ee038de51703c31657.br.png
new file mode 100644
index 00000000..2404a4ce
Binary files /dev/null and b/translated_images/banana-unripe-29.84e126f389bf627ed464abdf8127f3a58e8b0131b5b1b9ee038de51703c31657.br.png differ
diff --git a/translated_images/banana-unripe-29.84e126f389bf627ed464abdf8127f3a58e8b0131b5b1b9ee038de51703c31657.tr.png b/translated_images/banana-unripe-29.84e126f389bf627ed464abdf8127f3a58e8b0131b5b1b9ee038de51703c31657.tr.png
new file mode 100644
index 00000000..2404a4ce
Binary files /dev/null and b/translated_images/banana-unripe-29.84e126f389bf627ed464abdf8127f3a58e8b0131b5b1b9ee038de51703c31657.tr.png differ
diff --git a/translated_images/banana-unripe-3.896df8fb2c3b8f51f71b212645fc5314b591a033938208000839642858ddcabd.br.png b/translated_images/banana-unripe-3.896df8fb2c3b8f51f71b212645fc5314b591a033938208000839642858ddcabd.br.png
new file mode 100644
index 00000000..f884cc81
Binary files /dev/null and b/translated_images/banana-unripe-3.896df8fb2c3b8f51f71b212645fc5314b591a033938208000839642858ddcabd.br.png differ
diff --git a/translated_images/banana-unripe-3.896df8fb2c3b8f51f71b212645fc5314b591a033938208000839642858ddcabd.tr.png b/translated_images/banana-unripe-3.896df8fb2c3b8f51f71b212645fc5314b591a033938208000839642858ddcabd.tr.png
new file mode 100644
index 00000000..f884cc81
Binary files /dev/null and b/translated_images/banana-unripe-3.896df8fb2c3b8f51f71b212645fc5314b591a033938208000839642858ddcabd.tr.png differ
diff --git a/translated_images/banana-unripe-4.483e740d6fd7b5a671cb49ad1b0f2c35f1637f86ccb9746bb4cc3b59ab752bf7.br.png b/translated_images/banana-unripe-4.483e740d6fd7b5a671cb49ad1b0f2c35f1637f86ccb9746bb4cc3b59ab752bf7.br.png
new file mode 100644
index 00000000..9f649bd1
Binary files /dev/null and b/translated_images/banana-unripe-4.483e740d6fd7b5a671cb49ad1b0f2c35f1637f86ccb9746bb4cc3b59ab752bf7.br.png differ
diff --git a/translated_images/banana-unripe-4.483e740d6fd7b5a671cb49ad1b0f2c35f1637f86ccb9746bb4cc3b59ab752bf7.tr.png b/translated_images/banana-unripe-4.483e740d6fd7b5a671cb49ad1b0f2c35f1637f86ccb9746bb4cc3b59ab752bf7.tr.png
new file mode 100644
index 00000000..9f649bd1
Binary files /dev/null and b/translated_images/banana-unripe-4.483e740d6fd7b5a671cb49ad1b0f2c35f1637f86ccb9746bb4cc3b59ab752bf7.tr.png differ
diff --git a/translated_images/banana-unripe-5.e9923cf1ffcfc1c93e8c2aeb184bd071566742b738b671ab9cedcd5708239a58.br.png b/translated_images/banana-unripe-5.e9923cf1ffcfc1c93e8c2aeb184bd071566742b738b671ab9cedcd5708239a58.br.png
new file mode 100644
index 00000000..03e1fa8c
Binary files /dev/null and b/translated_images/banana-unripe-5.e9923cf1ffcfc1c93e8c2aeb184bd071566742b738b671ab9cedcd5708239a58.br.png differ
diff --git a/translated_images/banana-unripe-5.e9923cf1ffcfc1c93e8c2aeb184bd071566742b738b671ab9cedcd5708239a58.tr.png b/translated_images/banana-unripe-5.e9923cf1ffcfc1c93e8c2aeb184bd071566742b738b671ab9cedcd5708239a58.tr.png
new file mode 100644
index 00000000..03e1fa8c
Binary files /dev/null and b/translated_images/banana-unripe-5.e9923cf1ffcfc1c93e8c2aeb184bd071566742b738b671ab9cedcd5708239a58.tr.png differ
diff --git a/translated_images/banana-unripe-6.e3a73307558caecc9aac5ae80bbe37ca38f105e2bd7311afab61ee1014fc6c0e.br.png b/translated_images/banana-unripe-6.e3a73307558caecc9aac5ae80bbe37ca38f105e2bd7311afab61ee1014fc6c0e.br.png
new file mode 100644
index 00000000..983f836f
Binary files /dev/null and b/translated_images/banana-unripe-6.e3a73307558caecc9aac5ae80bbe37ca38f105e2bd7311afab61ee1014fc6c0e.br.png differ
diff --git a/translated_images/banana-unripe-6.e3a73307558caecc9aac5ae80bbe37ca38f105e2bd7311afab61ee1014fc6c0e.tr.png b/translated_images/banana-unripe-6.e3a73307558caecc9aac5ae80bbe37ca38f105e2bd7311afab61ee1014fc6c0e.tr.png
new file mode 100644
index 00000000..983f836f
Binary files /dev/null and b/translated_images/banana-unripe-6.e3a73307558caecc9aac5ae80bbe37ca38f105e2bd7311afab61ee1014fc6c0e.tr.png differ
diff --git a/translated_images/banana-unripe-7.634ca89acc17d68f8423b1a13f1bec6bdbd5135f0149c6cfaa53d7b7d5fa1c65.br.png b/translated_images/banana-unripe-7.634ca89acc17d68f8423b1a13f1bec6bdbd5135f0149c6cfaa53d7b7d5fa1c65.br.png
new file mode 100644
index 00000000..2aede939
Binary files /dev/null and b/translated_images/banana-unripe-7.634ca89acc17d68f8423b1a13f1bec6bdbd5135f0149c6cfaa53d7b7d5fa1c65.br.png differ
diff --git a/translated_images/banana-unripe-7.634ca89acc17d68f8423b1a13f1bec6bdbd5135f0149c6cfaa53d7b7d5fa1c65.tr.png b/translated_images/banana-unripe-7.634ca89acc17d68f8423b1a13f1bec6bdbd5135f0149c6cfaa53d7b7d5fa1c65.tr.png
new file mode 100644
index 00000000..2aede939
Binary files /dev/null and b/translated_images/banana-unripe-7.634ca89acc17d68f8423b1a13f1bec6bdbd5135f0149c6cfaa53d7b7d5fa1c65.tr.png differ
diff --git a/translated_images/banana-unripe-8.75720b4cdebac8c36964c86e051ea962ab02e530abec3f577bd77fdbc34d7f9d.br.png b/translated_images/banana-unripe-8.75720b4cdebac8c36964c86e051ea962ab02e530abec3f577bd77fdbc34d7f9d.br.png
new file mode 100644
index 00000000..7bc7bab2
Binary files /dev/null and b/translated_images/banana-unripe-8.75720b4cdebac8c36964c86e051ea962ab02e530abec3f577bd77fdbc34d7f9d.br.png differ
diff --git a/translated_images/banana-unripe-8.75720b4cdebac8c36964c86e051ea962ab02e530abec3f577bd77fdbc34d7f9d.tr.png b/translated_images/banana-unripe-8.75720b4cdebac8c36964c86e051ea962ab02e530abec3f577bd77fdbc34d7f9d.tr.png
new file mode 100644
index 00000000..7bc7bab2
Binary files /dev/null and b/translated_images/banana-unripe-8.75720b4cdebac8c36964c86e051ea962ab02e530abec3f577bd77fdbc34d7f9d.tr.png differ
diff --git a/translated_images/banana-unripe-9.e8076983351d2f54cfb246bc01090e7016b63fb8d81396822cbe5366c1b88b7f.br.png b/translated_images/banana-unripe-9.e8076983351d2f54cfb246bc01090e7016b63fb8d81396822cbe5366c1b88b7f.br.png
new file mode 100644
index 00000000..4ffd862a
Binary files /dev/null and b/translated_images/banana-unripe-9.e8076983351d2f54cfb246bc01090e7016b63fb8d81396822cbe5366c1b88b7f.br.png differ
diff --git a/translated_images/banana-unripe-9.e8076983351d2f54cfb246bc01090e7016b63fb8d81396822cbe5366c1b88b7f.tr.png b/translated_images/banana-unripe-9.e8076983351d2f54cfb246bc01090e7016b63fb8d81396822cbe5366c1b88b7f.tr.png
new file mode 100644
index 00000000..4ffd862a
Binary files /dev/null and b/translated_images/banana-unripe-9.e8076983351d2f54cfb246bc01090e7016b63fb8d81396822cbe5366c1b88b7f.tr.png differ
diff --git a/translated_images/banana-unripe-quick-test-prediction.dae9b5e1c4ef7c64886422438850ea14f0be6ac918c217ea3b255c685abfabe7.br.png b/translated_images/banana-unripe-quick-test-prediction.dae9b5e1c4ef7c64886422438850ea14f0be6ac918c217ea3b255c685abfabe7.br.png
new file mode 100644
index 00000000..ef506579
Binary files /dev/null and b/translated_images/banana-unripe-quick-test-prediction.dae9b5e1c4ef7c64886422438850ea14f0be6ac918c217ea3b255c685abfabe7.br.png differ
diff --git a/translated_images/banana-unripe-quick-test-prediction.dae9b5e1c4ef7c64886422438850ea14f0be6ac918c217ea3b255c685abfabe7.tr.png b/translated_images/banana-unripe-quick-test-prediction.dae9b5e1c4ef7c64886422438850ea14f0be6ac918c217ea3b255c685abfabe7.tr.png
new file mode 100644
index 00000000..ef506579
Binary files /dev/null and b/translated_images/banana-unripe-quick-test-prediction.dae9b5e1c4ef7c64886422438850ea14f0be6ac918c217ea3b255c685abfabe7.tr.png differ
diff --git a/translated_images/bananas-ripe-vs-unripe-predictions.8d0e2034014aa50ece4e4589e724b142da0681f35470fe3db3f7d51240f69c85.br.png b/translated_images/bananas-ripe-vs-unripe-predictions.8d0e2034014aa50ece4e4589e724b142da0681f35470fe3db3f7d51240f69c85.br.png
new file mode 100644
index 00000000..ddf79213
Binary files /dev/null and b/translated_images/bananas-ripe-vs-unripe-predictions.8d0e2034014aa50ece4e4589e724b142da0681f35470fe3db3f7d51240f69c85.br.png differ
diff --git a/translated_images/bananas-ripe-vs-unripe-predictions.8d0e2034014aa50ece4e4589e724b142da0681f35470fe3db3f7d51240f69c85.tr.png b/translated_images/bananas-ripe-vs-unripe-predictions.8d0e2034014aa50ece4e4589e724b142da0681f35470fe3db3f7d51240f69c85.tr.png
new file mode 100644
index 00000000..ddf79213
Binary files /dev/null and b/translated_images/bananas-ripe-vs-unripe-predictions.8d0e2034014aa50ece4e4589e724b142da0681f35470fe3db3f7d51240f69c85.tr.png differ
diff --git a/translated_images/basic-thermostat.a923217fd1f37e5a6f3390396a65c22a387419ea2dd17e518ec24315ba6ae9a8.br.png b/translated_images/basic-thermostat.a923217fd1f37e5a6f3390396a65c22a387419ea2dd17e518ec24315ba6ae9a8.br.png
new file mode 100644
index 00000000..1796bcce
Binary files /dev/null and b/translated_images/basic-thermostat.a923217fd1f37e5a6f3390396a65c22a387419ea2dd17e518ec24315ba6ae9a8.br.png differ
diff --git a/translated_images/basic-thermostat.a923217fd1f37e5a6f3390396a65c22a387419ea2dd17e518ec24315ba6ae9a8.tr.png b/translated_images/basic-thermostat.a923217fd1f37e5a6f3390396a65c22a387419ea2dd17e518ec24315ba6ae9a8.tr.png
new file mode 100644
index 00000000..1796bcce
Binary files /dev/null and b/translated_images/basic-thermostat.a923217fd1f37e5a6f3390396a65c22a387419ea2dd17e518ec24315ba6ae9a8.tr.png differ
diff --git a/translated_images/bing-translate.348aa796d6efe2a92f41ea74a5cf42bb4c63d6faaa08e7f46924e072a35daa48.br.png b/translated_images/bing-translate.348aa796d6efe2a92f41ea74a5cf42bb4c63d6faaa08e7f46924e072a35daa48.br.png
new file mode 100644
index 00000000..ab763666
Binary files /dev/null and b/translated_images/bing-translate.348aa796d6efe2a92f41ea74a5cf42bb4c63d6faaa08e7f46924e072a35daa48.br.png differ
diff --git a/translated_images/bing-translate.348aa796d6efe2a92f41ea74a5cf42bb4c63d6faaa08e7f46924e072a35daa48.tr.png b/translated_images/bing-translate.348aa796d6efe2a92f41ea74a5cf42bb4c63d6faaa08e7f46924e072a35daa48.tr.png
new file mode 100644
index 00000000..ab763666
Binary files /dev/null and b/translated_images/bing-translate.348aa796d6efe2a92f41ea74a5cf42bb4c63d6faaa08e7f46924e072a35daa48.tr.png differ
diff --git a/translated_images/bounding-box.1420a7ea0d3d15f71e1ffb5cf4b2271d184fac051f990abc541975168d163684.br.png b/translated_images/bounding-box.1420a7ea0d3d15f71e1ffb5cf4b2271d184fac051f990abc541975168d163684.br.png
new file mode 100644
index 00000000..013f247d
Binary files /dev/null and b/translated_images/bounding-box.1420a7ea0d3d15f71e1ffb5cf4b2271d184fac051f990abc541975168d163684.br.png differ
diff --git a/translated_images/bounding-box.1420a7ea0d3d15f71e1ffb5cf4b2271d184fac051f990abc541975168d163684.tr.png b/translated_images/bounding-box.1420a7ea0d3d15f71e1ffb5cf4b2271d184fac051f990abc541975168d163684.tr.png
new file mode 100644
index 00000000..013f247d
Binary files /dev/null and b/translated_images/bounding-box.1420a7ea0d3d15f71e1ffb5cf4b2271d184fac051f990abc541975168d163684.tr.png differ
diff --git a/translated_images/bricked-car.dc38f8efadc6c59d76211f981a521efb300939283dee468f79503aae3ec67615.br.png b/translated_images/bricked-car.dc38f8efadc6c59d76211f981a521efb300939283dee468f79503aae3ec67615.br.png
new file mode 100644
index 00000000..fd1b7753
Binary files /dev/null and b/translated_images/bricked-car.dc38f8efadc6c59d76211f981a521efb300939283dee468f79503aae3ec67615.br.png differ
diff --git a/translated_images/bricked-car.dc38f8efadc6c59d76211f981a521efb300939283dee468f79503aae3ec67615.tr.png b/translated_images/bricked-car.dc38f8efadc6c59d76211f981a521efb300939283dee468f79503aae3ec67615.tr.png
new file mode 100644
index 00000000..fd1b7753
Binary files /dev/null and b/translated_images/bricked-car.dc38f8efadc6c59d76211f981a521efb300939283dee468f79503aae3ec67615.tr.png differ
diff --git a/translated_images/button-with-digital.3749edea8eb885af0303f7ea29e2389d704661c0ca3225b08ff0cbc22f332059.br.png b/translated_images/button-with-digital.3749edea8eb885af0303f7ea29e2389d704661c0ca3225b08ff0cbc22f332059.br.png
new file mode 100644
index 00000000..55154b84
Binary files /dev/null and b/translated_images/button-with-digital.3749edea8eb885af0303f7ea29e2389d704661c0ca3225b08ff0cbc22f332059.br.png differ
diff --git a/translated_images/button-with-digital.3749edea8eb885af0303f7ea29e2389d704661c0ca3225b08ff0cbc22f332059.tr.png b/translated_images/button-with-digital.3749edea8eb885af0303f7ea29e2389d704661c0ca3225b08ff0cbc22f332059.tr.png
new file mode 100644
index 00000000..55154b84
Binary files /dev/null and b/translated_images/button-with-digital.3749edea8eb885af0303f7ea29e2389d704661c0ca3225b08ff0cbc22f332059.tr.png differ
diff --git a/translated_images/button.eadb560b77ac45e56f523d9d8876e40444f63b419e33eb820082d461fa79490b.br.png b/translated_images/button.eadb560b77ac45e56f523d9d8876e40444f63b419e33eb820082d461fa79490b.br.png
new file mode 100644
index 00000000..306d6f14
Binary files /dev/null and b/translated_images/button.eadb560b77ac45e56f523d9d8876e40444f63b419e33eb820082d461fa79490b.br.png differ
diff --git a/translated_images/button.eadb560b77ac45e56f523d9d8876e40444f63b419e33eb820082d461fa79490b.tr.png b/translated_images/button.eadb560b77ac45e56f523d9d8876e40444f63b419e33eb820082d461fa79490b.tr.png
new file mode 100644
index 00000000..306d6f14
Binary files /dev/null and b/translated_images/button.eadb560b77ac45e56f523d9d8876e40444f63b419e33eb820082d461fa79490b.tr.png differ
diff --git a/translated_images/chart-soil-moisture-relay.fbb391236d34a64d0abf1df396e9197e0a24df14150620b9cc820a64a55c9326.br.png b/translated_images/chart-soil-moisture-relay.fbb391236d34a64d0abf1df396e9197e0a24df14150620b9cc820a64a55c9326.br.png
new file mode 100644
index 00000000..dfb03646
Binary files /dev/null and b/translated_images/chart-soil-moisture-relay.fbb391236d34a64d0abf1df396e9197e0a24df14150620b9cc820a64a55c9326.br.png differ
diff --git a/translated_images/chart-soil-moisture-relay.fbb391236d34a64d0abf1df396e9197e0a24df14150620b9cc820a64a55c9326.tr.png b/translated_images/chart-soil-moisture-relay.fbb391236d34a64d0abf1df396e9197e0a24df14150620b9cc820a64a55c9326.tr.png
new file mode 100644
index 00000000..dfb03646
Binary files /dev/null and b/translated_images/chart-soil-moisture-relay.fbb391236d34a64d0abf1df396e9197e0a24df14150620b9cc820a64a55c9326.tr.png differ
diff --git a/translated_images/chart-soil-moisture.fd6d9d0cdc0b5f75e78038ecb8945dfc84b38851359de99d84b16e3336d6d7c2.br.png b/translated_images/chart-soil-moisture.fd6d9d0cdc0b5f75e78038ecb8945dfc84b38851359de99d84b16e3336d6d7c2.br.png
new file mode 100644
index 00000000..05208120
Binary files /dev/null and b/translated_images/chart-soil-moisture.fd6d9d0cdc0b5f75e78038ecb8945dfc84b38851359de99d84b16e3336d6d7c2.br.png differ
diff --git a/translated_images/chart-soil-moisture.fd6d9d0cdc0b5f75e78038ecb8945dfc84b38851359de99d84b16e3336d6d7c2.tr.png b/translated_images/chart-soil-moisture.fd6d9d0cdc0b5f75e78038ecb8945dfc84b38851359de99d84b16e3336d6d7c2.tr.png
new file mode 100644
index 00000000..05208120
Binary files /dev/null and b/translated_images/chart-soil-moisture.fd6d9d0cdc0b5f75e78038ecb8945dfc84b38851359de99d84b16e3336d6d7c2.tr.png differ
diff --git a/translated_images/child-watering-garden.9a5d3f1bfe6d0d8d488291e8189899b2c59f82abaa487f18d404217a25e671e7.br.jpg b/translated_images/child-watering-garden.9a5d3f1bfe6d0d8d488291e8189899b2c59f82abaa487f18d404217a25e671e7.br.jpg
new file mode 100644
index 00000000..e78b8c6c
Binary files /dev/null and b/translated_images/child-watering-garden.9a5d3f1bfe6d0d8d488291e8189899b2c59f82abaa487f18d404217a25e671e7.br.jpg differ
diff --git a/translated_images/child-watering-garden.9a5d3f1bfe6d0d8d488291e8189899b2c59f82abaa487f18d404217a25e671e7.tr.jpg b/translated_images/child-watering-garden.9a5d3f1bfe6d0d8d488291e8189899b2c59f82abaa487f18d404217a25e671e7.tr.jpg
new file mode 100644
index 00000000..e78b8c6c
Binary files /dev/null and b/translated_images/child-watering-garden.9a5d3f1bfe6d0d8d488291e8189899b2c59f82abaa487f18d404217a25e671e7.tr.jpg differ
diff --git a/translated_images/cloud-with-edge.1e26462c62c126fe150bd15a5714ddf0be599f09bacbad08b85be02b76ea1ae1.br.png b/translated_images/cloud-with-edge.1e26462c62c126fe150bd15a5714ddf0be599f09bacbad08b85be02b76ea1ae1.br.png
new file mode 100644
index 00000000..0b221a3f
Binary files /dev/null and b/translated_images/cloud-with-edge.1e26462c62c126fe150bd15a5714ddf0be599f09bacbad08b85be02b76ea1ae1.br.png differ
diff --git a/translated_images/cloud-with-edge.1e26462c62c126fe150bd15a5714ddf0be599f09bacbad08b85be02b76ea1ae1.tr.png b/translated_images/cloud-with-edge.1e26462c62c126fe150bd15a5714ddf0be599f09bacbad08b85be02b76ea1ae1.tr.png
new file mode 100644
index 00000000..0b221a3f
Binary files /dev/null and b/translated_images/cloud-with-edge.1e26462c62c126fe150bd15a5714ddf0be599f09bacbad08b85be02b76ea1ae1.tr.png differ
diff --git a/translated_images/cloud-without-edge.b4da641f6022c95ed6b91fde8b5323abd2f94e0d52073ad54172ae8f5dac90e9.br.png b/translated_images/cloud-without-edge.b4da641f6022c95ed6b91fde8b5323abd2f94e0d52073ad54172ae8f5dac90e9.br.png
new file mode 100644
index 00000000..576d3f84
Binary files /dev/null and b/translated_images/cloud-without-edge.b4da641f6022c95ed6b91fde8b5323abd2f94e0d52073ad54172ae8f5dac90e9.br.png differ
diff --git a/translated_images/cloud-without-edge.b4da641f6022c95ed6b91fde8b5323abd2f94e0d52073ad54172ae8f5dac90e9.tr.png b/translated_images/cloud-without-edge.b4da641f6022c95ed6b91fde8b5323abd2f94e0d52073ad54172ae8f5dac90e9.tr.png
new file mode 100644
index 00000000..576d3f84
Binary files /dev/null and b/translated_images/cloud-without-edge.b4da641f6022c95ed6b91fde8b5323abd2f94e0d52073ad54172ae8f5dac90e9.tr.png differ
diff --git a/translated_images/cmos-sensor.75f9cd74decb137149a4c9ea825251a4549497d67c0ae2776159e6102bb53aa9.br.png b/translated_images/cmos-sensor.75f9cd74decb137149a4c9ea825251a4549497d67c0ae2776159e6102bb53aa9.br.png
new file mode 100644
index 00000000..297ccc5e
Binary files /dev/null and b/translated_images/cmos-sensor.75f9cd74decb137149a4c9ea825251a4549497d67c0ae2776159e6102bb53aa9.br.png differ
diff --git a/translated_images/cmos-sensor.75f9cd74decb137149a4c9ea825251a4549497d67c0ae2776159e6102bb53aa9.tr.png b/translated_images/cmos-sensor.75f9cd74decb137149a4c9ea825251a4549497d67c0ae2776159e6102bb53aa9.tr.png
new file mode 100644
index 00000000..297ccc5e
Binary files /dev/null and b/translated_images/cmos-sensor.75f9cd74decb137149a4c9ea825251a4549497d67c0ae2776159e6102bb53aa9.tr.png differ
diff --git a/translated_images/commands.d6c06bbbb3a02cce95f2831a1c331daf6dedd4e470c4aa2b0ae54f332016e504.br.png b/translated_images/commands.d6c06bbbb3a02cce95f2831a1c331daf6dedd4e470c4aa2b0ae54f332016e504.br.png
new file mode 100644
index 00000000..89bd1ba6
Binary files /dev/null and b/translated_images/commands.d6c06bbbb3a02cce95f2831a1c331daf6dedd4e470c4aa2b0ae54f332016e504.br.png differ
diff --git a/translated_images/commands.d6c06bbbb3a02cce95f2831a1c331daf6dedd4e470c4aa2b0ae54f332016e504.tr.png b/translated_images/commands.d6c06bbbb3a02cce95f2831a1c331daf6dedd4e470c4aa2b0ae54f332016e504.tr.png
new file mode 100644
index 00000000..89bd1ba6
Binary files /dev/null and b/translated_images/commands.d6c06bbbb3a02cce95f2831a1c331daf6dedd4e470c4aa2b0ae54f332016e504.tr.png differ
diff --git a/translated_images/condenser-mic.6f6ed5b76ca19e0ec3fd0c544601542d4479a6cb7565db336de49fbbf69f623e.br.jpg b/translated_images/condenser-mic.6f6ed5b76ca19e0ec3fd0c544601542d4479a6cb7565db336de49fbbf69f623e.br.jpg
new file mode 100644
index 00000000..383794f2
Binary files /dev/null and b/translated_images/condenser-mic.6f6ed5b76ca19e0ec3fd0c544601542d4479a6cb7565db336de49fbbf69f623e.br.jpg differ
diff --git a/translated_images/condenser-mic.6f6ed5b76ca19e0ec3fd0c544601542d4479a6cb7565db336de49fbbf69f623e.tr.jpg b/translated_images/condenser-mic.6f6ed5b76ca19e0ec3fd0c544601542d4479a6cb7565db336de49fbbf69f623e.tr.jpg
new file mode 100644
index 00000000..383794f2
Binary files /dev/null and b/translated_images/condenser-mic.6f6ed5b76ca19e0ec3fd0c544601542d4479a6cb7565db336de49fbbf69f623e.tr.jpg differ
diff --git a/translated_images/consumer-groups.a3262e26fc27ba2092863678ad57af15c7223416e388a23f330c058cf4358630.br.png b/translated_images/consumer-groups.a3262e26fc27ba2092863678ad57af15c7223416e388a23f330c058cf4358630.br.png
new file mode 100644
index 00000000..f28538e1
Binary files /dev/null and b/translated_images/consumer-groups.a3262e26fc27ba2092863678ad57af15c7223416e388a23f330c058cf4358630.br.png differ
diff --git a/translated_images/consumer-groups.a3262e26fc27ba2092863678ad57af15c7223416e388a23f330c058cf4358630.tr.png b/translated_images/consumer-groups.a3262e26fc27ba2092863678ad57af15c7223416e388a23f330c058cf4358630.tr.png
new file mode 100644
index 00000000..f28538e1
Binary files /dev/null and b/translated_images/consumer-groups.a3262e26fc27ba2092863678ad57af15c7223416e388a23f330c058cf4358630.tr.png differ
diff --git a/translated_images/container-edge-flow.c246050dd60ceefdb6ace026a4ce5c6aa4112bb5898ae23fbb2ab4be29ae3e1b.br.png b/translated_images/container-edge-flow.c246050dd60ceefdb6ace026a4ce5c6aa4112bb5898ae23fbb2ab4be29ae3e1b.br.png
new file mode 100644
index 00000000..39431760
Binary files /dev/null and b/translated_images/container-edge-flow.c246050dd60ceefdb6ace026a4ce5c6aa4112bb5898ae23fbb2ab4be29ae3e1b.br.png differ
diff --git a/translated_images/container-edge-flow.c246050dd60ceefdb6ace026a4ce5c6aa4112bb5898ae23fbb2ab4be29ae3e1b.tr.png b/translated_images/container-edge-flow.c246050dd60ceefdb6ace026a4ce5c6aa4112bb5898ae23fbb2ab4be29ae3e1b.tr.png
new file mode 100644
index 00000000..39431760
Binary files /dev/null and b/translated_images/container-edge-flow.c246050dd60ceefdb6ace026a4ce5c6aa4112bb5898ae23fbb2ab4be29ae3e1b.tr.png differ
diff --git a/translated_images/container-web-browser.4ee81dd4f0d8838ce622b2a0d600b6a4322b5d4fe43159facd87b7b34f84d66a.br.png b/translated_images/container-web-browser.4ee81dd4f0d8838ce622b2a0d600b6a4322b5d4fe43159facd87b7b34f84d66a.br.png
new file mode 100644
index 00000000..46a26d45
Binary files /dev/null and b/translated_images/container-web-browser.4ee81dd4f0d8838ce622b2a0d600b6a4322b5d4fe43159facd87b7b34f84d66a.br.png differ
diff --git a/translated_images/container-web-browser.4ee81dd4f0d8838ce622b2a0d600b6a4322b5d4fe43159facd87b7b34f84d66a.tr.png b/translated_images/container-web-browser.4ee81dd4f0d8838ce622b2a0d600b6a4322b5d4fe43159facd87b7b34f84d66a.tr.png
new file mode 100644
index 00000000..46a26d45
Binary files /dev/null and b/translated_images/container-web-browser.4ee81dd4f0d8838ce622b2a0d600b6a4322b5d4fe43159facd87b7b34f84d66a.tr.png differ
diff --git a/translated_images/counterfit-camera-options.eb3bd5150a8e7dffbf24bc5bcaba0cf2cdef95fbe6bbe393695d173817d6b8df.br.png b/translated_images/counterfit-camera-options.eb3bd5150a8e7dffbf24bc5bcaba0cf2cdef95fbe6bbe393695d173817d6b8df.br.png
new file mode 100644
index 00000000..6f70239b
Binary files /dev/null and b/translated_images/counterfit-camera-options.eb3bd5150a8e7dffbf24bc5bcaba0cf2cdef95fbe6bbe393695d173817d6b8df.br.png differ
diff --git a/translated_images/counterfit-camera-options.eb3bd5150a8e7dffbf24bc5bcaba0cf2cdef95fbe6bbe393695d173817d6b8df.tr.png b/translated_images/counterfit-camera-options.eb3bd5150a8e7dffbf24bc5bcaba0cf2cdef95fbe6bbe393695d173817d6b8df.tr.png
new file mode 100644
index 00000000..6f70239b
Binary files /dev/null and b/translated_images/counterfit-camera-options.eb3bd5150a8e7dffbf24bc5bcaba0cf2cdef95fbe6bbe393695d173817d6b8df.tr.png differ
diff --git a/translated_images/counterfit-camera.001ec52194c8ee5d3f617173da2c79e1df903d10882adc625cbfc493525125d4.br.png b/translated_images/counterfit-camera.001ec52194c8ee5d3f617173da2c79e1df903d10882adc625cbfc493525125d4.br.png
new file mode 100644
index 00000000..c5cd51da
Binary files /dev/null and b/translated_images/counterfit-camera.001ec52194c8ee5d3f617173da2c79e1df903d10882adc625cbfc493525125d4.br.png differ
diff --git a/translated_images/counterfit-camera.001ec52194c8ee5d3f617173da2c79e1df903d10882adc625cbfc493525125d4.tr.png b/translated_images/counterfit-camera.001ec52194c8ee5d3f617173da2c79e1df903d10882adc625cbfc493525125d4.tr.png
new file mode 100644
index 00000000..c5cd51da
Binary files /dev/null and b/translated_images/counterfit-camera.001ec52194c8ee5d3f617173da2c79e1df903d10882adc625cbfc493525125d4.tr.png differ
diff --git a/translated_images/counterfit-connected.ed30b46d8f79b0921f3fc70be10366e596a89dca3f80c2224a9d9fc98fccf884.br.png b/translated_images/counterfit-connected.ed30b46d8f79b0921f3fc70be10366e596a89dca3f80c2224a9d9fc98fccf884.br.png
new file mode 100644
index 00000000..0328b3ea
Binary files /dev/null and b/translated_images/counterfit-connected.ed30b46d8f79b0921f3fc70be10366e596a89dca3f80c2224a9d9fc98fccf884.br.png differ
diff --git a/translated_images/counterfit-connected.ed30b46d8f79b0921f3fc70be10366e596a89dca3f80c2224a9d9fc98fccf884.tr.png b/translated_images/counterfit-connected.ed30b46d8f79b0921f3fc70be10366e596a89dca3f80c2224a9d9fc98fccf884.tr.png
new file mode 100644
index 00000000..0328b3ea
Binary files /dev/null and b/translated_images/counterfit-connected.ed30b46d8f79b0921f3fc70be10366e596a89dca3f80c2224a9d9fc98fccf884.tr.png differ
diff --git a/translated_images/counterfit-create-camera.a5de97f59c0bd3cbe0416d7e89a3cfe86d19fbae05c641c53a91286412af0a34.br.png b/translated_images/counterfit-create-camera.a5de97f59c0bd3cbe0416d7e89a3cfe86d19fbae05c641c53a91286412af0a34.br.png
new file mode 100644
index 00000000..b3d0d223
Binary files /dev/null and b/translated_images/counterfit-create-camera.a5de97f59c0bd3cbe0416d7e89a3cfe86d19fbae05c641c53a91286412af0a34.br.png differ
diff --git a/translated_images/counterfit-create-camera.a5de97f59c0bd3cbe0416d7e89a3cfe86d19fbae05c641c53a91286412af0a34.tr.png b/translated_images/counterfit-create-camera.a5de97f59c0bd3cbe0416d7e89a3cfe86d19fbae05c641c53a91286412af0a34.tr.png
new file mode 100644
index 00000000..b3d0d223
Binary files /dev/null and b/translated_images/counterfit-create-camera.a5de97f59c0bd3cbe0416d7e89a3cfe86d19fbae05c641c53a91286412af0a34.tr.png differ
diff --git a/translated_images/counterfit-create-distance-sensor.967c9fb98f27888d95920c9784d004c972490eb71f70397fe13bd70a79a879a3.br.png b/translated_images/counterfit-create-distance-sensor.967c9fb98f27888d95920c9784d004c972490eb71f70397fe13bd70a79a879a3.br.png
new file mode 100644
index 00000000..0729dbce
Binary files /dev/null and b/translated_images/counterfit-create-distance-sensor.967c9fb98f27888d95920c9784d004c972490eb71f70397fe13bd70a79a879a3.br.png differ
diff --git a/translated_images/counterfit-create-distance-sensor.967c9fb98f27888d95920c9784d004c972490eb71f70397fe13bd70a79a879a3.tr.png b/translated_images/counterfit-create-distance-sensor.967c9fb98f27888d95920c9784d004c972490eb71f70397fe13bd70a79a879a3.tr.png
new file mode 100644
index 00000000..0729dbce
Binary files /dev/null and b/translated_images/counterfit-create-distance-sensor.967c9fb98f27888d95920c9784d004c972490eb71f70397fe13bd70a79a879a3.tr.png differ
diff --git a/translated_images/counterfit-create-gps-sensor.6385dc9357d85ad1d47b4abb2525e7651fd498917d25eefc5a72feab09eedc70.br.png b/translated_images/counterfit-create-gps-sensor.6385dc9357d85ad1d47b4abb2525e7651fd498917d25eefc5a72feab09eedc70.br.png
new file mode 100644
index 00000000..2e3adef5
Binary files /dev/null and b/translated_images/counterfit-create-gps-sensor.6385dc9357d85ad1d47b4abb2525e7651fd498917d25eefc5a72feab09eedc70.br.png differ
diff --git a/translated_images/counterfit-create-gps-sensor.6385dc9357d85ad1d47b4abb2525e7651fd498917d25eefc5a72feab09eedc70.tr.png b/translated_images/counterfit-create-gps-sensor.6385dc9357d85ad1d47b4abb2525e7651fd498917d25eefc5a72feab09eedc70.tr.png
new file mode 100644
index 00000000..2e3adef5
Binary files /dev/null and b/translated_images/counterfit-create-gps-sensor.6385dc9357d85ad1d47b4abb2525e7651fd498917d25eefc5a72feab09eedc70.tr.png differ
diff --git a/translated_images/counterfit-create-humidity-sensor.2750e27b6f30e09cf4e22101defd5252710717620816ab41ba688f91f757c49a.br.png b/translated_images/counterfit-create-humidity-sensor.2750e27b6f30e09cf4e22101defd5252710717620816ab41ba688f91f757c49a.br.png
new file mode 100644
index 00000000..4e9aa9b4
Binary files /dev/null and b/translated_images/counterfit-create-humidity-sensor.2750e27b6f30e09cf4e22101defd5252710717620816ab41ba688f91f757c49a.br.png differ
diff --git a/translated_images/counterfit-create-humidity-sensor.2750e27b6f30e09cf4e22101defd5252710717620816ab41ba688f91f757c49a.tr.png b/translated_images/counterfit-create-humidity-sensor.2750e27b6f30e09cf4e22101defd5252710717620816ab41ba688f91f757c49a.tr.png
new file mode 100644
index 00000000..4e9aa9b4
Binary files /dev/null and b/translated_images/counterfit-create-humidity-sensor.2750e27b6f30e09cf4e22101defd5252710717620816ab41ba688f91f757c49a.tr.png differ
diff --git a/translated_images/counterfit-create-led.ba9db1c9b8c622a635d6dfae5cdc4e70c2b250635bd4f0601c6cf0bd22b7ba46.br.png b/translated_images/counterfit-create-led.ba9db1c9b8c622a635d6dfae5cdc4e70c2b250635bd4f0601c6cf0bd22b7ba46.br.png
new file mode 100644
index 00000000..766527c0
Binary files /dev/null and b/translated_images/counterfit-create-led.ba9db1c9b8c622a635d6dfae5cdc4e70c2b250635bd4f0601c6cf0bd22b7ba46.br.png differ
diff --git a/translated_images/counterfit-create-led.ba9db1c9b8c622a635d6dfae5cdc4e70c2b250635bd4f0601c6cf0bd22b7ba46.tr.png b/translated_images/counterfit-create-led.ba9db1c9b8c622a635d6dfae5cdc4e70c2b250635bd4f0601c6cf0bd22b7ba46.tr.png
new file mode 100644
index 00000000..766527c0
Binary files /dev/null and b/translated_images/counterfit-create-led.ba9db1c9b8c622a635d6dfae5cdc4e70c2b250635bd4f0601c6cf0bd22b7ba46.tr.png differ
diff --git a/translated_images/counterfit-create-light-sensor.9f36a5e0d4458d8d554d54b34d2c806d56093d6e49fddcda2d20f6fef7f5cce1.br.png b/translated_images/counterfit-create-light-sensor.9f36a5e0d4458d8d554d54b34d2c806d56093d6e49fddcda2d20f6fef7f5cce1.br.png
new file mode 100644
index 00000000..f34ad7c6
Binary files /dev/null and b/translated_images/counterfit-create-light-sensor.9f36a5e0d4458d8d554d54b34d2c806d56093d6e49fddcda2d20f6fef7f5cce1.br.png differ
diff --git a/translated_images/counterfit-create-light-sensor.9f36a5e0d4458d8d554d54b34d2c806d56093d6e49fddcda2d20f6fef7f5cce1.tr.png b/translated_images/counterfit-create-light-sensor.9f36a5e0d4458d8d554d54b34d2c806d56093d6e49fddcda2d20f6fef7f5cce1.tr.png
new file mode 100644
index 00000000..f34ad7c6
Binary files /dev/null and b/translated_images/counterfit-create-light-sensor.9f36a5e0d4458d8d554d54b34d2c806d56093d6e49fddcda2d20f6fef7f5cce1.tr.png differ
diff --git a/translated_images/counterfit-create-relay.fa7c40fd0f2f6afc33b35ea94fcb235085be4861e14e3fe6b9b7bcfc82d1c888.br.png b/translated_images/counterfit-create-relay.fa7c40fd0f2f6afc33b35ea94fcb235085be4861e14e3fe6b9b7bcfc82d1c888.br.png
new file mode 100644
index 00000000..403bb436
Binary files /dev/null and b/translated_images/counterfit-create-relay.fa7c40fd0f2f6afc33b35ea94fcb235085be4861e14e3fe6b9b7bcfc82d1c888.br.png differ
diff --git a/translated_images/counterfit-create-relay.fa7c40fd0f2f6afc33b35ea94fcb235085be4861e14e3fe6b9b7bcfc82d1c888.tr.png b/translated_images/counterfit-create-relay.fa7c40fd0f2f6afc33b35ea94fcb235085be4861e14e3fe6b9b7bcfc82d1c888.tr.png
new file mode 100644
index 00000000..403bb436
Binary files /dev/null and b/translated_images/counterfit-create-relay.fa7c40fd0f2f6afc33b35ea94fcb235085be4861e14e3fe6b9b7bcfc82d1c888.tr.png differ
diff --git a/translated_images/counterfit-create-soil-moisture-sensor.35266135a5e0ae68b29a684d7db0d2933a8098b2307d197f7c71577b724603aa.br.png b/translated_images/counterfit-create-soil-moisture-sensor.35266135a5e0ae68b29a684d7db0d2933a8098b2307d197f7c71577b724603aa.br.png
new file mode 100644
index 00000000..07398a97
Binary files /dev/null and b/translated_images/counterfit-create-soil-moisture-sensor.35266135a5e0ae68b29a684d7db0d2933a8098b2307d197f7c71577b724603aa.br.png differ
diff --git a/translated_images/counterfit-create-soil-moisture-sensor.35266135a5e0ae68b29a684d7db0d2933a8098b2307d197f7c71577b724603aa.tr.png b/translated_images/counterfit-create-soil-moisture-sensor.35266135a5e0ae68b29a684d7db0d2933a8098b2307d197f7c71577b724603aa.tr.png
new file mode 100644
index 00000000..07398a97
Binary files /dev/null and b/translated_images/counterfit-create-soil-moisture-sensor.35266135a5e0ae68b29a684d7db0d2933a8098b2307d197f7c71577b724603aa.tr.png differ
diff --git a/translated_images/counterfit-create-temperature-sensor.199350ed34f7343d79dccbe95eaf6c11d2121f03d1c35ab9613b330c23f39b29.br.png b/translated_images/counterfit-create-temperature-sensor.199350ed34f7343d79dccbe95eaf6c11d2121f03d1c35ab9613b330c23f39b29.br.png
new file mode 100644
index 00000000..83d0a29e
Binary files /dev/null and b/translated_images/counterfit-create-temperature-sensor.199350ed34f7343d79dccbe95eaf6c11d2121f03d1c35ab9613b330c23f39b29.br.png differ
diff --git a/translated_images/counterfit-create-temperature-sensor.199350ed34f7343d79dccbe95eaf6c11d2121f03d1c35ab9613b330c23f39b29.tr.png b/translated_images/counterfit-create-temperature-sensor.199350ed34f7343d79dccbe95eaf6c11d2121f03d1c35ab9613b330c23f39b29.tr.png
new file mode 100644
index 00000000..83d0a29e
Binary files /dev/null and b/translated_images/counterfit-create-temperature-sensor.199350ed34f7343d79dccbe95eaf6c11d2121f03d1c35ab9613b330c23f39b29.tr.png differ
diff --git a/translated_images/counterfit-distance-sensor.079eefeeea0b68afc36431ce8fcbe2f09a7e4916ed1cd5cb30e696db53bc18fa.br.png b/translated_images/counterfit-distance-sensor.079eefeeea0b68afc36431ce8fcbe2f09a7e4916ed1cd5cb30e696db53bc18fa.br.png
new file mode 100644
index 00000000..cdd566f5
Binary files /dev/null and b/translated_images/counterfit-distance-sensor.079eefeeea0b68afc36431ce8fcbe2f09a7e4916ed1cd5cb30e696db53bc18fa.br.png differ
diff --git a/translated_images/counterfit-distance-sensor.079eefeeea0b68afc36431ce8fcbe2f09a7e4916ed1cd5cb30e696db53bc18fa.tr.png b/translated_images/counterfit-distance-sensor.079eefeeea0b68afc36431ce8fcbe2f09a7e4916ed1cd5cb30e696db53bc18fa.tr.png
new file mode 100644
index 00000000..cdd566f5
Binary files /dev/null and b/translated_images/counterfit-distance-sensor.079eefeeea0b68afc36431ce8fcbe2f09a7e4916ed1cd5cb30e696db53bc18fa.tr.png differ
diff --git a/translated_images/counterfit-first-run.433326358b669b31d0e99c3513cb01bfbb13724d162c99cdcc8f51ecf5f9c779.br.png b/translated_images/counterfit-first-run.433326358b669b31d0e99c3513cb01bfbb13724d162c99cdcc8f51ecf5f9c779.br.png
new file mode 100644
index 00000000..50caa7a8
Binary files /dev/null and b/translated_images/counterfit-first-run.433326358b669b31d0e99c3513cb01bfbb13724d162c99cdcc8f51ecf5f9c779.br.png differ
diff --git a/translated_images/counterfit-first-run.433326358b669b31d0e99c3513cb01bfbb13724d162c99cdcc8f51ecf5f9c779.tr.png b/translated_images/counterfit-first-run.433326358b669b31d0e99c3513cb01bfbb13724d162c99cdcc8f51ecf5f9c779.tr.png
new file mode 100644
index 00000000..50caa7a8
Binary files /dev/null and b/translated_images/counterfit-first-run.433326358b669b31d0e99c3513cb01bfbb13724d162c99cdcc8f51ecf5f9c779.tr.png differ
diff --git a/translated_images/counterfit-gps-sensor-gpxfile.8310b063ce8a425ccc8ebeec8306aeac5e8e55207f007d52c6e1194432a70cd9.br.png b/translated_images/counterfit-gps-sensor-gpxfile.8310b063ce8a425ccc8ebeec8306aeac5e8e55207f007d52c6e1194432a70cd9.br.png
new file mode 100644
index 00000000..e68c1881
Binary files /dev/null and b/translated_images/counterfit-gps-sensor-gpxfile.8310b063ce8a425ccc8ebeec8306aeac5e8e55207f007d52c6e1194432a70cd9.br.png differ
diff --git a/translated_images/counterfit-gps-sensor-gpxfile.8310b063ce8a425ccc8ebeec8306aeac5e8e55207f007d52c6e1194432a70cd9.tr.png b/translated_images/counterfit-gps-sensor-gpxfile.8310b063ce8a425ccc8ebeec8306aeac5e8e55207f007d52c6e1194432a70cd9.tr.png
new file mode 100644
index 00000000..e68c1881
Binary files /dev/null and b/translated_images/counterfit-gps-sensor-gpxfile.8310b063ce8a425ccc8ebeec8306aeac5e8e55207f007d52c6e1194432a70cd9.tr.png differ
diff --git a/translated_images/counterfit-gps-sensor-latlon.008c867d75464fbe7f84107cc57040df565ac07cb57d2f21db37d087d470197d.br.png b/translated_images/counterfit-gps-sensor-latlon.008c867d75464fbe7f84107cc57040df565ac07cb57d2f21db37d087d470197d.br.png
new file mode 100644
index 00000000..357708db
Binary files /dev/null and b/translated_images/counterfit-gps-sensor-latlon.008c867d75464fbe7f84107cc57040df565ac07cb57d2f21db37d087d470197d.br.png differ
diff --git a/translated_images/counterfit-gps-sensor-latlon.008c867d75464fbe7f84107cc57040df565ac07cb57d2f21db37d087d470197d.tr.png b/translated_images/counterfit-gps-sensor-latlon.008c867d75464fbe7f84107cc57040df565ac07cb57d2f21db37d087d470197d.tr.png
new file mode 100644
index 00000000..357708db
Binary files /dev/null and b/translated_images/counterfit-gps-sensor-latlon.008c867d75464fbe7f84107cc57040df565ac07cb57d2f21db37d087d470197d.tr.png differ
diff --git a/translated_images/counterfit-gps-sensor-nmea.c62eea442171e17e19528b051b104cfcecdc9cd18db7bc72920f29821ae63f73.br.png b/translated_images/counterfit-gps-sensor-nmea.c62eea442171e17e19528b051b104cfcecdc9cd18db7bc72920f29821ae63f73.br.png
new file mode 100644
index 00000000..ff2cb168
Binary files /dev/null and b/translated_images/counterfit-gps-sensor-nmea.c62eea442171e17e19528b051b104cfcecdc9cd18db7bc72920f29821ae63f73.br.png differ
diff --git a/translated_images/counterfit-gps-sensor-nmea.c62eea442171e17e19528b051b104cfcecdc9cd18db7bc72920f29821ae63f73.tr.png b/translated_images/counterfit-gps-sensor-nmea.c62eea442171e17e19528b051b104cfcecdc9cd18db7bc72920f29821ae63f73.tr.png
new file mode 100644
index 00000000..ff2cb168
Binary files /dev/null and b/translated_images/counterfit-gps-sensor-nmea.c62eea442171e17e19528b051b104cfcecdc9cd18db7bc72920f29821ae63f73.tr.png differ
diff --git a/translated_images/counterfit-gps-sensor.3fbb15af0a5367566f2f11324ef5a6f30861cdf2b497071a5e002b7aa473550e.br.png b/translated_images/counterfit-gps-sensor.3fbb15af0a5367566f2f11324ef5a6f30861cdf2b497071a5e002b7aa473550e.br.png
new file mode 100644
index 00000000..4dd28830
Binary files /dev/null and b/translated_images/counterfit-gps-sensor.3fbb15af0a5367566f2f11324ef5a6f30861cdf2b497071a5e002b7aa473550e.br.png differ
diff --git a/translated_images/counterfit-gps-sensor.3fbb15af0a5367566f2f11324ef5a6f30861cdf2b497071a5e002b7aa473550e.tr.png b/translated_images/counterfit-gps-sensor.3fbb15af0a5367566f2f11324ef5a6f30861cdf2b497071a5e002b7aa473550e.tr.png
new file mode 100644
index 00000000..4dd28830
Binary files /dev/null and b/translated_images/counterfit-gps-sensor.3fbb15af0a5367566f2f11324ef5a6f30861cdf2b497071a5e002b7aa473550e.tr.png differ
diff --git a/translated_images/counterfit-humidity-sensor.7b12f7f339e430cb26c8211d2dba4ef75261b353a01da0932698b5bebd693f27.br.png b/translated_images/counterfit-humidity-sensor.7b12f7f339e430cb26c8211d2dba4ef75261b353a01da0932698b5bebd693f27.br.png
new file mode 100644
index 00000000..36a0bed7
Binary files /dev/null and b/translated_images/counterfit-humidity-sensor.7b12f7f339e430cb26c8211d2dba4ef75261b353a01da0932698b5bebd693f27.br.png differ
diff --git a/translated_images/counterfit-humidity-sensor.7b12f7f339e430cb26c8211d2dba4ef75261b353a01da0932698b5bebd693f27.tr.png b/translated_images/counterfit-humidity-sensor.7b12f7f339e430cb26c8211d2dba4ef75261b353a01da0932698b5bebd693f27.tr.png
new file mode 100644
index 00000000..36a0bed7
Binary files /dev/null and b/translated_images/counterfit-humidity-sensor.7b12f7f339e430cb26c8211d2dba4ef75261b353a01da0932698b5bebd693f27.tr.png differ
diff --git a/translated_images/counterfit-led.c0ab02de6d256ad84d9bad4d67a7faa709f0ea83e410cfe9b5561ef0cef30b1c.br.png b/translated_images/counterfit-led.c0ab02de6d256ad84d9bad4d67a7faa709f0ea83e410cfe9b5561ef0cef30b1c.br.png
new file mode 100644
index 00000000..43b82415
Binary files /dev/null and b/translated_images/counterfit-led.c0ab02de6d256ad84d9bad4d67a7faa709f0ea83e410cfe9b5561ef0cef30b1c.br.png differ
diff --git a/translated_images/counterfit-led.c0ab02de6d256ad84d9bad4d67a7faa709f0ea83e410cfe9b5561ef0cef30b1c.tr.png b/translated_images/counterfit-led.c0ab02de6d256ad84d9bad4d67a7faa709f0ea83e410cfe9b5561ef0cef30b1c.tr.png
new file mode 100644
index 00000000..43b82415
Binary files /dev/null and b/translated_images/counterfit-led.c0ab02de6d256ad84d9bad4d67a7faa709f0ea83e410cfe9b5561ef0cef30b1c.tr.png differ
diff --git a/translated_images/counterfit-light-sensor.5d0f5584df56b90f6b2561910d9cb20dfbd73eeff2177c238d38f4de54aefae1.br.png b/translated_images/counterfit-light-sensor.5d0f5584df56b90f6b2561910d9cb20dfbd73eeff2177c238d38f4de54aefae1.br.png
new file mode 100644
index 00000000..9f42e92d
Binary files /dev/null and b/translated_images/counterfit-light-sensor.5d0f5584df56b90f6b2561910d9cb20dfbd73eeff2177c238d38f4de54aefae1.br.png differ
diff --git a/translated_images/counterfit-light-sensor.5d0f5584df56b90f6b2561910d9cb20dfbd73eeff2177c238d38f4de54aefae1.tr.png b/translated_images/counterfit-light-sensor.5d0f5584df56b90f6b2561910d9cb20dfbd73eeff2177c238d38f4de54aefae1.tr.png
new file mode 100644
index 00000000..9f42e92d
Binary files /dev/null and b/translated_images/counterfit-light-sensor.5d0f5584df56b90f6b2561910d9cb20dfbd73eeff2177c238d38f4de54aefae1.tr.png differ
diff --git a/translated_images/counterfit-relay.bbf74c1dbdc8b9acd983367fcbd06703a402aefef6af54ddb28e11307ba8a12c.br.png b/translated_images/counterfit-relay.bbf74c1dbdc8b9acd983367fcbd06703a402aefef6af54ddb28e11307ba8a12c.br.png
new file mode 100644
index 00000000..91118b35
Binary files /dev/null and b/translated_images/counterfit-relay.bbf74c1dbdc8b9acd983367fcbd06703a402aefef6af54ddb28e11307ba8a12c.br.png differ
diff --git a/translated_images/counterfit-relay.bbf74c1dbdc8b9acd983367fcbd06703a402aefef6af54ddb28e11307ba8a12c.tr.png b/translated_images/counterfit-relay.bbf74c1dbdc8b9acd983367fcbd06703a402aefef6af54ddb28e11307ba8a12c.tr.png
new file mode 100644
index 00000000..91118b35
Binary files /dev/null and b/translated_images/counterfit-relay.bbf74c1dbdc8b9acd983367fcbd06703a402aefef6af54ddb28e11307ba8a12c.tr.png differ
diff --git a/translated_images/counterfit-soil-moisture-sensor.81742b2de0e9de60a3b3b9a2ff8ecc686d428eb6d71820f27a693be26e5aceee.br.png b/translated_images/counterfit-soil-moisture-sensor.81742b2de0e9de60a3b3b9a2ff8ecc686d428eb6d71820f27a693be26e5aceee.br.png
new file mode 100644
index 00000000..c1074a8e
Binary files /dev/null and b/translated_images/counterfit-soil-moisture-sensor.81742b2de0e9de60a3b3b9a2ff8ecc686d428eb6d71820f27a693be26e5aceee.br.png differ
diff --git a/translated_images/counterfit-soil-moisture-sensor.81742b2de0e9de60a3b3b9a2ff8ecc686d428eb6d71820f27a693be26e5aceee.tr.png b/translated_images/counterfit-soil-moisture-sensor.81742b2de0e9de60a3b3b9a2ff8ecc686d428eb6d71820f27a693be26e5aceee.tr.png
new file mode 100644
index 00000000..c1074a8e
Binary files /dev/null and b/translated_images/counterfit-soil-moisture-sensor.81742b2de0e9de60a3b3b9a2ff8ecc686d428eb6d71820f27a693be26e5aceee.tr.png differ
diff --git a/translated_images/counterfit-temperature-sensor.f0560236c96a9016bafce7f6f792476fe3367bc6941a1f7d5811d144d4bcbfff.br.png b/translated_images/counterfit-temperature-sensor.f0560236c96a9016bafce7f6f792476fe3367bc6941a1f7d5811d144d4bcbfff.br.png
new file mode 100644
index 00000000..a4cca4dc
Binary files /dev/null and b/translated_images/counterfit-temperature-sensor.f0560236c96a9016bafce7f6f792476fe3367bc6941a1f7d5811d144d4bcbfff.br.png differ
diff --git a/translated_images/counterfit-temperature-sensor.f0560236c96a9016bafce7f6f792476fe3367bc6941a1f7d5811d144d4bcbfff.tr.png b/translated_images/counterfit-temperature-sensor.f0560236c96a9016bafce7f6f792476fe3367bc6941a1f7d5811d144d4bcbfff.tr.png
new file mode 100644
index 00000000..a4cca4dc
Binary files /dev/null and b/translated_images/counterfit-temperature-sensor.f0560236c96a9016bafce7f6f792476fe3367bc6941a1f7d5811d144d4bcbfff.tr.png differ
diff --git a/translated_images/custom-vision-banana-prediction.30cdff4e1d72db5d9a0be0193790a47c2b387da034e12dc1314dd57ca2131b59.br.png b/translated_images/custom-vision-banana-prediction.30cdff4e1d72db5d9a0be0193790a47c2b387da034e12dc1314dd57ca2131b59.br.png
new file mode 100644
index 00000000..1dd02459
Binary files /dev/null and b/translated_images/custom-vision-banana-prediction.30cdff4e1d72db5d9a0be0193790a47c2b387da034e12dc1314dd57ca2131b59.br.png differ
diff --git a/translated_images/custom-vision-banana-prediction.30cdff4e1d72db5d9a0be0193790a47c2b387da034e12dc1314dd57ca2131b59.tr.png b/translated_images/custom-vision-banana-prediction.30cdff4e1d72db5d9a0be0193790a47c2b387da034e12dc1314dd57ca2131b59.tr.png
new file mode 100644
index 00000000..1dd02459
Binary files /dev/null and b/translated_images/custom-vision-banana-prediction.30cdff4e1d72db5d9a0be0193790a47c2b387da034e12dc1314dd57ca2131b59.tr.png differ
diff --git a/translated_images/custom-vision-create-object-detector-project.32d4fb9aa8e7e7375f8a799bfce517aca970f2cb65e42d4245c5e635c734ab29.br.png b/translated_images/custom-vision-create-object-detector-project.32d4fb9aa8e7e7375f8a799bfce517aca970f2cb65e42d4245c5e635c734ab29.br.png
new file mode 100644
index 00000000..64ba974b
Binary files /dev/null and b/translated_images/custom-vision-create-object-detector-project.32d4fb9aa8e7e7375f8a799bfce517aca970f2cb65e42d4245c5e635c734ab29.br.png differ
diff --git a/translated_images/custom-vision-create-object-detector-project.32d4fb9aa8e7e7375f8a799bfce517aca970f2cb65e42d4245c5e635c734ab29.tr.png b/translated_images/custom-vision-create-object-detector-project.32d4fb9aa8e7e7375f8a799bfce517aca970f2cb65e42d4245c5e635c734ab29.tr.png
new file mode 100644
index 00000000..64ba974b
Binary files /dev/null and b/translated_images/custom-vision-create-object-detector-project.32d4fb9aa8e7e7375f8a799bfce517aca970f2cb65e42d4245c5e635c734ab29.tr.png differ
diff --git a/translated_images/custom-vision-create-project.cf46325b92d8b131089f6647cf5e07b664cb77850e106d66e3c057b6b69756c6.br.png b/translated_images/custom-vision-create-project.cf46325b92d8b131089f6647cf5e07b664cb77850e106d66e3c057b6b69756c6.br.png
new file mode 100644
index 00000000..fd3d1f9b
Binary files /dev/null and b/translated_images/custom-vision-create-project.cf46325b92d8b131089f6647cf5e07b664cb77850e106d66e3c057b6b69756c6.br.png differ
diff --git a/translated_images/custom-vision-create-project.cf46325b92d8b131089f6647cf5e07b664cb77850e106d66e3c057b6b69756c6.tr.png b/translated_images/custom-vision-create-project.cf46325b92d8b131089f6647cf5e07b664cb77850e106d66e3c057b6b69756c6.tr.png
new file mode 100644
index 00000000..fd3d1f9b
Binary files /dev/null and b/translated_images/custom-vision-create-project.cf46325b92d8b131089f6647cf5e07b664cb77850e106d66e3c057b6b69756c6.tr.png differ
diff --git a/translated_images/custom-vision-logo.d3d4e7c8a87ec9daf825e72e210576c3cbf60312577be7a139e22dd97ab7f1e6.br.png b/translated_images/custom-vision-logo.d3d4e7c8a87ec9daf825e72e210576c3cbf60312577be7a139e22dd97ab7f1e6.br.png
new file mode 100644
index 00000000..f523159b
Binary files /dev/null and b/translated_images/custom-vision-logo.d3d4e7c8a87ec9daf825e72e210576c3cbf60312577be7a139e22dd97ab7f1e6.br.png differ
diff --git a/translated_images/custom-vision-logo.d3d4e7c8a87ec9daf825e72e210576c3cbf60312577be7a139e22dd97ab7f1e6.tr.png b/translated_images/custom-vision-logo.d3d4e7c8a87ec9daf825e72e210576c3cbf60312577be7a139e22dd97ab7f1e6.tr.png
new file mode 100644
index 00000000..f523159b
Binary files /dev/null and b/translated_images/custom-vision-logo.d3d4e7c8a87ec9daf825e72e210576c3cbf60312577be7a139e22dd97ab7f1e6.tr.png differ
diff --git a/translated_images/custom-vision-object-detector-publish-button.34ee379fc650ccb9856c3868d0003f413b9529f102fc73c37168c98d721cc293.br.png b/translated_images/custom-vision-object-detector-publish-button.34ee379fc650ccb9856c3868d0003f413b9529f102fc73c37168c98d721cc293.br.png
new file mode 100644
index 00000000..70a9bacf
Binary files /dev/null and b/translated_images/custom-vision-object-detector-publish-button.34ee379fc650ccb9856c3868d0003f413b9529f102fc73c37168c98d721cc293.br.png differ
diff --git a/translated_images/custom-vision-object-detector-publish-button.34ee379fc650ccb9856c3868d0003f413b9529f102fc73c37168c98d721cc293.tr.png b/translated_images/custom-vision-object-detector-publish-button.34ee379fc650ccb9856c3868d0003f413b9529f102fc73c37168c98d721cc293.tr.png
new file mode 100644
index 00000000..70a9bacf
Binary files /dev/null and b/translated_images/custom-vision-object-detector-publish-button.34ee379fc650ccb9856c3868d0003f413b9529f102fc73c37168c98d721cc293.tr.png differ
diff --git a/translated_images/custom-vision-prediction-key-endpoint.30c569ffd0338864f319911f052d5e9b8c5066cb0800a26dd6f7ff5713130ad8.br.png b/translated_images/custom-vision-prediction-key-endpoint.30c569ffd0338864f319911f052d5e9b8c5066cb0800a26dd6f7ff5713130ad8.br.png
new file mode 100644
index 00000000..9e30ab1c
Binary files /dev/null and b/translated_images/custom-vision-prediction-key-endpoint.30c569ffd0338864f319911f052d5e9b8c5066cb0800a26dd6f7ff5713130ad8.br.png differ
diff --git a/translated_images/custom-vision-prediction-key-endpoint.30c569ffd0338864f319911f052d5e9b8c5066cb0800a26dd6f7ff5713130ad8.tr.png b/translated_images/custom-vision-prediction-key-endpoint.30c569ffd0338864f319911f052d5e9b8c5066cb0800a26dd6f7ff5713130ad8.tr.png
new file mode 100644
index 00000000..9e30ab1c
Binary files /dev/null and b/translated_images/custom-vision-prediction-key-endpoint.30c569ffd0338864f319911f052d5e9b8c5066cb0800a26dd6f7ff5713130ad8.tr.png differ
diff --git a/translated_images/custom-vision-publish-button.b7174e1977b0c33b8b72d4e5b1326c779e0af196f3849d09985ee2d7d5493a39.br.png b/translated_images/custom-vision-publish-button.b7174e1977b0c33b8b72d4e5b1326c779e0af196f3849d09985ee2d7d5493a39.br.png
new file mode 100644
index 00000000..e9f61adc
Binary files /dev/null and b/translated_images/custom-vision-publish-button.b7174e1977b0c33b8b72d4e5b1326c779e0af196f3849d09985ee2d7d5493a39.br.png differ
diff --git a/translated_images/custom-vision-publish-button.b7174e1977b0c33b8b72d4e5b1326c779e0af196f3849d09985ee2d7d5493a39.tr.png b/translated_images/custom-vision-publish-button.b7174e1977b0c33b8b72d4e5b1326c779e0af196f3849d09985ee2d7d5493a39.tr.png
new file mode 100644
index 00000000..e9f61adc
Binary files /dev/null and b/translated_images/custom-vision-publish-button.b7174e1977b0c33b8b72d4e5b1326c779e0af196f3849d09985ee2d7d5493a39.tr.png differ
diff --git a/translated_images/custom-vision-stock-prediction.942266ab1bcca3410ecdf23643b9f5f570cfab2345235074e24c51f285777613.br.png b/translated_images/custom-vision-stock-prediction.942266ab1bcca3410ecdf23643b9f5f570cfab2345235074e24c51f285777613.br.png
new file mode 100644
index 00000000..a54521f7
Binary files /dev/null and b/translated_images/custom-vision-stock-prediction.942266ab1bcca3410ecdf23643b9f5f570cfab2345235074e24c51f285777613.br.png differ
diff --git a/translated_images/custom-vision-stock-prediction.942266ab1bcca3410ecdf23643b9f5f570cfab2345235074e24c51f285777613.tr.png b/translated_images/custom-vision-stock-prediction.942266ab1bcca3410ecdf23643b9f5f570cfab2345235074e24c51f285777613.tr.png
new file mode 100644
index 00000000..a54521f7
Binary files /dev/null and b/translated_images/custom-vision-stock-prediction.942266ab1bcca3410ecdf23643b9f5f570cfab2345235074e24c51f285777613.tr.png differ
diff --git a/translated_images/dimmable-light.9ceffeb195dec1a849da718b2d71b32c35171ff7dfea9c07bbf82646a67acf6b.br.png b/translated_images/dimmable-light.9ceffeb195dec1a849da718b2d71b32c35171ff7dfea9c07bbf82646a67acf6b.br.png
new file mode 100644
index 00000000..6981df8a
Binary files /dev/null and b/translated_images/dimmable-light.9ceffeb195dec1a849da718b2d71b32c35171ff7dfea9c07bbf82646a67acf6b.br.png differ
diff --git a/translated_images/dimmable-light.9ceffeb195dec1a849da718b2d71b32c35171ff7dfea9c07bbf82646a67acf6b.tr.png b/translated_images/dimmable-light.9ceffeb195dec1a849da718b2d71b32c35171ff7dfea9c07bbf82646a67acf6b.tr.png
new file mode 100644
index 00000000..6981df8a
Binary files /dev/null and b/translated_images/dimmable-light.9ceffeb195dec1a849da718b2d71b32c35171ff7dfea9c07bbf82646a67acf6b.tr.png differ
diff --git a/translated_images/dmac-adc-buffers.4509aee49145c90bc2e1be472b8ed2ddfcb2b6a81ad3e559114aca55f5fff759.br.png b/translated_images/dmac-adc-buffers.4509aee49145c90bc2e1be472b8ed2ddfcb2b6a81ad3e559114aca55f5fff759.br.png
new file mode 100644
index 00000000..2722c065
Binary files /dev/null and b/translated_images/dmac-adc-buffers.4509aee49145c90bc2e1be472b8ed2ddfcb2b6a81ad3e559114aca55f5fff759.br.png differ
diff --git a/translated_images/dmac-adc-buffers.4509aee49145c90bc2e1be472b8ed2ddfcb2b6a81ad3e559114aca55f5fff759.tr.png b/translated_images/dmac-adc-buffers.4509aee49145c90bc2e1be472b8ed2ddfcb2b6a81ad3e559114aca55f5fff759.tr.png
new file mode 100644
index 00000000..2722c065
Binary files /dev/null and b/translated_images/dmac-adc-buffers.4509aee49145c90bc2e1be472b8ed2ddfcb2b6a81ad3e559114aca55f5fff759.tr.png differ
diff --git a/translated_images/dynamic-mic.8babac890a2d80dfb0874b5bf37d4b851fe2aeb9da6fd72945746176978bf3bb.br.jpg b/translated_images/dynamic-mic.8babac890a2d80dfb0874b5bf37d4b851fe2aeb9da6fd72945746176978bf3bb.br.jpg
new file mode 100644
index 00000000..cce2a759
Binary files /dev/null and b/translated_images/dynamic-mic.8babac890a2d80dfb0874b5bf37d4b851fe2aeb9da6fd72945746176978bf3bb.br.jpg differ
diff --git a/translated_images/dynamic-mic.8babac890a2d80dfb0874b5bf37d4b851fe2aeb9da6fd72945746176978bf3bb.tr.jpg b/translated_images/dynamic-mic.8babac890a2d80dfb0874b5bf37d4b851fe2aeb9da6fd72945746176978bf3bb.tr.jpg
new file mode 100644
index 00000000..cce2a759
Binary files /dev/null and b/translated_images/dynamic-mic.8babac890a2d80dfb0874b5bf37d4b851fe2aeb9da6fd72945746176978bf3bb.tr.jpg differ
diff --git a/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.br.png b/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.br.png
new file mode 100644
index 00000000..26e0ae43
Binary files /dev/null and b/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.br.png differ
diff --git a/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.tr.png b/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.tr.png
new file mode 100644
index 00000000..26e0ae43
Binary files /dev/null and b/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.tr.png differ
diff --git a/translated_images/fetch-decode-execute.2fd6f150f6280392807f4475382319abd0cee0b90058e1735444d6baa6f2078c.br.png b/translated_images/fetch-decode-execute.2fd6f150f6280392807f4475382319abd0cee0b90058e1735444d6baa6f2078c.br.png
new file mode 100644
index 00000000..a5d549fd
Binary files /dev/null and b/translated_images/fetch-decode-execute.2fd6f150f6280392807f4475382319abd0cee0b90058e1735444d6baa6f2078c.br.png differ
diff --git a/translated_images/fetch-decode-execute.2fd6f150f6280392807f4475382319abd0cee0b90058e1735444d6baa6f2078c.tr.png b/translated_images/fetch-decode-execute.2fd6f150f6280392807f4475382319abd0cee0b90058e1735444d6baa6f2078c.tr.png
new file mode 100644
index 00000000..a5d549fd
Binary files /dev/null and b/translated_images/fetch-decode-execute.2fd6f150f6280392807f4475382319abd0cee0b90058e1735444d6baa6f2078c.tr.png differ
diff --git a/translated_images/fruit-quality-detector-message-flow.adf2a65da8fd8741ac7af11361574de89adc126785d67606bb4d2ec00467e380.br.png b/translated_images/fruit-quality-detector-message-flow.adf2a65da8fd8741ac7af11361574de89adc126785d67606bb4d2ec00467e380.br.png
new file mode 100644
index 00000000..a251745c
Binary files /dev/null and b/translated_images/fruit-quality-detector-message-flow.adf2a65da8fd8741ac7af11361574de89adc126785d67606bb4d2ec00467e380.br.png differ
diff --git a/translated_images/fruit-quality-detector-message-flow.adf2a65da8fd8741ac7af11361574de89adc126785d67606bb4d2ec00467e380.tr.png b/translated_images/fruit-quality-detector-message-flow.adf2a65da8fd8741ac7af11361574de89adc126785d67606bb4d2ec00467e380.tr.png
new file mode 100644
index 00000000..a251745c
Binary files /dev/null and b/translated_images/fruit-quality-detector-message-flow.adf2a65da8fd8741ac7af11361574de89adc126785d67606bb4d2ec00467e380.tr.png differ
diff --git a/translated_images/gdd-calculation-corn.64a58b7a7afcd0dfd46ff733996d939f17f4f3feac9f0d1c632be3523e51ebd9.br.png b/translated_images/gdd-calculation-corn.64a58b7a7afcd0dfd46ff733996d939f17f4f3feac9f0d1c632be3523e51ebd9.br.png
new file mode 100644
index 00000000..bb97d28e
Binary files /dev/null and b/translated_images/gdd-calculation-corn.64a58b7a7afcd0dfd46ff733996d939f17f4f3feac9f0d1c632be3523e51ebd9.br.png differ
diff --git a/translated_images/gdd-calculation-corn.64a58b7a7afcd0dfd46ff733996d939f17f4f3feac9f0d1c632be3523e51ebd9.tr.png b/translated_images/gdd-calculation-corn.64a58b7a7afcd0dfd46ff733996d939f17f4f3feac9f0d1c632be3523e51ebd9.tr.png
new file mode 100644
index 00000000..bb97d28e
Binary files /dev/null and b/translated_images/gdd-calculation-corn.64a58b7a7afcd0dfd46ff733996d939f17f4f3feac9f0d1c632be3523e51ebd9.tr.png differ
diff --git a/translated_images/gdd-calculation-strawberries.59f57db94b22adb8ff6efb951ace33af104a1c6ccca3ffb0f8169c14cb160c90.br.png b/translated_images/gdd-calculation-strawberries.59f57db94b22adb8ff6efb951ace33af104a1c6ccca3ffb0f8169c14cb160c90.br.png
new file mode 100644
index 00000000..e34dea22
Binary files /dev/null and b/translated_images/gdd-calculation-strawberries.59f57db94b22adb8ff6efb951ace33af104a1c6ccca3ffb0f8169c14cb160c90.br.png differ
diff --git a/translated_images/gdd-calculation-strawberries.59f57db94b22adb8ff6efb951ace33af104a1c6ccca3ffb0f8169c14cb160c90.tr.png b/translated_images/gdd-calculation-strawberries.59f57db94b22adb8ff6efb951ace33af104a1c6ccca3ffb0f8169c14cb160c90.tr.png
new file mode 100644
index 00000000..e34dea22
Binary files /dev/null and b/translated_images/gdd-calculation-strawberries.59f57db94b22adb8ff6efb951ace33af104a1c6ccca3ffb0f8169c14cb160c90.tr.png differ
diff --git a/translated_images/gdd-calculation.79b3660f9c5757aa92dc2dd2cdde75344e2d2c1565c4b3151640f7887edc0275.br.png b/translated_images/gdd-calculation.79b3660f9c5757aa92dc2dd2cdde75344e2d2c1565c4b3151640f7887edc0275.br.png
new file mode 100644
index 00000000..fa863501
Binary files /dev/null and b/translated_images/gdd-calculation.79b3660f9c5757aa92dc2dd2cdde75344e2d2c1565c4b3151640f7887edc0275.br.png differ
diff --git a/translated_images/gdd-calculation.79b3660f9c5757aa92dc2dd2cdde75344e2d2c1565c4b3151640f7887edc0275.tr.png b/translated_images/gdd-calculation.79b3660f9c5757aa92dc2dd2cdde75344e2d2c1565c4b3151640f7887edc0275.tr.png
new file mode 100644
index 00000000..fa863501
Binary files /dev/null and b/translated_images/gdd-calculation.79b3660f9c5757aa92dc2dd2cdde75344e2d2c1565c4b3151640f7887edc0275.tr.png differ
diff --git a/translated_images/gdd-jupyter-notebook.c5b52cf21094f158a61f47f455490fd95f1729777ff90861a4521820bf354cdc.br.png b/translated_images/gdd-jupyter-notebook.c5b52cf21094f158a61f47f455490fd95f1729777ff90861a4521820bf354cdc.br.png
new file mode 100644
index 00000000..0d0e0c48
Binary files /dev/null and b/translated_images/gdd-jupyter-notebook.c5b52cf21094f158a61f47f455490fd95f1729777ff90861a4521820bf354cdc.br.png differ
diff --git a/translated_images/gdd-jupyter-notebook.c5b52cf21094f158a61f47f455490fd95f1729777ff90861a4521820bf354cdc.tr.png b/translated_images/gdd-jupyter-notebook.c5b52cf21094f158a61f47f455490fd95f1729777ff90861a4521820bf354cdc.tr.png
new file mode 100644
index 00000000..0d0e0c48
Binary files /dev/null and b/translated_images/gdd-jupyter-notebook.c5b52cf21094f158a61f47f455490fd95f1729777ff90861a4521820bf354cdc.tr.png differ
diff --git a/translated_images/geofence-crossing-inaccurate-gps.6a3ed911202ad9cabb66d3964888cec03a42c61d5b8f536ad5bdc99716b370f5.br.png b/translated_images/geofence-crossing-inaccurate-gps.6a3ed911202ad9cabb66d3964888cec03a42c61d5b8f536ad5bdc99716b370f5.br.png
new file mode 100644
index 00000000..6f79a498
Binary files /dev/null and b/translated_images/geofence-crossing-inaccurate-gps.6a3ed911202ad9cabb66d3964888cec03a42c61d5b8f536ad5bdc99716b370f5.br.png differ
diff --git a/translated_images/geofence-crossing-inaccurate-gps.6a3ed911202ad9cabb66d3964888cec03a42c61d5b8f536ad5bdc99716b370f5.tr.png b/translated_images/geofence-crossing-inaccurate-gps.6a3ed911202ad9cabb66d3964888cec03a42c61d5b8f536ad5bdc99716b370f5.tr.png
new file mode 100644
index 00000000..6f79a498
Binary files /dev/null and b/translated_images/geofence-crossing-inaccurate-gps.6a3ed911202ad9cabb66d3964888cec03a42c61d5b8f536ad5bdc99716b370f5.tr.png differ
diff --git a/translated_images/geofence-examples.172fbc534665769f6e1a1ddcf75e3b25183cd10354c80cc603ba44b635390e1a.br.png b/translated_images/geofence-examples.172fbc534665769f6e1a1ddcf75e3b25183cd10354c80cc603ba44b635390e1a.br.png
new file mode 100644
index 00000000..8527d4cd
Binary files /dev/null and b/translated_images/geofence-examples.172fbc534665769f6e1a1ddcf75e3b25183cd10354c80cc603ba44b635390e1a.br.png differ
diff --git a/translated_images/geofence-examples.172fbc534665769f6e1a1ddcf75e3b25183cd10354c80cc603ba44b635390e1a.tr.png b/translated_images/geofence-examples.172fbc534665769f6e1a1ddcf75e3b25183cd10354c80cc603ba44b635390e1a.tr.png
new file mode 100644
index 00000000..8527d4cd
Binary files /dev/null and b/translated_images/geofence-examples.172fbc534665769f6e1a1ddcf75e3b25183cd10354c80cc603ba44b635390e1a.tr.png differ
diff --git a/translated_images/gps-satellites.04acf1148fe25fbf1586bc2e8ba698e8d79b79a50c36824b38417dd13372b90f.br.png b/translated_images/gps-satellites.04acf1148fe25fbf1586bc2e8ba698e8d79b79a50c36824b38417dd13372b90f.br.png
new file mode 100644
index 00000000..8597bf4d
Binary files /dev/null and b/translated_images/gps-satellites.04acf1148fe25fbf1586bc2e8ba698e8d79b79a50c36824b38417dd13372b90f.br.png differ
diff --git a/translated_images/gps-satellites.04acf1148fe25fbf1586bc2e8ba698e8d79b79a50c36824b38417dd13372b90f.tr.png b/translated_images/gps-satellites.04acf1148fe25fbf1586bc2e8ba698e8d79b79a50c36824b38417dd13372b90f.tr.png
new file mode 100644
index 00000000..8597bf4d
Binary files /dev/null and b/translated_images/gps-satellites.04acf1148fe25fbf1586bc2e8ba698e8d79b79a50c36824b38417dd13372b90f.tr.png differ
diff --git a/translated_images/gps-telemetry-iot-hub-functions.24d3fa5592455e9f4e2fe73856b40c3915a292b90263c31d652acfd976cfedd8.br.png b/translated_images/gps-telemetry-iot-hub-functions.24d3fa5592455e9f4e2fe73856b40c3915a292b90263c31d652acfd976cfedd8.br.png
new file mode 100644
index 00000000..3bf24358
Binary files /dev/null and b/translated_images/gps-telemetry-iot-hub-functions.24d3fa5592455e9f4e2fe73856b40c3915a292b90263c31d652acfd976cfedd8.br.png differ
diff --git a/translated_images/gps-telemetry-iot-hub-functions.24d3fa5592455e9f4e2fe73856b40c3915a292b90263c31d652acfd976cfedd8.tr.png b/translated_images/gps-telemetry-iot-hub-functions.24d3fa5592455e9f4e2fe73856b40c3915a292b90263c31d652acfd976cfedd8.tr.png
new file mode 100644
index 00000000..3bf24358
Binary files /dev/null and b/translated_images/gps-telemetry-iot-hub-functions.24d3fa5592455e9f4e2fe73856b40c3915a292b90263c31d652acfd976cfedd8.tr.png differ
diff --git a/translated_images/gps-telemetry-iot-hub.8115335d51cd2c1285d20e9d1b18cf685e59a8e093e7797291ef173445af6f3d.br.png b/translated_images/gps-telemetry-iot-hub.8115335d51cd2c1285d20e9d1b18cf685e59a8e093e7797291ef173445af6f3d.br.png
new file mode 100644
index 00000000..562f66d2
Binary files /dev/null and b/translated_images/gps-telemetry-iot-hub.8115335d51cd2c1285d20e9d1b18cf685e59a8e093e7797291ef173445af6f3d.br.png differ
diff --git a/translated_images/gps-telemetry-iot-hub.8115335d51cd2c1285d20e9d1b18cf685e59a8e093e7797291ef173445af6f3d.tr.png b/translated_images/gps-telemetry-iot-hub.8115335d51cd2c1285d20e9d1b18cf685e59a8e093e7797291ef173445af6f3d.tr.png
new file mode 100644
index 00000000..562f66d2
Binary files /dev/null and b/translated_images/gps-telemetry-iot-hub.8115335d51cd2c1285d20e9d1b18cf685e59a8e093e7797291ef173445af6f3d.tr.png differ
diff --git a/translated_images/grove-base-hat-ribbon-cable.501fed202fcf73b11b2b68f6d246189f7d15d3e4423c572ddee79d77b4632b47.br.png b/translated_images/grove-base-hat-ribbon-cable.501fed202fcf73b11b2b68f6d246189f7d15d3e4423c572ddee79d77b4632b47.br.png
new file mode 100644
index 00000000..2f50d53a
Binary files /dev/null and b/translated_images/grove-base-hat-ribbon-cable.501fed202fcf73b11b2b68f6d246189f7d15d3e4423c572ddee79d77b4632b47.br.png differ
diff --git a/translated_images/grove-base-hat-ribbon-cable.501fed202fcf73b11b2b68f6d246189f7d15d3e4423c572ddee79d77b4632b47.tr.png b/translated_images/grove-base-hat-ribbon-cable.501fed202fcf73b11b2b68f6d246189f7d15d3e4423c572ddee79d77b4632b47.tr.png
new file mode 100644
index 00000000..2f50d53a
Binary files /dev/null and b/translated_images/grove-base-hat-ribbon-cable.501fed202fcf73b11b2b68f6d246189f7d15d3e4423c572ddee79d77b4632b47.tr.png differ
diff --git a/translated_images/grove-button.a70cfbb809a8563681003250cf5b06d68cdcc68624f9e2f493d5a534ae2da1e5.br.png b/translated_images/grove-button.a70cfbb809a8563681003250cf5b06d68cdcc68624f9e2f493d5a534ae2da1e5.br.png
new file mode 100644
index 00000000..de7f343e
Binary files /dev/null and b/translated_images/grove-button.a70cfbb809a8563681003250cf5b06d68cdcc68624f9e2f493d5a534ae2da1e5.br.png differ
diff --git a/translated_images/grove-button.a70cfbb809a8563681003250cf5b06d68cdcc68624f9e2f493d5a534ae2da1e5.tr.png b/translated_images/grove-button.a70cfbb809a8563681003250cf5b06d68cdcc68624f9e2f493d5a534ae2da1e5.tr.png
new file mode 100644
index 00000000..de7f343e
Binary files /dev/null and b/translated_images/grove-button.a70cfbb809a8563681003250cf5b06d68cdcc68624f9e2f493d5a534ae2da1e5.tr.png differ
diff --git a/translated_images/grove-capacitive-soil-moisture-sensor.e7f0776cce30e78be5cc5a07839385fd6718857f31b5bf5ad3d0c73c83b2f0ef.br.png b/translated_images/grove-capacitive-soil-moisture-sensor.e7f0776cce30e78be5cc5a07839385fd6718857f31b5bf5ad3d0c73c83b2f0ef.br.png
new file mode 100644
index 00000000..c8b1a544
Binary files /dev/null and b/translated_images/grove-capacitive-soil-moisture-sensor.e7f0776cce30e78be5cc5a07839385fd6718857f31b5bf5ad3d0c73c83b2f0ef.br.png differ
diff --git a/translated_images/grove-capacitive-soil-moisture-sensor.e7f0776cce30e78be5cc5a07839385fd6718857f31b5bf5ad3d0c73c83b2f0ef.tr.png b/translated_images/grove-capacitive-soil-moisture-sensor.e7f0776cce30e78be5cc5a07839385fd6718857f31b5bf5ad3d0c73c83b2f0ef.tr.png
new file mode 100644
index 00000000..c8b1a544
Binary files /dev/null and b/translated_images/grove-capacitive-soil-moisture-sensor.e7f0776cce30e78be5cc5a07839385fd6718857f31b5bf5ad3d0c73c83b2f0ef.tr.png differ
diff --git a/translated_images/grove-dht11.07f8eafceee170043efbb53e1d15722bd4e00fbaa9ff74290b57e9f66eb82c17.br.png b/translated_images/grove-dht11.07f8eafceee170043efbb53e1d15722bd4e00fbaa9ff74290b57e9f66eb82c17.br.png
new file mode 100644
index 00000000..17d1151d
Binary files /dev/null and b/translated_images/grove-dht11.07f8eafceee170043efbb53e1d15722bd4e00fbaa9ff74290b57e9f66eb82c17.br.png differ
diff --git a/translated_images/grove-dht11.07f8eafceee170043efbb53e1d15722bd4e00fbaa9ff74290b57e9f66eb82c17.tr.png b/translated_images/grove-dht11.07f8eafceee170043efbb53e1d15722bd4e00fbaa9ff74290b57e9f66eb82c17.tr.png
new file mode 100644
index 00000000..17d1151d
Binary files /dev/null and b/translated_images/grove-dht11.07f8eafceee170043efbb53e1d15722bd4e00fbaa9ff74290b57e9f66eb82c17.tr.png differ
diff --git a/translated_images/grove-gps-sensor.247943bf69b03f0d1820ef6ed10c587f9b650e8db55b936851c92412180bd3e2.br.png b/translated_images/grove-gps-sensor.247943bf69b03f0d1820ef6ed10c587f9b650e8db55b936851c92412180bd3e2.br.png
new file mode 100644
index 00000000..ffafc104
Binary files /dev/null and b/translated_images/grove-gps-sensor.247943bf69b03f0d1820ef6ed10c587f9b650e8db55b936851c92412180bd3e2.br.png differ
diff --git a/translated_images/grove-gps-sensor.247943bf69b03f0d1820ef6ed10c587f9b650e8db55b936851c92412180bd3e2.tr.png b/translated_images/grove-gps-sensor.247943bf69b03f0d1820ef6ed10c587f9b650e8db55b936851c92412180bd3e2.tr.png
new file mode 100644
index 00000000..ffafc104
Binary files /dev/null and b/translated_images/grove-gps-sensor.247943bf69b03f0d1820ef6ed10c587f9b650e8db55b936851c92412180bd3e2.tr.png differ
diff --git a/translated_images/grove-led.6c853be93f473cf2c439cfc74bb1064732b22251a83cedf66e62f783f9cc1a79.br.png b/translated_images/grove-led.6c853be93f473cf2c439cfc74bb1064732b22251a83cedf66e62f783f9cc1a79.br.png
new file mode 100644
index 00000000..e3d86f8c
Binary files /dev/null and b/translated_images/grove-led.6c853be93f473cf2c439cfc74bb1064732b22251a83cedf66e62f783f9cc1a79.br.png differ
diff --git a/translated_images/grove-led.6c853be93f473cf2c439cfc74bb1064732b22251a83cedf66e62f783f9cc1a79.tr.png b/translated_images/grove-led.6c853be93f473cf2c439cfc74bb1064732b22251a83cedf66e62f783f9cc1a79.tr.png
new file mode 100644
index 00000000..e3d86f8c
Binary files /dev/null and b/translated_images/grove-led.6c853be93f473cf2c439cfc74bb1064732b22251a83cedf66e62f783f9cc1a79.tr.png differ
diff --git a/translated_images/grove-light-sensor.b8127b7c434e632d6bcdb57587a14e9ef69a268a22df95d08628f62b8fa5505c.br.png b/translated_images/grove-light-sensor.b8127b7c434e632d6bcdb57587a14e9ef69a268a22df95d08628f62b8fa5505c.br.png
new file mode 100644
index 00000000..3a4445ee
Binary files /dev/null and b/translated_images/grove-light-sensor.b8127b7c434e632d6bcdb57587a14e9ef69a268a22df95d08628f62b8fa5505c.br.png differ
diff --git a/translated_images/grove-light-sensor.b8127b7c434e632d6bcdb57587a14e9ef69a268a22df95d08628f62b8fa5505c.tr.png b/translated_images/grove-light-sensor.b8127b7c434e632d6bcdb57587a14e9ef69a268a22df95d08628f62b8fa5505c.tr.png
new file mode 100644
index 00000000..3a4445ee
Binary files /dev/null and b/translated_images/grove-light-sensor.b8127b7c434e632d6bcdb57587a14e9ef69a268a22df95d08628f62b8fa5505c.tr.png differ
diff --git a/translated_images/grove-relay-labelled.293e068f5c3c2a199bd7892f2661fdc9e10c920b535cfed317fbd6d1d4ae1168.br.png b/translated_images/grove-relay-labelled.293e068f5c3c2a199bd7892f2661fdc9e10c920b535cfed317fbd6d1d4ae1168.br.png
new file mode 100644
index 00000000..b2bf4d3f
Binary files /dev/null and b/translated_images/grove-relay-labelled.293e068f5c3c2a199bd7892f2661fdc9e10c920b535cfed317fbd6d1d4ae1168.br.png differ
diff --git a/translated_images/grove-relay-labelled.293e068f5c3c2a199bd7892f2661fdc9e10c920b535cfed317fbd6d1d4ae1168.tr.png b/translated_images/grove-relay-labelled.293e068f5c3c2a199bd7892f2661fdc9e10c920b535cfed317fbd6d1d4ae1168.tr.png
new file mode 100644
index 00000000..b2bf4d3f
Binary files /dev/null and b/translated_images/grove-relay-labelled.293e068f5c3c2a199bd7892f2661fdc9e10c920b535cfed317fbd6d1d4ae1168.tr.png differ
diff --git a/translated_images/grove-relay.d426958ca210fbd0fb7983d7edc069d46c73a8b0a099d94797bd756f7b6bb6be.br.png b/translated_images/grove-relay.d426958ca210fbd0fb7983d7edc069d46c73a8b0a099d94797bd756f7b6bb6be.br.png
new file mode 100644
index 00000000..467cedcd
Binary files /dev/null and b/translated_images/grove-relay.d426958ca210fbd0fb7983d7edc069d46c73a8b0a099d94797bd756f7b6bb6be.br.png differ
diff --git a/translated_images/grove-relay.d426958ca210fbd0fb7983d7edc069d46c73a8b0a099d94797bd756f7b6bb6be.tr.png b/translated_images/grove-relay.d426958ca210fbd0fb7983d7edc069d46c73a8b0a099d94797bd756f7b6bb6be.tr.png
new file mode 100644
index 00000000..467cedcd
Binary files /dev/null and b/translated_images/grove-relay.d426958ca210fbd0fb7983d7edc069d46c73a8b0a099d94797bd756f7b6bb6be.tr.png differ
diff --git a/translated_images/grove-time-of-flight-sensor.d82ff2165bfded9f485de54d8d07195a6270a602696825fca19f629ddfe94e86.br.png b/translated_images/grove-time-of-flight-sensor.d82ff2165bfded9f485de54d8d07195a6270a602696825fca19f629ddfe94e86.br.png
new file mode 100644
index 00000000..88efaa59
Binary files /dev/null and b/translated_images/grove-time-of-flight-sensor.d82ff2165bfded9f485de54d8d07195a6270a602696825fca19f629ddfe94e86.br.png differ
diff --git a/translated_images/grove-time-of-flight-sensor.d82ff2165bfded9f485de54d8d07195a6270a602696825fca19f629ddfe94e86.tr.png b/translated_images/grove-time-of-flight-sensor.d82ff2165bfded9f485de54d8d07195a6270a602696825fca19f629ddfe94e86.tr.png
new file mode 100644
index 00000000..88efaa59
Binary files /dev/null and b/translated_images/grove-time-of-flight-sensor.d82ff2165bfded9f485de54d8d07195a6270a602696825fca19f629ddfe94e86.tr.png differ
diff --git a/translated_images/gsm-calculation-example.99f9803b4f29e97668e7c15412136c0c399ab12dbba0b89596fdae9d8aedb6fb.br.png b/translated_images/gsm-calculation-example.99f9803b4f29e97668e7c15412136c0c399ab12dbba0b89596fdae9d8aedb6fb.br.png
new file mode 100644
index 00000000..6197ed95
Binary files /dev/null and b/translated_images/gsm-calculation-example.99f9803b4f29e97668e7c15412136c0c399ab12dbba0b89596fdae9d8aedb6fb.br.png differ
diff --git a/translated_images/gsm-calculation-example.99f9803b4f29e97668e7c15412136c0c399ab12dbba0b89596fdae9d8aedb6fb.tr.png b/translated_images/gsm-calculation-example.99f9803b4f29e97668e7c15412136c0c399ab12dbba0b89596fdae9d8aedb6fb.tr.png
new file mode 100644
index 00000000..6197ed95
Binary files /dev/null and b/translated_images/gsm-calculation-example.99f9803b4f29e97668e7c15412136c0c399ab12dbba0b89596fdae9d8aedb6fb.tr.png differ
diff --git a/translated_images/gsm-calculation.6da38c6201eec14e7573bb2647aa18892883193553d23c9d77e5dc681522dfb2.br.png b/translated_images/gsm-calculation.6da38c6201eec14e7573bb2647aa18892883193553d23c9d77e5dc681522dfb2.br.png
new file mode 100644
index 00000000..ec7768da
Binary files /dev/null and b/translated_images/gsm-calculation.6da38c6201eec14e7573bb2647aa18892883193553d23c9d77e5dc681522dfb2.br.png differ
diff --git a/translated_images/gsm-calculation.6da38c6201eec14e7573bb2647aa18892883193553d23c9d77e5dc681522dfb2.tr.png b/translated_images/gsm-calculation.6da38c6201eec14e7573bb2647aa18892883193553d23c9d77e5dc681522dfb2.tr.png
new file mode 100644
index 00000000..ec7768da
Binary files /dev/null and b/translated_images/gsm-calculation.6da38c6201eec14e7573bb2647aa18892883193553d23c9d77e5dc681522dfb2.tr.png differ
diff --git a/translated_images/i2c.83da845dde02256bdd462dbe0d5145461416b74930571b89d1ae142841eeb584.br.png b/translated_images/i2c.83da845dde02256bdd462dbe0d5145461416b74930571b89d1ae142841eeb584.br.png
new file mode 100644
index 00000000..f68bf461
Binary files /dev/null and b/translated_images/i2c.83da845dde02256bdd462dbe0d5145461416b74930571b89d1ae142841eeb584.br.png differ
diff --git a/translated_images/i2c.83da845dde02256bdd462dbe0d5145461416b74930571b89d1ae142841eeb584.tr.png b/translated_images/i2c.83da845dde02256bdd462dbe0d5145461416b74930571b89d1ae142841eeb584.tr.png
new file mode 100644
index 00000000..f68bf461
Binary files /dev/null and b/translated_images/i2c.83da845dde02256bdd462dbe0d5145461416b74930571b89d1ae142841eeb584.tr.png differ
diff --git a/translated_images/image-classifier-cashews-tomato.bc2e16ab8f05cf9ac0f59f73e32efc4227f9a5b601b90b2c60f436694547a965.br.png b/translated_images/image-classifier-cashews-tomato.bc2e16ab8f05cf9ac0f59f73e32efc4227f9a5b601b90b2c60f436694547a965.br.png
new file mode 100644
index 00000000..73e34cfe
Binary files /dev/null and b/translated_images/image-classifier-cashews-tomato.bc2e16ab8f05cf9ac0f59f73e32efc4227f9a5b601b90b2c60f436694547a965.br.png differ
diff --git a/translated_images/image-classifier-cashews-tomato.bc2e16ab8f05cf9ac0f59f73e32efc4227f9a5b601b90b2c60f436694547a965.tr.png b/translated_images/image-classifier-cashews-tomato.bc2e16ab8f05cf9ac0f59f73e32efc4227f9a5b601b90b2c60f436694547a965.tr.png
new file mode 100644
index 00000000..73e34cfe
Binary files /dev/null and b/translated_images/image-classifier-cashews-tomato.bc2e16ab8f05cf9ac0f59f73e32efc4227f9a5b601b90b2c60f436694547a965.tr.png differ
diff --git a/translated_images/image-upload-bananas.0751639f3815e0ec42bdbc6254d1e4357a185834d1ae10c9948a0e7d6d336695.br.png b/translated_images/image-upload-bananas.0751639f3815e0ec42bdbc6254d1e4357a185834d1ae10c9948a0e7d6d336695.br.png
new file mode 100644
index 00000000..21cc6bd0
Binary files /dev/null and b/translated_images/image-upload-bananas.0751639f3815e0ec42bdbc6254d1e4357a185834d1ae10c9948a0e7d6d336695.br.png differ
diff --git a/translated_images/image-upload-bananas.0751639f3815e0ec42bdbc6254d1e4357a185834d1ae10c9948a0e7d6d336695.tr.png b/translated_images/image-upload-bananas.0751639f3815e0ec42bdbc6254d1e4357a185834d1ae10c9948a0e7d6d336695.tr.png
new file mode 100644
index 00000000..21cc6bd0
Binary files /dev/null and b/translated_images/image-upload-bananas.0751639f3815e0ec42bdbc6254d1e4357a185834d1ae10c9948a0e7d6d336695.tr.png differ
diff --git a/translated_images/image-upload-object-detector.77c7892c3093cb59b79018edecd678749a75d71a099bc8a2d2f2f76320f88a5b.br.png b/translated_images/image-upload-object-detector.77c7892c3093cb59b79018edecd678749a75d71a099bc8a2d2f2f76320f88a5b.br.png
new file mode 100644
index 00000000..9c7deb23
Binary files /dev/null and b/translated_images/image-upload-object-detector.77c7892c3093cb59b79018edecd678749a75d71a099bc8a2d2f2f76320f88a5b.br.png differ
diff --git a/translated_images/image-upload-object-detector.77c7892c3093cb59b79018edecd678749a75d71a099bc8a2d2f2f76320f88a5b.tr.png b/translated_images/image-upload-object-detector.77c7892c3093cb59b79018edecd678749a75d71a099bc8a2d2f2f76320f88a5b.tr.png
new file mode 100644
index 00000000..9c7deb23
Binary files /dev/null and b/translated_images/image-upload-object-detector.77c7892c3093cb59b79018edecd678749a75d71a099bc8a2d2f2f76320f88a5b.tr.png differ
diff --git a/translated_images/iot-device-and-hacked-device-connecting-encryption.5941aff601fc978f979e46f2849b573564eeb4a4dc5b52f669f62745397492fb.br.png b/translated_images/iot-device-and-hacked-device-connecting-encryption.5941aff601fc978f979e46f2849b573564eeb4a4dc5b52f669f62745397492fb.br.png
new file mode 100644
index 00000000..ddc9958b
Binary files /dev/null and b/translated_images/iot-device-and-hacked-device-connecting-encryption.5941aff601fc978f979e46f2849b573564eeb4a4dc5b52f669f62745397492fb.br.png differ
diff --git a/translated_images/iot-device-and-hacked-device-connecting-encryption.5941aff601fc978f979e46f2849b573564eeb4a4dc5b52f669f62745397492fb.tr.png b/translated_images/iot-device-and-hacked-device-connecting-encryption.5941aff601fc978f979e46f2849b573564eeb4a4dc5b52f669f62745397492fb.tr.png
new file mode 100644
index 00000000..ddc9958b
Binary files /dev/null and b/translated_images/iot-device-and-hacked-device-connecting-encryption.5941aff601fc978f979e46f2849b573564eeb4a4dc5b52f669f62745397492fb.tr.png differ
diff --git a/translated_images/iot-device-and-hacked-device-connecting.e0671675df74d6d99eb1dedb5a670e606f698efa6202b1ad4c8ae548db299cc6.br.png b/translated_images/iot-device-and-hacked-device-connecting.e0671675df74d6d99eb1dedb5a670e606f698efa6202b1ad4c8ae548db299cc6.br.png
new file mode 100644
index 00000000..d181210a
Binary files /dev/null and b/translated_images/iot-device-and-hacked-device-connecting.e0671675df74d6d99eb1dedb5a670e606f698efa6202b1ad4c8ae548db299cc6.br.png differ
diff --git a/translated_images/iot-device-and-hacked-device-connecting.e0671675df74d6d99eb1dedb5a670e606f698efa6202b1ad4c8ae548db299cc6.tr.png b/translated_images/iot-device-and-hacked-device-connecting.e0671675df74d6d99eb1dedb5a670e606f698efa6202b1ad4c8ae548db299cc6.tr.png
new file mode 100644
index 00000000..d181210a
Binary files /dev/null and b/translated_images/iot-device-and-hacked-device-connecting.e0671675df74d6d99eb1dedb5a670e606f698efa6202b1ad4c8ae548db299cc6.tr.png differ
diff --git a/translated_images/iot-for-beginners.95958e2ed1900917f0c2173dd725ae0a2c1af97b9a26e56c76d3c8c8925f32ee.br.png b/translated_images/iot-for-beginners.95958e2ed1900917f0c2173dd725ae0a2c1af97b9a26e56c76d3c8c8925f32ee.br.png
new file mode 100644
index 00000000..a00ab427
Binary files /dev/null and b/translated_images/iot-for-beginners.95958e2ed1900917f0c2173dd725ae0a2c1af97b9a26e56c76d3c8c8925f32ee.br.png differ
diff --git a/translated_images/iot-for-beginners.95958e2ed1900917f0c2173dd725ae0a2c1af97b9a26e56c76d3c8c8925f32ee.tr.png b/translated_images/iot-for-beginners.95958e2ed1900917f0c2173dd725ae0a2c1af97b9a26e56c76d3c8c8925f32ee.tr.png
new file mode 100644
index 00000000..a00ab427
Binary files /dev/null and b/translated_images/iot-for-beginners.95958e2ed1900917f0c2173dd725ae0a2c1af97b9a26e56c76d3c8c8925f32ee.tr.png differ
diff --git a/translated_images/iot-hub-cloud-to-device-message.f4f21fea772cc20ba15004d853b805f6c01b612d257df6295ed7618550308aaf.br.png b/translated_images/iot-hub-cloud-to-device-message.f4f21fea772cc20ba15004d853b805f6c01b612d257df6295ed7618550308aaf.br.png
new file mode 100644
index 00000000..dedb38a3
Binary files /dev/null and b/translated_images/iot-hub-cloud-to-device-message.f4f21fea772cc20ba15004d853b805f6c01b612d257df6295ed7618550308aaf.br.png differ
diff --git a/translated_images/iot-hub-cloud-to-device-message.f4f21fea772cc20ba15004d853b805f6c01b612d257df6295ed7618550308aaf.tr.png b/translated_images/iot-hub-cloud-to-device-message.f4f21fea772cc20ba15004d853b805f6c01b612d257df6295ed7618550308aaf.tr.png
new file mode 100644
index 00000000..dedb38a3
Binary files /dev/null and b/translated_images/iot-hub-cloud-to-device-message.f4f21fea772cc20ba15004d853b805f6c01b612d257df6295ed7618550308aaf.tr.png differ
diff --git a/translated_images/iot-hub-device-to-cloud-message.e46e584d87f35fd952657f0b566dcac59473fe960d87c96fa54a4b5438ddc31f.br.png b/translated_images/iot-hub-device-to-cloud-message.e46e584d87f35fd952657f0b566dcac59473fe960d87c96fa54a4b5438ddc31f.br.png
new file mode 100644
index 00000000..2b34487d
Binary files /dev/null and b/translated_images/iot-hub-device-to-cloud-message.e46e584d87f35fd952657f0b566dcac59473fe960d87c96fa54a4b5438ddc31f.br.png differ
diff --git a/translated_images/iot-hub-device-to-cloud-message.e46e584d87f35fd952657f0b566dcac59473fe960d87c96fa54a4b5438ddc31f.tr.png b/translated_images/iot-hub-device-to-cloud-message.e46e584d87f35fd952657f0b566dcac59473fe960d87c96fa54a4b5438ddc31f.tr.png
new file mode 100644
index 00000000..2b34487d
Binary files /dev/null and b/translated_images/iot-hub-device-to-cloud-message.e46e584d87f35fd952657f0b566dcac59473fe960d87c96fa54a4b5438ddc31f.tr.png differ
diff --git a/translated_images/iot-hub-device-twins.7055a60fc5e2331c44298ae157d72edec0022910b1a4bf4bc93f39c620878b68.br.png b/translated_images/iot-hub-device-twins.7055a60fc5e2331c44298ae157d72edec0022910b1a4bf4bc93f39c620878b68.br.png
new file mode 100644
index 00000000..1cae68ed
Binary files /dev/null and b/translated_images/iot-hub-device-twins.7055a60fc5e2331c44298ae157d72edec0022910b1a4bf4bc93f39c620878b68.br.png differ
diff --git a/translated_images/iot-hub-device-twins.7055a60fc5e2331c44298ae157d72edec0022910b1a4bf4bc93f39c620878b68.tr.png b/translated_images/iot-hub-device-twins.7055a60fc5e2331c44298ae157d72edec0022910b1a4bf4bc93f39c620878b68.tr.png
new file mode 100644
index 00000000..1cae68ed
Binary files /dev/null and b/translated_images/iot-hub-device-twins.7055a60fc5e2331c44298ae157d72edec0022910b1a4bf4bc93f39c620878b68.tr.png differ
diff --git a/translated_images/iot-hub-direct-method-request.86a5026e91f4ca1864e2043fab4b8199e42c2c6efc1209973cb56f199646b171.br.png b/translated_images/iot-hub-direct-method-request.86a5026e91f4ca1864e2043fab4b8199e42c2c6efc1209973cb56f199646b171.br.png
new file mode 100644
index 00000000..df961cae
Binary files /dev/null and b/translated_images/iot-hub-direct-method-request.86a5026e91f4ca1864e2043fab4b8199e42c2c6efc1209973cb56f199646b171.br.png differ
diff --git a/translated_images/iot-hub-direct-method-request.86a5026e91f4ca1864e2043fab4b8199e42c2c6efc1209973cb56f199646b171.tr.png b/translated_images/iot-hub-direct-method-request.86a5026e91f4ca1864e2043fab4b8199e42c2c6efc1209973cb56f199646b171.tr.png
new file mode 100644
index 00000000..df961cae
Binary files /dev/null and b/translated_images/iot-hub-direct-method-request.86a5026e91f4ca1864e2043fab4b8199e42c2c6efc1209973cb56f199646b171.tr.png differ
diff --git a/translated_images/iot-messages-to-serverless.0194da1cc0732bb7d0f823aed3fce54735c6b1ad3bf36089804d8aaefc0a774f.br.png b/translated_images/iot-messages-to-serverless.0194da1cc0732bb7d0f823aed3fce54735c6b1ad3bf36089804d8aaefc0a774f.br.png
new file mode 100644
index 00000000..aaeaeff8
Binary files /dev/null and b/translated_images/iot-messages-to-serverless.0194da1cc0732bb7d0f823aed3fce54735c6b1ad3bf36089804d8aaefc0a774f.br.png differ
diff --git a/translated_images/iot-messages-to-serverless.0194da1cc0732bb7d0f823aed3fce54735c6b1ad3bf36089804d8aaefc0a774f.tr.png b/translated_images/iot-messages-to-serverless.0194da1cc0732bb7d0f823aed3fce54735c6b1ad3bf36089804d8aaefc0a774f.tr.png
new file mode 100644
index 00000000..aaeaeff8
Binary files /dev/null and b/translated_images/iot-messages-to-serverless.0194da1cc0732bb7d0f823aed3fce54735c6b1ad3bf36089804d8aaefc0a774f.tr.png differ
diff --git a/translated_images/iot-reference-architecture-azure.0b8d2161af924cb18ae48a8558a19541cca47f27264851b5b7e56d7b8bb372ac.br.png b/translated_images/iot-reference-architecture-azure.0b8d2161af924cb18ae48a8558a19541cca47f27264851b5b7e56d7b8bb372ac.br.png
new file mode 100644
index 00000000..7613fe86
Binary files /dev/null and b/translated_images/iot-reference-architecture-azure.0b8d2161af924cb18ae48a8558a19541cca47f27264851b5b7e56d7b8bb372ac.br.png differ
diff --git a/translated_images/iot-reference-architecture-azure.0b8d2161af924cb18ae48a8558a19541cca47f27264851b5b7e56d7b8bb372ac.tr.png b/translated_images/iot-reference-architecture-azure.0b8d2161af924cb18ae48a8558a19541cca47f27264851b5b7e56d7b8bb372ac.tr.png
new file mode 100644
index 00000000..7613fe86
Binary files /dev/null and b/translated_images/iot-reference-architecture-azure.0b8d2161af924cb18ae48a8558a19541cca47f27264851b5b7e56d7b8bb372ac.tr.png differ
diff --git a/translated_images/iot-reference-architecture-fruit-quality.cc705f121c3b6fa71c800d9630935ac34bc08223a04601e35f41d5e9b5dd5207.br.png b/translated_images/iot-reference-architecture-fruit-quality.cc705f121c3b6fa71c800d9630935ac34bc08223a04601e35f41d5e9b5dd5207.br.png
new file mode 100644
index 00000000..335bdf32
Binary files /dev/null and b/translated_images/iot-reference-architecture-fruit-quality.cc705f121c3b6fa71c800d9630935ac34bc08223a04601e35f41d5e9b5dd5207.br.png differ
diff --git a/translated_images/iot-reference-architecture-fruit-quality.cc705f121c3b6fa71c800d9630935ac34bc08223a04601e35f41d5e9b5dd5207.tr.png b/translated_images/iot-reference-architecture-fruit-quality.cc705f121c3b6fa71c800d9630935ac34bc08223a04601e35f41d5e9b5dd5207.tr.png
new file mode 100644
index 00000000..335bdf32
Binary files /dev/null and b/translated_images/iot-reference-architecture-fruit-quality.cc705f121c3b6fa71c800d9630935ac34bc08223a04601e35f41d5e9b5dd5207.tr.png differ
diff --git a/translated_images/iot-reference-architecture.2278b98b55c6d4e89bde18eada3688d893861d43507641804dd2f9d3079cfaa0.br.png b/translated_images/iot-reference-architecture.2278b98b55c6d4e89bde18eada3688d893861d43507641804dd2f9d3079cfaa0.br.png
new file mode 100644
index 00000000..32c8ba10
Binary files /dev/null and b/translated_images/iot-reference-architecture.2278b98b55c6d4e89bde18eada3688d893861d43507641804dd2f9d3079cfaa0.br.png differ
diff --git a/translated_images/iot-reference-architecture.2278b98b55c6d4e89bde18eada3688d893861d43507641804dd2f9d3079cfaa0.tr.png b/translated_images/iot-reference-architecture.2278b98b55c6d4e89bde18eada3688d893861d43507641804dd2f9d3079cfaa0.tr.png
new file mode 100644
index 00000000..32c8ba10
Binary files /dev/null and b/translated_images/iot-reference-architecture.2278b98b55c6d4e89bde18eada3688d893861d43507641804dd2f9d3079cfaa0.tr.png differ
diff --git a/translated_images/iot-service-allowed-denied-connection.818b0063ac213fb84204a7229303764d9b467ca430fb822b4ac2fca267d56726.br.png b/translated_images/iot-service-allowed-denied-connection.818b0063ac213fb84204a7229303764d9b467ca430fb822b4ac2fca267d56726.br.png
new file mode 100644
index 00000000..82802e17
Binary files /dev/null and b/translated_images/iot-service-allowed-denied-connection.818b0063ac213fb84204a7229303764d9b467ca430fb822b4ac2fca267d56726.br.png differ
diff --git a/translated_images/iot-service-allowed-denied-connection.818b0063ac213fb84204a7229303764d9b467ca430fb822b4ac2fca267d56726.tr.png b/translated_images/iot-service-allowed-denied-connection.818b0063ac213fb84204a7229303764d9b467ca430fb822b4ac2fca267d56726.tr.png
new file mode 100644
index 00000000..82802e17
Binary files /dev/null and b/translated_images/iot-service-allowed-denied-connection.818b0063ac213fb84204a7229303764d9b467ca430fb822b4ac2fca267d56726.tr.png differ
diff --git a/translated_images/iot-service-connectivity.7e873847921a5d6fd60d0ba3a943210194518cee0d4e362476624316443275c3.br.png b/translated_images/iot-service-connectivity.7e873847921a5d6fd60d0ba3a943210194518cee0d4e362476624316443275c3.br.png
new file mode 100644
index 00000000..8214fc2c
Binary files /dev/null and b/translated_images/iot-service-connectivity.7e873847921a5d6fd60d0ba3a943210194518cee0d4e362476624316443275c3.br.png differ
diff --git a/translated_images/iot-service-connectivity.7e873847921a5d6fd60d0ba3a943210194518cee0d4e362476624316443275c3.tr.png b/translated_images/iot-service-connectivity.7e873847921a5d6fd60d0ba3a943210194518cee0d4e362476624316443275c3.tr.png
new file mode 100644
index 00000000..8214fc2c
Binary files /dev/null and b/translated_images/iot-service-connectivity.7e873847921a5d6fd60d0ba3a943210194518cee0d4e362476624316443275c3.tr.png differ
diff --git a/translated_images/latitude-equator.feccc3214b7d9fb1e1b2e44f938081c85149f092152de1509783b344e5f2097a.br.png b/translated_images/latitude-equator.feccc3214b7d9fb1e1b2e44f938081c85149f092152de1509783b344e5f2097a.br.png
new file mode 100644
index 00000000..434baaad
Binary files /dev/null and b/translated_images/latitude-equator.feccc3214b7d9fb1e1b2e44f938081c85149f092152de1509783b344e5f2097a.br.png differ
diff --git a/translated_images/latitude-equator.feccc3214b7d9fb1e1b2e44f938081c85149f092152de1509783b344e5f2097a.tr.png b/translated_images/latitude-equator.feccc3214b7d9fb1e1b2e44f938081c85149f092152de1509783b344e5f2097a.tr.png
new file mode 100644
index 00000000..434baaad
Binary files /dev/null and b/translated_images/latitude-equator.feccc3214b7d9fb1e1b2e44f938081c85149f092152de1509783b344e5f2097a.tr.png differ
diff --git a/translated_images/latitude-lines.11d8d91dfb2014a57437272d7db7fd6607243098e8685f06e0c5f1ec984cb7eb.br.png b/translated_images/latitude-lines.11d8d91dfb2014a57437272d7db7fd6607243098e8685f06e0c5f1ec984cb7eb.br.png
new file mode 100644
index 00000000..d32271b5
Binary files /dev/null and b/translated_images/latitude-lines.11d8d91dfb2014a57437272d7db7fd6607243098e8685f06e0c5f1ec984cb7eb.br.png differ
diff --git a/translated_images/latitude-lines.11d8d91dfb2014a57437272d7db7fd6607243098e8685f06e0c5f1ec984cb7eb.tr.png b/translated_images/latitude-lines.11d8d91dfb2014a57437272d7db7fd6607243098e8685f06e0c5f1ec984cb7eb.tr.png
new file mode 100644
index 00000000..d32271b5
Binary files /dev/null and b/translated_images/latitude-lines.11d8d91dfb2014a57437272d7db7fd6607243098e8685f06e0c5f1ec984cb7eb.tr.png differ
diff --git a/translated_images/led-digital-control.13b9be14077ea49f883c2ec52e1ce1c587804f2ed653f4061661e6a8783dd8c7.br.png b/translated_images/led-digital-control.13b9be14077ea49f883c2ec52e1ce1c587804f2ed653f4061661e6a8783dd8c7.br.png
new file mode 100644
index 00000000..04cd7dc8
Binary files /dev/null and b/translated_images/led-digital-control.13b9be14077ea49f883c2ec52e1ce1c587804f2ed653f4061661e6a8783dd8c7.br.png differ
diff --git a/translated_images/led-digital-control.13b9be14077ea49f883c2ec52e1ce1c587804f2ed653f4061661e6a8783dd8c7.tr.png b/translated_images/led-digital-control.13b9be14077ea49f883c2ec52e1ce1c587804f2ed653f4061661e6a8783dd8c7.tr.png
new file mode 100644
index 00000000..04cd7dc8
Binary files /dev/null and b/translated_images/led-digital-control.13b9be14077ea49f883c2ec52e1ce1c587804f2ed653f4061661e6a8783dd8c7.tr.png differ
diff --git a/translated_images/led.ec6d94f66676a174ad06d9fa9ea49c2ee89beb18b312d5c6476467c66375b07f.br.png b/translated_images/led.ec6d94f66676a174ad06d9fa9ea49c2ee89beb18b312d5c6476467c66375b07f.br.png
new file mode 100644
index 00000000..a8a12bce
Binary files /dev/null and b/translated_images/led.ec6d94f66676a174ad06d9fa9ea49c2ee89beb18b312d5c6476467c66375b07f.br.png differ
diff --git a/translated_images/led.ec6d94f66676a174ad06d9fa9ea49c2ee89beb18b312d5c6476467c66375b07f.tr.png b/translated_images/led.ec6d94f66676a174ad06d9fa9ea49c2ee89beb18b312d5c6476467c66375b07f.tr.png
new file mode 100644
index 00000000..a8a12bce
Binary files /dev/null and b/translated_images/led.ec6d94f66676a174ad06d9fa9ea49c2ee89beb18b312d5c6476467c66375b07f.tr.png differ
diff --git a/translated_images/lesson-1.2606670fa61ee904687da5d6fa4e726639d524d064c895117da1b95b9ff6251d.br.jpg b/translated_images/lesson-1.2606670fa61ee904687da5d6fa4e726639d524d064c895117da1b95b9ff6251d.br.jpg
new file mode 100644
index 00000000..23ea98b2
Binary files /dev/null and b/translated_images/lesson-1.2606670fa61ee904687da5d6fa4e726639d524d064c895117da1b95b9ff6251d.br.jpg differ
diff --git a/translated_images/lesson-1.2606670fa61ee904687da5d6fa4e726639d524d064c895117da1b95b9ff6251d.tr.jpg b/translated_images/lesson-1.2606670fa61ee904687da5d6fa4e726639d524d064c895117da1b95b9ff6251d.tr.jpg
new file mode 100644
index 00000000..23ea98b2
Binary files /dev/null and b/translated_images/lesson-1.2606670fa61ee904687da5d6fa4e726639d524d064c895117da1b95b9ff6251d.tr.jpg differ
diff --git a/translated_images/lesson-10.829c86b80b9403bb770929ee553a1d293afe50dc23121aaf9be144673ae012cc.br.jpg b/translated_images/lesson-10.829c86b80b9403bb770929ee553a1d293afe50dc23121aaf9be144673ae012cc.br.jpg
new file mode 100644
index 00000000..1e3581d3
Binary files /dev/null and b/translated_images/lesson-10.829c86b80b9403bb770929ee553a1d293afe50dc23121aaf9be144673ae012cc.br.jpg differ
diff --git a/translated_images/lesson-10.829c86b80b9403bb770929ee553a1d293afe50dc23121aaf9be144673ae012cc.tr.jpg b/translated_images/lesson-10.829c86b80b9403bb770929ee553a1d293afe50dc23121aaf9be144673ae012cc.tr.jpg
new file mode 100644
index 00000000..1e3581d3
Binary files /dev/null and b/translated_images/lesson-10.829c86b80b9403bb770929ee553a1d293afe50dc23121aaf9be144673ae012cc.tr.jpg differ
diff --git a/translated_images/lesson-11.9fddbac4b664c6d50ab7ac9bb32f1fc3f945f03760e72f7f43938073762fb017.br.jpg b/translated_images/lesson-11.9fddbac4b664c6d50ab7ac9bb32f1fc3f945f03760e72f7f43938073762fb017.br.jpg
new file mode 100644
index 00000000..554ea37b
Binary files /dev/null and b/translated_images/lesson-11.9fddbac4b664c6d50ab7ac9bb32f1fc3f945f03760e72f7f43938073762fb017.br.jpg differ
diff --git a/translated_images/lesson-11.9fddbac4b664c6d50ab7ac9bb32f1fc3f945f03760e72f7f43938073762fb017.tr.jpg b/translated_images/lesson-11.9fddbac4b664c6d50ab7ac9bb32f1fc3f945f03760e72f7f43938073762fb017.tr.jpg
new file mode 100644
index 00000000..554ea37b
Binary files /dev/null and b/translated_images/lesson-11.9fddbac4b664c6d50ab7ac9bb32f1fc3f945f03760e72f7f43938073762fb017.tr.jpg differ
diff --git a/translated_images/lesson-12.ca7f53039712a3ec14ad6474d8445361c84adab643edc53fa6269b77895606bb.br.jpg b/translated_images/lesson-12.ca7f53039712a3ec14ad6474d8445361c84adab643edc53fa6269b77895606bb.br.jpg
new file mode 100644
index 00000000..427ba4c3
Binary files /dev/null and b/translated_images/lesson-12.ca7f53039712a3ec14ad6474d8445361c84adab643edc53fa6269b77895606bb.br.jpg differ
diff --git a/translated_images/lesson-12.ca7f53039712a3ec14ad6474d8445361c84adab643edc53fa6269b77895606bb.tr.jpg b/translated_images/lesson-12.ca7f53039712a3ec14ad6474d8445361c84adab643edc53fa6269b77895606bb.tr.jpg
new file mode 100644
index 00000000..427ba4c3
Binary files /dev/null and b/translated_images/lesson-12.ca7f53039712a3ec14ad6474d8445361c84adab643edc53fa6269b77895606bb.tr.jpg differ
diff --git a/translated_images/lesson-13.a259db1485021be7d7c72e90842fbe0ab977529e8684c179b5fb1ea75e92b3ef.br.jpg b/translated_images/lesson-13.a259db1485021be7d7c72e90842fbe0ab977529e8684c179b5fb1ea75e92b3ef.br.jpg
new file mode 100644
index 00000000..b2357285
Binary files /dev/null and b/translated_images/lesson-13.a259db1485021be7d7c72e90842fbe0ab977529e8684c179b5fb1ea75e92b3ef.br.jpg differ
diff --git a/translated_images/lesson-13.a259db1485021be7d7c72e90842fbe0ab977529e8684c179b5fb1ea75e92b3ef.tr.jpg b/translated_images/lesson-13.a259db1485021be7d7c72e90842fbe0ab977529e8684c179b5fb1ea75e92b3ef.tr.jpg
new file mode 100644
index 00000000..b2357285
Binary files /dev/null and b/translated_images/lesson-13.a259db1485021be7d7c72e90842fbe0ab977529e8684c179b5fb1ea75e92b3ef.tr.jpg differ
diff --git a/translated_images/lesson-14.63980c5150ae3c153e770fb71d044c1845dce79248d86bed9fc525adf3ede73c.br.jpg b/translated_images/lesson-14.63980c5150ae3c153e770fb71d044c1845dce79248d86bed9fc525adf3ede73c.br.jpg
new file mode 100644
index 00000000..1736ebb4
Binary files /dev/null and b/translated_images/lesson-14.63980c5150ae3c153e770fb71d044c1845dce79248d86bed9fc525adf3ede73c.br.jpg differ
diff --git a/translated_images/lesson-14.63980c5150ae3c153e770fb71d044c1845dce79248d86bed9fc525adf3ede73c.tr.jpg b/translated_images/lesson-14.63980c5150ae3c153e770fb71d044c1845dce79248d86bed9fc525adf3ede73c.tr.jpg
new file mode 100644
index 00000000..1736ebb4
Binary files /dev/null and b/translated_images/lesson-14.63980c5150ae3c153e770fb71d044c1845dce79248d86bed9fc525adf3ede73c.tr.jpg differ
diff --git a/translated_images/lesson-15.843d21afdc6fb2bba70cd9db7b7d2f91598859fafda2078b0bdc44954194b6c0.br.jpg b/translated_images/lesson-15.843d21afdc6fb2bba70cd9db7b7d2f91598859fafda2078b0bdc44954194b6c0.br.jpg
new file mode 100644
index 00000000..bf1d724f
Binary files /dev/null and b/translated_images/lesson-15.843d21afdc6fb2bba70cd9db7b7d2f91598859fafda2078b0bdc44954194b6c0.br.jpg differ
diff --git a/translated_images/lesson-15.843d21afdc6fb2bba70cd9db7b7d2f91598859fafda2078b0bdc44954194b6c0.tr.jpg b/translated_images/lesson-15.843d21afdc6fb2bba70cd9db7b7d2f91598859fafda2078b0bdc44954194b6c0.tr.jpg
new file mode 100644
index 00000000..bf1d724f
Binary files /dev/null and b/translated_images/lesson-15.843d21afdc6fb2bba70cd9db7b7d2f91598859fafda2078b0bdc44954194b6c0.tr.jpg differ
diff --git a/translated_images/lesson-16.215daf18b00631fbdfd64c6fc2dc6044dff5d544288825d8076f9fb83d964c23.br.jpg b/translated_images/lesson-16.215daf18b00631fbdfd64c6fc2dc6044dff5d544288825d8076f9fb83d964c23.br.jpg
new file mode 100644
index 00000000..bb78259a
Binary files /dev/null and b/translated_images/lesson-16.215daf18b00631fbdfd64c6fc2dc6044dff5d544288825d8076f9fb83d964c23.br.jpg differ
diff --git a/translated_images/lesson-16.215daf18b00631fbdfd64c6fc2dc6044dff5d544288825d8076f9fb83d964c23.tr.jpg b/translated_images/lesson-16.215daf18b00631fbdfd64c6fc2dc6044dff5d544288825d8076f9fb83d964c23.tr.jpg
new file mode 100644
index 00000000..bb78259a
Binary files /dev/null and b/translated_images/lesson-16.215daf18b00631fbdfd64c6fc2dc6044dff5d544288825d8076f9fb83d964c23.tr.jpg differ
diff --git a/translated_images/lesson-17.bc333c3c35ba8e42cce666cfffa82b915f787f455bd94e006aea2b6f2722421a.br.jpg b/translated_images/lesson-17.bc333c3c35ba8e42cce666cfffa82b915f787f455bd94e006aea2b6f2722421a.br.jpg
new file mode 100644
index 00000000..b311b568
Binary files /dev/null and b/translated_images/lesson-17.bc333c3c35ba8e42cce666cfffa82b915f787f455bd94e006aea2b6f2722421a.br.jpg differ
diff --git a/translated_images/lesson-17.bc333c3c35ba8e42cce666cfffa82b915f787f455bd94e006aea2b6f2722421a.tr.jpg b/translated_images/lesson-17.bc333c3c35ba8e42cce666cfffa82b915f787f455bd94e006aea2b6f2722421a.tr.jpg
new file mode 100644
index 00000000..b311b568
Binary files /dev/null and b/translated_images/lesson-17.bc333c3c35ba8e42cce666cfffa82b915f787f455bd94e006aea2b6f2722421a.tr.jpg differ
diff --git a/translated_images/lesson-18.92c32ed1d354caa5a54baa4032cf0b172d4655e8e326ad5d46c558a0def15365.br.jpg b/translated_images/lesson-18.92c32ed1d354caa5a54baa4032cf0b172d4655e8e326ad5d46c558a0def15365.br.jpg
new file mode 100644
index 00000000..5bd350fd
Binary files /dev/null and b/translated_images/lesson-18.92c32ed1d354caa5a54baa4032cf0b172d4655e8e326ad5d46c558a0def15365.br.jpg differ
diff --git a/translated_images/lesson-18.92c32ed1d354caa5a54baa4032cf0b172d4655e8e326ad5d46c558a0def15365.tr.jpg b/translated_images/lesson-18.92c32ed1d354caa5a54baa4032cf0b172d4655e8e326ad5d46c558a0def15365.tr.jpg
new file mode 100644
index 00000000..5bd350fd
Binary files /dev/null and b/translated_images/lesson-18.92c32ed1d354caa5a54baa4032cf0b172d4655e8e326ad5d46c558a0def15365.tr.jpg differ
diff --git a/translated_images/lesson-19.cf6973cecadf080c4b526310620dc4d6f5994c80fb0139c6f378cc9ca2d435cd.br.jpg b/translated_images/lesson-19.cf6973cecadf080c4b526310620dc4d6f5994c80fb0139c6f378cc9ca2d435cd.br.jpg
new file mode 100644
index 00000000..66fbe114
Binary files /dev/null and b/translated_images/lesson-19.cf6973cecadf080c4b526310620dc4d6f5994c80fb0139c6f378cc9ca2d435cd.br.jpg differ
diff --git a/translated_images/lesson-19.cf6973cecadf080c4b526310620dc4d6f5994c80fb0139c6f378cc9ca2d435cd.tr.jpg b/translated_images/lesson-19.cf6973cecadf080c4b526310620dc4d6f5994c80fb0139c6f378cc9ca2d435cd.tr.jpg
new file mode 100644
index 00000000..66fbe114
Binary files /dev/null and b/translated_images/lesson-19.cf6973cecadf080c4b526310620dc4d6f5994c80fb0139c6f378cc9ca2d435cd.tr.jpg differ
diff --git a/translated_images/lesson-2.324b0580d620c25e0a24fb7fddfc0b29a846dd4b82c08e7a9466d580ee78ce51.br.jpg b/translated_images/lesson-2.324b0580d620c25e0a24fb7fddfc0b29a846dd4b82c08e7a9466d580ee78ce51.br.jpg
new file mode 100644
index 00000000..050e7206
Binary files /dev/null and b/translated_images/lesson-2.324b0580d620c25e0a24fb7fddfc0b29a846dd4b82c08e7a9466d580ee78ce51.br.jpg differ
diff --git a/translated_images/lesson-2.324b0580d620c25e0a24fb7fddfc0b29a846dd4b82c08e7a9466d580ee78ce51.tr.jpg b/translated_images/lesson-2.324b0580d620c25e0a24fb7fddfc0b29a846dd4b82c08e7a9466d580ee78ce51.tr.jpg
new file mode 100644
index 00000000..050e7206
Binary files /dev/null and b/translated_images/lesson-2.324b0580d620c25e0a24fb7fddfc0b29a846dd4b82c08e7a9466d580ee78ce51.tr.jpg differ
diff --git a/translated_images/lesson-20.0211df9551a8abb300fc8fcf7dc2789468dea2eabe9202273ac077b0ba37f15e.br.jpg b/translated_images/lesson-20.0211df9551a8abb300fc8fcf7dc2789468dea2eabe9202273ac077b0ba37f15e.br.jpg
new file mode 100644
index 00000000..91c64faa
Binary files /dev/null and b/translated_images/lesson-20.0211df9551a8abb300fc8fcf7dc2789468dea2eabe9202273ac077b0ba37f15e.br.jpg differ
diff --git a/translated_images/lesson-20.0211df9551a8abb300fc8fcf7dc2789468dea2eabe9202273ac077b0ba37f15e.tr.jpg b/translated_images/lesson-20.0211df9551a8abb300fc8fcf7dc2789468dea2eabe9202273ac077b0ba37f15e.tr.jpg
new file mode 100644
index 00000000..91c64faa
Binary files /dev/null and b/translated_images/lesson-20.0211df9551a8abb300fc8fcf7dc2789468dea2eabe9202273ac077b0ba37f15e.tr.jpg differ
diff --git a/translated_images/lesson-21.e34de51354d6606fb5ee08d8c89d0222eea0a2a7aaf744a8805ae847c4f69dc4.br.jpg b/translated_images/lesson-21.e34de51354d6606fb5ee08d8c89d0222eea0a2a7aaf744a8805ae847c4f69dc4.br.jpg
new file mode 100644
index 00000000..36e1a4b3
Binary files /dev/null and b/translated_images/lesson-21.e34de51354d6606fb5ee08d8c89d0222eea0a2a7aaf744a8805ae847c4f69dc4.br.jpg differ
diff --git a/translated_images/lesson-21.e34de51354d6606fb5ee08d8c89d0222eea0a2a7aaf744a8805ae847c4f69dc4.tr.jpg b/translated_images/lesson-21.e34de51354d6606fb5ee08d8c89d0222eea0a2a7aaf744a8805ae847c4f69dc4.tr.jpg
new file mode 100644
index 00000000..36e1a4b3
Binary files /dev/null and b/translated_images/lesson-21.e34de51354d6606fb5ee08d8c89d0222eea0a2a7aaf744a8805ae847c4f69dc4.tr.jpg differ
diff --git a/translated_images/lesson-22.6148ea28500d9e00c396aaa2649935fb6641362c8f03d8e5e90a676977ab01dd.br.jpg b/translated_images/lesson-22.6148ea28500d9e00c396aaa2649935fb6641362c8f03d8e5e90a676977ab01dd.br.jpg
new file mode 100644
index 00000000..1b87df4c
Binary files /dev/null and b/translated_images/lesson-22.6148ea28500d9e00c396aaa2649935fb6641362c8f03d8e5e90a676977ab01dd.br.jpg differ
diff --git a/translated_images/lesson-22.6148ea28500d9e00c396aaa2649935fb6641362c8f03d8e5e90a676977ab01dd.tr.jpg b/translated_images/lesson-22.6148ea28500d9e00c396aaa2649935fb6641362c8f03d8e5e90a676977ab01dd.tr.jpg
new file mode 100644
index 00000000..1b87df4c
Binary files /dev/null and b/translated_images/lesson-22.6148ea28500d9e00c396aaa2649935fb6641362c8f03d8e5e90a676977ab01dd.tr.jpg differ
diff --git a/translated_images/lesson-23.f38483e1d4df4828990d3f02d60e46c978b075d384ae7cb4f7bab738e107c850.br.jpg b/translated_images/lesson-23.f38483e1d4df4828990d3f02d60e46c978b075d384ae7cb4f7bab738e107c850.br.jpg
new file mode 100644
index 00000000..8df37a22
Binary files /dev/null and b/translated_images/lesson-23.f38483e1d4df4828990d3f02d60e46c978b075d384ae7cb4f7bab738e107c850.br.jpg differ
diff --git a/translated_images/lesson-23.f38483e1d4df4828990d3f02d60e46c978b075d384ae7cb4f7bab738e107c850.tr.jpg b/translated_images/lesson-23.f38483e1d4df4828990d3f02d60e46c978b075d384ae7cb4f7bab738e107c850.tr.jpg
new file mode 100644
index 00000000..8df37a22
Binary files /dev/null and b/translated_images/lesson-23.f38483e1d4df4828990d3f02d60e46c978b075d384ae7cb4f7bab738e107c850.tr.jpg differ
diff --git a/translated_images/lesson-24.4246968ed058510ab275052e87ef9aa89c7b2f938915d103c605c04dc6cd5bb7.br.jpg b/translated_images/lesson-24.4246968ed058510ab275052e87ef9aa89c7b2f938915d103c605c04dc6cd5bb7.br.jpg
new file mode 100644
index 00000000..943af1b9
Binary files /dev/null and b/translated_images/lesson-24.4246968ed058510ab275052e87ef9aa89c7b2f938915d103c605c04dc6cd5bb7.br.jpg differ
diff --git a/translated_images/lesson-24.4246968ed058510ab275052e87ef9aa89c7b2f938915d103c605c04dc6cd5bb7.tr.jpg b/translated_images/lesson-24.4246968ed058510ab275052e87ef9aa89c7b2f938915d103c605c04dc6cd5bb7.tr.jpg
new file mode 100644
index 00000000..943af1b9
Binary files /dev/null and b/translated_images/lesson-24.4246968ed058510ab275052e87ef9aa89c7b2f938915d103c605c04dc6cd5bb7.tr.jpg differ
diff --git a/translated_images/lesson-3.cc3b7b4cd646de598698cce043c0393fd62ef42bac2eaf60e61272cd844250f4.br.jpg b/translated_images/lesson-3.cc3b7b4cd646de598698cce043c0393fd62ef42bac2eaf60e61272cd844250f4.br.jpg
new file mode 100644
index 00000000..5a96f7fb
Binary files /dev/null and b/translated_images/lesson-3.cc3b7b4cd646de598698cce043c0393fd62ef42bac2eaf60e61272cd844250f4.br.jpg differ
diff --git a/translated_images/lesson-3.cc3b7b4cd646de598698cce043c0393fd62ef42bac2eaf60e61272cd844250f4.tr.jpg b/translated_images/lesson-3.cc3b7b4cd646de598698cce043c0393fd62ef42bac2eaf60e61272cd844250f4.tr.jpg
new file mode 100644
index 00000000..5a96f7fb
Binary files /dev/null and b/translated_images/lesson-3.cc3b7b4cd646de598698cce043c0393fd62ef42bac2eaf60e61272cd844250f4.tr.jpg differ
diff --git a/translated_images/lesson-4.7344e074ea68fa545fd320b12dce36d72dd62d28c3b4596cb26cf315f434b98f.br.jpg b/translated_images/lesson-4.7344e074ea68fa545fd320b12dce36d72dd62d28c3b4596cb26cf315f434b98f.br.jpg
new file mode 100644
index 00000000..8f0bee50
Binary files /dev/null and b/translated_images/lesson-4.7344e074ea68fa545fd320b12dce36d72dd62d28c3b4596cb26cf315f434b98f.br.jpg differ
diff --git a/translated_images/lesson-4.7344e074ea68fa545fd320b12dce36d72dd62d28c3b4596cb26cf315f434b98f.tr.jpg b/translated_images/lesson-4.7344e074ea68fa545fd320b12dce36d72dd62d28c3b4596cb26cf315f434b98f.tr.jpg
new file mode 100644
index 00000000..8f0bee50
Binary files /dev/null and b/translated_images/lesson-4.7344e074ea68fa545fd320b12dce36d72dd62d28c3b4596cb26cf315f434b98f.tr.jpg differ
diff --git a/translated_images/lesson-5.42b234299279d263143148b88ab4583861a32ddb03110c6c1120e41bb88b2592.br.jpg b/translated_images/lesson-5.42b234299279d263143148b88ab4583861a32ddb03110c6c1120e41bb88b2592.br.jpg
new file mode 100644
index 00000000..4ba24109
Binary files /dev/null and b/translated_images/lesson-5.42b234299279d263143148b88ab4583861a32ddb03110c6c1120e41bb88b2592.br.jpg differ
diff --git a/translated_images/lesson-5.42b234299279d263143148b88ab4583861a32ddb03110c6c1120e41bb88b2592.tr.jpg b/translated_images/lesson-5.42b234299279d263143148b88ab4583861a32ddb03110c6c1120e41bb88b2592.tr.jpg
new file mode 100644
index 00000000..4ba24109
Binary files /dev/null and b/translated_images/lesson-5.42b234299279d263143148b88ab4583861a32ddb03110c6c1120e41bb88b2592.tr.jpg differ
diff --git a/translated_images/lesson-6.3e493b60eee85adc8c74dfeaaec3a3a6cfba61fedbcb84aa0146e7e80603a5dd.br.jpg b/translated_images/lesson-6.3e493b60eee85adc8c74dfeaaec3a3a6cfba61fedbcb84aa0146e7e80603a5dd.br.jpg
new file mode 100644
index 00000000..cdf0f557
Binary files /dev/null and b/translated_images/lesson-6.3e493b60eee85adc8c74dfeaaec3a3a6cfba61fedbcb84aa0146e7e80603a5dd.br.jpg differ
diff --git a/translated_images/lesson-6.3e493b60eee85adc8c74dfeaaec3a3a6cfba61fedbcb84aa0146e7e80603a5dd.tr.jpg b/translated_images/lesson-6.3e493b60eee85adc8c74dfeaaec3a3a6cfba61fedbcb84aa0146e7e80603a5dd.tr.jpg
new file mode 100644
index 00000000..cdf0f557
Binary files /dev/null and b/translated_images/lesson-6.3e493b60eee85adc8c74dfeaaec3a3a6cfba61fedbcb84aa0146e7e80603a5dd.tr.jpg differ
diff --git a/translated_images/lesson-7.30b5f577d3cb8e031238751475cb519c7d6dbaea261b5df4643d086ffb2a03bb.br.jpg b/translated_images/lesson-7.30b5f577d3cb8e031238751475cb519c7d6dbaea261b5df4643d086ffb2a03bb.br.jpg
new file mode 100644
index 00000000..f59ee98d
Binary files /dev/null and b/translated_images/lesson-7.30b5f577d3cb8e031238751475cb519c7d6dbaea261b5df4643d086ffb2a03bb.br.jpg differ
diff --git a/translated_images/lesson-7.30b5f577d3cb8e031238751475cb519c7d6dbaea261b5df4643d086ffb2a03bb.tr.jpg b/translated_images/lesson-7.30b5f577d3cb8e031238751475cb519c7d6dbaea261b5df4643d086ffb2a03bb.tr.jpg
new file mode 100644
index 00000000..f59ee98d
Binary files /dev/null and b/translated_images/lesson-7.30b5f577d3cb8e031238751475cb519c7d6dbaea261b5df4643d086ffb2a03bb.tr.jpg differ
diff --git a/translated_images/lesson-8.3f21f3c11159e6a0a376351973ea5724d5de68fa23b4288853a174bed9ac48c3.br.jpg b/translated_images/lesson-8.3f21f3c11159e6a0a376351973ea5724d5de68fa23b4288853a174bed9ac48c3.br.jpg
new file mode 100644
index 00000000..5bdbfd14
Binary files /dev/null and b/translated_images/lesson-8.3f21f3c11159e6a0a376351973ea5724d5de68fa23b4288853a174bed9ac48c3.br.jpg differ
diff --git a/translated_images/lesson-8.3f21f3c11159e6a0a376351973ea5724d5de68fa23b4288853a174bed9ac48c3.tr.jpg b/translated_images/lesson-8.3f21f3c11159e6a0a376351973ea5724d5de68fa23b4288853a174bed9ac48c3.tr.jpg
new file mode 100644
index 00000000..5bdbfd14
Binary files /dev/null and b/translated_images/lesson-8.3f21f3c11159e6a0a376351973ea5724d5de68fa23b4288853a174bed9ac48c3.tr.jpg differ
diff --git a/translated_images/lesson-9.dfe99c8e891f48e179724520da9f5794392cf9a625079281ccdcbf09bd85e1b6.br.jpg b/translated_images/lesson-9.dfe99c8e891f48e179724520da9f5794392cf9a625079281ccdcbf09bd85e1b6.br.jpg
new file mode 100644
index 00000000..b78ab3ac
Binary files /dev/null and b/translated_images/lesson-9.dfe99c8e891f48e179724520da9f5794392cf9a625079281ccdcbf09bd85e1b6.br.jpg differ
diff --git a/translated_images/lesson-9.dfe99c8e891f48e179724520da9f5794392cf9a625079281ccdcbf09bd85e1b6.tr.jpg b/translated_images/lesson-9.dfe99c8e891f48e179724520da9f5794392cf9a625079281ccdcbf09bd85e1b6.tr.jpg
new file mode 100644
index 00000000..b78ab3ac
Binary files /dev/null and b/translated_images/lesson-9.dfe99c8e891f48e179724520da9f5794392cf9a625079281ccdcbf09bd85e1b6.tr.jpg differ
diff --git a/translated_images/light-switch.760317ad6ab8bd6d611da5352dfe9c73a94a0822ccec7df3c8bae35da18e1658.br.png b/translated_images/light-switch.760317ad6ab8bd6d611da5352dfe9c73a94a0822ccec7df3c8bae35da18e1658.br.png
new file mode 100644
index 00000000..d071dffe
Binary files /dev/null and b/translated_images/light-switch.760317ad6ab8bd6d611da5352dfe9c73a94a0822ccec7df3c8bae35da18e1658.br.png differ
diff --git a/translated_images/light-switch.760317ad6ab8bd6d611da5352dfe9c73a94a0822ccec7df3c8bae35da18e1658.tr.png b/translated_images/light-switch.760317ad6ab8bd6d611da5352dfe9c73a94a0822ccec7df3c8bae35da18e1658.tr.png
new file mode 100644
index 00000000..d071dffe
Binary files /dev/null and b/translated_images/light-switch.760317ad6ab8bd6d611da5352dfe9c73a94a0822ccec7df3c8bae35da18e1658.tr.png differ
diff --git a/translated_images/lines-of-longitude-and-latitude.032aca9d3e402c4e89da3f1c269b955f0dac443ae4ae3dd6e1dada5761c39a92.br.png b/translated_images/lines-of-longitude-and-latitude.032aca9d3e402c4e89da3f1c269b955f0dac443ae4ae3dd6e1dada5761c39a92.br.png
new file mode 100644
index 00000000..b8947f6d
Binary files /dev/null and b/translated_images/lines-of-longitude-and-latitude.032aca9d3e402c4e89da3f1c269b955f0dac443ae4ae3dd6e1dada5761c39a92.br.png differ
diff --git a/translated_images/lines-of-longitude-and-latitude.032aca9d3e402c4e89da3f1c269b955f0dac443ae4ae3dd6e1dada5761c39a92.tr.png b/translated_images/lines-of-longitude-and-latitude.032aca9d3e402c4e89da3f1c269b955f0dac443ae4ae3dd6e1dada5761c39a92.tr.png
new file mode 100644
index 00000000..b8947f6d
Binary files /dev/null and b/translated_images/lines-of-longitude-and-latitude.032aca9d3e402c4e89da3f1c269b955f0dac443ae4ae3dd6e1dada5761c39a92.tr.png differ
diff --git a/translated_images/longitude-meridians.ab4ef1c91c064586b0185a3c8d39e585903696c6a7d28c098a93a629cddb5d20.br.png b/translated_images/longitude-meridians.ab4ef1c91c064586b0185a3c8d39e585903696c6a7d28c098a93a629cddb5d20.br.png
new file mode 100644
index 00000000..5c5dfb96
Binary files /dev/null and b/translated_images/longitude-meridians.ab4ef1c91c064586b0185a3c8d39e585903696c6a7d28c098a93a629cddb5d20.br.png differ
diff --git a/translated_images/longitude-meridians.ab4ef1c91c064586b0185a3c8d39e585903696c6a7d28c098a93a629cddb5d20.tr.png b/translated_images/longitude-meridians.ab4ef1c91c064586b0185a3c8d39e585903696c6a7d28c098a93a629cddb5d20.tr.png
new file mode 100644
index 00000000..5c5dfb96
Binary files /dev/null and b/translated_images/longitude-meridians.ab4ef1c91c064586b0185a3c8d39e585903696c6a7d28c098a93a629cddb5d20.tr.png differ
diff --git a/translated_images/longitude-prime-meridian.33b01b41ce615f9ddf85d91b0f93bdc076cfa44bb10b17296de42e2d1ba1090e.br.png b/translated_images/longitude-prime-meridian.33b01b41ce615f9ddf85d91b0f93bdc076cfa44bb10b17296de42e2d1ba1090e.br.png
new file mode 100644
index 00000000..663ad7e9
Binary files /dev/null and b/translated_images/longitude-prime-meridian.33b01b41ce615f9ddf85d91b0f93bdc076cfa44bb10b17296de42e2d1ba1090e.br.png differ
diff --git a/translated_images/longitude-prime-meridian.33b01b41ce615f9ddf85d91b0f93bdc076cfa44bb10b17296de42e2d1ba1090e.tr.png b/translated_images/longitude-prime-meridian.33b01b41ce615f9ddf85d91b0f93bdc076cfa44bb10b17296de42e2d1ba1090e.tr.png
new file mode 100644
index 00000000..663ad7e9
Binary files /dev/null and b/translated_images/longitude-prime-meridian.33b01b41ce615f9ddf85d91b0f93bdc076cfa44bb10b17296de42e2d1ba1090e.tr.png differ
diff --git a/translated_images/luis-intent-examples.25716580b2d2723cf1bafdf277d015c7f046d8cfa20f27bddf3a0873ec45fab7.br.png b/translated_images/luis-intent-examples.25716580b2d2723cf1bafdf277d015c7f046d8cfa20f27bddf3a0873ec45fab7.br.png
new file mode 100644
index 00000000..b1e33d6b
Binary files /dev/null and b/translated_images/luis-intent-examples.25716580b2d2723cf1bafdf277d015c7f046d8cfa20f27bddf3a0873ec45fab7.br.png differ
diff --git a/translated_images/luis-intent-examples.25716580b2d2723cf1bafdf277d015c7f046d8cfa20f27bddf3a0873ec45fab7.tr.png b/translated_images/luis-intent-examples.25716580b2d2723cf1bafdf277d015c7f046d8cfa20f27bddf3a0873ec45fab7.tr.png
new file mode 100644
index 00000000..b1e33d6b
Binary files /dev/null and b/translated_images/luis-intent-examples.25716580b2d2723cf1bafdf277d015c7f046d8cfa20f27bddf3a0873ec45fab7.tr.png differ
diff --git a/translated_images/luis-logo.5cb4f3e88c020ee6df4f614e8831f4a4b6809a7247bf52085fb48d629ef9be52.br.png b/translated_images/luis-logo.5cb4f3e88c020ee6df4f614e8831f4a4b6809a7247bf52085fb48d629ef9be52.br.png
new file mode 100644
index 00000000..2a03ab78
Binary files /dev/null and b/translated_images/luis-logo.5cb4f3e88c020ee6df4f614e8831f4a4b6809a7247bf52085fb48d629ef9be52.br.png differ
diff --git a/translated_images/luis-logo.5cb4f3e88c020ee6df4f614e8831f4a4b6809a7247bf52085fb48d629ef9be52.tr.png b/translated_images/luis-logo.5cb4f3e88c020ee6df4f614e8831f4a4b6809a7247bf52085fb48d629ef9be52.tr.png
new file mode 100644
index 00000000..2a03ab78
Binary files /dev/null and b/translated_images/luis-logo.5cb4f3e88c020ee6df4f614e8831f4a4b6809a7247bf52085fb48d629ef9be52.tr.png differ
diff --git a/translated_images/map-image.8fb2c53eb23ef39c1c0a4410a5282e879b3b452b707eb066ff04c5488d3d72b7.br.png b/translated_images/map-image.8fb2c53eb23ef39c1c0a4410a5282e879b3b452b707eb066ff04c5488d3d72b7.br.png
new file mode 100644
index 00000000..02ef1351
Binary files /dev/null and b/translated_images/map-image.8fb2c53eb23ef39c1c0a4410a5282e879b3b452b707eb066ff04c5488d3d72b7.br.png differ
diff --git a/translated_images/map-image.8fb2c53eb23ef39c1c0a4410a5282e879b3b452b707eb066ff04c5488d3d72b7.tr.png b/translated_images/map-image.8fb2c53eb23ef39c1c0a4410a5282e879b3b452b707eb066ff04c5488d3d72b7.tr.png
new file mode 100644
index 00000000..02ef1351
Binary files /dev/null and b/translated_images/map-image.8fb2c53eb23ef39c1c0a4410a5282e879b3b452b707eb066ff04c5488d3d72b7.tr.png differ
diff --git a/translated_images/map-path.896832e72dc696ffe20650e4051027d4855442d955f93fdbb80bb417ca8a406f.br.png b/translated_images/map-path.896832e72dc696ffe20650e4051027d4855442d955f93fdbb80bb417ca8a406f.br.png
new file mode 100644
index 00000000..33faabd1
Binary files /dev/null and b/translated_images/map-path.896832e72dc696ffe20650e4051027d4855442d955f93fdbb80bb417ca8a406f.br.png differ
diff --git a/translated_images/map-path.896832e72dc696ffe20650e4051027d4855442d955f93fdbb80bb417ca8a406f.tr.png b/translated_images/map-path.896832e72dc696ffe20650e4051027d4855442d955f93fdbb80bb417ca8a406f.tr.png
new file mode 100644
index 00000000..33faabd1
Binary files /dev/null and b/translated_images/map-path.896832e72dc696ffe20650e4051027d4855442d955f93fdbb80bb417ca8a406f.tr.png differ
diff --git a/translated_images/mems-microphone.80574019e1f5e4d9ee72fed720ecd25a39fc2969c91355d17ebb24ba4159e4c4.br.png b/translated_images/mems-microphone.80574019e1f5e4d9ee72fed720ecd25a39fc2969c91355d17ebb24ba4159e4c4.br.png
new file mode 100644
index 00000000..aa94da2c
Binary files /dev/null and b/translated_images/mems-microphone.80574019e1f5e4d9ee72fed720ecd25a39fc2969c91355d17ebb24ba4159e4c4.br.png differ
diff --git a/translated_images/mems-microphone.80574019e1f5e4d9ee72fed720ecd25a39fc2969c91355d17ebb24ba4159e4c4.tr.png b/translated_images/mems-microphone.80574019e1f5e4d9ee72fed720ecd25a39fc2969c91355d17ebb24ba4159e4c4.tr.png
new file mode 100644
index 00000000..aa94da2c
Binary files /dev/null and b/translated_images/mems-microphone.80574019e1f5e4d9ee72fed720ecd25a39fc2969c91355d17ebb24ba4159e4c4.tr.png differ
diff --git a/translated_images/microsoft-gps-location-world.a321d481b010f6adfcca139b2ba0adc53b79f58a540495b8e2ce7f779ea64bfe.br.png b/translated_images/microsoft-gps-location-world.a321d481b010f6adfcca139b2ba0adc53b79f58a540495b8e2ce7f779ea64bfe.br.png
new file mode 100644
index 00000000..ac000818
Binary files /dev/null and b/translated_images/microsoft-gps-location-world.a321d481b010f6adfcca139b2ba0adc53b79f58a540495b8e2ce7f779ea64bfe.br.png differ
diff --git a/translated_images/microsoft-gps-location-world.a321d481b010f6adfcca139b2ba0adc53b79f58a540495b8e2ce7f779ea64bfe.tr.png b/translated_images/microsoft-gps-location-world.a321d481b010f6adfcca139b2ba0adc53b79f58a540495b8e2ce7f779ea64bfe.tr.png
new file mode 100644
index 00000000..ac000818
Binary files /dev/null and b/translated_images/microsoft-gps-location-world.a321d481b010f6adfcca139b2ba0adc53b79f58a540495b8e2ce7f779ea64bfe.tr.png differ
diff --git a/translated_images/microsoft-gps-location.9eb77a13b22b7e70a0a80bd2b54c24eda141b4ee15a0373c93f8c73f4fcd81f5.br.png b/translated_images/microsoft-gps-location.9eb77a13b22b7e70a0a80bd2b54c24eda141b4ee15a0373c93f8c73f4fcd81f5.br.png
new file mode 100644
index 00000000..2fb519f5
Binary files /dev/null and b/translated_images/microsoft-gps-location.9eb77a13b22b7e70a0a80bd2b54c24eda141b4ee15a0373c93f8c73f4fcd81f5.br.png differ
diff --git a/translated_images/microsoft-gps-location.9eb77a13b22b7e70a0a80bd2b54c24eda141b4ee15a0373c93f8c73f4fcd81f5.tr.png b/translated_images/microsoft-gps-location.9eb77a13b22b7e70a0a80bd2b54c24eda141b4ee15a0373c93f8c73f4fcd81f5.tr.png
new file mode 100644
index 00000000..2fb519f5
Binary files /dev/null and b/translated_images/microsoft-gps-location.9eb77a13b22b7e70a0a80bd2b54c24eda141b4ee15a0373c93f8c73f4fcd81f5.tr.png differ
diff --git a/translated_images/mobile-controlled-thermostat.4a994010473d8d6a52ba68c67e5f02dc8928c717e93ca4b9bc55525aa75bbb60.br.png b/translated_images/mobile-controlled-thermostat.4a994010473d8d6a52ba68c67e5f02dc8928c717e93ca4b9bc55525aa75bbb60.br.png
new file mode 100644
index 00000000..48459b92
Binary files /dev/null and b/translated_images/mobile-controlled-thermostat.4a994010473d8d6a52ba68c67e5f02dc8928c717e93ca4b9bc55525aa75bbb60.br.png differ
diff --git a/translated_images/mobile-controlled-thermostat.4a994010473d8d6a52ba68c67e5f02dc8928c717e93ca4b9bc55525aa75bbb60.tr.png b/translated_images/mobile-controlled-thermostat.4a994010473d8d6a52ba68c67e5f02dc8928c717e93ca4b9bc55525aa75bbb60.tr.png
new file mode 100644
index 00000000..48459b92
Binary files /dev/null and b/translated_images/mobile-controlled-thermostat.4a994010473d8d6a52ba68c67e5f02dc8928c717e93ca4b9bc55525aa75bbb60.tr.png differ
diff --git a/translated_images/mqtt.cbf7f21d9adc3e17548b359444cc11bb4bf2010543e32ece9a47becf54438c23.br.png b/translated_images/mqtt.cbf7f21d9adc3e17548b359444cc11bb4bf2010543e32ece9a47becf54438c23.br.png
new file mode 100644
index 00000000..d502a579
Binary files /dev/null and b/translated_images/mqtt.cbf7f21d9adc3e17548b359444cc11bb4bf2010543e32ece9a47becf54438c23.br.png differ
diff --git a/translated_images/mqtt.cbf7f21d9adc3e17548b359444cc11bb4bf2010543e32ece9a47becf54438c23.tr.png b/translated_images/mqtt.cbf7f21d9adc3e17548b359444cc11bb4bf2010543e32ece9a47becf54438c23.tr.png
new file mode 100644
index 00000000..d502a579
Binary files /dev/null and b/translated_images/mqtt.cbf7f21d9adc3e17548b359444cc11bb4bf2010543e32ece9a47becf54438c23.tr.png differ
diff --git a/translated_images/noqsl-database.62d24ccf5b73f60d35c245a8533f1c7147c0928e955b82cb290b2e184bb434df.br.png b/translated_images/noqsl-database.62d24ccf5b73f60d35c245a8533f1c7147c0928e955b82cb290b2e184bb434df.br.png
new file mode 100644
index 00000000..fca45002
Binary files /dev/null and b/translated_images/noqsl-database.62d24ccf5b73f60d35c245a8533f1c7147c0928e955b82cb290b2e184bb434df.br.png differ
diff --git a/translated_images/noqsl-database.62d24ccf5b73f60d35c245a8533f1c7147c0928e955b82cb290b2e184bb434df.tr.png b/translated_images/noqsl-database.62d24ccf5b73f60d35c245a8533f1c7147c0928e955b82cb290b2e184bb434df.tr.png
new file mode 100644
index 00000000..fca45002
Binary files /dev/null and b/translated_images/noqsl-database.62d24ccf5b73f60d35c245a8533f1c7147c0928e955b82cb290b2e184bb434df.tr.png differ
diff --git a/translated_images/object-detector-cashews-tomato.1af7c26686b4db0e709754aeb196f4e73271f54e2085db3bcccb70d4a0d84d97.br.png b/translated_images/object-detector-cashews-tomato.1af7c26686b4db0e709754aeb196f4e73271f54e2085db3bcccb70d4a0d84d97.br.png
new file mode 100644
index 00000000..94aa28db
Binary files /dev/null and b/translated_images/object-detector-cashews-tomato.1af7c26686b4db0e709754aeb196f4e73271f54e2085db3bcccb70d4a0d84d97.br.png differ
diff --git a/translated_images/object-detector-cashews-tomato.1af7c26686b4db0e709754aeb196f4e73271f54e2085db3bcccb70d4a0d84d97.tr.png b/translated_images/object-detector-cashews-tomato.1af7c26686b4db0e709754aeb196f4e73271f54e2085db3bcccb70d4a0d84d97.tr.png
new file mode 100644
index 00000000..94aa28db
Binary files /dev/null and b/translated_images/object-detector-cashews-tomato.1af7c26686b4db0e709754aeb196f4e73271f54e2085db3bcccb70d4a0d84d97.tr.png differ
diff --git a/translated_images/object-detector-detected-tomato-paste.52656fe87af4c37b4ee540526d63e73ed075da2e54a9a060aa528e0c562fb1b6.br.png b/translated_images/object-detector-detected-tomato-paste.52656fe87af4c37b4ee540526d63e73ed075da2e54a9a060aa528e0c562fb1b6.br.png
new file mode 100644
index 00000000..894df473
Binary files /dev/null and b/translated_images/object-detector-detected-tomato-paste.52656fe87af4c37b4ee540526d63e73ed075da2e54a9a060aa528e0c562fb1b6.br.png differ
diff --git a/translated_images/object-detector-detected-tomato-paste.52656fe87af4c37b4ee540526d63e73ed075da2e54a9a060aa528e0c562fb1b6.tr.png b/translated_images/object-detector-detected-tomato-paste.52656fe87af4c37b4ee540526d63e73ed075da2e54a9a060aa528e0c562fb1b6.tr.png
new file mode 100644
index 00000000..894df473
Binary files /dev/null and b/translated_images/object-detector-detected-tomato-paste.52656fe87af4c37b4ee540526d63e73ed075da2e54a9a060aa528e0c562fb1b6.tr.png differ
diff --git a/translated_images/object-detector-tag-tomato-paste.f47c362fb0f0eb582f3bc68cf3855fb43a805106395358d41896a269c210b7b4.br.png b/translated_images/object-detector-tag-tomato-paste.f47c362fb0f0eb582f3bc68cf3855fb43a805106395358d41896a269c210b7b4.br.png
new file mode 100644
index 00000000..b75dfdd2
Binary files /dev/null and b/translated_images/object-detector-tag-tomato-paste.f47c362fb0f0eb582f3bc68cf3855fb43a805106395358d41896a269c210b7b4.br.png differ
diff --git a/translated_images/object-detector-tag-tomato-paste.f47c362fb0f0eb582f3bc68cf3855fb43a805106395358d41896a269c210b7b4.tr.png b/translated_images/object-detector-tag-tomato-paste.f47c362fb0f0eb582f3bc68cf3855fb43a805106395358d41896a269c210b7b4.tr.png
new file mode 100644
index 00000000..b75dfdd2
Binary files /dev/null and b/translated_images/object-detector-tag-tomato-paste.f47c362fb0f0eb582f3bc68cf3855fb43a805106395358d41896a269c210b7b4.tr.png differ
diff --git a/translated_images/optical-tomato-sorting.61aa134bdda4e5b1bfb16a212c1e35a6ef0c426cbb8b1c975f79d7bfbf48d068.br.png b/translated_images/optical-tomato-sorting.61aa134bdda4e5b1bfb16a212c1e35a6ef0c426cbb8b1c975f79d7bfbf48d068.br.png
new file mode 100644
index 00000000..1e7934c3
Binary files /dev/null and b/translated_images/optical-tomato-sorting.61aa134bdda4e5b1bfb16a212c1e35a6ef0c426cbb8b1c975f79d7bfbf48d068.br.png differ
diff --git a/translated_images/optical-tomato-sorting.61aa134bdda4e5b1bfb16a212c1e35a6ef0c426cbb8b1c975f79d7bfbf48d068.tr.png b/translated_images/optical-tomato-sorting.61aa134bdda4e5b1bfb16a212c1e35a6ef0c426cbb8b1c975f79d7bfbf48d068.tr.png
new file mode 100644
index 00000000..1e7934c3
Binary files /dev/null and b/translated_images/optical-tomato-sorting.61aa134bdda4e5b1bfb16a212c1e35a6ef0c426cbb8b1c975f79d7bfbf48d068.tr.png differ
diff --git a/translated_images/overlap-object-detection.d431e03cae75072a2760430eca7f2c5fdd43045bfd72dadcbf12711f7cd6c2ae.br.png b/translated_images/overlap-object-detection.d431e03cae75072a2760430eca7f2c5fdd43045bfd72dadcbf12711f7cd6c2ae.br.png
new file mode 100644
index 00000000..5bb319ec
Binary files /dev/null and b/translated_images/overlap-object-detection.d431e03cae75072a2760430eca7f2c5fdd43045bfd72dadcbf12711f7cd6c2ae.br.png differ
diff --git a/translated_images/overlap-object-detection.d431e03cae75072a2760430eca7f2c5fdd43045bfd72dadcbf12711f7cd6c2ae.tr.png b/translated_images/overlap-object-detection.d431e03cae75072a2760430eca7f2c5fdd43045bfd72dadcbf12711f7cd6c2ae.tr.png
new file mode 100644
index 00000000..5bb319ec
Binary files /dev/null and b/translated_images/overlap-object-detection.d431e03cae75072a2760430eca7f2c5fdd43045bfd72dadcbf12711f7cd6c2ae.tr.png differ
diff --git a/translated_images/pi-button.c7a1a4f55943341ce1baf1057658e9a205804d4131d258e820c93f951df0abf3.br.png b/translated_images/pi-button.c7a1a4f55943341ce1baf1057658e9a205804d4131d258e820c93f951df0abf3.br.png
new file mode 100644
index 00000000..d66e224f
Binary files /dev/null and b/translated_images/pi-button.c7a1a4f55943341ce1baf1057658e9a205804d4131d258e820c93f951df0abf3.br.png differ
diff --git a/translated_images/pi-button.c7a1a4f55943341ce1baf1057658e9a205804d4131d258e820c93f951df0abf3.tr.png b/translated_images/pi-button.c7a1a4f55943341ce1baf1057658e9a205804d4131d258e820c93f951df0abf3.tr.png
new file mode 100644
index 00000000..d66e224f
Binary files /dev/null and b/translated_images/pi-button.c7a1a4f55943341ce1baf1057658e9a205804d4131d258e820c93f951df0abf3.tr.png differ
diff --git a/translated_images/pi-camera-module.4278753c31bd6e757aa2b858be97d72049f71616278cefe4fb5abb485b40a078.br.png b/translated_images/pi-camera-module.4278753c31bd6e757aa2b858be97d72049f71616278cefe4fb5abb485b40a078.br.png
new file mode 100644
index 00000000..ed18e7b0
Binary files /dev/null and b/translated_images/pi-camera-module.4278753c31bd6e757aa2b858be97d72049f71616278cefe4fb5abb485b40a078.br.png differ
diff --git a/translated_images/pi-camera-module.4278753c31bd6e757aa2b858be97d72049f71616278cefe4fb5abb485b40a078.tr.png b/translated_images/pi-camera-module.4278753c31bd6e757aa2b858be97d72049f71616278cefe4fb5abb485b40a078.tr.png
new file mode 100644
index 00000000..ed18e7b0
Binary files /dev/null and b/translated_images/pi-camera-module.4278753c31bd6e757aa2b858be97d72049f71616278cefe4fb5abb485b40a078.tr.png differ
diff --git a/translated_images/pi-camera-ribbon-cable.0bf82acd251611c21ac616f082849413e2b322a261d0e4f8fec344248083b07e.br.png b/translated_images/pi-camera-ribbon-cable.0bf82acd251611c21ac616f082849413e2b322a261d0e4f8fec344248083b07e.br.png
new file mode 100644
index 00000000..9acb21a7
Binary files /dev/null and b/translated_images/pi-camera-ribbon-cable.0bf82acd251611c21ac616f082849413e2b322a261d0e4f8fec344248083b07e.br.png differ
diff --git a/translated_images/pi-camera-ribbon-cable.0bf82acd251611c21ac616f082849413e2b322a261d0e4f8fec344248083b07e.tr.png b/translated_images/pi-camera-ribbon-cable.0bf82acd251611c21ac616f082849413e2b322a261d0e4f8fec344248083b07e.tr.png
new file mode 100644
index 00000000..9acb21a7
Binary files /dev/null and b/translated_images/pi-camera-ribbon-cable.0bf82acd251611c21ac616f082849413e2b322a261d0e4f8fec344248083b07e.tr.png differ
diff --git a/translated_images/pi-camera-socket-ribbon-cable.a18309920b11800911082ed7aa6fb28e6d9be3a022e4079ff990016cae3fca10.br.png b/translated_images/pi-camera-socket-ribbon-cable.a18309920b11800911082ed7aa6fb28e6d9be3a022e4079ff990016cae3fca10.br.png
new file mode 100644
index 00000000..1ced5fc1
Binary files /dev/null and b/translated_images/pi-camera-socket-ribbon-cable.a18309920b11800911082ed7aa6fb28e6d9be3a022e4079ff990016cae3fca10.br.png differ
diff --git a/translated_images/pi-camera-socket-ribbon-cable.a18309920b11800911082ed7aa6fb28e6d9be3a022e4079ff990016cae3fca10.tr.png b/translated_images/pi-camera-socket-ribbon-cable.a18309920b11800911082ed7aa6fb28e6d9be3a022e4079ff990016cae3fca10.tr.png
new file mode 100644
index 00000000..1ced5fc1
Binary files /dev/null and b/translated_images/pi-camera-socket-ribbon-cable.a18309920b11800911082ed7aa6fb28e6d9be3a022e4079ff990016cae3fca10.tr.png differ
diff --git a/translated_images/pi-camera-upside-down.5376961ba31459883362124152ad6b823d5ac5fc14e85f317e22903bd681c2b6.br.png b/translated_images/pi-camera-upside-down.5376961ba31459883362124152ad6b823d5ac5fc14e85f317e22903bd681c2b6.br.png
new file mode 100644
index 00000000..7293ced1
Binary files /dev/null and b/translated_images/pi-camera-upside-down.5376961ba31459883362124152ad6b823d5ac5fc14e85f317e22903bd681c2b6.br.png differ
diff --git a/translated_images/pi-camera-upside-down.5376961ba31459883362124152ad6b823d5ac5fc14e85f317e22903bd681c2b6.tr.png b/translated_images/pi-camera-upside-down.5376961ba31459883362124152ad6b823d5ac5fc14e85f317e22903bd681c2b6.tr.png
new file mode 100644
index 00000000..7293ced1
Binary files /dev/null and b/translated_images/pi-camera-upside-down.5376961ba31459883362124152ad6b823d5ac5fc14e85f317e22903bd681c2b6.tr.png differ
diff --git a/translated_images/pi-gps-sensor.1f99ee2b2f6528915047ec78967bd362e0e4ee0ed594368a3837b9cf9cdaca64.br.png b/translated_images/pi-gps-sensor.1f99ee2b2f6528915047ec78967bd362e0e4ee0ed594368a3837b9cf9cdaca64.br.png
new file mode 100644
index 00000000..be837c63
Binary files /dev/null and b/translated_images/pi-gps-sensor.1f99ee2b2f6528915047ec78967bd362e0e4ee0ed594368a3837b9cf9cdaca64.br.png differ
diff --git a/translated_images/pi-gps-sensor.1f99ee2b2f6528915047ec78967bd362e0e4ee0ed594368a3837b9cf9cdaca64.tr.png b/translated_images/pi-gps-sensor.1f99ee2b2f6528915047ec78967bd362e0e4ee0ed594368a3837b9cf9cdaca64.tr.png
new file mode 100644
index 00000000..be837c63
Binary files /dev/null and b/translated_images/pi-gps-sensor.1f99ee2b2f6528915047ec78967bd362e0e4ee0ed594368a3837b9cf9cdaca64.tr.png differ
diff --git a/translated_images/pi-hardware-kit.26dbadaedb7dd44c73b0131d5d68ea29472ed0a9744f90d5866c6d82f2d16380.br.png b/translated_images/pi-hardware-kit.26dbadaedb7dd44c73b0131d5d68ea29472ed0a9744f90d5866c6d82f2d16380.br.png
new file mode 100644
index 00000000..73861107
Binary files /dev/null and b/translated_images/pi-hardware-kit.26dbadaedb7dd44c73b0131d5d68ea29472ed0a9744f90d5866c6d82f2d16380.br.png differ
diff --git a/translated_images/pi-hardware-kit.26dbadaedb7dd44c73b0131d5d68ea29472ed0a9744f90d5866c6d82f2d16380.tr.png b/translated_images/pi-hardware-kit.26dbadaedb7dd44c73b0131d5d68ea29472ed0a9744f90d5866c6d82f2d16380.tr.png
new file mode 100644
index 00000000..73861107
Binary files /dev/null and b/translated_images/pi-hardware-kit.26dbadaedb7dd44c73b0131d5d68ea29472ed0a9744f90d5866c6d82f2d16380.tr.png differ
diff --git a/translated_images/pi-led.97f1d474981dc35d1c7996c7b17de355d3d0a6bc9606d79fa5f89df933415122.br.png b/translated_images/pi-led.97f1d474981dc35d1c7996c7b17de355d3d0a6bc9606d79fa5f89df933415122.br.png
new file mode 100644
index 00000000..1b26d7ff
Binary files /dev/null and b/translated_images/pi-led.97f1d474981dc35d1c7996c7b17de355d3d0a6bc9606d79fa5f89df933415122.br.png differ
diff --git a/translated_images/pi-led.97f1d474981dc35d1c7996c7b17de355d3d0a6bc9606d79fa5f89df933415122.tr.png b/translated_images/pi-led.97f1d474981dc35d1c7996c7b17de355d3d0a6bc9606d79fa5f89df933415122.tr.png
new file mode 100644
index 00000000..1b26d7ff
Binary files /dev/null and b/translated_images/pi-led.97f1d474981dc35d1c7996c7b17de355d3d0a6bc9606d79fa5f89df933415122.tr.png differ
diff --git a/translated_images/pi-light-sensor.66cc1e31fa48cd7d5f23400d4b2119aa41508275cb7c778053a7923b4e972d7e.br.png b/translated_images/pi-light-sensor.66cc1e31fa48cd7d5f23400d4b2119aa41508275cb7c778053a7923b4e972d7e.br.png
new file mode 100644
index 00000000..f1905ecc
Binary files /dev/null and b/translated_images/pi-light-sensor.66cc1e31fa48cd7d5f23400d4b2119aa41508275cb7c778053a7923b4e972d7e.br.png differ
diff --git a/translated_images/pi-light-sensor.66cc1e31fa48cd7d5f23400d4b2119aa41508275cb7c778053a7923b4e972d7e.tr.png b/translated_images/pi-light-sensor.66cc1e31fa48cd7d5f23400d4b2119aa41508275cb7c778053a7923b4e972d7e.tr.png
new file mode 100644
index 00000000..f1905ecc
Binary files /dev/null and b/translated_images/pi-light-sensor.66cc1e31fa48cd7d5f23400d4b2119aa41508275cb7c778053a7923b4e972d7e.tr.png differ
diff --git a/translated_images/pi-relay-and-soil-moisture-sensor.02f3198975b8c53e69ec716cd2719ce117700bd1fc933eaf93476c103c57939b.br.png b/translated_images/pi-relay-and-soil-moisture-sensor.02f3198975b8c53e69ec716cd2719ce117700bd1fc933eaf93476c103c57939b.br.png
new file mode 100644
index 00000000..edc44fa9
Binary files /dev/null and b/translated_images/pi-relay-and-soil-moisture-sensor.02f3198975b8c53e69ec716cd2719ce117700bd1fc933eaf93476c103c57939b.br.png differ
diff --git a/translated_images/pi-relay-and-soil-moisture-sensor.02f3198975b8c53e69ec716cd2719ce117700bd1fc933eaf93476c103c57939b.tr.png b/translated_images/pi-relay-and-soil-moisture-sensor.02f3198975b8c53e69ec716cd2719ce117700bd1fc933eaf93476c103c57939b.tr.png
new file mode 100644
index 00000000..edc44fa9
Binary files /dev/null and b/translated_images/pi-relay-and-soil-moisture-sensor.02f3198975b8c53e69ec716cd2719ce117700bd1fc933eaf93476c103c57939b.tr.png differ
diff --git a/translated_images/pi-respeaker-hat.f00fabe7dd039a93e2e0aa0fc946c9af0c6a9eb17c32fa1ca097fb4e384f69f0.br.png b/translated_images/pi-respeaker-hat.f00fabe7dd039a93e2e0aa0fc946c9af0c6a9eb17c32fa1ca097fb4e384f69f0.br.png
new file mode 100644
index 00000000..87854d3a
Binary files /dev/null and b/translated_images/pi-respeaker-hat.f00fabe7dd039a93e2e0aa0fc946c9af0c6a9eb17c32fa1ca097fb4e384f69f0.br.png differ
diff --git a/translated_images/pi-respeaker-hat.f00fabe7dd039a93e2e0aa0fc946c9af0c6a9eb17c32fa1ca097fb4e384f69f0.tr.png b/translated_images/pi-respeaker-hat.f00fabe7dd039a93e2e0aa0fc946c9af0c6a9eb17c32fa1ca097fb4e384f69f0.tr.png
new file mode 100644
index 00000000..87854d3a
Binary files /dev/null and b/translated_images/pi-respeaker-hat.f00fabe7dd039a93e2e0aa0fc946c9af0c6a9eb17c32fa1ca097fb4e384f69f0.tr.png differ
diff --git a/translated_images/pi-soil-moisture-sensor.fdd7eb2393792cf6739cacf1985d9f55beda16d372f30d0b5a51d586f978a870.br.png b/translated_images/pi-soil-moisture-sensor.fdd7eb2393792cf6739cacf1985d9f55beda16d372f30d0b5a51d586f978a870.br.png
new file mode 100644
index 00000000..d1158e0d
Binary files /dev/null and b/translated_images/pi-soil-moisture-sensor.fdd7eb2393792cf6739cacf1985d9f55beda16d372f30d0b5a51d586f978a870.br.png differ
diff --git a/translated_images/pi-soil-moisture-sensor.fdd7eb2393792cf6739cacf1985d9f55beda16d372f30d0b5a51d586f978a870.tr.png b/translated_images/pi-soil-moisture-sensor.fdd7eb2393792cf6739cacf1985d9f55beda16d372f30d0b5a51d586f978a870.tr.png
new file mode 100644
index 00000000..d1158e0d
Binary files /dev/null and b/translated_images/pi-soil-moisture-sensor.fdd7eb2393792cf6739cacf1985d9f55beda16d372f30d0b5a51d586f978a870.tr.png differ
diff --git a/translated_images/pi-temperature-sensor.3ff82fff672c8e565ef25a39d26d111de006b825a7e0867227ef4e7fbff8553c.br.png b/translated_images/pi-temperature-sensor.3ff82fff672c8e565ef25a39d26d111de006b825a7e0867227ef4e7fbff8553c.br.png
new file mode 100644
index 00000000..122abea4
Binary files /dev/null and b/translated_images/pi-temperature-sensor.3ff82fff672c8e565ef25a39d26d111de006b825a7e0867227ef4e7fbff8553c.br.png differ
diff --git a/translated_images/pi-temperature-sensor.3ff82fff672c8e565ef25a39d26d111de006b825a7e0867227ef4e7fbff8553c.tr.png b/translated_images/pi-temperature-sensor.3ff82fff672c8e565ef25a39d26d111de006b825a7e0867227ef4e7fbff8553c.tr.png
new file mode 100644
index 00000000..122abea4
Binary files /dev/null and b/translated_images/pi-temperature-sensor.3ff82fff672c8e565ef25a39d26d111de006b825a7e0867227ef4e7fbff8553c.tr.png differ
diff --git a/translated_images/pi-time-of-flight-sensor.58c8dc04eb3bfb57a7c3019f031433ef4d798d4d7603d565afbf6f3802840dba.br.png b/translated_images/pi-time-of-flight-sensor.58c8dc04eb3bfb57a7c3019f031433ef4d798d4d7603d565afbf6f3802840dba.br.png
new file mode 100644
index 00000000..dc009aa5
Binary files /dev/null and b/translated_images/pi-time-of-flight-sensor.58c8dc04eb3bfb57a7c3019f031433ef4d798d4d7603d565afbf6f3802840dba.br.png differ
diff --git a/translated_images/pi-time-of-flight-sensor.58c8dc04eb3bfb57a7c3019f031433ef4d798d4d7603d565afbf6f3802840dba.tr.png b/translated_images/pi-time-of-flight-sensor.58c8dc04eb3bfb57a7c3019f031433ef4d798d4d7603d565afbf6f3802840dba.tr.png
new file mode 100644
index 00000000..dc009aa5
Binary files /dev/null and b/translated_images/pi-time-of-flight-sensor.58c8dc04eb3bfb57a7c3019f031433ef4d798d4d7603d565afbf6f3802840dba.tr.png differ
diff --git a/translated_images/plant-growth-temp-graph copy.65baa28afd9b7f5fbc04bf7c9684b086c466a467631568c23549d54949fc71d2.br.png b/translated_images/plant-growth-temp-graph copy.65baa28afd9b7f5fbc04bf7c9684b086c466a467631568c23549d54949fc71d2.br.png
new file mode 100644
index 00000000..ccb0d4e1
Binary files /dev/null and b/translated_images/plant-growth-temp-graph copy.65baa28afd9b7f5fbc04bf7c9684b086c466a467631568c23549d54949fc71d2.br.png differ
diff --git a/translated_images/plant-growth-temp-graph copy.65baa28afd9b7f5fbc04bf7c9684b086c466a467631568c23549d54949fc71d2.tr.png b/translated_images/plant-growth-temp-graph copy.65baa28afd9b7f5fbc04bf7c9684b086c466a467631568c23549d54949fc71d2.tr.png
new file mode 100644
index 00000000..ccb0d4e1
Binary files /dev/null and b/translated_images/plant-growth-temp-graph copy.65baa28afd9b7f5fbc04bf7c9684b086c466a467631568c23549d54949fc71d2.tr.png differ
diff --git a/translated_images/plant-growth-temp-graph.c6d69c9478e6ca832baa8dcb8d4adcbb67304074ce50e94ac8faae95975177f9.br.png b/translated_images/plant-growth-temp-graph.c6d69c9478e6ca832baa8dcb8d4adcbb67304074ce50e94ac8faae95975177f9.br.png
new file mode 100644
index 00000000..ccb0d4e1
Binary files /dev/null and b/translated_images/plant-growth-temp-graph.c6d69c9478e6ca832baa8dcb8d4adcbb67304074ce50e94ac8faae95975177f9.br.png differ
diff --git a/translated_images/plant-growth-temp-graph.c6d69c9478e6ca832baa8dcb8d4adcbb67304074ce50e94ac8faae95975177f9.tr.png b/translated_images/plant-growth-temp-graph.c6d69c9478e6ca832baa8dcb8d4adcbb67304074ce50e94ac8faae95975177f9.tr.png
new file mode 100644
index 00000000..ccb0d4e1
Binary files /dev/null and b/translated_images/plant-growth-temp-graph.c6d69c9478e6ca832baa8dcb8d4adcbb67304074ce50e94ac8faae95975177f9.tr.png differ
diff --git a/translated_images/polygon-points.302193da381cb415f46c2c7a98496ee4be05d6c73d21238a89721ad93e121233.br.png b/translated_images/polygon-points.302193da381cb415f46c2c7a98496ee4be05d6c73d21238a89721ad93e121233.br.png
new file mode 100644
index 00000000..12274b8b
Binary files /dev/null and b/translated_images/polygon-points.302193da381cb415f46c2c7a98496ee4be05d6c73d21238a89721ad93e121233.br.png differ
diff --git a/translated_images/polygon-points.302193da381cb415f46c2c7a98496ee4be05d6c73d21238a89721ad93e121233.tr.png b/translated_images/polygon-points.302193da381cb415f46c2c7a98496ee4be05d6c73d21238a89721ad93e121233.tr.png
new file mode 100644
index 00000000..12274b8b
Binary files /dev/null and b/translated_images/polygon-points.302193da381cb415f46c2c7a98496ee4be05d6c73d21238a89721ad93e121233.tr.png differ
diff --git a/translated_images/potentiometer.35a348b9ce22f6ec1199ad37d68692d04185456ccbc2541a454bb6698be9f19c.br.png b/translated_images/potentiometer.35a348b9ce22f6ec1199ad37d68692d04185456ccbc2541a454bb6698be9f19c.br.png
new file mode 100644
index 00000000..da226797
Binary files /dev/null and b/translated_images/potentiometer.35a348b9ce22f6ec1199ad37d68692d04185456ccbc2541a454bb6698be9f19c.br.png differ
diff --git a/translated_images/potentiometer.35a348b9ce22f6ec1199ad37d68692d04185456ccbc2541a454bb6698be9f19c.tr.png b/translated_images/potentiometer.35a348b9ce22f6ec1199ad37d68692d04185456ccbc2541a454bb6698be9f19c.tr.png
new file mode 100644
index 00000000..da226797
Binary files /dev/null and b/translated_images/potentiometer.35a348b9ce22f6ec1199ad37d68692d04185456ccbc2541a454bb6698be9f19c.tr.png differ
diff --git a/translated_images/proximity-sensor.f5cd752c77fb62fea000156233b32fd24fad3707ec69b8bdd8d312b7af85156d.br.png b/translated_images/proximity-sensor.f5cd752c77fb62fea000156233b32fd24fad3707ec69b8bdd8d312b7af85156d.br.png
new file mode 100644
index 00000000..67bd8a82
Binary files /dev/null and b/translated_images/proximity-sensor.f5cd752c77fb62fea000156233b32fd24fad3707ec69b8bdd8d312b7af85156d.br.png differ
diff --git a/translated_images/proximity-sensor.f5cd752c77fb62fea000156233b32fd24fad3707ec69b8bdd8d312b7af85156d.tr.png b/translated_images/proximity-sensor.f5cd752c77fb62fea000156233b32fd24fad3707ec69b8bdd8d312b7af85156d.tr.png
new file mode 100644
index 00000000..67bd8a82
Binary files /dev/null and b/translated_images/proximity-sensor.f5cd752c77fb62fea000156233b32fd24fad3707ec69b8bdd8d312b7af85156d.tr.png differ
diff --git a/translated_images/pub-sub.7c7ed43fe9fd15d4e1f81a3fd95440413c457acd9bcbe9a43341e30e88db5264.br.png b/translated_images/pub-sub.7c7ed43fe9fd15d4e1f81a3fd95440413c457acd9bcbe9a43341e30e88db5264.br.png
new file mode 100644
index 00000000..18938f59
Binary files /dev/null and b/translated_images/pub-sub.7c7ed43fe9fd15d4e1f81a3fd95440413c457acd9bcbe9a43341e30e88db5264.br.png differ
diff --git a/translated_images/pub-sub.7c7ed43fe9fd15d4e1f81a3fd95440413c457acd9bcbe9a43341e30e88db5264.tr.png b/translated_images/pub-sub.7c7ed43fe9fd15d4e1f81a3fd95440413c457acd9bcbe9a43341e30e88db5264.tr.png
new file mode 100644
index 00000000..18938f59
Binary files /dev/null and b/translated_images/pub-sub.7c7ed43fe9fd15d4e1f81a3fd95440413c457acd9bcbe9a43341e30e88db5264.tr.png differ
diff --git a/translated_images/pump-wired-to-relay.66c5cfc0d89189900cd601777f5caeb39ee35c6250f6c86bf38feaceedb21fe9.br.png b/translated_images/pump-wired-to-relay.66c5cfc0d89189900cd601777f5caeb39ee35c6250f6c86bf38feaceedb21fe9.br.png
new file mode 100644
index 00000000..db480604
Binary files /dev/null and b/translated_images/pump-wired-to-relay.66c5cfc0d89189900cd601777f5caeb39ee35c6250f6c86bf38feaceedb21fe9.br.png differ
diff --git a/translated_images/pump-wired-to-relay.66c5cfc0d89189900cd601777f5caeb39ee35c6250f6c86bf38feaceedb21fe9.tr.png b/translated_images/pump-wired-to-relay.66c5cfc0d89189900cd601777f5caeb39ee35c6250f6c86bf38feaceedb21fe9.tr.png
new file mode 100644
index 00000000..db480604
Binary files /dev/null and b/translated_images/pump-wired-to-relay.66c5cfc0d89189900cd601777f5caeb39ee35c6250f6c86bf38feaceedb21fe9.tr.png differ
diff --git a/translated_images/pwm-motor-150rpm.83347ac04ca38482bd120939b133803963c9c15ca9d8d484712a4bd92820f6a4.br.png b/translated_images/pwm-motor-150rpm.83347ac04ca38482bd120939b133803963c9c15ca9d8d484712a4bd92820f6a4.br.png
new file mode 100644
index 00000000..535e5798
Binary files /dev/null and b/translated_images/pwm-motor-150rpm.83347ac04ca38482bd120939b133803963c9c15ca9d8d484712a4bd92820f6a4.br.png differ
diff --git a/translated_images/pwm-motor-150rpm.83347ac04ca38482bd120939b133803963c9c15ca9d8d484712a4bd92820f6a4.tr.png b/translated_images/pwm-motor-150rpm.83347ac04ca38482bd120939b133803963c9c15ca9d8d484712a4bd92820f6a4.tr.png
new file mode 100644
index 00000000..535e5798
Binary files /dev/null and b/translated_images/pwm-motor-150rpm.83347ac04ca38482bd120939b133803963c9c15ca9d8d484712a4bd92820f6a4.tr.png differ
diff --git a/translated_images/pwm-motor-75rpm.a5e4c939934b6e14fd9e98e4f2c9539d723da2b18f490eae0948dd044d18ff7e.br.png b/translated_images/pwm-motor-75rpm.a5e4c939934b6e14fd9e98e4f2c9539d723da2b18f490eae0948dd044d18ff7e.br.png
new file mode 100644
index 00000000..b3d83ab7
Binary files /dev/null and b/translated_images/pwm-motor-75rpm.a5e4c939934b6e14fd9e98e4f2c9539d723da2b18f490eae0948dd044d18ff7e.br.png differ
diff --git a/translated_images/pwm-motor-75rpm.a5e4c939934b6e14fd9e98e4f2c9539d723da2b18f490eae0948dd044d18ff7e.tr.png b/translated_images/pwm-motor-75rpm.a5e4c939934b6e14fd9e98e4f2c9539d723da2b18f490eae0948dd044d18ff7e.tr.png
new file mode 100644
index 00000000..b3d83ab7
Binary files /dev/null and b/translated_images/pwm-motor-75rpm.a5e4c939934b6e14fd9e98e4f2c9539d723da2b18f490eae0948dd044d18ff7e.tr.png differ
diff --git a/translated_images/ram-comparison.6beb73541b42ac6ffde64cdf79fc925a84b932ce7ebd4d41d5fd7afc1257a696.br.png b/translated_images/ram-comparison.6beb73541b42ac6ffde64cdf79fc925a84b932ce7ebd4d41d5fd7afc1257a696.br.png
new file mode 100644
index 00000000..4bb97d60
Binary files /dev/null and b/translated_images/ram-comparison.6beb73541b42ac6ffde64cdf79fc925a84b932ce7ebd4d41d5fd7afc1257a696.br.png differ
diff --git a/translated_images/ram-comparison.6beb73541b42ac6ffde64cdf79fc925a84b932ce7ebd4d41d5fd7afc1257a696.tr.png b/translated_images/ram-comparison.6beb73541b42ac6ffde64cdf79fc925a84b932ce7ebd4d41d5fd7afc1257a696.tr.png
new file mode 100644
index 00000000..4bb97d60
Binary files /dev/null and b/translated_images/ram-comparison.6beb73541b42ac6ffde64cdf79fc925a84b932ce7ebd4d41d5fd7afc1257a696.tr.png differ
diff --git a/translated_images/raspberry-pi-4.fd4590d308c3d456db1327e86b395ddcd735513267aafd4879ea2785f7792eac.br.jpg b/translated_images/raspberry-pi-4.fd4590d308c3d456db1327e86b395ddcd735513267aafd4879ea2785f7792eac.br.jpg
new file mode 100644
index 00000000..4cf0d73d
Binary files /dev/null and b/translated_images/raspberry-pi-4.fd4590d308c3d456db1327e86b395ddcd735513267aafd4879ea2785f7792eac.br.jpg differ
diff --git a/translated_images/raspberry-pi-4.fd4590d308c3d456db1327e86b395ddcd735513267aafd4879ea2785f7792eac.tr.jpg b/translated_images/raspberry-pi-4.fd4590d308c3d456db1327e86b395ddcd735513267aafd4879ea2785f7792eac.tr.jpg
new file mode 100644
index 00000000..4cf0d73d
Binary files /dev/null and b/translated_images/raspberry-pi-4.fd4590d308c3d456db1327e86b395ddcd735513267aafd4879ea2785f7792eac.tr.jpg differ
diff --git a/translated_images/raspberry-pi-imager.24aedeab9e233d841a1504ed7cfeb871b1f8e1134cfcd8370e7f60a092056be2.br.png b/translated_images/raspberry-pi-imager.24aedeab9e233d841a1504ed7cfeb871b1f8e1134cfcd8370e7f60a092056be2.br.png
new file mode 100644
index 00000000..0aace880
Binary files /dev/null and b/translated_images/raspberry-pi-imager.24aedeab9e233d841a1504ed7cfeb871b1f8e1134cfcd8370e7f60a092056be2.br.png differ
diff --git a/translated_images/raspberry-pi-imager.24aedeab9e233d841a1504ed7cfeb871b1f8e1134cfcd8370e7f60a092056be2.tr.png b/translated_images/raspberry-pi-imager.24aedeab9e233d841a1504ed7cfeb871b1f8e1134cfcd8370e7f60a092056be2.tr.png
new file mode 100644
index 00000000..0aace880
Binary files /dev/null and b/translated_images/raspberry-pi-imager.24aedeab9e233d841a1504ed7cfeb871b1f8e1134cfcd8370e7f60a092056be2.tr.png differ
diff --git a/translated_images/raspberry-pi-logo.4efaa16605cee05489d8fa53941e991b3757aa24c20a95abdcf8cfd761953596.br.png b/translated_images/raspberry-pi-logo.4efaa16605cee05489d8fa53941e991b3757aa24c20a95abdcf8cfd761953596.br.png
new file mode 100644
index 00000000..b19b1f6b
Binary files /dev/null and b/translated_images/raspberry-pi-logo.4efaa16605cee05489d8fa53941e991b3757aa24c20a95abdcf8cfd761953596.br.png differ
diff --git a/translated_images/raspberry-pi-logo.4efaa16605cee05489d8fa53941e991b3757aa24c20a95abdcf8cfd761953596.tr.png b/translated_images/raspberry-pi-logo.4efaa16605cee05489d8fa53941e991b3757aa24c20a95abdcf8cfd761953596.tr.png
new file mode 100644
index 00000000..b19b1f6b
Binary files /dev/null and b/translated_images/raspberry-pi-logo.4efaa16605cee05489d8fa53941e991b3757aa24c20a95abdcf8cfd761953596.tr.png differ
diff --git a/translated_images/raspberry-pi-zero.f7a4133e1e7d54bb3dbb32319b217a53c5b94871995a54647f2894b54206b8d8.br.jpg b/translated_images/raspberry-pi-zero.f7a4133e1e7d54bb3dbb32319b217a53c5b94871995a54647f2894b54206b8d8.br.jpg
new file mode 100644
index 00000000..827670ed
Binary files /dev/null and b/translated_images/raspberry-pi-zero.f7a4133e1e7d54bb3dbb32319b217a53c5b94871995a54647f2894b54206b8d8.br.jpg differ
diff --git a/translated_images/raspberry-pi-zero.f7a4133e1e7d54bb3dbb32319b217a53c5b94871995a54647f2894b54206b8d8.tr.jpg b/translated_images/raspberry-pi-zero.f7a4133e1e7d54bb3dbb32319b217a53c5b94871995a54647f2894b54206b8d8.tr.jpg
new file mode 100644
index 00000000..827670ed
Binary files /dev/null and b/translated_images/raspberry-pi-zero.f7a4133e1e7d54bb3dbb32319b217a53c5b94871995a54647f2894b54206b8d8.tr.jpg differ
diff --git a/translated_images/relay-off.c34a178a2960fecdc3c6400d43e633ed11c6746cd653cfb4a768fa097c40394c.br.png b/translated_images/relay-off.c34a178a2960fecdc3c6400d43e633ed11c6746cd653cfb4a768fa097c40394c.br.png
new file mode 100644
index 00000000..435f901a
Binary files /dev/null and b/translated_images/relay-off.c34a178a2960fecdc3c6400d43e633ed11c6746cd653cfb4a768fa097c40394c.br.png differ
diff --git a/translated_images/relay-off.c34a178a2960fecdc3c6400d43e633ed11c6746cd653cfb4a768fa097c40394c.tr.png b/translated_images/relay-off.c34a178a2960fecdc3c6400d43e633ed11c6746cd653cfb4a768fa097c40394c.tr.png
new file mode 100644
index 00000000..435f901a
Binary files /dev/null and b/translated_images/relay-off.c34a178a2960fecdc3c6400d43e633ed11c6746cd653cfb4a768fa097c40394c.tr.png differ
diff --git a/translated_images/relay-on.4db16a0fd6b669262fd6699aff3fbcd31b6057c06d90411b6bddc06326d1cf75.br.png b/translated_images/relay-on.4db16a0fd6b669262fd6699aff3fbcd31b6057c06d90411b6bddc06326d1cf75.br.png
new file mode 100644
index 00000000..7308a1d1
Binary files /dev/null and b/translated_images/relay-on.4db16a0fd6b669262fd6699aff3fbcd31b6057c06d90411b6bddc06326d1cf75.br.png differ
diff --git a/translated_images/relay-on.4db16a0fd6b669262fd6699aff3fbcd31b6057c06d90411b6bddc06326d1cf75.tr.png b/translated_images/relay-on.4db16a0fd6b669262fd6699aff3fbcd31b6057c06d90411b6bddc06326d1cf75.tr.png
new file mode 100644
index 00000000..7308a1d1
Binary files /dev/null and b/translated_images/relay-on.4db16a0fd6b669262fd6699aff3fbcd31b6057c06d90411b6bddc06326d1cf75.tr.png differ
diff --git a/translated_images/resistive-soil-moisture-sensor.728a138a3d109e0653d8e4f6744140836c67461bbd0f4d887f47ed8228dc80b5.br.png b/translated_images/resistive-soil-moisture-sensor.728a138a3d109e0653d8e4f6744140836c67461bbd0f4d887f47ed8228dc80b5.br.png
new file mode 100644
index 00000000..8454c4d2
Binary files /dev/null and b/translated_images/resistive-soil-moisture-sensor.728a138a3d109e0653d8e4f6744140836c67461bbd0f4d887f47ed8228dc80b5.br.png differ
diff --git a/translated_images/resistive-soil-moisture-sensor.728a138a3d109e0653d8e4f6744140836c67461bbd0f4d887f47ed8228dc80b5.tr.png b/translated_images/resistive-soil-moisture-sensor.728a138a3d109e0653d8e4f6744140836c67461bbd0f4d887f47ed8228dc80b5.tr.png
new file mode 100644
index 00000000..8454c4d2
Binary files /dev/null and b/translated_images/resistive-soil-moisture-sensor.728a138a3d109e0653d8e4f6744140836c67461bbd0f4d887f47ed8228dc80b5.tr.png differ
diff --git a/translated_images/respeaker-35mm-speaker.ad79ef4f128c7751f0abf854869b6b779c90c12ae3e48909944a7e48aeee3c7e.br.png b/translated_images/respeaker-35mm-speaker.ad79ef4f128c7751f0abf854869b6b779c90c12ae3e48909944a7e48aeee3c7e.br.png
new file mode 100644
index 00000000..324b711d
Binary files /dev/null and b/translated_images/respeaker-35mm-speaker.ad79ef4f128c7751f0abf854869b6b779c90c12ae3e48909944a7e48aeee3c7e.br.png differ
diff --git a/translated_images/respeaker-35mm-speaker.ad79ef4f128c7751f0abf854869b6b779c90c12ae3e48909944a7e48aeee3c7e.tr.png b/translated_images/respeaker-35mm-speaker.ad79ef4f128c7751f0abf854869b6b779c90c12ae3e48909944a7e48aeee3c7e.tr.png
new file mode 100644
index 00000000..324b711d
Binary files /dev/null and b/translated_images/respeaker-35mm-speaker.ad79ef4f128c7751f0abf854869b6b779c90c12ae3e48909944a7e48aeee3c7e.tr.png differ
diff --git a/translated_images/respeaker-jst-speaker.a441d177809df9458041a2012dd336dbb22c00a5c9642647109d2940a50d6fcc.br.png b/translated_images/respeaker-jst-speaker.a441d177809df9458041a2012dd336dbb22c00a5c9642647109d2940a50d6fcc.br.png
new file mode 100644
index 00000000..ddfb42aa
Binary files /dev/null and b/translated_images/respeaker-jst-speaker.a441d177809df9458041a2012dd336dbb22c00a5c9642647109d2940a50d6fcc.br.png differ
diff --git a/translated_images/respeaker-jst-speaker.a441d177809df9458041a2012dd336dbb22c00a5c9642647109d2940a50d6fcc.tr.png b/translated_images/respeaker-jst-speaker.a441d177809df9458041a2012dd336dbb22c00a5c9642647109d2940a50d6fcc.tr.png
new file mode 100644
index 00000000..ddfb42aa
Binary files /dev/null and b/translated_images/respeaker-jst-speaker.a441d177809df9458041a2012dd336dbb22c00a5c9642647109d2940a50d6fcc.tr.png differ
diff --git a/translated_images/respeaker.f5d19d1c6b14ab1676d24ac2764e64fac5339046ae07be8b45ce07633d61b79b.br.png b/translated_images/respeaker.f5d19d1c6b14ab1676d24ac2764e64fac5339046ae07be8b45ce07633d61b79b.br.png
new file mode 100644
index 00000000..280f2fe0
Binary files /dev/null and b/translated_images/respeaker.f5d19d1c6b14ab1676d24ac2764e64fac5339046ae07be8b45ce07633d61b79b.br.png differ
diff --git a/translated_images/respeaker.f5d19d1c6b14ab1676d24ac2764e64fac5339046ae07be8b45ce07633d61b79b.tr.png b/translated_images/respeaker.f5d19d1c6b14ab1676d24ac2764e64fac5339046ae07be8b45ce07633d61b79b.tr.png
new file mode 100644
index 00000000..280f2fe0
Binary files /dev/null and b/translated_images/respeaker.f5d19d1c6b14ab1676d24ac2764e64fac5339046ae07be8b45ce07633d61b79b.tr.png differ
diff --git a/translated_images/ribbon-mic.eacc8e092c7441caee6d7a81e2f40e1675bf36269848964c7c09c9a9acb05127.br.jpg b/translated_images/ribbon-mic.eacc8e092c7441caee6d7a81e2f40e1675bf36269848964c7c09c9a9acb05127.br.jpg
new file mode 100644
index 00000000..89b581ef
Binary files /dev/null and b/translated_images/ribbon-mic.eacc8e092c7441caee6d7a81e2f40e1675bf36269848964c7c09c9a9acb05127.br.jpg differ
diff --git a/translated_images/ribbon-mic.eacc8e092c7441caee6d7a81e2f40e1675bf36269848964c7c09c9a9acb05127.tr.jpg b/translated_images/ribbon-mic.eacc8e092c7441caee6d7a81e2f40e1675bf36269848964c7c09c9a9acb05127.tr.jpg
new file mode 100644
index 00000000..89b581ef
Binary files /dev/null and b/translated_images/ribbon-mic.eacc8e092c7441caee6d7a81e2f40e1675bf36269848964c7c09c9a9acb05127.tr.jpg differ
diff --git a/translated_images/rpi-stock-with-bounding-boxes.b5540e2ecb7cd49f1271828d3be412671d950e87625c5597ea97c90f11e01097.br.jpg b/translated_images/rpi-stock-with-bounding-boxes.b5540e2ecb7cd49f1271828d3be412671d950e87625c5597ea97c90f11e01097.br.jpg
new file mode 100644
index 00000000..6efd2da1
Binary files /dev/null and b/translated_images/rpi-stock-with-bounding-boxes.b5540e2ecb7cd49f1271828d3be412671d950e87625c5597ea97c90f11e01097.br.jpg differ
diff --git a/translated_images/rpi-stock-with-bounding-boxes.b5540e2ecb7cd49f1271828d3be412671d950e87625c5597ea97c90f11e01097.tr.jpg b/translated_images/rpi-stock-with-bounding-boxes.b5540e2ecb7cd49f1271828d3be412671d950e87625c5597ea97c90f11e01097.tr.jpg
new file mode 100644
index 00000000..6efd2da1
Binary files /dev/null and b/translated_images/rpi-stock-with-bounding-boxes.b5540e2ecb7cd49f1271828d3be412671d950e87625c5597ea97c90f11e01097.tr.jpg differ
diff --git a/translated_images/sampling.6f4fadb3f2d9dfe7618f9edfe75a350e6b3f74293ec84f02ab69c19d2afe3d73.br.png b/translated_images/sampling.6f4fadb3f2d9dfe7618f9edfe75a350e6b3f74293ec84f02ab69c19d2afe3d73.br.png
new file mode 100644
index 00000000..348fe7a0
Binary files /dev/null and b/translated_images/sampling.6f4fadb3f2d9dfe7618f9edfe75a350e6b3f74293ec84f02ab69c19d2afe3d73.br.png differ
diff --git a/translated_images/sampling.6f4fadb3f2d9dfe7618f9edfe75a350e6b3f74293ec84f02ab69c19d2afe3d73.tr.png b/translated_images/sampling.6f4fadb3f2d9dfe7618f9edfe75a350e6b3f74293ec84f02ab69c19d2afe3d73.tr.png
new file mode 100644
index 00000000..348fe7a0
Binary files /dev/null and b/translated_images/sampling.6f4fadb3f2d9dfe7618f9edfe75a350e6b3f74293ec84f02ab69c19d2afe3d73.tr.png differ
diff --git a/translated_images/save-telemetry-database.ddc9c6bea0c5ba39449966a463ca6748cd8e2d565dab44ff31c9f1d2f6c21d27.br.png b/translated_images/save-telemetry-database.ddc9c6bea0c5ba39449966a463ca6748cd8e2d565dab44ff31c9f1d2f6c21d27.br.png
new file mode 100644
index 00000000..a69e73f4
Binary files /dev/null and b/translated_images/save-telemetry-database.ddc9c6bea0c5ba39449966a463ca6748cd8e2d565dab44ff31c9f1d2f6c21d27.br.png differ
diff --git a/translated_images/save-telemetry-database.ddc9c6bea0c5ba39449966a463ca6748cd8e2d565dab44ff31c9f1d2f6c21d27.tr.png b/translated_images/save-telemetry-database.ddc9c6bea0c5ba39449966a463ca6748cd8e2d565dab44ff31c9f1d2f6c21d27.tr.png
new file mode 100644
index 00000000..a69e73f4
Binary files /dev/null and b/translated_images/save-telemetry-database.ddc9c6bea0c5ba39449966a463ca6748cd8e2d565dab44ff31c9f1d2f6c21d27.tr.png differ
diff --git a/translated_images/save-telemetry-to-storage-from-functions.ed3b1820980097f143d9f0570072da11304c2bc7906359dfa075b4d9b253c20f.br.png b/translated_images/save-telemetry-to-storage-from-functions.ed3b1820980097f143d9f0570072da11304c2bc7906359dfa075b4d9b253c20f.br.png
new file mode 100644
index 00000000..49b0ca9b
Binary files /dev/null and b/translated_images/save-telemetry-to-storage-from-functions.ed3b1820980097f143d9f0570072da11304c2bc7906359dfa075b4d9b253c20f.br.png differ
diff --git a/translated_images/save-telemetry-to-storage-from-functions.ed3b1820980097f143d9f0570072da11304c2bc7906359dfa075b4d9b253c20f.tr.png b/translated_images/save-telemetry-to-storage-from-functions.ed3b1820980097f143d9f0570072da11304c2bc7906359dfa075b4d9b253c20f.tr.png
new file mode 100644
index 00000000..49b0ca9b
Binary files /dev/null and b/translated_images/save-telemetry-to-storage-from-functions.ed3b1820980097f143d9f0570072da11304c2bc7906359dfa075b4d9b253c20f.tr.png differ
diff --git a/translated_images/search-buffer-and-distance.e6a79af3898183c7b2ef6fbf12271b8b34afd23969bb946962b1b18d3d2635e8.br.png b/translated_images/search-buffer-and-distance.e6a79af3898183c7b2ef6fbf12271b8b34afd23969bb946962b1b18d3d2635e8.br.png
new file mode 100644
index 00000000..458a3c95
Binary files /dev/null and b/translated_images/search-buffer-and-distance.e6a79af3898183c7b2ef6fbf12271b8b34afd23969bb946962b1b18d3d2635e8.br.png differ
diff --git a/translated_images/search-buffer-and-distance.e6a79af3898183c7b2ef6fbf12271b8b34afd23969bb946962b1b18d3d2635e8.tr.png b/translated_images/search-buffer-and-distance.e6a79af3898183c7b2ef6fbf12271b8b34afd23969bb946962b1b18d3d2635e8.tr.png
new file mode 100644
index 00000000..458a3c95
Binary files /dev/null and b/translated_images/search-buffer-and-distance.e6a79af3898183c7b2ef6fbf12271b8b34afd23969bb946962b1b18d3d2635e8.tr.png differ
diff --git a/translated_images/seeed-logo.74732b6b482b6e8e8bdcc06f0541fc92b1dabf5e3e8f37afb91e04393a8cb977.br.png b/translated_images/seeed-logo.74732b6b482b6e8e8bdcc06f0541fc92b1dabf5e3e8f37afb91e04393a8cb977.br.png
new file mode 100644
index 00000000..90b687c2
Binary files /dev/null and b/translated_images/seeed-logo.74732b6b482b6e8e8bdcc06f0541fc92b1dabf5e3e8f37afb91e04393a8cb977.br.png differ
diff --git a/translated_images/seeed-logo.74732b6b482b6e8e8bdcc06f0541fc92b1dabf5e3e8f37afb91e04393a8cb977.tr.png b/translated_images/seeed-logo.74732b6b482b6e8e8bdcc06f0541fc92b1dabf5e3e8f37afb91e04393a8cb977.tr.png
new file mode 100644
index 00000000..90b687c2
Binary files /dev/null and b/translated_images/seeed-logo.74732b6b482b6e8e8bdcc06f0541fc92b1dabf5e3e8f37afb91e04393a8cb977.tr.png differ
diff --git a/translated_images/select-the-random-checkbox-and-set-a-range.32cf4bc7c12e797f8c76616b10c7c23a6592321bb1a6310e0b481e72f97d23b3.br.png b/translated_images/select-the-random-checkbox-and-set-a-range.32cf4bc7c12e797f8c76616b10c7c23a6592321bb1a6310e0b481e72f97d23b3.br.png
new file mode 100644
index 00000000..cb4bc445
Binary files /dev/null and b/translated_images/select-the-random-checkbox-and-set-a-range.32cf4bc7c12e797f8c76616b10c7c23a6592321bb1a6310e0b481e72f97d23b3.br.png differ
diff --git a/translated_images/select-the-random-checkbox-and-set-a-range.32cf4bc7c12e797f8c76616b10c7c23a6592321bb1a6310e0b481e72f97d23b3.tr.png b/translated_images/select-the-random-checkbox-and-set-a-range.32cf4bc7c12e797f8c76616b10c7c23a6592321bb1a6310e0b481e72f97d23b3.tr.png
new file mode 100644
index 00000000..cb4bc445
Binary files /dev/null and b/translated_images/select-the-random-checkbox-and-set-a-range.32cf4bc7c12e797f8c76616b10c7c23a6592321bb1a6310e0b481e72f97d23b3.tr.png differ
diff --git a/translated_images/send-message-asymmetric.7abe327c62615b8c19805252af5d4b6c5e7aaeb8fbc455efeff866fe2d300b62.br.png b/translated_images/send-message-asymmetric.7abe327c62615b8c19805252af5d4b6c5e7aaeb8fbc455efeff866fe2d300b62.br.png
new file mode 100644
index 00000000..e7ea8ab6
Binary files /dev/null and b/translated_images/send-message-asymmetric.7abe327c62615b8c19805252af5d4b6c5e7aaeb8fbc455efeff866fe2d300b62.br.png differ
diff --git a/translated_images/send-message-asymmetric.7abe327c62615b8c19805252af5d4b6c5e7aaeb8fbc455efeff866fe2d300b62.tr.png b/translated_images/send-message-asymmetric.7abe327c62615b8c19805252af5d4b6c5e7aaeb8fbc455efeff866fe2d300b62.tr.png
new file mode 100644
index 00000000..e7ea8ab6
Binary files /dev/null and b/translated_images/send-message-asymmetric.7abe327c62615b8c19805252af5d4b6c5e7aaeb8fbc455efeff866fe2d300b62.tr.png differ
diff --git a/translated_images/send-message-certificate.9cc576ac1e46b76eb58ebc8eedaa522566fa0700076da46f5180aad78c2435db.br.png b/translated_images/send-message-certificate.9cc576ac1e46b76eb58ebc8eedaa522566fa0700076da46f5180aad78c2435db.br.png
new file mode 100644
index 00000000..6f138cf9
Binary files /dev/null and b/translated_images/send-message-certificate.9cc576ac1e46b76eb58ebc8eedaa522566fa0700076da46f5180aad78c2435db.br.png differ
diff --git a/translated_images/send-message-certificate.9cc576ac1e46b76eb58ebc8eedaa522566fa0700076da46f5180aad78c2435db.tr.png b/translated_images/send-message-certificate.9cc576ac1e46b76eb58ebc8eedaa522566fa0700076da46f5180aad78c2435db.tr.png
new file mode 100644
index 00000000..6f138cf9
Binary files /dev/null and b/translated_images/send-message-certificate.9cc576ac1e46b76eb58ebc8eedaa522566fa0700076da46f5180aad78c2435db.tr.png differ
diff --git a/translated_images/send-message-symmetric-key-hacker.e7cb53db1707adfb1486a8144060cb76435fe8dbdede8cecc09e7d15b2d9a251.br.png b/translated_images/send-message-symmetric-key-hacker.e7cb53db1707adfb1486a8144060cb76435fe8dbdede8cecc09e7d15b2d9a251.br.png
new file mode 100644
index 00000000..2f5f2861
Binary files /dev/null and b/translated_images/send-message-symmetric-key-hacker.e7cb53db1707adfb1486a8144060cb76435fe8dbdede8cecc09e7d15b2d9a251.br.png differ
diff --git a/translated_images/send-message-symmetric-key-hacker.e7cb53db1707adfb1486a8144060cb76435fe8dbdede8cecc09e7d15b2d9a251.tr.png b/translated_images/send-message-symmetric-key-hacker.e7cb53db1707adfb1486a8144060cb76435fe8dbdede8cecc09e7d15b2d9a251.tr.png
new file mode 100644
index 00000000..2f5f2861
Binary files /dev/null and b/translated_images/send-message-symmetric-key-hacker.e7cb53db1707adfb1486a8144060cb76435fe8dbdede8cecc09e7d15b2d9a251.tr.png differ
diff --git a/translated_images/send-message-symmetric-key.a2e8ad0d495896ffcdf15d25bb4491c695a5cb851457b359fb0f0c89d67707c9.br.png b/translated_images/send-message-symmetric-key.a2e8ad0d495896ffcdf15d25bb4491c695a5cb851457b359fb0f0c89d67707c9.br.png
new file mode 100644
index 00000000..f2f1b63e
Binary files /dev/null and b/translated_images/send-message-symmetric-key.a2e8ad0d495896ffcdf15d25bb4491c695a5cb851457b359fb0f0c89d67707c9.br.png differ
diff --git a/translated_images/send-message-symmetric-key.a2e8ad0d495896ffcdf15d25bb4491c695a5cb851457b359fb0f0c89d67707c9.tr.png b/translated_images/send-message-symmetric-key.a2e8ad0d495896ffcdf15d25bb4491c695a5cb851457b359fb0f0c89d67707c9.tr.png
new file mode 100644
index 00000000..f2f1b63e
Binary files /dev/null and b/translated_images/send-message-symmetric-key.a2e8ad0d495896ffcdf15d25bb4491c695a5cb851457b359fb0f0c89d67707c9.tr.png differ
diff --git a/translated_images/sentence-as-intent-entities.301401696f9922590a99343f5c5d211b710b906f212f0d4d034cee3ffb610272.br.png b/translated_images/sentence-as-intent-entities.301401696f9922590a99343f5c5d211b710b906f212f0d4d034cee3ffb610272.br.png
new file mode 100644
index 00000000..5643c164
Binary files /dev/null and b/translated_images/sentence-as-intent-entities.301401696f9922590a99343f5c5d211b710b906f212f0d4d034cee3ffb610272.br.png differ
diff --git a/translated_images/sentence-as-intent-entities.301401696f9922590a99343f5c5d211b710b906f212f0d4d034cee3ffb610272.tr.png b/translated_images/sentence-as-intent-entities.301401696f9922590a99343f5c5d211b710b906f212f0d4d034cee3ffb610272.tr.png
new file mode 100644
index 00000000..5643c164
Binary files /dev/null and b/translated_images/sentence-as-intent-entities.301401696f9922590a99343f5c5d211b710b906f212f0d4d034cee3ffb610272.tr.png differ
diff --git a/translated_images/serverless-scaling.f8c769adf0413fd17be1af4f07ff63016b347e2ff869be6c4abb211f9e93909d.br.png b/translated_images/serverless-scaling.f8c769adf0413fd17be1af4f07ff63016b347e2ff869be6c4abb211f9e93909d.br.png
new file mode 100644
index 00000000..73fa30d1
Binary files /dev/null and b/translated_images/serverless-scaling.f8c769adf0413fd17be1af4f07ff63016b347e2ff869be6c4abb211f9e93909d.br.png differ
diff --git a/translated_images/serverless-scaling.f8c769adf0413fd17be1af4f07ff63016b347e2ff869be6c4abb211f9e93909d.tr.png b/translated_images/serverless-scaling.f8c769adf0413fd17be1af4f07ff63016b347e2ff869be6c4abb211f9e93909d.tr.png
new file mode 100644
index 00000000..73fa30d1
Binary files /dev/null and b/translated_images/serverless-scaling.f8c769adf0413fd17be1af4f07ff63016b347e2ff869be6c4abb211f9e93909d.tr.png differ
diff --git a/translated_images/shapes-to-images.1a309f0ea88dd66fafa4da6d38e88806ce174cc6a88081efb32852230ed55de8.br.png b/translated_images/shapes-to-images.1a309f0ea88dd66fafa4da6d38e88806ce174cc6a88081efb32852230ed55de8.br.png
new file mode 100644
index 00000000..eee39f7d
Binary files /dev/null and b/translated_images/shapes-to-images.1a309f0ea88dd66fafa4da6d38e88806ce174cc6a88081efb32852230ed55de8.br.png differ
diff --git a/translated_images/shapes-to-images.1a309f0ea88dd66fafa4da6d38e88806ce174cc6a88081efb32852230ed55de8.tr.png b/translated_images/shapes-to-images.1a309f0ea88dd66fafa4da6d38e88806ce174cc6a88081efb32852230ed55de8.tr.png
new file mode 100644
index 00000000..eee39f7d
Binary files /dev/null and b/translated_images/shapes-to-images.1a309f0ea88dd66fafa4da6d38e88806ce174cc6a88081efb32852230ed55de8.tr.png differ
diff --git a/translated_images/smarter-thermostat.a75855f15d2d9e63d5da9d7ba5847a987f6c9d98e96e770c203532275194e27d.br.png b/translated_images/smarter-thermostat.a75855f15d2d9e63d5da9d7ba5847a987f6c9d98e96e770c203532275194e27d.br.png
new file mode 100644
index 00000000..5a0fb117
Binary files /dev/null and b/translated_images/smarter-thermostat.a75855f15d2d9e63d5da9d7ba5847a987f6c9d98e96e770c203532275194e27d.br.png differ
diff --git a/translated_images/smarter-thermostat.a75855f15d2d9e63d5da9d7ba5847a987f6c9d98e96e770c203532275194e27d.tr.png b/translated_images/smarter-thermostat.a75855f15d2d9e63d5da9d7ba5847a987f6c9d98e96e770c203532275194e27d.tr.png
new file mode 100644
index 00000000..5a0fb117
Binary files /dev/null and b/translated_images/smarter-thermostat.a75855f15d2d9e63d5da9d7ba5847a987f6c9d98e96e770c203532275194e27d.tr.png differ
diff --git a/translated_images/soil-moisture-delay.865f3fae206db01d5f8f100f4f44040215d44a0412dd3450aef7ff7b93b6d273.br.png b/translated_images/soil-moisture-delay.865f3fae206db01d5f8f100f4f44040215d44a0412dd3450aef7ff7b93b6d273.br.png
new file mode 100644
index 00000000..27ddbfee
Binary files /dev/null and b/translated_images/soil-moisture-delay.865f3fae206db01d5f8f100f4f44040215d44a0412dd3450aef7ff7b93b6d273.br.png differ
diff --git a/translated_images/soil-moisture-delay.865f3fae206db01d5f8f100f4f44040215d44a0412dd3450aef7ff7b93b6d273.tr.png b/translated_images/soil-moisture-delay.865f3fae206db01d5f8f100f4f44040215d44a0412dd3450aef7ff7b93b6d273.tr.png
new file mode 100644
index 00000000..27ddbfee
Binary files /dev/null and b/translated_images/soil-moisture-delay.865f3fae206db01d5f8f100f4f44040215d44a0412dd3450aef7ff7b93b6d273.tr.png differ
diff --git a/translated_images/soil-moisture-sensor-in-soil.bfad91002bda5e960f8c51ee64b02ee59b32c8c717e3515a2c945f33e614e403.br.png b/translated_images/soil-moisture-sensor-in-soil.bfad91002bda5e960f8c51ee64b02ee59b32c8c717e3515a2c945f33e614e403.br.png
new file mode 100644
index 00000000..ee07bd10
Binary files /dev/null and b/translated_images/soil-moisture-sensor-in-soil.bfad91002bda5e960f8c51ee64b02ee59b32c8c717e3515a2c945f33e614e403.br.png differ
diff --git a/translated_images/soil-moisture-sensor-in-soil.bfad91002bda5e960f8c51ee64b02ee59b32c8c717e3515a2c945f33e614e403.tr.png b/translated_images/soil-moisture-sensor-in-soil.bfad91002bda5e960f8c51ee64b02ee59b32c8c717e3515a2c945f33e614e403.tr.png
new file mode 100644
index 00000000..ee07bd10
Binary files /dev/null and b/translated_images/soil-moisture-sensor-in-soil.bfad91002bda5e960f8c51ee64b02ee59b32c8c717e3515a2c945f33e614e403.tr.png differ
diff --git a/translated_images/soil-moisture-to-voltage-with-reading.681cb3e1f8b68caf5547dbf1415851c82e201edfb78face16fc98da4051ed9b2.br.png b/translated_images/soil-moisture-to-voltage-with-reading.681cb3e1f8b68caf5547dbf1415851c82e201edfb78face16fc98da4051ed9b2.br.png
new file mode 100644
index 00000000..37a2464a
Binary files /dev/null and b/translated_images/soil-moisture-to-voltage-with-reading.681cb3e1f8b68caf5547dbf1415851c82e201edfb78face16fc98da4051ed9b2.br.png differ
diff --git a/translated_images/soil-moisture-to-voltage-with-reading.681cb3e1f8b68caf5547dbf1415851c82e201edfb78face16fc98da4051ed9b2.tr.png b/translated_images/soil-moisture-to-voltage-with-reading.681cb3e1f8b68caf5547dbf1415851c82e201edfb78face16fc98da4051ed9b2.tr.png
new file mode 100644
index 00000000..37a2464a
Binary files /dev/null and b/translated_images/soil-moisture-to-voltage-with-reading.681cb3e1f8b68caf5547dbf1415851c82e201edfb78face16fc98da4051ed9b2.tr.png differ
diff --git a/translated_images/soil-moisture-to-voltage.df86d80cda1587008f312431ed5f79eb6c50c58d4fbc25a6763c5e9127c3106b.br.png b/translated_images/soil-moisture-to-voltage.df86d80cda1587008f312431ed5f79eb6c50c58d4fbc25a6763c5e9127c3106b.br.png
new file mode 100644
index 00000000..d852153c
Binary files /dev/null and b/translated_images/soil-moisture-to-voltage.df86d80cda1587008f312431ed5f79eb6c50c58d4fbc25a6763c5e9127c3106b.br.png differ
diff --git a/translated_images/soil-moisture-to-voltage.df86d80cda1587008f312431ed5f79eb6c50c58d4fbc25a6763c5e9127c3106b.tr.png b/translated_images/soil-moisture-to-voltage.df86d80cda1587008f312431ed5f79eb6c50c58d4fbc25a6763c5e9127c3106b.tr.png
new file mode 100644
index 00000000..d852153c
Binary files /dev/null and b/translated_images/soil-moisture-to-voltage.df86d80cda1587008f312431ed5f79eb6c50c58d4fbc25a6763c5e9127c3106b.tr.png differ
diff --git a/translated_images/soil-moisture-travel.a0e31af222cf14385de5380dfc32c7b8213960965228b8e4f7b7ab7f73b310a3.br.png b/translated_images/soil-moisture-travel.a0e31af222cf14385de5380dfc32c7b8213960965228b8e4f7b7ab7f73b310a3.br.png
new file mode 100644
index 00000000..a457ac8d
Binary files /dev/null and b/translated_images/soil-moisture-travel.a0e31af222cf14385de5380dfc32c7b8213960965228b8e4f7b7ab7f73b310a3.br.png differ
diff --git a/translated_images/soil-moisture-travel.a0e31af222cf14385de5380dfc32c7b8213960965228b8e4f7b7ab7f73b310a3.tr.png b/translated_images/soil-moisture-travel.a0e31af222cf14385de5380dfc32c7b8213960965228b8e4f7b7ab7f73b310a3.tr.png
new file mode 100644
index 00000000..a457ac8d
Binary files /dev/null and b/translated_images/soil-moisture-travel.a0e31af222cf14385de5380dfc32c7b8213960965228b8e4f7b7ab7f73b310a3.tr.png differ
diff --git a/translated_images/spi.297431d6f98b386b4ff88aea44ce9c1e7acfb1ef69c7e4e388a7aa97b6948e24.br.png b/translated_images/spi.297431d6f98b386b4ff88aea44ce9c1e7acfb1ef69c7e4e388a7aa97b6948e24.br.png
new file mode 100644
index 00000000..3eccd326
Binary files /dev/null and b/translated_images/spi.297431d6f98b386b4ff88aea44ce9c1e7acfb1ef69c7e4e388a7aa97b6948e24.br.png differ
diff --git a/translated_images/spi.297431d6f98b386b4ff88aea44ce9c1e7acfb1ef69c7e4e388a7aa97b6948e24.tr.png b/translated_images/spi.297431d6f98b386b4ff88aea44ce9c1e7acfb1ef69c7e4e388a7aa97b6948e24.tr.png
new file mode 100644
index 00000000..3eccd326
Binary files /dev/null and b/translated_images/spi.297431d6f98b386b4ff88aea44ce9c1e7acfb1ef69c7e4e388a7aa97b6948e24.tr.png differ
diff --git a/translated_images/sql-database.be160f12bfccefd3ca718a66468c2c4c89c53e5aad4c295324d576da87f9dfdd.br.png b/translated_images/sql-database.be160f12bfccefd3ca718a66468c2c4c89c53e5aad4c295324d576da87f9dfdd.br.png
new file mode 100644
index 00000000..49083372
Binary files /dev/null and b/translated_images/sql-database.be160f12bfccefd3ca718a66468c2c4c89c53e5aad4c295324d576da87f9dfdd.br.png differ
diff --git a/translated_images/sql-database.be160f12bfccefd3ca718a66468c2c4c89c53e5aad4c295324d576da87f9dfdd.tr.png b/translated_images/sql-database.be160f12bfccefd3ca718a66468c2c4c89c53e5aad4c295324d576da87f9dfdd.tr.png
new file mode 100644
index 00000000..49083372
Binary files /dev/null and b/translated_images/sql-database.be160f12bfccefd3ca718a66468c2c4c89c53e5aad4c295324d576da87f9dfdd.tr.png differ
diff --git a/translated_images/stock-7-cans-tomato-paste.f86059cc573d7becaa89a0eafb9d2cd7e2fe37405a530fe565990e2333d0e4a1.br.png b/translated_images/stock-7-cans-tomato-paste.f86059cc573d7becaa89a0eafb9d2cd7e2fe37405a530fe565990e2333d0e4a1.br.png
new file mode 100644
index 00000000..1b4a94e5
Binary files /dev/null and b/translated_images/stock-7-cans-tomato-paste.f86059cc573d7becaa89a0eafb9d2cd7e2fe37405a530fe565990e2333d0e4a1.br.png differ
diff --git a/translated_images/stock-7-cans-tomato-paste.f86059cc573d7becaa89a0eafb9d2cd7e2fe37405a530fe565990e2333d0e4a1.tr.png b/translated_images/stock-7-cans-tomato-paste.f86059cc573d7becaa89a0eafb9d2cd7e2fe37405a530fe565990e2333d0e4a1.tr.png
new file mode 100644
index 00000000..1b4a94e5
Binary files /dev/null and b/translated_images/stock-7-cans-tomato-paste.f86059cc573d7becaa89a0eafb9d2cd7e2fe37405a530fe565990e2333d0e4a1.tr.png differ
diff --git a/translated_images/stock-rogue-corn.be1f3ada8c4578544641af66671c1711a4c02297f14cc7f503354dae0d30a954.br.png b/translated_images/stock-rogue-corn.be1f3ada8c4578544641af66671c1711a4c02297f14cc7f503354dae0d30a954.br.png
new file mode 100644
index 00000000..8589e88f
Binary files /dev/null and b/translated_images/stock-rogue-corn.be1f3ada8c4578544641af66671c1711a4c02297f14cc7f503354dae0d30a954.br.png differ
diff --git a/translated_images/stock-rogue-corn.be1f3ada8c4578544641af66671c1711a4c02297f14cc7f503354dae0d30a954.tr.png b/translated_images/stock-rogue-corn.be1f3ada8c4578544641af66671c1711a4c02297f14cc7f503354dae0d30a954.tr.png
new file mode 100644
index 00000000..8589e88f
Binary files /dev/null and b/translated_images/stock-rogue-corn.be1f3ada8c4578544641af66671c1711a4c02297f14cc7f503354dae0d30a954.tr.png differ
diff --git a/translated_images/strawberry-with-pump.b410fc72ac6aabad3e28de9775bf2393ead73dcfec6fd8c9bc01cf107ecd171a.br.png b/translated_images/strawberry-with-pump.b410fc72ac6aabad3e28de9775bf2393ead73dcfec6fd8c9bc01cf107ecd171a.br.png
new file mode 100644
index 00000000..e1246f56
Binary files /dev/null and b/translated_images/strawberry-with-pump.b410fc72ac6aabad3e28de9775bf2393ead73dcfec6fd8c9bc01cf107ecd171a.br.png differ
diff --git a/translated_images/strawberry-with-pump.b410fc72ac6aabad3e28de9775bf2393ead73dcfec6fd8c9bc01cf107ecd171a.tr.png b/translated_images/strawberry-with-pump.b410fc72ac6aabad3e28de9775bf2393ead73dcfec6fd8c9bc01cf107ecd171a.tr.png
new file mode 100644
index 00000000..e1246f56
Binary files /dev/null and b/translated_images/strawberry-with-pump.b410fc72ac6aabad3e28de9775bf2393ead73dcfec6fd8c9bc01cf107ecd171a.tr.png differ
diff --git a/translated_images/telemetry.21e5d8b97649d2ebeb0f68d4b9691ab2d1f7bd629338e131465aff8a614e4d4a.br.png b/translated_images/telemetry.21e5d8b97649d2ebeb0f68d4b9691ab2d1f7bd629338e131465aff8a614e4d4a.br.png
new file mode 100644
index 00000000..db66a52b
Binary files /dev/null and b/translated_images/telemetry.21e5d8b97649d2ebeb0f68d4b9691ab2d1f7bd629338e131465aff8a614e4d4a.br.png differ
diff --git a/translated_images/telemetry.21e5d8b97649d2ebeb0f68d4b9691ab2d1f7bd629338e131465aff8a614e4d4a.tr.png b/translated_images/telemetry.21e5d8b97649d2ebeb0f68d4b9691ab2d1f7bd629338e131465aff8a614e4d4a.tr.png
new file mode 100644
index 00000000..db66a52b
Binary files /dev/null and b/translated_images/telemetry.21e5d8b97649d2ebeb0f68d4b9691ab2d1f7bd629338e131465aff8a614e4d4a.tr.png differ
diff --git a/translated_images/temperature-as-digital.85004491b977bae1129707df107c0b19fe6fc6374210e9027e04acb34a640c78.br.png b/translated_images/temperature-as-digital.85004491b977bae1129707df107c0b19fe6fc6374210e9027e04acb34a640c78.br.png
new file mode 100644
index 00000000..66c76c2f
Binary files /dev/null and b/translated_images/temperature-as-digital.85004491b977bae1129707df107c0b19fe6fc6374210e9027e04acb34a640c78.br.png differ
diff --git a/translated_images/temperature-as-digital.85004491b977bae1129707df107c0b19fe6fc6374210e9027e04acb34a640c78.tr.png b/translated_images/temperature-as-digital.85004491b977bae1129707df107c0b19fe6fc6374210e9027e04acb34a640c78.tr.png
new file mode 100644
index 00000000..66c76c2f
Binary files /dev/null and b/translated_images/temperature-as-digital.85004491b977bae1129707df107c0b19fe6fc6374210e9027e04acb34a640c78.tr.png differ
diff --git a/translated_images/time-of-flight-banana.079921ad8b1496e4525dc26b4cdc71a076407aba3e72ba113ba2e38febae92c5.br.png b/translated_images/time-of-flight-banana.079921ad8b1496e4525dc26b4cdc71a076407aba3e72ba113ba2e38febae92c5.br.png
new file mode 100644
index 00000000..450b824c
Binary files /dev/null and b/translated_images/time-of-flight-banana.079921ad8b1496e4525dc26b4cdc71a076407aba3e72ba113ba2e38febae92c5.br.png differ
diff --git a/translated_images/time-of-flight-banana.079921ad8b1496e4525dc26b4cdc71a076407aba3e72ba113ba2e38febae92c5.tr.png b/translated_images/time-of-flight-banana.079921ad8b1496e4525dc26b4cdc71a076407aba3e72ba113ba2e38febae92c5.tr.png
new file mode 100644
index 00000000..450b824c
Binary files /dev/null and b/translated_images/time-of-flight-banana.079921ad8b1496e4525dc26b4cdc71a076407aba3e72ba113ba2e38febae92c5.tr.png differ
diff --git a/translated_images/traditional-vs-ml.5c20c169621fa539ca84a2cd9a49f6ff7410b3a6c6b46c97ff2af3f99db3c66b.br.png b/translated_images/traditional-vs-ml.5c20c169621fa539ca84a2cd9a49f6ff7410b3a6c6b46c97ff2af3f99db3c66b.br.png
new file mode 100644
index 00000000..615bc7a9
Binary files /dev/null and b/translated_images/traditional-vs-ml.5c20c169621fa539ca84a2cd9a49f6ff7410b3a6c6b46c97ff2af3f99db3c66b.br.png differ
diff --git a/translated_images/traditional-vs-ml.5c20c169621fa539ca84a2cd9a49f6ff7410b3a6c6b46c97ff2af3f99db3c66b.tr.png b/translated_images/traditional-vs-ml.5c20c169621fa539ca84a2cd9a49f6ff7410b3a6c6b46c97ff2af3f99db3c66b.tr.png
new file mode 100644
index 00000000..615bc7a9
Binary files /dev/null and b/translated_images/traditional-vs-ml.5c20c169621fa539ca84a2cd9a49f6ff7410b3a6c6b46c97ff2af3f99db3c66b.tr.png differ
diff --git a/translated_images/translated-smart-timer.08ac20057fdc5c3778ed41cb425dca5d7fbcd4584b6da7b73ca67115a5b8a883.br.png b/translated_images/translated-smart-timer.08ac20057fdc5c3778ed41cb425dca5d7fbcd4584b6da7b73ca67115a5b8a883.br.png
new file mode 100644
index 00000000..3c9e2930
Binary files /dev/null and b/translated_images/translated-smart-timer.08ac20057fdc5c3778ed41cb425dca5d7fbcd4584b6da7b73ca67115a5b8a883.br.png differ
diff --git a/translated_images/translated-smart-timer.08ac20057fdc5c3778ed41cb425dca5d7fbcd4584b6da7b73ca67115a5b8a883.tr.png b/translated_images/translated-smart-timer.08ac20057fdc5c3778ed41cb425dca5d7fbcd4584b6da7b73ca67115a5b8a883.tr.png
new file mode 100644
index 00000000..3c9e2930
Binary files /dev/null and b/translated_images/translated-smart-timer.08ac20057fdc5c3778ed41cb425dca5d7fbcd4584b6da7b73ca67115a5b8a883.tr.png differ
diff --git a/translated_images/transpiration.b735aa34e4372e659f76d82527e9ce683f076d56065d0d8fddf13321666f4d80.br.png b/translated_images/transpiration.b735aa34e4372e659f76d82527e9ce683f076d56065d0d8fddf13321666f4d80.br.png
new file mode 100644
index 00000000..e4bb0186
Binary files /dev/null and b/translated_images/transpiration.b735aa34e4372e659f76d82527e9ce683f076d56065d0d8fddf13321666f4d80.br.png differ
diff --git a/translated_images/transpiration.b735aa34e4372e659f76d82527e9ce683f076d56065d0d8fddf13321666f4d80.tr.png b/translated_images/transpiration.b735aa34e4372e659f76d82527e9ce683f076d56065d0d8fddf13321666f4d80.tr.png
new file mode 100644
index 00000000..e4bb0186
Binary files /dev/null and b/translated_images/transpiration.b735aa34e4372e659f76d82527e9ce683f076d56065d0d8fddf13321666f4d80.tr.png differ
diff --git a/translated_images/tts-overview.193843cf3f5ee09f8b3371a9fdaeb0f116698a07ca69daaa77158da4800e5453.br.png b/translated_images/tts-overview.193843cf3f5ee09f8b3371a9fdaeb0f116698a07ca69daaa77158da4800e5453.br.png
new file mode 100644
index 00000000..91e4cba6
Binary files /dev/null and b/translated_images/tts-overview.193843cf3f5ee09f8b3371a9fdaeb0f116698a07ca69daaa77158da4800e5453.br.png differ
diff --git a/translated_images/tts-overview.193843cf3f5ee09f8b3371a9fdaeb0f116698a07ca69daaa77158da4800e5453.tr.png b/translated_images/tts-overview.193843cf3f5ee09f8b3371a9fdaeb0f116698a07ca69daaa77158da4800e5453.tr.png
new file mode 100644
index 00000000..91e4cba6
Binary files /dev/null and b/translated_images/tts-overview.193843cf3f5ee09f8b3371a9fdaeb0f116698a07ca69daaa77158da4800e5453.tr.png differ
diff --git a/translated_images/uart.d0dbd3fb9e3728c6ee1995c8206f3cdb13cdfd208f13745e8ef6854cab75e421.br.png b/translated_images/uart.d0dbd3fb9e3728c6ee1995c8206f3cdb13cdfd208f13745e8ef6854cab75e421.br.png
new file mode 100644
index 00000000..91230d0c
Binary files /dev/null and b/translated_images/uart.d0dbd3fb9e3728c6ee1995c8206f3cdb13cdfd208f13745e8ef6854cab75e421.br.png differ
diff --git a/translated_images/uart.d0dbd3fb9e3728c6ee1995c8206f3cdb13cdfd208f13745e8ef6854cab75e421.tr.png b/translated_images/uart.d0dbd3fb9e3728c6ee1995c8206f3cdb13cdfd208f13745e8ef6854cab75e421.tr.png
new file mode 100644
index 00000000..91230d0c
Binary files /dev/null and b/translated_images/uart.d0dbd3fb9e3728c6ee1995c8206f3cdb13cdfd208f13745e8ef6854cab75e421.tr.png differ
diff --git a/translated_images/vscode-azure-functions-init-notification.bd19b49229963edb5311fb3a79445ea469424759d2917ee2f2eb6f92d65d5086.br.png b/translated_images/vscode-azure-functions-init-notification.bd19b49229963edb5311fb3a79445ea469424759d2917ee2f2eb6f92d65d5086.br.png
new file mode 100644
index 00000000..128cd4a9
Binary files /dev/null and b/translated_images/vscode-azure-functions-init-notification.bd19b49229963edb5311fb3a79445ea469424759d2917ee2f2eb6f92d65d5086.br.png differ
diff --git a/translated_images/vscode-azure-functions-init-notification.bd19b49229963edb5311fb3a79445ea469424759d2917ee2f2eb6f92d65d5086.tr.png b/translated_images/vscode-azure-functions-init-notification.bd19b49229963edb5311fb3a79445ea469424759d2917ee2f2eb6f92d65d5086.tr.png
new file mode 100644
index 00000000..128cd4a9
Binary files /dev/null and b/translated_images/vscode-azure-functions-init-notification.bd19b49229963edb5311fb3a79445ea469424759d2917ee2f2eb6f92d65d5086.tr.png differ
diff --git a/translated_images/vscode-kill-terminal.1cc4de7c6f25ee08f423f0ead714e61d069fac1eb2089e97b8a7bbcb3d45fe5e.br.png b/translated_images/vscode-kill-terminal.1cc4de7c6f25ee08f423f0ead714e61d069fac1eb2089e97b8a7bbcb3d45fe5e.br.png
new file mode 100644
index 00000000..8d62d827
Binary files /dev/null and b/translated_images/vscode-kill-terminal.1cc4de7c6f25ee08f423f0ead714e61d069fac1eb2089e97b8a7bbcb3d45fe5e.br.png differ
diff --git a/translated_images/vscode-kill-terminal.1cc4de7c6f25ee08f423f0ead714e61d069fac1eb2089e97b8a7bbcb3d45fe5e.tr.png b/translated_images/vscode-kill-terminal.1cc4de7c6f25ee08f423f0ead714e61d069fac1eb2089e97b8a7bbcb3d45fe5e.tr.png
new file mode 100644
index 00000000..8d62d827
Binary files /dev/null and b/translated_images/vscode-kill-terminal.1cc4de7c6f25ee08f423f0ead714e61d069fac1eb2089e97b8a7bbcb3d45fe5e.tr.png differ
diff --git a/translated_images/vscode-new-file-button.182702340fe6723c8cbb4cfa1a9a9fb0d0a5227643b4e46b91ff67b07a39a92f.br.png b/translated_images/vscode-new-file-button.182702340fe6723c8cbb4cfa1a9a9fb0d0a5227643b4e46b91ff67b07a39a92f.br.png
new file mode 100644
index 00000000..a84ab661
Binary files /dev/null and b/translated_images/vscode-new-file-button.182702340fe6723c8cbb4cfa1a9a9fb0d0a5227643b4e46b91ff67b07a39a92f.br.png differ
diff --git a/translated_images/vscode-new-file-button.182702340fe6723c8cbb4cfa1a9a9fb0d0a5227643b4e46b91ff67b07a39a92f.tr.png b/translated_images/vscode-new-file-button.182702340fe6723c8cbb4cfa1a9a9fb0d0a5227643b4e46b91ff67b07a39a92f.tr.png
new file mode 100644
index 00000000..a84ab661
Binary files /dev/null and b/translated_images/vscode-new-file-button.182702340fe6723c8cbb4cfa1a9a9fb0d0a5227643b4e46b91ff67b07a39a92f.tr.png differ
diff --git a/translated_images/vscode-new-terminal.77db8fc0f9cd31824b0e49a201beafe4ae4616d6c7339992cb2819e789b3eff9.br.png b/translated_images/vscode-new-terminal.77db8fc0f9cd31824b0e49a201beafe4ae4616d6c7339992cb2819e789b3eff9.br.png
new file mode 100644
index 00000000..4c88d3d3
Binary files /dev/null and b/translated_images/vscode-new-terminal.77db8fc0f9cd31824b0e49a201beafe4ae4616d6c7339992cb2819e789b3eff9.br.png differ
diff --git a/translated_images/vscode-new-terminal.77db8fc0f9cd31824b0e49a201beafe4ae4616d6c7339992cb2819e789b3eff9.tr.png b/translated_images/vscode-new-terminal.77db8fc0f9cd31824b0e49a201beafe4ae4616d6c7339992cb2819e789b3eff9.tr.png
new file mode 100644
index 00000000..4c88d3d3
Binary files /dev/null and b/translated_images/vscode-new-terminal.77db8fc0f9cd31824b0e49a201beafe4ae4616d6c7339992cb2819e789b3eff9.tr.png differ
diff --git a/translated_images/vscode-open-nightlight-remote.d3d2a4011e30d535c4b70084f6e94bf6b5b1327fd8e77affe64465ac151ee766.br.png b/translated_images/vscode-open-nightlight-remote.d3d2a4011e30d535c4b70084f6e94bf6b5b1327fd8e77affe64465ac151ee766.br.png
new file mode 100644
index 00000000..bc1895b8
Binary files /dev/null and b/translated_images/vscode-open-nightlight-remote.d3d2a4011e30d535c4b70084f6e94bf6b5b1327fd8e77affe64465ac151ee766.br.png differ
diff --git a/translated_images/vscode-open-nightlight-remote.d3d2a4011e30d535c4b70084f6e94bf6b5b1327fd8e77affe64465ac151ee766.tr.png b/translated_images/vscode-open-nightlight-remote.d3d2a4011e30d535c4b70084f6e94bf6b5b1327fd8e77affe64465ac151ee766.tr.png
new file mode 100644
index 00000000..bc1895b8
Binary files /dev/null and b/translated_images/vscode-open-nightlight-remote.d3d2a4011e30d535c4b70084f6e94bf6b5b1327fd8e77affe64465ac151ee766.tr.png differ
diff --git a/translated_images/vscode-platformio-build-command-palette.7708e7ec7d75d7ee1a0551f42229a321c7e2e4bccac7f1a64df2ed55999f723d.br.png b/translated_images/vscode-platformio-build-command-palette.7708e7ec7d75d7ee1a0551f42229a321c7e2e4bccac7f1a64df2ed55999f723d.br.png
new file mode 100644
index 00000000..d8ff3180
Binary files /dev/null and b/translated_images/vscode-platformio-build-command-palette.7708e7ec7d75d7ee1a0551f42229a321c7e2e4bccac7f1a64df2ed55999f723d.br.png differ
diff --git a/translated_images/vscode-platformio-build-command-palette.7708e7ec7d75d7ee1a0551f42229a321c7e2e4bccac7f1a64df2ed55999f723d.tr.png b/translated_images/vscode-platformio-build-command-palette.7708e7ec7d75d7ee1a0551f42229a321c7e2e4bccac7f1a64df2ed55999f723d.tr.png
new file mode 100644
index 00000000..d8ff3180
Binary files /dev/null and b/translated_images/vscode-platformio-build-command-palette.7708e7ec7d75d7ee1a0551f42229a321c7e2e4bccac7f1a64df2ed55999f723d.tr.png differ
diff --git a/translated_images/vscode-platformio-home-open.3f9a41bfd3f4da1c866ec3e69f1675faa30b823b5b58ab58ac88e5df9a85da19.br.png b/translated_images/vscode-platformio-home-open.3f9a41bfd3f4da1c866ec3e69f1675faa30b823b5b58ab58ac88e5df9a85da19.br.png
new file mode 100644
index 00000000..06b86a65
Binary files /dev/null and b/translated_images/vscode-platformio-home-open.3f9a41bfd3f4da1c866ec3e69f1675faa30b823b5b58ab58ac88e5df9a85da19.br.png differ
diff --git a/translated_images/vscode-platformio-home-open.3f9a41bfd3f4da1c866ec3e69f1675faa30b823b5b58ab58ac88e5df9a85da19.tr.png b/translated_images/vscode-platformio-home-open.3f9a41bfd3f4da1c866ec3e69f1675faa30b823b5b58ab58ac88e5df9a85da19.tr.png
new file mode 100644
index 00000000..06b86a65
Binary files /dev/null and b/translated_images/vscode-platformio-home-open.3f9a41bfd3f4da1c866ec3e69f1675faa30b823b5b58ab58ac88e5df9a85da19.tr.png differ
diff --git a/translated_images/vscode-platformio-menu.297be26b9733e5c4635d9d8e636e93fed2015809eafb7cc8fd409c37b3ef2ef5.br.png b/translated_images/vscode-platformio-menu.297be26b9733e5c4635d9d8e636e93fed2015809eafb7cc8fd409c37b3ef2ef5.br.png
new file mode 100644
index 00000000..ac7aa47a
Binary files /dev/null and b/translated_images/vscode-platformio-menu.297be26b9733e5c4635d9d8e636e93fed2015809eafb7cc8fd409c37b3ef2ef5.br.png differ
diff --git a/translated_images/vscode-platformio-menu.297be26b9733e5c4635d9d8e636e93fed2015809eafb7cc8fd409c37b3ef2ef5.tr.png b/translated_images/vscode-platformio-menu.297be26b9733e5c4635d9d8e636e93fed2015809eafb7cc8fd409c37b3ef2ef5.tr.png
new file mode 100644
index 00000000..ac7aa47a
Binary files /dev/null and b/translated_images/vscode-platformio-menu.297be26b9733e5c4635d9d8e636e93fed2015809eafb7cc8fd409c37b3ef2ef5.tr.png differ
diff --git a/translated_images/vscode-platformio-nightlight-project-wizard.5c64db4da6037420827c2597507897233457210ee23975711fa2285efdcd0dc7.br.png b/translated_images/vscode-platformio-nightlight-project-wizard.5c64db4da6037420827c2597507897233457210ee23975711fa2285efdcd0dc7.br.png
new file mode 100644
index 00000000..20480a22
Binary files /dev/null and b/translated_images/vscode-platformio-nightlight-project-wizard.5c64db4da6037420827c2597507897233457210ee23975711fa2285efdcd0dc7.br.png differ
diff --git a/translated_images/vscode-platformio-nightlight-project-wizard.5c64db4da6037420827c2597507897233457210ee23975711fa2285efdcd0dc7.tr.png b/translated_images/vscode-platformio-nightlight-project-wizard.5c64db4da6037420827c2597507897233457210ee23975711fa2285efdcd0dc7.tr.png
new file mode 100644
index 00000000..20480a22
Binary files /dev/null and b/translated_images/vscode-platformio-nightlight-project-wizard.5c64db4da6037420827c2597507897233457210ee23975711fa2285efdcd0dc7.tr.png differ
diff --git a/translated_images/vscode-platformio-serial-monitor-command-palette.b348ec841b8a1c14af503d6fc0bf73c657c79c9acc12a6b6dd485ce3b5826f48.br.png b/translated_images/vscode-platformio-serial-monitor-command-palette.b348ec841b8a1c14af503d6fc0bf73c657c79c9acc12a6b6dd485ce3b5826f48.br.png
new file mode 100644
index 00000000..9d90f435
Binary files /dev/null and b/translated_images/vscode-platformio-serial-monitor-command-palette.b348ec841b8a1c14af503d6fc0bf73c657c79c9acc12a6b6dd485ce3b5826f48.br.png differ
diff --git a/translated_images/vscode-platformio-serial-monitor-command-palette.b348ec841b8a1c14af503d6fc0bf73c657c79c9acc12a6b6dd485ce3b5826f48.tr.png b/translated_images/vscode-platformio-serial-monitor-command-palette.b348ec841b8a1c14af503d6fc0bf73c657c79c9acc12a6b6dd485ce3b5826f48.tr.png
new file mode 100644
index 00000000..9d90f435
Binary files /dev/null and b/translated_images/vscode-platformio-serial-monitor-command-palette.b348ec841b8a1c14af503d6fc0bf73c657c79c9acc12a6b6dd485ce3b5826f48.tr.png differ
diff --git a/translated_images/vscode-platformio-upload-command-palette.9e0f49cf80d1f1c3eb5c6689b8705ad8b89f0374b21698e996fec11e4ed09347.br.png b/translated_images/vscode-platformio-upload-command-palette.9e0f49cf80d1f1c3eb5c6689b8705ad8b89f0374b21698e996fec11e4ed09347.br.png
new file mode 100644
index 00000000..27b0ea2c
Binary files /dev/null and b/translated_images/vscode-platformio-upload-command-palette.9e0f49cf80d1f1c3eb5c6689b8705ad8b89f0374b21698e996fec11e4ed09347.br.png differ
diff --git a/translated_images/vscode-platformio-upload-command-palette.9e0f49cf80d1f1c3eb5c6689b8705ad8b89f0374b21698e996fec11e4ed09347.tr.png b/translated_images/vscode-platformio-upload-command-palette.9e0f49cf80d1f1c3eb5c6689b8705ad8b89f0374b21698e996fec11e4ed09347.tr.png
new file mode 100644
index 00000000..27b0ea2c
Binary files /dev/null and b/translated_images/vscode-platformio-upload-command-palette.9e0f49cf80d1f1c3eb5c6689b8705ad8b89f0374b21698e996fec11e4ed09347.tr.png differ
diff --git a/translated_images/vscode-platformio-welcome-new-button.ba6fc8a4c7b78cc822e1ce47ba29c5db96668cce7c5f4adbfd2f1196422baa26.br.png b/translated_images/vscode-platformio-welcome-new-button.ba6fc8a4c7b78cc822e1ce47ba29c5db96668cce7c5f4adbfd2f1196422baa26.br.png
new file mode 100644
index 00000000..3526a6d0
Binary files /dev/null and b/translated_images/vscode-platformio-welcome-new-button.ba6fc8a4c7b78cc822e1ce47ba29c5db96668cce7c5f4adbfd2f1196422baa26.br.png differ
diff --git a/translated_images/vscode-platformio-welcome-new-button.ba6fc8a4c7b78cc822e1ce47ba29c5db96668cce7c5f4adbfd2f1196422baa26.tr.png b/translated_images/vscode-platformio-welcome-new-button.ba6fc8a4c7b78cc822e1ce47ba29c5db96668cce7c5f4adbfd2f1196422baa26.tr.png
new file mode 100644
index 00000000..3526a6d0
Binary files /dev/null and b/translated_images/vscode-platformio-welcome-new-button.ba6fc8a4c7b78cc822e1ce47ba29c5db96668cce7c5f4adbfd2f1196422baa26.tr.png differ
diff --git a/translated_images/vscode-virtual-env.8ba42e04c3d533cf677e16cbe5ed9a3b80f62c6964472dc84b6f940800f0909f.br.png b/translated_images/vscode-virtual-env.8ba42e04c3d533cf677e16cbe5ed9a3b80f62c6964472dc84b6f940800f0909f.br.png
new file mode 100644
index 00000000..855d442e
Binary files /dev/null and b/translated_images/vscode-virtual-env.8ba42e04c3d533cf677e16cbe5ed9a3b80f62c6964472dc84b6f940800f0909f.br.png differ
diff --git a/translated_images/vscode-virtual-env.8ba42e04c3d533cf677e16cbe5ed9a3b80f62c6964472dc84b6f940800f0909f.tr.png b/translated_images/vscode-virtual-env.8ba42e04c3d533cf677e16cbe5ed9a3b80f62c6964472dc84b6f940800f0909f.tr.png
new file mode 100644
index 00000000..855d442e
Binary files /dev/null and b/translated_images/vscode-virtual-env.8ba42e04c3d533cf677e16cbe5ed9a3b80f62c6964472dc84b6f940800f0909f.tr.png differ
diff --git a/translated_images/what-is-azure-video-thumbnail.20174db09e03bbb87d213f928d3cb27410305d2e567e952827de8478dbda959b.br.png b/translated_images/what-is-azure-video-thumbnail.20174db09e03bbb87d213f928d3cb27410305d2e567e952827de8478dbda959b.br.png
new file mode 100644
index 00000000..aed3d813
Binary files /dev/null and b/translated_images/what-is-azure-video-thumbnail.20174db09e03bbb87d213f928d3cb27410305d2e567e952827de8478dbda959b.br.png differ
diff --git a/translated_images/what-is-azure-video-thumbnail.20174db09e03bbb87d213f928d3cb27410305d2e567e952827de8478dbda959b.tr.png b/translated_images/what-is-azure-video-thumbnail.20174db09e03bbb87d213f928d3cb27410305d2e567e952827de8478dbda959b.tr.png
new file mode 100644
index 00000000..aed3d813
Binary files /dev/null and b/translated_images/what-is-azure-video-thumbnail.20174db09e03bbb87d213f928d3cb27410305d2e567e952827de8478dbda959b.tr.png differ
diff --git a/translated_images/wio-gps-sensor.19fd52b81ce58095d5deb3d4e5a1fdd88818d76569b00b1f0d740c92dc986525.br.png b/translated_images/wio-gps-sensor.19fd52b81ce58095d5deb3d4e5a1fdd88818d76569b00b1f0d740c92dc986525.br.png
new file mode 100644
index 00000000..9bfca6c2
Binary files /dev/null and b/translated_images/wio-gps-sensor.19fd52b81ce58095d5deb3d4e5a1fdd88818d76569b00b1f0d740c92dc986525.br.png differ
diff --git a/translated_images/wio-gps-sensor.19fd52b81ce58095d5deb3d4e5a1fdd88818d76569b00b1f0d740c92dc986525.tr.png b/translated_images/wio-gps-sensor.19fd52b81ce58095d5deb3d4e5a1fdd88818d76569b00b1f0d740c92dc986525.tr.png
new file mode 100644
index 00000000..9bfca6c2
Binary files /dev/null and b/translated_images/wio-gps-sensor.19fd52b81ce58095d5deb3d4e5a1fdd88818d76569b00b1f0d740c92dc986525.tr.png differ
diff --git a/translated_images/wio-hardware-kit.4c70c48b85e4283a1d73e248d87d49587c0cd077eeb69cb3eca803166f63c9a5.br.png b/translated_images/wio-hardware-kit.4c70c48b85e4283a1d73e248d87d49587c0cd077eeb69cb3eca803166f63c9a5.br.png
new file mode 100644
index 00000000..0490e302
Binary files /dev/null and b/translated_images/wio-hardware-kit.4c70c48b85e4283a1d73e248d87d49587c0cd077eeb69cb3eca803166f63c9a5.br.png differ
diff --git a/translated_images/wio-hardware-kit.4c70c48b85e4283a1d73e248d87d49587c0cd077eeb69cb3eca803166f63c9a5.tr.png b/translated_images/wio-hardware-kit.4c70c48b85e4283a1d73e248d87d49587c0cd077eeb69cb3eca803166f63c9a5.tr.png
new file mode 100644
index 00000000..0490e302
Binary files /dev/null and b/translated_images/wio-hardware-kit.4c70c48b85e4283a1d73e248d87d49587c0cd077eeb69cb3eca803166f63c9a5.tr.png differ
diff --git a/translated_images/wio-led.265a1897e72d7f21c753257516a4b677d8e30ce2b95fee98189458b3275ba0a6.br.png b/translated_images/wio-led.265a1897e72d7f21c753257516a4b677d8e30ce2b95fee98189458b3275ba0a6.br.png
new file mode 100644
index 00000000..676e2378
Binary files /dev/null and b/translated_images/wio-led.265a1897e72d7f21c753257516a4b677d8e30ce2b95fee98189458b3275ba0a6.br.png differ
diff --git a/translated_images/wio-led.265a1897e72d7f21c753257516a4b677d8e30ce2b95fee98189458b3275ba0a6.tr.png b/translated_images/wio-led.265a1897e72d7f21c753257516a4b677d8e30ce2b95fee98189458b3275ba0a6.tr.png
new file mode 100644
index 00000000..676e2378
Binary files /dev/null and b/translated_images/wio-led.265a1897e72d7f21c753257516a4b677d8e30ce2b95fee98189458b3275ba0a6.tr.png differ
diff --git a/translated_images/wio-light-sensor.b1f529f3c95f51654f2e2c1d2d4b55fe547d189f588c974f5c2462c728133840.br.png b/translated_images/wio-light-sensor.b1f529f3c95f51654f2e2c1d2d4b55fe547d189f588c974f5c2462c728133840.br.png
new file mode 100644
index 00000000..280e18c3
Binary files /dev/null and b/translated_images/wio-light-sensor.b1f529f3c95f51654f2e2c1d2d4b55fe547d189f588c974f5c2462c728133840.br.png differ
diff --git a/translated_images/wio-light-sensor.b1f529f3c95f51654f2e2c1d2d4b55fe547d189f588c974f5c2462c728133840.tr.png b/translated_images/wio-light-sensor.b1f529f3c95f51654f2e2c1d2d4b55fe547d189f588c974f5c2462c728133840.tr.png
new file mode 100644
index 00000000..280e18c3
Binary files /dev/null and b/translated_images/wio-light-sensor.b1f529f3c95f51654f2e2c1d2d4b55fe547d189f588c974f5c2462c728133840.tr.png differ
diff --git a/translated_images/wio-mic.3f8c843dbe8ad917424037a93e3d25c62634add00a04dd8e091317b5a7a90088.br.png b/translated_images/wio-mic.3f8c843dbe8ad917424037a93e3d25c62634add00a04dd8e091317b5a7a90088.br.png
new file mode 100644
index 00000000..bb70a905
Binary files /dev/null and b/translated_images/wio-mic.3f8c843dbe8ad917424037a93e3d25c62634add00a04dd8e091317b5a7a90088.br.png differ
diff --git a/translated_images/wio-mic.3f8c843dbe8ad917424037a93e3d25c62634add00a04dd8e091317b5a7a90088.tr.png b/translated_images/wio-mic.3f8c843dbe8ad917424037a93e3d25c62634add00a04dd8e091317b5a7a90088.tr.png
new file mode 100644
index 00000000..bb70a905
Binary files /dev/null and b/translated_images/wio-mic.3f8c843dbe8ad917424037a93e3d25c62634add00a04dd8e091317b5a7a90088.tr.png differ
diff --git a/translated_images/wio-relay-and-soil-moisture-sensor.ed722202d42babe0be5f4518cf13e8c2c81e8df21d37839266cbdb60cf30172d.br.png b/translated_images/wio-relay-and-soil-moisture-sensor.ed722202d42babe0be5f4518cf13e8c2c81e8df21d37839266cbdb60cf30172d.br.png
new file mode 100644
index 00000000..c0860d6e
Binary files /dev/null and b/translated_images/wio-relay-and-soil-moisture-sensor.ed722202d42babe0be5f4518cf13e8c2c81e8df21d37839266cbdb60cf30172d.br.png differ
diff --git a/translated_images/wio-relay-and-soil-moisture-sensor.ed722202d42babe0be5f4518cf13e8c2c81e8df21d37839266cbdb60cf30172d.tr.png b/translated_images/wio-relay-and-soil-moisture-sensor.ed722202d42babe0be5f4518cf13e8c2c81e8df21d37839266cbdb60cf30172d.tr.png
new file mode 100644
index 00000000..c0860d6e
Binary files /dev/null and b/translated_images/wio-relay-and-soil-moisture-sensor.ed722202d42babe0be5f4518cf13e8c2c81e8df21d37839266cbdb60cf30172d.tr.png differ
diff --git a/translated_images/wio-respeaker-hat.bd54917d446e6f6f142f9371ea52c12fd708873986bf46191208a151cd929bad.br.png b/translated_images/wio-respeaker-hat.bd54917d446e6f6f142f9371ea52c12fd708873986bf46191208a151cd929bad.br.png
new file mode 100644
index 00000000..9a34d708
Binary files /dev/null and b/translated_images/wio-respeaker-hat.bd54917d446e6f6f142f9371ea52c12fd708873986bf46191208a151cd929bad.br.png differ
diff --git a/translated_images/wio-respeaker-hat.bd54917d446e6f6f142f9371ea52c12fd708873986bf46191208a151cd929bad.tr.png b/translated_images/wio-respeaker-hat.bd54917d446e6f6f142f9371ea52c12fd708873986bf46191208a151cd929bad.tr.png
new file mode 100644
index 00000000..9a34d708
Binary files /dev/null and b/translated_images/wio-respeaker-hat.bd54917d446e6f6f142f9371ea52c12fd708873986bf46191208a151cd929bad.tr.png differ
diff --git a/translated_images/wio-respeaker-wiring-0.767f80aa6508103880d256cdf99ee7219e190db257c7261e4aec219759dc67b9.br.png b/translated_images/wio-respeaker-wiring-0.767f80aa6508103880d256cdf99ee7219e190db257c7261e4aec219759dc67b9.br.png
new file mode 100644
index 00000000..2c683d8b
Binary files /dev/null and b/translated_images/wio-respeaker-wiring-0.767f80aa6508103880d256cdf99ee7219e190db257c7261e4aec219759dc67b9.br.png differ
diff --git a/translated_images/wio-respeaker-wiring-0.767f80aa6508103880d256cdf99ee7219e190db257c7261e4aec219759dc67b9.tr.png b/translated_images/wio-respeaker-wiring-0.767f80aa6508103880d256cdf99ee7219e190db257c7261e4aec219759dc67b9.tr.png
new file mode 100644
index 00000000..2c683d8b
Binary files /dev/null and b/translated_images/wio-respeaker-wiring-0.767f80aa6508103880d256cdf99ee7219e190db257c7261e4aec219759dc67b9.tr.png differ
diff --git a/translated_images/wio-respeaker-wiring-1.8d894727f2ba24004824ee5e06b83b6d10952550003a3efb603182121521b0ef.br.png b/translated_images/wio-respeaker-wiring-1.8d894727f2ba24004824ee5e06b83b6d10952550003a3efb603182121521b0ef.br.png
new file mode 100644
index 00000000..1ba4c5b0
Binary files /dev/null and b/translated_images/wio-respeaker-wiring-1.8d894727f2ba24004824ee5e06b83b6d10952550003a3efb603182121521b0ef.br.png differ
diff --git a/translated_images/wio-respeaker-wiring-1.8d894727f2ba24004824ee5e06b83b6d10952550003a3efb603182121521b0ef.tr.png b/translated_images/wio-respeaker-wiring-1.8d894727f2ba24004824ee5e06b83b6d10952550003a3efb603182121521b0ef.tr.png
new file mode 100644
index 00000000..1ba4c5b0
Binary files /dev/null and b/translated_images/wio-respeaker-wiring-1.8d894727f2ba24004824ee5e06b83b6d10952550003a3efb603182121521b0ef.tr.png differ
diff --git a/translated_images/wio-respeaker-wiring-2.329e1cbd306e754f8ffe56f9294794f4a8fa123860d76067a79e9ea385d1bf56.br.png b/translated_images/wio-respeaker-wiring-2.329e1cbd306e754f8ffe56f9294794f4a8fa123860d76067a79e9ea385d1bf56.br.png
new file mode 100644
index 00000000..93aa3743
Binary files /dev/null and b/translated_images/wio-respeaker-wiring-2.329e1cbd306e754f8ffe56f9294794f4a8fa123860d76067a79e9ea385d1bf56.br.png differ
diff --git a/translated_images/wio-respeaker-wiring-2.329e1cbd306e754f8ffe56f9294794f4a8fa123860d76067a79e9ea385d1bf56.tr.png b/translated_images/wio-respeaker-wiring-2.329e1cbd306e754f8ffe56f9294794f4a8fa123860d76067a79e9ea385d1bf56.tr.png
new file mode 100644
index 00000000..93aa3743
Binary files /dev/null and b/translated_images/wio-respeaker-wiring-2.329e1cbd306e754f8ffe56f9294794f4a8fa123860d76067a79e9ea385d1bf56.tr.png differ
diff --git a/translated_images/wio-respeaker-wiring-3.75b0be447e2fa9307a6a954f9ae8a71b77e39ada6a5ef1a059d341dc850fd90c.br.png b/translated_images/wio-respeaker-wiring-3.75b0be447e2fa9307a6a954f9ae8a71b77e39ada6a5ef1a059d341dc850fd90c.br.png
new file mode 100644
index 00000000..3089e5e1
Binary files /dev/null and b/translated_images/wio-respeaker-wiring-3.75b0be447e2fa9307a6a954f9ae8a71b77e39ada6a5ef1a059d341dc850fd90c.br.png differ
diff --git a/translated_images/wio-respeaker-wiring-3.75b0be447e2fa9307a6a954f9ae8a71b77e39ada6a5ef1a059d341dc850fd90c.tr.png b/translated_images/wio-respeaker-wiring-3.75b0be447e2fa9307a6a954f9ae8a71b77e39ada6a5ef1a059d341dc850fd90c.tr.png
new file mode 100644
index 00000000..3089e5e1
Binary files /dev/null and b/translated_images/wio-respeaker-wiring-3.75b0be447e2fa9307a6a954f9ae8a71b77e39ada6a5ef1a059d341dc850fd90c.tr.png differ
diff --git a/translated_images/wio-respeaker-wiring-4.aa9cd434d8779437de720cba2719d83992413caed1b620b6148f6c8924889afb.br.png b/translated_images/wio-respeaker-wiring-4.aa9cd434d8779437de720cba2719d83992413caed1b620b6148f6c8924889afb.br.png
new file mode 100644
index 00000000..53468420
Binary files /dev/null and b/translated_images/wio-respeaker-wiring-4.aa9cd434d8779437de720cba2719d83992413caed1b620b6148f6c8924889afb.br.png differ
diff --git a/translated_images/wio-respeaker-wiring-4.aa9cd434d8779437de720cba2719d83992413caed1b620b6148f6c8924889afb.tr.png b/translated_images/wio-respeaker-wiring-4.aa9cd434d8779437de720cba2719d83992413caed1b620b6148f6c8924889afb.tr.png
new file mode 100644
index 00000000..53468420
Binary files /dev/null and b/translated_images/wio-respeaker-wiring-4.aa9cd434d8779437de720cba2719d83992413caed1b620b6148f6c8924889afb.tr.png differ
diff --git a/translated_images/wio-respeaker-wiring-5.af117c20acf622f3cd656ccd8f4053f8845d6aaa3af164d24cb7dbd54a4bb470.br.png b/translated_images/wio-respeaker-wiring-5.af117c20acf622f3cd656ccd8f4053f8845d6aaa3af164d24cb7dbd54a4bb470.br.png
new file mode 100644
index 00000000..003dc174
Binary files /dev/null and b/translated_images/wio-respeaker-wiring-5.af117c20acf622f3cd656ccd8f4053f8845d6aaa3af164d24cb7dbd54a4bb470.br.png differ
diff --git a/translated_images/wio-respeaker-wiring-5.af117c20acf622f3cd656ccd8f4053f8845d6aaa3af164d24cb7dbd54a4bb470.tr.png b/translated_images/wio-respeaker-wiring-5.af117c20acf622f3cd656ccd8f4053f8845d6aaa3af164d24cb7dbd54a4bb470.tr.png
new file mode 100644
index 00000000..003dc174
Binary files /dev/null and b/translated_images/wio-respeaker-wiring-5.af117c20acf622f3cd656ccd8f4053f8845d6aaa3af164d24cb7dbd54a4bb470.tr.png differ
diff --git a/translated_images/wio-sd-card.acdcbe322fa4ee7f8f9c8cc015b3263964bb26ab5c7e25b41747988cc5280d64.br.png b/translated_images/wio-sd-card.acdcbe322fa4ee7f8f9c8cc015b3263964bb26ab5c7e25b41747988cc5280d64.br.png
new file mode 100644
index 00000000..3c0d2f87
Binary files /dev/null and b/translated_images/wio-sd-card.acdcbe322fa4ee7f8f9c8cc015b3263964bb26ab5c7e25b41747988cc5280d64.br.png differ
diff --git a/translated_images/wio-sd-card.acdcbe322fa4ee7f8f9c8cc015b3263964bb26ab5c7e25b41747988cc5280d64.tr.png b/translated_images/wio-sd-card.acdcbe322fa4ee7f8f9c8cc015b3263964bb26ab5c7e25b41747988cc5280d64.tr.png
new file mode 100644
index 00000000..3c0d2f87
Binary files /dev/null and b/translated_images/wio-sd-card.acdcbe322fa4ee7f8f9c8cc015b3263964bb26ab5c7e25b41747988cc5280d64.tr.png differ
diff --git a/translated_images/wio-soil-moisture-sensor.46919b61c3f6cb7497662251b29038ee0e57a4c8b9d071feb996c3b0d7f65aaf.br.png b/translated_images/wio-soil-moisture-sensor.46919b61c3f6cb7497662251b29038ee0e57a4c8b9d071feb996c3b0d7f65aaf.br.png
new file mode 100644
index 00000000..56f285f2
Binary files /dev/null and b/translated_images/wio-soil-moisture-sensor.46919b61c3f6cb7497662251b29038ee0e57a4c8b9d071feb996c3b0d7f65aaf.br.png differ
diff --git a/translated_images/wio-soil-moisture-sensor.46919b61c3f6cb7497662251b29038ee0e57a4c8b9d071feb996c3b0d7f65aaf.tr.png b/translated_images/wio-soil-moisture-sensor.46919b61c3f6cb7497662251b29038ee0e57a4c8b9d071feb996c3b0d7f65aaf.tr.png
new file mode 100644
index 00000000..56f285f2
Binary files /dev/null and b/translated_images/wio-soil-moisture-sensor.46919b61c3f6cb7497662251b29038ee0e57a4c8b9d071feb996c3b0d7f65aaf.tr.png differ
diff --git a/translated_images/wio-temperature-sensor.2934928f38c7f79a68d24879d2c8986c78244696f931e2e33c293f426ecdc0ad.br.png b/translated_images/wio-temperature-sensor.2934928f38c7f79a68d24879d2c8986c78244696f931e2e33c293f426ecdc0ad.br.png
new file mode 100644
index 00000000..ec8bbe2f
Binary files /dev/null and b/translated_images/wio-temperature-sensor.2934928f38c7f79a68d24879d2c8986c78244696f931e2e33c293f426ecdc0ad.br.png differ
diff --git a/translated_images/wio-temperature-sensor.2934928f38c7f79a68d24879d2c8986c78244696f931e2e33c293f426ecdc0ad.tr.png b/translated_images/wio-temperature-sensor.2934928f38c7f79a68d24879d2c8986c78244696f931e2e33c293f426ecdc0ad.tr.png
new file mode 100644
index 00000000..ec8bbe2f
Binary files /dev/null and b/translated_images/wio-temperature-sensor.2934928f38c7f79a68d24879d2c8986c78244696f931e2e33c293f426ecdc0ad.tr.png differ
diff --git a/translated_images/wio-terminal-c-button.73df3cb1c1445ea07ee98316af0e7925fcb43135df0abed58d3d4822b2589c3b.br.png b/translated_images/wio-terminal-c-button.73df3cb1c1445ea07ee98316af0e7925fcb43135df0abed58d3d4822b2589c3b.br.png
new file mode 100644
index 00000000..bbaae894
Binary files /dev/null and b/translated_images/wio-terminal-c-button.73df3cb1c1445ea07ee98316af0e7925fcb43135df0abed58d3d4822b2589c3b.br.png differ
diff --git a/translated_images/wio-terminal-c-button.73df3cb1c1445ea07ee98316af0e7925fcb43135df0abed58d3d4822b2589c3b.tr.png b/translated_images/wio-terminal-c-button.73df3cb1c1445ea07ee98316af0e7925fcb43135df0abed58d3d4822b2589c3b.tr.png
new file mode 100644
index 00000000..bbaae894
Binary files /dev/null and b/translated_images/wio-terminal-c-button.73df3cb1c1445ea07ee98316af0e7925fcb43135df0abed58d3d4822b2589c3b.tr.png differ
diff --git a/translated_images/wio-terminal-pin-sticker.b90b1535937b84bd00d853f0004aea74fac2aec04b43f14b887796b2633f855e.br.png b/translated_images/wio-terminal-pin-sticker.b90b1535937b84bd00d853f0004aea74fac2aec04b43f14b887796b2633f855e.br.png
new file mode 100644
index 00000000..ef71f6da
Binary files /dev/null and b/translated_images/wio-terminal-pin-sticker.b90b1535937b84bd00d853f0004aea74fac2aec04b43f14b887796b2633f855e.br.png differ
diff --git a/translated_images/wio-terminal-pin-sticker.b90b1535937b84bd00d853f0004aea74fac2aec04b43f14b887796b2633f855e.tr.png b/translated_images/wio-terminal-pin-sticker.b90b1535937b84bd00d853f0004aea74fac2aec04b43f14b887796b2633f855e.tr.png
new file mode 100644
index 00000000..ef71f6da
Binary files /dev/null and b/translated_images/wio-terminal-pin-sticker.b90b1535937b84bd00d853f0004aea74fac2aec04b43f14b887796b2633f855e.tr.png differ
diff --git a/translated_images/wio-terminal.b8299ee16587db9aa9e05fabf9721bccd9eb8fb541b7c1a8267241282d81b603.br.png b/translated_images/wio-terminal.b8299ee16587db9aa9e05fabf9721bccd9eb8fb541b7c1a8267241282d81b603.br.png
new file mode 100644
index 00000000..4e9390eb
Binary files /dev/null and b/translated_images/wio-terminal.b8299ee16587db9aa9e05fabf9721bccd9eb8fb541b7c1a8267241282d81b603.br.png differ
diff --git a/translated_images/wio-terminal.b8299ee16587db9aa9e05fabf9721bccd9eb8fb541b7c1a8267241282d81b603.tr.png b/translated_images/wio-terminal.b8299ee16587db9aa9e05fabf9721bccd9eb8fb541b7c1a8267241282d81b603.tr.png
new file mode 100644
index 00000000..4e9390eb
Binary files /dev/null and b/translated_images/wio-terminal.b8299ee16587db9aa9e05fabf9721bccd9eb8fb541b7c1a8267241282d81b603.tr.png differ
diff --git a/translated_images/wio-time-of-flight-sensor.c4c182131d2ea73df67febd004dc0313d271013d016be9c47e7da4d77c6c20a8.br.png b/translated_images/wio-time-of-flight-sensor.c4c182131d2ea73df67febd004dc0313d271013d016be9c47e7da4d77c6c20a8.br.png
new file mode 100644
index 00000000..16d7af80
Binary files /dev/null and b/translated_images/wio-time-of-flight-sensor.c4c182131d2ea73df67febd004dc0313d271013d016be9c47e7da4d77c6c20a8.br.png differ
diff --git a/translated_images/wio-time-of-flight-sensor.c4c182131d2ea73df67febd004dc0313d271013d016be9c47e7da4d77c6c20a8.tr.png b/translated_images/wio-time-of-flight-sensor.c4c182131d2ea73df67febd004dc0313d271013d016be9c47e7da4d77c6c20a8.tr.png
new file mode 100644
index 00000000..16d7af80
Binary files /dev/null and b/translated_images/wio-time-of-flight-sensor.c4c182131d2ea73df67febd004dc0313d271013d016be9c47e7da4d77c6c20a8.tr.png differ
diff --git a/translations/br/1-getting-started/README.md b/translations/br/1-getting-started/README.md
new file mode 100644
index 00000000..896e0df5
--- /dev/null
+++ b/translations/br/1-getting-started/README.md
@@ -0,0 +1,30 @@
+
+# Introdução ao IoT
+
+Nesta seção do currículo, você será apresentado à Internet das Coisas e aprenderá os conceitos básicos, incluindo a criação do seu primeiro projeto de IoT 'Hello World' conectado à nuvem. Este projeto é uma luz noturna que acende conforme os níveis de luz medidos por um sensor diminuem.
+
+
+
+## Tópicos
+
+1. [Introdução ao IoT](lessons/1-introduction-to-iot/README.md)
+1. [Explorando mais a fundo o IoT](lessons/2-deeper-dive/README.md)
+1. [Interaja com o mundo físico usando sensores e atuadores](lessons/3-sensors-and-actuators/README.md)
+1. [Conecte seu dispositivo à Internet](lessons/4-connect-internet/README.md)
+
+## Créditos
+
+Todas as lições foram escritas com ♥️ por [Jim Bennett](https://GitHub.com/JimBobBennett)
+
+---
+
+**Aviso Legal**:
+Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.
\ No newline at end of file
diff --git a/translations/br/1-getting-started/lessons/1-introduction-to-iot/README.md b/translations/br/1-getting-started/lessons/1-introduction-to-iot/README.md
new file mode 100644
index 00000000..ef9b2a0d
--- /dev/null
+++ b/translations/br/1-getting-started/lessons/1-introduction-to-iot/README.md
@@ -0,0 +1,242 @@
+
+# Introdução ao IoT
+
+
+
+> Resumo visual por [Nitya Narasimhan](https://github.com/nitya). Clique na imagem para uma versão maior.
+
+Esta lição foi apresentada como parte da série [Hello IoT](https://youtube.com/playlist?list=PLmsFUfdnGr3xRts0TIwyaHyQuHaNQcb6-) do [Microsoft Reactor](https://developer.microsoft.com/reactor/?WT.mc_id=academic-17441-jabenn). A lição foi dividida em dois vídeos: uma aula de 1 hora e uma sessão de perguntas e respostas de 1 hora, explorando mais a fundo os tópicos e respondendo dúvidas.
+
+[](https://youtu.be/bVFfcYh6UBw)
+
+[](https://youtu.be/YI772q5v3yI)
+
+> 🎥 Clique nas imagens acima para assistir aos vídeos
+
+## Questionário pré-aula
+
+[Questionário pré-aula](https://black-meadow-040d15503.1.azurestaticapps.net/quiz/1)
+
+## Introdução
+
+Esta lição aborda alguns tópicos introdutórios sobre a Internet das Coisas (IoT) e ajuda você a configurar seu hardware.
+
+Nesta lição, abordaremos:
+
+* [O que é a 'Internet das Coisas'?](../../../../../1-getting-started/lessons/1-introduction-to-iot)
+* [Dispositivos IoT](../../../../../1-getting-started/lessons/1-introduction-to-iot)
+* [Configurar seu dispositivo](../../../../../1-getting-started/lessons/1-introduction-to-iot)
+* [Aplicações do IoT](../../../../../1-getting-started/lessons/1-introduction-to-iot)
+* [Exemplos de dispositivos IoT ao seu redor](../../../../../1-getting-started/lessons/1-introduction-to-iot)
+
+## O que é a 'Internet das Coisas'?
+
+O termo 'Internet das Coisas' foi cunhado por [Kevin Ashton](https://wikipedia.org/wiki/Kevin_Ashton) em 1999, para se referir à conexão da Internet com o mundo físico por meio de sensores. Desde então, o termo tem sido usado para descrever qualquer dispositivo que interaja com o mundo físico ao seu redor, seja coletando dados de sensores ou fornecendo interações no mundo real por meio de atuadores (dispositivos que realizam ações, como ligar um interruptor ou acender um LED), geralmente conectados a outros dispositivos ou à Internet.
+
+> **Sensores** coletam informações do mundo, como medir velocidade, temperatura ou localização.
+>
+> **Atuadores** convertem sinais elétricos em interações no mundo real, como acionar um interruptor, ligar luzes, emitir sons ou enviar sinais de controle para outros hardwares, por exemplo, para ligar uma tomada.
+
+IoT, como área tecnológica, vai além dos dispositivos - inclui serviços baseados em nuvem que podem processar os dados dos sensores ou enviar comandos para atuadores conectados a dispositivos IoT. Também inclui dispositivos que não possuem ou não precisam de conectividade com a Internet, frequentemente chamados de dispositivos de borda. Esses dispositivos podem processar e responder aos dados dos sensores por conta própria, geralmente usando modelos de IA treinados na nuvem.
+
+IoT é um campo tecnológico em rápido crescimento. Estima-se que, até o final de 2020, 30 bilhões de dispositivos IoT estavam implantados e conectados à Internet. Olhando para o futuro, estima-se que, até 2025, os dispositivos IoT estarão coletando quase 80 zettabytes de dados, ou 80 trilhões de gigabytes. Isso é muito dado!
+
+
+
+✅ Faça uma pequena pesquisa: Quanto dos dados gerados por dispositivos IoT é realmente utilizado e quanto é desperdiçado? Por que tantos dados são ignorados?
+
+Esses dados são a chave para o sucesso do IoT. Para ser um desenvolvedor de IoT bem-sucedido, você precisa entender quais dados coletar, como coletá-los, como tomar decisões com base neles e como usar essas decisões para interagir com o mundo físico, se necessário.
+
+## Dispositivos IoT
+
+O **T** em IoT significa **Things** (Coisas) - dispositivos que interagem com o mundo físico ao seu redor, seja coletando dados de sensores ou fornecendo interações no mundo real por meio de atuadores.
+
+Dispositivos para uso comercial ou de produção, como rastreadores de fitness para consumidores ou controladores de máquinas industriais, geralmente são feitos sob medida. Eles utilizam placas de circuito personalizadas, talvez até processadores personalizados, projetados para atender às necessidades de uma tarefa específica, seja ser pequeno o suficiente para caber em um pulso ou robusto o suficiente para operar em ambientes de alta temperatura, estresse ou vibração.
+
+Como desenvolvedor aprendendo sobre IoT ou criando um protótipo de dispositivo, você precisará começar com um kit de desenvolvimento. Esses são dispositivos IoT de uso geral projetados para desenvolvedores, frequentemente com recursos que não estariam presentes em um dispositivo de produção, como pinos externos para conectar sensores ou atuadores, hardware para suporte a depuração ou recursos adicionais que aumentariam o custo desnecessariamente em uma produção em larga escala.
+
+Esses kits de desenvolvimento geralmente se dividem em duas categorias - microcontroladores e computadores de placa única. Eles serão apresentados aqui, e entraremos em mais detalhes na próxima lição.
+
+> 💁 Seu telefone também pode ser considerado um dispositivo IoT de uso geral, com sensores e atuadores integrados, usados de diferentes maneiras por diferentes aplicativos com diferentes serviços na nuvem. Você pode até encontrar tutoriais de IoT que utilizam um aplicativo de telefone como dispositivo IoT.
+
+### Microcontroladores
+
+Um microcontrolador (também chamado de MCU, abreviação de microcontroller unit) é um pequeno computador composto por:
+
+🧠 Um ou mais processadores centrais (CPUs) - o 'cérebro' do microcontrolador que executa seu programa
+
+💾 Memória (RAM e memória de programa) - onde seu programa, dados e variáveis são armazenados
+
+🔌 Conexões de entrada/saída (I/O) programáveis - para comunicação com periféricos externos (dispositivos conectados), como sensores e atuadores
+
+Microcontroladores são dispositivos de computação de baixo custo, com preços médios para aqueles usados em hardware personalizado caindo para cerca de US$0,50, e alguns dispositivos custando apenas US$0,03. Kits de desenvolvimento podem começar a partir de US$4, com custos aumentando conforme mais recursos são adicionados. O [Wio Terminal](https://www.seeedstudio.com/Wio-Terminal-p-4509.html), um kit de desenvolvimento de microcontrolador da [Seeed Studios](https://www.seeedstudio.com) que possui sensores, atuadores, WiFi e uma tela, custa cerca de US$30.
+
+
+
+> 💁 Ao pesquisar microcontroladores na Internet, tenha cuidado ao procurar pelo termo **MCU**, pois isso pode trazer muitos resultados relacionados ao Universo Cinematográfico da Marvel, e não a microcontroladores.
+
+Microcontroladores são projetados para executar um número limitado de tarefas muito específicas, em vez de serem computadores de uso geral como PCs ou Macs. Exceto em cenários muito específicos, você não pode conectar um monitor, teclado e mouse e usá-los para tarefas gerais.
+
+Kits de desenvolvimento de microcontroladores geralmente vêm com sensores e atuadores adicionais integrados. A maioria das placas terá um ou mais LEDs programáveis, além de outros dispositivos, como conectores padrão para adicionar mais sensores ou atuadores usando ecossistemas de vários fabricantes ou sensores integrados (geralmente os mais populares, como sensores de temperatura). Alguns microcontroladores possuem conectividade sem fio integrada, como Bluetooth ou WiFi, ou possuem microcontroladores adicionais na placa para adicionar essa conectividade.
+
+> 💁 Microcontroladores geralmente são programados em C/C++.
+
+### Computadores de placa única
+
+Um computador de placa única é um pequeno dispositivo de computação que contém todos os elementos de um computador completo em uma única placa pequena. Esses dispositivos possuem especificações próximas às de um PC ou Mac, executam um sistema operacional completo, mas são menores, consomem menos energia e são substancialmente mais baratos.
+
+
+
+O Raspberry Pi é um dos computadores de placa única mais populares.
+
+Assim como um microcontrolador, computadores de placa única possuem CPU, memória e pinos de entrada/saída, mas têm recursos adicionais, como um chip gráfico para permitir a conexão de monitores, saídas de áudio e portas USB para conectar teclados, mouses e outros dispositivos USB padrão, como webcams ou armazenamento externo. Programas são armazenados em cartões SD ou discos rígidos, junto com um sistema operacional, em vez de um chip de memória integrado à placa.
+
+> 🎓 Você pode pensar em um computador de placa única como uma versão menor e mais barata do PC ou Mac que você está usando, com a adição de pinos GPIO (entrada/saída de uso geral) para interagir com sensores e atuadores.
+
+Computadores de placa única são computadores completos, então podem ser programados em qualquer linguagem. Dispositivos IoT geralmente são programados em Python.
+
+### Escolha de hardware para as próximas lições
+
+Todas as lições subsequentes incluem tarefas usando um dispositivo IoT para interagir com o mundo físico e se comunicar com a nuvem. Cada lição suporta 3 opções de dispositivos - Arduino (usando um Seeed Studios Wio Terminal) ou um computador de placa única, seja um dispositivo físico (um Raspberry Pi 4) ou um computador de placa única virtual rodando no seu PC ou Mac.
+
+Você pode ler sobre o hardware necessário para completar todas as tarefas no [guia de hardware](../../../hardware.md).
+
+> 💁 Você não precisa comprar nenhum hardware IoT para completar as tarefas, é possível fazer tudo usando um computador de placa única virtual.
+
+A escolha do hardware depende de você - depende do que você tem disponível em casa ou na escola, e da linguagem de programação que você conhece ou planeja aprender. Ambas as variantes de hardware usarão o mesmo ecossistema de sensores, então, se você começar com uma, poderá mudar para a outra sem precisar substituir a maior parte do kit. O computador de placa única virtual será equivalente a aprender em um Raspberry Pi, com a maior parte do código sendo transferível para o Pi, caso você eventualmente adquira um dispositivo e sensores.
+
+### Kit de desenvolvimento Arduino
+
+Se você estiver interessado em aprender desenvolvimento de microcontroladores, pode completar as tarefas usando um dispositivo Arduino. Você precisará de um entendimento básico de programação em C/C++, pois as lições ensinarão apenas o código relevante para o framework Arduino, os sensores e atuadores utilizados e as bibliotecas que interagem com a nuvem.
+
+As tarefas usarão o [Visual Studio Code](https://code.visualstudio.com/?WT.mc_id=academic-17441-jabenn) com a [extensão PlatformIO para desenvolvimento de microcontroladores](https://platformio.org). Você também pode usar o Arduino IDE se já estiver familiarizado com essa ferramenta, mas as instruções não serão fornecidas.
+
+### Kit de desenvolvimento de computador de placa única
+
+Se você estiver interessado em aprender desenvolvimento IoT usando computadores de placa única, pode completar as tarefas usando um Raspberry Pi ou um dispositivo virtual rodando no seu PC ou Mac.
+
+Você precisará de um entendimento básico de programação em Python, pois as lições ensinarão apenas o código relevante para os sensores e atuadores utilizados e as bibliotecas que interagem com a nuvem.
+
+> 💁 Se você quiser aprender a programar em Python, confira as seguintes séries de vídeos:
+>
+> * [Python para iniciantes](https://channel9.msdn.com/Series/Intro-to-Python-Development?WT.mc_id=academic-17441-jabenn)
+> * [Mais Python para iniciantes](https://channel9.msdn.com/Series/More-Python-for-Beginners?WT.mc_id=academic-7372-jabenn)
+
+As tarefas usarão o [Visual Studio Code](https://code.visualstudio.com/?WT.mc_id=academic-17441-jabenn).
+
+Se você estiver usando um Raspberry Pi, pode rodar seu Pi com a versão desktop completa do Raspberry Pi OS e fazer toda a codificação diretamente no Pi usando [a versão do VS Code para Raspberry Pi OS](https://code.visualstudio.com/docs/setup/raspberry-pi?WT.mc_id=academic-17441-jabenn), ou rodar seu Pi como um dispositivo sem cabeça e codificar a partir do seu PC ou Mac usando o VS Code com a [extensão Remote SSH](https://code.visualstudio.com/docs/remote/ssh?WT.mc_id=academic-17441-jabenn), que permite conectar-se ao seu Pi e editar, depurar e executar código como se estivesse codificando diretamente nele.
+
+Se você optar pela opção de dispositivo virtual, codificará diretamente no seu computador. Em vez de acessar sensores e atuadores, você usará uma ferramenta para simular esse hardware, fornecendo valores de sensores que você pode definir e exibindo os resultados dos atuadores na tela.
+
+## Configurar seu dispositivo
+
+Antes de começar a programar seu dispositivo IoT, será necessário realizar uma pequena configuração. Siga as instruções relevantes abaixo, dependendo do dispositivo que você usará.
+💁 Se você ainda não tem um dispositivo, consulte o [guia de hardware](../../../hardware.md) para ajudar a decidir qual dispositivo você vai usar e quais componentes adicionais você precisa comprar. Não é necessário comprar hardware, pois todos os projetos podem ser executados em hardware virtual.
+Essas instruções incluem links para sites de terceiros dos criadores do hardware ou ferramentas que você usará. Isso é para garantir que você sempre tenha as instruções mais atualizadas para as diversas ferramentas e hardwares.
+
+Siga o guia relevante para configurar seu dispositivo e concluir um projeto 'Hello World'. Este será o primeiro passo para criar uma luminária noturna IoT ao longo das 4 lições desta parte introdutória.
+
+* [Arduino - Wio Terminal](wio-terminal.md)
+* [Computador de placa única - Raspberry Pi](pi.md)
+* [Computador de placa única - Dispositivo virtual](virtual-device.md)
+
+✅ Você usará o VS Code tanto para Arduino quanto para computadores de placa única. Se você nunca usou antes, leia mais sobre ele no [site do VS Code](https://code.visualstudio.com?WT.mc_id=academic-17441-jabenn).
+
+## Aplicações de IoT
+
+IoT abrange uma ampla gama de casos de uso, divididos em alguns grandes grupos:
+
+* IoT para Consumidores
+* IoT Comercial
+* IoT Industrial
+* IoT para Infraestrutura
+
+✅ Faça uma pequena pesquisa: Para cada uma das áreas descritas abaixo, encontre um exemplo concreto que não esteja mencionado no texto.
+
+### IoT para Consumidores
+
+IoT para consumidores refere-se a dispositivos IoT que os consumidores compram e usam em casa. Alguns desses dispositivos são incrivelmente úteis, como alto-falantes inteligentes, sistemas de aquecimento inteligentes e aspiradores robóticos. Outros têm sua utilidade questionável, como torneiras controladas por voz que não podem ser desligadas porque o controle de voz não consegue ouvi-lo sobre o som da água corrente.
+
+Dispositivos IoT para consumidores estão capacitando as pessoas a fazer mais em seus ambientes, especialmente o 1 bilhão de pessoas com deficiência. Aspiradores robóticos podem manter os pisos limpos para pessoas com problemas de mobilidade que não conseguem aspirar sozinhas, fornos controlados por voz permitem que pessoas com visão limitada ou dificuldades motoras aqueçam seus fornos apenas com a voz, e monitores de saúde permitem que pacientes acompanhem condições crônicas com atualizações mais regulares e detalhadas. Esses dispositivos estão se tornando tão comuns que até crianças pequenas os utilizam no dia a dia, como estudantes em ensino remoto durante a pandemia de COVID configurando temporizadores em dispositivos inteligentes para acompanhar suas tarefas escolares ou alarmes para lembrar de reuniões de aula.
+
+✅ Quais dispositivos IoT para consumidores você tem consigo ou em sua casa?
+
+### IoT Comercial
+
+IoT comercial abrange o uso de IoT no ambiente de trabalho. Em escritórios, pode haver sensores de ocupação e detectores de movimento para gerenciar iluminação e aquecimento, mantendo as luzes e o aquecimento desligados quando não são necessários, reduzindo custos e emissões de carbono. Em fábricas, dispositivos IoT podem monitorar riscos de segurança, como trabalhadores sem capacetes ou níveis de ruído perigosos. No varejo, dispositivos IoT podem medir a temperatura de câmaras frias, alertando o proprietário da loja se uma geladeira ou freezer estiver fora da faixa de temperatura necessária, ou monitorar itens nas prateleiras para direcionar os funcionários a reabastecer produtos vendidos. A indústria de transporte está cada vez mais dependente de IoT para monitorar a localização de veículos, rastrear quilometragem para cobrança de uso de estradas, acompanhar horas de trabalho dos motoristas e conformidade com pausas, ou notificar a equipe quando um veículo está se aproximando de um depósito para preparar o carregamento ou descarregamento.
+
+✅ Quais dispositivos IoT comerciais você tem em sua escola ou local de trabalho?
+
+### IoT Industrial (IIoT)
+
+IoT Industrial, ou IIoT, é o uso de dispositivos IoT para controlar e gerenciar máquinas em larga escala. Isso abrange uma ampla gama de casos de uso, desde fábricas até agricultura digital.
+
+Fábricas usam dispositivos IoT de várias maneiras. Máquinas podem ser monitoradas com múltiplos sensores para rastrear coisas como temperatura, vibração e velocidade de rotação. Esses dados podem ser monitorados para permitir que a máquina seja desligada se sair de certas tolerâncias - por exemplo, se estiver muito quente. Esses dados também podem ser coletados e analisados ao longo do tempo para realizar manutenção preditiva, onde modelos de IA analisam os dados que antecedem uma falha e os utilizam para prever outras falhas antes que ocorram.
+
+A agricultura digital é essencial para alimentar a crescente população mundial, especialmente para os 2 bilhões de pessoas em 500 milhões de lares que dependem da [agricultura de subsistência](https://wikipedia.org/wiki/Subsistence_agriculture). A agricultura digital pode variar de sensores simples e baratos a grandes instalações comerciais. Um agricultor pode começar monitorando temperaturas e usando [graus-dia de crescimento](https://wikipedia.org/wiki/Growing_degree-day) para prever quando uma colheita estará pronta para a colheita. Eles podem conectar o monitoramento de umidade do solo a sistemas de irrigação automatizados para fornecer às plantas a quantidade exata de água necessária, sem desperdício. Alguns agricultores vão além, utilizando drones, dados de satélite e IA para monitorar o crescimento das culturas, doenças e qualidade do solo em grandes áreas de terra.
+
+✅ Que outros dispositivos IoT poderiam ajudar os agricultores?
+
+### IoT para Infraestrutura
+
+IoT para infraestrutura monitora e controla a infraestrutura local e global que as pessoas usam diariamente.
+
+[Cidades Inteligentes](https://wikipedia.org/wiki/Smart_city) são áreas urbanas que utilizam dispositivos IoT para coletar dados sobre a cidade e usá-los para melhorar seu funcionamento. Essas cidades geralmente são geridas por colaborações entre governos locais, academia e empresas locais, monitorando e gerenciando desde transporte até estacionamento e poluição. Por exemplo, em Copenhague, Dinamarca, a poluição do ar é uma preocupação importante para os moradores, então ela é medida e os dados são usados para fornecer informações sobre as rotas mais limpas para ciclismo e corrida.
+
+[Redes elétricas inteligentes](https://wikipedia.org/wiki/Smart_grid) permitem melhores análises da demanda de energia ao coletar dados de uso no nível de residências individuais. Esses dados podem orientar decisões em nível nacional, como onde construir novas usinas, e em nível pessoal, fornecendo aos usuários insights sobre o consumo de energia, horários de maior uso e até sugestões para reduzir custos, como carregar carros elétricos à noite.
+
+✅ Se você pudesse adicionar dispositivos IoT para medir algo onde você mora, o que seria?
+
+## Exemplos de dispositivos IoT que você pode ter ao seu redor
+
+Você ficaria surpreso com a quantidade de dispositivos IoT que tem ao seu redor. Estou escrevendo isso de casa e tenho os seguintes dispositivos conectados à Internet com recursos inteligentes, como controle por aplicativo, controle por voz ou a capacidade de enviar dados para mim via celular:
+
+* Vários alto-falantes inteligentes
+* Geladeira, lava-louças, forno e micro-ondas
+* Monitor de eletricidade para painéis solares
+* Tomadas inteligentes
+* Campainha com vídeo e câmeras de segurança
+* Termostato inteligente com vários sensores inteligentes de ambiente
+* Abridor de porta de garagem
+* Sistemas de entretenimento doméstico e TVs controladas por voz
+* Lâmpadas
+* Rastreadores de saúde e fitness
+
+Todos esses tipos de dispositivos possuem sensores e/ou atuadores e se conectam à Internet. Posso verificar pelo celular se a porta da minha garagem está aberta e pedir ao meu alto-falante inteligente para fechá-la. Posso até configurá-la para fechar automaticamente à noite, caso ainda esteja aberta. Quando minha campainha toca, posso ver pelo celular quem está lá, onde quer que eu esteja no mundo, e falar com a pessoa por meio de um alto-falante e microfone embutidos na campainha. Posso monitorar minha glicose no sangue, frequência cardíaca e padrões de sono, procurando padrões nos dados para melhorar minha saúde. Posso controlar minhas luzes pela nuvem e ficar no escuro quando minha conexão com a Internet cai.
+
+---
+
+## 🚀 Desafio
+
+Liste quantos dispositivos IoT você puder que estão em sua casa, escola ou local de trabalho - pode haver mais do que você imagina!
+
+## Questionário pós-aula
+
+[Questionário pós-aula](https://black-meadow-040d15503.1.azurestaticapps.net/quiz/2)
+
+## Revisão e Autoestudo
+
+Leia sobre os benefícios e falhas de projetos de IoT para consumidores. Confira sites de notícias para artigos sobre quando algo deu errado, como problemas de privacidade, falhas de hardware ou problemas causados pela falta de conectividade.
+
+Alguns exemplos:
+
+* Confira a conta do Twitter **[Internet of Sh*t](https://twitter.com/internetofshit)** *(aviso de linguagem imprópria)* para bons exemplos de falhas em IoT para consumidores.
+* [c|net - Meu Apple Watch salvou minha vida: 5 pessoas compartilham suas histórias](https://www.cnet.com/news/apple-watch-lifesaving-health-features-read-5-peoples-stories/)
+* [c|net - Técnico da ADT se declara culpado de espionar feeds de câmeras de clientes por anos](https://www.cnet.com/news/adt-home-security-technician-pleads-guilty-to-spying-on-customer-camera-feeds-for-years/) *(aviso de gatilho - voyeurismo não consensual)*
+
+## Tarefa
+
+[Investigue um projeto de IoT](assignment.md)
+
+---
+
+**Aviso Legal**:
+Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.
\ No newline at end of file
diff --git a/translations/br/1-getting-started/lessons/1-introduction-to-iot/assignment.md b/translations/br/1-getting-started/lessons/1-introduction-to-iot/assignment.md
new file mode 100644
index 00000000..60406331
--- /dev/null
+++ b/translations/br/1-getting-started/lessons/1-introduction-to-iot/assignment.md
@@ -0,0 +1,27 @@
+
+# Investigar um projeto de IoT
+
+## Instruções
+
+Existem muitos projetos de IoT em grande e pequena escala sendo implementados globalmente, desde fazendas inteligentes até cidades inteligentes, em monitoramento de saúde, transporte e para o uso de espaços públicos.
+
+Pesquise na web detalhes de um projeto que te interesse, de preferência um próximo de onde você mora. Explique os pontos positivos e negativos do projeto, como os benefícios que ele traz, quaisquer problemas que ele cause e como a privacidade é levada em consideração.
+
+## Rubrica
+
+| Critério | Exemplar | Adequado | Precisa Melhorar |
+| -------- | --------- | -------- | ---------------- |
+| Explicar os pontos positivos e negativos | Apresentou uma explicação clara dos pontos positivos e negativos do projeto | Apresentou uma explicação breve dos pontos positivos e negativos | Não explicou os pontos positivos ou negativos |
+
+---
+
+**Aviso Legal**:
+Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.
\ No newline at end of file
diff --git a/translations/br/1-getting-started/lessons/1-introduction-to-iot/pi.md b/translations/br/1-getting-started/lessons/1-introduction-to-iot/pi.md
new file mode 100644
index 00000000..319595b5
--- /dev/null
+++ b/translations/br/1-getting-started/lessons/1-introduction-to-iot/pi.md
@@ -0,0 +1,286 @@
+
+# Raspberry Pi
+
+O [Raspberry Pi](https://raspberrypi.org) é um computador de placa única. Você pode adicionar sensores e atuadores usando uma ampla variedade de dispositivos e ecossistemas. Para estas lições, utilizaremos um ecossistema de hardware chamado [Grove](https://www.seeedstudio.com/category/Grove-c-1003.html). Você programará seu Pi e acessará os sensores Grove usando Python.
+
+
+
+## Configuração
+
+Se você estiver usando um Raspberry Pi como seu hardware IoT, tem duas opções: pode trabalhar diretamente no Pi para realizar todas as lições e programar, ou pode se conectar remotamente a um Pi 'headless' (sem monitor, teclado ou mouse) e programar a partir do seu computador.
+
+Antes de começar, você também precisará conectar o Grove Base Hat ao seu Pi.
+
+### Tarefa - configuração
+
+Instale o Grove Base Hat no seu Pi e configure o Pi.
+
+1. Conecte o Grove Base Hat ao seu Pi. O soquete do hat se encaixa sobre todos os pinos GPIO do Pi, deslizando até o final para fixar-se firmemente na base. Ele ficará sobre o Pi, cobrindo-o.
+
+ 
+
+1. Decida como deseja programar seu Pi e vá para a seção correspondente abaixo:
+
+ * [Trabalhar diretamente no seu Pi](../../../../../1-getting-started/lessons/1-introduction-to-iot)
+ * [Acesso remoto para programar o Pi](../../../../../1-getting-started/lessons/1-introduction-to-iot)
+
+### Trabalhar diretamente no seu Pi
+
+Se você deseja trabalhar diretamente no seu Pi, pode usar a versão desktop do Raspberry Pi OS e instalar todas as ferramentas necessárias.
+
+#### Tarefa - trabalhar diretamente no seu Pi
+
+Configure seu Pi para desenvolvimento.
+
+1. Siga as instruções no [guia de configuração do Raspberry Pi](https://projects.raspberrypi.org/en/projects/raspberry-pi-setting-up) para configurar seu Pi, conectá-lo a um teclado/mouse/monitor, conectá-lo à sua rede Wi-Fi ou Ethernet e atualizar o software.
+
+Para programar o Pi usando os sensores e atuadores Grove, você precisará instalar um editor para escrever o código do dispositivo, além de várias bibliotecas e ferramentas que interagem com o hardware Grove.
+
+1. Após o reinício do seu Pi, abra o Terminal clicando no ícone **Terminal** na barra de menu superior ou escolha *Menu -> Acessórios -> Terminal*.
+
+1. Execute o seguinte comando para garantir que o sistema operacional e o software instalado estejam atualizados:
+
+ ```sh
+ sudo apt update && sudo apt full-upgrade --yes
+ ```
+
+1. Execute os seguintes comandos para instalar todas as bibliotecas necessárias para o hardware Grove:
+
+ ```sh
+ sudo apt install git python3-dev python3-pip --yes
+
+ git clone https://github.com/Seeed-Studio/grove.py
+ cd grove.py
+ sudo pip3 install .
+
+ sudo raspi-config nonint do_i2c 0
+ ```
+
+ Isso começa instalando o Git, junto com o Pip para instalar pacotes Python.
+
+ Uma das características mais poderosas do Python é a capacidade de instalar [pacotes Pip](https://pypi.org) - pacotes de código escritos por outras pessoas e publicados na Internet. Você pode instalar um pacote Pip no seu computador com um único comando e usá-lo no seu código.
+
+ Os pacotes Python do Seeed Grove precisam ser instalados a partir do código-fonte. Esses comandos clonarão o repositório contendo o código-fonte desse pacote e o instalarão localmente.
+
+ > 💁 Por padrão, quando você instala um pacote, ele fica disponível em todo o computador, o que pode causar problemas com versões de pacotes - como uma aplicação depender de uma versão específica que pode ser quebrada ao instalar uma nova versão para outra aplicação. Para contornar esse problema, você pode usar um [ambiente virtual Python](https://docs.python.org/3/library/venv.html), essencialmente uma cópia do Python em uma pasta dedicada, onde os pacotes Pip são instalados apenas nessa pasta. No entanto, você não usará ambientes virtuais ao trabalhar com o Pi. O script de instalação do Grove instala os pacotes Python do Grove globalmente, então, para usar um ambiente virtual, seria necessário configurá-lo e reinstalar manualmente os pacotes do Grove dentro dele. É mais fácil usar pacotes globais, especialmente porque muitos desenvolvedores de Pi preferem regravar um cartão SD limpo para cada projeto.
+
+ Por fim, isso habilita a interface I2C.
+
+1. Reinicie o Pi usando o menu ou executando o seguinte comando no Terminal:
+
+ ```sh
+ sudo reboot
+ ```
+
+1. Após o reinício do Pi, abra novamente o Terminal e execute o seguinte comando para instalar o [Visual Studio Code (VS Code)](https://code.visualstudio.com?WT.mc_id=academic-17441-jabenn) - este será o editor usado para escrever o código do dispositivo em Python.
+
+ ```sh
+ sudo apt install code
+ ```
+
+ Após a instalação, o VS Code estará disponível no menu superior.
+
+ > 💁 Você é livre para usar qualquer IDE ou editor Python de sua preferência para estas lições, mas as instruções serão baseadas no uso do VS Code.
+
+1. Instale o Pylance. Esta é uma extensão para o VS Code que fornece suporte à linguagem Python. Consulte a [documentação da extensão Pylance](https://marketplace.visualstudio.com/items?WT.mc_id=academic-17441-jabenn&itemName=ms-python.vscode-pylance) para obter instruções sobre como instalar esta extensão no VS Code.
+
+### Acesso remoto para programar o Pi
+
+Em vez de programar diretamente no Pi, ele pode ser executado no modo 'headless', ou seja, sem estar conectado a um teclado/mouse/monitor. Você pode configurá-lo e programá-lo a partir do seu computador usando o Visual Studio Code.
+
+#### Configurar o sistema operacional do Pi
+
+Para programar remotamente, o sistema operacional do Pi precisa ser instalado em um cartão SD.
+
+##### Tarefa - configurar o sistema operacional do Pi
+
+Configure o sistema operacional do Pi no modo headless.
+
+1. Baixe o **Raspberry Pi Imager** na [página de software do Raspberry Pi OS](https://www.raspberrypi.org/software/) e instale-o.
+
+1. Insira um cartão SD no seu computador, usando um adaptador, se necessário.
+
+1. Abra o Raspberry Pi Imager.
+
+1. No Raspberry Pi Imager, selecione o botão **CHOOSE OS**, depois escolha *Raspberry Pi OS (Other)* e, em seguida, *Raspberry Pi OS Lite (32-bit)*.
+
+ 
+
+ > 💁 O Raspberry Pi OS Lite é uma versão do sistema operacional que não possui interface gráfica ou ferramentas baseadas em UI. Isso não é necessário para um Pi headless e torna a instalação menor e o tempo de inicialização mais rápido.
+
+1. Selecione o botão **CHOOSE STORAGE** e escolha seu cartão SD.
+
+1. Abra as **Opções Avançadas** pressionando `Ctrl+Shift+X`. Essas opções permitem pré-configurar o sistema operacional do Raspberry Pi antes de gravá-lo no cartão SD.
+
+ 1. Marque a caixa **Enable SSH** e defina uma senha para o usuário `pi`. Esta será a senha usada para fazer login no Pi mais tarde.
+
+ 1. Se você planeja conectar o Pi via Wi-Fi, marque a caixa **Configure WiFi** e insira o SSID e a senha da sua rede Wi-Fi, além de selecionar seu país de Wi-Fi. Não é necessário fazer isso se você usar um cabo Ethernet. Certifique-se de que a rede à qual você se conecta seja a mesma do seu computador.
+
+ 1. Marque a caixa **Set locale settings** e configure seu país e fuso horário.
+
+ 1. Selecione o botão **SAVE**.
+
+1. Clique no botão **WRITE** para gravar o sistema operacional no cartão SD. Se estiver usando macOS, será solicitado que você insira sua senha, pois a ferramenta subjacente que grava imagens de disco precisa de acesso privilegiado.
+
+O sistema operacional será gravado no cartão SD e, ao finalizar, o cartão será ejetado pelo sistema operacional, e você será notificado. Remova o cartão SD do computador, insira-o no Pi, ligue o Pi e aguarde cerca de 2 minutos para que ele inicialize corretamente.
+
+#### Conectar-se ao Pi
+
+O próximo passo é acessar o Pi remotamente. Isso pode ser feito usando `ssh`, disponível no macOS, Linux e versões recentes do Windows.
+
+##### Tarefa - conectar-se ao Pi
+
+Acesse o Pi remotamente.
+
+1. Abra um Terminal ou Prompt de Comando e insira o seguinte comando para conectar-se ao Pi:
+
+ ```sh
+ ssh pi@raspberrypi.local
+ ```
+
+ Se você estiver usando uma versão mais antiga do Windows que não possui `ssh` instalado, pode usar o OpenSSH. As instruções de instalação estão na [documentação de instalação do OpenSSH](https://docs.microsoft.com//windows-server/administration/openssh/openssh_install_firstuse?WT.mc_id=academic-17441-jabenn).
+
+1. Isso deve conectar-se ao seu Pi e solicitar a senha.
+
+ A capacidade de encontrar computadores na sua rede usando `.local` é uma adição relativamente recente ao Linux e Windows. Se você estiver usando Linux ou Windows e receber erros sobre o nome do host não encontrado, será necessário instalar software adicional para habilitar o ZeroConf networking (também chamado de Bonjour pela Apple):
+
+ 1. Se estiver usando Linux, instale o Avahi com o seguinte comando:
+
+ ```sh
+ sudo apt-get install avahi-daemon
+ ```
+
+ 1. Se estiver usando Windows, a maneira mais fácil de habilitar o ZeroConf é instalar o [Bonjour Print Services for Windows](http://support.apple.com/kb/DL999). Você também pode instalar o [iTunes para Windows](https://www.apple.com/itunes/download/) para obter uma versão mais recente da ferramenta (que não está disponível separadamente).
+
+ > 💁 Se você não conseguir se conectar usando `raspberrypi.local`, pode usar o endereço IP do seu Pi. Consulte a [documentação de endereço IP do Raspberry Pi](https://www.raspberrypi.org/documentation/remote-access/ip-address.md) para instruções sobre como obter o endereço IP.
+
+1. Insira a senha que você definiu nas Opções Avançadas do Raspberry Pi Imager.
+
+#### Configurar software no Pi
+
+Depois de conectado ao Pi, você precisa garantir que o sistema operacional esteja atualizado e instalar várias bibliotecas e ferramentas que interagem com o hardware Grove.
+
+##### Tarefa - configurar software no Pi
+
+Configure o software instalado no Pi e instale as bibliotecas Grove.
+
+1. A partir da sua sessão `ssh`, execute o seguinte comando para atualizar e reiniciar o Pi:
+
+ ```sh
+ sudo apt update && sudo apt full-upgrade --yes && sudo reboot
+ ```
+
+ O Pi será atualizado e reiniciado. A sessão `ssh` será encerrada quando o Pi for reiniciado, então aguarde cerca de 30 segundos e reconecte-se.
+
+1. Na sessão `ssh` reconectada, execute os seguintes comandos para instalar todas as bibliotecas necessárias para o hardware Grove:
+
+ ```sh
+ sudo apt install git python3-dev python3-pip --yes
+
+ git clone https://github.com/Seeed-Studio/grove.py
+ cd grove.py
+ sudo pip3 install .
+
+ sudo raspi-config nonint do_i2c 0
+ ```
+
+ Isso começa instalando o Git, junto com o Pip para instalar pacotes Python.
+
+ Uma das características mais poderosas do Python é a capacidade de instalar [pacotes Pip](https://pypi.org) - pacotes de código escritos por outras pessoas e publicados na Internet. Você pode instalar um pacote Pip no seu computador com um único comando e usá-lo no seu código.
+
+ Os pacotes Python do Seeed Grove precisam ser instalados a partir do código-fonte. Esses comandos clonarão o repositório contendo o código-fonte desse pacote e o instalarão localmente.
+
+ > 💁 Por padrão, quando você instala um pacote, ele fica disponível em todo o computador, o que pode causar problemas com versões de pacotes - como uma aplicação depender de uma versão específica que pode ser quebrada ao instalar uma nova versão para outra aplicação. Para contornar esse problema, você pode usar um [ambiente virtual Python](https://docs.python.org/3/library/venv.html), essencialmente uma cópia do Python em uma pasta dedicada, onde os pacotes Pip são instalados apenas nessa pasta. No entanto, você não usará ambientes virtuais ao trabalhar com o Pi. O script de instalação do Grove instala os pacotes Python do Grove globalmente, então, para usar um ambiente virtual, seria necessário configurá-lo e reinstalar manualmente os pacotes do Grove dentro dele. É mais fácil usar pacotes globais, especialmente porque muitos desenvolvedores de Pi preferem regravar um cartão SD limpo para cada projeto.
+
+ Por fim, isso habilita a interface I2C.
+
+1. Reinicie o Pi executando o seguinte comando:
+
+ ```sh
+ sudo reboot
+ ```
+
+ A sessão `ssh` será encerrada quando o Pi for reiniciado. Não é necessário reconectar.
+
+#### Configurar o VS Code para acesso remoto
+
+Depois que o Pi estiver configurado, você poderá se conectar a ele usando o Visual Studio Code (VS Code) a partir do seu computador - este é um editor de texto gratuito para desenvolvedores que você usará para escrever o código do dispositivo em Python.
+
+##### Tarefa - configurar o VS Code para acesso remoto
+
+Instale o software necessário e conecte-se remotamente ao seu Pi.
+
+1. Instale o VS Code no seu computador seguindo a [documentação do VS Code](https://code.visualstudio.com?WT.mc_id=academic-17441-jabenn).
+
+1. Siga as instruções na [documentação de desenvolvimento remoto do VS Code usando SSH](https://code.visualstudio.com/docs/remote/ssh?WT.mc_id=academic-17441-jabenn) para instalar os componentes necessários.
+
+1. Seguindo as mesmas instruções, conecte o VS Code ao Pi.
+
+1. Uma vez conectado, siga as instruções de [gerenciamento de extensões](https://code.visualstudio.com/docs/remote/ssh#_managing-extensions?WT.mc_id=academic-17441-jabenn) para instalar remotamente a extensão [Pylance](https://marketplace.visualstudio.com/items?WT.mc_id=academic-17441-jabenn&itemName=ms-python.vscode-pylance) no Pi.
+
+## Olá, mundo
+É tradicional, ao começar com uma nova linguagem de programação ou tecnologia, criar um aplicativo 'Hello World' - um pequeno programa que exibe algo como o texto `"Hello World"` para mostrar que todas as ferramentas estão configuradas corretamente.
+
+O aplicativo Hello World para o Pi garantirá que você tenha o Python e o Visual Studio Code instalados corretamente.
+
+Este aplicativo estará em uma pasta chamada `nightlight`, e será reutilizado com códigos diferentes em partes posteriores desta tarefa para construir o aplicativo de luz noturna.
+
+### Tarefa - hello world
+
+Crie o aplicativo Hello World.
+
+1. Abra o VS Code, diretamente no Pi ou no seu computador conectado ao Pi usando a extensão Remote SSH.
+
+1. Abra o Terminal do VS Code selecionando *Terminal -> New Terminal*, ou pressionando `` CTRL+` ``. Ele será aberto no diretório inicial do usuário `pi`.
+
+1. Execute os seguintes comandos para criar um diretório para o seu código e criar um arquivo Python chamado `app.py` dentro desse diretório:
+
+ ```sh
+ mkdir nightlight
+ cd nightlight
+ touch app.py
+ ```
+
+1. Abra esta pasta no VS Code selecionando *File -> Open...* e escolhendo a pasta *nightlight*, depois selecione **OK**.
+
+ 
+
+1. Abra o arquivo `app.py` no explorador do VS Code e adicione o seguinte código:
+
+ ```python
+ print('Hello World!')
+ ```
+
+ A função `print` exibe no console o que for passado para ela.
+
+1. No Terminal do VS Code, execute o seguinte comando para rodar seu aplicativo Python:
+
+ ```sh
+ python app.py
+ ```
+
+ > 💁 Pode ser necessário chamar explicitamente `python3` para executar este código se você tiver o Python 2 instalado além do Python 3 (a versão mais recente). Se o Python 2 estiver instalado, chamar `python` usará o Python 2 em vez do Python 3. Por padrão, as versões mais recentes do Raspberry Pi OS possuem apenas o Python 3 instalado.
+
+ A seguinte saída aparecerá no terminal:
+
+ ```output
+ pi@raspberrypi:~/nightlight $ python3 app.py
+ Hello World!
+ ```
+
+> 💁 Você pode encontrar este código na pasta [code/pi](../../../../../1-getting-started/lessons/1-introduction-to-iot/code/pi).
+
+😀 Seu programa 'Hello World' foi um sucesso!
+
+---
+
+**Aviso Legal**:
+Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.
\ No newline at end of file
diff --git a/translations/br/1-getting-started/lessons/1-introduction-to-iot/virtual-device.md b/translations/br/1-getting-started/lessons/1-introduction-to-iot/virtual-device.md
new file mode 100644
index 00000000..4492ec64
--- /dev/null
+++ b/translations/br/1-getting-started/lessons/1-introduction-to-iot/virtual-device.md
@@ -0,0 +1,245 @@
+
+# Computador de placa única virtual
+
+Em vez de comprar um dispositivo IoT, junto com sensores e atuadores, você pode usar seu computador para simular hardware IoT. O [projeto CounterFit](https://github.com/CounterFit-IoT/CounterFit) permite que você execute um aplicativo localmente que simula hardware IoT, como sensores e atuadores, e acesse esses sensores e atuadores a partir de código Python local, escrito da mesma forma que você faria em um Raspberry Pi usando hardware físico.
+
+## Configuração
+
+Para usar o CounterFit, você precisará instalar alguns softwares gratuitos no seu computador.
+
+### Tarefa
+
+Instale o software necessário.
+
+1. Instale o Python. Consulte a [página de downloads do Python](https://www.python.org/downloads/) para instruções sobre como instalar a versão mais recente do Python.
+
+1. Instale o Visual Studio Code (VS Code). Este será o editor que você usará para escrever o código do dispositivo virtual em Python. Consulte a [documentação do VS Code](https://code.visualstudio.com?WT.mc_id=academic-17441-jabenn) para instruções sobre como instalar o VS Code.
+
+ > 💁 Você está livre para usar qualquer IDE ou editor de Python para estas lições, caso tenha uma ferramenta preferida, mas as lições fornecerão instruções baseadas no uso do VS Code.
+
+1. Instale a extensão Pylance do VS Code. Esta é uma extensão para o VS Code que oferece suporte à linguagem Python. Consulte a [documentação da extensão Pylance](https://marketplace.visualstudio.com/items?WT.mc_id=academic-17441-jabenn&itemName=ms-python.vscode-pylance) para instruções sobre como instalar esta extensão no VS Code.
+
+As instruções para instalar e configurar o aplicativo CounterFit serão fornecidas no momento relevante nas instruções da tarefa, pois ele é instalado por projeto.
+
+## Olá Mundo
+
+É tradicional, ao começar com uma nova linguagem de programação ou tecnologia, criar um aplicativo 'Olá Mundo' - um pequeno aplicativo que exibe algo como o texto `"Olá Mundo"` para mostrar que todas as ferramentas estão configuradas corretamente.
+
+O aplicativo Olá Mundo para o hardware IoT virtual garantirá que você tenha o Python e o Visual Studio Code instalados corretamente. Ele também se conectará ao CounterFit para os sensores e atuadores IoT virtuais. Não usará nenhum hardware, apenas se conectará para provar que tudo está funcionando.
+
+Este aplicativo estará em uma pasta chamada `nightlight`, e será reutilizado com diferentes códigos em partes posteriores desta tarefa para construir o aplicativo de luz noturna.
+
+### Configurar um ambiente virtual Python
+
+Uma das características poderosas do Python é a capacidade de instalar [pacotes Pip](https://pypi.org) - pacotes de código escritos por outras pessoas e publicados na Internet. Você pode instalar um pacote Pip no seu computador com um único comando e, em seguida, usar esse pacote no seu código. Você usará o Pip para instalar um pacote que se comunica com o CounterFit.
+
+Por padrão, quando você instala um pacote, ele fica disponível em todo o seu computador, e isso pode levar a problemas com versões de pacotes - como um aplicativo depender de uma versão de um pacote que quebra quando você instala uma nova versão para outro aplicativo. Para contornar esse problema, você pode usar um [ambiente virtual Python](https://docs.python.org/3/library/venv.html), essencialmente uma cópia do Python em uma pasta dedicada, e quando você instala pacotes Pip, eles são instalados apenas nessa pasta.
+
+> 💁 Se você estiver usando um Raspberry Pi, então não configurou um ambiente virtual nesse dispositivo para gerenciar pacotes Pip, em vez disso, está usando pacotes globais, já que os pacotes Grove são instalados globalmente pelo script de instalação.
+
+#### Tarefa - configurar um ambiente virtual Python
+
+Configure um ambiente virtual Python e instale os pacotes Pip para o CounterFit.
+
+1. No seu terminal ou linha de comando, execute o seguinte em um local de sua escolha para criar e navegar até um novo diretório:
+
+ ```sh
+ mkdir nightlight
+ cd nightlight
+ ```
+
+1. Agora execute o seguinte para criar um ambiente virtual na pasta `.venv`:
+
+ ```sh
+ python3 -m venv .venv
+ ```
+
+ > 💁 Você precisa chamar explicitamente `python3` para criar o ambiente virtual, caso tenha o Python 2 instalado além do Python 3 (a versão mais recente). Se você tiver o Python 2 instalado, chamar `python` usará o Python 2 em vez do Python 3.
+
+1. Ative o ambiente virtual:
+
+ * No Windows:
+ * Se estiver usando o Prompt de Comando ou o Prompt de Comando pelo Windows Terminal, execute:
+
+ ```cmd
+ .venv\Scripts\activate.bat
+ ```
+
+ * Se estiver usando o PowerShell, execute:
+
+ ```powershell
+ .\.venv\Scripts\Activate.ps1
+ ```
+
+ > Se você receber um erro sobre scripts não poderem ser executados neste sistema, será necessário habilitar a execução de scripts configurando uma política de execução apropriada. Você pode fazer isso iniciando o PowerShell como administrador e executando o seguinte comando:
+
+ ```powershell
+ Set-ExecutionPolicy -ExecutionPolicy Unrestricted
+ ```
+
+ Digite `Y` quando solicitado a confirmar. Em seguida, reinicie o PowerShell e tente novamente.
+
+ Você pode redefinir essa política de execução posteriormente, se necessário. Você pode ler mais sobre isso na [página de Políticas de Execução na documentação da Microsoft](https://docs.microsoft.com/powershell/module/microsoft.powershell.core/about/about_execution_policies?WT.mc_id=academic-17441-jabenn).
+
+ * No macOS ou Linux, execute:
+
+ ```cmd
+ source ./.venv/bin/activate
+ ```
+
+ > 💁 Esses comandos devem ser executados no mesmo local onde você executou o comando para criar o ambiente virtual. Você nunca precisará navegar para dentro da pasta `.venv`, sempre deve executar o comando de ativação e quaisquer comandos para instalar pacotes ou executar código a partir da pasta onde estava ao criar o ambiente virtual.
+
+1. Uma vez que o ambiente virtual foi ativado, o comando padrão `python` executará a versão do Python que foi usada para criar o ambiente virtual. Execute o seguinte para obter a versão:
+
+ ```sh
+ python --version
+ ```
+
+ A saída deve conter o seguinte:
+
+ ```output
+ (.venv) ➜ nightlight python --version
+ Python 3.9.1
+ ```
+
+ > 💁 Sua versão do Python pode ser diferente - desde que seja a versão 3.6 ou superior, está tudo certo. Caso contrário, exclua esta pasta, instale uma versão mais recente do Python e tente novamente.
+
+1. Execute os seguintes comandos para instalar os pacotes Pip para o CounterFit. Esses pacotes incluem o aplicativo principal do CounterFit, bem como shims para hardware Grove. Esses shims permitem que você escreva código como se estivesse programando usando sensores e atuadores físicos do ecossistema Grove, mas conectados a dispositivos IoT virtuais.
+
+ ```sh
+ pip install CounterFit
+ pip install counterfit-connection
+ pip install counterfit-shims-grove
+ ```
+
+ Esses pacotes Pip serão instalados apenas no ambiente virtual e não estarão disponíveis fora dele.
+
+### Escreva o código
+
+Depois que o ambiente virtual Python estiver pronto, você pode escrever o código para o aplicativo 'Olá Mundo'.
+
+#### Tarefa - escreva o código
+
+Crie um aplicativo Python para imprimir `"Olá Mundo"` no console.
+
+1. No seu terminal ou linha de comando, execute o seguinte dentro do ambiente virtual para criar um arquivo Python chamado `app.py`:
+
+ * No Windows, execute:
+
+ ```cmd
+ type nul > app.py
+ ```
+
+ * No macOS ou Linux, execute:
+
+ ```cmd
+ touch app.py
+ ```
+
+1. Abra a pasta atual no VS Code:
+
+ ```sh
+ code .
+ ```
+
+ > 💁 Se o seu terminal retornar `command not found` no macOS, significa que o VS Code não foi adicionado ao seu PATH. Você pode adicionar o VS Code ao seu PATH seguindo as instruções na [seção de Lançamento pela linha de comando da documentação do VS Code](https://code.visualstudio.com/docs/setup/mac?WT.mc_id=academic-17441-jabenn#_launching-from-the-command-line) e executar o comando novamente. O VS Code é adicionado ao PATH por padrão no Windows e Linux.
+
+1. Quando o VS Code for iniciado, ele ativará o ambiente virtual Python. O ambiente virtual selecionado aparecerá na barra de status inferior:
+
+ 
+
+1. Se o Terminal do VS Code já estiver em execução quando o VS Code for iniciado, ele não terá o ambiente virtual ativado. A maneira mais fácil de resolver isso é encerrar o terminal usando o botão **Kill the active terminal instance**:
+
+ 
+
+ Você pode verificar se o terminal tem o ambiente virtual ativado, pois o nome do ambiente virtual será um prefixo no prompt do terminal. Por exemplo, pode ser:
+
+ ```sh
+ (.venv) ➜ nightlight
+ ```
+
+ Se você não tiver `.venv` como prefixo no prompt, o ambiente virtual não está ativo no terminal.
+
+1. Inicie um novo terminal do VS Code selecionando *Terminal -> New Terminal*, ou pressionando `` CTRL+` ``. O novo terminal carregará o ambiente virtual, e a chamada para ativá-lo aparecerá no terminal. O prompt também terá o nome do ambiente virtual (`.venv`):
+
+ ```output
+ ➜ nightlight source .venv/bin/activate
+ (.venv) ➜ nightlight
+ ```
+
+1. Abra o arquivo `app.py` no explorador do VS Code e adicione o seguinte código:
+
+ ```python
+ print('Hello World!')
+ ```
+
+ A função `print` imprime o que for passado para ela no console.
+
+1. No terminal do VS Code, execute o seguinte para rodar seu aplicativo Python:
+
+ ```sh
+ python app.py
+ ```
+
+ A seguinte saída aparecerá:
+
+ ```output
+ (.venv) ➜ nightlight python app.py
+ Hello World!
+ ```
+
+😀 Seu programa 'Olá Mundo' foi um sucesso!
+
+### Conecte o 'hardware'
+
+Como um segundo passo do 'Olá Mundo', você executará o aplicativo CounterFit e conectará seu código a ele. Este é o equivalente virtual de conectar algum hardware IoT a um kit de desenvolvimento.
+
+#### Tarefa - conecte o 'hardware'
+
+1. No terminal do VS Code, inicie o aplicativo CounterFit com o seguinte comando:
+
+ ```sh
+ counterfit
+ ```
+
+ O aplicativo começará a ser executado e abrirá no seu navegador:
+
+ 
+
+ Ele será marcado como *Disconnected*, com o LED no canto superior direito apagado.
+
+1. Adicione o seguinte código ao topo do arquivo `app.py`:
+
+ ```python
+ from counterfit_connection import CounterFitConnection
+ CounterFitConnection.init('127.0.0.1', 5000)
+ ```
+
+ Este código importa a classe `CounterFitConnection` do módulo `counterfit_connection`, que vem do pacote pip `counterfit-connection` instalado anteriormente. Em seguida, inicializa uma conexão com o aplicativo CounterFit rodando em `127.0.0.1`, que é um endereço IP que você pode sempre usar para acessar seu computador local (frequentemente chamado de *localhost*), na porta 5000.
+
+ > 💁 Se você tiver outros aplicativos rodando na porta 5000, pode alterar isso atualizando a porta no código e executando o CounterFit usando `CounterFit --port `, substituindo `` pela porta que deseja usar.
+
+1. Você precisará iniciar um novo terminal do VS Code selecionando o botão **Create a new integrated terminal**. Isso porque o aplicativo CounterFit está rodando no terminal atual.
+
+ 
+
+1. No novo terminal, execute o arquivo `app.py` como antes. O status do CounterFit mudará para **Connected** e o LED acenderá.
+
+ 
+
+> 💁 Você pode encontrar este código na pasta [code/virtual-device](../../../../../1-getting-started/lessons/1-introduction-to-iot/code/virtual-device).
+
+😀 Sua conexão com o hardware foi um sucesso!
+
+---
+
+**Aviso Legal**:
+Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.
\ No newline at end of file
diff --git a/translations/br/1-getting-started/lessons/1-introduction-to-iot/wio-terminal.md b/translations/br/1-getting-started/lessons/1-introduction-to-iot/wio-terminal.md
new file mode 100644
index 00000000..902f3d86
--- /dev/null
+++ b/translations/br/1-getting-started/lessons/1-introduction-to-iot/wio-terminal.md
@@ -0,0 +1,222 @@
+
+# Wio Terminal
+
+O [Wio Terminal da Seeed Studios](https://www.seeedstudio.com/Wio-Terminal-p-4509.html) é um microcontrolador compatível com Arduino, com WiFi e alguns sensores e atuadores integrados, além de portas para adicionar mais sensores e atuadores, utilizando um ecossistema de hardware chamado [Grove](https://www.seeedstudio.com/category/Grove-c-1003.html).
+
+
+
+## Configuração
+
+Para usar o Wio Terminal, você precisará instalar alguns softwares gratuitos no seu computador. Também será necessário atualizar o firmware do Wio Terminal antes de conectá-lo ao WiFi.
+
+### Tarefa - configuração
+
+Instale o software necessário e atualize o firmware.
+
+1. Instale o Visual Studio Code (VS Code). Este será o editor que você usará para escrever o código do dispositivo em C/C++. Consulte a [documentação do VS Code](https://code.visualstudio.com?WT.mc_id=academic-17441-jabenn) para obter instruções sobre como instalar o VS Code.
+
+ > 💁 Outro IDE popular para desenvolvimento com Arduino é o [Arduino IDE](https://www.arduino.cc/en/software). Se você já estiver familiarizado com essa ferramenta, pode usá-la em vez do VS Code e do PlatformIO, mas as lições fornecerão instruções baseadas no uso do VS Code.
+
+1. Instale a extensão PlatformIO para o VS Code. Esta é uma extensão para o VS Code que suporta a programação de microcontroladores em C/C++. Consulte a [documentação da extensão PlatformIO](https://marketplace.visualstudio.com/items?WT.mc_id=academic-17441-jabenn&itemName=platformio.platformio-ide) para obter instruções sobre como instalar esta extensão no VS Code. Essa extensão depende da extensão Microsoft C/C++ para trabalhar com código C e C++, que será instalada automaticamente ao instalar o PlatformIO.
+
+1. Conecte o Wio Terminal ao seu computador. O Wio Terminal possui uma porta USB-C na parte inferior, que deve ser conectada a uma porta USB do seu computador. O Wio Terminal vem com um cabo USB-C para USB-A, mas se o seu computador tiver apenas portas USB-C, você precisará de um cabo USB-C ou um adaptador USB-A para USB-C.
+
+1. Siga as instruções na [documentação de visão geral do WiFi no Wiki do Wio Terminal](https://wiki.seeedstudio.com/Wio-Terminal-Network-Overview/) para configurar o Wio Terminal e atualizar o firmware.
+
+## Hello World
+
+É tradicional, ao começar com uma nova linguagem de programação ou tecnologia, criar um aplicativo 'Hello World' - um pequeno programa que exibe algo como o texto `"Hello World"` para mostrar que todas as ferramentas estão configuradas corretamente.
+
+O aplicativo Hello World para o Wio Terminal garantirá que você tenha o Visual Studio Code instalado corretamente com o PlatformIO e configurado para desenvolvimento de microcontroladores.
+
+### Criar um projeto no PlatformIO
+
+O primeiro passo é criar um novo projeto usando o PlatformIO configurado para o Wio Terminal.
+
+#### Tarefa - criar um projeto no PlatformIO
+
+Crie o projeto no PlatformIO.
+
+1. Conecte o Wio Terminal ao seu computador.
+
+1. Abra o VS Code.
+
+1. O ícone do PlatformIO estará na barra de menu lateral:
+
+ 
+
+ Selecione este item de menu e, em seguida, selecione *PIO Home -> Open*.
+
+ 
+
+1. Na tela de boas-vindas, selecione o botão **+ New Project**.
+
+ 
+
+1. Configure o projeto no *Project Wizard*:
+
+ 1. Nomeie seu projeto como `nightlight`.
+
+ 1. No menu suspenso *Board*, digite `WIO` para filtrar as placas e selecione *Seeeduino Wio Terminal*.
+
+ 1. Deixe o *Framework* como *Arduino*.
+
+ 1. Mantenha a caixa de seleção *Use default location* marcada ou desmarque-a e selecione um local para o seu projeto.
+
+ 1. Selecione o botão **Finish**.
+
+ 
+
+ O PlatformIO fará o download dos componentes necessários para compilar o código para o Wio Terminal e criará seu projeto. Isso pode levar alguns minutos.
+
+### Investigar o projeto no PlatformIO
+
+O explorador do VS Code mostrará vários arquivos e pastas criados pelo assistente do PlatformIO.
+
+#### Pastas
+
+* `.pio` - esta pasta contém dados temporários necessários pelo PlatformIO, como bibliotecas ou código compilado. Ela é recriada automaticamente se excluída, e você não precisa adicioná-la ao controle de versão se estiver compartilhando seu projeto em sites como o GitHub.
+* `.vscode` - esta pasta contém a configuração usada pelo PlatformIO e pelo VS Code. Ela é recriada automaticamente se excluída, e você não precisa adicioná-la ao controle de versão se estiver compartilhando seu projeto em sites como o GitHub.
+* `include` - esta pasta é para arquivos de cabeçalho externos necessários ao adicionar bibliotecas adicionais ao seu código. Você não usará esta pasta em nenhuma destas lições.
+* `lib` - esta pasta é para bibliotecas externas que você deseja chamar a partir do seu código. Você não usará esta pasta em nenhuma destas lições.
+* `src` - esta pasta contém o código-fonte principal do seu aplicativo. Inicialmente, ela conterá um único arquivo - `main.cpp`.
+* `test` - esta pasta é onde você colocaria quaisquer testes unitários para o seu código.
+
+#### Arquivos
+
+* `main.cpp` - este arquivo na pasta `src` contém o ponto de entrada para o seu aplicativo. Abra este arquivo, e ele conterá o seguinte código:
+
+ ```cpp
+ #include
+
+ void setup() {
+ // put your setup code here, to run once:
+ }
+
+ void loop() {
+ // put your main code here, to run repeatedly:
+ }
+ ```
+
+ Quando o dispositivo é iniciado, o framework Arduino executa a função `setup` uma vez e, em seguida, executa a função `loop` repetidamente até que o dispositivo seja desligado.
+
+* `.gitignore` - este arquivo lista os arquivos e diretórios a serem ignorados ao adicionar seu código ao controle de versão git, como ao fazer upload para um repositório no GitHub.
+
+* `platformio.ini` - este arquivo contém a configuração para o seu dispositivo e aplicativo. Abra este arquivo, e ele conterá o seguinte código:
+
+ ```ini
+ [env:seeed_wio_terminal]
+ platform = atmelsam
+ board = seeed_wio_terminal
+ framework = arduino
+ ```
+
+ A seção `[env:seeed_wio_terminal]` possui a configuração para o Wio Terminal. Você pode ter várias seções `env` para que seu código possa ser compilado para várias placas.
+
+ Os outros valores correspondem à configuração do assistente de projeto:
+
+ * `platform = atmelsam` define o hardware que o Wio Terminal usa (um microcontrolador baseado em ATSAMD51).
+ * `board = seeed_wio_terminal` define o tipo de placa do microcontrolador (o Wio Terminal).
+ * `framework = arduino` define que este projeto está usando o framework Arduino.
+
+### Escrever o aplicativo Hello World
+
+Agora você está pronto para escrever o aplicativo Hello World.
+
+#### Tarefa - escrever o aplicativo Hello World
+
+Escreva o aplicativo Hello World.
+
+1. Abra o arquivo `main.cpp` no VS Code.
+
+1. Altere o código para corresponder ao seguinte:
+
+ ```cpp
+ #include
+
+ void setup()
+ {
+ Serial.begin(9600);
+
+ while (!Serial)
+ ; // Wait for Serial to be ready
+
+ delay(1000);
+ }
+
+ void loop()
+ {
+ Serial.println("Hello World");
+ delay(5000);
+ }
+ ```
+
+ A função `setup` inicializa uma conexão com a porta serial - neste caso, a porta USB usada para conectar o Wio Terminal ao seu computador. O parâmetro `9600` é a [taxa de transmissão](https://wikipedia.org/wiki/Symbol_rate) (também conhecida como taxa de símbolos), ou a velocidade com que os dados serão enviados pela porta serial em bits por segundo. Essa configuração significa que 9.600 bits (0s e 1s) de dados são enviados a cada segundo. Em seguida, ela aguarda a porta serial estar pronta.
+
+ A função `loop` envia a linha `Hello World!` para a porta serial, ou seja, os caracteres de `Hello World!` junto com um caractere de nova linha. Em seguida, ela aguarda 5.000 milissegundos ou 5 segundos. Após o término do `loop`, ele é executado novamente, e assim por diante, enquanto o microcontrolador estiver ligado.
+
+1. Coloque o Wio Terminal no modo de upload. Você precisará fazer isso toda vez que enviar um novo código para o dispositivo:
+
+ 1. Puxe o interruptor de energia para baixo duas vezes rapidamente - ele retornará automaticamente para a posição ligada a cada vez.
+
+ 1. Verifique o LED azul de status à direita da porta USB. Ele deve estar pulsando.
+
+ [](https://youtu.be/LeKU_7zLRrQ)
+
+ Clique na imagem acima para assistir a um vídeo mostrando como fazer isso.
+
+1. Compile e envie o código para o Wio Terminal.
+
+ 1. Abra o painel de comandos do VS Code.
+
+ 1. Digite `PlatformIO Upload` para buscar a opção de upload e selecione *PlatformIO: Upload*.
+
+ 
+
+ O PlatformIO compilará automaticamente o código, se necessário, antes de enviá-lo.
+
+ 1. O código será compilado e enviado para o Wio Terminal.
+
+ > 💁 Se você estiver usando macOS, uma notificação sobre um *DISCO NÃO EJETADO CORRETAMENTE* aparecerá. Isso ocorre porque o Wio Terminal é montado como uma unidade durante o processo de gravação e é desconectado quando o código compilado é gravado no dispositivo. Você pode ignorar essa notificação.
+
+ ⚠️ Se você receber erros sobre a porta de upload estar indisponível, primeiro certifique-se de que o Wio Terminal está conectado ao seu computador, ligado usando o interruptor no lado esquerdo da tela e configurado no modo de upload. A luz verde na parte inferior deve estar acesa, e a luz azul deve estar pulsando. Se o erro persistir, puxe o interruptor de ligar/desligar para baixo duas vezes rapidamente novamente para forçar o Wio Terminal ao modo de upload e tente o upload novamente.
+
+O PlatformIO possui um Monitor Serial que pode monitorar os dados enviados pelo cabo USB do Wio Terminal. Isso permite monitorar os dados enviados pelo comando `Serial.println("Hello World");`.
+
+1. Abra o painel de comandos do VS Code.
+
+1. Digite `PlatformIO Serial` para buscar a opção de Monitor Serial e selecione *PlatformIO: Serial Monitor*.
+
+ 
+
+ Um novo terminal será aberto, e os dados enviados pela porta serial serão exibidos neste terminal:
+
+ ```output
+ > Executing task: platformio device monitor <
+
+ --- Available filters and text transformations: colorize, debug, default, direct, hexlify, log2file, nocontrol, printable, send_on_enter, time
+ --- More details at http://bit.ly/pio-monitor-filters
+ --- Miniterm on /dev/cu.usbmodem101 9600,8,N,1 ---
+ --- Quit: Ctrl+C | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H ---
+ Hello World
+ Hello World
+ ```
+
+ `Hello World` será exibido no monitor serial a cada 5 segundos.
+
+> 💁 Você pode encontrar este código na pasta [code/wio-terminal](../../../../../1-getting-started/lessons/1-introduction-to-iot/code/wio-terminal).
+
+😀 Seu programa 'Hello World' foi um sucesso!
+
+---
+
+**Aviso Legal**:
+Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.
\ No newline at end of file
diff --git a/translations/br/1-getting-started/lessons/2-deeper-dive/README.md b/translations/br/1-getting-started/lessons/2-deeper-dive/README.md
new file mode 100644
index 00000000..ddd5ac97
--- /dev/null
+++ b/translations/br/1-getting-started/lessons/2-deeper-dive/README.md
@@ -0,0 +1,277 @@
+
+# Um mergulho mais profundo no IoT
+
+
+
+> Ilustração por [Nitya Narasimhan](https://github.com/nitya). Clique na imagem para uma versão maior.
+
+Esta lição foi apresentada como parte da série [Hello IoT](https://youtube.com/playlist?list=PLmsFUfdnGr3xRts0TIwyaHyQuHaNQcb6-) do [Microsoft Reactor](https://developer.microsoft.com/reactor/?WT.mc_id=academic-17441-jabenn). A lição foi dividida em dois vídeos - uma aula de 1 hora e uma sessão de perguntas e respostas de 1 hora, explorando mais a fundo os tópicos abordados e respondendo a dúvidas.
+
+[](https://youtu.be/t0SySWw3z9M)
+
+[](https://youtu.be/tTZYf9EST1E)
+
+> 🎥 Clique nas imagens acima para assistir aos vídeos
+
+## Questionário pré-aula
+
+[Questionário pré-aula](https://black-meadow-040d15503.1.azurestaticapps.net/quiz/3)
+
+## Introdução
+
+Nesta lição, vamos nos aprofundar em alguns dos conceitos abordados na lição anterior.
+
+Nesta lição, veremos:
+
+* [Componentes de uma aplicação IoT](../../../../../1-getting-started/lessons/2-deeper-dive)
+* [Explorando mais a fundo os microcontroladores](../../../../../1-getting-started/lessons/2-deeper-dive)
+* [Explorando mais a fundo os computadores de placa única](../../../../../1-getting-started/lessons/2-deeper-dive)
+
+## Componentes de uma aplicação IoT
+
+Os dois componentes principais de uma aplicação IoT são a *Internet* e o *dispositivo*. Vamos analisar esses dois componentes com mais detalhes.
+
+### O Dispositivo
+
+
+
+A parte do **Dispositivo** no IoT refere-se a um equipamento que pode interagir com o mundo físico. Esses dispositivos geralmente são pequenos, de baixo custo, com computadores que operam em baixa velocidade e consomem pouca energia - por exemplo, microcontroladores simples com apenas alguns kilobytes de RAM (em comparação com gigabytes em um PC), funcionando a algumas centenas de megahertz (em comparação com gigahertz em um PC), mas consumindo tão pouca energia que podem operar por semanas, meses ou até anos com baterias.
+
+Esses dispositivos interagem com o mundo físico, seja usando sensores para coletar dados do ambiente ou controlando saídas ou atuadores para realizar mudanças físicas. Um exemplo típico é um termostato inteligente - um dispositivo que possui um sensor de temperatura, um meio de definir a temperatura desejada, como um botão ou tela sensível ao toque, e uma conexão com um sistema de aquecimento ou resfriamento que pode ser ativado quando a temperatura detectada estiver fora da faixa desejada. O sensor de temperatura detecta que o ambiente está muito frio e um atuador liga o aquecimento.
+
+
+
+Há uma enorme variedade de dispositivos que podem atuar como dispositivos IoT, desde hardware dedicado que detecta uma única coisa até dispositivos de uso geral, como seu smartphone! Um smartphone pode usar sensores para detectar o ambiente ao seu redor e atuadores para interagir com o mundo - por exemplo, usando um sensor GPS para detectar sua localização e um alto-falante para fornecer instruções de navegação até um destino.
+
+✅ Pense em outros sistemas ao seu redor que leem dados de um sensor e os utilizam para tomar decisões. Um exemplo seria o termostato de um forno. Consegue encontrar mais exemplos?
+
+### A Internet
+
+A parte da **Internet** em uma aplicação IoT consiste em aplicativos aos quais o dispositivo IoT pode se conectar para enviar e receber dados, bem como outros aplicativos que podem processar os dados do dispositivo IoT e ajudar a tomar decisões sobre quais solicitações enviar aos atuadores do dispositivo IoT.
+
+Uma configuração típica seria ter algum tipo de serviço em nuvem ao qual o dispositivo IoT se conecta. Esse serviço em nuvem lida com questões como segurança, além de receber mensagens do dispositivo IoT e enviar mensagens de volta ao dispositivo. Esse serviço em nuvem, por sua vez, conecta-se a outros aplicativos que podem processar ou armazenar dados de sensores, ou usar esses dados em conjunto com informações de outros sistemas para tomar decisões.
+
+Os dispositivos nem sempre se conectam diretamente à Internet via Wi-Fi ou conexões com fio. Alguns dispositivos usam redes mesh para se comunicarem entre si por meio de tecnologias como Bluetooth, conectando-se a um dispositivo hub que possui uma conexão com a Internet.
+
+No exemplo de um termostato inteligente, o termostato se conectaria à rede Wi-Fi doméstica e a um serviço em nuvem. Ele enviaria os dados de temperatura para esse serviço em nuvem, que os armazenaria em um banco de dados, permitindo que o proprietário verificasse as temperaturas atuais e passadas por meio de um aplicativo no celular. Outro serviço na nuvem saberia qual temperatura o proprietário deseja e enviaria mensagens de volta ao dispositivo IoT, por meio do serviço em nuvem, para informar ao sistema de aquecimento quando ligar ou desligar.
+
+
+
+Uma versão ainda mais inteligente poderia usar IA na nuvem com dados de outros sensores conectados a outros dispositivos IoT, como sensores de ocupação que detectam quais cômodos estão em uso, além de dados como condições climáticas e até mesmo seu calendário, para tomar decisões sobre como ajustar a temperatura de forma inteligente. Por exemplo, poderia desligar o aquecimento se ler no seu calendário que você está de férias, ou ajustar o aquecimento de acordo com os cômodos que você utiliza, aprendendo com os dados para ser cada vez mais preciso ao longo do tempo.
+
+
+
+✅ Que outros dados poderiam ajudar a tornar um termostato conectado à Internet mais inteligente?
+
+### IoT na Borda
+
+Embora o "I" em IoT signifique Internet, esses dispositivos não precisam necessariamente se conectar à Internet. Em alguns casos, os dispositivos podem se conectar a dispositivos de borda - dispositivos de gateway que operam na sua rede local, permitindo que você processe dados sem precisar fazer chamadas pela Internet. Isso pode ser mais rápido quando há muitos dados ou uma conexão de Internet lenta, permite que você opere offline onde a conectividade com a Internet não é possível, como em um navio ou em uma área de desastre durante uma resposta humanitária, e permite que você mantenha os dados privados. Alguns dispositivos contêm códigos de processamento criados com ferramentas em nuvem e executam esses códigos localmente para coletar e responder a dados sem usar uma conexão com a Internet para tomar decisões.
+
+Um exemplo disso é um dispositivo doméstico inteligente, como um Apple HomePod, Amazon Alexa ou Google Home, que escuta sua voz usando modelos de IA treinados na nuvem, mas que são executados localmente no dispositivo. Esses dispositivos "acordam" quando uma palavra ou frase específica é dita e só então enviam sua fala pela Internet para processamento. O dispositivo para de enviar sua fala em um momento apropriado, como quando detecta uma pausa na sua fala. Tudo o que você diz antes de ativar o dispositivo com a palavra de ativação e tudo o que você diz depois que o dispositivo para de ouvir não será enviado pela Internet ao provedor do dispositivo, garantindo sua privacidade.
+
+✅ Pense em outros cenários onde a privacidade é importante, de modo que o processamento de dados seria melhor realizado na borda em vez de na nuvem. Como dica - pense em dispositivos IoT com câmeras ou outros dispositivos de imagem.
+
+### Segurança no IoT
+
+Com qualquer conexão à Internet, a segurança é uma consideração importante. Existe uma piada antiga que diz que "o S em IoT significa Segurança" - não há "S" em IoT, implicando que não é seguro.
+
+Dispositivos IoT se conectam a um serviço em nuvem e, portanto, são tão seguros quanto esse serviço em nuvem - se o serviço permitir que qualquer dispositivo se conecte, dados maliciosos podem ser enviados ou ataques de vírus podem ocorrer. Isso pode ter consequências muito reais, já que dispositivos IoT interagem e controlam outros dispositivos. Por exemplo, o [worm Stuxnet](https://wikipedia.org/wiki/Stuxnet) manipulou válvulas em centrífugas para danificá-las. Hackers também aproveitaram [falhas de segurança para acessar babás eletrônicas](https://www.npr.org/sections/thetwo-way/2018/06/05/617196788/s-c-mom-says-baby-monitor-was-hacked-experts-say-many-devices-are-vulnerable) e outros dispositivos de vigilância doméstica.
+
+> 💁 Às vezes, dispositivos IoT e dispositivos de borda operam em uma rede completamente isolada da Internet para manter os dados privados e seguros. Isso é conhecido como [air-gapping](https://wikipedia.org/wiki/Air_gap_(networking)).
+
+## Explorando mais a fundo os microcontroladores
+
+Na lição anterior, apresentamos os microcontroladores. Agora, vamos analisá-los mais detalhadamente.
+
+### CPU
+
+A CPU é o "cérebro" do microcontrolador. É o processador que executa seu código e pode enviar e receber dados de dispositivos conectados. CPUs podem conter um ou mais núcleos - essencialmente, um ou mais processadores que podem trabalhar juntos para executar seu código.
+
+As CPUs dependem de um relógio que "tique" milhões ou bilhões de vezes por segundo. Cada tique, ou ciclo, sincroniza as ações que a CPU pode realizar. A cada tique, a CPU pode executar uma instrução de um programa, como recuperar dados de um dispositivo externo ou realizar um cálculo matemático. Esse ciclo regular permite que todas as ações sejam concluídas antes que a próxima instrução seja processada.
+
+Quanto mais rápido o ciclo do relógio, mais instruções podem ser processadas por segundo e, portanto, mais rápida é a CPU. As velocidades das CPUs são medidas em [Hertz (Hz)](https://wikipedia.org/wiki/Hertz), uma unidade padrão onde 1 Hz significa um ciclo ou tique do relógio por segundo.
+
+> 🎓 As velocidades das CPUs geralmente são dadas em MHz ou GHz. 1MHz é 1 milhão de Hz, 1GHz é 1 bilhão de Hz.
+
+> 💁 As CPUs executam programas usando o [ciclo buscar-decodificar-executar](https://wikipedia.org/wiki/Instruction_cycle). A cada tique do relógio, a CPU buscará a próxima instrução na memória, decodificará e a executará, como usar uma unidade lógica aritmética (ALU) para somar dois números. Algumas execuções podem levar vários tiques para serem concluídas, então o próximo ciclo será executado no próximo tique após a conclusão da instrução.
+
+
+
+Microcontroladores têm velocidades de relógio muito mais baixas do que computadores desktop ou laptops, ou mesmo a maioria dos smartphones. O Wio Terminal, por exemplo, possui uma CPU que opera a 120MHz ou 120.000.000 ciclos por segundo.
+
+✅ Um PC ou Mac médio possui uma CPU com múltiplos núcleos operando a vários GigaHertz, o que significa que o relógio "tique" bilhões de vezes por segundo. Pesquise a velocidade do relógio do seu computador e compare quantas vezes ele é mais rápido que o Wio Terminal.
+
+Cada ciclo do relógio consome energia e gera calor. Quanto mais rápidos os tiques, mais energia é consumida e mais calor é gerado. PCs possuem dissipadores de calor e ventiladores para remover o calor, sem os quais eles superaqueceriam e desligariam em segundos. Microcontroladores geralmente não possuem esses recursos, pois operam em temperaturas muito mais baixas e, portanto, em velocidades muito mais lentas. PCs funcionam com energia elétrica ou baterias grandes por algumas horas, enquanto microcontroladores podem operar por dias, meses ou até anos com pequenas baterias. Microcontroladores também podem ter núcleos que operam em diferentes velocidades, alternando para núcleos mais lentos e de baixo consumo de energia quando a demanda na CPU é baixa, para reduzir o consumo de energia.
+
+> 💁 Alguns PCs e Macs estão adotando a mesma combinação de núcleos rápidos de alto desempenho e núcleos mais lentos e eficientes, alternando para economizar bateria. Por exemplo, o chip M1 nos últimos laptops da Apple pode alternar entre 4 núcleos de desempenho e 4 núcleos de eficiência para otimizar a vida útil da bateria ou a velocidade, dependendo da tarefa em execução.
+
+✅ Faça uma pequena pesquisa: Leia sobre CPUs no [artigo da Wikipedia sobre CPU](https://wikipedia.org/wiki/Central_processing_unit)
+
+#### Tarefa
+
+Investigue o Wio Terminal.
+
+Se você estiver usando um Wio Terminal para essas lições, tente encontrar a CPU. Encontre a seção *Hardware Overview* na [página do produto Wio Terminal](https://www.seeedstudio.com/Wio-Terminal-p-4509.html) para uma imagem dos componentes internos e tente localizar a CPU através da janela de plástico transparente na parte de trás.
+
+### Memória
+
+Microcontroladores geralmente possuem dois tipos de memória - memória de programa e memória de acesso aleatório (RAM).
+
+A memória de programa é não volátil, o que significa que o que é gravado nela permanece mesmo quando não há energia no dispositivo. Essa é a memória que armazena o código do seu programa.
+
+A RAM é a memória usada pelo programa em execução, contendo variáveis alocadas pelo seu programa e dados coletados de periféricos. A RAM é volátil, ou seja, quando a energia é desligada, o conteúdo é perdido, efetivamente reiniciando seu programa.
+🎓 A memória de programa armazena seu código e permanece mesmo quando não há energia.
+🎓 A RAM é usada para executar seu programa e é reiniciada quando não há energia
+
+Assim como no caso da CPU, a memória de um microcontrolador é muitas ordens de magnitude menor do que a de um PC ou Mac. Um PC típico pode ter 8 Gigabytes (GB) de RAM, ou 8.000.000.000 bytes, sendo que cada byte tem espaço suficiente para armazenar uma única letra ou um número de 0 a 255. Um microcontrolador, por outro lado, geralmente possui apenas Kilobytes (KB) de RAM, sendo que um kilobyte equivale a 1.000 bytes. O terminal Wio mencionado acima possui 192KB de RAM, ou 192.000 bytes - mais de 40.000 vezes menos do que um PC médio!
+
+O diagrama abaixo mostra a diferença de tamanho relativa entre 192KB e 8GB - o pequeno ponto no centro representa 192KB.
+
+
+
+O armazenamento de programas também é menor do que em um PC. Um PC típico pode ter um disco rígido de 500GB para armazenamento de programas, enquanto um microcontrolador pode ter apenas kilobytes ou, talvez, alguns megabytes (MB) de armazenamento (1MB equivale a 1.000KB, ou 1.000.000 bytes). O terminal Wio possui 4MB de armazenamento para programas.
+
+✅ Faça uma pequena pesquisa: Quanto de RAM e armazenamento tem o computador que você está usando para ler isso? Como isso se compara a um microcontrolador?
+
+### Entrada/Saída
+
+Microcontroladores precisam de conexões de entrada e saída (I/O) para ler dados de sensores e enviar sinais de controle para atuadores. Eles geralmente possuem vários pinos de entrada/saída de uso geral (GPIO). Esses pinos podem ser configurados via software como entrada (ou seja, recebem um sinal) ou saída (enviam um sinal).
+
+🧠⬅️ Pinos de entrada são usados para ler valores de sensores
+
+🧠➡️ Pinos de saída enviam instruções para atuadores
+
+✅ Você aprenderá mais sobre isso em uma lição futura.
+
+#### Tarefa
+
+Investigue o terminal Wio.
+
+Se você estiver usando um terminal Wio para estas lições, localize os pinos GPIO. Encontre a seção *Pinout diagram* na [página do produto Wio Terminal](https://www.seeedstudio.com/Wio-Terminal-p-4509.html) para aprender quais pinos são quais. O terminal Wio vem com um adesivo que você pode colar na parte de trás com os números dos pinos, então adicione isso agora, se ainda não o fez.
+
+### Tamanho físico
+
+Microcontroladores geralmente são pequenos em tamanho, sendo que o menor, um [Freescale Kinetis KL03 MCU, é pequeno o suficiente para caber na cavidade de uma bola de golfe](https://www.edn.com/tiny-arm-cortex-m0-based-mcu-shrinks-package/). Apenas a CPU de um PC pode medir 40mm x 40mm, sem incluir os dissipadores de calor e ventiladores necessários para garantir que a CPU funcione por mais de alguns segundos sem superaquecer, o que é substancialmente maior do que um microcontrolador completo. O kit de desenvolvimento do terminal Wio, com um microcontrolador, caixa, tela e uma variedade de conexões e componentes, não é muito maior do que uma CPU Intel i9 nua, e é substancialmente menor do que a CPU com um dissipador de calor e ventilador!
+
+| Dispositivo | Tamanho |
+| ------------------------------- | --------------------- |
+| Freescale Kinetis KL03 | 1,6mm x 2mm x 1mm |
+| Terminal Wio | 72mm x 57mm x 12mm |
+| CPU Intel i9, dissipador e vent. | 136mm x 145mm x 103mm |
+
+### Frameworks e sistemas operacionais
+
+Devido à sua baixa velocidade e tamanho de memória, microcontroladores não executam um sistema operacional (SO) no sentido tradicional, como em desktops. O sistema operacional que faz seu computador funcionar (Windows, Linux ou macOS) precisa de muita memória e poder de processamento para executar tarefas que são completamente desnecessárias para um microcontrolador. Lembre-se de que microcontroladores geralmente são programados para realizar uma ou mais tarefas muito específicas, ao contrário de um computador de propósito geral como um PC ou Mac, que precisa suportar uma interface de usuário, reproduzir músicas ou filmes, fornecer ferramentas para escrever documentos ou códigos, jogar ou navegar na Internet.
+
+Para programar um microcontrolador sem um SO, você precisa de algumas ferramentas que permitam construir seu código de forma que o microcontrolador possa executá-lo, usando APIs que possam se comunicar com quaisquer periféricos. Cada microcontrolador é diferente, então os fabricantes normalmente suportam frameworks padrão que permitem seguir uma 'receita' padrão para construir seu código e fazê-lo rodar em qualquer microcontrolador que suporte aquele framework.
+
+Você pode programar microcontroladores usando um SO - frequentemente chamado de sistema operacional em tempo real (RTOS), pois são projetados para lidar com o envio de dados para e de periféricos em tempo real. Esses sistemas operacionais são muito leves e fornecem recursos como:
+
+* Multithreading, permitindo que seu código execute mais de um bloco de código ao mesmo tempo, seja em múltiplos núcleos ou alternando em um único núcleo
+* Rede para permitir comunicação segura pela Internet
+* Componentes de interface gráfica (GUI) para construir interfaces de usuário (UI) em dispositivos com telas.
+
+✅ Leia sobre alguns RTOS diferentes: [Azure RTOS](https://azure.microsoft.com/services/rtos/?WT.mc_id=academic-17441-jabenn), [FreeRTOS](https://www.freertos.org), [Zephyr](https://www.zephyrproject.org)
+
+#### Arduino
+
+
+
+[Arduino](https://www.arduino.cc) é provavelmente o framework de microcontroladores mais popular, especialmente entre estudantes, entusiastas e makers. Arduino é uma plataforma de eletrônica de código aberto que combina software e hardware. Você pode comprar placas compatíveis com Arduino da própria Arduino ou de outros fabricantes, e então programá-las usando o framework Arduino.
+
+As placas Arduino são programadas em C ou C++. Usar C/C++ permite que seu código seja compilado de forma muito compacta e execute rapidamente, algo necessário em um dispositivo com recursos limitados, como um microcontrolador. O núcleo de uma aplicação Arduino é chamado de sketch e é um código em C/C++ com 2 funções - `setup` e `loop`. Quando a placa é ligada, o código do framework Arduino executa a função `setup` uma vez, e então executa a função `loop` repetidamente, continuamente, até que a energia seja desligada.
+
+Você escreveria seu código de configuração na função `setup`, como conectar-se ao WiFi e serviços na nuvem ou inicializar pinos para entrada e saída. Seu código de processamento ficaria na função `loop`, como ler de um sensor e enviar o valor para a nuvem. Normalmente, você incluiria um atraso em cada loop; por exemplo, se quiser que os dados do sensor sejam enviados a cada 10 segundos, adicionaria um atraso de 10 segundos no final do loop para que o microcontrolador possa dormir, economizando energia, e então executar o loop novamente quando necessário, 10 segundos depois.
+
+
+
+✅ Essa arquitetura de programa é conhecida como *event loop* ou *message loop*. Muitas aplicações usam isso nos bastidores e é o padrão para a maioria das aplicações desktop que rodam em SOs como Windows, macOS ou Linux. O `loop` escuta mensagens de componentes da interface do usuário, como botões, ou dispositivos como o teclado, e responde a elas. Você pode ler mais neste [artigo sobre event loop](https://wikipedia.org/wiki/Event_loop).
+
+O Arduino fornece bibliotecas padrão para interagir com microcontroladores e os pinos de I/O, com diferentes implementações internas para rodar em diferentes microcontroladores. Por exemplo, a função [`delay`](https://www.arduino.cc/reference/en/language/functions/time/delay/) pausa o programa por um período de tempo especificado, e a função [`digitalRead`](https://www.arduino.cc/reference/en/language/functions/digital-io/digitalread/) lê um valor `HIGH` ou `LOW` do pino especificado, independentemente da placa em que o código está sendo executado. Essas bibliotecas padrão significam que o código Arduino escrito para uma placa pode ser recompilado para qualquer outra placa Arduino e funcionará, assumindo que os pinos sejam os mesmos e as placas suportem os mesmos recursos.
+
+Existe um grande ecossistema de bibliotecas Arduino de terceiros que permitem adicionar recursos extras aos seus projetos Arduino, como usar sensores e atuadores ou conectar-se a serviços de IoT na nuvem.
+
+##### Tarefa
+
+Investigue o terminal Wio.
+
+Se você estiver usando um terminal Wio para estas lições, releia o código que escreveu na última lição. Encontre as funções `setup` e `loop`. Monitore a saída serial para verificar que a função `loop` está sendo chamada repetidamente. Tente adicionar código à função `setup` para escrever na porta serial e observe que esse código é chamado apenas uma vez a cada vez que você reinicia o dispositivo. Tente reiniciar seu dispositivo com o interruptor de energia na lateral para mostrar que isso é chamado toda vez que o dispositivo é reiniciado.
+
+## Explorando mais a fundo os computadores de placa única
+
+Na última lição, introduzimos os computadores de placa única. Agora vamos explorá-los mais a fundo.
+
+### Raspberry Pi
+
+
+
+A [Raspberry Pi Foundation](https://www.raspberrypi.org) é uma organização de caridade do Reino Unido fundada em 2009 para promover o estudo de ciência da computação, especialmente no nível escolar. Como parte dessa missão, eles desenvolveram um computador de placa única chamado Raspberry Pi. Atualmente, os Raspberry Pis estão disponíveis em 3 variantes - uma versão de tamanho completo, o menor Pi Zero, e um módulo de computação que pode ser integrado ao seu dispositivo IoT final.
+
+
+
+A última iteração do Raspberry Pi de tamanho completo é o Raspberry Pi 4B. Ele possui uma CPU quad-core (4 núcleos) rodando a 1,5GHz, 2, 4 ou 8GB de RAM, ethernet gigabit, WiFi, 2 portas HDMI que suportam telas 4k, uma saída de áudio e vídeo composto, portas USB (2 USB 2.0, 2 USB 3.0), 40 pinos GPIO, um conector de câmera para um módulo de câmera Raspberry Pi e um slot para cartão SD. Tudo isso em uma placa de 88mm x 58mm x 19,5mm, alimentada por uma fonte USB-C de 3A. Esses modelos começam em US$35, muito mais baratos do que um PC ou Mac.
+
+> 💁 Há também um Pi400, um computador tudo-em-um com um Pi4 embutido em um teclado.
+
+
+
+O Pi Zero é muito menor e consome menos energia. Ele possui uma CPU de núcleo único de 1GHz, 512MB de RAM, WiFi (no modelo Zero W), uma única porta HDMI, uma porta micro-USB, 40 pinos GPIO, um conector de câmera para um módulo de câmera Raspberry Pi e um slot para cartão SD. Ele mede 65mm x 30mm x 5mm e consome muito pouca energia. O Zero custa US$5, enquanto a versão W com WiFi custa US$10.
+
+> 🎓 As CPUs de ambos os modelos são processadores ARM, ao contrário dos processadores Intel/AMD x86 ou x64 encontrados na maioria dos PCs e Macs. Esses processadores são semelhantes aos encontrados em alguns microcontroladores, bem como na maioria dos celulares, no Microsoft Surface X e nos novos Macs baseados no Apple Silicon.
+
+Todas as variantes do Raspberry Pi executam uma versão do Debian Linux chamada Raspberry Pi OS. Esta está disponível em uma versão lite, sem desktop, perfeita para projetos 'headless' onde você não precisa de uma tela, ou uma versão completa com um ambiente desktop completo, incluindo navegador, aplicativos de escritório, ferramentas de programação e jogos. Como o sistema operacional é uma versão do Debian Linux, você pode instalar qualquer aplicação ou ferramenta que rode no Debian e seja construída para o processador ARM dentro do Pi.
+
+#### Tarefa
+
+Investigue o Raspberry Pi.
+
+Se você estiver usando um Raspberry Pi para estas lições, leia sobre os diferentes componentes de hardware na placa.
+
+* Você pode encontrar detalhes sobre os processadores usados na [página de documentação de hardware do Raspberry Pi](https://www.raspberrypi.org/documentation/hardware/raspberrypi/). Leia sobre o processador usado no Pi que você está utilizando.
+* Localize os pinos GPIO. Leia mais sobre eles na [documentação GPIO do Raspberry Pi](https://www.raspberrypi.org/documentation/hardware/raspberrypi/gpio/README.md). Use o [guia de uso dos pinos GPIO](https://www.raspberrypi.org/documentation/usage/gpio/README.md) para identificar os diferentes pinos no seu Pi.
+
+### Programando computadores de placa única
+
+Computadores de placa única são computadores completos, executando um sistema operacional completo. Isso significa que há uma ampla gama de linguagens de programação, frameworks e ferramentas que você pode usar para programá-los, ao contrário dos microcontroladores, que dependem do suporte da placa em frameworks como o Arduino. A maioria das linguagens de programação possui bibliotecas que podem acessar os pinos GPIO para enviar e receber dados de sensores e atuadores.
+
+✅ Quais linguagens de programação você conhece? Elas são suportadas no Linux?
+
+A linguagem de programação mais comum para construir aplicações IoT em um Raspberry Pi é Python. Existe um enorme ecossistema de hardware projetado para o Pi, e quase todos incluem o código relevante necessário para usá-los como bibliotecas Python. Alguns desses ecossistemas são baseados em 'hats' - assim chamados porque se encaixam no topo do Pi como um chapéu e se conectam a um grande soquete nos 40 pinos GPIO. Esses hats fornecem capacidades adicionais, como telas, sensores, carros controlados remotamente ou adaptadores para conectar sensores com cabos padronizados.
+### Uso de computadores de placa única em implantações profissionais de IoT
+
+Computadores de placa única são usados em implantações profissionais de IoT, não apenas como kits de desenvolvimento. Eles podem ser uma maneira poderosa de controlar hardware e executar tarefas complexas, como rodar modelos de aprendizado de máquina. Por exemplo, existe o [módulo de computação Raspberry Pi 4](https://www.raspberrypi.org/blog/raspberry-pi-compute-module-4/) que oferece toda a potência de um Raspberry Pi 4, mas em um formato compacto e mais barato, sem a maioria das portas, projetado para ser instalado em hardware personalizado.
+
+---
+
+## 🚀 Desafio
+
+O desafio da última aula foi listar o maior número possível de dispositivos IoT que você tem em casa, na escola ou no local de trabalho. Para cada dispositivo dessa lista, você acha que eles são baseados em microcontroladores, computadores de placa única ou até mesmo uma mistura de ambos?
+
+## Questionário pós-aula
+
+[Questionário pós-aula](https://black-meadow-040d15503.1.azurestaticapps.net/quiz/4)
+
+## Revisão e Autoestudo
+
+* Leia o [guia de introdução ao Arduino](https://www.arduino.cc/en/Guide/Introduction) para entender mais sobre a plataforma Arduino.
+* Leia a [introdução ao Raspberry Pi 4](https://www.raspberrypi.org/products/raspberry-pi-4-model-b/) para aprender mais sobre os Raspberry Pis.
+* Aprenda mais sobre alguns dos conceitos e siglas no [artigo "O que são CPUs, MPUs, MCUs e GPUs" no Electrical Engineering Journal](https://www.eejournal.com/article/what-the-faq-are-cpus-mpus-mcus-and-gpus/).
+
+✅ Use esses guias, junto com os custos mostrados seguindo os links no [guia de hardware](../../../hardware.md), para decidir qual plataforma de hardware você deseja usar ou se prefere usar um dispositivo virtual.
+
+## Tarefa
+
+[Compare e contraste microcontroladores e computadores de placa única](assignment.md)
+
+---
+
+**Aviso Legal**:
+Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.
\ No newline at end of file
diff --git a/translations/br/1-getting-started/lessons/2-deeper-dive/assignment.md b/translations/br/1-getting-started/lessons/2-deeper-dive/assignment.md
new file mode 100644
index 00000000..687fc25e
--- /dev/null
+++ b/translations/br/1-getting-started/lessons/2-deeper-dive/assignment.md
@@ -0,0 +1,26 @@
+
+# Compare e contraste microcontroladores e computadores de placa única
+
+## Instruções
+
+Esta lição abordou microcontroladores e computadores de placa única. Crie uma tabela comparando e contrastando-os, e anote pelo menos 2 razões para usar um microcontrolador em vez de um computador de placa única, e pelo menos 2 razões para usar um computador de placa única em vez de um microcontrolador.
+
+## Rubrica
+
+| Critério | Exemplar | Adequado | Precisa Melhorar |
+| -------- | -------- | -------- | ---------------- |
+| Criação de uma tabela comparando microcontroladores e computadores de placa única | Criou uma lista com vários itens corretamente comparando e contrastando | Criou uma lista com apenas alguns itens | Foi capaz de criar apenas um item ou nenhum item para comparar e contrastar |
+| Razões para usar um em vez do outro | Foi capaz de fornecer 2 ou mais razões para microcontroladores e 2 ou mais para computadores de placa única | Foi capaz de fornecer apenas 1-2 razões para um microcontrolador e 1-2 razões para um computador de placa única | Não foi capaz de fornecer 1 ou mais razões para um microcontrolador ou para um computador de placa única |
+
+---
+
+**Aviso Legal**:
+Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.
\ No newline at end of file
diff --git a/translations/br/1-getting-started/lessons/3-sensors-and-actuators/README.md b/translations/br/1-getting-started/lessons/3-sensors-and-actuators/README.md
new file mode 100644
index 00000000..c6ae2e8b
--- /dev/null
+++ b/translations/br/1-getting-started/lessons/3-sensors-and-actuators/README.md
@@ -0,0 +1,230 @@
+
+# Interaja com o mundo físico com sensores e atuadores
+
+
+
+> Ilustração por [Nitya Narasimhan](https://github.com/nitya). Clique na imagem para uma versão maior.
+
+Esta lição foi ensinada como parte da série [Hello IoT](https://youtube.com/playlist?list=PLmsFUfdnGr3xRts0TIwyaHyQuHaNQcb6-) do [Microsoft Reactor](https://developer.microsoft.com/reactor/?WT.mc_id=academic-17441-jabenn). A lição foi apresentada em 2 vídeos - uma aula de 1 hora e uma sessão de perguntas e respostas de 1 hora, explorando mais a fundo partes da lição e respondendo a dúvidas.
+
+[](https://youtu.be/Lqalu1v6aF4)
+
+[](https://youtu.be/qR3ekcMlLWA)
+
+> 🎥 Clique nas imagens acima para assistir aos vídeos
+
+## Questionário pré-aula
+
+[Questionário pré-aula](https://black-meadow-040d15503.1.azurestaticapps.net/quiz/5)
+
+## Introdução
+
+Esta lição apresenta dois conceitos importantes para o seu dispositivo IoT - sensores e atuadores. Você também terá a oportunidade de trabalhar com ambos, adicionando um sensor de luz ao seu projeto IoT e, em seguida, um LED controlado pelos níveis de luz, criando efetivamente uma luz noturna.
+
+Nesta lição, abordaremos:
+
+* [O que são sensores?](../../../../../1-getting-started/lessons/3-sensors-and-actuators)
+* [Usar um sensor](../../../../../1-getting-started/lessons/3-sensors-and-actuators)
+* [Tipos de sensores](../../../../../1-getting-started/lessons/3-sensors-and-actuators)
+* [O que são atuadores?](../../../../../1-getting-started/lessons/3-sensors-and-actuators)
+* [Usar um atuador](../../../../../1-getting-started/lessons/3-sensors-and-actuators)
+* [Tipos de atuadores](../../../../../1-getting-started/lessons/3-sensors-and-actuators)
+
+## O que são sensores?
+
+Sensores são dispositivos de hardware que percebem o mundo físico - ou seja, medem uma ou mais propriedades ao seu redor e enviam as informações para um dispositivo IoT. Os sensores abrangem uma ampla gama de dispositivos, pois há muitas coisas que podem ser medidas, desde propriedades naturais, como a temperatura do ar, até interações físicas, como movimento.
+
+Alguns sensores comuns incluem:
+
+* Sensores de temperatura - medem a temperatura do ar ou do objeto em que estão imersos. Para hobbistas e desenvolvedores, esses sensores geralmente são combinados com sensores de pressão atmosférica e umidade em um único dispositivo.
+* Botões - detectam quando são pressionados.
+* Sensores de luz - detectam níveis de luz e podem ser específicos para cores, luz UV, luz IR ou luz visível geral.
+* Câmeras - capturam uma representação visual do mundo tirando uma foto ou transmitindo vídeo.
+* Acelerômetros - detectam movimento em várias direções.
+* Microfones - captam som, seja o nível geral de som ou som direcional.
+
+✅ Faça uma pesquisa. Quais sensores o seu celular possui?
+
+Todos os sensores têm algo em comum - eles convertem o que detectam em um sinal elétrico que pode ser interpretado por um dispositivo IoT. A forma como esse sinal elétrico é interpretado depende do sensor, bem como do protocolo de comunicação usado para se comunicar com o dispositivo IoT.
+
+## Usar um sensor
+
+Siga o guia relevante abaixo para adicionar um sensor ao seu dispositivo IoT:
+
+* [Arduino - Wio Terminal](wio-terminal-sensor.md)
+* [Computador de placa única - Raspberry Pi](pi-sensor.md)
+* [Computador de placa única - Dispositivo virtual](virtual-device-sensor.md)
+
+## Tipos de sensores
+
+Os sensores podem ser analógicos ou digitais.
+
+### Sensores analógicos
+
+Alguns dos sensores mais básicos são analógicos. Esses sensores recebem uma tensão do dispositivo IoT, os componentes do sensor ajustam essa tensão, e a tensão que retorna do sensor é medida para fornecer o valor do sensor.
+
+> 🎓 Tensão é uma medida de quanta força existe para mover eletricidade de um lugar para outro, como do terminal positivo de uma bateria para o terminal negativo. Por exemplo, uma bateria AA padrão é de 1,5V (V é o símbolo para volts) e pode empurrar eletricidade com a força de 1,5V do terminal positivo para o terminal negativo. Diferentes componentes elétricos requerem diferentes tensões para funcionar. Por exemplo, um LED pode acender com entre 2-3V, mas uma lâmpada incandescente de 100W precisaria de 240V. Você pode ler mais sobre tensão na [página sobre Tensão na Wikipedia](https://wikipedia.org/wiki/Voltage).
+
+Um exemplo disso é um potenciômetro. Este é um botão que você pode girar entre duas posições, e o sensor mede a rotação.
+
+
+
+O dispositivo IoT enviará um sinal elétrico para o potenciômetro em uma determinada tensão, como 5 volts (5V). À medida que o potenciômetro é ajustado, ele altera a tensão que sai do outro lado. Imagine que você tem um potenciômetro rotulado como um botão que vai de 0 a [11](https://wikipedia.org/wiki/Up_to_eleven), como um botão de volume em um amplificador. Quando o potenciômetro está na posição totalmente desligada (0), 0V (0 volts) sairão. Quando está na posição totalmente ligada (11), 5V (5 volts) sairão.
+
+> 🎓 Esta é uma simplificação, e você pode ler mais sobre potenciômetros e resistores variáveis na [página sobre Potenciômetros na Wikipedia](https://wikipedia.org/wiki/Potentiometer).
+
+A tensão que sai do sensor é então lida pelo dispositivo IoT, e o dispositivo pode responder a ela. Dependendo do sensor, essa tensão pode ser um valor arbitrário ou pode corresponder a uma unidade padrão. Por exemplo, um sensor de temperatura analógico baseado em um [termistor](https://wikipedia.org/wiki/Thermistor) altera sua resistência dependendo da temperatura. A tensão de saída pode então ser convertida em uma temperatura em Kelvin, e correspondentemente em °C ou °F, por cálculos no código.
+
+✅ O que você acha que acontece se o sensor retornar uma tensão maior do que a enviada (por exemplo, vinda de uma fonte de alimentação externa)? ⛔️ NÃO teste isso.
+
+#### Conversão de analógico para digital
+
+Dispositivos IoT são digitais - eles não conseguem trabalhar com valores analógicos, apenas com 0s e 1s. Isso significa que os valores dos sensores analógicos precisam ser convertidos para um sinal digital antes de serem processados. Muitos dispositivos IoT possuem conversores analógico-para-digital (ADCs) para converter entradas analógicas em representações digitais de seus valores. Sensores também podem trabalhar com ADCs por meio de uma placa de conexão. Por exemplo, no ecossistema Seeed Grove com um Raspberry Pi, sensores analógicos se conectam a portas específicas em um 'hat' que fica no Pi conectado aos pinos GPIO do Pi, e este hat possui um ADC para converter a tensão em um sinal digital que pode ser enviado pelos pinos GPIO do Pi.
+
+Imagine que você tem um sensor de luz analógico conectado a um dispositivo IoT que usa 3,3V e está retornando um valor de 1V. Este 1V não significa nada no mundo digital, então precisa ser convertido. A tensão será convertida para um valor analógico usando uma escala dependendo do dispositivo e do sensor. Um exemplo é o sensor de luz Seeed Grove, que gera valores de 0 a 1.023. Para este sensor operando a 3,3V, uma saída de 1V seria um valor de 300. Um dispositivo IoT não consegue lidar com 300 como um valor analógico, então o valor seria convertido para `0000000100101100`, a representação binária de 300 pelo hat Grove. Isso seria então processado pelo dispositivo IoT.
+
+✅ Se você não conhece o sistema binário, faça uma pequena pesquisa para aprender como os números são representados por 0s e 1s. A [lição introdutória ao sistema binário do BBC Bitesize](https://www.bbc.co.uk/bitesize/guides/zwsbwmn/revision/1) é um ótimo lugar para começar.
+
+Do ponto de vista da programação, tudo isso geralmente é tratado por bibliotecas que acompanham os sensores, então você não precisa se preocupar com essa conversão. Para o sensor de luz Grove, você usaria a biblioteca Python e chamaria a propriedade `light`, ou usaria a biblioteca Arduino e chamaria `analogRead` para obter um valor de 300.
+
+### Sensores digitais
+
+Sensores digitais, assim como os analógicos, detectam o mundo ao seu redor usando mudanças na tensão elétrica. A diferença é que eles geram um sinal digital, seja medindo apenas dois estados ou usando um ADC embutido. Sensores digitais estão se tornando cada vez mais comuns para evitar a necessidade de usar um ADC em uma placa de conexão ou no próprio dispositivo IoT.
+
+O sensor digital mais simples é um botão ou interruptor. Este é um sensor com dois estados, ligado ou desligado.
+
+
+
+Pinos em dispositivos IoT, como os pinos GPIO, podem medir esse sinal diretamente como 0 ou 1. Se a tensão enviada for a mesma que a tensão retornada, o valor lido é 1; caso contrário, o valor lido é 0. Não há necessidade de converter o sinal, ele só pode ser 1 ou 0.
+
+> 💁 Tensões nunca são exatas, especialmente porque os componentes em um sensor terão alguma resistência, então geralmente há uma tolerância. Por exemplo, os pinos GPIO de um Raspberry Pi operam a 3,3V e leem um sinal de retorno acima de 1,8V como 1 e abaixo de 1,8V como 0.
+
+* 3,3V entram no botão. O botão está desligado, então 0V saem, dando um valor de 0.
+* 3,3V entram no botão. O botão está ligado, então 3,3V saem, dando um valor de 1.
+
+Sensores digitais mais avançados leem valores analógicos e os convertem usando ADCs integrados para sinais digitais. Por exemplo, um sensor de temperatura digital ainda usará um termopar da mesma forma que um sensor analógico e ainda medirá a mudança na tensão causada pela resistência do termopar na temperatura atual. Em vez de retornar um valor analógico e depender do dispositivo ou da placa de conexão para converter para um sinal digital, um ADC embutido no sensor converterá o valor e o enviará como uma série de 0s e 1s para o dispositivo IoT. Esses 0s e 1s são enviados da mesma forma que o sinal digital de um botão, com 1 sendo a tensão total e 0 sendo 0V.
+
+
+
+O envio de dados digitais permite que os sensores se tornem mais complexos e enviem dados mais detalhados, até mesmo dados criptografados para sensores seguros. Um exemplo é uma câmera. Este é um sensor que captura uma imagem e a envia como dados digitais contendo essa imagem, geralmente em um formato compactado como JPEG, para ser lida pelo dispositivo IoT. Ela pode até transmitir vídeo capturando imagens e enviando ou o quadro completo de cada vez ou um fluxo de vídeo compactado.
+
+## O que são atuadores?
+
+Atuadores são o oposto de sensores - eles convertem um sinal elétrico do seu dispositivo IoT em uma interação com o mundo físico, como emitir luz ou som, ou mover um motor.
+
+Alguns atuadores comuns incluem:
+
+* LED - emitem luz quando ligados.
+* Alto-falante - emitem som com base no sinal enviado a eles, desde um buzzer básico até um alto-falante de áudio que pode tocar música.
+* Motor de passo - convertem um sinal em uma quantidade definida de rotação, como girar um botão 90°.
+* Relé - são interruptores que podem ser ligados ou desligados por um sinal elétrico. Eles permitem que uma pequena tensão de um dispositivo IoT ligue tensões maiores.
+* Telas - são atuadores mais complexos e exibem informações em um display de múltiplos segmentos. As telas variam de displays LED simples a monitores de vídeo de alta resolução.
+
+✅ Faça uma pesquisa. Quais atuadores o seu celular possui?
+
+## Usar um atuador
+
+Siga o guia relevante abaixo para adicionar um atuador ao seu dispositivo IoT, controlado pelo sensor, para construir uma luz noturna IoT. Ela coletará os níveis de luz do sensor de luz e usará um atuador na forma de um LED para emitir luz quando o nível de luz detectado for muito baixo.
+
+
+
+* [Arduino - Wio Terminal](wio-terminal-actuator.md)
+* [Computador de placa única - Raspberry Pi](pi-actuator.md)
+* [Computador de placa única - Dispositivo virtual](virtual-device-actuator.md)
+
+## Tipos de atuadores
+
+Assim como os sensores, os atuadores podem ser analógicos ou digitais.
+
+### Atuadores analógicos
+
+Atuadores analógicos recebem um sinal analógico e o convertem em algum tipo de interação, onde a interação muda com base na tensão fornecida.
+
+Um exemplo é uma luz dimerizável, como as que você pode ter em sua casa. A quantidade de tensão fornecida à luz determina o quão brilhante ela será.
+
+
+Assim como acontece com sensores, o dispositivo IoT trabalha com sinais digitais, não analógicos. Isso significa que, para enviar um sinal analógico, o dispositivo IoT precisa de um conversor digital para analógico (DAC), seja diretamente no dispositivo IoT ou em uma placa de conexão. Esse conversor transforma os 0s e 1s do dispositivo IoT em uma voltagem analógica que o atuador pode utilizar.
+
+✅ O que você acha que acontece se o dispositivo IoT enviar uma voltagem maior do que o atuador pode suportar?
+⛔️ NÃO teste isso.
+
+#### Modulação por Largura de Pulso (PWM)
+
+Outra opção para converter sinais digitais de um dispositivo IoT em um sinal analógico é a modulação por largura de pulso (PWM). Isso envolve o envio de vários pulsos digitais curtos que simulam um sinal analógico.
+
+Por exemplo, você pode usar PWM para controlar a velocidade de um motor.
+
+Imagine que você está controlando um motor com uma fonte de 5V. Você envia um pulso curto para o motor, alternando a voltagem para alta (5V) por dois centésimos de segundo (0,02s). Nesse tempo, o motor pode girar um décimo de uma rotação, ou 36°. O sinal então pausa por dois centésimos de segundo (0,02s), enviando um sinal baixo (0V). Cada ciclo de ligado e desligado dura 0,04s. O ciclo então se repete.
+
+
+
+Isso significa que, em um segundo, você tem 25 pulsos de 5V com duração de 0,02s que giram o motor, cada um seguido por uma pausa de 0,02s com 0V, onde o motor não gira. Cada pulso gira o motor um décimo de uma rotação, o que significa que o motor completa 2,5 rotações por segundo. Você usou um sinal digital para girar o motor a 2,5 rotações por segundo, ou 150 [rotações por minuto](https://wikipedia.org/wiki/Revolutions_per_minute) (uma medida não padronizada de velocidade de rotação).
+
+```output
+25 pulses per second x 0.1 rotations per pulse = 2.5 rotations per second
+2.5 rotations per second x 60 seconds in a minute = 150rpm
+```
+
+> 🎓 Quando um sinal PWM está ligado por metade do tempo e desligado pela outra metade, isso é chamado de [ciclo de trabalho de 50%](https://wikipedia.org/wiki/Duty_cycle). Ciclos de trabalho são medidos como a porcentagem de tempo em que o sinal está no estado ligado em comparação ao estado desligado.
+
+
+
+Você pode alterar a velocidade do motor mudando o tamanho dos pulsos. Por exemplo, com o mesmo motor, você pode manter o mesmo tempo de ciclo de 0,04s, reduzindo o pulso ligado para 0,01s e aumentando o pulso desligado para 0,03s. Você tem o mesmo número de pulsos por segundo (25), mas cada pulso ligado tem metade do comprimento. Um pulso com metade do comprimento gira o motor um vigésimo de uma rotação, e com 25 pulsos por segundo, o motor completará 1,25 rotações por segundo ou 75rpm. Alterando a velocidade dos pulsos de um sinal digital, você reduziu pela metade a velocidade de um motor analógico.
+
+```output
+25 pulses per second x 0.05 rotations per pulse = 1.25 rotations per second
+1.25 rotations per second x 60 seconds in a minute = 75rpm
+```
+
+✅ Como você manteria a rotação do motor suave, especialmente em baixas velocidades? Você usaria um pequeno número de pulsos longos com pausas longas ou muitos pulsos muito curtos com pausas muito curtas?
+
+> 💁 Alguns sensores também usam PWM para converter sinais analógicos em digitais.
+
+> 🎓 Você pode ler mais sobre modulação por largura de pulso na [página de modulação por largura de pulso na Wikipedia](https://wikipedia.org/wiki/Pulse-width_modulation).
+
+### Atuadores digitais
+
+Atuadores digitais, assim como sensores digitais, possuem dois estados controlados por uma voltagem alta ou baixa ou possuem um DAC embutido que pode converter um sinal digital em um analógico.
+
+Um atuador digital simples é um LED. Quando um dispositivo envia um sinal digital de 1, uma voltagem alta é enviada, acendendo o LED. Quando um sinal digital de 0 é enviado, a voltagem cai para 0V e o LED se apaga.
+
+
+
+✅ Que outros atuadores simples de 2 estados você consegue pensar? Um exemplo é um solenóide, que é um eletroímã que pode ser ativado para realizar ações como mover o trinco de uma porta, travando ou destravando-a.
+
+Atuadores digitais mais avançados, como telas, exigem que os dados digitais sejam enviados em formatos específicos. Geralmente, eles vêm com bibliotecas que facilitam o envio dos dados corretos para controlá-los.
+
+---
+
+## 🚀 Desafio
+
+O desafio nas duas últimas lições foi listar o maior número possível de dispositivos IoT que você tem em casa, na escola ou no trabalho e decidir se eles são baseados em microcontroladores ou computadores de placa única, ou até mesmo uma mistura de ambos.
+
+Para cada dispositivo listado, quais sensores e atuadores estão conectados a eles? Qual é o propósito de cada sensor e atuador conectado a esses dispositivos?
+
+## Questionário pós-aula
+
+[Questionário pós-aula](https://black-meadow-040d15503.1.azurestaticapps.net/quiz/6)
+
+## Revisão e Autoestudo
+
+* Leia sobre eletricidade e circuitos no [ThingLearn](http://thinglearn.jenlooper.com/curriculum/).
+* Leia sobre os diferentes tipos de sensores de temperatura no [guia de sensores de temperatura da Seeed Studios](https://www.seeedstudio.com/blog/2019/10/14/temperature-sensors-for-arduino-projects/).
+* Leia sobre LEDs na [página de LEDs na Wikipedia](https://wikipedia.org/wiki/Light-emitting_diode).
+
+## Tarefa
+
+[Pesquise sensores e atuadores](assignment.md)
+
+---
+
+**Aviso Legal**:
+Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.
\ No newline at end of file
diff --git a/translations/br/1-getting-started/lessons/3-sensors-and-actuators/assignment.md b/translations/br/1-getting-started/lessons/3-sensors-and-actuators/assignment.md
new file mode 100644
index 00000000..a24a15c5
--- /dev/null
+++ b/translations/br/1-getting-started/lessons/3-sensors-and-actuators/assignment.md
@@ -0,0 +1,31 @@
+
+# Pesquise sensores e atuadores
+
+## Instruções
+
+Esta lição abordou sensores e atuadores. Pesquise e descreva um sensor e um atuador que podem ser usados com um kit de desenvolvimento IoT, incluindo:
+
+* O que ele faz
+* Os componentes eletrônicos/hardware usados internamente
+* Se é analógico ou digital
+* Quais são as unidades e a faixa de entradas ou medições
+
+## Rubrica
+
+| Critério | Exemplar | Adequado | Precisa Melhorar |
+| -------- | --------- | -------- | ---------------- |
+| Descrever um sensor | Descreveu um sensor incluindo detalhes para todas as 4 seções listadas acima. | Descreveu um sensor, mas conseguiu fornecer apenas 2-3 das seções acima. | Descreveu um sensor, mas conseguiu fornecer apenas 1 das seções acima. |
+| Descrever um atuador | Descreveu um atuador incluindo detalhes para todas as 4 seções listadas acima. | Descreveu um atuador, mas conseguiu fornecer apenas 2-3 das seções acima. | Descreveu um atuador, mas conseguiu fornecer apenas 1 das seções acima. |
+
+---
+
+**Aviso Legal**:
+Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes do uso desta tradução.
\ No newline at end of file
diff --git a/translations/br/1-getting-started/lessons/3-sensors-and-actuators/pi-actuator.md b/translations/br/1-getting-started/lessons/3-sensors-and-actuators/pi-actuator.md
new file mode 100644
index 00000000..1e4432db
--- /dev/null
+++ b/translations/br/1-getting-started/lessons/3-sensors-and-actuators/pi-actuator.md
@@ -0,0 +1,130 @@
+
+# Construa uma luz noturna - Raspberry Pi
+
+Nesta parte da lição, você adicionará um LED ao seu Raspberry Pi e o usará para criar uma luz noturna.
+
+## Hardware
+
+A luz noturna agora precisa de um atuador.
+
+O atuador é um **LED**, um [diodo emissor de luz](https://wikipedia.org/wiki/Light-emitting_diode) que emite luz quando a corrente elétrica passa por ele. Este é um atuador digital que possui dois estados: ligado e desligado. Enviar um valor de 1 liga o LED, e 0 o desliga. O LED é um atuador externo Grove e precisa ser conectado ao Grove Base Hat no Raspberry Pi.
+
+A lógica da luz noturna em pseudocódigo é:
+
+```output
+Check the light level.
+If the light is less than 300
+ Turn the LED on
+Otherwise
+ Turn the LED off
+```
+
+### Conecte o LED
+
+O LED Grove vem como um módulo com uma seleção de LEDs, permitindo que você escolha a cor.
+
+#### Tarefa - conectar o LED
+
+Conecte o LED.
+
+
+
+1. Escolha seu LED favorito e insira as pernas nos dois orifícios do módulo LED.
+
+ LEDs são diodos emissores de luz, e diodos são dispositivos eletrônicos que só permitem a passagem de corrente em uma direção. Isso significa que o LED precisa ser conectado na orientação correta, caso contrário, ele não funcionará.
+
+ Uma das pernas do LED é o pino positivo, e a outra é o pino negativo. O LED não é perfeitamente redondo e é ligeiramente mais plano de um lado. O lado ligeiramente mais plano é o pino negativo. Ao conectar o LED ao módulo, certifique-se de que o pino do lado arredondado esteja conectado ao soquete marcado com **+** na parte externa do módulo, e o lado mais plano esteja conectado ao soquete mais próximo do centro do módulo.
+
+1. O módulo LED possui um botão giratório que permite controlar o brilho. Gire-o completamente para começar, girando no sentido anti-horário até o limite usando uma pequena chave de fenda Phillips.
+
+1. Insira uma extremidade de um cabo Grove no soquete do módulo LED. Ele só encaixará de uma maneira.
+
+1. Com o Raspberry Pi desligado, conecte a outra extremidade do cabo Grove ao soquete digital marcado como **D5** no Grove Base Hat conectado ao Pi. Este soquete é o segundo da esquerda, na fileira de soquetes ao lado dos pinos GPIO.
+
+
+
+## Programe a luz noturna
+
+A luz noturna agora pode ser programada usando o sensor de luz Grove e o LED Grove.
+
+### Tarefa - programar a luz noturna
+
+Programe a luz noturna.
+
+1. Ligue o Raspberry Pi e aguarde a inicialização.
+
+1. Abra o projeto da luz noturna no VS Code que você criou na parte anterior desta tarefa, seja executando diretamente no Pi ou conectado usando a extensão Remote SSH.
+
+1. Adicione o seguinte código ao arquivo `app.py` para importar uma biblioteca necessária. Isso deve ser adicionado no topo, abaixo das outras linhas de `import`.
+
+ ```python
+ from grove.grove_led import GroveLed
+ ```
+
+ A instrução `from grove.grove_led import GroveLed` importa o `GroveLed` das bibliotecas Python do Grove. Esta biblioteca contém o código para interagir com um LED Grove.
+
+1. Adicione o seguinte código após a declaração de `light_sensor` para criar uma instância da classe que gerencia o LED:
+
+ ```python
+ led = GroveLed(5)
+ ```
+
+ A linha `led = GroveLed(5)` cria uma instância da classe `GroveLed` conectando ao pino **D5** - o pino digital Grove ao qual o LED está conectado.
+
+ > 💁 Todos os soquetes possuem números de pinos únicos. Os pinos 0, 2, 4 e 6 são pinos analógicos, enquanto os pinos 5, 16, 18, 22, 24 e 26 são pinos digitais.
+
+1. Adicione uma verificação dentro do loop `while`, antes do `time.sleep`, para verificar os níveis de luz e ligar ou desligar o LED:
+
+ ```python
+ if light < 300:
+ led.on()
+ else:
+ led.off()
+ ```
+
+ Este código verifica o valor de `light`. Se for menor que 300, ele chama o método `on` da classe `GroveLed`, que envia um valor digital de 1 para o LED, ligando-o. Se o valor de luz for maior ou igual a 300, ele chama o método `off`, enviando um valor digital de 0 para o LED, desligando-o.
+
+ > 💁 Este código deve estar indentado no mesmo nível da linha `print('Light level:', light)` para estar dentro do loop while!
+
+ > 💁 Ao enviar valores digitais para atuadores, um valor 0 corresponde a 0V, e um valor 1 corresponde à voltagem máxima do dispositivo. Para o Raspberry Pi com sensores e atuadores Grove, a voltagem de 1 é 3,3V.
+
+1. No Terminal do VS Code, execute o seguinte comando para rodar seu aplicativo Python:
+
+ ```sh
+ python3 app.py
+ ```
+
+ Os valores de luz serão exibidos no console.
+
+ ```output
+ pi@raspberrypi:~/nightlight $ python3 app.py
+ Light level: 634
+ Light level: 634
+ Light level: 634
+ Light level: 230
+ Light level: 104
+ Light level: 290
+ ```
+
+1. Cubra e descubra o sensor de luz. Observe como o LED acende se o nível de luz for 300 ou menos, e apaga quando o nível de luz for maior que 300.
+
+ > 💁 Se o LED não acender, certifique-se de que ele está conectado na orientação correta e que o botão giratório está ajustado para o máximo.
+
+
+
+> 💁 Você pode encontrar este código na pasta [code-actuator/pi](../../../../../1-getting-started/lessons/3-sensors-and-actuators/code-actuator/pi).
+
+😀 Seu programa de luz noturna foi um sucesso!
+
+---
+
+**Aviso Legal**:
+Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.
\ No newline at end of file
diff --git a/translations/br/1-getting-started/lessons/3-sensors-and-actuators/pi-sensor.md b/translations/br/1-getting-started/lessons/3-sensors-and-actuators/pi-sensor.md
new file mode 100644
index 00000000..8c709303
--- /dev/null
+++ b/translations/br/1-getting-started/lessons/3-sensors-and-actuators/pi-sensor.md
@@ -0,0 +1,110 @@
+
+# Construa uma luz noturna - Raspberry Pi
+
+Nesta parte da lição, você adicionará um sensor de luz ao seu Raspberry Pi.
+
+## Hardware
+
+O sensor para esta lição é um **sensor de luz** que utiliza um [fotodiodo](https://wikipedia.org/wiki/Photodiode) para converter luz em um sinal elétrico. Este é um sensor analógico que envia um valor inteiro de 0 a 1.000 indicando uma quantidade relativa de luz que não corresponde a nenhuma unidade de medida padrão, como [lux](https://wikipedia.org/wiki/Lux).
+
+O sensor de luz é um sensor Grove externo e precisa ser conectado ao Grove Base Hat no Raspberry Pi.
+
+### Conecte o sensor de luz
+
+O sensor de luz Grove, usado para detectar os níveis de luz, precisa ser conectado ao Raspberry Pi.
+
+#### Tarefa - conectar o sensor de luz
+
+Conecte o sensor de luz.
+
+
+
+1. Insira uma extremidade de um cabo Grove no conector do módulo do sensor de luz. Ele só encaixará de uma maneira.
+
+1. Com o Raspberry Pi desligado, conecte a outra extremidade do cabo Grove ao conector analógico marcado como **A0** no Grove Base Hat conectado ao Pi. Este conector é o segundo da direita, na fileira de conectores ao lado dos pinos GPIO.
+
+
+
+## Programe o sensor de luz
+
+O dispositivo agora pode ser programado usando o sensor de luz Grove.
+
+### Tarefa - programar o sensor de luz
+
+Programe o dispositivo.
+
+1. Ligue o Raspberry Pi e aguarde o boot.
+
+1. Abra o projeto de luz noturna no VS Code que você criou na parte anterior desta tarefa, seja executando diretamente no Pi ou conectado usando a extensão Remote SSH.
+
+1. Abra o arquivo `app.py` e remova todo o código existente.
+
+1. Adicione o seguinte código ao arquivo `app.py` para importar algumas bibliotecas necessárias:
+
+ ```python
+ import time
+ from grove.grove_light_sensor_v1_2 import GroveLightSensor
+ ```
+
+ A instrução `import time` importa o módulo `time`, que será usado mais tarde nesta tarefa.
+
+ A instrução `from grove.grove_light_sensor_v1_2 import GroveLightSensor` importa o `GroveLightSensor` das bibliotecas Python Grove. Esta biblioteca contém o código para interagir com um sensor de luz Grove e foi instalada globalmente durante a configuração do Pi.
+
+1. Adicione o seguinte código após o código acima para criar uma instância da classe que gerencia o sensor de luz:
+
+ ```python
+ light_sensor = GroveLightSensor(0)
+ ```
+
+ A linha `light_sensor = GroveLightSensor(0)` cria uma instância da classe `GroveLightSensor` conectando ao pino **A0** - o pino analógico Grove ao qual o sensor de luz está conectado.
+
+1. Adicione um loop infinito após o código acima para consultar o valor do sensor de luz e imprimi-lo no console:
+
+ ```python
+ while True:
+ light = light_sensor.light
+ print('Light level:', light)
+ ```
+
+ Isso lerá o nível atual de luz em uma escala de 0-1.023 usando a propriedade `light` da classe `GroveLightSensor`. Esta propriedade lê o valor analógico do pino. Este valor é então impresso no console.
+
+1. Adicione uma pequena pausa de um segundo no final do `loop`, já que os níveis de luz não precisam ser verificados continuamente. Uma pausa reduz o consumo de energia do dispositivo.
+
+ ```python
+ time.sleep(1)
+ ```
+
+1. No Terminal do VS Code, execute o seguinte comando para rodar seu aplicativo Python:
+
+ ```sh
+ python3 app.py
+ ```
+
+ Os valores de luz serão exibidos no console. Cubra e descubra o sensor de luz, e os valores irão mudar:
+
+ ```output
+ pi@raspberrypi:~/nightlight $ python3 app.py
+ Light level: 634
+ Light level: 634
+ Light level: 634
+ Light level: 230
+ Light level: 104
+ Light level: 290
+ ```
+
+> 💁 Você pode encontrar este código na pasta [code-sensor/pi](../../../../../1-getting-started/lessons/3-sensors-and-actuators/code-sensor/pi).
+
+😀 Adicionar um sensor ao seu programa de luz noturna foi um sucesso!
+
+---
+
+**Aviso Legal**:
+Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.
\ No newline at end of file
diff --git a/translations/br/1-getting-started/lessons/3-sensors-and-actuators/virtual-device-actuator.md b/translations/br/1-getting-started/lessons/3-sensors-and-actuators/virtual-device-actuator.md
new file mode 100644
index 00000000..658b3e46
--- /dev/null
+++ b/translations/br/1-getting-started/lessons/3-sensors-and-actuators/virtual-device-actuator.md
@@ -0,0 +1,124 @@
+
+# Construa uma luz noturna - Hardware IoT Virtual
+
+Nesta parte da lição, você adicionará um LED ao seu dispositivo IoT virtual e o usará para criar uma luz noturna.
+
+## Hardware Virtual
+
+A luz noturna precisa de um atuador, criado no aplicativo CounterFit.
+
+O atuador é um **LED**. Em um dispositivo IoT físico, seria um [diodo emissor de luz](https://wikipedia.org/wiki/Light-emitting_diode) que emite luz quando a corrente passa por ele. Este é um atuador digital que possui 2 estados: ligado e desligado. Enviar um valor de 1 liga o LED, e 0 o desliga.
+
+A lógica da luz noturna em pseudocódigo é:
+
+```output
+Check the light level.
+If the light is less than 300
+ Turn the LED on
+Otherwise
+ Turn the LED off
+```
+
+### Adicionar o atuador ao CounterFit
+
+Para usar um LED virtual, você precisa adicioná-lo ao aplicativo CounterFit.
+
+#### Tarefa - adicionar o atuador ao CounterFit
+
+Adicione o LED ao aplicativo CounterFit.
+
+1. Certifique-se de que o aplicativo web CounterFit está em execução a partir da parte anterior desta tarefa. Caso contrário, inicie-o e re-adicione o sensor de luz.
+
+1. Crie um LED:
+
+ 1. Na caixa *Create actuator* no painel *Actuator*, abra o menu suspenso *Actuator type* e selecione *LED*.
+
+ 1. Defina o *Pin* como *5*.
+
+ 1. Selecione o botão **Add** para criar o LED no pino 5.
+
+ 
+
+ O LED será criado e aparecerá na lista de atuadores.
+
+ 
+
+ Depois que o LED for criado, você pode alterar a cor usando o seletor *Color*. Selecione o botão **Set** para alterar a cor após escolhê-la.
+
+### Programar a luz noturna
+
+Agora, a luz noturna pode ser programada usando o sensor de luz e o LED do CounterFit.
+
+#### Tarefa - programar a luz noturna
+
+Programe a luz noturna.
+
+1. Abra o projeto da luz noturna no VS Code que você criou na parte anterior desta tarefa. Finalize e recrie o terminal para garantir que ele esteja sendo executado no ambiente virtual, se necessário.
+
+1. Abra o arquivo `app.py`.
+
+1. Adicione o seguinte código ao arquivo `app.py` para importar uma biblioteca necessária. Isso deve ser adicionado no topo, abaixo das outras linhas de `import`.
+
+ ```python
+ from counterfit_shims_grove.grove_led import GroveLed
+ ```
+
+ A instrução `from counterfit_shims_grove.grove_led import GroveLed` importa o `GroveLed` das bibliotecas Python shim do CounterFit Grove. Esta biblioteca contém o código para interagir com um LED criado no aplicativo CounterFit.
+
+1. Adicione o seguinte código após a declaração de `light_sensor` para criar uma instância da classe que gerencia o LED:
+
+ ```python
+ led = GroveLed(5)
+ ```
+
+ A linha `led = GroveLed(5)` cria uma instância da classe `GroveLed` conectando-se ao pino **5** - o pino do CounterFit Grove ao qual o LED está conectado.
+
+1. Adicione uma verificação dentro do loop `while`, antes do `time.sleep`, para verificar os níveis de luz e ligar ou desligar o LED:
+
+ ```python
+ if light < 300:
+ led.on()
+ else:
+ led.off()
+ ```
+
+ Este código verifica o valor de `light`. Se for menor que 300, ele chama o método `on` da classe `GroveLed`, que envia um valor digital de 1 para o LED, ligando-o. Se o valor de luz for maior ou igual a 300, ele chama o método `off`, enviando um valor digital de 0 para o LED, desligando-o.
+
+ > 💁 Este código deve estar indentado no mesmo nível da linha `print('Light level:', light)` para estar dentro do loop while!
+
+1. No Terminal do VS Code, execute o seguinte comando para rodar seu aplicativo Python:
+
+ ```sh
+ python3 app.py
+ ```
+
+ Os valores de luz serão exibidos no console.
+
+ ```output
+ (.venv) ➜ GroveTest python3 app.py
+ Light level: 143
+ Light level: 244
+ Light level: 246
+ Light level: 253
+ ```
+
+1. Altere as configurações de *Value* ou *Random* para variar o nível de luz acima e abaixo de 300. O LED ligará e desligará.
+
+
+
+> 💁 Você pode encontrar este código na pasta [code-actuator/virtual-device](../../../../../1-getting-started/lessons/3-sensors-and-actuators/code-actuator/virtual-device).
+
+😀 Seu programa de luz noturna foi um sucesso!
+
+---
+
+**Aviso Legal**:
+Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.
\ No newline at end of file
diff --git a/translations/br/1-getting-started/lessons/3-sensors-and-actuators/virtual-device-sensor.md b/translations/br/1-getting-started/lessons/3-sensors-and-actuators/virtual-device-sensor.md
new file mode 100644
index 00000000..d4222d1f
--- /dev/null
+++ b/translations/br/1-getting-started/lessons/3-sensors-and-actuators/virtual-device-sensor.md
@@ -0,0 +1,124 @@
+
+# Construa uma luz noturna - Hardware IoT Virtual
+
+Nesta parte da lição, você adicionará um sensor de luz ao seu dispositivo IoT virtual.
+
+## Hardware Virtual
+
+A luz noturna precisa de um sensor, criado no aplicativo CounterFit.
+
+O sensor é um **sensor de luz**. Em um dispositivo IoT físico, seria um [fotodiodo](https://wikipedia.org/wiki/Photodiodo) que converte luz em um sinal elétrico. Sensores de luz são sensores analógicos que enviam um valor inteiro indicando uma quantidade relativa de luz, que não corresponde a nenhuma unidade de medida padrão, como [lux](https://wikipedia.org/wiki/Lux).
+
+### Adicionar os sensores ao CounterFit
+
+Para usar um sensor de luz virtual, você precisa adicioná-lo ao aplicativo CounterFit.
+
+#### Tarefa - adicionar os sensores ao CounterFit
+
+Adicione o sensor de luz ao aplicativo CounterFit.
+
+1. Certifique-se de que o aplicativo web CounterFit está em execução a partir da parte anterior desta tarefa. Caso contrário, inicie-o.
+
+1. Crie um sensor de luz:
+
+ 1. Na caixa *Create sensor* no painel *Sensors*, abra o menu suspenso *Sensor type* e selecione *Light*.
+
+ 1. Deixe a opção *Units* configurada como *NoUnits*.
+
+ 1. Certifique-se de que o *Pin* está configurado como *0*.
+
+ 1. Selecione o botão **Add** para criar o sensor de luz no pino 0.
+
+ 
+
+ O sensor de luz será criado e aparecerá na lista de sensores.
+
+ 
+
+## Programar o sensor de luz
+
+Agora o dispositivo pode ser programado para usar o sensor de luz integrado.
+
+### Tarefa - programar o sensor de luz
+
+Programe o dispositivo.
+
+1. Abra o projeto da luz noturna no VS Code que você criou na parte anterior desta tarefa. Finalize e recrie o terminal para garantir que ele esteja sendo executado usando o ambiente virtual, se necessário.
+
+1. Abra o arquivo `app.py`.
+
+1. Adicione o seguinte código no início do arquivo `app.py`, junto com as outras declarações de `import`, para importar algumas bibliotecas necessárias:
+
+ ```python
+ import time
+ from counterfit_shims_grove.grove_light_sensor_v1_2 import GroveLightSensor
+ ```
+
+ A declaração `import time` importa o módulo `time` do Python, que será usado mais tarde nesta tarefa.
+
+ A declaração `from counterfit_shims_grove.grove_light_sensor_v1_2 import GroveLightSensor` importa o `GroveLightSensor` das bibliotecas shim do CounterFit Grove para Python. Essa biblioteca contém o código para interagir com um sensor de luz criado no aplicativo CounterFit.
+
+1. Adicione o seguinte código ao final do arquivo para criar instâncias de classes que gerenciam o sensor de luz:
+
+ ```python
+ light_sensor = GroveLightSensor(0)
+ ```
+
+ A linha `light_sensor = GroveLightSensor(0)` cria uma instância da classe `GroveLightSensor` conectando-se ao pino **0** - o pino do CounterFit Grove ao qual o sensor de luz está conectado.
+
+1. Adicione um loop infinito após o código acima para consultar o valor do sensor de luz e imprimi-lo no console:
+
+ ```python
+ while True:
+ light = light_sensor.light
+ print('Light level:', light)
+ ```
+
+ Isso lerá o nível atual de luz usando a propriedade `light` da classe `GroveLightSensor`. Essa propriedade lê o valor analógico do pino. Esse valor é então impresso no console.
+
+1. Adicione uma pequena pausa de um segundo no final do loop `while`, já que os níveis de luz não precisam ser verificados continuamente. Uma pausa reduz o consumo de energia do dispositivo.
+
+ ```python
+ time.sleep(1)
+ ```
+
+1. No Terminal do VS Code, execute o seguinte comando para rodar seu aplicativo Python:
+
+ ```sh
+ python3 app.py
+ ```
+
+ Os valores de luz serão exibidos no console. Inicialmente, esse valor será 0.
+
+1. No aplicativo CounterFit, altere o valor do sensor de luz que será lido pelo aplicativo. Você pode fazer isso de duas maneiras:
+
+ * Insira um número na caixa *Value* do sensor de luz e, em seguida, selecione o botão **Set**. O número que você inserir será o valor retornado pelo sensor.
+
+ * Marque a caixa *Random* e insira um valor *Min* e *Max*, depois selecione o botão **Set**. Toda vez que o sensor ler um valor, ele lerá um número aleatório entre *Min* e *Max*.
+
+ Os valores que você definir serão exibidos no console. Altere o *Value* ou as configurações de *Random* para fazer o valor mudar.
+
+ ```output
+ (.venv) ➜ GroveTest python3 app.py
+ Light level: 143
+ Light level: 244
+ Light level: 246
+ Light level: 253
+ ```
+
+> 💁 Você pode encontrar este código na pasta [code-sensor/virtual-device](../../../../../1-getting-started/lessons/3-sensors-and-actuators/code-sensor/virtual-device).
+
+😀 Seu programa de luz noturna foi um sucesso!
+
+---
+
+**Aviso Legal**:
+Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.
\ No newline at end of file
diff --git a/translations/br/1-getting-started/lessons/3-sensors-and-actuators/wio-terminal-actuator.md b/translations/br/1-getting-started/lessons/3-sensors-and-actuators/wio-terminal-actuator.md
new file mode 100644
index 00000000..1915dd0c
--- /dev/null
+++ b/translations/br/1-getting-started/lessons/3-sensors-and-actuators/wio-terminal-actuator.md
@@ -0,0 +1,124 @@
+
+# Construa uma luz noturna - Wio Terminal
+
+Nesta parte da lição, você adicionará um LED ao seu Wio Terminal e o usará para criar uma luz noturna.
+
+## Hardware
+
+A luz noturna agora precisa de um atuador.
+
+O atuador é um **LED**, um [diodo emissor de luz](https://wikipedia.org/wiki/Diodo_emissor_de_luz) que emite luz quando a corrente passa por ele. Este é um atuador digital que possui 2 estados: ligado e desligado. Enviar um valor de 1 liga o LED, e 0 o desliga. Este é um atuador externo Grove e precisa ser conectado ao Wio Terminal.
+
+A lógica da luz noturna em pseudocódigo é:
+
+```output
+Check the light level.
+If the light is less than 300
+ Turn the LED on
+Otherwise
+ Turn the LED off
+```
+
+### Conecte o LED
+
+O Grove LED vem como um módulo com uma seleção de LEDs, permitindo que você escolha a cor.
+
+#### Tarefa - conectar o LED
+
+Conecte o LED.
+
+
+
+1. Escolha seu LED favorito e insira as pernas nos dois orifícios do módulo LED.
+
+ LEDs são diodos emissores de luz, e diodos são dispositivos eletrônicos que só permitem a passagem de corrente em uma direção. Isso significa que o LED precisa ser conectado na orientação correta, caso contrário, ele não funcionará.
+
+ Uma das pernas do LED é o pino positivo, e a outra é o pino negativo. O LED não é perfeitamente redondo e é ligeiramente mais plano de um lado. O lado ligeiramente mais plano é o pino negativo. Ao conectar o LED ao módulo, certifique-se de que o pino do lado arredondado está conectado ao soquete marcado com **+** na parte externa do módulo, e o lado mais plano está conectado ao soquete mais próximo do centro do módulo.
+
+1. O módulo LED possui um botão giratório que permite controlar o brilho. Gire-o completamente para cima no início, girando-o no sentido anti-horário até o limite usando uma pequena chave de fenda Phillips.
+
+1. Insira uma extremidade de um cabo Grove no soquete do módulo LED. Ele só entrará de uma maneira.
+
+1. Com o Wio Terminal desconectado do seu computador ou de outra fonte de alimentação, conecte a outra extremidade do cabo Grove ao soquete Grove do lado direito do Wio Terminal, olhando para a tela. Este é o soquete mais distante do botão de energia.
+
+ > 💁 O soquete Grove do lado direito pode ser usado com sensores e atuadores analógicos ou digitais. O soquete do lado esquerdo é apenas para sensores e atuadores digitais. O C será abordado em uma lição posterior.
+
+
+
+## Programe a luz noturna
+
+A luz noturna agora pode ser programada usando o sensor de luz embutido e o Grove LED.
+
+### Tarefa - programar a luz noturna
+
+Programe a luz noturna.
+
+1. Abra o projeto da luz noturna no VS Code que você criou na parte anterior desta tarefa.
+
+1. Adicione a seguinte linha ao final da função `setup`:
+
+ ```cpp
+ pinMode(D0, OUTPUT);
+ ```
+
+ Esta linha configura o pino usado para se comunicar com o LED através da porta Grove.
+
+ O pino `D0` é o pino digital para o soquete Grove do lado direito. Este pino é configurado como `OUTPUT`, o que significa que ele se conecta a um atuador e os dados serão escritos no pino.
+
+1. Adicione o seguinte código imediatamente antes do `delay` na função loop:
+
+ ```cpp
+ if (light < 300)
+ {
+ digitalWrite(D0, HIGH);
+ }
+ else
+ {
+ digitalWrite(D0, LOW);
+ }
+ ```
+
+ Este código verifica o valor de `light`. Se for menor que 300, ele envia um valor `HIGH` para o pino digital `D0`. Este `HIGH` é um valor de 1, ligando o LED. Se o valor da luz for maior ou igual a 300, um valor `LOW` de 0 é enviado para o pino, desligando o LED.
+
+ > 💁 Ao enviar valores digitais para atuadores, um valor LOW é 0v, e um valor HIGH é a tensão máxima para o dispositivo. Para o Wio Terminal, a tensão HIGH é 3,3V.
+
+1. Reconecte o Wio Terminal ao seu computador e carregue o novo código como fez anteriormente.
+
+1. Conecte o Monitor Serial. Os valores de luz serão exibidos no terminal.
+
+ ```output
+ > Executing task: platformio device monitor <
+
+ --- Available filters and text transformations: colorize, debug, default, direct, hexlify, log2file, nocontrol, printable, send_on_enter, time
+ --- More details at http://bit.ly/pio-monitor-filters
+ --- Miniterm on /dev/cu.usbmodem101 9600,8,N,1 ---
+ --- Quit: Ctrl+C | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H ---
+ Light value: 4
+ Light value: 5
+ Light value: 4
+ Light value: 158
+ Light value: 343
+ Light value: 348
+ Light value: 344
+ ```
+
+1. Cubra e descubra o sensor de luz. Observe como o LED acende se o nível de luz for 300 ou menos, e apaga quando o nível de luz for maior que 300.
+
+
+
+> 💁 Você pode encontrar este código na pasta [code-actuator/wio-terminal](../../../../../1-getting-started/lessons/3-sensors-and-actuators/code-actuator/wio-terminal).
+
+😀 Seu programa de luz noturna foi um sucesso!
+
+---
+
+**Aviso Legal**:
+Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.
\ No newline at end of file
diff --git a/translations/br/1-getting-started/lessons/3-sensors-and-actuators/wio-terminal-sensor.md b/translations/br/1-getting-started/lessons/3-sensors-and-actuators/wio-terminal-sensor.md
new file mode 100644
index 00000000..2b03a11c
--- /dev/null
+++ b/translations/br/1-getting-started/lessons/3-sensors-and-actuators/wio-terminal-sensor.md
@@ -0,0 +1,87 @@
+
+# Adicionar um sensor - Wio Terminal
+
+Nesta parte da lição, você usará o sensor de luz do seu Wio Terminal.
+
+## Hardware
+
+O sensor para esta lição é um **sensor de luz** que utiliza um [fotodiodo](https://wikipedia.org/wiki/Fotodiodo) para converter luz em um sinal elétrico. Este é um sensor analógico que envia um valor inteiro de 0 a 1.023, indicando uma quantidade relativa de luz que não corresponde a nenhuma unidade de medida padrão, como [lux](https://wikipedia.org/wiki/Lux).
+
+O sensor de luz está integrado ao Wio Terminal e é visível através da janela de plástico transparente na parte traseira.
+
+
+
+## Programar o sensor de luz
+
+Agora o dispositivo pode ser programado para usar o sensor de luz integrado.
+
+### Tarefa
+
+Programar o dispositivo.
+
+1. Abra o projeto de luz noturna no VS Code que você criou na parte anterior desta tarefa.
+
+1. Adicione a seguinte linha ao final da função `setup`:
+
+ ```cpp
+ pinMode(WIO_LIGHT, INPUT);
+ ```
+
+ Esta linha configura os pinos usados para se comunicar com o hardware do sensor.
+
+ O pino `WIO_LIGHT` é o número do pino GPIO conectado ao sensor de luz integrado. Este pino é configurado como `INPUT`, o que significa que ele se conecta a um sensor e os dados serão lidos do pino.
+
+1. Exclua o conteúdo da função `loop`.
+
+1. Adicione o seguinte código à função `loop`, que agora está vazia.
+
+ ```cpp
+ int light = analogRead(WIO_LIGHT);
+ Serial.print("Light value: ");
+ Serial.println(light);
+ ```
+
+ Este código lê um valor analógico do pino `WIO_LIGHT`. Ele lê um valor de 0 a 1.023 do sensor de luz integrado. Este valor é então enviado para a porta serial para que você possa lê-lo no Monitor Serial enquanto este código estiver em execução. `Serial.print` escreve o texto sem uma nova linha no final, então cada linha começará com `Light value:` e terminará com o valor real da luz.
+
+1. Adicione um pequeno atraso de um segundo (1.000ms) no final do `loop`, já que os níveis de luz não precisam ser verificados continuamente. Um atraso reduz o consumo de energia do dispositivo.
+
+ ```cpp
+ delay(1000);
+ ```
+
+1. Reconecte o Wio Terminal ao seu computador e carregue o novo código como você fez anteriormente.
+
+1. Conecte o Monitor Serial. Os valores de luz serão exibidos no terminal. Cubra e descubra o sensor de luz na parte traseira do Wio Terminal, e os valores irão mudar.
+
+ ```output
+ > Executing task: platformio device monitor <
+
+ --- Available filters and text transformations: colorize, debug, default, direct, hexlify, log2file, nocontrol, printable, send_on_enter, time
+ --- More details at http://bit.ly/pio-monitor-filters
+ --- Miniterm on /dev/cu.usbmodem101 9600,8,N,1 ---
+ --- Quit: Ctrl+C | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H ---
+ Light value: 4
+ Light value: 5
+ Light value: 4
+ Light value: 158
+ Light value: 343
+ Light value: 348
+ Light value: 344
+ ```
+
+> 💁 Você pode encontrar este código na pasta [code-sensor/wio-terminal](../../../../../1-getting-started/lessons/3-sensors-and-actuators/code-sensor/wio-terminal).
+
+😀 Adicionar um sensor ao seu programa de luz noturna foi um sucesso!
+
+---
+
+**Aviso Legal**:
+Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.
\ No newline at end of file
diff --git a/translations/br/1-getting-started/lessons/4-connect-internet/README.md b/translations/br/1-getting-started/lessons/4-connect-internet/README.md
new file mode 100644
index 00000000..9c2b70d0
--- /dev/null
+++ b/translations/br/1-getting-started/lessons/4-connect-internet/README.md
@@ -0,0 +1,466 @@
+
+# Conecte seu dispositivo à Internet
+
+
+
+> Ilustração por [Nitya Narasimhan](https://github.com/nitya). Clique na imagem para uma versão maior.
+
+Esta lição foi ensinada como parte da série [Hello IoT](https://youtube.com/playlist?list=PLmsFUfdnGr3xRts0TIwyaHyQuHaNQcb6-) do [Microsoft Reactor](https://developer.microsoft.com/reactor/?WT.mc_id=academic-17441-jabenn). A lição foi apresentada em 2 vídeos - uma aula de 1 hora e uma sessão de perguntas e respostas de 1 hora, explorando mais a fundo partes da lição e respondendo dúvidas.
+
+[](https://youtu.be/O4dd172mZhs)
+
+[](https://youtu.be/j-cVCzRDE2Q)
+
+> 🎥 Clique nas imagens acima para assistir aos vídeos
+
+## Questionário pré-aula
+
+[Questionário pré-aula](https://black-meadow-040d15503.1.azurestaticapps.net/quiz/7)
+
+## Introdução
+
+O **I** em IoT significa **Internet** - a conectividade com a nuvem e os serviços que possibilitam muitos dos recursos dos dispositivos IoT, desde coletar medições dos sensores conectados ao dispositivo até enviar mensagens para controlar os atuadores. Dispositivos IoT geralmente se conectam a um único serviço de IoT na nuvem usando um protocolo de comunicação padrão, e esse serviço está conectado ao restante da sua aplicação IoT, desde serviços de IA para tomar decisões inteligentes com base nos dados até aplicativos web para controle ou relatórios.
+
+> 🎓 Dados coletados de sensores e enviados para a nuvem são chamados de telemetria.
+
+Dispositivos IoT podem receber mensagens da nuvem. Muitas vezes, essas mensagens contêm comandos - ou seja, instruções para realizar uma ação, seja internamente (como reiniciar ou atualizar o firmware) ou usando um atuador (como acender uma luz).
+
+Esta lição apresenta alguns dos protocolos de comunicação que dispositivos IoT podem usar para se conectar à nuvem e os tipos de dados que podem enviar ou receber. Você também colocará a mão na massa, adicionando controle pela Internet à sua luz noturna, movendo a lógica de controle do LED para um código 'servidor' executado localmente.
+
+Nesta lição, abordaremos:
+
+* [Protocolos de comunicação](../../../../../1-getting-started/lessons/4-connect-internet)
+* [Message Queueing Telemetry Transport (MQTT)](../../../../../1-getting-started/lessons/4-connect-internet)
+* [Telemetria](../../../../../1-getting-started/lessons/4-connect-internet)
+* [Comandos](../../../../../1-getting-started/lessons/4-connect-internet)
+
+## Protocolos de comunicação
+
+Existem vários protocolos de comunicação populares usados por dispositivos IoT para se comunicar com a Internet. Os mais comuns são baseados em mensagens de publicação/assinatura via algum tipo de broker. Os dispositivos IoT se conectam ao broker, publicam telemetria e assinam comandos. Os serviços na nuvem também se conectam ao broker, assinam todas as mensagens de telemetria e publicam comandos, seja para dispositivos específicos ou para grupos de dispositivos.
+
+
+
+O MQTT é o protocolo de comunicação mais popular para dispositivos IoT e será abordado nesta lição. Outros protocolos incluem AMQP e HTTP/HTTPS.
+
+## Message Queueing Telemetry Transport (MQTT)
+
+[MQTT](http://mqtt.org) é um protocolo de mensagens leve e de padrão aberto que pode enviar mensagens entre dispositivos. Ele foi projetado em 1999 para monitorar oleodutos, antes de ser lançado como um padrão aberto 15 anos depois pela IBM.
+
+O MQTT possui um único broker e vários clientes. Todos os clientes se conectam ao broker, e o broker roteia mensagens para os clientes relevantes. As mensagens são roteadas usando tópicos nomeados, em vez de serem enviadas diretamente para um cliente individual. Um cliente pode publicar em um tópico, e qualquer cliente que assinar esse tópico receberá a mensagem.
+
+
+
+✅ Faça uma pesquisa. Se você tiver muitos dispositivos IoT, como garantir que seu broker MQTT consiga lidar com todas as mensagens?
+
+### Conecte seu dispositivo IoT ao MQTT
+
+A primeira parte para adicionar controle pela Internet à sua luz noturna é conectá-la a um broker MQTT.
+
+#### Tarefa
+
+Conecte seu dispositivo a um broker MQTT.
+
+Nesta parte da lição, você conectará sua luz noturna IoT à Internet para permitir que ela seja controlada remotamente. Mais adiante nesta lição, seu dispositivo IoT enviará uma mensagem de telemetria via MQTT para um broker MQTT público com o nível de luz, onde será captada por um código de servidor que você escreverá. Esse código verificará o nível de luz e enviará uma mensagem de comando de volta ao dispositivo, instruindo-o a ligar ou desligar o LED.
+
+O caso de uso real para tal configuração poderia ser coletar dados de vários sensores de luz antes de decidir acender as luzes em um local com muitas luzes, como um estádio. Isso poderia evitar que as luzes fossem acesas se apenas um sensor estivesse coberto por nuvens ou um pássaro, mas os outros sensores detectassem luz suficiente.
+
+✅ Que outras situações exigiriam a avaliação de dados de múltiplos sensores antes de enviar comandos?
+
+Em vez de lidar com as complexidades de configurar um broker MQTT como parte desta tarefa, você pode usar um servidor de teste público que executa o [Eclipse Mosquitto](https://www.mosquitto.org), um broker MQTT de código aberto. Este broker de teste está disponível publicamente em [test.mosquitto.org](https://test.mosquitto.org) e não requer a criação de uma conta, tornando-o uma ótima ferramenta para testar clientes e servidores MQTT.
+
+> 💁 Este broker de teste é público e não seguro. Qualquer pessoa pode ouvir o que você publica, então ele não deve ser usado com dados que precisam ser mantidos privados.
+
+
+
+Siga a etapa relevante abaixo para conectar seu dispositivo ao broker MQTT:
+
+* [Arduino - Wio Terminal](wio-terminal-mqtt.md)
+* [Computador de placa única - Raspberry Pi/Dispositivo IoT virtual](single-board-computer-mqtt.md)
+
+### Explorando mais a fundo o MQTT
+
+Os tópicos podem ter uma hierarquia, e os clientes podem assinar diferentes níveis da hierarquia usando curingas. Por exemplo, você pode enviar mensagens de telemetria de temperatura para o tópico `/telemetry/temperature` e mensagens de umidade para o tópico `/telemetry/humidity`, e então, no seu aplicativo na nuvem, assinar o tópico `/telemetry/*` para receber tanto as mensagens de telemetria de temperatura quanto de umidade.
+
+As mensagens podem ser enviadas com uma qualidade de serviço (QoS), que determina a garantia de que a mensagem será recebida.
+
+* No máximo uma vez - a mensagem é enviada apenas uma vez e o cliente e o broker não tomam medidas adicionais para reconhecer a entrega (enviar e esquecer).
+* Pelo menos uma vez - a mensagem é reenviada pelo remetente várias vezes até que o reconhecimento seja recebido (entrega reconhecida).
+* Exatamente uma vez - o remetente e o receptor realizam um handshake de dois níveis para garantir que apenas uma cópia da mensagem seja recebida (entrega garantida).
+
+✅ Que situações podem exigir uma mensagem de entrega garantida em vez de uma mensagem de enviar e esquecer?
+
+Embora o nome seja Message Queueing (iniciais em MQTT), ele na verdade não suporta filas de mensagens. Isso significa que, se um cliente se desconectar e depois reconectar, ele não receberá mensagens enviadas durante a desconexão, exceto aquelas mensagens que ele já havia começado a processar usando o processo de QoS. As mensagens podem ter um sinalizador de retenção ativado. Se este sinalizador estiver ativado, o broker MQTT armazenará a última mensagem enviada em um tópico com este sinalizador e a enviará para qualquer cliente que posteriormente assinar o tópico. Dessa forma, os clientes sempre receberão a mensagem mais recente.
+
+O MQTT também suporta uma função de keep alive que verifica se a conexão ainda está ativa durante longos intervalos entre mensagens.
+
+> 🦟 [Mosquitto da Eclipse Foundation](https://mosquitto.org) oferece um broker MQTT gratuito que você pode executar para experimentar o MQTT, além de um broker MQTT público que você pode usar para testar seu código, hospedado em [test.mosquitto.org](https://test.mosquitto.org).
+
+As conexões MQTT podem ser públicas e abertas, ou criptografadas e protegidas usando nomes de usuário e senhas, ou certificados.
+
+> 💁 O MQTT se comunica sobre TCP/IP, o mesmo protocolo de rede subjacente ao HTTP, mas em uma porta diferente. Você também pode usar MQTT sobre websockets para se comunicar com aplicativos web executados em um navegador ou em situações onde firewalls ou outras regras de rede bloqueiam conexões MQTT padrão.
+
+## Telemetria
+
+A palavra telemetria é derivada de raízes gregas que significam medir remotamente. Telemetria é o ato de coletar dados de sensores e enviá-los para a nuvem.
+
+> 💁 Um dos primeiros dispositivos de telemetria foi inventado na França em 1874 e enviava em tempo real dados meteorológicos e de profundidade de neve do Mont Blanc para Paris. Ele usava fios físicos, já que tecnologias sem fio não estavam disponíveis na época.
+
+Vamos voltar ao exemplo do termostato inteligente da Lição 1.
+
+
+
+O termostato possui sensores de temperatura para coletar telemetria. Ele provavelmente teria um sensor de temperatura embutido e poderia se conectar a vários sensores de temperatura externos por meio de um protocolo sem fio, como [Bluetooth Low Energy](https://wikipedia.org/wiki/Bluetooth_Low_Energy) (BLE).
+
+Um exemplo dos dados de telemetria que ele enviaria poderia ser:
+
+| Nome | Valor | Descrição |
+| ---- | ----- | --------- |
+| `thermostat_temperature` | 18°C | A temperatura medida pelo sensor de temperatura embutido no termostato |
+| `livingroom_temperature` | 19°C | A temperatura medida por um sensor remoto que foi nomeado como `livingroom` para identificar o cômodo onde está localizado |
+| `bedroom_temperature` | 21°C | A temperatura medida por um sensor remoto que foi nomeado como `bedroom` para identificar o cômodo onde está localizado |
+
+O serviço na nuvem pode então usar esses dados de telemetria para tomar decisões sobre quais comandos enviar para controlar o aquecimento.
+
+### Enviar telemetria do seu dispositivo IoT
+
+A próxima etapa para adicionar controle pela Internet à sua luz noturna é enviar a telemetria do nível de luz para o broker MQTT em um tópico de telemetria.
+
+#### Tarefa - enviar telemetria do seu dispositivo IoT
+
+Envie a telemetria do nível de luz para o broker MQTT.
+
+Os dados são enviados codificados como JSON - abreviação de JavaScript Object Notation, um padrão para codificar dados em texto usando pares chave/valor.
+
+✅ Se você nunca ouviu falar de JSON antes, pode aprender mais sobre ele na [documentação do JSON.org](https://www.json.org/).
+
+Siga a etapa relevante abaixo para enviar telemetria do seu dispositivo para o broker MQTT:
+
+* [Arduino - Wio Terminal](wio-terminal-telemetry.md)
+* [Computador de placa única - Raspberry Pi/Dispositivo IoT virtual](single-board-computer-telemetry.md)
+
+### Receber telemetria do broker MQTT
+
+Não adianta enviar telemetria se não houver nada na outra ponta para ouvi-la. A telemetria do nível de luz precisa de algo que a escute para processar os dados. Esse código 'servidor' é o tipo de código que você implantará em um serviço na nuvem como parte de uma aplicação IoT maior, mas aqui você executará esse código localmente no seu computador (ou no seu Pi, se estiver programando diretamente nele). O código do servidor consiste em um aplicativo Python que escuta mensagens de telemetria via MQTT com níveis de luz. Mais adiante nesta lição, você fará com que ele responda com uma mensagem de comando com instruções para ligar ou desligar o LED.
+
+✅ Faça uma pesquisa: O que acontece com as mensagens MQTT se não houver nenhum ouvinte?
+
+#### Instale Python e VS Code
+
+Se você não tiver Python e VS Code instalados localmente, precisará instalá-los para programar o servidor. Se estiver usando um dispositivo IoT virtual ou trabalhando no seu Raspberry Pi, pode pular esta etapa, pois já deve ter isso instalado e configurado.
+
+##### Tarefa - instalar Python e VS Code
+
+Instale Python e VS Code.
+
+1. Instale o Python. Consulte a [página de downloads do Python](https://www.python.org/downloads/) para instruções sobre como instalar a versão mais recente do Python.
+
+2. Instale o Visual Studio Code (VS Code). Este será o editor que você usará para escrever o código do dispositivo virtual em Python. Consulte a [documentação do VS Code](https://code.visualstudio.com?WT.mc_id=academic-17441-jabenn) para instruções sobre como instalar o VS Code.
+💁 Você está livre para usar qualquer IDE ou editor Python para essas lições, caso tenha uma ferramenta preferida, mas as lições fornecerão instruções baseadas no uso do VS Code.
+1. Instale a extensão Pylance do VS Code. Esta é uma extensão para o VS Code que oferece suporte à linguagem Python. Consulte a [documentação da extensão Pylance](https://marketplace.visualstudio.com/items?WT.mc_id=academic-17441-jabenn&itemName=ms-python.vscode-pylance) para instruções sobre como instalar esta extensão no VS Code.
+
+#### Configure um ambiente virtual Python
+
+Uma das características mais poderosas do Python é a capacidade de instalar [pacotes pip](https://pypi.org) - pacotes de código escritos por outras pessoas e publicados na Internet. Você pode instalar um pacote pip no seu computador com um único comando e, em seguida, usar esse pacote no seu código. Você usará o pip para instalar um pacote que permite comunicação via MQTT.
+
+Por padrão, quando você instala um pacote, ele fica disponível em todo o seu computador, o que pode levar a problemas com versões de pacotes - como uma aplicação depender de uma versão de um pacote que pode quebrar ao instalar uma nova versão para outra aplicação. Para contornar esse problema, você pode usar um [ambiente virtual Python](https://docs.python.org/3/library/venv.html), essencialmente uma cópia do Python em uma pasta dedicada, e quando você instala pacotes pip, eles são instalados apenas nessa pasta.
+
+##### Tarefa - configurar um ambiente virtual Python
+
+Configure um ambiente virtual Python e instale os pacotes pip para MQTT.
+
+1. No seu terminal ou linha de comando, execute o seguinte em um local de sua escolha para criar e navegar até um novo diretório:
+
+ ```sh
+ mkdir nightlight-server
+ cd nightlight-server
+ ```
+
+1. Agora execute o seguinte para criar um ambiente virtual na pasta `.venv`:
+
+ ```sh
+ python3 -m venv .venv
+ ```
+
+ > 💁 Você precisa chamar explicitamente `python3` para criar o ambiente virtual, caso tenha o Python 2 instalado além do Python 3 (a versão mais recente). Se você tiver o Python 2 instalado, chamar `python` usará o Python 2 em vez do Python 3.
+
+1. Ative o ambiente virtual:
+
+ * No Windows:
+ * Se você estiver usando o Prompt de Comando ou o Prompt de Comando através do Windows Terminal, execute:
+
+ ```cmd
+ .venv\Scripts\activate.bat
+ ```
+
+ * Se você estiver usando o PowerShell, execute:
+
+ ```powershell
+ .\.venv\Scripts\Activate.ps1
+ ```
+
+ * No macOS ou Linux, execute:
+
+ ```cmd
+ source ./.venv/bin/activate
+ ```
+
+ > 💁 Esses comandos devem ser executados no mesmo local onde você executou o comando para criar o ambiente virtual. Você nunca precisará navegar para dentro da pasta `.venv`; sempre deve executar o comando de ativação e quaisquer comandos para instalar pacotes ou executar código a partir da pasta onde estava ao criar o ambiente virtual.
+
+1. Uma vez que o ambiente virtual tenha sido ativado, o comando padrão `python` executará a versão do Python usada para criar o ambiente virtual. Execute o seguinte para verificar a versão:
+
+ ```sh
+ python --version
+ ```
+
+ A saída será semelhante ao seguinte:
+
+ ```output
+ (.venv) ➜ nightlight-server python --version
+ Python 3.9.1
+ ```
+
+ > 💁 Sua versão do Python pode ser diferente - desde que seja a versão 3.6 ou superior, está tudo certo. Caso contrário, exclua esta pasta, instale uma versão mais recente do Python e tente novamente.
+
+1. Execute os seguintes comandos para instalar o pacote pip para [Paho-MQTT](https://pypi.org/project/paho-mqtt/), uma biblioteca popular de MQTT.
+
+ ```sh
+ pip install paho-mqtt
+ ```
+
+ Este pacote pip será instalado apenas no ambiente virtual e não estará disponível fora dele.
+
+#### Escreva o código do servidor
+
+Agora o código do servidor pode ser escrito em Python.
+
+##### Tarefa - escrever o código do servidor
+
+Escreva o código do servidor.
+
+1. No seu terminal ou linha de comando, execute o seguinte dentro do ambiente virtual para criar um arquivo Python chamado `app.py`:
+
+ * No Windows, execute:
+
+ ```cmd
+ type nul > app.py
+ ```
+
+ * No macOS ou Linux, execute:
+
+ ```cmd
+ touch app.py
+ ```
+
+1. Abra a pasta atual no VS Code:
+
+ ```sh
+ code .
+ ```
+
+1. Quando o VS Code for iniciado, ele ativará o ambiente virtual Python. Isso será indicado na barra de status inferior:
+
+ 
+
+1. Se o terminal do VS Code já estiver em execução quando o VS Code for iniciado, ele não terá o ambiente virtual ativado. A maneira mais fácil de resolver isso é encerrar o terminal usando o botão **Encerrar a instância ativa do terminal**:
+
+ 
+
+1. Inicie um novo terminal no VS Code selecionando *Terminal -> Novo Terminal*, ou pressionando `` CTRL+` ``. O novo terminal carregará o ambiente virtual, com a chamada para ativá-lo aparecendo no terminal. O nome do ambiente virtual (`.venv`) também estará no prompt:
+
+ ```output
+ ➜ nightlight-server source .venv/bin/activate
+ (.venv) ➜ nightlight
+ ```
+
+1. Abra o arquivo `app.py` no explorador do VS Code e adicione o seguinte código:
+
+ ```python
+ import json
+ import time
+
+ import paho.mqtt.client as mqtt
+
+ id = ''
+
+ client_telemetry_topic = id + '/telemetry'
+ client_name = id + 'nightlight_server'
+
+ mqtt_client = mqtt.Client(client_name)
+ mqtt_client.connect('test.mosquitto.org')
+
+ mqtt_client.loop_start()
+
+ def handle_telemetry(client, userdata, message):
+ payload = json.loads(message.payload.decode())
+ print("Message received:", payload)
+
+ mqtt_client.subscribe(client_telemetry_topic)
+ mqtt_client.on_message = handle_telemetry
+
+ while True:
+ time.sleep(2)
+ ```
+
+ Substitua `` na linha 6 pelo ID único que você usou ao criar o código do dispositivo.
+
+ ⚠️ Este **deve** ser o mesmo ID que você usou no seu dispositivo, caso contrário o código do servidor não se inscreverá ou publicará no tópico correto.
+
+ Este código cria um cliente MQTT com um nome único e se conecta ao broker *test.mosquitto.org*. Em seguida, inicia um loop de processamento que é executado em uma thread de segundo plano, ouvindo mensagens em quaisquer tópicos inscritos.
+
+ O cliente então se inscreve para mensagens no tópico de telemetria e define uma função que é chamada quando uma mensagem é recebida. Quando uma mensagem de telemetria é recebida, a função `handle_telemetry` é chamada, imprimindo a mensagem recebida no console.
+
+ Finalmente, um loop infinito mantém a aplicação em execução. O cliente MQTT está ouvindo mensagens em uma thread de segundo plano e funciona enquanto a aplicação principal estiver em execução.
+
+1. No terminal do VS Code, execute o seguinte para rodar seu aplicativo Python:
+
+ ```sh
+ python app.py
+ ```
+
+ O aplicativo começará a ouvir mensagens do dispositivo IoT.
+
+1. Certifique-se de que seu dispositivo está em execução e enviando mensagens de telemetria. Ajuste os níveis de luz detectados pelo seu dispositivo físico ou virtual. As mensagens recebidas serão impressas no terminal.
+
+ ```output
+ (.venv) ➜ nightlight-server python app.py
+ Message received: {'light': 0}
+ Message received: {'light': 400}
+ ```
+
+ O arquivo app.py no ambiente virtual nightlight precisa estar em execução para que o arquivo app.py no ambiente virtual nightlight-server receba as mensagens enviadas.
+
+> 💁 Você pode encontrar este código na pasta [code-server/server](../../../../../1-getting-started/lessons/4-connect-internet/code-server/server).
+
+### Com que frequência a telemetria deve ser enviada?
+
+Uma consideração importante sobre telemetria é com que frequência medir e enviar os dados. A resposta é - depende. Se você medir com frequência, pode responder mais rapidamente às mudanças nas medições, mas usará mais energia, mais largura de banda, gerará mais dados e precisará de mais recursos na nuvem para processá-los. Você precisa medir com frequência suficiente, mas não excessivamente.
+
+Para um termostato, medir a cada poucos minutos provavelmente é mais do que suficiente, já que as temperaturas não mudam com tanta frequência. Se você medir apenas uma vez por dia, pode acabar aquecendo sua casa para temperaturas noturnas no meio de um dia ensolarado, enquanto se medir a cada segundo terá milhares de medições de temperatura desnecessariamente duplicadas, o que consumirá a velocidade e largura de banda da Internet dos usuários (um problema para pessoas com planos de largura de banda limitada), usará mais energia, o que pode ser um problema para dispositivos alimentados por bateria, como sensores remotos, e aumentará o custo dos recursos de computação na nuvem para processá-los e armazená-los.
+
+Se você estiver monitorando dados de uma máquina em uma fábrica que, se falhar, pode causar danos catastróficos e milhões de dólares em perda de receita, medir várias vezes por segundo pode ser necessário. É melhor desperdiçar largura de banda do que perder telemetria que indica que uma máquina precisa ser parada e consertada antes de quebrar.
+
+> 💁 Nessa situação, você pode considerar ter um dispositivo de borda para processar a telemetria primeiro e reduzir a dependência da Internet.
+
+### Perda de conectividade
+
+Conexões de Internet podem ser instáveis, com interrupções comuns. O que um dispositivo IoT deve fazer nessas circunstâncias - deve perder os dados ou armazená-los até que a conectividade seja restaurada? Novamente, a resposta é depende.
+
+Para um termostato, os dados podem provavelmente ser descartados assim que uma nova medição de temperatura for feita. O sistema de aquecimento não se importa que há 20 minutos estava 20,5°C se a temperatura agora é 19°C; é a temperatura atual que determina se o aquecimento deve estar ligado ou desligado.
+
+Para máquinas, você pode querer manter os dados, especialmente se forem usados para buscar tendências. Existem modelos de aprendizado de máquina que podem detectar anomalias em fluxos de dados analisando dados de um período definido de tempo (como a última hora) e identificando dados anômalos. Isso é frequentemente usado para manutenção preditiva, buscando indicações de que algo pode quebrar em breve para que você possa reparar ou substituir antes que isso aconteça. Você pode querer que cada bit de telemetria de uma máquina seja enviado para que possa ser processado para detecção de anomalias, então, uma vez que o dispositivo IoT possa se reconectar, ele enviará toda a telemetria gerada durante a interrupção da Internet.
+
+Os designers de dispositivos IoT também devem considerar se o dispositivo IoT pode ser usado durante uma interrupção da Internet ou perda de sinal causada pela localização. Um termostato inteligente deve ser capaz de tomar algumas decisões limitadas para controlar o aquecimento se não puder enviar telemetria para a nuvem devido a uma interrupção.
+
+[](https://twitter.com/internetofshit/status/1315736960082808832)
+
+Para o MQTT lidar com uma perda de conectividade, o código do dispositivo e do servidor será responsável por garantir a entrega das mensagens, se necessário, por exemplo, exigindo que todas as mensagens enviadas sejam respondidas por mensagens adicionais em um tópico de resposta e, caso contrário, sejam enfileiradas manualmente para serem reproduzidas posteriormente.
+
+## Comandos
+
+Comandos são mensagens enviadas pela nuvem para um dispositivo, instruindo-o a fazer algo. Na maioria das vezes, isso envolve fornecer algum tipo de saída por meio de um atuador, mas pode ser uma instrução para o próprio dispositivo, como reiniciar ou coletar telemetria extra e retorná-la como resposta ao comando.
+
+
+
+Um termostato pode receber um comando da nuvem para ligar o aquecimento. Com base nos dados de telemetria de todos os sensores, se o serviço na nuvem decidiu que o aquecimento deve estar ligado, ele envia o comando relevante.
+
+### Enviar comandos para o broker MQTT
+
+O próximo passo para nosso nightlight controlado pela Internet é que o código do servidor envie um comando de volta para o dispositivo IoT para controlar a luz com base nos níveis de luz que ele detecta.
+
+1. Abra o código do servidor no VS Code.
+
+1. Adicione a seguinte linha após a declaração do `client_telemetry_topic` para definir qual tópico enviar comandos:
+
+ ```python
+ server_command_topic = id + '/commands'
+ ```
+
+1. Adicione o seguinte código ao final da função `handle_telemetry`:
+
+ ```python
+ command = { 'led_on' : payload['light'] < 300 }
+ print("Sending message:", command)
+
+ client.publish(server_command_topic, json.dumps(command))
+ ```
+
+ Isso envia uma mensagem JSON para o tópico de comando com o valor de `led_on` definido como verdadeiro ou falso, dependendo se a luz é menor que 300 ou não. Se a luz for menor que 300, verdadeiro é enviado para instruir o dispositivo a ligar o LED.
+
+1. Execute o código como antes.
+
+1. Ajuste os níveis de luz detectados pelo seu dispositivo físico ou virtual. As mensagens recebidas e os comandos enviados serão exibidos no terminal:
+
+ ```output
+ (.venv) ➜ nightlight-server python app.py
+ Message received: {'light': 0}
+ Sending message: {'led_on': True}
+ Message received: {'light': 400}
+ Sending message: {'led_on': False}
+ ```
+
+> 💁 A telemetria e os comandos estão sendo enviados em um único tópico cada. Isso significa que a telemetria de vários dispositivos aparecerá no mesmo tópico de telemetria, e os comandos para vários dispositivos aparecerão no mesmo tópico de comandos. Se você quiser enviar um comando para um dispositivo específico, pode usar vários tópicos, nomeados com um ID único do dispositivo, como `/commands/device1`, `/commands/device2`. Dessa forma, um dispositivo pode ouvir mensagens destinadas apenas para ele.
+
+> 💁 Você pode encontrar este código na pasta [code-commands/server](../../../../../1-getting-started/lessons/4-connect-internet/code-commands/server).
+
+### Lidar com comandos no dispositivo IoT
+
+Agora que os comandos estão sendo enviados pelo servidor, você pode adicionar código ao dispositivo IoT para lidar com eles e controlar o LED.
+
+Siga o passo relevante abaixo para ouvir comandos do broker MQTT:
+
+* [Arduino - Wio Terminal](wio-terminal-commands.md)
+* [Computador de placa única - Raspberry Pi/Dispositivo IoT virtual](single-board-computer-commands.md)
+
+Uma vez que este código esteja escrito e em execução, experimente alterar os níveis de luz. Observe a saída do servidor e do dispositivo, e veja o LED enquanto você altera os níveis de luz.
+
+### Perda de conectividade
+
+O que um serviço na nuvem deve fazer se precisar enviar um comando para um dispositivo IoT que está offline? Novamente, a resposta é depende.
+
+Se o último comando substitui um anterior, então os anteriores podem provavelmente ser ignorados. Se um serviço na nuvem enviar um comando para ligar o aquecimento e depois enviar um comando para desligá-lo, o comando de ligar pode ser ignorado e não reenviado.
+
+Se os comandos precisarem ser processados em sequência, como mover um braço robótico para cima e depois fechar um agarrador, então eles precisam ser enviados na ordem correta assim que a conectividade for restaurada.
+
+✅ Como o código do dispositivo ou do servidor poderia garantir que os comandos sejam sempre enviados e processados na ordem correta via MQTT, se necessário?
+
+---
+
+## 🚀 Desafio
+
+O desafio nas últimas três lições foi listar o maior número possível de dispositivos IoT que você tem em casa, na escola ou no trabalho e decidir se eles são construídos em torno de microcontroladores ou computadores de placa única, ou até mesmo uma mistura de ambos, e pensar sobre quais sensores e atuadores eles estão usando.
+Para esses dispositivos, pense nas mensagens que eles podem estar enviando ou recebendo. Que telemetria eles enviam? Que mensagens ou comandos eles podem receber? Você acha que eles são seguros?
+
+## Questionário pós-aula
+
+[Questionário pós-aula](https://black-meadow-040d15503.1.azurestaticapps.net/quiz/8)
+
+## Revisão e Autoestudo
+
+Leia mais sobre MQTT na [página da Wikipedia sobre MQTT](https://wikipedia.org/wiki/MQTT).
+
+Experimente executar um broker MQTT você mesmo usando o [Mosquitto](https://www.mosquitto.org) e conecte-se a ele a partir do seu dispositivo IoT e do código do servidor.
+
+> 💁 Dica - por padrão, o Mosquitto não permite conexões anônimas (ou seja, conectar sem um nome de usuário e senha) e não permite conexões de fora do computador onde está sendo executado.
+> Você pode corrigir isso com um [arquivo de configuração `mosquitto.conf`](https://www.mosquitto.org/man/mosquitto-conf-5.html) com o seguinte:
+>
+> ```sh
+> listener 1883 0.0.0.0
+> allow_anonymous true
+> ```
+
+## Tarefa
+
+[Compare e contraste o MQTT com outros protocolos de comunicação](assignment.md)
+
+---
+
+**Aviso Legal**:
+Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.
\ No newline at end of file
diff --git a/translations/br/1-getting-started/lessons/4-connect-internet/assignment.md b/translations/br/1-getting-started/lessons/4-connect-internet/assignment.md
new file mode 100644
index 00000000..519ae5ad
--- /dev/null
+++ b/translations/br/1-getting-started/lessons/4-connect-internet/assignment.md
@@ -0,0 +1,28 @@
+
+# Compare e contraste MQTT com outros protocolos de comunicação
+
+## Instruções
+
+Esta lição abordou o MQTT como um protocolo de comunicação. Existem outros, incluindo AMQP e HTTP/HTTPS.
+
+Pesquise ambos e compare/contraste com o MQTT. Considere o uso de energia, segurança e persistência de mensagens caso as conexões sejam perdidas.
+
+## Rubrica
+
+| Critério | Exemplar | Adequado | Precisa Melhorar |
+| -------- | --------- | -------- | ---------------- |
+| Comparar AMQP com MQTT | Consegue comparar e contrastar AMQP com MQTT e aborda uso de energia, segurança e persistência de mensagens. | Consegue parcialmente comparar e contrastar AMQP com MQTT e aborda dois dos aspectos: uso de energia, segurança e persistência de mensagens. | Consegue parcialmente comparar e contrastar AMQP com MQTT e aborda um dos aspectos: uso de energia, segurança e persistência de mensagens. |
+| Comparar HTTP/HTTPS com MQTT | Consegue comparar e contrastar HTTP/HTTPS com MQTT e aborda uso de energia, segurança e persistência de mensagens. | Consegue parcialmente comparar e contrastar HTTP/HTTPS com MQTT e aborda dois dos aspectos: uso de energia, segurança e persistência de mensagens. | Consegue parcialmente comparar e contrastar HTTP/HTTPS com MQTT e aborda um dos aspectos: uso de energia, segurança e persistência de mensagens. |
+
+---
+
+**Aviso Legal**:
+Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.
\ No newline at end of file
diff --git a/translations/br/1-getting-started/lessons/4-connect-internet/single-board-computer-commands.md b/translations/br/1-getting-started/lessons/4-connect-internet/single-board-computer-commands.md
new file mode 100644
index 00000000..faca64bb
--- /dev/null
+++ b/translations/br/1-getting-started/lessons/4-connect-internet/single-board-computer-commands.md
@@ -0,0 +1,67 @@
+
+# Controle sua luz noturna pela Internet - Hardware IoT Virtual e Raspberry Pi
+
+Nesta parte da lição, você irá se inscrever para receber comandos enviados de um broker MQTT para seu Raspberry Pi ou dispositivo IoT virtual.
+
+## Inscreva-se para receber comandos
+
+O próximo passo é se inscrever para os comandos enviados pelo broker MQTT e responder a eles.
+
+### Tarefa
+
+Inscreva-se para receber comandos.
+
+1. Abra o projeto da luz noturna no VS Code.
+
+1. Se você estiver usando um dispositivo IoT virtual, certifique-se de que o terminal está executando o ambiente virtual. Se estiver usando um Raspberry Pi, você não estará utilizando um ambiente virtual.
+
+1. Adicione o seguinte código após as definições de `client_telemetry_topic`:
+
+ ```python
+ server_command_topic = id + '/commands'
+ ```
+
+ O `server_command_topic` é o tópico MQTT ao qual o dispositivo irá se inscrever para receber comandos para o LED.
+
+1. Adicione o seguinte código logo acima do loop principal, após a linha `mqtt_client.loop_start()`:
+
+ ```python
+ def handle_command(client, userdata, message):
+ payload = json.loads(message.payload.decode())
+ print("Message received:", payload)
+
+ if payload['led_on']:
+ led.on()
+ else:
+ led.off()
+
+ mqtt_client.subscribe(server_command_topic)
+ mqtt_client.on_message = handle_command
+ ```
+
+ Este código define uma função, `handle_command`, que lê uma mensagem como um documento JSON e procura pelo valor da propriedade `led_on`. Se estiver configurada como `True`, o LED será ligado; caso contrário, será desligado.
+
+ O cliente MQTT se inscreve no tópico em que o servidor enviará mensagens e define a função `handle_command` para ser chamada quando uma mensagem for recebida.
+
+ > 💁 O manipulador `on_message` é chamado para todos os tópicos inscritos. Se você escrever código posteriormente que escute múltiplos tópicos, poderá obter o tópico ao qual a mensagem foi enviada a partir do objeto `message` passado para a função manipuladora.
+
+1. Execute o código da mesma forma que executou o código da parte anterior da tarefa. Se estiver usando um dispositivo IoT virtual, certifique-se de que o aplicativo CounterFit está em execução e que o sensor de luz e o LED foram criados nos pinos corretos.
+
+1. Ajuste os níveis de luz detectados pelo seu dispositivo físico ou virtual. As mensagens recebidas e os comandos enviados serão exibidos no terminal. O LED também será ligado e desligado dependendo do nível de luz.
+
+> 💁 Você pode encontrar este código na pasta [code-commands/virtual-device](../../../../../1-getting-started/lessons/4-connect-internet/code-commands/virtual-device) ou na pasta [code-commands/pi](../../../../../1-getting-started/lessons/4-connect-internet/code-commands/pi).
+
+😀 Você codificou com sucesso seu dispositivo para responder a comandos de um broker MQTT.
+
+---
+
+**Aviso Legal**:
+Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.
\ No newline at end of file
diff --git a/translations/br/1-getting-started/lessons/4-connect-internet/single-board-computer-mqtt.md b/translations/br/1-getting-started/lessons/4-connect-internet/single-board-computer-mqtt.md
new file mode 100644
index 00000000..2d60b183
--- /dev/null
+++ b/translations/br/1-getting-started/lessons/4-connect-internet/single-board-computer-mqtt.md
@@ -0,0 +1,93 @@
+
+# Controle sua luz noturna pela Internet - Hardware IoT Virtual e Raspberry Pi
+
+O dispositivo IoT precisa ser programado para se comunicar com o *test.mosquitto.org* usando MQTT, a fim de enviar valores de telemetria com a leitura do sensor de luz e receber comandos para controlar o LED.
+
+Nesta parte da lição, você conectará seu Raspberry Pi ou dispositivo IoT virtual a um broker MQTT.
+
+## Instale o pacote cliente MQTT
+
+Para se comunicar com o broker MQTT, você precisa instalar uma biblioteca MQTT usando o pip, seja no seu Raspberry Pi ou no ambiente virtual, caso esteja utilizando um dispositivo virtual.
+
+### Tarefa
+
+Instale o pacote pip
+
+1. Abra o projeto da luz noturna no VS Code.
+
+1. Se estiver usando um dispositivo IoT virtual, certifique-se de que o terminal está executando o ambiente virtual. Se estiver usando um Raspberry Pi, você não precisará de um ambiente virtual.
+
+1. Execute o seguinte comando para instalar o pacote MQTT via pip:
+
+ ```sh
+ pip3 install paho-mqtt
+ ```
+
+## Programe o dispositivo
+
+O dispositivo está pronto para ser programado.
+
+### Tarefa
+
+Escreva o código do dispositivo.
+
+1. Adicione a seguinte importação no topo do arquivo `app.py`:
+
+ ```python
+ import paho.mqtt.client as mqtt
+ ```
+
+ A biblioteca `paho.mqtt.client` permite que seu aplicativo se comunique via MQTT.
+
+1. Adicione o seguinte código após as definições do sensor de luz e do LED:
+
+ ```python
+ id = ''
+
+ client_name = id + 'nightlight_client'
+ ```
+
+ Substitua `` por um ID único que será usado como o nome deste cliente do dispositivo e, mais tarde, para os tópicos que este dispositivo publicará e assinará. O broker *test.mosquitto.org* é público e usado por muitas pessoas, incluindo outros estudantes que estão trabalhando nesta tarefa. Ter um nome de cliente MQTT e nomes de tópicos únicos garante que seu código não entre em conflito com o de outras pessoas. Você também precisará desse ID ao criar o código do servidor mais adiante nesta tarefa.
+
+ > 💁 Você pode usar um site como [GUIDGen](https://www.guidgen.com) para gerar um ID único.
+
+ O `client_name` é um nome exclusivo para este cliente MQTT no broker.
+
+1. Adicione o seguinte código abaixo deste novo código para criar um objeto cliente MQTT e conectar-se ao broker MQTT:
+
+ ```python
+ mqtt_client = mqtt.Client(client_name)
+ mqtt_client.connect('test.mosquitto.org')
+
+ mqtt_client.loop_start()
+
+ print("MQTT connected!")
+ ```
+
+ Este código cria o objeto cliente, conecta-se ao broker MQTT público e inicia um loop de processamento que roda em uma thread em segundo plano, ouvindo mensagens em quaisquer tópicos assinados.
+
+1. Execute o código da mesma forma que você executou o código da parte anterior da tarefa. Se estiver usando um dispositivo IoT virtual, certifique-se de que o aplicativo CounterFit está em execução e que o sensor de luz e o LED foram criados nos pinos corretos.
+
+ ```output
+ (.venv) ➜ nightlight python app.py
+ MQTT connected!
+ Light level: 0
+ Light level: 0
+ ```
+
+> 💁 Você pode encontrar este código na pasta [code-mqtt/virtual-device](../../../../../1-getting-started/lessons/4-connect-internet/code-mqtt/virtual-device) ou na pasta [code-mqtt/pi](../../../../../1-getting-started/lessons/4-connect-internet/code-mqtt/pi).
+
+😀 Você conectou com sucesso seu dispositivo a um broker MQTT.
+
+---
+
+**Aviso Legal**:
+Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.
\ No newline at end of file
diff --git a/translations/br/1-getting-started/lessons/4-connect-internet/single-board-computer-telemetry.md b/translations/br/1-getting-started/lessons/4-connect-internet/single-board-computer-telemetry.md
new file mode 100644
index 00000000..849eaa9e
--- /dev/null
+++ b/translations/br/1-getting-started/lessons/4-connect-internet/single-board-computer-telemetry.md
@@ -0,0 +1,74 @@
+
+# Controle sua luz noturna pela Internet - Hardware IoT Virtual e Raspberry Pi
+
+Nesta parte da lição, você enviará telemetria com níveis de luz do seu Raspberry Pi ou dispositivo IoT virtual para um broker MQTT.
+
+## Publicar telemetria
+
+O próximo passo é criar um documento JSON com telemetria e enviá-lo para o broker MQTT.
+
+### Tarefa
+
+Publique telemetria no broker MQTT.
+
+1. Abra o projeto da luz noturna no VS Code.
+
+1. Se você estiver usando um dispositivo IoT virtual, certifique-se de que o terminal está executando o ambiente virtual. Se estiver usando um Raspberry Pi, você não utilizará um ambiente virtual.
+
+1. Adicione a seguinte importação no topo do arquivo `app.py`:
+
+ ```python
+ import json
+ ```
+
+ A biblioteca `json` é usada para codificar a telemetria como um documento JSON.
+
+1. Adicione o seguinte após a declaração de `client_name`:
+
+ ```python
+ client_telemetry_topic = id + '/telemetry'
+ ```
+
+ O `client_telemetry_topic` é o tópico MQTT onde o dispositivo publicará os níveis de luz.
+
+1. Substitua o conteúdo do loop `while True:` no final do arquivo pelo seguinte:
+
+ ```python
+ while True:
+ light = light_sensor.light
+ telemetry = json.dumps({'light' : light})
+
+ print("Sending telemetry ", telemetry)
+
+ mqtt_client.publish(client_telemetry_topic, telemetry)
+
+ time.sleep(5)
+ ```
+
+ Este código empacota o nível de luz em um documento JSON e o publica no broker MQTT. Em seguida, ele entra em modo de espera para reduzir a frequência com que as mensagens são enviadas.
+
+1. Execute o código da mesma forma que você executou o código na parte anterior da tarefa. Se estiver usando um dispositivo IoT virtual, certifique-se de que o aplicativo CounterFit está em execução e que o sensor de luz e o LED foram criados nos pinos corretos.
+
+ ```output
+ (.venv) ➜ nightlight python app.py
+ MQTT connected!
+ Sending telemetry {"light": 0}
+ Sending telemetry {"light": 0}
+ ```
+
+> 💁 Você pode encontrar este código na pasta [code-telemetry/virtual-device](../../../../../1-getting-started/lessons/4-connect-internet/code-telemetry/virtual-device) ou na pasta [code-telemetry/pi](../../../../../1-getting-started/lessons/4-connect-internet/code-telemetry/pi).
+
+😀 Você enviou telemetria com sucesso a partir do seu dispositivo.
+
+---
+
+**Aviso Legal**:
+Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.
\ No newline at end of file
diff --git a/translations/br/1-getting-started/lessons/4-connect-internet/wio-terminal-commands.md b/translations/br/1-getting-started/lessons/4-connect-internet/wio-terminal-commands.md
new file mode 100644
index 00000000..ddabbcf2
--- /dev/null
+++ b/translations/br/1-getting-started/lessons/4-connect-internet/wio-terminal-commands.md
@@ -0,0 +1,93 @@
+
+# Controle sua luz noturna pela Internet - Wio Terminal
+
+Nesta parte da lição, você irá se inscrever para receber comandos enviados de um broker MQTT para o seu Wio Terminal.
+
+## Inscrever-se para comandos
+
+O próximo passo é se inscrever para os comandos enviados pelo broker MQTT e responder a eles.
+
+### Tarefa
+
+Inscreva-se para receber comandos.
+
+1. Abra o projeto da luz noturna no VS Code.
+
+1. Adicione o seguinte código ao final do arquivo `config.h` para definir o nome do tópico para os comandos:
+
+ ```cpp
+ const string SERVER_COMMAND_TOPIC = ID + "/commands";
+ ```
+
+ O `SERVER_COMMAND_TOPIC` é o tópico ao qual o dispositivo se inscreverá para receber comandos para o LED.
+
+1. Adicione a seguinte linha ao final da função `reconnectMQTTClient` para se inscrever no tópico de comandos quando o cliente MQTT for reconectado:
+
+ ```cpp
+ client.subscribe(SERVER_COMMAND_TOPIC.c_str());
+ ```
+
+1. Adicione o seguinte código abaixo da função `reconnectMQTTClient`.
+
+ ```cpp
+ void clientCallback(char *topic, uint8_t *payload, unsigned int length)
+ {
+ char buff[length + 1];
+ for (int i = 0; i < length; i++)
+ {
+ buff[i] = (char)payload[i];
+ }
+ buff[length] = '\0';
+
+ Serial.print("Message received:");
+ Serial.println(buff);
+
+ DynamicJsonDocument doc(1024);
+ deserializeJson(doc, buff);
+ JsonObject obj = doc.as();
+
+ bool led_on = obj["led_on"];
+
+ if (led_on)
+ digitalWrite(D0, HIGH);
+ else
+ digitalWrite(D0, LOW);
+ }
+ ```
+
+ Esta função será o callback que o cliente MQTT chamará quando receber uma mensagem do servidor.
+
+ A mensagem é recebida como um array de inteiros não assinados de 8 bits, então precisa ser convertida para um array de caracteres para ser tratada como texto.
+
+ A mensagem contém um documento JSON, que é decodificado usando a biblioteca ArduinoJson. A propriedade `led_on` do documento JSON é lida e, dependendo do valor, o LED é ligado ou desligado.
+
+1. Adicione o seguinte código à função `createMQTTClient`:
+
+ ```cpp
+ client.setCallback(clientCallback);
+ ```
+
+ Este código define o `clientCallback` como o callback a ser chamado quando uma mensagem for recebida do broker MQTT.
+
+ > 💁 O handler `clientCallback` é chamado para todos os tópicos aos quais você está inscrito. Se você escrever código posteriormente para ouvir múltiplos tópicos, poderá obter o tópico ao qual a mensagem foi enviada a partir do parâmetro `topic` passado para a função callback.
+
+1. Envie o código para o seu Wio Terminal e use o Monitor Serial para ver os níveis de luz sendo enviados para o broker MQTT.
+
+1. Ajuste os níveis de luz detectados pelo seu dispositivo físico ou virtual. Você verá mensagens sendo recebidas e comandos sendo enviados no terminal. Também verá o LED sendo ligado e desligado dependendo do nível de luz.
+
+> 💁 Você pode encontrar este código na pasta [code-commands/wio-terminal](../../../../../1-getting-started/lessons/4-connect-internet/code-commands/wio-terminal).
+
+😀 Você codificou com sucesso o seu dispositivo para responder a comandos de um broker MQTT.
+
+---
+
+**Aviso Legal**:
+Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.
\ No newline at end of file
diff --git a/translations/br/1-getting-started/lessons/4-connect-internet/wio-terminal-mqtt.md b/translations/br/1-getting-started/lessons/4-connect-internet/wio-terminal-mqtt.md
new file mode 100644
index 00000000..7bb031d8
--- /dev/null
+++ b/translations/br/1-getting-started/lessons/4-connect-internet/wio-terminal-mqtt.md
@@ -0,0 +1,251 @@
+
+# Controle sua luz noturna pela Internet - Wio Terminal
+
+O dispositivo IoT precisa ser programado para se comunicar com *test.mosquitto.org* usando MQTT para enviar valores de telemetria com a leitura do sensor de luz e receber comandos para controlar o LED.
+
+Nesta parte da lição, você conectará seu Wio Terminal a um broker MQTT.
+
+## Instale as bibliotecas Arduino de WiFi e MQTT
+
+Para se comunicar com o broker MQTT, você precisa instalar algumas bibliotecas Arduino para usar o chip WiFi no Wio Terminal e se comunicar com o MQTT. Ao desenvolver para dispositivos Arduino, você pode usar uma ampla gama de bibliotecas que contêm código de código aberto e implementam uma enorme variedade de funcionalidades. A Seeed publica bibliotecas para o Wio Terminal que permitem a comunicação via WiFi. Outros desenvolvedores publicaram bibliotecas para se comunicar com brokers MQTT, e você usará essas bibliotecas com seu dispositivo.
+
+Essas bibliotecas são fornecidas como código-fonte que pode ser importado automaticamente para o PlatformIO e compilado para o seu dispositivo. Dessa forma, as bibliotecas Arduino funcionarão em qualquer dispositivo que suporte o framework Arduino, desde que o dispositivo tenha o hardware específico necessário para essa biblioteca. Algumas bibliotecas, como as bibliotecas WiFi da Seeed, são específicas para determinados hardwares.
+
+As bibliotecas podem ser instaladas globalmente e compiladas, se necessário, ou em um projeto específico. Para esta tarefa, as bibliotecas serão instaladas no projeto.
+
+✅ Você pode aprender mais sobre gerenciamento de bibliotecas e como encontrar e instalar bibliotecas na [documentação de bibliotecas do PlatformIO](https://docs.platformio.org/en/latest/librarymanager/index.html).
+
+### Tarefa - instale as bibliotecas Arduino de WiFi e MQTT
+
+Instale as bibliotecas Arduino.
+
+1. Abra o projeto da luz noturna no VS Code.
+
+1. Adicione o seguinte ao final do arquivo `platformio.ini`:
+
+ ```ini
+ lib_deps =
+ seeed-studio/Seeed Arduino rpcWiFi @ 1.0.5
+ seeed-studio/Seeed Arduino FS @ 2.1.1
+ seeed-studio/Seeed Arduino SFUD @ 2.0.2
+ seeed-studio/Seeed Arduino rpcUnified @ 2.1.3
+ seeed-studio/Seeed_Arduino_mbedtls @ 3.0.1
+ ```
+
+ Isso importa as bibliotecas WiFi da Seeed. A sintaxe `@ ` refere-se a uma versão específica da biblioteca.
+
+ > 💁 Você pode remover o `@ ` para sempre usar a versão mais recente das bibliotecas, mas não há garantias de que as versões mais recentes funcionarão com o código abaixo. O código aqui foi testado com esta versão das bibliotecas.
+
+ Isso é tudo o que você precisa fazer para adicionar as bibliotecas. Na próxima vez que o PlatformIO compilar o projeto, ele fará o download do código-fonte dessas bibliotecas e o compilará no seu projeto.
+
+1. Adicione o seguinte ao `lib_deps`:
+
+ ```ini
+ knolleary/PubSubClient @ 2.8
+ ```
+
+ Isso importa o [PubSubClient](https://github.com/knolleary/pubsubclient), um cliente MQTT para Arduino.
+
+## Conecte-se ao WiFi
+
+Agora o Wio Terminal pode ser conectado ao WiFi.
+
+### Tarefa - conectar ao WiFi
+
+Conecte o Wio Terminal ao WiFi.
+
+1. Crie um novo arquivo na pasta `src` chamado `config.h`. Você pode fazer isso selecionando a pasta `src` ou o arquivo `main.cpp` dentro dela e clicando no botão **Novo arquivo** no explorador. Esse botão só aparece quando o cursor está sobre o explorador.
+
+ 
+
+1. Adicione o seguinte código a este arquivo para definir constantes para suas credenciais de WiFi:
+
+ ```cpp
+ #pragma once
+
+ #include
+
+ using namespace std;
+
+ // WiFi credentials
+ const char *SSID = "";
+ const char *PASSWORD = "";
+ ```
+
+ Substitua `` pelo SSID do seu WiFi. Substitua `` pela senha do seu WiFi.
+
+1. Abra o arquivo `main.cpp`.
+
+1. Adicione as seguintes diretivas `#include` ao topo do arquivo:
+
+ ```cpp
+ #include
+ #include
+ #include
+
+ #include "config.h"
+ ```
+
+ Isso inclui os arquivos de cabeçalho das bibliotecas que você adicionou anteriormente, bem como o arquivo de cabeçalho de configuração. Esses arquivos de cabeçalho são necessários para informar ao PlatformIO para incluir o código das bibliotecas. Sem incluir explicitamente esses arquivos de cabeçalho, parte do código não será compilada e você receberá erros de compilação.
+
+1. Adicione o seguinte código acima da função `setup`:
+
+ ```cpp
+ void connectWiFi()
+ {
+ while (WiFi.status() != WL_CONNECTED)
+ {
+ Serial.println("Connecting to WiFi..");
+ WiFi.begin(SSID, PASSWORD);
+ delay(500);
+ }
+
+ Serial.println("Connected!");
+ }
+ ```
+
+ Este código faz um loop enquanto o dispositivo não está conectado ao WiFi e tenta a conexão usando o SSID e a senha do arquivo de cabeçalho de configuração.
+
+1. Adicione uma chamada para esta função no final da função `setup`, após os pinos terem sido configurados.
+
+ ```cpp
+ connectWiFi();
+ ```
+
+1. Envie este código para o seu dispositivo para verificar se a conexão WiFi está funcionando. Você deve ver isso no monitor serial.
+
+ ```output
+ > Executing task: platformio device monitor <
+
+ --- Available filters and text transformations: colorize, debug, default, direct, hexlify, log2file, nocontrol, printable, send_on_enter, time
+ --- More details at http://bit.ly/pio-monitor-filters
+ --- Miniterm on /dev/cu.usbmodem1101 9600,8,N,1 ---
+ --- Quit: Ctrl+C | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H ---
+ Connecting to WiFi..
+ Connected!
+ ```
+
+## Conecte-se ao MQTT
+
+Depois que o Wio Terminal estiver conectado ao WiFi, ele poderá se conectar ao broker MQTT.
+
+### Tarefa - conectar ao MQTT
+
+Conecte-se ao broker MQTT.
+
+1. Adicione o seguinte código ao final do arquivo `config.h` para definir os detalhes de conexão do broker MQTT:
+
+ ```cpp
+ // MQTT settings
+ const string ID = "";
+
+ const string BROKER = "test.mosquitto.org";
+ const string CLIENT_NAME = ID + "nightlight_client";
+ ```
+
+ Substitua `` por um ID único que será usado como o nome deste cliente do dispositivo e, posteriormente, para os tópicos que este dispositivo publicará e assinará. O broker *test.mosquitto.org* é público e usado por muitas pessoas, incluindo outros estudantes que estão realizando esta tarefa. Ter um nome de cliente MQTT único e nomes de tópicos únicos garante que seu código não entre em conflito com o de outras pessoas. Você também precisará deste ID ao criar o código do servidor mais tarde nesta tarefa.
+
+ > 💁 Você pode usar um site como [GUIDGen](https://www.guidgen.com) para gerar um ID único.
+
+ O `BROKER` é o URL do broker MQTT.
+
+ O `CLIENT_NAME` é um nome único para este cliente MQTT no broker.
+
+1. Abra o arquivo `main.cpp` e adicione o seguinte código abaixo da função `connectWiFi` e acima da função `setup`:
+
+ ```cpp
+ WiFiClient wioClient;
+ PubSubClient client(wioClient);
+ ```
+
+ Este código cria um cliente WiFi usando as bibliotecas WiFi do Wio Terminal e o utiliza para criar um cliente MQTT.
+
+1. Abaixo deste código, adicione o seguinte:
+
+ ```cpp
+ void reconnectMQTTClient()
+ {
+ while (!client.connected())
+ {
+ Serial.print("Attempting MQTT connection...");
+
+ if (client.connect(CLIENT_NAME.c_str()))
+ {
+ Serial.println("connected");
+ }
+ else
+ {
+ Serial.print("Retying in 5 seconds - failed, rc=");
+ Serial.println(client.state());
+
+ delay(5000);
+ }
+ }
+ }
+ ```
+
+ Esta função testa a conexão com o broker MQTT e reconecta caso não esteja conectado. Ela faz um loop enquanto não está conectado e tenta conectar usando o nome único do cliente definido no arquivo de cabeçalho de configuração.
+
+ Se a conexão falhar, ela tenta novamente após 5 segundos.
+
+1. Adicione o seguinte código abaixo da função `reconnectMQTTClient`:
+
+ ```cpp
+ void createMQTTClient()
+ {
+ client.setServer(BROKER.c_str(), 1883);
+ reconnectMQTTClient();
+ }
+ ```
+
+ Este código define o broker MQTT para o cliente, bem como configura o callback para quando uma mensagem for recebida. Em seguida, tenta conectar ao broker.
+
+1. Chame a função `createMQTTClient` na função `setup` após a conexão WiFi ser estabelecida.
+
+1. Substitua toda a função `loop` pelo seguinte:
+
+ ```cpp
+ void loop()
+ {
+ reconnectMQTTClient();
+ client.loop();
+
+ delay(2000);
+ }
+ ```
+
+ Este código começa reconectando ao broker MQTT. Essas conexões podem ser facilmente interrompidas, então vale a pena verificar regularmente e reconectar, se necessário. Em seguida, chama o método `loop` no cliente MQTT para processar quaisquer mensagens que estejam chegando no tópico assinado. Este aplicativo é single-threaded, então as mensagens não podem ser recebidas em uma thread de fundo; portanto, é necessário alocar tempo na thread principal para processar quaisquer mensagens que estejam aguardando na conexão de rede.
+
+ Por fim, um atraso de 2 segundos garante que os níveis de luz não sejam enviados com muita frequência, reduzindo o consumo de energia do dispositivo.
+
+1. Envie o código para o seu Wio Terminal e use o Monitor Serial para ver o dispositivo conectando-se ao WiFi e ao MQTT.
+
+ ```output
+ > Executing task: platformio device monitor <
+
+ source /Users/jimbennett/GitHub/IoT-For-Beginners/1-getting-started/lessons/4-connect-internet/code-mqtt/wio-terminal/nightlight/.venv/bin/activate
+ --- Available filters and text transformations: colorize, debug, default, direct, hexlify, log2file, nocontrol, printable, send_on_enter, time
+ --- More details at http://bit.ly/pio-monitor-filters
+ --- Miniterm on /dev/cu.usbmodem1201 9600,8,N,1 ---
+ --- Quit: Ctrl+C | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H ---
+ Connecting to WiFi..
+ Connected!
+ Attempting MQTT connection...connected
+ ```
+
+> 💁 Você pode encontrar este código na pasta [code-mqtt/wio-terminal](../../../../../1-getting-started/lessons/4-connect-internet/code-mqtt/wio-terminal).
+
+😀 Você conectou com sucesso seu dispositivo a um broker MQTT.
+
+---
+
+**Aviso Legal**:
+Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.
\ No newline at end of file
diff --git a/translations/br/1-getting-started/lessons/4-connect-internet/wio-terminal-telemetry.md b/translations/br/1-getting-started/lessons/4-connect-internet/wio-terminal-telemetry.md
new file mode 100644
index 00000000..f58c483b
--- /dev/null
+++ b/translations/br/1-getting-started/lessons/4-connect-internet/wio-terminal-telemetry.md
@@ -0,0 +1,93 @@
+
+# Controle sua luz noturna pela Internet - Wio Terminal
+
+Nesta parte da lição, você enviará telemetria com os níveis de luz do seu Wio Terminal para o broker MQTT.
+
+## Instale as bibliotecas JSON para Arduino
+
+Uma maneira popular de enviar mensagens via MQTT é usando JSON. Existe uma biblioteca Arduino para JSON que facilita a leitura e escrita de documentos JSON.
+
+### Tarefa
+
+Instale a biblioteca Arduino JSON.
+
+1. Abra o projeto da luz noturna no VS Code.
+
+1. Adicione a seguinte linha adicional à lista `lib_deps` no arquivo `platformio.ini`:
+
+ ```ini
+ bblanchon/ArduinoJson @ 6.17.3
+ ```
+
+ Isso importa [ArduinoJson](https://arduinojson.org), uma biblioteca JSON para Arduino.
+
+## Publicar telemetria
+
+O próximo passo é criar um documento JSON com a telemetria e enviá-lo para o broker MQTT.
+
+### Tarefa - publicar telemetria
+
+Publique telemetria no broker MQTT.
+
+1. Adicione o seguinte código ao final do arquivo `config.h` para definir o nome do tópico de telemetria para o broker MQTT:
+
+ ```cpp
+ const string CLIENT_TELEMETRY_TOPIC = ID + "/telemetry";
+ ```
+
+ O `CLIENT_TELEMETRY_TOPIC` é o tópico no qual o dispositivo publicará os níveis de luz.
+
+1. Abra o arquivo `main.cpp`.
+
+1. Adicione a seguinte diretiva `#include` ao topo do arquivo:
+
+ ```cpp
+ #include
+ ```
+
+1. Adicione o seguinte código dentro da função `loop`, logo antes do `delay`:
+
+ ```cpp
+ int light = analogRead(WIO_LIGHT);
+
+ DynamicJsonDocument doc(1024);
+ doc["light"] = light;
+
+ string telemetry;
+ serializeJson(doc, telemetry);
+
+ Serial.print("Sending telemetry ");
+ Serial.println(telemetry.c_str());
+
+ client.publish(CLIENT_TELEMETRY_TOPIC.c_str(), telemetry.c_str());
+ ```
+
+ Este código lê o nível de luz e cria um documento JSON usando ArduinoJson contendo este nível. Em seguida, ele é serializado para uma string e publicado no tópico de telemetria MQTT pelo cliente MQTT.
+
+1. Faça o upload do código para o seu Wio Terminal e use o Monitor Serial para ver os níveis de luz sendo enviados para o broker MQTT.
+
+ ```output
+ Connecting to WiFi..
+ Connected!
+ Attempting MQTT connection...connected
+ Sending telemetry {"light":652}
+ Sending telemetry {"light":612}
+ Sending telemetry {"light":583}
+ ```
+
+> 💁 Você pode encontrar este código na pasta [code-telemetry/wio-terminal](../../../../../1-getting-started/lessons/4-connect-internet/code-telemetry/wio-terminal).
+
+😀 Você enviou com sucesso a telemetria do seu dispositivo.
+
+---
+
+**Aviso Legal**:
+Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.
\ No newline at end of file
diff --git a/translations/br/2-farm/README.md b/translations/br/2-farm/README.md
new file mode 100644
index 00000000..743020a9
--- /dev/null
+++ b/translations/br/2-farm/README.md
@@ -0,0 +1,34 @@
+
+# Agricultura com IoT
+
+À medida que a população cresce, também aumenta a demanda por agricultura. A quantidade de terra disponível não muda, mas o clima sim - trazendo ainda mais desafios para os agricultores, especialmente os 2 bilhões de [agricultores de subsistência](https://wikipedia.org/wiki/Subsistence_agriculture) que dependem do que cultivam para se alimentar e sustentar suas famílias. A IoT pode ajudar os agricultores a tomarem decisões mais inteligentes sobre o que plantar e quando colher, aumentar a produtividade, reduzir o trabalho manual e detectar e lidar com pragas.
+
+Nestes 6 módulos, você aprenderá como aplicar a Internet das Coisas para melhorar e automatizar a agricultura.
+
+> 💁 Estes módulos utilizarão alguns recursos na nuvem. Se você não concluir todas as lições deste projeto, certifique-se de [Limpar seu projeto](../clean-up.md).
+
+## Tópicos
+
+1. [Prever o crescimento das plantas com IoT](lessons/1-predict-plant-growth/README.md)
+1. [Detectar a umidade do solo](lessons/2-detect-soil-moisture/README.md)
+1. [Irrigação automatizada de plantas](lessons/3-automated-plant-watering/README.md)
+1. [Migrar sua planta para a nuvem](lessons/4-migrate-your-plant-to-the-cloud/README.md)
+1. [Migrar a lógica da sua aplicação para a nuvem](lessons/5-migrate-application-to-the-cloud/README.md)
+1. [Manter sua planta segura](lessons/6-keep-your-plant-secure/README.md)
+
+## Créditos
+
+Todas as lições foram escritas com ♥️ por [Jim Bennett](https://GitHub.com/JimBobBennett)
+
+---
+
+**Aviso Legal**:
+Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.
\ No newline at end of file
diff --git a/translations/br/2-farm/lessons/1-predict-plant-growth/README.md b/translations/br/2-farm/lessons/1-predict-plant-growth/README.md
new file mode 100644
index 00000000..7995cf23
--- /dev/null
+++ b/translations/br/2-farm/lessons/1-predict-plant-growth/README.md
@@ -0,0 +1,284 @@
+
+# Prever o crescimento de plantas com IoT
+
+
+
+> Ilustração por [Nitya Narasimhan](https://github.com/nitya). Clique na imagem para uma versão maior.
+
+## Questionário pré-aula
+
+[Questionário pré-aula](https://black-meadow-040d15503.1.azurestaticapps.net/quiz/9)
+
+## Introdução
+
+As plantas precisam de certos elementos para crescer - água, dióxido de carbono, nutrientes, luz e calor. Nesta lição, você aprenderá como calcular as taxas de crescimento e maturidade das plantas medindo a temperatura do ar.
+
+Nesta lição, abordaremos:
+
+* [Agricultura digital](../../../../../2-farm/lessons/1-predict-plant-growth)
+* [Por que a temperatura é importante na agricultura?](../../../../../2-farm/lessons/1-predict-plant-growth)
+* [Medir a temperatura ambiente](../../../../../2-farm/lessons/1-predict-plant-growth)
+* [Graus-dia de crescimento (GDD)](../../../../../2-farm/lessons/1-predict-plant-growth)
+* [Calcular GDD usando dados de sensores de temperatura](../../../../../2-farm/lessons/1-predict-plant-growth)
+
+## Agricultura digital
+
+A Agricultura Digital está transformando a forma como cultivamos, utilizando ferramentas para coletar, armazenar e analisar dados da agricultura. Estamos atualmente em um período descrito como a 'Quarta Revolução Industrial' pelo Fórum Econômico Mundial, e o surgimento da agricultura digital tem sido chamado de 'Quarta Revolução Agrícola' ou 'Agricultura 4.0'.
+
+> 🎓 O termo Agricultura Digital também inclui toda a 'cadeia de valor agrícola', ou seja, toda a jornada do campo até a mesa. Isso inclui o rastreamento da qualidade dos produtos enquanto os alimentos são transportados e processados, sistemas de armazéns e e-commerce, até mesmo aplicativos de aluguel de tratores!
+
+Essas mudanças permitem que os agricultores aumentem a produtividade, usem menos fertilizantes e pesticidas e otimizem o uso da água. Embora seja usada principalmente em países mais ricos, sensores e outros dispositivos estão gradualmente se tornando mais acessíveis em países em desenvolvimento devido à redução de custos.
+
+Algumas técnicas possibilitadas pela agricultura digital incluem:
+
+* Medição de temperatura - medir a temperatura permite que os agricultores prevejam o crescimento e a maturidade das plantas.
+* Irrigação automatizada - medir a umidade do solo e ativar sistemas de irrigação quando o solo estiver muito seco, em vez de usar irrigação programada. A irrigação programada pode levar a sub-irrigação durante períodos quentes e secos ou a irrigação excessiva durante chuvas. Ao regar apenas quando o solo precisa, os agricultores podem otimizar o uso da água.
+* Controle de pragas - os agricultores podem usar câmeras em robôs automatizados ou drones para verificar a presença de pragas e aplicar pesticidas apenas onde necessário, reduzindo a quantidade de pesticidas usados e minimizando o escoamento de pesticidas para os suprimentos de água locais.
+
+✅ Faça uma pesquisa. Quais outras técnicas são usadas para melhorar os rendimentos agrícolas?
+
+> 🎓 O termo 'Agricultura de Precisão' é usado para definir a observação, medição e resposta às necessidades das culturas em uma base por campo ou até mesmo por partes de um campo. Isso inclui medir níveis de água, nutrientes e pragas e responder de forma precisa, como irrigar apenas uma pequena parte de um campo.
+
+## Por que a temperatura é importante na agricultura?
+
+Ao aprender sobre plantas, a maioria dos estudantes é ensinada sobre a necessidade de água, luz, dióxido de carbono e nutrientes. As plantas também precisam de calor para crescer - é por isso que as plantas florescem na primavera, quando a temperatura aumenta, por que flores como campânulas ou narcisos podem brotar cedo devido a um curto período de calor, e por que estufas são tão eficazes para o crescimento das plantas.
+
+> 🎓 Estufas e casas de vegetação têm funções semelhantes, mas com uma diferença importante. As casas de vegetação são aquecidas artificialmente e permitem que os agricultores controlem as temperaturas com mais precisão, enquanto as estufas dependem do sol para aquecimento e geralmente têm apenas janelas ou outras aberturas para liberar o calor.
+
+As plantas têm uma temperatura base ou mínima, uma temperatura ótima e uma temperatura máxima, todas baseadas nas temperaturas médias diárias.
+
+* Temperatura base - é a temperatura média diária mínima necessária para que uma planta cresça.
+* Temperatura ótima - é a melhor temperatura média diária para obter o maior crescimento.
+* Temperatura máxima - é a temperatura máxima que uma planta pode suportar. Acima disso, a planta interrompe seu crescimento para tentar conservar água e sobreviver.
+
+> 💁 Essas são temperaturas médias, calculadas a partir das temperaturas diurnas e noturnas. As plantas também precisam de diferentes temperaturas durante o dia e a noite para realizar a fotossíntese de forma mais eficiente e economizar energia à noite.
+
+Cada espécie de planta tem valores diferentes para sua temperatura base, ótima e máxima. É por isso que algumas plantas prosperam em países quentes e outras em países mais frios.
+
+✅ Faça uma pesquisa. Para qualquer planta que você tenha em seu jardim, escola ou parque local, veja se consegue encontrar a temperatura base.
+
+
+
+O gráfico acima mostra um exemplo de taxa de crescimento em relação à temperatura. Até a temperatura base, não há crescimento. A taxa de crescimento aumenta até a temperatura ótima e depois cai após atingir esse pico. Na temperatura máxima, o crescimento para.
+
+O formato desse gráfico varia de espécie para espécie. Algumas têm quedas mais acentuadas acima da temperatura ótima, enquanto outras apresentam aumentos mais lentos da base até a ótima.
+
+> 💁 Para que um agricultor obtenha o melhor crescimento, ele precisará conhecer os três valores de temperatura e entender o formato dos gráficos para as plantas que está cultivando.
+
+Se um agricultor tem controle da temperatura, por exemplo, em uma casa de vegetação comercial, ele pode otimizar para suas plantas. Uma casa de vegetação comercial que cultiva tomates, por exemplo, terá a temperatura ajustada para cerca de 25°C durante o dia e 20°C à noite para obter o crescimento mais rápido.
+
+> 🍅 Combinando essas temperaturas com luzes artificiais, fertilizantes e níveis controlados de CO2, os produtores comerciais podem cultivar e colher durante todo o ano.
+
+## Medir a temperatura ambiente
+
+Sensores de temperatura podem ser usados com dispositivos IoT para medir a temperatura ambiente.
+
+### Tarefa - medir a temperatura
+
+Siga o guia relevante para monitorar temperaturas usando seu dispositivo IoT:
+
+* [Arduino - Wio Terminal](wio-terminal-temp.md)
+* [Computador de placa única - Raspberry Pi](pi-temp.md)
+* [Computador de placa única - Dispositivo virtual](virtual-device-temp.md)
+
+## Graus-dia de crescimento
+
+Graus-dia de crescimento (também conhecidos como unidades de graus-dia) são uma forma de medir o crescimento das plantas com base na temperatura. Supondo que uma planta tenha água, nutrientes e CO2 suficientes, a temperatura determina a taxa de crescimento.
+
+Os graus-dia de crescimento, ou GDD, são calculados por dia como a temperatura média em Celsius de um dia acima da temperatura base da planta. Cada planta precisa de um certo número de GDD para crescer, florescer ou produzir e amadurecer uma colheita. Quanto mais GDD por dia, mais rápido a planta crescerá.
+
+> 🇺🇸 Para os americanos, os graus-dia de crescimento também podem ser calculados usando Fahrenheit. 5 GDD em Celsius equivalem a 9 GDD em Fahrenheit.
+
+A fórmula completa para GDD é um pouco complicada, mas existe uma equação simplificada que é frequentemente usada como uma boa aproximação:
+
+
+
+* **GDD** - este é o número de graus-dia de crescimento
+* **T max** - esta é a temperatura máxima diária em graus Celsius
+* **T min** - esta é a temperatura mínima diária em graus Celsius
+* **T base** - esta é a temperatura base da planta em graus Celsius
+
+> 💁 Existem variações que lidam com T max acima de 30°C ou T min abaixo de T base, mas vamos ignorar essas por enquanto.
+
+### Exemplo - Milho 🌽
+
+Dependendo da variedade, o milho precisa de entre 800 e 2.700 GDD para amadurecer, com uma temperatura base de 10°C.
+
+No primeiro dia acima da temperatura base, as seguintes temperaturas foram medidas:
+
+| Medição | Temp °C |
+| :--------- | :-----: |
+| Máxima | 16 |
+| Mínima | 12 |
+
+Substituindo esses números na nossa fórmula:
+
+* T max = 16
+* T min = 12
+* T base = 10
+
+Isso resulta no cálculo:
+
+
+
+O milho recebeu 4 GDD nesse dia. Supondo uma variedade de milho que precisa de 800 GDD para amadurecer, ainda serão necessários mais 796 GDD para atingir a maturidade.
+
+✅ Faça uma pesquisa. Para qualquer planta que você tenha em seu jardim, escola ou parque local, veja se consegue encontrar o número de GDD necessário para atingir a maturidade ou produzir colheitas.
+
+## Calcular GDD usando dados de sensores de temperatura
+
+As plantas não crescem em datas fixas - por exemplo, você não pode plantar uma semente e saber que a planta dará frutos exatamente 100 dias depois. Em vez disso, como agricultor, você pode ter uma ideia aproximada de quanto tempo uma planta leva para crescer e, então, verificar diariamente para ver quando as colheitas estão prontas.
+
+Isso tem um grande impacto no trabalho em uma grande fazenda e corre o risco de o agricultor perder colheitas que estão prontas inesperadamente cedo. Medindo as temperaturas, o agricultor pode calcular os GDD que uma planta recebeu, permitindo que ele verifique apenas quando estiver próximo da maturidade esperada.
+
+Ao coletar dados de temperatura usando um dispositivo IoT, um agricultor pode ser notificado automaticamente quando as plantas estiverem próximas da maturidade. Uma arquitetura típica para isso é ter os dispositivos IoT medindo a temperatura e publicando esses dados de telemetria pela Internet usando algo como MQTT. O código do servidor então escuta esses dados e os salva em algum lugar, como em um banco de dados. Isso significa que os dados podem ser analisados posteriormente, como em uma tarefa noturna para calcular os GDD do dia, somar os GDD totais para cada cultura até o momento e alertar se uma planta estiver próxima da maturidade.
+
+
+
+O código do servidor também pode complementar os dados adicionando informações extras. Por exemplo, o dispositivo IoT pode publicar um identificador para indicar qual dispositivo está enviando os dados, e o código do servidor pode usar isso para buscar a localização do dispositivo e quais culturas ele está monitorando. Ele também pode adicionar dados básicos, como a hora atual, já que alguns dispositivos IoT não possuem o hardware necessário para manter um horário preciso ou exigem código adicional para ler a hora atual pela Internet.
+
+✅ Por que você acha que diferentes campos podem ter temperaturas diferentes?
+
+### Tarefa - publicar informações de temperatura
+
+Siga o guia relevante para publicar dados de temperatura via MQTT usando seu dispositivo IoT para que possam ser analisados posteriormente:
+
+* [Arduino - Wio Terminal](wio-terminal-temp-publish.md)
+* [Computador de placa única - Raspberry Pi/Dispositivo IoT virtual](single-board-computer-temp-publish.md)
+
+### Tarefa - capturar e armazenar as informações de temperatura
+
+Depois que o dispositivo IoT estiver publicando telemetria, o código do servidor pode ser escrito para assinar esses dados e armazená-los. Em vez de salvar em um banco de dados, o código do servidor salvará em um arquivo de valores separados por vírgulas (CSV). Arquivos CSV armazenam dados como linhas de valores em texto, com cada valor separado por uma vírgula e cada registro em uma nova linha. Eles são uma maneira conveniente, legível e bem suportada de salvar dados como arquivo.
+
+O arquivo CSV terá duas colunas - *data* e *temperatura*. A coluna *data* será definida como a data e hora atuais em que a mensagem foi recebida pelo servidor, e a *temperatura* virá da mensagem de telemetria.
+
+1. Repita os passos da lição 4 para criar o código do servidor para assinar a telemetria. Não é necessário adicionar código para publicar comandos.
+
+ Os passos para isso são:
+
+ * Configurar e ativar um Ambiente Virtual Python
+
+ * Instalar o pacote paho-mqtt com pip
+
+ * Escrever o código para escutar mensagens MQTT publicadas no tópico de telemetria
+
+ > ⚠️ Você pode consultar [as instruções na lição 4 para criar um aplicativo Python para receber telemetria, se necessário](../../../1-getting-started/lessons/4-connect-internet/README.md#receive-telemetry-from-the-mqtt-broker).
+
+ Nomeie a pasta deste projeto como `temperature-sensor-server`.
+
+1. Certifique-se de que o `client_name` reflete este projeto:
+
+ ```cpp
+ client_name = id + 'temperature_sensor_server'
+ ```
+
+1. Adicione os seguintes imports ao topo do arquivo, abaixo dos imports existentes:
+
+ ```python
+ from os import path
+ import csv
+ from datetime import datetime
+ ```
+
+ Isso importa uma biblioteca para leitura de arquivos, uma biblioteca para interagir com arquivos CSV e uma biblioteca para ajudar com datas e horários.
+
+1. Adicione o seguinte código antes da função `handle_telemetry`:
+
+ ```python
+ temperature_file_name = 'temperature.csv'
+ fieldnames = ['date', 'temperature']
+
+ if not path.exists(temperature_file_name):
+ with open(temperature_file_name, mode='w') as csv_file:
+ writer = csv.DictWriter(csv_file, fieldnames=fieldnames)
+ writer.writeheader()
+ ```
+
+ Este código declara algumas constantes para o nome do arquivo a ser escrito e os nomes dos cabeçalhos das colunas do arquivo CSV. A primeira linha de um arquivo CSV tradicionalmente contém cabeçalhos de coluna separados por vírgulas.
+
+ O código então verifica se o arquivo CSV já existe. Se não existir, ele é criado com os cabeçalhos das colunas na primeira linha.
+
+1. Adicione o seguinte código ao final da função `handle_telemetry`:
+
+ ```python
+ with open(temperature_file_name, mode='a') as temperature_file:
+ temperature_writer = csv.DictWriter(temperature_file, fieldnames=fieldnames)
+ temperature_writer.writerow({'date' : datetime.now().astimezone().replace(microsecond=0).isoformat(), 'temperature' : payload['temperature']})
+ ```
+Este código abre o arquivo CSV e adiciona uma nova linha no final. A linha contém a data e hora atual formatadas em um formato legível para humanos, seguidas pela temperatura recebida do dispositivo IoT. Os dados são armazenados no [formato ISO 8601](https://wikipedia.org/wiki/ISO_8601) com o fuso horário, mas sem os microssegundos.
+
+1. Execute este código da mesma forma que antes, certificando-se de que seu dispositivo IoT está enviando dados. Um arquivo CSV chamado `temperature.csv` será criado na mesma pasta. Se você visualizá-lo, verá datas/horários e medições de temperatura:
+
+ ```output
+ date,temperature
+ 2021-04-19T17:21:36-07:00,25
+ 2021-04-19T17:31:36-07:00,24
+ 2021-04-19T17:41:36-07:00,25
+ ```
+
+1. Execute este código por um tempo para capturar dados. Idealmente, você deve executá-lo por um dia inteiro para reunir dados suficientes para os cálculos de GDD.
+
+
+> 💁 Se você estiver usando um Dispositivo IoT Virtual, selecione a caixa de seleção aleatória e defina um intervalo para evitar obter a mesma temperatura toda vez que o valor de temperatura for retornado.
+ 
+
+ > 💁 Se você quiser executar isso por um dia inteiro, então você precisa garantir que o computador onde seu código de servidor está rodando não entre em modo de suspensão, seja alterando as configurações de energia ou executando algo como [este script Python para manter o sistema ativo](https://github.com/jaqsparow/keep-system-active).
+
+> 💁 Você pode encontrar este código na pasta [code-server/temperature-sensor-server](../../../../../2-farm/lessons/1-predict-plant-growth/code-server/temperature-sensor-server).
+
+### Tarefa - calcular GDD usando os dados armazenados
+
+Depois que o servidor capturar os dados de temperatura, o GDD para uma planta pode ser calculado.
+
+Os passos para fazer isso manualmente são:
+
+1. Encontre a temperatura base para a planta. Por exemplo, para morangos a temperatura base é 10°C.
+
+1. No arquivo `temperature.csv`, encontre as temperaturas mais altas e mais baixas do dia.
+
+1. Use o cálculo de GDD dado anteriormente para calcular o GDD.
+
+Por exemplo, se a temperatura mais alta do dia for 25°C e a mais baixa for 12°C:
+
+
+
+* 25 + 12 = 37
+* 37 / 2 = 18.5
+* 18.5 - 10 = 8.5
+
+Portanto, os morangos receberam **8.5** GDD. Morangos precisam de cerca de 250 GDD para dar frutos, então ainda falta um pouco.
+
+---
+
+## 🚀 Desafio
+
+As plantas precisam de mais do que calor para crescer. Quais outras coisas são necessárias?
+
+Para essas, descubra se há sensores que podem medi-las. E quanto aos atuadores para controlar esses níveis? Como você montaria um ou mais dispositivos IoT para otimizar o crescimento das plantas?
+
+## Quiz pós-aula
+
+[Quiz pós-aula](https://black-meadow-040d15503.1.azurestaticapps.net/quiz/10)
+
+## Revisão e Autoestudo
+
+* Leia mais sobre agricultura digital na [página da Wikipedia sobre Agricultura Digital](https://wikipedia.org/wiki/Digital_agriculture). Leia também sobre agricultura de precisão na [página da Wikipedia sobre Agricultura de Precisão](https://wikipedia.org/wiki/Precision_agriculture).
+* O cálculo completo de graus-dia de crescimento é mais complicado do que o simplificado apresentado aqui. Leia mais sobre a equação mais complexa e como lidar com temperaturas abaixo do limite na [página da Wikipedia sobre Graus-Dia de Crescimento](https://wikipedia.org/wiki/Growing_degree-day).
+* A comida pode ser escassa no futuro se continuarmos usando os mesmos métodos de agricultura. Saiba mais sobre técnicas de agricultura de alta tecnologia neste [vídeo sobre Fazendas Hi-Tech do Futuro no YouTube](https://www.youtube.com/watch?v=KIEOuKD9KX8).
+
+## Tarefa
+
+[Visualize os dados de GDD usando um Jupyter Notebook](assignment.md)
+
+---
+
+**Aviso Legal**:
+Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.
\ No newline at end of file
diff --git a/translations/br/2-farm/lessons/1-predict-plant-growth/assignment.md b/translations/br/2-farm/lessons/1-predict-plant-growth/assignment.md
new file mode 100644
index 00000000..09f40c5b
--- /dev/null
+++ b/translations/br/2-farm/lessons/1-predict-plant-growth/assignment.md
@@ -0,0 +1,57 @@
+
+# Visualizar dados de GDD usando um Jupyter Notebook
+
+## Instruções
+
+Nesta lição, você coletou dados de GDD usando um sensor IoT. Para obter bons dados de GDD, é necessário coletar dados por vários dias. Para ajudar a visualizar os dados de temperatura e calcular o GDD, você pode usar ferramentas como [Jupyter Notebooks](https://jupyter.org) para analisar os dados.
+
+Comece coletando dados por alguns dias. Você precisará garantir que o código do servidor esteja funcionando o tempo todo enquanto seu dispositivo IoT estiver ativo, seja ajustando as configurações de gerenciamento de energia ou executando algo como [este script Python para manter o sistema ativo](https://github.com/jaqsparow/keep-system-active).
+
+Depois de ter os dados de temperatura, você pode usar o Jupyter Notebook neste repositório para visualizá-los e calcular o GDD. Jupyter Notebooks misturam código e instruções em blocos chamados *células*, geralmente com código em Python. Você pode ler as instruções e executar cada bloco de código, um por vez. Também é possível editar o código. Neste notebook, por exemplo, você pode editar a temperatura base usada para calcular o GDD para sua planta.
+
+1. Crie uma pasta chamada `gdd-calculation`
+
+1. Baixe o arquivo [gdd.ipynb](./code-notebook/gdd.ipynb) e copie-o para a pasta `gdd-calculation`.
+
+1. Copie o arquivo `temperature.csv` criado pelo servidor MQTT.
+
+1. Crie um novo ambiente virtual Python na pasta `gdd-calculation`.
+
+1. Instale alguns pacotes pip para Jupyter Notebooks, junto com bibliotecas necessárias para gerenciar e plotar os dados:
+
+ ```sh
+ pip install --upgrade pip
+ pip install pandas
+ pip install matplotlib
+ pip install jupyter
+ ```
+
+1. Execute o notebook no Jupyter:
+
+ ```sh
+ jupyter notebook gdd.ipynb
+ ```
+
+ O Jupyter será iniciado e abrirá o notebook no seu navegador. Siga as instruções no notebook para visualizar as temperaturas medidas e calcular os graus-dia de crescimento.
+
+ 
+
+## Rubrica
+
+| Critério | Exemplar | Adequado | Precisa Melhorar |
+| -------- | --------- | -------- | ---------------- |
+| Capturar dados | Capturar pelo menos 2 dias completos de dados | Capturar pelo menos 1 dia completo de dados | Capturar alguns dados |
+| Calcular GDD | Executar o notebook com sucesso e calcular o GDD | Executar o notebook com sucesso | Não conseguir executar o notebook |
+
+---
+
+**Aviso Legal**:
+Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.
\ No newline at end of file
diff --git a/translations/br/2-farm/lessons/1-predict-plant-growth/code-notebook/gdd.ipynb b/translations/br/2-farm/lessons/1-predict-plant-growth/code-notebook/gdd.ipynb
new file mode 100644
index 00000000..6e39d7bd
--- /dev/null
+++ b/translations/br/2-farm/lessons/1-predict-plant-growth/code-notebook/gdd.ipynb
@@ -0,0 +1,167 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Dias de Grau de Crescimento\n",
+ "\n",
+ "Este notebook carrega dados de temperatura salvos em um arquivo CSV e os analisa. Ele plota as temperaturas, mostra os valores mais altos e mais baixos de cada dia e calcula o GDD.\n",
+ "\n",
+ "Para usar este notebook:\n",
+ "\n",
+ "* Copie o arquivo `temperature.csv` para a mesma pasta deste notebook\n",
+ "* Execute todas as células usando o botão **▶︎ Executar** acima. Isso executará a célula selecionada e, em seguida, passará para a próxima.\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "No campo abaixo, defina `base_temperature` para a temperatura base da planta.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "base_temperature = 10"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "O arquivo CSV agora precisa ser carregado, usando pandas\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import pandas as pd\n",
+ "import matplotlib.pyplot as plt\n",
+ "\n",
+ "# Read the temperature CSV file\n",
+ "df = pd.read_csv('temperature.csv')"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": []
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "plt.figure(figsize=(20, 10))\n",
+ "plt.plot(df['date'], df['temperature'])\n",
+ "plt.xticks(rotation='vertical');"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Depois que os dados forem lidos, eles podem ser agrupados pela coluna `date`, e as temperaturas mínima e máxima extraídas para cada data.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Convert datetimes to pure dates so we can group by the date\n",
+ "df['date'] = pd.to_datetime(df['date']).dt.date\n",
+ "\n",
+ "# Group the data by date so it can be analyzed by date\n",
+ "data_by_date = df.groupby('date')\n",
+ "\n",
+ "# Get the minimum and maximum temperatures for each date\n",
+ "min_by_date = data_by_date.min()\n",
+ "max_by_date = data_by_date.max()\n",
+ "\n",
+ "# Join the min and max temperatures into one dataframe and flatten it\n",
+ "min_max_by_date = min_by_date.join(max_by_date, on='date', lsuffix='_min', rsuffix='_max')\n",
+ "min_max_by_date = min_max_by_date.reset_index()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "A GDD pode ser calculada usando a equação padrão de GDD\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def calculate_gdd(row):\n",
+ " return ((row['temperature_max'] + row['temperature_min']) / 2) - base_temperature\n",
+ "\n",
+ "# Calculate the GDD for each row\n",
+ "min_max_by_date['gdd'] = min_max_by_date.apply (lambda row: calculate_gdd(row), axis=1)\n",
+ "\n",
+ "# Print the results\n",
+ "print(min_max_by_date[['date', 'gdd']].to_string(index=False))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "\n---\n\n**Aviso Legal**: \nEste documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte oficial. Para informações críticas, recomenda-se a tradução profissional feita por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes do uso desta tradução.\n"
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 3",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.9.1"
+ },
+ "metadata": {
+ "interpreter": {
+ "hash": "aee8b7b246df8f9039afb4144a1f6fd8d2ca17a180786b69acc140d282b71a49"
+ }
+ },
+ "coopTranslator": {
+ "original_hash": "8fcf954f6042f0bf3601a2c836a09574",
+ "translation_date": "2025-08-28T04:19:40+00:00",
+ "source_file": "2-farm/lessons/1-predict-plant-growth/code-notebook/gdd.ipynb",
+ "language_code": "br"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
\ No newline at end of file
diff --git a/translations/br/2-farm/lessons/1-predict-plant-growth/pi-temp.md b/translations/br/2-farm/lessons/1-predict-plant-growth/pi-temp.md
new file mode 100644
index 00000000..cc64f5ac
--- /dev/null
+++ b/translations/br/2-farm/lessons/1-predict-plant-growth/pi-temp.md
@@ -0,0 +1,125 @@
+
+# Medir temperatura - Raspberry Pi
+
+Nesta parte da lição, você adicionará um sensor de temperatura ao seu Raspberry Pi.
+
+## Hardware
+
+O sensor que você usará é um [sensor de umidade e temperatura DHT11](https://www.seeedstudio.com/Grove-Temperature-Humidity-Sensor-DHT11.html), que combina 2 sensores em um único pacote. Este sensor é bastante popular, com vários sensores disponíveis comercialmente que combinam temperatura, umidade e, às vezes, pressão atmosférica. O componente de temperatura é um termistor de coeficiente de temperatura negativo (NTC), um termistor cuja resistência diminui à medida que a temperatura aumenta.
+
+Este é um sensor digital, então ele possui um conversor ADC integrado para criar um sinal digital contendo os dados de temperatura e umidade que o microcontrolador pode ler.
+
+### Conectar o sensor de temperatura
+
+O sensor de temperatura Grove pode ser conectado ao Raspberry Pi.
+
+#### Tarefa
+
+Conecte o sensor de temperatura
+
+
+
+1. Insira uma extremidade do cabo Grove no conector do sensor de umidade e temperatura. Ele só encaixará de uma maneira.
+
+1. Com o Raspberry Pi desligado, conecte a outra extremidade do cabo Grove ao conector digital marcado como **D5** no Grove Base Hat conectado ao Pi. Este conector é o segundo da esquerda, na fileira de conectores ao lado dos pinos GPIO.
+
+
+
+## Programar o sensor de temperatura
+
+Agora o dispositivo pode ser programado para usar o sensor de temperatura conectado.
+
+### Tarefa
+
+Programe o dispositivo.
+
+1. Ligue o Raspberry Pi e aguarde o boot.
+
+1. Abra o VS Code, diretamente no Pi ou conecte-se via a extensão Remote SSH.
+
+ > ⚠️ Você pode consultar [as instruções para configurar e abrir o VS Code na lição 1, se necessário](../../../1-getting-started/lessons/1-introduction-to-iot/pi.md).
+
+1. No terminal, crie uma nova pasta no diretório home do usuário `pi` chamada `temperature-sensor`. Crie um arquivo nesta pasta chamado `app.py`:
+
+ ```sh
+ mkdir temperature-sensor
+ cd temperature-sensor
+ touch app.py
+ ```
+
+1. Abra esta pasta no VS Code.
+
+1. Para usar o sensor de temperatura e umidade, é necessário instalar um pacote adicional do Pip. No terminal do VS Code, execute o seguinte comando para instalar este pacote no Pi:
+
+ ```sh
+ pip3 install seeed-python-dht
+ ```
+
+1. Adicione o seguinte código ao arquivo `app.py` para importar as bibliotecas necessárias:
+
+ ```python
+ import time
+ from seeed_dht import DHT
+ ```
+
+ A instrução `from seeed_dht import DHT` importa a classe `DHT` para interagir com um sensor de temperatura Grove do módulo `seeed_dht`.
+
+1. Adicione o seguinte código após o código acima para criar uma instância da classe que gerencia o sensor de temperatura:
+
+ ```python
+ sensor = DHT("11", 5)
+ ```
+
+ Isso declara uma instância da classe `DHT` que gerencia o sensor de **U**midade e **T**emperatura **D**igital. O primeiro parâmetro informa ao código que o sensor utilizado é o *DHT11* - a biblioteca que você está usando suporta outras variantes deste sensor. O segundo parâmetro informa ao código que o sensor está conectado ao conector digital `D5` no Grove Base Hat.
+
+ > ✅ Lembre-se, todos os conectores possuem números de pinos únicos. Os pinos 0, 2, 4 e 6 são pinos analógicos, enquanto os pinos 5, 16, 18, 22, 24 e 26 são pinos digitais.
+
+1. Adicione um loop infinito após o código acima para consultar o valor do sensor de temperatura e imprimi-lo no console:
+
+ ```python
+ while True:
+ _, temp = sensor.read()
+ print(f'Temperature {temp}°C')
+ ```
+
+ A chamada para `sensor.read()` retorna uma tupla com umidade e temperatura. Você só precisa do valor de temperatura, então a umidade é ignorada. O valor da temperatura é então impresso no console.
+
+1. Adicione uma pausa de dez segundos no final do `loop`, já que os níveis de temperatura não precisam ser verificados continuamente. Uma pausa reduz o consumo de energia do dispositivo.
+
+ ```python
+ time.sleep(10)
+ ```
+
+1. No terminal do VS Code, execute o seguinte comando para rodar seu aplicativo Python:
+
+ ```sh
+ python3 app.py
+ ```
+
+ Você deverá ver os valores de temperatura sendo exibidos no console. Use algo para aquecer o sensor, como pressionar seu dedo sobre ele ou usar um ventilador, para ver os valores mudarem:
+
+ ```output
+ pi@raspberrypi:~/temperature-sensor $ python3 app.py
+ Temperature 26°C
+ Temperature 26°C
+ Temperature 28°C
+ Temperature 30°C
+ Temperature 32°C
+ ```
+
+> 💁 Você pode encontrar este código na pasta [code-temperature/pi](../../../../../2-farm/lessons/1-predict-plant-growth/code-temperature/pi).
+
+😀 Seu programa do sensor de temperatura foi um sucesso!
+
+---
+
+**Aviso Legal**:
+Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.
\ No newline at end of file
diff --git a/translations/br/2-farm/lessons/1-predict-plant-growth/single-board-computer-temp-publish.md b/translations/br/2-farm/lessons/1-predict-plant-growth/single-board-computer-temp-publish.md
new file mode 100644
index 00000000..70d4d9b0
--- /dev/null
+++ b/translations/br/2-farm/lessons/1-predict-plant-growth/single-board-computer-temp-publish.md
@@ -0,0 +1,71 @@
+
+# Publicar temperatura - Hardware IoT Virtual e Raspberry Pi
+
+Nesta parte da lição, você irá publicar os valores de temperatura detectados pelo Raspberry Pi ou Dispositivo IoT Virtual via MQTT, para que possam ser usados posteriormente no cálculo de GDD.
+
+## Publicar a temperatura
+
+Depois que a temperatura for lida, ela pode ser publicada via MQTT para algum código 'servidor' que irá ler os valores e armazená-los, prontos para serem usados no cálculo de GDD.
+
+### Tarefa - publicar a temperatura
+
+Programe o dispositivo para publicar os dados de temperatura.
+
+1. Abra o projeto do aplicativo `temperature-sensor` se ele ainda não estiver aberto.
+
+1. Repita os passos que você realizou na lição 4 para se conectar ao MQTT e enviar telemetria. Você usará o mesmo broker público do Mosquitto.
+
+ Os passos para isso são:
+
+ - Adicionar o pacote pip do MQTT
+ - Adicionar o código para se conectar ao broker MQTT
+ - Adicionar o código para publicar telemetria
+
+ > ⚠️ Consulte as [instruções para se conectar ao MQTT](../../../1-getting-started/lessons/4-connect-internet/single-board-computer-mqtt.md) e as [instruções para enviar telemetria](../../../1-getting-started/lessons/4-connect-internet/single-board-computer-telemetry.md) da lição 4, se necessário.
+
+1. Certifique-se de que o `client_name` reflete o nome deste projeto:
+
+ ```python
+ client_name = id + 'temperature_sensor_client'
+ ```
+
+1. Para a telemetria, em vez de enviar um valor de luz, envie o valor de temperatura lido do sensor DHT em uma propriedade no documento JSON chamada `temperature`:
+
+ ```python
+ _, temp = sensor.read()
+ telemetry = json.dumps({'temperature' : temp})
+ ```
+
+1. O valor da temperatura não precisa ser lido com muita frequência - ele não mudará muito em um curto período de tempo, então configure o `time.sleep` para 10 minutos:
+
+ ```cpp
+ time.sleep(10 * 60);
+ ```
+
+ > 💁 A função `sleep` recebe o tempo em segundos, então, para facilitar a leitura, o valor é passado como o resultado de um cálculo. São 60s em um minuto, então 10 x (60s em um minuto) resulta em um atraso de 10 minutos.
+
+1. Execute o código da mesma forma que você executou o código da parte anterior da tarefa. Se você estiver usando um dispositivo IoT virtual, certifique-se de que o aplicativo CounterFit esteja em execução e que os sensores de umidade e temperatura tenham sido criados nos pinos corretos.
+
+ ```output
+ pi@raspberrypi:~/temperature-sensor $ python3 app.py
+ MQTT connected!
+ Sending telemetry {"temperature": 25}
+ Sending telemetry {"temperature": 25}
+ ```
+
+> 💁 Você pode encontrar este código na pasta [code-publish-temperature/virtual-device](../../../../../2-farm/lessons/1-predict-plant-growth/code-publish-temperature/virtual-device) ou na pasta [code-publish-temperature/pi](../../../../../2-farm/lessons/1-predict-plant-growth/code-publish-temperature/pi).
+
+😀 Você publicou com sucesso a temperatura como telemetria do seu dispositivo.
+
+---
+
+**Aviso Legal**:
+Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.
\ No newline at end of file
diff --git a/translations/br/2-farm/lessons/1-predict-plant-growth/virtual-device-temp.md b/translations/br/2-farm/lessons/1-predict-plant-growth/virtual-device-temp.md
new file mode 100644
index 00000000..fb437b1e
--- /dev/null
+++ b/translations/br/2-farm/lessons/1-predict-plant-growth/virtual-device-temp.md
@@ -0,0 +1,154 @@
+
+# Medir temperatura - Hardware Virtual para IoT
+
+Nesta parte da lição, você adicionará um sensor de temperatura ao seu dispositivo IoT virtual.
+
+## Hardware Virtual
+
+O dispositivo IoT virtual usará um sensor simulado de Umidade e Temperatura Digital Grove. Isso mantém este laboratório semelhante ao uso de um Raspberry Pi com um sensor físico Grove DHT11.
+
+O sensor combina um **sensor de temperatura** com um **sensor de umidade**, mas neste laboratório você estará interessado apenas no componente do sensor de temperatura. Em um dispositivo IoT físico, o sensor de temperatura seria um [termistor](https://wikipedia.org/wiki/Thermistor) que mede a temperatura detectando uma mudança na resistência conforme a temperatura varia. Sensores de temperatura geralmente são sensores digitais que internamente convertem a resistência medida em uma temperatura em graus Celsius (ou Kelvin, ou Fahrenheit).
+
+### Adicionar os sensores ao CounterFit
+
+Para usar um sensor virtual de umidade e temperatura, você precisa adicionar os dois sensores ao aplicativo CounterFit.
+
+#### Tarefa - adicionar os sensores ao CounterFit
+
+Adicione os sensores de umidade e temperatura ao aplicativo CounterFit.
+
+1. Crie um novo aplicativo Python no seu computador em uma pasta chamada `temperature-sensor` com um único arquivo chamado `app.py` e um ambiente virtual Python, e adicione os pacotes pip do CounterFit.
+
+ > ⚠️ Você pode consultar [as instruções para criar e configurar um projeto Python do CounterFit na lição 1, se necessário](../../../1-getting-started/lessons/1-introduction-to-iot/virtual-device.md).
+
+1. Instale um pacote adicional do Pip para instalar um shim do CounterFit para o sensor DHT11. Certifique-se de instalar isso a partir de um terminal com o ambiente virtual ativado.
+
+ ```sh
+ pip install counterfit-shims-seeed-python-dht
+ ```
+
+1. Certifique-se de que o aplicativo web CounterFit esteja em execução.
+
+1. Crie um sensor de umidade:
+
+ 1. Na caixa *Create sensor* no painel *Sensors*, abra o menu suspenso *Sensor type* e selecione *Humidity*.
+
+ 1. Deixe a opção *Units* configurada como *Percentage*.
+
+ 1. Certifique-se de que o *Pin* esteja configurado como *5*.
+
+ 1. Selecione o botão **Add** para criar o sensor de umidade no pino 5.
+
+ 
+
+ O sensor de umidade será criado e aparecerá na lista de sensores.
+
+ 
+
+1. Crie um sensor de temperatura:
+
+ 1. Na caixa *Create sensor* no painel *Sensors*, abra o menu suspenso *Sensor type* e selecione *Temperature*.
+
+ 1. Deixe a opção *Units* configurada como *Celsius*.
+
+ 1. Certifique-se de que o *Pin* esteja configurado como *6*.
+
+ 1. Selecione o botão **Add** para criar o sensor de temperatura no pino 6.
+
+ 
+
+ O sensor de temperatura será criado e aparecerá na lista de sensores.
+
+ 
+
+## Programar o aplicativo do sensor de temperatura
+
+Agora o aplicativo do sensor de temperatura pode ser programado usando os sensores do CounterFit.
+
+### Tarefa - programar o aplicativo do sensor de temperatura
+
+Programe o aplicativo do sensor de temperatura.
+
+1. Certifique-se de que o aplicativo `temperature-sensor` esteja aberto no VS Code.
+
+1. Abra o arquivo `app.py`.
+
+1. Adicione o seguinte código ao topo do arquivo `app.py` para conectar o aplicativo ao CounterFit:
+
+ ```python
+ from counterfit_connection import CounterFitConnection
+ CounterFitConnection.init('127.0.0.1', 5000)
+ ```
+
+1. Adicione o seguinte código ao arquivo `app.py` para importar as bibliotecas necessárias:
+
+ ```python
+ import time
+ from counterfit_shims_seeed_python_dht import DHT
+ ```
+
+ A instrução `from seeed_dht import DHT` importa a classe `DHT` para interagir com um sensor virtual de temperatura Grove usando um shim do módulo `counterfit_shims_seeed_python_dht`.
+
+1. Adicione o seguinte código após o código acima para criar uma instância da classe que gerencia o sensor virtual de umidade e temperatura:
+
+ ```python
+ sensor = DHT("11", 5)
+ ```
+
+ Isso declara uma instância da classe `DHT` que gerencia o sensor virtual de **U**midade e **T**emperatura **D**igital. O primeiro parâmetro informa ao código que o sensor usado é um sensor virtual *DHT11*. O segundo parâmetro informa ao código que o sensor está conectado à porta `5`.
+
+ > 💁 O CounterFit simula este sensor combinado de umidade e temperatura conectando-se a 2 sensores: um sensor de umidade no pino fornecido quando a classe `DHT` é criada, e um sensor de temperatura que opera no próximo pino. Se o sensor de umidade estiver no pino 5, o shim espera que o sensor de temperatura esteja no pino 6.
+
+1. Adicione um loop infinito após o código acima para consultar o valor do sensor de temperatura e imprimi-lo no console:
+
+ ```python
+ while True:
+ _, temp = sensor.read()
+ print(f'Temperature {temp}°C')
+ ```
+
+ A chamada para `sensor.read()` retorna uma tupla de umidade e temperatura. Você só precisa do valor da temperatura, então a umidade é ignorada. O valor da temperatura é então impresso no console.
+
+1. Adicione uma pequena pausa de dez segundos no final do `loop`, já que os níveis de temperatura não precisam ser verificados continuamente. Uma pausa reduz o consumo de energia do dispositivo.
+
+ ```python
+ time.sleep(10)
+ ```
+
+1. No terminal do VS Code com o ambiente virtual ativado, execute o seguinte comando para rodar seu aplicativo Python:
+
+ ```sh
+ python app.py
+ ```
+
+1. No aplicativo CounterFit, altere o valor do sensor de temperatura que será lido pelo aplicativo. Você pode fazer isso de duas maneiras:
+
+ * Insira um número na caixa *Value* do sensor de temperatura e selecione o botão **Set**. O número inserido será o valor retornado pelo sensor.
+
+ * Marque a caixa *Random* e insira um valor *Min* e *Max*, depois selecione o botão **Set**. Toda vez que o sensor ler um valor, ele lerá um número aleatório entre *Min* e *Max*.
+
+ Você deve ver os valores que configurou aparecendo no console. Altere o *Value* ou as configurações de *Random* para ver o valor mudar.
+
+ ```output
+ (.venv) ➜ temperature-sensor python app.py
+ Temperature 28.25°C
+ Temperature 30.71°C
+ Temperature 25.17°C
+ ```
+
+> 💁 Você pode encontrar este código na pasta [code-temperature/virtual-device](../../../../../2-farm/lessons/1-predict-plant-growth/code-temperature/virtual-device).
+
+😀 Seu programa do sensor de temperatura foi um sucesso!
+
+---
+
+**Aviso Legal**:
+Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.
\ No newline at end of file
diff --git a/translations/br/2-farm/lessons/1-predict-plant-growth/wio-terminal-temp-publish.md b/translations/br/2-farm/lessons/1-predict-plant-growth/wio-terminal-temp-publish.md
new file mode 100644
index 00000000..054e4584
--- /dev/null
+++ b/translations/br/2-farm/lessons/1-predict-plant-growth/wio-terminal-temp-publish.md
@@ -0,0 +1,82 @@
+
+# Publicar temperatura - Wio Terminal
+
+Nesta parte da lição, você irá publicar os valores de temperatura detectados pelo Wio Terminal via MQTT para que possam ser usados posteriormente no cálculo de GDD.
+
+## Publicar a temperatura
+
+Depois que a temperatura for lida, ela pode ser publicada via MQTT para algum código 'servidor' que irá ler os valores e armazená-los, prontos para serem usados no cálculo de GDD. Microcontroladores não leem o horário da Internet nem acompanham o tempo com um relógio em tempo real por padrão; o dispositivo precisa ser programado para isso, assumindo que possui o hardware necessário.
+
+Para simplificar as coisas nesta lição, o horário não será enviado com os dados do sensor; em vez disso, ele pode ser adicionado pelo código do servidor mais tarde, quando as mensagens forem recebidas.
+
+### Tarefa
+
+Programe o dispositivo para publicar os dados de temperatura.
+
+1. Abra o projeto `temperature-sensor` do Wio Terminal.
+
+1. Repita os passos que você realizou na lição 4 para se conectar ao MQTT e enviar telemetria. Você usará o mesmo broker público do Mosquitto.
+
+ Os passos para isso são:
+
+ - Adicionar as bibliotecas Seeed WiFi e MQTT ao arquivo `.ini`
+ - Adicionar o arquivo de configuração e o código para conectar ao WiFi
+ - Adicionar o código para conectar ao broker MQTT
+ - Adicionar o código para publicar telemetria
+
+ > ⚠️ Consulte as [instruções para conectar ao MQTT](../../../1-getting-started/lessons/4-connect-internet/wio-terminal-mqtt.md) e as [instruções para enviar telemetria](../../../1-getting-started/lessons/4-connect-internet/wio-terminal-telemetry.md) da lição 4, se necessário.
+
+1. Certifique-se de que o `CLIENT_NAME` no arquivo de cabeçalho `config.h` reflete este projeto:
+
+ ```cpp
+ const string CLIENT_NAME = ID + "temperature_sensor_client";
+ ```
+
+1. Para a telemetria, em vez de enviar um valor de luz, envie o valor de temperatura lido do sensor DHT em uma propriedade no documento JSON chamada `temperature`, alterando a função `loop` no arquivo `main.cpp`:
+
+ ```cpp
+ float temp_hum_val[2] = {0};
+ dht.readTempAndHumidity(temp_hum_val);
+
+ DynamicJsonDocument doc(1024);
+ doc["temperature"] = temp_hum_val[1];
+ ```
+
+1. O valor da temperatura não precisa ser lido com muita frequência - ele não mudará muito em um curto período de tempo, então configure o `delay` na função `loop` para 10 minutos:
+
+ ```cpp
+ delay(10 * 60 * 1000);
+ ```
+
+ > 💁 A função `delay` recebe o tempo em milissegundos, então, para facilitar a leitura, o valor é passado como o resultado de um cálculo. 1.000ms em um segundo, 60s em um minuto, então 10 x (60s em um minuto) x (1.000ms em um segundo) resulta em um atraso de 10 minutos.
+
+1. Envie este código para o seu Wio Terminal e use o monitor serial para ver a temperatura sendo enviada ao broker MQTT.
+
+ ```output
+ --- Available filters and text transformations: colorize, debug, default, direct, hexlify, log2file, nocontrol, printable, send_on_enter, time
+ --- More details at http://bit.ly/pio-monitor-filters
+ --- Miniterm on /dev/cu.usbmodem1201 9600,8,N,1 ---
+ --- Quit: Ctrl+C | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H ---
+ Connecting to WiFi..
+ Connected!
+ Attempting MQTT connection...connected
+ Sending telemetry {"temperature":25}
+ Sending telemetry {"temperature":25}
+ ```
+
+> 💁 Você pode encontrar este código na pasta [code-publish-temperature/wio-terminal](../../../../../2-farm/lessons/1-predict-plant-growth/code-publish-temperature/wio-terminal).
+
+😀 Você publicou com sucesso a temperatura como telemetria do seu dispositivo.
+
+---
+
+**Aviso Legal**:
+Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte oficial. Para informações críticas, recomenda-se a tradução profissional feita por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.
\ No newline at end of file
diff --git a/translations/br/2-farm/lessons/1-predict-plant-growth/wio-terminal-temp.md b/translations/br/2-farm/lessons/1-predict-plant-growth/wio-terminal-temp.md
new file mode 100644
index 00000000..540f6836
--- /dev/null
+++ b/translations/br/2-farm/lessons/1-predict-plant-growth/wio-terminal-temp.md
@@ -0,0 +1,143 @@
+
+# Medir temperatura - Wio Terminal
+
+Nesta parte da lição, você adicionará um sensor de temperatura ao seu Wio Terminal e lerá os valores de temperatura dele.
+
+## Hardware
+
+O Wio Terminal precisa de um sensor de temperatura.
+
+O sensor que você usará é um [sensor de umidade e temperatura DHT11](https://www.seeedstudio.com/Grove-Temperature-Humidity-Sensor-DHT11.html), que combina 2 sensores em um único dispositivo. Este sensor é bastante popular, com vários modelos disponíveis comercialmente que combinam temperatura, umidade e, às vezes, pressão atmosférica. O componente do sensor de temperatura é um termistor de coeficiente de temperatura negativo (NTC), um termistor cuja resistência diminui à medida que a temperatura aumenta.
+
+Este é um sensor digital, portanto, possui um conversor ADC integrado para criar um sinal digital contendo os dados de temperatura e umidade que o microcontrolador pode ler.
+
+### Conectar o sensor de temperatura
+
+O sensor de temperatura Grove pode ser conectado à porta digital do Wio Terminal.
+
+#### Tarefa - conectar o sensor de temperatura
+
+Conecte o sensor de temperatura.
+
+
+
+1. Insira uma extremidade de um cabo Grove no conector do sensor de umidade e temperatura. Ele só se encaixará de uma maneira.
+
+1. Com o Wio Terminal desconectado do seu computador ou de outra fonte de energia, conecte a outra extremidade do cabo Grove ao conector Grove do lado direito do Wio Terminal, olhando para a tela. Este é o conector mais distante do botão de energia.
+
+
+
+## Programar o sensor de temperatura
+
+Agora o Wio Terminal pode ser programado para usar o sensor de temperatura conectado.
+
+### Tarefa - programar o sensor de temperatura
+
+Programe o dispositivo.
+
+1. Crie um novo projeto para o Wio Terminal usando o PlatformIO. Chame este projeto de `temperature-sensor`. Adicione código na função `setup` para configurar a porta serial.
+
+ > ⚠️ Você pode consultar [as instruções para criar um projeto PlatformIO no projeto 1, lição 1, se necessário](../../../1-getting-started/lessons/1-introduction-to-iot/wio-terminal.md#create-a-platformio-project).
+
+1. Adicione uma dependência de biblioteca para a biblioteca Seeed Grove Humidity and Temperature sensor no arquivo `platformio.ini` do projeto:
+
+ ```ini
+ lib_deps =
+ seeed-studio/Grove Temperature And Humidity Sensor @ 1.0.1
+ ```
+
+ > ⚠️ Você pode consultar [as instruções para adicionar bibliotecas a um projeto PlatformIO no projeto 1, lição 4, se necessário](../../../1-getting-started/lessons/4-connect-internet/wio-terminal-mqtt.md#install-the-wifi-and-mqtt-arduino-libraries).
+
+1. Adicione as seguintes diretivas `#include` ao topo do arquivo, abaixo do `#include ` existente:
+
+ ```cpp
+ #include
+ #include
+ ```
+
+ Isso importa os arquivos necessários para interagir com o sensor. O arquivo de cabeçalho `DHT.h` contém o código para o próprio sensor, e adicionar o cabeçalho `SPI.h` garante que o código necessário para se comunicar com o sensor seja vinculado quando o aplicativo for compilado.
+
+1. Antes da função `setup`, declare o sensor DHT:
+
+ ```cpp
+ DHT dht(D0, DHT11);
+ ```
+
+ Isso declara uma instância da classe `DHT` que gerencia o sensor de **U**midade e **T**emperatura **D**igital. Ele está conectado à porta `D0`, o conector Grove do lado direito do Wio Terminal. O segundo parâmetro informa ao código que o sensor usado é o *DHT11* - a biblioteca que você está usando suporta outras variantes deste sensor.
+
+1. Na função `setup`, adicione código para configurar a conexão serial:
+
+ ```cpp
+ void setup()
+ {
+ Serial.begin(9600);
+
+ while (!Serial)
+ ; // Wait for Serial to be ready
+
+ delay(1000);
+ }
+ ```
+
+1. No final da função `setup`, após o último `delay`, adicione uma chamada para iniciar o sensor DHT:
+
+ ```cpp
+ dht.begin();
+ ```
+
+1. Na função `loop`, adicione código para chamar o sensor e imprimir a temperatura na porta serial:
+
+ ```cpp
+ void loop()
+ {
+ float temp_hum_val[2] = {0};
+ dht.readTempAndHumidity(temp_hum_val);
+ Serial.print("Temperature: ");
+ Serial.print(temp_hum_val[1]);
+ Serial.println ("°C");
+
+ delay(10000);
+ }
+ ```
+
+ Este código declara um array vazio de 2 floats e o passa para a chamada `readTempAndHumidity` na instância `DHT`. Esta chamada preenche o array com 2 valores - a umidade vai para o item 0 do array (lembre-se de que em C++ os arrays são baseados em 0, então o item 0 é o 'primeiro' item do array), e a temperatura vai para o item 1.
+
+ A temperatura é lida do item 1 do array e impressa na porta serial.
+
+ > 🇺🇸 A temperatura é lida em Celsius. Para os americanos, para converter isso para Fahrenheit, divida o valor em Celsius por 5, depois multiplique por 9 e, em seguida, adicione 32. Por exemplo, uma leitura de temperatura de 20°C se torna ((20/5)*9) + 32 = 68°F.
+
+1. Compile e envie o código para o Wio Terminal.
+
+ > ⚠️ Você pode consultar [as instruções para criar um projeto PlatformIO no projeto 1, lição 1, se necessário](../../../1-getting-started/lessons/1-introduction-to-iot/wio-terminal.md#write-the-hello-world-app).
+
+1. Depois de enviado, você pode monitorar a temperatura usando o monitor serial:
+
+ ```output
+ > Executing task: platformio device monitor <
+
+ --- Available filters and text transformations: colorize, debug, default, direct, hexlify, log2file, nocontrol, printable, send_on_enter, time
+ --- More details at http://bit.ly/pio-monitor-filters
+ --- Miniterm on /dev/cu.usbmodem1201 9600,8,N,1 ---
+ --- Quit: Ctrl+C | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H ---
+ Temperature: 25.00°C
+ Temperature: 25.00°C
+ Temperature: 25.00°C
+ Temperature: 24.00°C
+ ```
+
+> 💁 Você pode encontrar este código na pasta [code-temperature/wio-terminal](../../../../../2-farm/lessons/1-predict-plant-growth/code-temperature/wio-terminal).
+
+😀 Seu programa do sensor de temperatura foi um sucesso!
+
+---
+
+**Aviso Legal**:
+Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.
\ No newline at end of file
diff --git a/translations/br/2-farm/lessons/2-detect-soil-moisture/README.md b/translations/br/2-farm/lessons/2-detect-soil-moisture/README.md
new file mode 100644
index 00000000..95d2ed88
--- /dev/null
+++ b/translations/br/2-farm/lessons/2-detect-soil-moisture/README.md
@@ -0,0 +1,169 @@
+
+C, pronunciado *I-quadrado-C*, é um protocolo multi-controlador e multi-periférico, onde qualquer dispositivo conectado pode atuar como controlador ou periférico, comunicando-se através do barramento I²C (o nome para um sistema de comunicação que transfere dados). Os dados são enviados como pacotes endereçados, com cada pacote contendo o endereço do dispositivo conectado ao qual se destina.
+
+> 💁 Este modelo costumava ser referido como mestre/escravo, mas essa terminologia está sendo abandonada devido à sua associação com a escravidão. A [Open Source Hardware Association adotou controlador/periférico](https://www.oshwa.org/a-resolution-to-redefine-spi-signal-names/), mas você ainda pode encontrar referências à terminologia antiga.
+
+Os dispositivos possuem um endereço que é usado quando se conectam ao barramento I²C, geralmente codificado no próprio dispositivo. Por exemplo, cada tipo de sensor Grove da Seeed tem o mesmo endereço, então todos os sensores de luz têm o mesmo endereço, todos os botões têm o mesmo endereço, que é diferente do endereço do sensor de luz. Alguns dispositivos possuem maneiras de alterar o endereço, mudando configurações de jumpers ou soldando pinos juntos.
+
+O I²C possui um barramento composto por 2 fios principais, além de 2 fios de alimentação:
+
+| Fio | Nome | Descrição |
+| ---- | --------- | ----------- |
+| SDA | Dados Seriais | Este fio é usado para enviar dados entre dispositivos. |
+| SCL | Clock Serial | Este fio envia um sinal de clock em uma taxa definida pelo controlador. |
+| VCC | Coletor Comum de Voltagem | A fonte de alimentação para os dispositivos. Este fio está conectado aos fios SDA e SCL para fornecer energia por meio de um resistor pull-up que desliga o sinal quando nenhum dispositivo é o controlador. |
+| GND | Terra | Fornece um terra comum para o circuito elétrico. |
+
+
+
+Para enviar dados, um dispositivo emitirá uma condição de início para indicar que está pronto para enviar dados. Ele então se tornará o controlador. O controlador envia o endereço do dispositivo com o qual deseja se comunicar, juntamente com a informação se deseja ler ou escrever dados. Após a transmissão dos dados, o controlador envia uma condição de parada para indicar que terminou. Depois disso, outro dispositivo pode se tornar o controlador e enviar ou receber dados.
+
+2C tem limites de velocidade, com 3 modos diferentes operando em velocidades fixas. O mais rápido é o modo de Alta Velocidade, com uma velocidade máxima de 3,4 Mbps (megabits por segundo), embora poucos dispositivos suportem essa velocidade. O Raspberry Pi, por exemplo, é limitado ao modo rápido a 400 Kbps (kilobits por segundo). O modo padrão opera a 100 Kbps.
+
+> 💁 Se você estiver usando um Raspberry Pi com um Grove Base Hat como seu hardware IoT, poderá ver vários soquetes I2C na placa que podem ser usados para se comunicar com sensores I2C. Sensores analógicos Grove também utilizam I2C com um ADC para enviar valores analógicos como dados digitais, então o sensor de luz que você usou simulou um pino analógico, com o valor enviado via I2C, já que o Raspberry Pi suporta apenas pinos digitais.
+
+### Receptor-transmissor assíncrono universal (UART)
+
+UART envolve circuitos físicos que permitem a comunicação entre dois dispositivos. Cada dispositivo possui 2 pinos de comunicação - transmissão (Tx) e recepção (Rx), com o pino Tx do primeiro dispositivo conectado ao pino Rx do segundo, e o pino Tx do segundo dispositivo conectado ao pino Rx do primeiro. Isso permite o envio de dados em ambas as direções.
+
+* O Dispositivo 1 transmite dados do seu pino Tx, que são recebidos pelo Dispositivo 2 no seu pino Rx.
+* O Dispositivo 1 recebe dados no seu pino Rx que são transmitidos pelo Dispositivo 2 a partir do seu pino Tx.
+
+
+
+> 🎓 Os dados são enviados um bit por vez, e isso é conhecido como comunicação *serial*. A maioria dos sistemas operacionais e microcontroladores possuem *portas seriais*, ou seja, conexões que podem enviar e receber dados seriais disponíveis para o seu código.
+
+Dispositivos UART possuem uma [taxa de transmissão](https://wikipedia.org/wiki/Symbol_rate) (também conhecida como taxa de símbolos), que é a velocidade com que os dados serão enviados e recebidos em bits por segundo. Uma taxa de transmissão comum é 9.600, o que significa que 9.600 bits (0s e 1s) de dados são enviados a cada segundo.
+
+UART utiliza bits de início e parada - ou seja, envia um bit de início para indicar que está prestes a enviar um byte (8 bits) de dados, e um bit de parada após enviar os 8 bits.
+
+A velocidade do UART depende do hardware, mas mesmo as implementações mais rápidas não excedem 6,5 Mbps (megabits por segundo, ou milhões de bits, 0 ou 1, enviados por segundo).
+
+Você pode usar UART sobre pinos GPIO - é possível configurar um pino como Tx e outro como Rx, e então conectá-los a outro dispositivo.
+
+> 💁 Se você estiver usando um Raspberry Pi com um Grove Base Hat como seu hardware IoT, poderá ver um soquete UART na placa que pode ser usado para se comunicar com sensores que utilizam o protocolo UART.
+
+### Interface Periférica Serial (SPI)
+
+SPI é projetada para comunicação em curtas distâncias, como em um microcontrolador para se comunicar com um dispositivo de armazenamento, como memória flash. Ela é baseada em um modelo controlador/periférico, com um único controlador (geralmente o processador do dispositivo IoT) interagindo com múltiplos periféricos. O controlador gerencia tudo, selecionando um periférico e enviando ou solicitando dados.
+
+> 💁 Assim como no I2C, os termos controlador e periférico são mudanças recentes, então você pode encontrar os termos antigos ainda sendo usados.
+
+Controladores SPI utilizam 3 fios, junto com 1 fio extra por periférico. Periféricos utilizam 4 fios. Esses fios são:
+
+| Fio | Nome | Descrição |
+| ---- | --------- | ----------- |
+| COPI | Saída do Controlador, Entrada do Periférico | Este fio é usado para enviar dados do controlador para o periférico. |
+| CIPO | Entrada do Controlador, Saída do Periférico | Este fio é usado para enviar dados do periférico para o controlador. |
+| SCLK | Relógio Serial | Este fio envia um sinal de relógio em uma taxa definida pelo controlador. |
+| CS | Seleção de Chip | O controlador possui múltiplos fios, um por periférico, e cada fio conecta ao fio CS no periférico correspondente. |
+
+
+
+O fio CS é usado para ativar um periférico por vez, comunicando-se pelos fios COPI e CIPO. Quando o controlador precisa mudar de periférico, ele desativa o fio CS conectado ao periférico ativo e ativa o fio conectado ao periférico com o qual deseja se comunicar.
+
+SPI é *full-duplex*, o que significa que o controlador pode enviar e receber dados ao mesmo tempo do mesmo periférico usando os fios COPI e CIPO. SPI utiliza um sinal de relógio no fio SCLK para manter os dispositivos sincronizados, então, ao contrário do envio direto via UART, não precisa de bits de início e parada.
+
+Não há limites de velocidade definidos para SPI, com implementações frequentemente capazes de transmitir múltiplos megabytes de dados por segundo.
+
+Kits de desenvolvimento IoT frequentemente suportam SPI em alguns dos pinos GPIO. Por exemplo, em um Raspberry Pi, você pode usar os pinos GPIO 19, 21, 23, 24 e 26 para SPI.
+
+### Sem fio
+
+Alguns sensores podem se comunicar por protocolos sem fio padrão, como Bluetooth (principalmente Bluetooth Low Energy, ou BLE), LoRaWAN (um protocolo de rede de baixa potência de **Lo**nga **Ra**nge) ou WiFi. Isso permite sensores remotos que não estão fisicamente conectados a um dispositivo IoT.
+
+Um exemplo disso são sensores comerciais de umidade do solo. Eles medem a umidade do solo em um campo e enviam os dados via LoRaWAN para um dispositivo central, que processa os dados ou os envia pela Internet. Isso permite que o sensor esteja distante do dispositivo IoT que gerencia os dados, reduzindo o consumo de energia e a necessidade de grandes redes WiFi ou cabos longos.
+
+BLE é popular para sensores avançados, como rastreadores de fitness usados no pulso. Esses dispositivos combinam múltiplos sensores e enviam os dados para um dispositivo IoT, como seu telefone, via BLE.
+
+✅ Você tem algum sensor Bluetooth com você, em sua casa ou na sua escola? Eles podem incluir sensores de temperatura, sensores de ocupação, rastreadores de dispositivos e dispositivos de fitness.
+
+Uma maneira popular para dispositivos comerciais se conectarem é o Zigbee. O Zigbee utiliza WiFi para formar redes mesh entre dispositivos, onde cada dispositivo se conecta ao maior número possível de dispositivos próximos, formando uma grande quantidade de conexões, como uma teia de aranha. Quando um dispositivo deseja enviar uma mensagem para a Internet, ele pode enviá-la para os dispositivos mais próximos, que então a encaminham para outros dispositivos próximos e assim por diante, até alcançar um coordenador e ser enviada para a Internet.
+
+> 🐝 O nome Zigbee refere-se à dança de abanar das abelhas após retornarem à colmeia.
+
+## Medir os níveis de umidade do solo
+
+Você pode medir o nível de umidade do solo usando um sensor de umidade do solo, um dispositivo IoT e uma planta doméstica ou um pedaço de solo próximo.
+
+### Tarefa - medir a umidade do solo
+
+Siga o guia relevante para medir a umidade do solo usando seu dispositivo IoT:
+
+* [Arduino - Wio Terminal](wio-terminal-soil-moisture.md)
+* [Computador de placa única - Raspberry Pi](pi-soil-moisture.md)
+* [Computador de placa única - Dispositivo virtual](virtual-device-soil-moisture.md)
+
+## Calibração de sensores
+
+Sensores dependem da medição de propriedades elétricas, como resistência ou capacitância.
+
+> 🎓 Resistência, medida em ohms (Ω), é a oposição à corrente elétrica que flui através de algo. Quando uma tensão é aplicada a um material, a quantidade de corrente que passa por ele depende da resistência do material. Você pode ler mais na [página de resistência elétrica na Wikipedia](https://wikipedia.org/wiki/Electrical_resistance_and_conductance).
+
+> 🎓 Capacitância, medida em farads (F), é a capacidade de um componente ou circuito de coletar e armazenar energia elétrica. Você pode ler mais sobre capacitância na [página de capacitância na Wikipedia](https://wikipedia.org/wiki/Capacitance).
+
+Essas medições nem sempre são úteis - imagine um sensor de temperatura que fornecesse uma medição de 22,5 kΩ! Em vez disso, o valor medido precisa ser convertido em uma unidade útil por meio da calibração - ou seja, associar os valores medidos à quantidade medida para permitir que novas medições sejam convertidas para a unidade correta.
+
+Alguns sensores vêm pré-calibrados. Por exemplo, o sensor de temperatura que você usou na última lição já estava calibrado para retornar uma medição de temperatura em °C. Na fábrica, o primeiro sensor criado seria exposto a uma faixa de temperaturas conhecidas e a resistência medida. Isso seria então usado para construir um cálculo que pode converter do valor medido em Ω (a unidade de resistência) para °C.
+
+> 💁 A fórmula para calcular a resistência a partir da temperatura é chamada de [equação de Steinhart–Hart](https://wikipedia.org/wiki/Steinhart–Hart_equation).
+
+### Calibração do sensor de umidade do solo
+
+A umidade do solo é medida usando o conteúdo de água gravimétrico ou volumétrico.
+
+* Gravimétrico é o peso da água em uma unidade de peso do solo, medido como o número de quilogramas de água por quilograma de solo seco.
+* Volumétrico é o volume de água em uma unidade de volume do solo, medido como o número de metros cúbicos de água por metro cúbico de solo seco.
+
+> 🇺🇸 Para os americanos, devido à consistência das unidades, essas medições podem ser feitas em libras em vez de quilogramas ou pés cúbicos em vez de metros cúbicos.
+
+Sensores de umidade do solo medem resistência elétrica ou capacitância - isso não apenas varia com a umidade do solo, mas também com o tipo de solo, já que os componentes do solo podem alterar suas características elétricas. Idealmente, os sensores devem ser calibrados - ou seja, realizar leituras do sensor e compará-las com medições obtidas por um método mais científico. Por exemplo, um laboratório pode calcular a umidade gravimétrica do solo usando amostras de um campo específico algumas vezes por ano, e esses números podem ser usados para calibrar o sensor, associando a leitura do sensor à umidade gravimétrica do solo.
+
+
+
+O gráfico acima mostra como calibrar um sensor. A tensão é capturada para uma amostra de solo que é então medida em um laboratório, comparando o peso úmido ao peso seco (medindo o peso úmido, depois secando no forno e medindo o peso seco). Após algumas leituras, os dados podem ser plotados em um gráfico e uma linha ajustada aos pontos. Essa linha pode então ser usada para converter leituras do sensor de umidade do solo feitas por um dispositivo IoT em medições reais de umidade do solo.
+
+💁 Para sensores resistivos de umidade do solo, a tensão aumenta à medida que a umidade do solo aumenta. Para sensores capacitivos de umidade do solo, a tensão diminui à medida que a umidade do solo aumenta, então os gráficos para esses sensores teriam uma inclinação descendente, não ascendente.
+
+
+
+O gráfico acima mostra uma leitura de tensão de um sensor de umidade do solo e, ao seguir essa leitura até a linha no gráfico, a umidade real do solo pode ser calculada.
+
+Essa abordagem significa que o agricultor só precisa obter algumas medições laboratoriais para um campo, e então pode usar dispositivos IoT para medir a umidade do solo - acelerando drasticamente o tempo necessário para obter medições.
+
+---
+
+## 🚀 Desafio
+
+Sensores resistivos e capacitivos de umidade do solo possuem várias diferenças. Quais são essas diferenças, e qual tipo (se houver) é o melhor para um agricultor usar? Essa resposta muda entre países em desenvolvimento e desenvolvidos?
+
+## Questionário pós-aula
+
+[Questionário pós-aula](https://black-meadow-040d15503.1.azurestaticapps.net/quiz/12)
+
+## Revisão e Autoestudo
+
+Leia sobre o hardware e os protocolos usados por sensores e atuadores:
+
+* [Página da Wikipedia sobre GPIO](https://wikipedia.org/wiki/General-purpose_input/output)
+* [Página da Wikipedia sobre UART](https://wikipedia.org/wiki/Universal_asynchronous_receiver-transmitter)
+* [Página da Wikipedia sobre SPI](https://wikipedia.org/wiki/Serial_Peripheral_Interface)
+* [Página da Wikipedia sobre I2C](https://wikipedia.org/wiki/I²C)
+* [Página da Wikipedia sobre Zigbee](https://wikipedia.org/wiki/Zigbee)
+
+## Tarefa
+
+[Calibre seu sensor](assignment.md)
+
+---
+
+**Aviso Legal**:
+Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.
\ No newline at end of file
diff --git a/translations/br/2-farm/lessons/2-detect-soil-moisture/assignment.md b/translations/br/2-farm/lessons/2-detect-soil-moisture/assignment.md
new file mode 100644
index 00000000..f3a995ef
--- /dev/null
+++ b/translations/br/2-farm/lessons/2-detect-soil-moisture/assignment.md
@@ -0,0 +1,63 @@
+
+# Calibre seu sensor
+
+## Instruções
+
+Nesta lição, você coletou leituras do sensor de umidade do solo, medidas como valores de 0 a 1023. Para converter esses valores em leituras reais de umidade do solo, é necessário calibrar o sensor. Você pode fazer isso coletando amostras de solo, medindo a umidade gravimétrica do solo a partir dessas amostras.
+
+Será necessário repetir esses passos várias vezes para obter as leituras necessárias, com diferentes níveis de umidade do solo a cada vez.
+
+1. Faça uma leitura de umidade do solo usando o sensor de umidade do solo. Anote essa leitura.
+
+1. Pegue uma amostra do solo e pese-a. Anote esse peso.
+
+1. Seque o solo - um forno aquecido a 110°C (230°F) por algumas horas é a melhor opção. Você também pode secá-lo ao sol ou colocá-lo em um local quente e seco até que o solo esteja completamente seco. Ele deve ficar pulverulento e solto.
+
+ > 💁 Em um laboratório, para obter resultados mais precisos, você deve secar o solo em um forno por 48-72 horas. Se sua escola tiver fornos de secagem, veja se é possível utilizá-los para secar por mais tempo. Quanto mais tempo, mais seco estará o solo e mais precisos serão os resultados.
+
+1. Pese o solo novamente.
+
+ > 🔥 Se você secou o solo em um forno, certifique-se de que ele esfriou antes de pesá-lo!
+
+A umidade gravimétrica do solo é calculada como:
+
+
+
+* W
+- o peso do solo úmido
+* W
+- o peso do solo seco
+
+Por exemplo, suponha que você tenha uma amostra de solo que pesa 212g úmida e 197g seca.
+
+
+
+* W = 212g
+* W = 197g
+* 212 - 197 = 15
+* 15 / 197 = 0,076
+* 0,076 * 100 = 7,6%
+
+Neste exemplo, o solo tem uma umidade gravimétrica de 7,6%.
+
+Depois de obter as leituras de pelo menos 3 amostras, trace um gráfico da porcentagem de umidade do solo em relação à leitura do sensor de umidade do solo e adicione uma linha que melhor se ajuste aos pontos. Você pode então usar esse gráfico para calcular a umidade gravimétrica do solo para uma leitura específica do sensor, lendo o valor na linha.
+
+## Rubrica
+
+| Critério | Exemplar | Adequado | Precisa de Melhorias |
+| -------- | --------- | -------- | -------------------- |
+| Coletar dados de calibração | Captura pelo menos 3 amostras de calibração | Captura pelo menos 2 amostras de calibração | Captura pelo menos 1 amostra de calibração |
+| Fazer uma leitura calibrada | Consegue traçar o gráfico de calibração e fazer uma leitura do sensor, convertendo-a em umidade gravimétrica do solo | Consegue traçar o gráfico de calibração | Não consegue traçar o gráfico |
+
+---
+
+**Aviso Legal**:
+Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte oficial. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.
\ No newline at end of file
diff --git a/translations/br/2-farm/lessons/2-detect-soil-moisture/pi-soil-moisture.md b/translations/br/2-farm/lessons/2-detect-soil-moisture/pi-soil-moisture.md
new file mode 100644
index 00000000..2818a4ef
--- /dev/null
+++ b/translations/br/2-farm/lessons/2-detect-soil-moisture/pi-soil-moisture.md
@@ -0,0 +1,108 @@
+
+# Medir a umidade do solo - Raspberry Pi
+
+Nesta parte da lição, você adicionará um sensor capacitivo de umidade do solo ao seu Raspberry Pi e lerá os valores dele.
+
+## Hardware
+
+O Raspberry Pi precisa de um sensor capacitivo de umidade do solo.
+
+O sensor que você usará é um [Sensor Capacitivo de Umidade do Solo](https://www.seeedstudio.com/Grove-Capacitive-Moisture-Sensor-Corrosion-Resistant.html), que mede a umidade do solo detectando a capacitância do solo, uma propriedade que muda conforme a umidade do solo varia. À medida que a umidade do solo aumenta, a voltagem diminui.
+
+Este é um sensor analógico, então ele usa um pino analógico e o conversor ADC de 10 bits no Grove Base Hat do Raspberry Pi para converter a voltagem em um sinal digital de 1 a 1.023. Este sinal é então enviado via I²C pelos pinos GPIO do Raspberry Pi.
+
+### Conectar o sensor de umidade do solo
+
+O sensor de umidade do solo Grove pode ser conectado ao Raspberry Pi.
+
+#### Tarefa - conectar o sensor de umidade do solo
+
+Conecte o sensor de umidade do solo.
+
+
+
+1. Insira uma extremidade de um cabo Grove no conector do sensor de umidade do solo. Ele só encaixará de uma maneira.
+
+1. Com o Raspberry Pi desligado, conecte a outra extremidade do cabo Grove ao conector analógico marcado como **A0** no Grove Base Hat conectado ao Raspberry Pi. Este conector é o segundo da direita, na fileira de conectores ao lado dos pinos GPIO.
+
+
+
+1. Insira o sensor de umidade do solo no solo. Ele possui uma "linha de posição máxima" - uma linha branca atravessando o sensor. Insira o sensor até essa linha, mas não ultrapasse.
+
+
+
+## Programar o sensor de umidade do solo
+
+Agora o Raspberry Pi pode ser programado para usar o sensor de umidade do solo conectado.
+
+### Tarefa - programar o sensor de umidade do solo
+
+Programe o dispositivo.
+
+1. Ligue o Raspberry Pi e aguarde a inicialização.
+
+1. Abra o VS Code, seja diretamente no Raspberry Pi ou conectando via a extensão Remote SSH.
+
+ > ⚠️ Você pode consultar [as instruções para configurar e abrir o VS Code no nightlight - lição 1, se necessário](../../../1-getting-started/lessons/1-introduction-to-iot/pi.md).
+
+1. No terminal, crie uma nova pasta no diretório home do usuário `pi` chamada `soil-moisture-sensor`. Crie um arquivo nesta pasta chamado `app.py`.
+
+1. Abra esta pasta no VS Code.
+
+1. Adicione o seguinte código ao arquivo `app.py` para importar algumas bibliotecas necessárias:
+
+ ```python
+ import time
+ from grove.adc import ADC
+ ```
+
+ A instrução `import time` importa o módulo `time`, que será usado mais tarde nesta tarefa.
+
+ A instrução `from grove.adc import ADC` importa o `ADC` das bibliotecas Python do Grove. Esta biblioteca contém código para interagir com o conversor analógico-digital no Grove Base Hat e ler voltagens de sensores analógicos.
+
+1. Adicione o seguinte código abaixo para criar uma instância da classe `ADC`:
+
+ ```python
+ adc = ADC()
+ ```
+
+1. Adicione um loop infinito que leia o ADC no pino A0 e escreva o resultado no console. Este loop pode então aguardar 10 segundos entre as leituras.
+
+ ```python
+ while True:
+ soil_moisture = adc.read(0)
+ print("Soil moisture:", soil_moisture)
+
+ time.sleep(10)
+ ```
+
+1. Execute o aplicativo Python. Você verá as medições de umidade do solo sendo exibidas no console. Adicione um pouco de água ao solo ou remova o sensor do solo e veja o valor mudar.
+
+ ```output
+ pi@raspberrypi:~/soil-moisture-sensor $ python3 app.py
+ Soil moisture: 615
+ Soil moisture: 612
+ Soil moisture: 498
+ Soil moisture: 493
+ Soil moisture: 490
+ Soil Moisture: 388
+ ```
+
+ No exemplo de saída acima, você pode ver a voltagem cair à medida que a água é adicionada.
+
+> 💁 Você pode encontrar este código na pasta [code/pi](../../../../../2-farm/lessons/2-detect-soil-moisture/code/pi).
+
+😀 Seu programa para o sensor de umidade do solo foi um sucesso!
+
+---
+
+**Aviso Legal**:
+Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte oficial. Para informações críticas, recomenda-se a tradução profissional feita por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.
\ No newline at end of file
diff --git a/translations/br/2-farm/lessons/2-detect-soil-moisture/virtual-device-soil-moisture.md b/translations/br/2-farm/lessons/2-detect-soil-moisture/virtual-device-soil-moisture.md
new file mode 100644
index 00000000..e2fba577
--- /dev/null
+++ b/translations/br/2-farm/lessons/2-detect-soil-moisture/virtual-device-soil-moisture.md
@@ -0,0 +1,123 @@
+
+# Medir a umidade do solo - Hardware IoT Virtual
+
+Nesta parte da lição, você adicionará um sensor capacitivo de umidade do solo ao seu dispositivo IoT virtual e lerá os valores dele.
+
+## Hardware Virtual
+
+O dispositivo IoT virtual usará um sensor capacitivo de umidade do solo simulado da Grove. Isso mantém este laboratório semelhante ao uso de um Raspberry Pi com um sensor físico capacitivo de umidade do solo da Grove.
+
+Em um dispositivo IoT físico, o sensor de umidade do solo seria um sensor capacitivo que mede a umidade do solo detectando a capacitância do solo, uma propriedade que muda conforme a umidade do solo varia. À medida que a umidade do solo aumenta, a voltagem diminui.
+
+Este é um sensor analógico, então utiliza um ADC simulado de 10 bits para reportar um valor de 1 a 1.023.
+
+### Adicionar o sensor de umidade do solo ao CounterFit
+
+Para usar um sensor virtual de umidade do solo, você precisa adicioná-lo ao aplicativo CounterFit.
+
+#### Tarefa - Adicionar o sensor de umidade do solo ao CounterFit
+
+Adicione o sensor de umidade do solo ao aplicativo CounterFit.
+
+1. Crie um novo aplicativo Python no seu computador em uma pasta chamada `soil-moisture-sensor` com um único arquivo chamado `app.py`, um ambiente virtual Python, e adicione os pacotes pip do CounterFit.
+
+ > ⚠️ Você pode consultar [as instruções para criar e configurar um projeto Python no CounterFit na lição 1, se necessário](../../../1-getting-started/lessons/1-introduction-to-iot/virtual-device.md).
+
+1. Certifique-se de que o aplicativo web do CounterFit esteja em execução.
+
+1. Crie um sensor de umidade do solo:
+
+ 1. Na caixa *Create sensor* no painel *Sensors*, abra o menu suspenso *Sensor type* e selecione *Soil Moisture*.
+
+ 1. Deixe a opção *Units* configurada como *NoUnits*.
+
+ 1. Certifique-se de que o *Pin* esteja configurado como *0*.
+
+ 1. Selecione o botão **Add** para criar o sensor *Soil Moisture* no Pin 0.
+
+ 
+
+ O sensor de umidade do solo será criado e aparecerá na lista de sensores.
+
+ 
+
+## Programar o aplicativo do sensor de umidade do solo
+
+Agora o aplicativo do sensor de umidade do solo pode ser programado usando os sensores do CounterFit.
+
+### Tarefa - Programar o aplicativo do sensor de umidade do solo
+
+Programe o aplicativo do sensor de umidade do solo.
+
+1. Certifique-se de que o aplicativo `soil-moisture-sensor` esteja aberto no VS Code.
+
+1. Abra o arquivo `app.py`.
+
+1. Adicione o seguinte código ao início do `app.py` para conectar o aplicativo ao CounterFit:
+
+ ```python
+ from counterfit_connection import CounterFitConnection
+ CounterFitConnection.init('127.0.0.1', 5000)
+ ```
+
+1. Adicione o seguinte código ao arquivo `app.py` para importar algumas bibliotecas necessárias:
+
+ ```python
+ import time
+ from counterfit_shims_grove.adc import ADC
+ ```
+
+ A instrução `import time` importa o módulo `time`, que será usado mais tarde nesta tarefa.
+
+ A instrução `from counterfit_shims_grove.adc import ADC` importa a classe `ADC` para interagir com um conversor analógico-digital virtual que pode se conectar a um sensor do CounterFit.
+
+1. Adicione o seguinte código abaixo para criar uma instância da classe `ADC`:
+
+ ```python
+ adc = ADC()
+ ```
+
+1. Adicione um loop infinito que leia o ADC no pino 0 e escreva o resultado no console. Esse loop pode então aguardar 10 segundos entre as leituras.
+
+ ```python
+ while True:
+ soil_moisture = adc.read(0)
+ print("Soil moisture:", soil_moisture)
+
+ time.sleep(10)
+ ```
+
+1. No aplicativo CounterFit, altere o valor do sensor de umidade do solo que será lido pelo aplicativo. Você pode fazer isso de duas maneiras:
+
+ * Insira um número na caixa *Value* do sensor de umidade do solo e selecione o botão **Set**. O número inserido será o valor retornado pelo sensor.
+
+ * Marque a caixa *Random* e insira um valor *Min* e *Max*, depois selecione o botão **Set**. Toda vez que o sensor for lido, ele retornará um número aleatório entre *Min* e *Max*.
+
+1. Execute o aplicativo Python. Você verá as medições de umidade do solo sendo exibidas no console. Altere o *Value* ou as configurações de *Random* para observar a mudança nos valores.
+
+ ```output
+ (.venv) ➜ soil-moisture-sensor $ python app.py
+ Soil moisture: 615
+ Soil moisture: 612
+ Soil moisture: 498
+ Soil moisture: 493
+ Soil moisture: 490
+ Soil Moisture: 388
+ ```
+
+> 💁 Você pode encontrar este código na pasta [code/virtual-device](../../../../../2-farm/lessons/2-detect-soil-moisture/code/virtual-device).
+
+😀 Seu programa do sensor de umidade do solo foi um sucesso!
+
+---
+
+**Aviso Legal**:
+Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.
\ No newline at end of file
diff --git a/translations/br/2-farm/lessons/2-detect-soil-moisture/wio-terminal-soil-moisture.md b/translations/br/2-farm/lessons/2-detect-soil-moisture/wio-terminal-soil-moisture.md
new file mode 100644
index 00000000..4a6e6a69
--- /dev/null
+++ b/translations/br/2-farm/lessons/2-detect-soil-moisture/wio-terminal-soil-moisture.md
@@ -0,0 +1,117 @@
+
+# Medir a umidade do solo - Wio Terminal
+
+Nesta parte da lição, você adicionará um sensor capacitivo de umidade do solo ao seu Wio Terminal e lerá os valores dele.
+
+## Hardware
+
+O Wio Terminal precisa de um sensor capacitivo de umidade do solo.
+
+O sensor que você usará é um [Sensor Capacitivo de Umidade do Solo](https://www.seeedstudio.com/Grove-Capacitive-Moisture-Sensor-Corrosion-Resistant.html), que mede a umidade do solo detectando a capacitância do solo, uma propriedade que muda conforme a umidade do solo varia. À medida que a umidade do solo aumenta, a voltagem diminui.
+
+Este é um sensor analógico, então ele se conecta aos pinos analógicos do Wio Terminal, usando um ADC integrado para criar um valor de 0 a 1.023.
+
+### Conectar o sensor de umidade do solo
+
+O sensor de umidade do solo Grove pode ser conectado à porta analógica/digital configurável do Wio Terminal.
+
+#### Tarefa - conectar o sensor de umidade do solo
+
+Conecte o sensor de umidade do solo.
+
+
+
+1. Insira uma extremidade de um cabo Grove no conector do sensor de umidade do solo. Ele só encaixará de uma maneira.
+
+1. Com o Wio Terminal desconectado do seu computador ou de outra fonte de energia, conecte a outra extremidade do cabo Grove ao conector Grove do lado direito do Wio Terminal, olhando para a tela. Este é o conector mais distante do botão de energia.
+
+
+
+1. Insira o sensor de umidade do solo no solo. Ele possui uma 'linha de posição máxima' - uma linha branca atravessando o sensor. Insira o sensor até essa linha, mas não ultrapasse.
+
+
+
+1. Agora você pode conectar o Wio Terminal ao seu computador.
+
+## Programar o sensor de umidade do solo
+
+Agora o Wio Terminal pode ser programado para usar o sensor de umidade do solo conectado.
+
+### Tarefa - programar o sensor de umidade do solo
+
+Programe o dispositivo.
+
+1. Crie um novo projeto para o Wio Terminal usando o PlatformIO. Chame este projeto de `soil-moisture-sensor`. Adicione código na função `setup` para configurar a porta serial.
+
+ > ⚠️ Você pode consultar [as instruções para criar um projeto PlatformIO no projeto 1, lição 1, se necessário](../../../1-getting-started/lessons/1-introduction-to-iot/wio-terminal.md#create-a-platformio-project).
+
+1. Não há uma biblioteca para este sensor, mas você pode ler o pino analógico usando a função [`analogRead`](https://www.arduino.cc/reference/en/language/functions/analog-io/analogread/) integrada do Arduino. Comece configurando o pino analógico como entrada para que os valores possam ser lidos dele, adicionando o seguinte à função `setup`.
+
+ ```cpp
+ pinMode(A0, INPUT);
+ ```
+
+ Isso configura o pino `A0`, o pino combinado analógico/digital, como um pino de entrada do qual a voltagem pode ser lida.
+
+1. Adicione o seguinte à função `loop` para ler a voltagem deste pino:
+
+ ```cpp
+ int soil_moisture = analogRead(A0);
+ ```
+
+1. Abaixo deste código, adicione o seguinte código para imprimir o valor na porta serial:
+
+ ```cpp
+ Serial.print("Soil Moisture: ");
+ Serial.println(soil_moisture);
+ ```
+
+1. Por fim, adicione um atraso de 10 segundos no final:
+
+ ```cpp
+ delay(10000);
+ ```
+
+1. Compile e envie o código para o Wio Terminal.
+
+ > ⚠️ Você pode consultar [as instruções para criar um projeto PlatformIO no projeto 1, lição 1, se necessário](../../../1-getting-started/lessons/1-introduction-to-iot/wio-terminal.md#write-the-hello-world-app).
+
+1. Depois de enviado, você pode monitorar a umidade do solo usando o monitor serial. Adicione um pouco de água ao solo ou remova o sensor do solo e veja o valor mudar.
+
+ ```output
+ > Executing task: platformio device monitor <
+
+ --- Available filters and text transformations: colorize, debug, default, direct, hexlify, log2file, nocontrol, printable, send_on_enter, time
+ --- More details at http://bit.ly/pio-monitor-filters
+ --- Miniterm on /dev/cu.usbmodem1201 9600,8,N,1 ---
+ --- Quit: Ctrl+C | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H ---
+ Soil Moisture: 526
+ Soil Moisture: 529
+ Soil Moisture: 521
+ Soil Moisture: 494
+ Soil Moisture: 454
+ Soil Moisture: 456
+ Soil Moisture: 395
+ Soil Moisture: 388
+ Soil Moisture: 394
+ Soil Moisture: 391
+ ```
+
+ No exemplo de saída acima, você pode ver a voltagem cair à medida que a água é adicionada.
+
+> 💁 Você pode encontrar este código na pasta [code/wio-terminal](../../../../../2-farm/lessons/2-detect-soil-moisture/code/wio-terminal).
+
+😀 Seu programa para o sensor de umidade do solo foi um sucesso!
+
+---
+
+**Aviso Legal**:
+Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.
\ No newline at end of file
diff --git a/translations/br/2-farm/lessons/3-automated-plant-watering/README.md b/translations/br/2-farm/lessons/3-automated-plant-watering/README.md
new file mode 100644
index 00000000..1f073115
--- /dev/null
+++ b/translations/br/2-farm/lessons/3-automated-plant-watering/README.md
@@ -0,0 +1,314 @@
+
+# Irrigação automatizada de plantas
+
+
+
+> Ilustração por [Nitya Narasimhan](https://github.com/nitya). Clique na imagem para uma versão maior.
+
+Esta lição foi ensinada como parte da série [IoT para Iniciantes - Agricultura Digital](https://youtube.com/playlist?list=PLmsFUfdnGr3yCutmcVg6eAUEfsGiFXgcx) do [Microsoft Reactor](https://developer.microsoft.com/reactor/?WT.mc_id=academic-17441-jabenn).
+
+[](https://youtu.be/g9FfZwv9R58)
+
+## Quiz pré-aula
+
+[Quiz pré-aula](https://black-meadow-040d15503.1.azurestaticapps.net/quiz/13)
+
+## Introdução
+
+Na última lição, você aprendeu como monitorar a umidade do solo. Nesta lição, você aprenderá a construir os componentes principais de um sistema de irrigação automatizado que responde à umidade do solo. Também aprenderá sobre temporização - como sensores podem demorar para responder a mudanças e como atuadores podem levar tempo para alterar as propriedades medidas pelos sensores.
+
+Nesta lição, abordaremos:
+
+* [Controlar dispositivos de alta potência com um dispositivo IoT de baixa potência](../../../../../2-farm/lessons/3-automated-plant-watering)
+* [Controlar um relé](../../../../../2-farm/lessons/3-automated-plant-watering)
+* [Controlar sua planta via MQTT](../../../../../2-farm/lessons/3-automated-plant-watering)
+* [Temporização de sensores e atuadores](../../../../../2-farm/lessons/3-automated-plant-watering)
+* [Adicionar temporização ao servidor de controle da planta](../../../../../2-farm/lessons/3-automated-plant-watering)
+
+## Controlar dispositivos de alta potência com um dispositivo IoT de baixa potência
+
+Dispositivos IoT utilizam baixa voltagem. Embora isso seja suficiente para sensores e atuadores de baixa potência, como LEDs, é insuficiente para controlar equipamentos maiores, como uma bomba de água usada para irrigação. Mesmo bombas pequenas, que poderiam ser usadas para plantas domésticas, consomem muita corrente para um kit de desenvolvimento IoT e poderiam danificar a placa.
+
+> 🎓 Corrente, medida em Amperes (A), é a quantidade de eletricidade que passa por um circuito. A voltagem fornece o impulso, enquanto a corrente é a quantidade que é empurrada. Você pode ler mais sobre corrente na [página sobre corrente elétrica na Wikipedia](https://wikipedia.org/wiki/Electric_current).
+
+A solução para isso é conectar a bomba a uma fonte de energia externa e usar um atuador para ligar a bomba, semelhante a como você ligaria uma luz. É necessário apenas uma pequena quantidade de energia (na forma de energia do seu corpo) para seu dedo acionar um interruptor, conectando a luz à eletricidade da rede elétrica de 110v/240v.
+
+
+
+> 🎓 [Eletricidade da rede](https://wikipedia.org/wiki/Mains_electricity) refere-se à eletricidade fornecida a residências e empresas por meio de infraestrutura nacional em muitas partes do mundo.
+
+✅ Dispositivos IoT geralmente fornecem 3.3V ou 5V, com menos de 1 ampere (1A) de corrente. Compare isso com a eletricidade da rede, que geralmente é de 230V (120V na América do Norte e 100V no Japão) e pode fornecer energia para dispositivos que consomem até 30A.
+
+Existem vários atuadores que podem fazer isso, incluindo dispositivos mecânicos que você pode anexar a interruptores existentes para imitar um dedo ligando-os. O mais popular é o relé.
+
+### Relés
+
+Um relé é um interruptor eletromecânico que converte um sinal elétrico em um movimento mecânico que liga um interruptor. O núcleo de um relé é um eletroímã.
+
+> 🎓 [Eletroímãs](https://wikipedia.org/wiki/Electromagnet) são ímãs criados ao passar eletricidade por uma bobina de fio. Quando a eletricidade é ligada, a bobina se torna magnetizada. Quando a eletricidade é desligada, a bobina perde seu magnetismo.
+
+
+
+Em um relé, um circuito de controle alimenta o eletroímã. Quando o eletroímã está ligado, ele puxa uma alavanca que move um interruptor, fechando um par de contatos e completando um circuito de saída.
+
+
+
+Quando o circuito de controle está desligado, o eletroímã desliga, liberando a alavanca e abrindo os contatos, desligando o circuito de saída. Relés são atuadores digitais - um sinal alto para o relé o liga, um sinal baixo o desliga.
+
+O circuito de saída pode ser usado para alimentar hardware adicional, como um sistema de irrigação. O dispositivo IoT pode ligar o relé, completando o circuito de saída que alimenta o sistema de irrigação, e as plantas são regadas. O dispositivo IoT pode então desligar o relé, cortando a energia do sistema de irrigação e interrompendo a água.
+
+
+
+No vídeo acima, um relé é ligado. Um LED no relé acende para indicar que está ligado (algumas placas de relé possuem LEDs para indicar se o relé está ligado ou desligado), e a energia é enviada para a bomba, ligando-a e bombeando água para uma planta.
+
+> 💁 Relés também podem ser usados para alternar entre dois circuitos de saída, em vez de ligar ou desligar um. À medida que a alavanca se move, ela alterna um interruptor de completar um circuito de saída para completar outro circuito de saída, geralmente compartilhando uma conexão de energia comum ou conexão de terra comum.
+
+✅ Faça uma pesquisa: Existem vários tipos de relés, com diferenças como se o circuito de controle liga ou desliga o relé quando a energia é aplicada, ou múltiplos circuitos de saída. Descubra mais sobre esses diferentes tipos.
+
+Quando a alavanca se move, geralmente é possível ouvir o contato com o eletroímã com um clique bem definido.
+
+> 💁 Um relé pode ser conectado de forma que fazer a conexão realmente interrompa a energia para o relé, desligando-o, o que então envia energia para o relé, ligando-o novamente, e assim por diante. Isso significa que o relé clicará incrivelmente rápido, fazendo um ruído de zumbido. Foi assim que alguns dos primeiros campainhas elétricas funcionavam.
+
+### Alimentação do relé
+
+O eletroímã não precisa de muita energia para ativar e puxar a alavanca, podendo ser controlado usando a saída de 3.3V ou 5V de um kit de desenvolvimento IoT. O circuito de saída pode transportar muito mais energia, dependendo do relé, incluindo voltagem da rede elétrica ou até níveis de potência mais altos para uso industrial. Dessa forma, um kit de desenvolvimento IoT pode controlar um sistema de irrigação, desde uma pequena bomba para uma única planta até um sistema industrial massivo para uma fazenda comercial inteira.
+
+
+
+A imagem acima mostra um relé Grove. O circuito de controle conecta-se a um dispositivo IoT e liga ou desliga o relé usando 3.3V ou 5V. O circuito de saída possui dois terminais, qualquer um pode ser energia ou terra. O circuito de saída pode lidar com até 250V a 10A, suficiente para uma variedade de dispositivos alimentados pela rede elétrica. Você pode encontrar relés que suportam níveis de potência ainda mais altos.
+
+
+
+Na imagem acima, a energia é fornecida a uma bomba via relé. Há um fio vermelho conectando o terminal +5V de uma fonte de alimentação USB a um terminal do circuito de saída do relé, e outro fio vermelho conectando o outro terminal do circuito de saída à bomba. Um fio preto conecta a bomba ao terra na fonte de alimentação USB. Quando o relé é ligado, ele completa o circuito, enviando 5V para a bomba, ligando-a.
+
+## Controlar um relé
+
+Você pode controlar um relé a partir do seu kit de desenvolvimento IoT.
+
+### Tarefa - controlar um relé
+
+Siga o guia relevante para controlar um relé usando seu dispositivo IoT:
+
+* [Arduino - Wio Terminal](wio-terminal-relay.md)
+* [Computador de placa única - Raspberry Pi](pi-relay.md)
+* [Computador de placa única - Dispositivo virtual](virtual-device-relay.md)
+
+## Controlar sua planta via MQTT
+
+Até agora, seu relé é controlado diretamente pelo dispositivo IoT com base em uma única leitura de umidade do solo. Em um sistema de irrigação comercial, a lógica de controle será centralizada, permitindo tomar decisões sobre irrigação usando dados de vários sensores e permitindo que qualquer configuração seja alterada em um único lugar. Para simular isso, você pode controlar o relé via MQTT.
+
+### Tarefa - controlar o relé via MQTT
+
+1. Adicione as bibliotecas/pacotes pip MQTT relevantes e o código ao seu projeto `soil-moisture-sensor` para conectar ao MQTT. Nomeie o ID do cliente como `soilmoisturesensor_client` prefixado pelo seu ID.
+
+ > ⚠️ Você pode consultar [as instruções para conectar ao MQTT no projeto 1, lição 4, se necessário](../../../1-getting-started/lessons/4-connect-internet/README.md#connect-your-iot-device-to-mqtt).
+
+1. Adicione o código relevante do dispositivo para enviar telemetria com as configurações de umidade do solo. Para a mensagem de telemetria, nomeie a propriedade como `soil_moisture`.
+
+ > ⚠️ Você pode consultar [as instruções para enviar telemetria ao MQTT no projeto 1, lição 4, se necessário](../../../1-getting-started/lessons/4-connect-internet/README.md#send-telemetry-from-your-iot-device).
+
+1. Crie algum código de servidor local para assinar a telemetria e enviar um comando para controlar o relé em uma pasta chamada `soil-moisture-sensor-server`. Nomeie a propriedade na mensagem de comando como `relay_on` e defina o ID do cliente como `soilmoisturesensor_server` prefixado pelo seu ID. Mantenha a mesma estrutura do código do servidor que você escreveu para o projeto 1, lição 4, pois você adicionará a este código mais tarde nesta lição.
+
+ > ⚠️ Você pode consultar [as instruções para enviar telemetria ao MQTT](../../../1-getting-started/lessons/4-connect-internet/README.md#write-the-server-code) e [enviar comandos via MQTT](../../../1-getting-started/lessons/4-connect-internet/README.md#send-commands-to-the-mqtt-broker) no projeto 1, lição 4, se necessário.
+
+1. Adicione o código relevante do dispositivo para controlar o relé a partir dos comandos recebidos, usando a propriedade `relay_on` da mensagem. Envie `true` para `relay_on` se o `soil_moisture` for maior que 450, caso contrário, envie `false`, o mesmo que a lógica que você adicionou para o dispositivo IoT anteriormente.
+
+ > ⚠️ Você pode consultar [as instruções para responder a comandos do MQTT no projeto 1, lição 4, se necessário](../../../1-getting-started/lessons/4-connect-internet/README.md#handle-commands-on-the-iot-device).
+
+> 💁 Você pode encontrar este código na pasta [code-mqtt](../../../../../2-farm/lessons/3-automated-plant-watering/code-mqtt).
+
+Certifique-se de que o código está rodando no seu dispositivo e servidor local, e teste alterando os níveis de umidade do solo, seja alterando os valores enviados pelo sensor virtual ou alterando os níveis de umidade do solo adicionando água ou removendo o sensor do solo.
+
+## Temporização de sensores e atuadores
+
+Na lição 3, você construiu uma luz noturna - um LED que acende assim que um nível baixo de luz é detectado por um sensor de luz. O sensor de luz detectou uma mudança nos níveis de luz instantaneamente, e o dispositivo foi capaz de responder rapidamente, limitado apenas pelo comprimento do atraso na função `loop` ou no loop `while True:`. Como desenvolvedor de IoT, você nem sempre pode contar com um ciclo de feedback tão rápido.
+
+### Temporização para umidade do solo
+
+Se você fez a última lição sobre umidade do solo usando um sensor físico, deve ter notado que levou alguns segundos para a leitura de umidade do solo cair após você regar sua planta. Isso não ocorre porque o sensor é lento, mas porque leva tempo para a água se infiltrar no solo.
+💁 Se você regou muito perto do sensor, pode ter notado que a leitura caiu rapidamente e depois voltou a subir - isso acontece porque a água próxima ao sensor se espalha pelo restante do solo, reduzindo a umidade do solo ao redor do sensor.
+
+
+No diagrama acima, uma leitura de umidade do solo mostra 658. A planta é irrigada, mas essa leitura não muda imediatamente, pois a água ainda não alcançou o sensor. A irrigação pode até terminar antes que a água chegue ao sensor e o valor caia para refletir o novo nível de umidade.
+
+Se você estivesse escrevendo um código para controlar um sistema de irrigação via um relé baseado nos níveis de umidade do solo, seria necessário levar esse atraso em consideração e implementar um controle de tempo mais inteligente no seu dispositivo IoT.
+
+✅ Reserve um momento para pensar em como você poderia fazer isso.
+
+### Controle de tempo do sensor e do atuador
+
+Imagine que você recebeu a tarefa de construir um sistema de irrigação para uma fazenda. Com base no tipo de solo, o nível ideal de umidade para as plantas cultivadas foi identificado como correspondendo a uma leitura de tensão analógica de 400-450.
+
+Você poderia programar o dispositivo da mesma forma que uma luz noturna - sempre que o sensor ler acima de 450, ativar um relé para ligar uma bomba. O problema é que a água leva um tempo para ir da bomba, passar pelo solo e chegar ao sensor. O sensor interromperá a água quando detectar um nível de 450, mas o nível de água continuará caindo enquanto a água bombeada continua penetrando no solo. O resultado final é desperdício de água e o risco de danos às raízes.
+
+✅ Lembre-se - muita água pode ser tão ruim para as plantas quanto pouca água, além de desperdiçar um recurso precioso.
+
+A melhor solução é entender que há um atraso entre o atuador ser ativado e a propriedade que o sensor lê mudar. Isso significa que não apenas o sensor deve esperar um tempo antes de medir o valor novamente, mas o atuador precisa ser desligado por um tempo antes da próxima medição do sensor.
+
+Quanto tempo o relé deve ficar ligado a cada vez? É melhor errar por excesso de cautela e ligar o relé por um curto período, depois esperar que a água penetre no solo e então verificar novamente os níveis de umidade. Afinal, você sempre pode ligar novamente para adicionar mais água, mas não pode remover água do solo.
+
+> 💁 Esse tipo de controle de tempo é muito específico para o dispositivo IoT que você está construindo, a propriedade que está medindo e os sensores e atuadores utilizados.
+
+
+
+Por exemplo, eu tenho uma planta de morango com um sensor de umidade do solo e uma bomba controlada por um relé. Observei que, quando adiciono água, leva cerca de 20 segundos para a leitura de umidade do solo se estabilizar. Isso significa que preciso desligar o relé e esperar 20 segundos antes de verificar os níveis de umidade. Prefiro ter pouca água do que muita - sempre posso ligar a bomba novamente, mas não posso retirar água da planta.
+
+
+
+Isso significa que o melhor processo seria um ciclo de irrigação semelhante a:
+
+* Ligar a bomba por 5 segundos
+* Esperar 20 segundos
+* Verificar a umidade do solo
+* Se o nível ainda estiver acima do necessário, repetir os passos acima
+
+5 segundos podem ser muito tempo para a bomba, especialmente se os níveis de umidade estiverem apenas ligeiramente acima do nível necessário. A melhor maneira de saber qual tempo usar é testá-lo e ajustá-lo quando você tiver dados do sensor, com um ciclo constante de feedback. Isso pode até levar a um controle de tempo mais granular, como ligar a bomba por 1 segundo para cada 100 acima do nível de umidade necessário, em vez de um tempo fixo de 5 segundos.
+
+✅ Faça uma pesquisa: Existem outras considerações de tempo? A planta pode ser irrigada a qualquer momento em que a umidade do solo estiver muito baixa ou existem horários específicos do dia que são bons ou ruins para irrigar as plantas?
+
+> 💁 Previsões meteorológicas também podem ser levadas em consideração ao controlar sistemas de irrigação automatizados para cultivo ao ar livre. Se houver previsão de chuva, a irrigação pode ser suspensa até que a chuva termine. Nesse ponto, o solo pode estar úmido o suficiente para não precisar de irrigação, muito mais eficiente do que desperdiçar água irrigando pouco antes da chuva.
+
+## Adicione controle de tempo ao servidor de controle da planta
+
+O código do servidor pode ser modificado para adicionar controle ao ciclo de irrigação e esperar que os níveis de umidade do solo mudem. A lógica do servidor para controlar o tempo do relé é:
+
+1. Mensagem de telemetria recebida
+1. Verificar o nível de umidade do solo
+1. Se estiver ok, não fazer nada. Se a leitura estiver muito alta (significando que a umidade do solo está muito baixa), então:
+ 1. Enviar um comando para ligar o relé
+ 1. Esperar 5 segundos
+ 1. Enviar um comando para desligar o relé
+ 1. Esperar 20 segundos para que os níveis de umidade do solo se estabilizem
+
+O ciclo de irrigação, o processo desde o recebimento da mensagem de telemetria até estar pronto para processar os níveis de umidade do solo novamente, leva cerca de 25 segundos. Estamos enviando os níveis de umidade do solo a cada 10 segundos, então há uma sobreposição onde uma mensagem é recebida enquanto o servidor está esperando que os níveis de umidade do solo se estabilizem, o que poderia iniciar outro ciclo de irrigação.
+
+Existem duas opções para contornar isso:
+
+* Alterar o código do dispositivo IoT para enviar telemetria apenas a cada minuto, dessa forma o ciclo de irrigação será concluído antes que a próxima mensagem seja enviada
+* Cancelar a assinatura da telemetria durante o ciclo de irrigação
+
+A primeira opção nem sempre é uma boa solução para grandes fazendas. O agricultor pode querer capturar os níveis de umidade do solo enquanto o solo está sendo irrigado para análise posterior, por exemplo, para estar ciente do fluxo de água em diferentes áreas da fazenda e orientar uma irrigação mais direcionada. A segunda opção é melhor - o código apenas ignora a telemetria quando não pode usá-la, mas a telemetria ainda está disponível para outros serviços que possam assiná-la.
+
+> 💁 Dados de IoT não são enviados de apenas um dispositivo para apenas um serviço, em vez disso, muitos dispositivos podem enviar dados para um broker, e muitos serviços podem ouvir os dados do broker. Por exemplo, um serviço pode ouvir dados de umidade do solo e armazená-los em um banco de dados para análise posterior. Outro serviço também pode ouvir a mesma telemetria para controlar um sistema de irrigação.
+
+### Tarefa - adicione controle de tempo ao servidor de controle da planta
+
+Atualize o código do servidor para executar o relé por 5 segundos e depois esperar 20 segundos.
+
+1. Abra a pasta `soil-moisture-sensor-server` no VS Code, se ainda não estiver aberta. Certifique-se de que o ambiente virtual está ativado.
+
+1. Abra o arquivo `app.py`
+
+1. Adicione o seguinte código ao arquivo `app.py` abaixo das importações existentes:
+
+ ```python
+ import threading
+ ```
+
+ Esta instrução importa `threading` das bibliotecas do Python. O threading permite que o Python execute outro código enquanto espera.
+
+1. Adicione o seguinte código antes da função `handle_telemetry` que lida com mensagens de telemetria recebidas pelo código do servidor:
+
+ ```python
+ water_time = 5
+ wait_time = 20
+ ```
+
+ Isso define quanto tempo o relé deve funcionar (`water_time`) e quanto tempo esperar depois para verificar a umidade do solo (`wait_time`).
+
+1. Abaixo desse código, adicione o seguinte:
+
+ ```python
+ def send_relay_command(client, state):
+ command = { 'relay_on' : state }
+ print("Sending message:", command)
+ client.publish(server_command_topic, json.dumps(command))
+ ```
+
+ Este código define uma função chamada `send_relay_command` que envia um comando via MQTT para controlar o relé. A telemetria é criada como um dicionário e depois convertida em uma string JSON. O valor passado em `state` determina se o relé deve estar ligado ou desligado.
+
+1. Após a função `send_relay_code`, adicione o seguinte código:
+
+ ```python
+ def control_relay(client):
+ print("Unsubscribing from telemetry")
+ mqtt_client.unsubscribe(client_telemetry_topic)
+
+ send_relay_command(client, True)
+ time.sleep(water_time)
+ send_relay_command(client, False)
+
+ time.sleep(wait_time)
+
+ print("Subscribing to telemetry")
+ mqtt_client.subscribe(client_telemetry_topic)
+ ```
+
+ Isso define uma função para controlar o relé com base no tempo necessário. Começa cancelando a assinatura da telemetria para que as mensagens de umidade do solo não sejam processadas enquanto a irrigação está acontecendo. Em seguida, envia um comando para ligar o relé. Depois, espera pelo `water_time` antes de enviar um comando para desligar o relé. Finalmente, espera que os níveis de umidade do solo se estabilizem por `wait_time` segundos. Depois, reativa a assinatura da telemetria.
+
+1. Altere a função `handle_telemetry` para o seguinte:
+
+ ```python
+ def handle_telemetry(client, userdata, message):
+ payload = json.loads(message.payload.decode())
+ print("Message received:", payload)
+
+ if payload['soil_moisture'] > 450:
+ threading.Thread(target=control_relay, args=(client,)).start()
+ ```
+
+ Este código verifica o nível de umidade do solo. Se for maior que 450, o solo precisa de irrigação, então chama a função `control_relay`. Essa função é executada em uma thread separada, rodando em segundo plano.
+
+1. Certifique-se de que seu dispositivo IoT está funcionando, então execute este código. Altere os níveis de umidade do solo e observe o que acontece com o relé - ele deve ligar por 5 segundos e depois permanecer desligado por pelo menos 20 segundos, ligando novamente apenas se os níveis de umidade do solo não forem suficientes.
+
+ ```output
+ (.venv) ➜ soil-moisture-sensor-server ✗ python app.py
+ Message received: {'soil_moisture': 457}
+ Unsubscribing from telemetry
+ Sending message: {'relay_on': True}
+ Sending message: {'relay_on': False}
+ Subscribing to telemetry
+ Message received: {'soil_moisture': 302}
+ ```
+
+ Uma boa maneira de testar isso em um sistema de irrigação simulado é usar solo seco e depois adicionar água manualmente enquanto o relé está ligado, parando de adicionar água quando o relé desligar.
+
+> 💁 Você pode encontrar este código na pasta [code-timing](../../../../../2-farm/lessons/3-automated-plant-watering/code-timing).
+
+> 💁 Se você quiser usar uma bomba para construir um sistema de irrigação real, pode usar uma [bomba de água de 6V](https://www.seeedstudio.com/6V-Mini-Water-Pump-p-1945.html) com uma [fonte de alimentação USB](https://www.adafruit.com/product/3628). Certifique-se de que a energia para ou da bomba esteja conectada via relé.
+
+---
+
+## 🚀 Desafio
+
+Você consegue pensar em outros dispositivos IoT ou elétricos que tenham um problema semelhante, onde leva um tempo para os resultados do atuador alcançarem o sensor? Provavelmente você tem alguns em sua casa ou escola.
+
+* Quais propriedades eles medem?
+* Quanto tempo leva para a propriedade mudar após o uso de um atuador?
+* É aceitável que a propriedade mude além do valor necessário?
+* Como ela pode ser retornada ao valor necessário, se necessário?
+
+## Questionário pós-aula
+
+[Questionário pós-aula](https://black-meadow-040d15503.1.azurestaticapps.net/quiz/14)
+
+## Revisão e Autoestudo
+
+* Leia mais sobre relés, incluindo seu uso histórico em centrais telefônicas, na [página do Wikipedia sobre relés](https://wikipedia.org/wiki/Relay).
+
+## Tarefa
+
+[Construa um ciclo de irrigação mais eficiente](assignment.md)
+
+---
+
+**Aviso Legal**:
+Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.
\ No newline at end of file
diff --git a/translations/br/2-farm/lessons/3-automated-plant-watering/assignment.md b/translations/br/2-farm/lessons/3-automated-plant-watering/assignment.md
new file mode 100644
index 00000000..af599a81
--- /dev/null
+++ b/translations/br/2-farm/lessons/3-automated-plant-watering/assignment.md
@@ -0,0 +1,54 @@
+
+# Construa um ciclo de irrigação mais eficiente
+
+## Instruções
+
+Esta lição abordou como controlar um relé usando dados de sensores, e esse relé, por sua vez, pode controlar uma bomba para um sistema de irrigação. Para um volume definido de solo, operar uma bomba por um tempo fixo deve sempre ter o mesmo impacto na umidade do solo. Isso significa que você pode ter uma ideia de quantos segundos de irrigação correspondem a uma certa queda na leitura de umidade do solo. Usando esses dados, você pode construir um sistema de irrigação mais controlado.
+
+Para esta tarefa, você calculará quanto tempo a bomba deve funcionar para alcançar um aumento específico na umidade do solo.
+
+> ⚠️ Se você estiver usando hardware IoT virtual, pode seguir este processo, mas simular os resultados aumentando manualmente a leitura de umidade do solo por uma quantidade fixa a cada segundo em que o relé estiver ligado.
+
+1. Comece com o solo seco. Meça a umidade do solo.
+
+1. Adicione uma quantidade fixa de água, seja operando a bomba por 1 segundo ou despejando uma quantidade fixa de água.
+
+ > A bomba deve sempre operar a uma taxa constante, então, a cada segundo que a bomba funcionar, ela deve fornecer a mesma quantidade de água.
+
+1. Aguarde até que o nível de umidade do solo se estabilize e faça uma leitura.
+
+1. Repita isso várias vezes e crie uma tabela com os resultados. Um exemplo dessa tabela é dado abaixo.
+
+ | Tempo total da bomba | Umidade do solo | Redução |
+ | --- | --: | -: |
+ | Seco | 643 | 0 |
+ | 1s | 621 | 22 |
+ | 2s | 601 | 20 |
+ | 3s | 579 | 22 |
+ | 4s | 560 | 19 |
+ | 5s | 539 | 21 |
+ | 6s | 521 | 18 |
+
+1. Calcule um aumento médio na umidade do solo por segundo de água. No exemplo acima, cada segundo de água reduz a leitura em uma média de 20,3.
+
+1. Use esses dados para melhorar a eficiência do código do servidor, operando a bomba pelo tempo necessário para atingir o nível de umidade desejado.
+
+## Rubrica
+
+| Critério | Exemplary | Adequate | Needs Improvement |
+| -------- | --------- | -------- | ----------------- |
+| Capturar dados de umidade do solo | É capaz de capturar várias leituras após adicionar quantidades fixas de água | É capaz de capturar algumas leituras com quantidades fixas de água | Só consegue capturar uma ou duas leituras, ou não consegue usar quantidades fixas de água |
+| Calibrar o código do servidor | É capaz de calcular uma redução média na leitura de umidade do solo e atualizar o código do servidor para usar isso | É capaz de calcular uma redução média, mas não consegue atualizar o código do servidor, ou não consegue calcular corretamente uma média, mas usa esse valor para atualizar corretamente o código do servidor | Não é capaz de calcular uma média ou atualizar o código do servidor |
+
+---
+
+**Aviso Legal**:
+Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.
\ No newline at end of file
diff --git a/translations/br/2-farm/lessons/3-automated-plant-watering/pi-relay.md b/translations/br/2-farm/lessons/3-automated-plant-watering/pi-relay.md
new file mode 100644
index 00000000..7b021063
--- /dev/null
+++ b/translations/br/2-farm/lessons/3-automated-plant-watering/pi-relay.md
@@ -0,0 +1,123 @@
+
+# Controle um relé - Raspberry Pi
+
+Nesta parte da lição, você adicionará um relé ao seu Raspberry Pi, além do sensor de umidade do solo, e o controlará com base no nível de umidade do solo.
+
+## Hardware
+
+O Raspberry Pi precisa de um relé.
+
+O relé que você usará é um [Grove relay](https://www.seeedstudio.com/Grove-Relay.html), um relé normalmente aberto (o que significa que o circuito de saída está aberto ou desconectado quando nenhum sinal é enviado ao relé) que pode lidar com circuitos de saída de até 250V e 10A.
+
+Este é um atuador digital, então ele se conecta a um pino digital no Grove Base Hat.
+
+### Conecte o relé
+
+O relé Grove pode ser conectado ao Raspberry Pi.
+
+#### Tarefa
+
+Conecte o relé.
+
+
+
+1. Insira uma extremidade de um cabo Grove no soquete do relé. Ele só encaixará de uma maneira.
+
+1. Com o Raspberry Pi desligado, conecte a outra extremidade do cabo Grove ao soquete digital marcado como **D5** no Grove Base Hat conectado ao Pi. Este soquete é o segundo da esquerda, na fileira de soquetes ao lado dos pinos GPIO. Deixe o sensor de umidade do solo conectado ao soquete **A0**.
+
+
+
+1. Insira o sensor de umidade do solo na terra, caso ele ainda não esteja inserido da lição anterior.
+
+## Programe o relé
+
+Agora o Raspberry Pi pode ser programado para usar o relé conectado.
+
+### Tarefa
+
+Programe o dispositivo.
+
+1. Ligue o Raspberry Pi e aguarde o boot.
+
+1. Abra o projeto `soil-moisture-sensor` da última lição no VS Code, caso ele ainda não esteja aberto. Você irá adicionar a este projeto.
+
+1. Adicione o seguinte código ao arquivo `app.py` abaixo dos imports existentes:
+
+ ```python
+ from grove.grove_relay import GroveRelay
+ ```
+
+ Esta instrução importa o `GroveRelay` das bibliotecas Python do Grove para interagir com o relé Grove.
+
+1. Adicione o seguinte código abaixo da declaração da classe `ADC` para criar uma instância de `GroveRelay`:
+
+ ```python
+ relay = GroveRelay(5)
+ ```
+
+ Isso cria um relé usando o pino **D5**, o pino digital ao qual você conectou o relé.
+
+1. Para testar se o relé está funcionando, adicione o seguinte ao loop `while True:`:
+
+ ```python
+ relay.on()
+ time.sleep(.5)
+ relay.off()
+ ```
+
+ O código liga o relé, espera 0,5 segundos e depois desliga o relé.
+
+1. Execute o aplicativo Python. O relé será ligado e desligado a cada 10 segundos, com um atraso de meio segundo entre ligar e desligar. Você ouvirá o relé clicar ao ligar e ao desligar. Um LED na placa Grove acenderá quando o relé estiver ligado e apagará quando estiver desligado.
+
+ 
+
+## Controle o relé com base na umidade do solo
+
+Agora que o relé está funcionando, ele pode ser controlado em resposta às leituras de umidade do solo.
+
+### Tarefa
+
+Controle o relé.
+
+1. Exclua as 3 linhas de código que você adicionou para testar o relé. Substitua-as pelo seguinte código:
+
+ ```python
+ if soil_moisture > 450:
+ print("Soil Moisture is too low, turning relay on.")
+ relay.on()
+ else:
+ print("Soil Moisture is ok, turning relay off.")
+ relay.off()
+ ```
+
+ Este código verifica o nível de umidade do solo a partir do sensor de umidade do solo. Se estiver acima de 450, ele liga o relé e o desliga quando estiver abaixo de 450.
+
+ > 💁 Lembre-se de que o sensor capacitivo de umidade do solo lê: quanto menor o nível de umidade do solo, maior a quantidade de umidade na terra, e vice-versa.
+
+1. Execute o aplicativo Python. Você verá o relé ligar ou desligar dependendo do nível de umidade do solo. Teste em solo seco e depois adicione água.
+
+ ```output
+ Soil Moisture: 638
+ Soil Moisture is too low, turning relay on.
+ Soil Moisture: 452
+ Soil Moisture is too low, turning relay on.
+ Soil Moisture: 347
+ Soil Moisture is ok, turning relay off.
+ ```
+
+> 💁 Você pode encontrar este código na pasta [code-relay/pi](../../../../../2-farm/lessons/3-automated-plant-watering/code-relay/pi).
+
+😀 Seu programa de controle de relé com sensor de umidade do solo foi um sucesso!
+
+---
+
+**Aviso Legal**:
+Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.
\ No newline at end of file
diff --git a/translations/br/2-farm/lessons/3-automated-plant-watering/virtual-device-relay.md b/translations/br/2-farm/lessons/3-automated-plant-watering/virtual-device-relay.md
new file mode 100644
index 00000000..77766ea7
--- /dev/null
+++ b/translations/br/2-farm/lessons/3-automated-plant-watering/virtual-device-relay.md
@@ -0,0 +1,127 @@
+
+# Controle um relé - Hardware IoT Virtual
+
+Nesta parte da lição, você adicionará um relé ao seu dispositivo IoT virtual, além do sensor de umidade do solo, e o controlará com base no nível de umidade do solo.
+
+## Hardware Virtual
+
+O dispositivo IoT virtual usará um relé simulado Grove. Isso mantém este laboratório semelhante ao uso de um Raspberry Pi com um relé físico Grove.
+
+Em um dispositivo IoT físico, o relé seria um relé normalmente aberto (ou seja, o circuito de saída está aberto ou desconectado quando nenhum sinal é enviado ao relé). Um relé como este pode lidar com circuitos de saída de até 250V e 10A.
+
+### Adicionar o relé ao CounterFit
+
+Para usar um relé virtual, você precisa adicioná-lo ao aplicativo CounterFit.
+
+#### Tarefa
+
+Adicione o relé ao aplicativo CounterFit.
+
+1. Abra o projeto `soil-moisture-sensor` da última lição no VS Code, caso ainda não esteja aberto. Você adicionará a este projeto.
+
+1. Certifique-se de que o aplicativo web CounterFit esteja em execução.
+
+1. Crie um relé:
+
+ 1. Na caixa *Create actuator* no painel *Actuators*, abra o menu suspenso *Actuator type* e selecione *Relay*.
+
+ 1. Defina o *Pin* como *5*.
+
+ 1. Selecione o botão **Add** para criar o relé no pino 5.
+
+ 
+
+ O relé será criado e aparecerá na lista de atuadores.
+
+ 
+
+## Programar o relé
+
+O aplicativo do sensor de umidade do solo agora pode ser programado para usar o relé virtual.
+
+### Tarefa
+
+Programe o dispositivo virtual.
+
+1. Abra o projeto `soil-moisture-sensor` da última lição no VS Code, caso ainda não esteja aberto. Você adicionará a este projeto.
+
+1. Adicione o seguinte código ao arquivo `app.py` abaixo das importações existentes:
+
+ ```python
+ from counterfit_shims_grove.grove_relay import GroveRelay
+ ```
+
+ Esta instrução importa o `GroveRelay` das bibliotecas Grove Python shim para interagir com o relé virtual Grove.
+
+1. Adicione o seguinte código abaixo da declaração da classe `ADC` para criar uma instância de `GroveRelay`:
+
+ ```python
+ relay = GroveRelay(5)
+ ```
+
+ Isso cria um relé usando o pino **5**, o pino ao qual você conectou o relé.
+
+1. Para testar se o relé está funcionando, adicione o seguinte ao loop `while True:`:
+
+ ```python
+ relay.on()
+ time.sleep(.5)
+ relay.off()
+ ```
+
+ O código liga o relé, espera 0,5 segundos e depois desliga o relé.
+
+1. Execute o aplicativo Python. O relé será ligado e desligado a cada 10 segundos, com um atraso de meio segundo entre ligar e desligar. Você verá o relé virtual no aplicativo CounterFit fechar e abrir conforme o relé é ligado e desligado.
+
+ 
+
+## Controlar o relé com base na umidade do solo
+
+Agora que o relé está funcionando, ele pode ser controlado em resposta às leituras de umidade do solo.
+
+### Tarefa
+
+Controle o relé.
+
+1. Exclua as 3 linhas de código que você adicionou para testar o relé. Substitua-as pelo seguinte código no mesmo lugar:
+
+ ```python
+ if soil_moisture > 450:
+ print("Soil Moisture is too low, turning relay on.")
+ relay.on()
+ else:
+ print("Soil Moisture is ok, turning relay off.")
+ relay.off()
+ ```
+
+ Este código verifica o nível de umidade do solo a partir do sensor de umidade do solo. Se estiver acima de 450, ele liga o relé, desligando-o se estiver abaixo de 450.
+
+ > 💁 Lembre-se de que o sensor capacitivo de umidade do solo lê que, quanto menor o nível de umidade do solo, maior é a umidade no solo, e vice-versa.
+
+1. Execute o aplicativo Python. Você verá o relé ligar ou desligar dependendo dos níveis de umidade do solo. Altere as configurações de *Value* ou *Random* para o sensor de umidade do solo para ver o valor mudar.
+
+ ```output
+ Soil Moisture: 638
+ Soil Moisture is too low, turning relay on.
+ Soil Moisture: 452
+ Soil Moisture is too low, turning relay on.
+ Soil Moisture: 347
+ Soil Moisture is ok, turning relay off.
+ ```
+
+> 💁 Você pode encontrar este código na pasta [code-relay/virtual-device](../../../../../2-farm/lessons/3-automated-plant-watering/code-relay/virtual-device).
+
+😀 Seu programa de sensor de umidade do solo virtual controlando um relé foi um sucesso!
+
+---
+
+**Aviso Legal**:
+Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.
\ No newline at end of file
diff --git a/translations/br/2-farm/lessons/3-automated-plant-watering/wio-terminal-relay.md b/translations/br/2-farm/lessons/3-automated-plant-watering/wio-terminal-relay.md
new file mode 100644
index 00000000..27f30a61
--- /dev/null
+++ b/translations/br/2-farm/lessons/3-automated-plant-watering/wio-terminal-relay.md
@@ -0,0 +1,121 @@
+
+# Controlar um relé - Wio Terminal
+
+Nesta parte da lição, você adicionará um relé ao seu Wio Terminal, além do sensor de umidade do solo, e o controlará com base no nível de umidade do solo.
+
+## Hardware
+
+O Wio Terminal precisa de um relé.
+
+O relé que você usará é um [relé Grove](https://www.seeedstudio.com/Grove-Relay.html), um relé normalmente aberto (o que significa que o circuito de saída está aberto ou desconectado quando nenhum sinal é enviado ao relé) que pode lidar com circuitos de saída de até 250V e 10A.
+
+Este é um atuador digital, então ele se conecta aos pinos digitais do Wio Terminal. A porta combinada analógica/digital já está em uso com o sensor de umidade do solo, então este será conectado à outra porta, que é uma porta combinada I2C e digital.
+
+### Conectar o relé
+
+O relé Grove pode ser conectado à porta digital do Wio Terminal.
+
+#### Tarefa
+
+Conecte o relé.
+
+
+
+1. Insira uma extremidade de um cabo Grove no soquete do relé. Ele só encaixará de uma maneira.
+
+1. Com o Wio Terminal desconectado do computador ou de outra fonte de energia, conecte a outra extremidade do cabo Grove ao soquete Grove do lado esquerdo do Wio Terminal, olhando para a tela. Deixe o sensor de umidade do solo conectado ao soquete do lado direito.
+
+
+
+1. Insira o sensor de umidade do solo no solo, caso ele ainda não esteja inserido da lição anterior.
+
+## Programar o relé
+
+Agora o Wio Terminal pode ser programado para usar o relé conectado.
+
+### Tarefa
+
+Programe o dispositivo.
+
+1. Abra o projeto `soil-moisture-sensor` da última lição no VS Code, caso ainda não esteja aberto. Você adicionará código a este projeto.
+
+2. Não há uma biblioteca para este atuador - é um atuador digital controlado por um sinal alto ou baixo. Para ligá-lo, você envia um sinal alto para o pino (3.3V); para desligá-lo, você envia um sinal baixo (0V). Você pode fazer isso usando a função [`digitalWrite`](https://www.arduino.cc/reference/en/language/functions/digital-io/digitalwrite/) integrada do Arduino. Comece adicionando o seguinte ao final da função `setup` para configurar a porta combinada I2C/digital como um pino de saída para enviar uma tensão ao relé:
+
+ ```cpp
+ pinMode(PIN_WIRE_SCL, OUTPUT);
+ ```
+
+ `PIN_WIRE_SCL` é o número da porta para a porta combinada I2C/digital.
+
+1. Para testar se o relé está funcionando, adicione o seguinte à função `loop`, abaixo do último `delay`:
+
+ ```cpp
+ digitalWrite(PIN_WIRE_SCL, HIGH);
+ delay(500);
+ digitalWrite(PIN_WIRE_SCL, LOW);
+ ```
+
+ O código envia um sinal alto ao pino ao qual o relé está conectado para ligá-lo, espera 500ms (meio segundo) e, em seguida, envia um sinal baixo para desligar o relé.
+
+1. Compile e carregue o código no Wio Terminal.
+
+1. Após o upload, o relé será ligado e desligado a cada 10 segundos, com um atraso de meio segundo entre ligar e desligar. Você ouvirá o relé clicar ao ligar e ao desligar. Um LED na placa Grove acenderá quando o relé estiver ligado e apagará quando estiver desligado.
+
+ 
+
+## Controlar o relé com base na umidade do solo
+
+Agora que o relé está funcionando, ele pode ser controlado em resposta às leituras de umidade do solo.
+
+### Tarefa
+
+Controle o relé.
+
+1. Exclua as 3 linhas de código que você adicionou para testar o relé. Substitua-as pelo seguinte código:
+
+ ```cpp
+ if (soil_moisture > 450)
+ {
+ Serial.println("Soil Moisture is too low, turning relay on.");
+ digitalWrite(PIN_WIRE_SCL, HIGH);
+ }
+ else
+ {
+ Serial.println("Soil Moisture is ok, turning relay off.");
+ digitalWrite(PIN_WIRE_SCL, LOW);
+ }
+ ```
+
+ Este código verifica o nível de umidade do solo a partir do sensor de umidade do solo. Se estiver acima de 450, ele liga o relé e o desliga quando estiver abaixo de 450.
+
+ > 💁 Lembre-se de que o sensor capacitivo de umidade do solo lê: quanto menor o nível de umidade do solo, maior a quantidade de umidade no solo, e vice-versa.
+
+1. Compile e carregue o código no Wio Terminal.
+
+1. Monitore o dispositivo através do monitor serial. Você verá o relé ligar ou desligar dependendo do nível de umidade do solo. Teste em solo seco e, em seguida, adicione água.
+
+ ```output
+ Soil Moisture: 638
+ Soil Moisture is too low, turning relay on.
+ Soil Moisture: 452
+ Soil Moisture is too low, turning relay on.
+ Soil Moisture: 347
+ Soil Moisture is ok, turning relay off.
+ ```
+
+> 💁 Você pode encontrar este código na pasta [code-relay/wio-terminal](../../../../../2-farm/lessons/3-automated-plant-watering/code-relay/wio-terminal).
+
+😀 Seu programa de controle de relé com sensor de umidade do solo foi um sucesso!
+
+---
+
+**Aviso Legal**:
+Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.
\ No newline at end of file
diff --git a/translations/br/2-farm/lessons/4-migrate-your-plant-to-the-cloud/README.md b/translations/br/2-farm/lessons/4-migrate-your-plant-to-the-cloud/README.md
new file mode 100644
index 00000000..57282485
--- /dev/null
+++ b/translations/br/2-farm/lessons/4-migrate-your-plant-to-the-cloud/README.md
@@ -0,0 +1,451 @@
+
+# Migre sua planta para a nuvem
+
+
+
+> Ilustração por [Nitya Narasimhan](https://github.com/nitya). Clique na imagem para uma versão maior.
+
+Esta lição foi ensinada como parte da série [IoT para Iniciantes - Agricultura Digital](https://youtube.com/playlist?list=PLmsFUfdnGr3yCutmcVg6eAUEfsGiFXgcx) do [Microsoft Reactor](https://developer.microsoft.com/reactor/?WT.mc_id=academic-17441-jabenn).
+
+[](https://youtu.be/bNxjopXkhvk)
+
+## Questionário pré-aula
+
+[Questionário pré-aula](https://black-meadow-040d15503.1.azurestaticapps.net/quiz/15)
+
+## Introdução
+
+Na última lição, você aprendeu como conectar sua planta a um broker MQTT e controlar um relé a partir de um código de servidor executado localmente. Isso forma o núcleo de um sistema automatizado de irrigação conectado à internet, usado desde plantas individuais em casa até fazendas comerciais.
+
+O dispositivo IoT se comunicou com um broker MQTT público para demonstrar os princípios, mas essa não é a forma mais confiável ou segura. Nesta lição, você aprenderá sobre a nuvem e as capacidades de IoT oferecidas por serviços de nuvem pública. Também aprenderá como migrar sua planta de um broker MQTT público para um desses serviços de nuvem.
+
+Nesta lição, abordaremos:
+
+* [O que é a nuvem?](../../../../../2-farm/lessons/4-migrate-your-plant-to-the-cloud)
+* [Criar uma assinatura de nuvem](../../../../../2-farm/lessons/4-migrate-your-plant-to-the-cloud)
+* [Serviços de IoT na nuvem](../../../../../2-farm/lessons/4-migrate-your-plant-to-the-cloud)
+* [Criar um serviço de IoT na nuvem](../../../../../2-farm/lessons/4-migrate-your-plant-to-the-cloud)
+* [Comunicar-se com o IoT Hub](../../../../../2-farm/lessons/4-migrate-your-plant-to-the-cloud)
+* [Conectar seu dispositivo ao serviço de IoT](../../../../../2-farm/lessons/4-migrate-your-plant-to-the-cloud)
+
+## O que é a nuvem?
+
+Antes da nuvem, quando uma empresa queria oferecer serviços aos seus funcionários (como bancos de dados ou armazenamento de arquivos) ou ao público (como sites), ela construía e operava um data center. Isso podia variar de uma sala com poucos computadores até um prédio com muitos computadores. A empresa gerenciava tudo, incluindo:
+
+* Compra de computadores
+* Manutenção de hardware
+* Energia e refrigeração
+* Rede
+* Segurança, incluindo proteger o prédio e o software nos computadores
+* Instalação e atualização de software
+
+Isso podia ser muito caro, exigir uma ampla gama de funcionários qualificados e ser muito lento para mudanças quando necessário. Por exemplo, se uma loja online precisasse se preparar para uma temporada de férias movimentada, teria que planejar meses antes para comprar mais hardware, configurá-lo, instalá-lo e instalar o software para gerenciar as vendas. Após a temporada de férias, com a queda nas vendas, os computadores comprados ficariam ociosos até a próxima temporada movimentada.
+
+✅ Você acha que isso permitiria que as empresas se adaptassem rapidamente? Se uma loja de roupas online ficasse popular de repente porque uma celebridade foi vista usando suas roupas, ela conseguiria aumentar sua capacidade computacional rapidamente para lidar com o aumento repentino de pedidos?
+
+### O computador de outra pessoa
+
+A nuvem é frequentemente chamada de "o computador de outra pessoa" como uma brincadeira. A ideia inicial era simples: em vez de comprar computadores, você aluga o computador de outra pessoa. Essa "outra pessoa", um provedor de computação em nuvem, gerenciaria enormes data centers. Eles seriam responsáveis por comprar e instalar o hardware, gerenciar energia e refrigeração, rede, segurança do prédio, atualizações de hardware e software, tudo. Como cliente, você alugaria os computadores necessários, alugando mais conforme a demanda aumentasse e reduzindo o número alugado se a demanda diminuísse. Esses data centers estão espalhados pelo mundo.
+
+
+
+
+Esses data centers podem ter vários quilômetros quadrados de tamanho. As imagens acima foram tiradas há alguns anos em um data center da nuvem da Microsoft e mostram o tamanho inicial, junto com uma expansão planejada. A área limpa para a expansão tem mais de 5 quilômetros quadrados.
+
+> 💁 Esses data centers exigem quantidades tão grandes de energia que alguns possuem suas próprias usinas. Por causa de seu tamanho e do nível de investimento dos provedores de nuvem, eles geralmente são muito ecológicos. São mais eficientes do que inúmeros pequenos data centers, operam principalmente com energia renovável e os provedores de nuvem trabalham arduamente para reduzir o desperdício, cortar o uso de água e replantar florestas para compensar as áreas desmatadas para construir os data centers. Você pode ler mais sobre como um provedor de nuvem está trabalhando em sustentabilidade no [site de sustentabilidade do Azure](https://azure.microsoft.com/global-infrastructure/sustainability/?WT.mc_id=academic-17441-jabenn).
+
+✅ Faça uma pesquisa: Leia sobre as principais nuvens, como [Azure da Microsoft](https://azure.microsoft.com/?WT.mc_id=academic-17441-jabenn) ou [GCP do Google](https://cloud.google.com). Quantos data centers eles possuem e onde estão localizados no mundo?
+
+Usar a nuvem reduz os custos para as empresas e permite que elas se concentrem no que fazem de melhor, deixando a expertise em computação em nuvem nas mãos do provedor. As empresas não precisam mais alugar ou comprar espaço em data centers, pagar diferentes fornecedores por conectividade e energia ou contratar especialistas. Em vez disso, podem pagar uma única fatura mensal ao provedor de nuvem para cuidar de tudo.
+
+O provedor de nuvem pode então usar economias de escala para reduzir os custos, comprando computadores em grandes quantidades a preços mais baixos, investindo em ferramentas para reduzir o trabalho de manutenção e até projetando e construindo seu próprio hardware para melhorar sua oferta de nuvem.
+
+### Microsoft Azure
+
+Azure é a nuvem para desenvolvedores da Microsoft, e é a nuvem que você usará nestas lições. O vídeo abaixo oferece uma breve visão geral do Azure:
+
+[](https://www.microsoft.com/videoplayer/embed/RE4Ibng?WT.mc_id=academic-17441-jabenn)
+
+## Criar uma assinatura de nuvem
+
+Para usar serviços na nuvem, você precisará se inscrever em uma assinatura com um provedor de nuvem. Para esta lição, você se inscreverá em uma assinatura do Microsoft Azure. Se você já possui uma assinatura do Azure, pode pular esta tarefa. Os detalhes da assinatura descritos aqui estão corretos no momento da escrita, mas podem mudar.
+
+> 💁 Se você estiver acessando estas lições por meio de sua escola, pode já ter uma assinatura do Azure disponível. Verifique com seu professor.
+
+Existem dois tipos diferentes de assinatura gratuita do Azure que você pode se inscrever:
+
+* **Azure para Estudantes** - Esta é uma assinatura projetada para estudantes com 18 anos ou mais. Você não precisa de um cartão de crédito para se inscrever e usa seu endereço de e-mail escolar para validar que é estudante. Ao se inscrever, você recebe US$100 para gastar em recursos de nuvem, além de serviços gratuitos, incluindo uma versão gratuita de um serviço de IoT. Isso dura 12 meses e pode ser renovado a cada ano enquanto você permanecer estudante.
+
+* **Assinatura gratuita do Azure** - Esta é uma assinatura para qualquer pessoa que não seja estudante. Você precisará de um cartão de crédito para se inscrever, mas seu cartão não será cobrado, sendo usado apenas para verificar que você é uma pessoa real, não um robô. Você recebe US$200 de crédito para usar nos primeiros 30 dias em qualquer serviço, além de níveis gratuitos de serviços do Azure. Depois que seu crédito for usado, seu cartão não será cobrado, a menos que você converta para uma assinatura paga conforme o uso.
+
+> 💁 A Microsoft oferece uma assinatura Azure para Estudantes Starter para estudantes menores de 18 anos, mas no momento da escrita isso não suporta serviços de IoT.
+
+### Tarefa - inscreva-se em uma assinatura gratuita de nuvem
+
+Se você é estudante com 18 anos ou mais, pode se inscrever em uma assinatura Azure para Estudantes. Você precisará validar com um endereço de e-mail escolar. Isso pode ser feito de duas maneiras:
+
+* Inscreva-se no pacote de desenvolvedor estudantil do GitHub em [education.github.com/pack](https://education.github.com/pack). Isso dá acesso a uma variedade de ferramentas e ofertas, incluindo GitHub e Microsoft Azure. Depois de se inscrever no pacote de desenvolvedor, você pode ativar a oferta Azure para Estudantes.
+
+* Inscreva-se diretamente em uma conta Azure para Estudantes em [azure.microsoft.com/free/students](https://azure.microsoft.com/free/students/?WT.mc_id=academic-17441-jabenn).
+
+> ⚠️ Se seu endereço de e-mail escolar não for reconhecido, abra uma [issue neste repositório](https://github.com/Microsoft/IoT-For-Beginners/issues) e verificaremos se ele pode ser adicionado à lista de permissões do Azure para Estudantes.
+
+Se você não é estudante ou não possui um endereço de e-mail escolar válido, pode se inscrever em uma assinatura gratuita do Azure.
+
+* Inscreva-se em uma assinatura gratuita do Azure em [azure.microsoft.com/free](https://azure.microsoft.com/free/?WT.mc_id=academic-17441-jabenn)
+
+## Serviços de IoT na nuvem
+
+O broker MQTT público que você tem usado é uma ótima ferramenta para aprendizado, mas possui várias desvantagens como ferramenta para uso comercial:
+
+* Confiabilidade - é um serviço gratuito sem garantias e pode ser desativado a qualquer momento
+* Segurança - é público, então qualquer pessoa pode ouvir sua telemetria ou enviar comandos para controlar seu hardware
+* Desempenho - foi projetado para apenas algumas mensagens de teste, então não suportaria um grande volume de mensagens sendo enviadas
+* Descoberta - não há como saber quais dispositivos estão conectados
+
+Os serviços de IoT na nuvem resolvem esses problemas. Eles são mantidos por grandes provedores de nuvem que investem fortemente em confiabilidade e estão disponíveis para corrigir quaisquer problemas que possam surgir. Eles possuem segurança integrada para impedir que hackers leiam seus dados ou enviem comandos maliciosos. Além disso, são de alto desempenho, capazes de lidar com muitos milhões de mensagens todos os dias, aproveitando a escalabilidade da nuvem conforme necessário.
+
+> 💁 Embora você pague por essas vantagens com uma taxa mensal, a maioria dos provedores de nuvem oferece uma versão gratuita de seus serviços de IoT com um número limitado de mensagens por dia ou dispositivos que podem se conectar. Essa versão gratuita geralmente é mais do que suficiente para um desenvolvedor aprender sobre o serviço. Nesta lição, você usará uma versão gratuita.
+
+Dispositivos IoT se conectam a um serviço de nuvem usando um SDK de dispositivo (uma biblioteca que fornece código para trabalhar com os recursos do serviço) ou diretamente via um protocolo de comunicação como MQTT ou HTTP. O SDK de dispositivo geralmente é a rota mais fácil, pois lida com tudo para você, como saber quais tópicos publicar ou assinar e como gerenciar a segurança.
+
+
+
+Seu dispositivo então se comunica com outras partes de sua aplicação por meio desse serviço - semelhante à forma como você enviou telemetria e recebeu comandos via MQTT. Isso geralmente é feito usando um SDK de serviço ou uma biblioteca semelhante. As mensagens vêm do seu dispositivo para o serviço, onde outros componentes da sua aplicação podem lê-las, e mensagens podem ser enviadas de volta ao seu dispositivo.
+
+
+
+Esses serviços implementam segurança conhecendo todos os dispositivos que podem se conectar e enviar dados, seja registrando os dispositivos previamente no serviço ou fornecendo aos dispositivos chaves secretas ou certificados que podem usar para se registrar no serviço na primeira vez que se conectarem. Dispositivos desconhecidos não conseguem se conectar; se tentarem, o serviço rejeita a conexão e ignora as mensagens enviadas por eles.
+
+✅ Faça uma pesquisa: Qual é a desvantagem de ter um serviço de IoT aberto onde qualquer dispositivo ou código pode se conectar? Você consegue encontrar exemplos específicos de hackers aproveitando essa situação?
+
+Outros componentes da sua aplicação podem se conectar ao serviço de IoT e aprender sobre todos os dispositivos conectados ou registrados, além de se comunicar diretamente com eles, seja em massa ou individualmente.
+💁 Os serviços de IoT também implementam capacidades adicionais, e os provedores de nuvem possuem serviços e aplicativos extras que podem ser conectados ao serviço. Por exemplo, se você quiser armazenar todas as mensagens de telemetria enviadas por todos os dispositivos em um banco de dados, geralmente basta alguns cliques na ferramenta de configuração do provedor de nuvem para conectar o serviço a um banco de dados e transmitir os dados.
+## Criar um serviço de IoT na nuvem
+
+Agora que você tem uma assinatura do Azure, pode se inscrever em um serviço de IoT. O serviço de IoT da Microsoft é chamado Azure IoT Hub.
+
+
+
+O vídeo abaixo oferece uma breve visão geral do Azure IoT Hub:
+
+[](https://www.youtube.com/watch?v=smuZaZZXKsU)
+
+> 🎥 Clique na imagem acima para assistir ao vídeo
+
+✅ Reserve um momento para fazer uma pesquisa e leia a visão geral do IoT Hub na [documentação do Microsoft IoT Hub](https://docs.microsoft.com/azure/iot-hub/about-iot-hub?WT.mc_id=academic-17441-jabenn).
+
+Os serviços de nuvem disponíveis no Azure podem ser configurados por meio de um portal baseado na web ou por meio de uma interface de linha de comando (CLI). Para esta tarefa, você usará o CLI.
+
+### Tarefa - instalar o Azure CLI
+
+Para usar o Azure CLI, primeiro ele deve ser instalado no seu PC ou Mac.
+
+1. Siga as instruções na [documentação do Azure CLI](https://docs.microsoft.com/cli/azure/install-azure-cli?WT.mc_id=academic-17441-jabenn) para instalar o CLI.
+
+1. O Azure CLI suporta várias extensões que adicionam capacidades para gerenciar uma ampla gama de serviços do Azure. Instale a extensão IoT executando o seguinte comando na sua linha de comando ou terminal:
+
+ ```sh
+ az extension add --name azure-iot
+ ```
+
+1. Na sua linha de comando ou terminal, execute o seguinte comando para fazer login na sua assinatura do Azure a partir do Azure CLI.
+
+ ```sh
+ az login
+ ```
+
+ Uma página da web será aberta no seu navegador padrão. Faça login usando a conta que você usou para se inscrever na sua assinatura do Azure. Depois de fazer login, você pode fechar a aba do navegador.
+
+1. Se você tiver várias assinaturas do Azure, como uma fornecida pela escola e sua própria assinatura do Azure para Estudantes, será necessário selecionar a que deseja usar. Execute o seguinte comando para listar todas as assinaturas às quais você tem acesso:
+
+ ```sh
+ az account list --output table
+ ```
+
+ Na saída, você verá o nome de cada assinatura junto com seu `SubscriptionId`.
+
+ ```output
+ ➜ ~ az account list --output table
+ Name CloudName SubscriptionId State IsDefault
+ ---------------------- ----------- ------------------------------------ ------- -----------
+ School-subscription AzureCloud cb30cde9-814a-42f0-a111-754cb788e4e1 Enabled True
+ Azure for Students AzureCloud fa51c31b-162c-4599-add6-781def2e1fbf Enabled False
+ ```
+
+ Para selecionar a assinatura que deseja usar, utilize o seguinte comando:
+
+ ```sh
+ az account set --subscription
+ ```
+
+ Substitua `` pelo Id da assinatura que deseja usar. Após executar este comando, execute novamente o comando para listar suas contas. Você verá que a coluna `IsDefault` estará marcada como `True` para a assinatura que acabou de definir.
+
+### Tarefa - criar um grupo de recursos
+
+Os serviços do Azure, como instâncias do IoT Hub, máquinas virtuais, bancos de dados ou serviços de IA, são chamados de **recursos**. Todo recurso precisa estar dentro de um **Grupo de Recursos**, uma agrupação lógica de um ou mais recursos.
+
+> 💁 Usar grupos de recursos significa que você pode gerenciar vários serviços de uma vez. Por exemplo, depois de concluir todas as lições deste projeto, você pode excluir o grupo de recursos, e todos os recursos nele serão excluídos automaticamente.
+
+1. Existem vários data centers do Azure ao redor do mundo, divididos em regiões. Quando você cria um recurso ou grupo de recursos no Azure, precisa especificar onde deseja que ele seja criado. Execute o seguinte comando para obter a lista de locais:
+
+ ```sh
+ az account list-locations --output table
+ ```
+
+ Você verá uma lista de locais. Esta lista será longa.
+
+ > 💁 No momento da redação, existem 65 locais onde você pode implantar.
+
+ ```output
+ ➜ ~ az account list-locations --output table
+ DisplayName Name RegionalDisplayName
+ ------------------------ ------------------- -------------------------------------
+ East US eastus (US) East US
+ East US 2 eastus2 (US) East US 2
+ South Central US southcentralus (US) South Central US
+ ...
+ ```
+
+ Anote o valor da coluna `Name` da região mais próxima de você. Você pode encontrar as regiões em um mapa na [página de geografias do Azure](https://azure.microsoft.com/global-infrastructure/geographies/?WT.mc_id=academic-17441-jabenn).
+
+1. Execute o seguinte comando para criar um grupo de recursos chamado `soil-moisture-sensor`. Os nomes dos grupos de recursos precisam ser exclusivos na sua assinatura.
+
+ ```sh
+ az group create --name soil-moisture-sensor \
+ --location
+ ```
+
+ Substitua `` pelo local que você selecionou na etapa anterior.
+
+### Tarefa - criar um IoT Hub
+
+Agora você pode criar um recurso IoT Hub no seu grupo de recursos.
+
+1. Use o seguinte comando para criar seu recurso IoT Hub:
+
+ ```sh
+ az iot hub create --resource-group soil-moisture-sensor \
+ --sku F1 \
+ --partition-count 2 \
+ --name
+ ```
+
+ Substitua `` por um nome para o seu hub. Este nome precisa ser globalmente único - ou seja, nenhum outro IoT Hub criado por qualquer pessoa pode ter o mesmo nome. Este nome é usado em uma URL que aponta para o hub, então precisa ser único. Use algo como `soil-moisture-sensor-` e adicione um identificador único no final, como algumas palavras aleatórias ou seu nome.
+
+ A opção `--sku F1` indica que será usado um nível gratuito. O nível gratuito suporta 8.000 mensagens por dia, juntamente com a maioria dos recursos dos níveis pagos.
+
+ > 🎓 Diferentes níveis de preços dos serviços do Azure são chamados de tiers. Cada tier tem um custo diferente e oferece diferentes recursos ou volumes de dados.
+
+ > 💁 Se você quiser saber mais sobre preços, pode conferir o [guia de preços do Azure IoT Hub](https://azure.microsoft.com/pricing/details/iot-hub/?WT.mc_id=academic-17441-jabenn).
+
+ A opção `--partition-count 2` define quantos fluxos de dados o IoT Hub suporta. Mais partições reduzem o bloqueio de dados quando várias coisas leem e escrevem no IoT Hub. Partições estão fora do escopo destas lições, mas este valor precisa ser definido para criar um IoT Hub de nível gratuito.
+
+ > 💁 Você só pode ter um IoT Hub de nível gratuito por assinatura.
+
+O IoT Hub será criado. Pode levar um minuto ou mais para concluir.
+
+## Comunicar-se com o IoT Hub
+
+Na lição anterior, você usou MQTT e enviou mensagens de ida e volta em diferentes tópicos, com os diferentes tópicos tendo diferentes propósitos. Em vez de enviar mensagens por diferentes tópicos, o IoT Hub tem várias maneiras definidas para o dispositivo se comunicar com o Hub ou para o Hub se comunicar com o dispositivo.
+
+> 💁 Por trás das cenas, essa comunicação entre o IoT Hub e seu dispositivo pode usar MQTT, HTTPS ou AMQP.
+
+* Mensagens de dispositivo para nuvem (D2C) - são mensagens enviadas de um dispositivo para o IoT Hub, como telemetria. Elas podem ser lidas do IoT Hub pelo código do seu aplicativo.
+
+ > 🎓 Por trás das cenas, o IoT Hub usa um serviço do Azure chamado [Event Hubs](https://docs.microsoft.com/azure/event-hubs/?WT.mc_id=academic-17441-jabenn). Quando você escreve código para ler mensagens enviadas ao hub, elas geralmente são chamadas de eventos.
+
+* Mensagens de nuvem para dispositivo (C2D) - são mensagens enviadas do código do aplicativo, via IoT Hub, para um dispositivo IoT.
+
+* Solicitações de método direto - são mensagens enviadas do código do aplicativo via IoT Hub para um dispositivo IoT para solicitar que o dispositivo faça algo, como controlar um atuador. Essas mensagens exigem uma resposta para que o código do aplicativo possa saber se foram processadas com sucesso.
+
+* Gêmeos de dispositivos - são documentos JSON mantidos sincronizados entre o dispositivo e o IoT Hub, usados para armazenar configurações ou outras propriedades relatadas pelo dispositivo ou que devem ser definidas no dispositivo (conhecidas como desejadas) pelo IoT Hub.
+
+O IoT Hub pode armazenar mensagens e solicitações de método direto por um período de tempo configurável (padrão de um dia), então, se um dispositivo ou código de aplicativo perder a conexão, ele ainda poderá recuperar mensagens enviadas enquanto estava offline após reconectar. Os gêmeos de dispositivos são mantidos permanentemente no IoT Hub, então, a qualquer momento, um dispositivo pode se reconectar e obter o gêmeo de dispositivo mais recente.
+
+✅ Faça uma pesquisa: Leia mais sobre esses tipos de mensagens na [orientação de comunicações de dispositivo para nuvem](https://docs.microsoft.com/azure/iot-hub/iot-hub-devguide-d2c-guidance?WT.mc_id=academic-17441-jabenn) e na [orientação de comunicações de nuvem para dispositivo](https://docs.microsoft.com/azure/iot-hub/iot-hub-devguide-c2d-guidance?WT.mc_id=academic-17441-jabenn) na documentação do IoT Hub.
+
+## Conectar seu dispositivo ao serviço de IoT
+
+Depois que o hub for criado, seu dispositivo IoT poderá se conectar a ele. Apenas dispositivos registrados podem se conectar a um serviço, então você precisará registrar seu dispositivo primeiro. Quando você registra, pode obter uma string de conexão que o dispositivo pode usar para se conectar. Essa string de conexão é específica do dispositivo e contém informações sobre o IoT Hub, o dispositivo e uma chave secreta que permitirá que este dispositivo se conecte.
+
+> 🎓 Uma string de conexão é um termo genérico para um texto que contém detalhes de conexão. Elas são usadas ao conectar-se a IoT Hubs, bancos de dados e muitos outros serviços. Geralmente consistem em um identificador para o serviço, como uma URL, e informações de segurança, como uma chave secreta. Elas são passadas para SDKs para conectar-se ao serviço.
+
+> ⚠️ Strings de conexão devem ser mantidas seguras! A segurança será abordada em mais detalhes em uma lição futura.
+
+### Tarefa - registrar seu dispositivo IoT
+
+O dispositivo IoT pode ser registrado no seu IoT Hub usando o Azure CLI.
+
+1. Execute o seguinte comando para registrar um dispositivo:
+
+ ```sh
+ az iot hub device-identity create --device-id soil-moisture-sensor \
+ --hub-name
+ ```
+
+ Substitua `` pelo nome que você usou para seu IoT Hub.
+
+ Isso criará um dispositivo com um ID de `soil-moisture-sensor`.
+
+1. Quando seu dispositivo IoT se conectar ao seu IoT Hub usando o SDK, ele precisará usar uma string de conexão que fornece a URL do hub, juntamente com uma chave secreta. Execute o seguinte comando para obter a string de conexão:
+
+ ```sh
+ az iot hub device-identity connection-string show --device-id soil-moisture-sensor \
+ --output table \
+ --hub-name
+ ```
+
+ Substitua `` pelo nome que você usou para seu IoT Hub.
+
+1. Armazene a string de conexão exibida na saída, pois você precisará dela mais tarde.
+
+### Tarefa - conectar seu dispositivo IoT à nuvem
+
+Siga o guia relevante para conectar seu dispositivo IoT à nuvem:
+
+* [Arduino - Wio Terminal](wio-terminal-connect-hub.md)
+* [Computador de placa única - Raspberry Pi/Dispositivo IoT Virtual](single-board-computer-connect-hub.md)
+
+### Tarefa - monitorar eventos
+
+Por enquanto, você não atualizará o código do servidor. Em vez disso, pode usar o Azure CLI para monitorar eventos do seu dispositivo IoT.
+
+1. Certifique-se de que seu dispositivo IoT está funcionando e enviando valores de telemetria de umidade do solo.
+
+1. Execute o seguinte comando no seu prompt de comando ou terminal para monitorar mensagens enviadas ao seu IoT Hub:
+
+ ```sh
+ az iot hub monitor-events --hub-name
+ ```
+
+ Substitua `` pelo nome que você usou para seu IoT Hub.
+
+ Você verá mensagens aparecerem na saída do console à medida que são enviadas pelo seu dispositivo IoT.
+
+ ```output
+ Starting event monitor, use ctrl-c to stop...
+ {
+ "event": {
+ "origin": "soil-moisture-sensor",
+ "module": "",
+ "interface": "",
+ "component": "",
+ "payload": "{\"soil_moisture\": 376}"
+ }
+ },
+ {
+ "event": {
+ "origin": "soil-moisture-sensor",
+ "module": "",
+ "interface": "",
+ "component": "",
+ "payload": "{\"soil_moisture\": 381}"
+ }
+ }
+ ```
+
+ O conteúdo do `payload` corresponderá à mensagem enviada pelo seu dispositivo IoT.
+
+ > No momento da redação, a extensão `az iot` não está funcionando totalmente em dispositivos Apple Silicon. Se você estiver usando um dispositivo Apple Silicon, precisará monitorar as mensagens de outra forma, como usando o [Azure IoT Tools para Visual Studio Code](https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-vscode-iot-toolkit-cloud-device-messaging).
+
+1. Essas mensagens têm várias propriedades anexadas automaticamente, como o timestamp em que foram enviadas. Essas propriedades são conhecidas como *anotações*. Para visualizar todas as anotações de mensagens, use o seguinte comando:
+
+ ```sh
+ az iot hub monitor-events --properties anno --hub-name
+ ```
+
+ Substitua `` pelo nome que você usou para seu IoT Hub.
+
+ Você verá mensagens aparecerem na saída do console à medida que são enviadas pelo seu dispositivo IoT.
+
+ ```output
+ Starting event monitor, use ctrl-c to stop...
+ {
+ "event": {
+ "origin": "soil-moisture-sensor",
+ "module": "",
+ "interface": "",
+ "component": "",
+ "properties": {},
+ "annotations": {
+ "iothub-connection-device-id": "soil-moisture-sensor",
+ "iothub-connection-auth-method": "{\"scope\":\"device\",\"type\":\"sas\",\"issuer\":\"iothub\",\"acceptingIpFilterRule\":null}",
+ "iothub-connection-auth-generation-id": "637553997165220462",
+ "iothub-enqueuedtime": 1619976150288,
+ "iothub-message-source": "Telemetry",
+ "x-opt-sequence-number": 1379,
+ "x-opt-offset": "550576",
+ "x-opt-enqueued-time": 1619976150277
+ },
+ "payload": "{\"soil_moisture\": 381}"
+ }
+ }
+ ```
+
+ Os valores de tempo nas anotações estão em [tempo UNIX](https://wikipedia.org/wiki/Unix_time), representando o número de segundos desde a meia-noite de 1º de janeiro de 1970.
+
+ Saia do monitor de eventos quando terminar.
+
+### Tarefa - controlar seu dispositivo IoT
+
+Você também pode usar o Azure CLI para chamar métodos diretos no seu dispositivo IoT.
+
+1. Execute o seguinte comando no seu prompt de comando ou terminal para invocar o método `relay_on` no dispositivo IoT:
+
+ ```sh
+ az iot hub invoke-device-method --device-id soil-moisture-sensor \
+ --method-name relay_on \
+ --method-payload '{}' \
+ --hub-name
+ ```
+
+ Substitua `
+
+` com o nome que você usou para o seu IoT Hub.
+
+Isso envia uma solicitação de método direto para o método especificado por `method-name`. Métodos diretos podem receber um payload contendo dados para o método, e isso pode ser especificado no parâmetro `method-payload` como JSON.
+
+Você verá o relé ligar e a saída correspondente do seu dispositivo IoT:
+
+```output
+ Direct method received - relay_on
+ ```
+
+1. Repita o passo acima, mas defina o `--method-name` como `relay_off`. Você verá o relé desligar e a saída correspondente do dispositivo IoT.
+
+---
+
+## 🚀 Desafio
+
+O nível gratuito do IoT Hub permite 8.000 mensagens por dia. O código que você escreveu envia mensagens de telemetria a cada 10 segundos. Quantas mensagens por dia são enviadas com uma mensagem a cada 10 segundos?
+
+Pense em com que frequência as medições de umidade do solo devem ser enviadas. Como você pode alterar seu código para permanecer dentro do nível gratuito e verificar com a frequência necessária, mas sem exagerar? E se você quisesse adicionar um segundo dispositivo?
+
+## Questionário pós-aula
+
+[Questionário pós-aula](https://black-meadow-040d15503.1.azurestaticapps.net/quiz/16)
+
+## Revisão e Autoestudo
+
+O SDK do IoT Hub é de código aberto tanto para Arduino quanto para Python. Nos repositórios de código no GitHub, há vários exemplos mostrando como trabalhar com diferentes recursos do IoT Hub.
+
+* Se você estiver usando um Wio Terminal, confira os [exemplos de Arduino no GitHub](https://github.com/Azure/azure-iot-pal-arduino/tree/master/pal/samples)
+* Se você estiver usando um Raspberry Pi ou dispositivo virtual, confira os [exemplos de Python no GitHub](https://github.com/Azure/azure-iot-sdk-python/tree/master/azure-iot-hub/samples)
+
+## Tarefa
+
+[Aprenda sobre serviços em nuvem](assignment.md)
+
+---
+
+**Aviso Legal**:
+Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.
\ No newline at end of file
diff --git a/translations/br/2-farm/lessons/4-migrate-your-plant-to-the-cloud/assignment.md b/translations/br/2-farm/lessons/4-migrate-your-plant-to-the-cloud/assignment.md
new file mode 100644
index 00000000..9667e021
--- /dev/null
+++ b/translations/br/2-farm/lessons/4-migrate-your-plant-to-the-cloud/assignment.md
@@ -0,0 +1,33 @@
+
+# Aprenda sobre serviços em nuvem
+
+## Instruções
+
+Nuvens, como o Azure da Microsoft, oferecem mais do que apenas computação para alugar. Os principais tipos de ofertas de nuvem incluem:
+
+* Infraestrutura como serviço (IaaS)
+* Plataforma como serviço (PaaS)
+* Serverless
+* Software como serviço (SaaS)
+
+Aprenda sobre esses diferentes tipos de ofertas e explique o que são e como diferem. Explique quais ofertas são relevantes para desenvolvedores de IoT.
+
+## Rubrica
+
+| Critério | Exemplar | Adequado | Precisa Melhorar |
+| -------- | --------- | -------- | ---------------- |
+| Explicar as diferentes ofertas de nuvem | Forneceu explicações claras sobre todos os 4 tipos de ofertas | Foi capaz de explicar 3 tipos de ofertas | Foi capaz de explicar apenas 1 ou 2 dos tipos de ofertas |
+| Explicar qual oferta é relevante para IoT | Descreveu uma explicação de quais ofertas são relevantes para desenvolvedores de IoT e por quê | Descreveu uma explicação de quais ofertas são relevantes para desenvolvedores de IoT, mas não por quê | Não conseguiu descrever quais ofertas são relevantes para desenvolvedores de IoT |
+
+---
+
+**Aviso Legal**:
+Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.
\ No newline at end of file
diff --git a/translations/br/2-farm/lessons/4-migrate-your-plant-to-the-cloud/single-board-computer-connect-hub.md b/translations/br/2-farm/lessons/4-migrate-your-plant-to-the-cloud/single-board-computer-connect-hub.md
new file mode 100644
index 00000000..631d40de
--- /dev/null
+++ b/translations/br/2-farm/lessons/4-migrate-your-plant-to-the-cloud/single-board-computer-connect-hub.md
@@ -0,0 +1,130 @@
+
+# Conecte seu dispositivo IoT à nuvem - Hardware IoT Virtual e Raspberry Pi
+
+Nesta parte da lição, você conectará seu dispositivo IoT virtual ou Raspberry Pi ao IoT Hub, para enviar telemetria e receber comandos.
+
+## Conecte seu dispositivo ao IoT Hub
+
+O próximo passo é conectar seu dispositivo ao IoT Hub.
+
+### Tarefa - conectar ao IoT Hub
+
+1. Abra a pasta `soil-moisture-sensor` no VS Code. Certifique-se de que o ambiente virtual está em execução no terminal, caso esteja utilizando um dispositivo IoT virtual.
+
+1. Instale alguns pacotes adicionais do Pip:
+
+ ```sh
+ pip3 install azure-iot-device
+ ```
+
+ `azure-iot-device` é uma biblioteca para se comunicar com seu IoT Hub.
+
+1. Adicione as seguintes importações no topo do arquivo `app.py`, abaixo das importações existentes:
+
+ ```python
+ from azure.iot.device import IoTHubDeviceClient, Message, MethodResponse
+ ```
+
+ Este código importa o SDK para se comunicar com seu IoT Hub.
+
+1. Remova a linha `import paho.mqtt.client as mqtt`, pois esta biblioteca não será mais necessária. Remova todo o código relacionado ao MQTT, incluindo os nomes dos tópicos, todo o código que utiliza `mqtt_client` e o `handle_command`. Mantenha o loop `while True:`, apenas exclua a linha `mqtt_client.publish` deste loop.
+
+1. Adicione o seguinte código abaixo das declarações de importação:
+
+ ```python
+ connection_string = ""
+ ```
+
+ Substitua `` pela string de conexão que você recuperou para o dispositivo anteriormente nesta lição.
+
+ > 💁 Isso não é uma prática recomendada. Strings de conexão nunca devem ser armazenadas no código-fonte, pois podem ser verificadas no controle de versão e encontradas por qualquer pessoa. Estamos fazendo isso aqui por simplicidade. Idealmente, você deveria usar algo como uma variável de ambiente e uma ferramenta como [`python-dotenv`](https://pypi.org/project/python-dotenv/). Você aprenderá mais sobre isso em uma lição futura.
+
+1. Abaixo deste código, adicione o seguinte para criar um objeto cliente de dispositivo que possa se comunicar com o IoT Hub e conectá-lo:
+
+ ```python
+ device_client = IoTHubDeviceClient.create_from_connection_string(connection_string)
+
+ print('Connecting')
+ device_client.connect()
+ print('Connected')
+ ```
+
+1. Execute este código. Você verá seu dispositivo se conectar.
+
+ ```output
+ pi@raspberrypi:~/soil-moisture-sensor $ python3 app.py
+ Connecting
+ Connected
+ Soil moisture: 379
+ ```
+
+## Enviar telemetria
+
+Agora que seu dispositivo está conectado, você pode enviar telemetria para o IoT Hub em vez do broker MQTT.
+
+### Tarefa - enviar telemetria
+
+1. Adicione o seguinte código dentro do loop `while True`, logo antes do comando de pausa (`sleep`):
+
+ ```python
+ message = Message(json.dumps({ 'soil_moisture': soil_moisture }))
+ device_client.send_message(message)
+ ```
+
+ Este código cria uma `Message` do IoT Hub contendo a leitura de umidade do solo como uma string JSON e a envia para o IoT Hub como uma mensagem de dispositivo para nuvem.
+
+## Manipular comandos
+
+Seu dispositivo precisa manipular um comando do código do servidor para controlar o relé. Isso é enviado como uma solicitação de método direto.
+
+## Tarefa - manipular uma solicitação de método direto
+
+1. Adicione o seguinte código antes do loop `while True`:
+
+ ```python
+ def handle_method_request(request):
+ print("Direct method received - ", request.name)
+
+ if request.name == "relay_on":
+ relay.on()
+ elif request.name == "relay_off":
+ relay.off()
+ ```
+
+ Isso define um método, `handle_method_request`, que será chamado quando um método direto for chamado pelo IoT Hub. Cada método direto tem um nome, e este código espera um método chamado `relay_on` para ligar o relé e `relay_off` para desligá-lo.
+
+ > 💁 Isso também poderia ser implementado em uma única solicitação de método direto, passando o estado desejado do relé em um payload que pode ser enviado com a solicitação de método e acessado a partir do objeto `request`.
+
+1. Métodos diretos requerem uma resposta para informar ao código que os chamou que foram tratados. Adicione o seguinte código ao final da função `handle_method_request` para criar uma resposta à solicitação:
+
+ ```python
+ method_response = MethodResponse.create_from_method_request(request, 200)
+ device_client.send_method_response(method_response)
+ ```
+
+ Este código envia uma resposta à solicitação de método direto com um código de status HTTP 200 e a envia de volta ao IoT Hub.
+
+1. Adicione o seguinte código abaixo da definição desta função:
+
+ ```python
+ device_client.on_method_request_received = handle_method_request
+ ```
+
+ Este código informa ao cliente do IoT Hub para chamar a função `handle_method_request` quando um método direto for chamado.
+
+> 💁 Você pode encontrar este código na pasta [code/pi](../../../../../2-farm/lessons/4-migrate-your-plant-to-the-cloud/code/pi) ou [code/virtual-device](../../../../../2-farm/lessons/4-migrate-your-plant-to-the-cloud/code/virtual-device).
+
+😀 Seu programa de sensor de umidade do solo está conectado ao seu IoT Hub!
+
+---
+
+**Aviso Legal**:
+Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.
\ No newline at end of file
diff --git a/translations/br/2-farm/lessons/4-migrate-your-plant-to-the-cloud/wio-terminal-connect-hub.md b/translations/br/2-farm/lessons/4-migrate-your-plant-to-the-cloud/wio-terminal-connect-hub.md
new file mode 100644
index 00000000..7a4eac26
--- /dev/null
+++ b/translations/br/2-farm/lessons/4-migrate-your-plant-to-the-cloud/wio-terminal-connect-hub.md
@@ -0,0 +1,306 @@
+
+# Conecte seu dispositivo IoT à nuvem - Wio Terminal
+
+Nesta parte da lição, você conectará seu Wio Terminal ao seu IoT Hub para enviar telemetria e receber comandos.
+
+## Conecte seu dispositivo ao IoT Hub
+
+O próximo passo é conectar seu dispositivo ao IoT Hub.
+
+### Tarefa - conectar ao IoT Hub
+
+1. Abra o projeto `soil-moisture-sensor` no VS Code.
+
+1. Abra o arquivo `platformio.ini`. Remova a dependência da biblioteca `knolleary/PubSubClient`. Esta biblioteca era usada para conectar ao broker MQTT público e não é necessária para conectar ao IoT Hub.
+
+1. Adicione as seguintes dependências de biblioteca:
+
+ ```ini
+ seeed-studio/Seeed Arduino RTC @ 2.0.0
+ arduino-libraries/AzureIoTHub @ 1.6.0
+ azure/AzureIoTUtility @ 1.6.1
+ azure/AzureIoTProtocol_MQTT @ 1.6.0
+ azure/AzureIoTProtocol_HTTP @ 1.6.0
+ azure/AzureIoTSocket_WiFi @ 1.0.2
+ ```
+
+ A biblioteca `Seeed Arduino RTC` fornece código para interagir com um relógio de tempo real no Wio Terminal, usado para rastrear o tempo. As bibliotecas restantes permitem que seu dispositivo IoT se conecte ao IoT Hub.
+
+1. Adicione o seguinte ao final do arquivo `platformio.ini`:
+
+ ```ini
+ build_flags =
+ -DDONT_USE_UPLOADTOBLOB
+ ```
+
+ Isso define uma flag de compilador necessária ao compilar o código do Arduino IoT Hub.
+
+1. Abra o arquivo de cabeçalho `config.h`. Remova todas as configurações de MQTT e adicione a seguinte constante para a string de conexão do dispositivo:
+
+ ```cpp
+ // IoT Hub settings
+ const char *CONNECTION_STRING = "";
+ ```
+
+ Substitua `` pela string de conexão do seu dispositivo que você copiou anteriormente.
+
+1. A conexão ao IoT Hub utiliza um token baseado em tempo. Isso significa que o dispositivo IoT precisa saber o horário atual. Diferentemente de sistemas operacionais como Windows, macOS ou Linux, microcontroladores não sincronizam automaticamente o horário atual pela Internet. Isso significa que você precisará adicionar código para obter o horário atual de um servidor [NTP](https://wikipedia.org/wiki/Network_Time_Protocol). Depois que o horário for obtido, ele pode ser armazenado em um relógio de tempo real no Wio Terminal, permitindo que o horário correto seja solicitado posteriormente, assumindo que o dispositivo não perca energia. Adicione um novo arquivo chamado `ntp.h` com o seguinte código:
+
+ ```cpp
+ #pragma once
+
+ #include "DateTime.h"
+ #include
+ #include "samd/NTPClientAz.h"
+ #include
+
+ static void initTime()
+ {
+ WiFiUDP _udp;
+ time_t epochTime = (time_t)-1;
+ NTPClientAz ntpClient;
+
+ ntpClient.begin();
+
+ while (true)
+ {
+ epochTime = ntpClient.getEpochTime("0.pool.ntp.org");
+
+ if (epochTime == (time_t)-1)
+ {
+ Serial.println("Fetching NTP epoch time failed! Waiting 2 seconds to retry.");
+ delay(2000);
+ }
+ else
+ {
+ Serial.print("Fetched NTP epoch time is: ");
+
+ char buff[32];
+ sprintf(buff, "%.f", difftime(epochTime, (time_t)0));
+ Serial.println(buff);
+ break;
+ }
+ }
+
+ ntpClient.end();
+
+ struct timeval tv;
+ tv.tv_sec = epochTime;
+ tv.tv_usec = 0;
+
+ settimeofday(&tv, NULL);
+ }
+ ```
+
+ Os detalhes deste código estão fora do escopo desta lição. Ele define uma função chamada `initTime` que obtém o horário atual de um servidor NTP e o utiliza para configurar o relógio no Wio Terminal.
+
+1. Abra o arquivo `main.cpp` e remova todo o código MQTT, incluindo o arquivo de cabeçalho `PubSubClient.h`, a declaração da variável `PubSubClient`, os métodos `reconnectMQTTClient` e `createMQTTClient`, e quaisquer chamadas para essas variáveis e métodos. Este arquivo deve conter apenas código para conectar ao WiFi, obter a umidade do solo e criar um documento JSON com esses dados.
+
+1. Adicione as seguintes diretivas `#include` ao topo do arquivo `main.cpp` para incluir os arquivos de cabeçalho das bibliotecas do IoT Hub e para configurar o horário:
+
+ ```cpp
+ #include
+ #include
+ #include
+ #include "ntp.h"
+ ```
+
+1. Adicione a seguinte chamada ao final da função `setup` para configurar o horário atual:
+
+ ```cpp
+ initTime();
+ ```
+
+1. Adicione a seguinte declaração de variável ao topo do arquivo, logo abaixo das diretivas de inclusão:
+
+ ```cpp
+ IOTHUB_DEVICE_CLIENT_LL_HANDLE _device_ll_handle;
+ ```
+
+ Isso declara um `IOTHUB_DEVICE_CLIENT_LL_HANDLE`, um identificador para uma conexão com o IoT Hub.
+
+1. Abaixo disso, adicione o seguinte código:
+
+ ```cpp
+ static void connectionStatusCallback(IOTHUB_CLIENT_CONNECTION_STATUS result, IOTHUB_CLIENT_CONNECTION_STATUS_REASON reason, void *user_context)
+ {
+ if (result == IOTHUB_CLIENT_CONNECTION_AUTHENTICATED)
+ {
+ Serial.println("The device client is connected to iothub");
+ }
+ else
+ {
+ Serial.println("The device client has been disconnected");
+ }
+ }
+ ```
+
+ Isso declara uma função de callback que será chamada quando a conexão com o IoT Hub mudar de status, como conectar ou desconectar. O status é enviado para a porta serial.
+
+1. Abaixo disso, adicione uma função para conectar ao IoT Hub:
+
+ ```cpp
+ void connectIoTHub()
+ {
+ IoTHub_Init();
+
+ _device_ll_handle = IoTHubDeviceClient_LL_CreateFromConnectionString(CONNECTION_STRING, MQTT_Protocol);
+
+ if (_device_ll_handle == NULL)
+ {
+ Serial.println("Failure creating Iothub device. Hint: Check your connection string.");
+ return;
+ }
+
+ IoTHubDeviceClient_LL_SetConnectionStatusCallback(_device_ll_handle, connectionStatusCallback, NULL);
+ }
+ ```
+
+ Este código inicializa o código da biblioteca do IoT Hub e, em seguida, cria uma conexão usando a string de conexão no arquivo de cabeçalho `config.h`. Esta conexão é baseada em MQTT. Se a conexão falhar, isso será enviado para a porta serial - se você vir isso na saída, verifique a string de conexão. Por fim, o callback de status da conexão é configurado.
+
+1. Chame esta função na função `setup` abaixo da chamada para `initTime`:
+
+ ```cpp
+ connectIoTHub();
+ ```
+
+1. Assim como no cliente MQTT, este código é executado em uma única thread, então precisa de tempo para processar mensagens enviadas pelo hub e para o hub. Adicione o seguinte ao topo da função `loop` para fazer isso:
+
+ ```cpp
+ IoTHubDeviceClient_LL_DoWork(_device_ll_handle);
+ ```
+
+1. Compile e carregue este código. Você verá a conexão no monitor serial:
+
+ ```output
+ Connecting to WiFi..
+ Connected!
+ Fetched NTP epoch time is: 1619983687
+ Sending telemetry {"soil_moisture":391}
+ The device client is connected to iothub
+ ```
+
+ Na saída, você pode ver o horário NTP sendo obtido, seguido pelo cliente do dispositivo conectando. Pode levar alguns segundos para conectar, então você pode ver a umidade do solo na saída enquanto o dispositivo está conectando.
+
+ > 💁 Você pode converter o horário UNIX do NTP para uma versão mais legível usando um site como [unixtimestamp.com](https://www.unixtimestamp.com)
+
+## Enviar telemetria
+
+Agora que seu dispositivo está conectado, você pode enviar telemetria para o IoT Hub em vez do broker MQTT.
+
+### Tarefa - enviar telemetria
+
+1. Adicione a seguinte função acima da função `setup`:
+
+ ```cpp
+ void sendTelemetry(const char *telemetry)
+ {
+ IOTHUB_MESSAGE_HANDLE message_handle = IoTHubMessage_CreateFromString(telemetry);
+ IoTHubDeviceClient_LL_SendEventAsync(_device_ll_handle, message_handle, NULL, NULL);
+ IoTHubMessage_Destroy(message_handle);
+ }
+ ```
+
+ Este código cria uma mensagem do IoT Hub a partir de uma string passada como parâmetro, envia-a para o hub e, em seguida, limpa o objeto da mensagem.
+
+1. Chame este código na função `loop`, logo após a linha onde a telemetria é enviada para a porta serial:
+
+ ```cpp
+ sendTelemetry(telemetry.c_str());
+ ```
+
+## Manipular comandos
+
+Seu dispositivo precisa manipular um comando do código do servidor para controlar o relé. Isso é enviado como uma solicitação de método direto.
+
+## Tarefa - manipular uma solicitação de método direto
+
+1. Adicione o seguinte código antes da função `connectIoTHub`:
+
+ ```cpp
+ int directMethodCallback(const char *method_name, const unsigned char *payload, size_t size, unsigned char **response, size_t *response_size, void *userContextCallback)
+ {
+ Serial.printf("Direct method received %s\r\n", method_name);
+
+ if (strcmp(method_name, "relay_on") == 0)
+ {
+ digitalWrite(PIN_WIRE_SCL, HIGH);
+ }
+ else if (strcmp(method_name, "relay_off") == 0)
+ {
+ digitalWrite(PIN_WIRE_SCL, LOW);
+ }
+ }
+ ```
+
+ Este código define uma função de callback que a biblioteca do IoT Hub pode chamar quando recebe uma solicitação de método direto. O método solicitado é enviado no parâmetro `method_name`. Esta função imprime o método chamado na porta serial e, em seguida, liga ou desliga o relé dependendo do nome do método.
+
+ > 💁 Isso também poderia ser implementado em uma única solicitação de método direto, passando o estado desejado do relé em um payload que pode ser enviado com a solicitação de método e disponível no parâmetro `payload`.
+
+1. Adicione o seguinte código ao final da função `directMethodCallback`:
+
+ ```cpp
+ char resultBuff[16];
+ sprintf(resultBuff, "{\"Result\":\"\"}");
+ *response_size = strlen(resultBuff);
+ *response = (unsigned char *)malloc(*response_size);
+ memcpy(*response, resultBuff, *response_size);
+
+ return IOTHUB_CLIENT_OK;
+ ```
+
+ Solicitações de método direto precisam de uma resposta, e a resposta é composta por duas partes - uma resposta como texto e um código de retorno. Este código criará um resultado como o seguinte documento JSON:
+
+ ```JSON
+ {
+ "Result": ""
+ }
+ ```
+
+ Isso é então copiado no parâmetro `response`, e o tamanho desta resposta é configurado no parâmetro `response_size`. Este código então retorna `IOTHUB_CLIENT_OK` para mostrar que o método foi manipulado corretamente.
+
+1. Configure o callback adicionando o seguinte ao final da função `connectIoTHub`:
+
+ ```cpp
+ IoTHubClient_LL_SetDeviceMethodCallback(_device_ll_handle, directMethodCallback, NULL);
+ ```
+
+1. A função `loop` chamará a função `IoTHubDeviceClient_LL_DoWork` para processar eventos enviados pelo IoT Hub. Isso é chamado apenas a cada 10 segundos devido ao `delay`, o que significa que métodos diretos são processados apenas a cada 10 segundos. Para tornar isso mais eficiente, o atraso de 10 segundos pode ser implementado como vários atrasos mais curtos, chamando `IoTHubDeviceClient_LL_DoWork` a cada vez. Para fazer isso, adicione o seguinte código acima da função `loop`:
+
+ ```cpp
+ void work_delay(int delay_time)
+ {
+ int current = 0;
+ do
+ {
+ IoTHubDeviceClient_LL_DoWork(_device_ll_handle);
+ delay(100);
+ current += 100;
+ } while (current < delay_time);
+ }
+ ```
+
+ Este código fará um loop repetidamente, chamando `IoTHubDeviceClient_LL_DoWork` e atrasando por 100ms a cada vez. Ele fará isso tantas vezes quanto necessário para atrasar pelo tempo dado no parâmetro `delay_time`. Isso significa que o dispositivo está esperando no máximo 100ms para processar solicitações de método direto.
+
+1. Na função `loop`, remova a chamada para `IoTHubDeviceClient_LL_DoWork` e substitua a chamada `delay(10000)` pelo seguinte para chamar esta nova função:
+
+ ```cpp
+ work_delay(10000);
+ ```
+
+> 💁 Você pode encontrar este código na pasta [code/wio-terminal](../../../../../2-farm/lessons/4-migrate-your-plant-to-the-cloud/code/wio-terminal).
+
+😀 Seu programa de sensor de umidade do solo está conectado ao seu IoT Hub!
+
+---
+
+**Aviso Legal**:
+Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.
\ No newline at end of file
diff --git a/translations/br/2-farm/lessons/5-migrate-application-to-the-cloud/README.md b/translations/br/2-farm/lessons/5-migrate-application-to-the-cloud/README.md
new file mode 100644
index 00000000..652dfd56
--- /dev/null
+++ b/translations/br/2-farm/lessons/5-migrate-application-to-the-cloud/README.md
@@ -0,0 +1,656 @@
+
+# Migre a lógica da sua aplicação para a nuvem
+
+
+
+> Ilustração por [Nitya Narasimhan](https://github.com/nitya). Clique na imagem para uma versão maior.
+
+Esta lição foi ensinada como parte da série [IoT para Iniciantes - Projeto 2: Agricultura Digital](https://youtube.com/playlist?list=PLmsFUfdnGr3yCutmcVg6eAUEfsGiFXgcx) do [Microsoft Reactor](https://developer.microsoft.com/reactor/?WT.mc_id=academic-17441-jabenn).
+
+[](https://youtu.be/VVZDcs5u1_I)
+
+## Questionário pré-aula
+
+[Questionário pré-aula](https://black-meadow-040d15503.1.azurestaticapps.net/quiz/17)
+
+## Introdução
+
+Na última lição, você aprendeu como conectar o monitoramento de umidade do solo da planta e o controle de relé a um serviço de IoT baseado na nuvem. O próximo passo é mover o código do servidor que controla o tempo do relé para a nuvem. Nesta lição, você aprenderá como fazer isso usando funções serverless.
+
+Nesta lição, abordaremos:
+
+* [O que é serverless?](../../../../../2-farm/lessons/5-migrate-application-to-the-cloud)
+* [Crie uma aplicação serverless](../../../../../2-farm/lessons/5-migrate-application-to-the-cloud)
+* [Crie um gatilho de evento do IoT Hub](../../../../../2-farm/lessons/5-migrate-application-to-the-cloud)
+* [Envie solicitações de método direto a partir de código serverless](../../../../../2-farm/lessons/5-migrate-application-to-the-cloud)
+* [Implante seu código serverless na nuvem](../../../../../2-farm/lessons/5-migrate-application-to-the-cloud)
+
+## O que é serverless?
+
+Serverless, ou computação sem servidor, envolve criar pequenos blocos de código que são executados na nuvem em resposta a diferentes tipos de eventos. Quando o evento ocorre, seu código é executado e recebe dados sobre o evento. Esses eventos podem vir de várias fontes, incluindo requisições web, mensagens colocadas em uma fila, alterações em dados de um banco de dados ou mensagens enviadas a um serviço de IoT por dispositivos IoT.
+
+
+
+> 💁 Se você já usou gatilhos de banco de dados antes, pode pensar nisso como algo semelhante: código sendo acionado por um evento, como a inserção de uma linha.
+
+
+
+Seu código só é executado quando o evento ocorre, não há nada mantendo seu código ativo em outros momentos. O evento acontece, seu código é carregado e executado. Isso torna o serverless muito escalável - se muitos eventos ocorrerem ao mesmo tempo, o provedor de nuvem pode executar sua função quantas vezes forem necessárias simultaneamente, utilizando os servidores disponíveis. A desvantagem disso é que, se você precisar compartilhar informações entre eventos, será necessário armazená-las em algum lugar, como um banco de dados, em vez de mantê-las na memória.
+
+Seu código é escrito como uma função que recebe detalhes sobre o evento como parâmetro. Você pode usar uma ampla gama de linguagens de programação para escrever essas funções serverless.
+
+> 🎓 Serverless também é conhecido como Functions as a Service (FaaS), já que cada gatilho de evento é implementado como uma função no código.
+
+Apesar do nome, serverless realmente utiliza servidores. O nome se refere ao fato de que, como desenvolvedor, você não precisa se preocupar com os servidores necessários para executar seu código; tudo o que importa é que seu código seja executado em resposta a um evento. O provedor de nuvem possui um *runtime* serverless que gerencia a alocação de servidores, rede, armazenamento, CPU, memória e tudo mais necessário para executar seu código. Nesse modelo, você não paga por servidor, mas sim pelo tempo em que seu código está sendo executado e pela quantidade de memória utilizada.
+
+> 💰 Serverless é uma das formas mais econômicas de executar código na nuvem. Por exemplo, no momento da escrita, um provedor de nuvem permite que todas as suas funções serverless sejam executadas um total combinado de 1.000.000 vezes por mês antes de começar a cobrar, e depois disso cobra US$0,20 por cada 1.000.000 execuções. Quando seu código não está sendo executado, você não paga.
+
+Como desenvolvedor de IoT, o modelo serverless é ideal. Você pode escrever uma função que é chamada em resposta a mensagens enviadas por qualquer dispositivo IoT conectado ao seu serviço de IoT hospedado na nuvem. Seu código lidará com todas as mensagens enviadas, mas só será executado quando necessário.
+
+✅ Relembre o código que você escreveu como servidor ouvindo mensagens via MQTT. Como isso poderia ser executado na nuvem usando serverless? Como você acha que o código precisaria ser alterado para suportar computação serverless?
+
+> 💁 O modelo serverless está se expandindo para outros serviços de nuvem além da execução de código. Por exemplo, bancos de dados serverless estão disponíveis na nuvem usando um modelo de preços serverless, onde você paga por cada solicitação feita ao banco de dados, como uma consulta ou inserção, geralmente com preços baseados na quantidade de trabalho necessário para atender à solicitação. Por exemplo, uma única seleção de uma linha com base em uma chave primária custará menos do que uma operação complexa que junta várias tabelas e retorna milhares de linhas.
+
+## Crie uma aplicação serverless
+
+O serviço de computação serverless da Microsoft é chamado Azure Functions.
+
+
+
+O vídeo curto abaixo oferece uma visão geral do Azure Functions.
+
+[](https://www.youtube.com/watch?v=8-jz5f_JyEQ)
+
+> 🎥 Clique na imagem acima para assistir ao vídeo.
+
+✅ Reserve um momento para pesquisar e ler a visão geral do Azure Functions na [documentação do Microsoft Azure Functions](https://docs.microsoft.com/azure/azure-functions/functions-overview?WT.mc_id=academic-17441-jabenn).
+
+Para escrever Azure Functions, você começa com um aplicativo de funções na linguagem de sua escolha. O Azure Functions suporta, por padrão, Python, JavaScript, TypeScript, C#, F#, Java e Powershell. Nesta lição, você aprenderá como escrever um aplicativo de funções em Python.
+
+> 💁 O Azure Functions também suporta manipuladores personalizados, permitindo que você escreva suas funções em qualquer linguagem que suporte requisições HTTP, incluindo linguagens mais antigas como COBOL.
+
+Os aplicativos de funções consistem em um ou mais *gatilhos* - funções que respondem a eventos. Você pode ter vários gatilhos dentro de um único aplicativo de funções, todos compartilhando uma configuração comum. Por exemplo, no arquivo de configuração do seu aplicativo de funções, você pode ter os detalhes de conexão do seu IoT Hub, e todas as funções no aplicativo podem usar isso para se conectar e ouvir eventos.
+
+### Tarefa - instale as ferramentas do Azure Functions
+
+> No momento da escrita, as ferramentas de código do Azure Functions não estão totalmente funcionais em Macs com Apple Silicon para projetos em Python. Você precisará usar um Mac baseado em Intel, PC com Windows ou PC com Linux.
+
+Uma ótima funcionalidade do Azure Functions é que você pode executá-lo localmente. O mesmo runtime usado na nuvem pode ser executado no seu computador, permitindo que você escreva código que responde a mensagens de IoT e o execute localmente. Você pode até depurar seu código enquanto os eventos são tratados. Quando estiver satisfeito com seu código, ele pode ser implantado na nuvem.
+
+As ferramentas do Azure Functions estão disponíveis como uma CLI, conhecida como Azure Functions Core Tools.
+
+1. Instale as ferramentas principais do Azure Functions seguindo as instruções na [documentação do Azure Functions Core Tools](https://docs.microsoft.com/azure/azure-functions/functions-run-local?WT.mc_id=academic-17441-jabenn).
+
+1. Instale a extensão do Azure Functions para o VS Code. Esta extensão oferece suporte para criar, depurar e implantar funções do Azure. Consulte a [documentação da extensão do Azure Functions](https://marketplace.visualstudio.com/items?WT.mc_id=academic-17441-jabenn&itemName=ms-azuretools.vscode-azurefunctions) para instruções sobre como instalar esta extensão no VS Code.
+
+Quando você implanta seu aplicativo de funções do Azure na nuvem, ele precisa usar uma pequena quantidade de armazenamento na nuvem para armazenar coisas como os arquivos do aplicativo e arquivos de log. Quando você executa seu aplicativo de funções localmente, ainda precisa se conectar ao armazenamento na nuvem, mas em vez de usar armazenamento real na nuvem, você pode usar um emulador de armazenamento chamado [Azurite](https://github.com/Azure/Azurite). Ele é executado localmente, mas age como armazenamento na nuvem.
+
+> 🎓 No Azure, o armazenamento que o Azure Functions usa é uma Conta de Armazenamento do Azure. Essas contas podem armazenar arquivos, blobs, dados em tabelas ou dados em filas. Você pode compartilhar uma conta de armazenamento entre vários aplicativos, como um aplicativo de funções e um aplicativo web.
+
+1. O Azurite é um aplicativo Node.js, então você precisará instalar o Node.js. Você pode encontrar as instruções de download e instalação no [site do Node.js](https://nodejs.org/). Se estiver usando um Mac, também pode instalá-lo pelo [Homebrew](https://formulae.brew.sh/formula/node).
+
+1. Instale o Azurite usando o seguinte comando (`npm` é uma ferramenta instalada junto com o Node.js):
+
+ ```sh
+ npm install -g azurite
+ ```
+
+1. Crie uma pasta chamada `azurite` para o Azurite usar para armazenar dados:
+
+ ```sh
+ mkdir azurite
+ ```
+
+1. Execute o Azurite, passando esta nova pasta:
+
+ ```sh
+ azurite --location azurite
+ ```
+
+ O emulador de armazenamento Azurite será iniciado e estará pronto para o runtime local do Functions se conectar.
+
+ ```output
+ ➜ ~ azurite --location azurite
+ Azurite Blob service is starting at http://127.0.0.1:10000
+ Azurite Blob service is successfully listening at http://127.0.0.1:10000
+ Azurite Queue service is starting at http://127.0.0.1:10001
+ Azurite Queue service is successfully listening at http://127.0.0.1:10001
+ Azurite Table service is starting at http://127.0.0.1:10002
+ Azurite Table service is successfully listening at http://127.0.0.1:10002
+ ```
+
+### Tarefa - crie um projeto Azure Functions
+
+A CLI do Azure Functions pode ser usada para criar um novo aplicativo de funções.
+
+1. Crie uma pasta para seu aplicativo de funções e navegue até ela. Chame-a de `soil-moisture-trigger`.
+
+ ```sh
+ mkdir soil-moisture-trigger
+ cd soil-moisture-trigger
+ ```
+
+1. Crie um ambiente virtual Python dentro desta pasta:
+
+ ```sh
+ python3 -m venv .venv
+ ```
+
+1. Ative o ambiente virtual:
+
+ * No Windows:
+ * Se estiver usando o Prompt de Comando ou o Prompt de Comando pelo Windows Terminal, execute:
+
+ ```cmd
+ .venv\Scripts\activate.bat
+ ```
+
+ * Se estiver usando o PowerShell, execute:
+
+ ```powershell
+ .\.venv\Scripts\Activate.ps1
+ ```
+
+ * No macOS ou Linux, execute:
+
+ ```cmd
+ source ./.venv/bin/activate
+ ```
+
+ > 💁 Esses comandos devem ser executados do mesmo local onde você executou o comando para criar o ambiente virtual. Você nunca precisará navegar para dentro da pasta `.venv`; sempre execute o comando de ativação e quaisquer comandos para instalar pacotes ou executar código a partir da pasta onde você estava ao criar o ambiente virtual.
+
+1. Execute o seguinte comando para criar um aplicativo de funções nesta pasta:
+
+ ```sh
+ func init --worker-runtime python soil-moisture-trigger
+ ```
+
+ Isso criará três arquivos dentro da pasta atual:
+
+ * `host.json` - este documento JSON contém configurações para seu aplicativo de funções. Você não precisará modificar essas configurações.
+ * `local.settings.json` - este documento JSON contém configurações que seu aplicativo usaria ao ser executado localmente, como strings de conexão para seu IoT Hub. Essas configurações são apenas locais e não devem ser adicionadas ao controle de código-fonte. Quando você implantar o aplicativo na nuvem, essas configurações não serão implantadas; em vez disso, suas configurações serão carregadas a partir das configurações do aplicativo. Isso será abordado mais tarde nesta lição.
+ * `requirements.txt` - este é um [arquivo de requisitos do Pip](https://pip.pypa.io/en/stable/user_guide/#requirements-files) que contém os pacotes Pip necessários para executar seu aplicativo de funções.
+
+1. O arquivo `local.settings.json` possui uma configuração para a conta de armazenamento que o aplicativo de funções usará. Por padrão, esta configuração está vazia e precisa ser definida. Para se conectar ao emulador de armazenamento local Azurite, defina este valor como:
+
+ ```json
+ "AzureWebJobsStorage": "UseDevelopmentStorage=true",
+ ```
+
+1. Instale os pacotes Pip necessários usando o arquivo de requisitos:
+
+ ```sh
+ pip install -r requirements.txt
+ ```
+
+ > 💁 Os pacotes Pip necessários precisam estar neste arquivo, para que, quando o aplicativo de funções for implantado na nuvem, o runtime possa garantir que os pacotes corretos sejam instalados.
+
+1. Para testar se tudo está funcionando corretamente, você pode iniciar o runtime de funções. Execute o seguinte comando para fazer isso:
+
+ ```sh
+ func start
+ ```
+
+ Você verá o runtime iniciar e informar que não encontrou nenhuma função de trabalho (gatilhos).
+
+ ```output
+ (.venv) ➜ soil-moisture-trigger func start
+ Found Python version 3.9.1 (python3).
+
+ Azure Functions Core Tools
+ Core Tools Version: 3.0.3442 Commit hash: 6bfab24b2743f8421475d996402c398d2fe4a9e0 (64-bit)
+ Function Runtime Version: 3.0.15417.0
+
+ [2021-05-05T01:24:46.795Z] No job functions found.
+ ```
+> ⚠️ Se você receber uma notificação de firewall, conceda acesso, pois o aplicativo `func` precisa ser capaz de ler e escrever na sua rede.
+> ⚠️ Se você estiver usando macOS, pode haver avisos na saída:
+>
+> ```output
+ > (.venv) ➜ soil-moisture-trigger func start
+ > Found Python version 3.9.1 (python3).
+ >
+ > Azure Functions Core Tools
+ > Core Tools Version: 3.0.3442 Commit hash: 6bfab24b2743f8421475d996402c398d2fe4a9e0 (64-bit)
+ > Function Runtime Version: 3.0.15417.0
+ >
+ > [2021-06-16T08:18:28.315Z] Cannot create directory for shared memory usage: /dev/shm/AzureFunctions
+ > [2021-06-16T08:18:28.316Z] System.IO.FileSystem: Access to the path '/dev/shm/AzureFunctions' is denied. Operation not permitted.
+ > [2021-06-16T08:18:30.361Z] No job functions found.
+ > ```
+>
+> Você pode ignorá-los, desde que o aplicativo Functions inicie corretamente e liste as funções em execução. Conforme mencionado [nesta pergunta no Microsoft Docs Q&A](https://docs.microsoft.com/answers/questions/396617/azure-functions-core-tools-error-osx-devshmazurefu.html?WT.mc_id=academic-17441-jabenn), isso pode ser ignorado.
+
+1. Pare o aplicativo Functions pressionando `ctrl+c`.
+
+1. Abra a pasta atual no VS Code, seja abrindo o VS Code e depois esta pasta, ou executando o seguinte comando:
+
+ ```sh
+ code .
+ ```
+
+ O VS Code detectará seu projeto Functions e exibirá uma notificação dizendo:
+
+ ```output
+ Detected an Azure Functions Project in folder "soil-moisture-trigger" that may have been created outside of
+ VS Code. Initialize for optimal use with VS Code?
+ ```
+
+ 
+
+ Selecione **Sim** nesta notificação.
+
+1. Certifique-se de que o ambiente virtual do Python está em execução no terminal do VS Code. Finalize e reinicie, se necessário.
+
+## Criar um gatilho de evento do IoT Hub
+
+O aplicativo Functions é a estrutura do seu código serverless. Para responder a eventos do IoT Hub, você pode adicionar um gatilho do IoT Hub a este aplicativo. Esse gatilho precisa se conectar ao fluxo de mensagens enviadas ao IoT Hub e responder a elas. Para obter esse fluxo de mensagens, seu gatilho precisa se conectar ao *endpoint compatível com Event Hub* do IoT Hub.
+
+O IoT Hub é baseado em outro serviço do Azure chamado Azure Event Hubs. O Event Hubs é um serviço que permite enviar e receber mensagens, e o IoT Hub estende isso para adicionar recursos para dispositivos IoT. A forma de se conectar para ler mensagens do IoT Hub é a mesma que seria usada com o Event Hubs.
+
+✅ Faça uma pesquisa: Leia a visão geral do Event Hubs na [documentação do Azure Event Hubs](https://docs.microsoft.com/azure/event-hubs/event-hubs-about?WT.mc_id=academic-17441-jabenn). Como os recursos básicos se comparam ao IoT Hub?
+
+Para que um dispositivo IoT se conecte ao IoT Hub, ele precisa usar uma chave secreta que garante que apenas dispositivos autorizados possam se conectar. O mesmo se aplica ao conectar-se para ler mensagens; seu código precisará de uma string de conexão que contenha uma chave secreta, juntamente com os detalhes do IoT Hub.
+
+> 💁 A string de conexão padrão que você obtém tem permissões de **iothubowner**, o que dá a qualquer código que a utilize permissões completas no IoT Hub. Idealmente, você deve se conectar com o menor nível de permissões necessário. Isso será abordado na próxima lição.
+
+Depois que seu gatilho estiver conectado, o código dentro da função será chamado para cada mensagem enviada ao IoT Hub, independentemente de qual dispositivo a enviou. O gatilho passará a mensagem como um parâmetro.
+
+### Tarefa - obter a string de conexão do endpoint compatível com Event Hub
+
+1. No terminal do VS Code, execute o seguinte comando para obter a string de conexão para o endpoint compatível com Event Hub do IoT Hub:
+
+ ```sh
+ az iot hub connection-string show --default-eventhub \
+ --output table \
+ --hub-name
+ ```
+
+ Substitua `` pelo nome que você usou para o IoT Hub.
+
+1. No VS Code, abra o arquivo `local.settings.json`. Adicione o seguinte valor adicional dentro da seção `Values`:
+
+ ```json
+ "IOT_HUB_CONNECTION_STRING": ""
+ ```
+
+ Substitua `` pelo valor obtido na etapa anterior. Você precisará adicionar uma vírgula após a linha acima para que seja um JSON válido.
+
+### Tarefa - criar um gatilho de evento
+
+Agora você está pronto para criar o gatilho de evento.
+
+1. No terminal do VS Code, execute o seguinte comando dentro da pasta `soil-moisture-trigger`:
+
+ ```sh
+ func new --name iot-hub-trigger --template "Azure Event Hub trigger"
+ ```
+
+ Isso cria uma nova Function chamada `iot-hub-trigger`. O gatilho se conectará ao endpoint compatível com Event Hub no IoT Hub, permitindo que você use um gatilho de Event Hub. Não há um gatilho específico para IoT Hub.
+
+Isso criará uma pasta dentro da pasta `soil-moisture-trigger` chamada `iot-hub-trigger`, que conterá esta função. Esta pasta terá os seguintes arquivos:
+
+* `__init__.py` - este é o arquivo de código Python que contém o gatilho, usando a convenção padrão de nomes de arquivos Python para transformar esta pasta em um módulo Python.
+
+ Este arquivo conterá o seguinte código:
+
+ ```python
+ import logging
+
+ import azure.functions as func
+
+
+ def main(event: func.EventHubEvent):
+ logging.info('Python EventHub trigger processed an event: %s',
+ event.get_body().decode('utf-8'))
+ ```
+
+ O núcleo do gatilho é a função `main`. É esta função que é chamada com os eventos do IoT Hub. Esta função tem um parâmetro chamado `event` que contém um `EventHubEvent`. Sempre que uma mensagem é enviada ao IoT Hub, esta função é chamada passando essa mensagem como o `event`, juntamente com propriedades que são as mesmas das anotações que você viu na última lição.
+
+ O núcleo desta função registra o evento.
+
+* `function.json` - este arquivo contém a configuração do gatilho. A configuração principal está em uma seção chamada `bindings`. Um binding é o termo para uma conexão entre o Azure Functions e outros serviços do Azure. Esta função tem um binding de entrada para um Event Hub - ela se conecta a um Event Hub e recebe dados.
+
+ > 💁 Você também pode ter bindings de saída para que a saída de uma função seja enviada para outro serviço. Por exemplo, você poderia adicionar um binding de saída para um banco de dados e retornar o evento do IoT Hub da função, e ele seria automaticamente inserido no banco de dados.
+
+ ✅ Faça uma pesquisa: Leia sobre bindings na [documentação de conceitos de gatilhos e bindings do Azure Functions](https://docs.microsoft.com/azure/azure-functions/functions-triggers-bindings?WT.mc_id=academic-17441-jabenn&tabs=python).
+
+ A seção `bindings` inclui a configuração para o binding. Os valores de interesse são:
+
+ * `"type": "eventHubTrigger"` - isso informa à função que ela precisa ouvir eventos de um Event Hub
+ * `"name": "events"` - este é o nome do parâmetro a ser usado para os eventos do Event Hub. Isso corresponde ao nome do parâmetro na função `main` no código Python.
+ * `"direction": "in"` - este é um binding de entrada, os dados do Event Hub entram na função
+ * `"connection": ""` - isso define o nome da configuração para ler a string de conexão. Ao executar localmente, isso lerá esta configuração do arquivo `local.settings.json`.
+
+ > 💁 A string de conexão não pode ser armazenada no arquivo `function.json`, ela deve ser lida das configurações. Isso é para evitar que você exponha acidentalmente sua string de conexão.
+
+1. Devido a [um bug no template do Azure Functions](https://github.com/Azure/azure-functions-templates/issues/1250), o arquivo `function.json` tem um valor incorreto para o campo `cardinality`. Atualize este campo de `many` para `one`:
+
+ ```json
+ "cardinality": "one",
+ ```
+
+1. Atualize o valor de `"connection"` no arquivo `function.json` para apontar para o novo valor que você adicionou ao arquivo `local.settings.json`:
+
+ ```json
+ "connection": "IOT_HUB_CONNECTION_STRING",
+ ```
+
+ > 💁 Lembre-se - isso precisa apontar para a configuração, não conter a string de conexão real.
+
+1. A string de conexão contém o valor `eventHubName`, então o valor para isso no arquivo `function.json` precisa ser limpo. Atualize este valor para uma string vazia:
+
+ ```json
+ "eventHubName": "",
+ ```
+
+### Tarefa - executar o gatilho de evento
+
+1. Certifique-se de que você não está executando o monitor de eventos do IoT Hub. Se isso estiver em execução ao mesmo tempo que o aplicativo Functions, o aplicativo Functions não conseguirá se conectar e consumir eventos.
+
+ > 💁 Vários aplicativos podem se conectar aos endpoints do IoT Hub usando diferentes *grupos de consumidores*. Isso será abordado em uma lição posterior.
+
+1. Para executar o aplicativo Functions, execute o seguinte comando no terminal do VS Code:
+
+ ```sh
+ func start
+ ```
+
+ O aplicativo Functions será iniciado e descobrirá a função `iot-hub-trigger`. Ele processará quaisquer eventos que já tenham sido enviados ao IoT Hub no último dia.
+
+ ```output
+ (.venv) ➜ soil-moisture-trigger func start
+ Found Python version 3.9.1 (python3).
+
+ Azure Functions Core Tools
+ Core Tools Version: 3.0.3442 Commit hash: 6bfab24b2743f8421475d996402c398d2fe4a9e0 (64-bit)
+ Function Runtime Version: 3.0.15417.0
+
+ Functions:
+
+ iot-hub-trigger: eventHubTrigger
+
+ For detailed output, run func with --verbose flag.
+ [2021-05-05T02:44:07.517Z] Worker process started and initialized.
+ [2021-05-05T02:44:09.202Z] Executing 'Functions.iot-hub-trigger' (Reason='(null)', Id=802803a5-eae9-4401-a1f4-176631456ce4)
+ [2021-05-05T02:44:09.205Z] Trigger Details: PartitionId: 0, Offset: 1011240-1011632, EnqueueTimeUtc: 2021-05-04T19:04:04.2030000Z-2021-05-04T19:04:04.3900000Z, SequenceNumber: 2546-2547, Count: 2
+ [2021-05-05T02:44:09.352Z] Python EventHub trigger processed an event: {"soil_moisture":628}
+ [2021-05-05T02:44:09.354Z] Python EventHub trigger processed an event: {"soil_moisture":624}
+ [2021-05-05T02:44:09.395Z] Executed 'Functions.iot-hub-trigger' (Succeeded, Id=802803a5-eae9-4401-a1f4-176631456ce4, Duration=245ms)
+ ```
+
+ Cada chamada para a função será cercada por um bloco `Executing 'Functions.iot-hub-trigger'`/`Executed 'Functions.iot-hub-trigger'` na saída, para que você possa ver quantas mensagens foram processadas em cada chamada de função.
+
+1. Certifique-se de que seu dispositivo IoT está em execução. Você verá novas mensagens de umidade do solo aparecendo no aplicativo Functions.
+
+1. Pare e reinicie o aplicativo Functions. Você verá que ele não processará mensagens anteriores novamente, apenas processará novas mensagens.
+
+> 💁 O VS Code também suporta depuração de suas Functions. Você pode definir pontos de interrupção clicando na borda ao lado do início de cada linha de código, colocando o cursor em uma linha de código e selecionando *Executar -> Alternar ponto de interrupção*, ou pressionando `F9`. Você pode iniciar o depurador selecionando *Executar -> Iniciar depuração*, pressionando `F5`, ou selecionando o painel *Executar e depurar* e clicando no botão **Iniciar depuração**. Fazendo isso, você pode ver os detalhes dos eventos sendo processados.
+
+#### Solução de problemas
+
+* Se você receber o seguinte erro:
+
+ ```output
+ The listener for function 'Functions.iot-hub-trigger' was unable to start. Microsoft.WindowsAzure.Storage: Connection refused. System.Net.Http: Connection refused. System.Private.CoreLib: Connection refused.
+ ```
+
+ Verifique se o Azurite está em execução e se você configurou o `AzureWebJobsStorage` no arquivo `local.settings.json` como `UseDevelopmentStorage=true`.
+
+* Se você receber o seguinte erro:
+
+ ```output
+ System.Private.CoreLib: Exception while executing function: Functions.iot-hub-trigger. System.Private.CoreLib: Result: Failure Exception: AttributeError: 'list' object has no attribute 'get_body'
+ ```
+
+ Verifique se você configurou o `cardinality` no arquivo `function.json` como `one`.
+
+* Se você receber o seguinte erro:
+
+ ```output
+ Azure.Messaging.EventHubs: The path to an Event Hub may be specified as part of the connection string or as a separate value, but not both. Please verify that your connection string does not have the `EntityPath` token if you are passing an explicit Event Hub name. (Parameter 'connectionString').
+ ```
+
+ Verifique se você configurou o `eventHubName` no arquivo `function.json` como uma string vazia.
+
+## Enviar solicitações de método direto a partir de código serverless
+
+Até agora, seu aplicativo Functions está ouvindo mensagens do IoT Hub usando o endpoint compatível com Event Hub. Agora você precisa enviar comandos para o dispositivo IoT. Isso é feito usando uma conexão diferente com o IoT Hub via *Registry Manager*. O Registry Manager é uma ferramenta que permite ver quais dispositivos estão registrados no IoT Hub e se comunicar com esses dispositivos enviando mensagens de nuvem para dispositivo, solicitações de método direto ou atualizando o device twin. Você também pode usá-lo para registrar, atualizar ou excluir dispositivos IoT do IoT Hub.
+
+Para se conectar ao Registry Manager, você precisa de uma string de conexão.
+
+### Tarefa - obter a string de conexão do Registry Manager
+
+1. Para obter a string de conexão, execute o seguinte comando:
+
+ ```sh
+ az iot hub connection-string show --policy-name service \
+ --output table \
+ --hub-name
+ ```
+
+ Substitua `` pelo nome que você usou para o IoT Hub.
+
+ A string de conexão é solicitada para a política *ServiceConnect* usando o parâmetro `--policy-name service`. Quando você solicita uma string de conexão, pode especificar quais permissões essa string permitirá. A política ServiceConnect permite que seu código se conecte e envie mensagens para dispositivos IoT.
+
+ ✅ Faça uma pesquisa: Leia sobre as diferentes políticas na [documentação de permissões do IoT Hub](https://docs.microsoft.com/azure/iot-hub/iot-hub-devguide-security#iot-hub-permissions?WT.mc_id=academic-17441-jabenn)
+
+1. No VS Code, abra o arquivo `local.settings.json`. Adicione o seguinte valor adicional dentro da seção `Values`:
+
+ ```json
+ "REGISTRY_MANAGER_CONNECTION_STRING": ""
+ ```
+
+ Substitua `` pelo valor obtido na etapa anterior. Você precisará adicionar uma vírgula após a linha acima para que seja um JSON válido.
+
+### Tarefa - enviar uma solicitação de método direto para um dispositivo
+
+1. O SDK para o Registry Manager está disponível via um pacote Pip. Adicione a seguinte linha ao arquivo `requirements.txt` para adicionar a dependência deste pacote:
+
+ ```sh
+ azure-iot-hub
+ ```
+
+1. Certifique-se de que o terminal do VS Code tenha o ambiente virtual ativado e execute o seguinte comando para instalar os pacotes Pip:
+
+ ```sh
+ pip install -r requirements.txt
+ ```
+
+1. Adicione as seguintes importações ao arquivo `__init__.py`:
+
+ ```python
+ import json
+ import os
+ from azure.iot.hub import IoTHubRegistryManager
+ from azure.iot.hub.models import CloudToDeviceMethod
+ ```
+
+ Isso importa algumas bibliotecas do sistema, bem como as bibliotecas para interagir com o Registry Manager e enviar solicitações de método direto.
+
+1. Remova o código de dentro do método `main`, mas mantenha o método em si.
+
+1. No método `main`, adicione o seguinte código:
+
+ ```python
+ body = json.loads(event.get_body().decode('utf-8'))
+ device_id = event.iothub_metadata['connection-device-id']
+
+ logging.info(f'Received message: {body} from {device_id}')
+ ```
+
+ Este código extrai o corpo do evento, que contém a mensagem JSON enviada pelo dispositivo IoT.
+
+ Em seguida, ele obtém o ID do dispositivo das anotações passadas com a mensagem. O corpo do evento contém a mensagem enviada como telemetria, e o dicionário `iothub_metadata` contém propriedades definidas pelo IoT Hub, como o ID do dispositivo do remetente e o horário em que a mensagem foi enviada.
+
+ Essas informações são então registradas. Você verá este registro no terminal ao executar o aplicativo Function localmente.
+
+1. Abaixo disso, adicione o seguinte código:
+
+ ```python
+ soil_moisture = body['soil_moisture']
+
+ if soil_moisture > 450:
+ direct_method = CloudToDeviceMethod(method_name='relay_on', payload='{}')
+ else:
+ direct_method = CloudToDeviceMethod(method_name='relay_off', payload='{}')
+ ```
+
+ Este código obtém a umidade do solo da mensagem. Em seguida, verifica a umidade do solo e, dependendo do valor, cria uma classe auxiliar para a solicitação de método direto para o método `relay_on` ou `relay_off`. A solicitação do método não precisa de um payload, então um documento JSON vazio é enviado.
+
+1. Abaixo disso, adicione o seguinte código:
+
+ ```python
+ logging.info(f'Sending direct method request for {direct_method.method_name} for device {device_id}')
+
+ registry_manager_connection_string = os.environ['REGISTRY_MANAGER_CONNECTION_STRING']
+ registry_manager = IoTHubRegistryManager(registry_manager_connection_string)
+ ```
+Este código carrega a `REGISTRY_MANAGER_CONNECTION_STRING` do arquivo `local.settings.json`. Os valores neste arquivo são disponibilizados como variáveis de ambiente, e podem ser lidos usando a função `os.environ`, que retorna um dicionário com todas as variáveis de ambiente.
+
+> 💁 Quando este código é implantado na nuvem, os valores no arquivo `local.settings.json` serão configurados como *Application Settings*, e podem ser lidos a partir das variáveis de ambiente.
+
+O código então cria uma instância da classe auxiliar Registry Manager usando a string de conexão.
+
+1. Abaixo disso, adicione o seguinte código:
+
+ ```python
+ registry_manager.invoke_device_method(device_id, direct_method)
+
+ logging.info('Direct method request sent!')
+ ```
+
+ Este código instrui o registry manager a enviar a solicitação de método direto para o dispositivo que enviou a telemetria.
+
+ > 💁 Nas versões do aplicativo que você criou em lições anteriores usando MQTT, os comandos de controle do relé eram enviados para todos os dispositivos. O código assumia que você teria apenas um dispositivo. Esta versão do código envia a solicitação de método para um único dispositivo, funcionando corretamente caso você tenha múltiplas configurações de sensores de umidade e relés, enviando a solicitação de método direto para o dispositivo correto.
+
+1. Execute o aplicativo Functions e certifique-se de que seu dispositivo IoT está enviando dados. Você verá as mensagens sendo processadas e as solicitações de método direto sendo enviadas. Mova o sensor de umidade do solo para dentro e fora do solo para ver os valores mudarem e o relé ligar e desligar.
+
+> 💁 Você pode encontrar este código na pasta [code/functions](../../../../../2-farm/lessons/5-migrate-application-to-the-cloud/code/functions).
+
+## Implante seu código serverless na nuvem
+
+Seu código está funcionando localmente, então o próximo passo é implantar o aplicativo Functions na nuvem.
+
+### Tarefa - criar os recursos na nuvem
+
+Seu aplicativo Functions precisa ser implantado em um recurso Functions App no Azure, dentro do Resource Group que você criou para seu IoT Hub. Você também precisará criar uma Storage Account no Azure para substituir o emulador que está rodando localmente.
+
+1. Execute o seguinte comando para criar uma Storage Account:
+
+ ```sh
+ az storage account create --resource-group soil-moisture-sensor \
+ --sku Standard_LRS \
+ --name
+ ```
+
+ Substitua `` por um nome para sua Storage Account. Este nome precisa ser globalmente único, pois faz parte da URL usada para acessar a Storage Account. Você pode usar apenas letras minúsculas e números para este nome, sem outros caracteres, e ele é limitado a 24 caracteres. Use algo como `sms` e adicione um identificador único no final, como algumas palavras aleatórias ou seu nome.
+
+ A opção `--sku Standard_LRS` seleciona o nível de preço, escolhendo a conta geral de menor custo. Não há uma camada gratuita de armazenamento, e você paga pelo que usar. Os custos são relativamente baixos, com o armazenamento mais caro custando menos de US$0,05 por mês por gigabyte armazenado.
+
+ ✅ Leia mais sobre preços na [página de preços do Azure Storage Account](https://azure.microsoft.com/pricing/details/storage/?WT.mc_id=academic-17441-jabenn)
+
+1. Execute o seguinte comando para criar um Function App:
+
+ ```sh
+ az functionapp create --resource-group soil-moisture-sensor \
+ --runtime python \
+ --functions-version 3 \
+ --os-type Linux \
+ --consumption-plan-location \
+ --storage-account \
+ --name
+ ```
+
+ Substitua `` pela localização que você usou ao criar o Resource Group na lição anterior.
+
+ Substitua `` pelo nome da Storage Account que você criou na etapa anterior.
+
+ Substitua `` por um nome único para seu Function App. Este nome precisa ser globalmente único, pois faz parte de uma URL que pode ser usada para acessar o Function App. Use algo como `soil-moisture-sensor-` e adicione um identificador único no final, como algumas palavras aleatórias ou seu nome.
+
+ A opção `--functions-version 3` define a versão do Azure Functions a ser usada. A versão 3 é a mais recente.
+
+ A opção `--os-type Linux` informa ao runtime do Functions para usar Linux como sistema operacional para hospedar essas funções. Functions podem ser hospedados em Linux ou Windows, dependendo da linguagem de programação usada. Aplicativos Python são suportados apenas em Linux.
+
+### Tarefa - carregar suas configurações de aplicativo
+
+Quando você desenvolveu seu Function App, armazenou algumas configurações no arquivo `local.settings.json` para as strings de conexão do seu IoT Hub. Estas precisam ser escritas como Application Settings no Function App no Azure para que possam ser usadas pelo seu código.
+
+> 🎓 O arquivo `local.settings.json` é apenas para configurações de desenvolvimento local e não deve ser incluído no controle de versão, como o GitHub. Quando implantado na nuvem, Application Settings são usados. Application Settings são pares de chave/valor hospedados na nuvem e são lidos a partir de variáveis de ambiente, seja no seu código ou pelo runtime ao conectar seu código ao IoT Hub.
+
+1. Execute o seguinte comando para definir a configuração `IOT_HUB_CONNECTION_STRING` nas Application Settings do Function App:
+
+ ```sh
+ az functionapp config appsettings set --resource-group soil-moisture-sensor \
+ --name \
+ --settings "IOT_HUB_CONNECTION_STRING="
+ ```
+
+ Substitua `` pelo nome que você usou para seu Function App.
+
+ Substitua `` pelo valor de `IOT_HUB_CONNECTION_STRING` do seu arquivo `local.settings.json`.
+
+1. Repita o passo acima, mas defina o valor de `REGISTRY_MANAGER_CONNECTION_STRING` para o valor correspondente do seu arquivo `local.settings.json`.
+
+Quando você executar esses comandos, eles também exibirão uma lista de todas as Application Settings do Function App. Você pode usar isso para verificar se seus valores estão configurados corretamente.
+
+> 💁 Você verá um valor já configurado para `AzureWebJobsStorage`. No seu arquivo `local.settings.json`, isso foi configurado para usar o emulador de armazenamento local. Quando você criou o Function App, passou a Storage Account como um parâmetro, e isso foi configurado automaticamente nesta configuração.
+
+### Tarefa - implantar seu Function App na nuvem
+
+Agora que o Function App está pronto, seu código pode ser implantado.
+
+1. Execute o seguinte comando no terminal do VS Code para publicar seu Function App:
+
+ ```sh
+ func azure functionapp publish
+ ```
+
+ Substitua `` pelo nome que você usou para seu Function App.
+
+O código será empacotado e enviado para o Function App, onde será implantado e iniciado. Haverá uma grande quantidade de saída no console, terminando com a confirmação da implantação e uma lista das funções implantadas. Neste caso, a lista conterá apenas o trigger.
+
+```output
+Deployment successful.
+Remote build succeeded!
+Syncing triggers...
+Functions in soil-moisture-sensor:
+ iot-hub-trigger - [eventHubTrigger]
+```
+
+Certifique-se de que seu dispositivo IoT está funcionando. Altere os níveis de umidade ajustando a umidade do solo ou movendo o sensor para dentro e fora do solo. Você verá o relé ligar e desligar conforme a umidade do solo muda.
+
+---
+
+## 🚀 Desafio
+
+Na lição anterior, você gerenciou o tempo do relé ao cancelar a inscrição de mensagens MQTT enquanto o relé estava ligado e por um curto período após ser desligado. Você não pode usar este método aqui - não é possível cancelar a inscrição do seu trigger do IoT Hub.
+
+Pense em diferentes maneiras de lidar com isso no seu Function App.
+
+## Questionário pós-aula
+
+[Questionário pós-aula](https://black-meadow-040d15503.1.azurestaticapps.net/quiz/18)
+
+## Revisão e Autoestudo
+
+* Leia sobre computação serverless na [página de computação serverless na Wikipedia](https://wikipedia.org/wiki/Serverless_computing)
+* Leia sobre o uso de serverless no Azure, incluindo mais exemplos, no [post do blog do Azure sobre serverless para suas necessidades de IoT](https://azure.microsoft.com/blog/go-serverless-for-your-iot-needs/?WT.mc_id=academic-17441-jabenn)
+* Aprenda mais sobre Azure Functions no [canal do YouTube do Azure Functions](https://www.youtube.com/c/AzureFunctions)
+
+## Tarefa
+
+[Adicionar controle manual do relé](assignment.md)
+
+---
+
+**Aviso Legal**:
+Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.
\ No newline at end of file
diff --git a/translations/br/2-farm/lessons/5-migrate-application-to-the-cloud/assignment.md b/translations/br/2-farm/lessons/5-migrate-application-to-the-cloud/assignment.md
new file mode 100644
index 00000000..e1c99c98
--- /dev/null
+++ b/translations/br/2-farm/lessons/5-migrate-application-to-the-cloud/assignment.md
@@ -0,0 +1,70 @@
+
+# Adicionar controle manual de relé
+
+## Instruções
+
+Código serverless pode ser acionado por diversos eventos, incluindo requisições HTTP. Você pode usar gatilhos HTTP para adicionar uma substituição manual ao controle do relé, permitindo que alguém ligue ou desligue o relé por meio de uma requisição web.
+
+Para esta tarefa, você precisa adicionar dois gatilhos HTTP ao seu Functions App para ligar e desligar o relé, reutilizando o que você aprendeu nesta lição para enviar comandos ao dispositivo.
+
+Algumas dicas:
+
+* Você pode adicionar um gatilho HTTP ao seu Functions App existente com o seguinte comando:
+
+ ```sh
+ func new --name --template "HTTP trigger"
+ ```
+
+ Substitua `` pelo nome do seu gatilho HTTP. Use algo como `relay_on` e `relay_off`.
+
+* Gatilhos HTTP podem ter controle de acesso. Por padrão, eles exigem uma chave de API específica da função para ser passada com a URL para serem executados. Para esta tarefa, você pode remover essa restrição para que qualquer pessoa possa executar a função. Para fazer isso, atualize a configuração `authLevel` no arquivo `function.json` para os gatilhos HTTP com o seguinte:
+
+ ```json
+ "authLevel": "anonymous"
+ ```
+
+ > 💁 Você pode ler mais sobre este controle de acesso na [documentação de chaves de acesso de funções](https://docs.microsoft.com/azure/azure-functions/functions-bindings-http-webhook-trigger?WT.mc_id=academic-17441-jabenn#authorization-keys).
+
+* Gatilhos HTTP, por padrão, suportam requisições GET e POST. Isso significa que você pode chamá-los usando seu navegador web - navegadores web fazem requisições GET.
+
+ Quando você executa seu Functions App localmente, verá a URL do gatilho:
+
+ ```output
+ Functions:
+
+ relay_off: [GET,POST] http://localhost:7071/api/relay_off
+
+ relay_on: [GET,POST] http://localhost:7071/api/relay_on
+
+ iot-hub-trigger: eventHubTrigger
+ ```
+
+ Cole a URL no seu navegador e pressione `return`, ou `Ctrl+click` (`Cmd+click` no macOS) no link na janela do terminal no VS Code para abri-lo no navegador padrão. Isso executará o gatilho.
+
+ > 💁 Note que a URL contém `/api` - gatilhos HTTP estão, por padrão, no subdomínio `api`.
+
+* Quando você implantar o Functions App, a URL do gatilho HTTP será:
+
+ `https://.azurewebsites.net/api/`
+
+ Onde `` é o nome do seu Functions App, e `` é o nome do seu gatilho.
+
+## Rubrica
+
+| Critério | Exemplar | Adequado | Precisa Melhorar |
+| -------- | --------- | -------- | ---------------- |
+| Criar gatilhos HTTP | Criou 2 gatilhos para ligar e desligar o relé, com nomes apropriados | Criou um gatilho com um nome apropriado | Não conseguiu criar nenhum gatilho |
+| Controlar o relé a partir dos gatilhos HTTP | Conectou ambos os gatilhos ao IoT Hub e controlou o relé corretamente | Conectou um gatilho ao IoT Hub e controlou o relé corretamente | Não conseguiu conectar os gatilhos ao IoT Hub |
+
+---
+
+**Aviso Legal**:
+Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.
\ No newline at end of file
diff --git a/translations/br/2-farm/lessons/6-keep-your-plant-secure/README.md b/translations/br/2-farm/lessons/6-keep-your-plant-secure/README.md
new file mode 100644
index 00000000..88d41de1
--- /dev/null
+++ b/translations/br/2-farm/lessons/6-keep-your-plant-secure/README.md
@@ -0,0 +1,245 @@
+
+# Mantenha sua planta segura
+
+
+
+> Ilustração por [Nitya Narasimhan](https://github.com/nitya). Clique na imagem para uma versão maior.
+
+## Questionário pré-aula
+
+[Questionário pré-aula](https://black-meadow-040d15503.1.azurestaticapps.net/quiz/19)
+
+## Introdução
+
+Nas últimas lições, você criou um dispositivo IoT para monitoramento do solo e o conectou à nuvem. Mas e se hackers trabalhando para um fazendeiro rival conseguissem assumir o controle dos seus dispositivos IoT? E se eles enviassem leituras falsas de alta umidade do solo para que suas plantas nunca fossem irrigadas, ou ligassem o sistema de irrigação continuamente, matando suas plantas por excesso de água e gerando um custo enorme com desperdício?
+
+Nesta lição, você aprenderá sobre como proteger dispositivos IoT. Como esta é a última lição deste projeto, você também aprenderá a limpar seus recursos na nuvem, reduzindo quaisquer custos potenciais.
+
+Nesta lição, abordaremos:
+
+* [Por que você precisa proteger dispositivos IoT?](../../../../../2-farm/lessons/6-keep-your-plant-secure)
+* [Criptografia](../../../../../2-farm/lessons/6-keep-your-plant-secure)
+* [Proteja seus dispositivos IoT](../../../../../2-farm/lessons/6-keep-your-plant-secure)
+* [Gerar e usar um certificado X.509](../../../../../2-farm/lessons/6-keep-your-plant-secure)
+
+> 🗑 Esta é a última lição deste projeto, então, após concluir esta lição e o exercício, não se esqueça de limpar seus serviços na nuvem. Você precisará dos serviços para concluir o exercício, então certifique-se de finalizá-lo primeiro.
+>
+> Consulte [o guia de limpeza do projeto](../../../clean-up.md) se necessário para obter instruções sobre como fazer isso.
+
+## Por que você precisa proteger dispositivos IoT?
+
+A segurança em IoT envolve garantir que apenas dispositivos esperados possam se conectar ao seu serviço IoT na nuvem e enviar telemetria, e que apenas seu serviço na nuvem possa enviar comandos aos seus dispositivos. Os dados de IoT também podem ser pessoais, incluindo informações médicas ou íntimas, então toda a sua aplicação precisa considerar a segurança para evitar vazamentos desses dados.
+
+Se sua aplicação IoT não for segura, há vários riscos:
+
+* Um dispositivo falso pode enviar dados incorretos, fazendo com que sua aplicação responda de forma inadequada. Por exemplo, eles poderiam enviar leituras constantes de alta umidade do solo, fazendo com que seu sistema de irrigação nunca ligue e suas plantas morram por falta de água.
+* Usuários não autorizados poderiam acessar dados dos dispositivos IoT, incluindo informações pessoais ou críticas para o negócio.
+* Hackers poderiam enviar comandos para controlar um dispositivo de forma que cause danos ao dispositivo ou ao hardware conectado.
+* Ao se conectar a um dispositivo IoT, hackers poderiam usar isso para acessar redes adicionais e obter acesso a sistemas privados.
+* Usuários mal-intencionados poderiam acessar dados pessoais e usá-los para chantagem.
+
+Esses são cenários do mundo real e acontecem o tempo todo. Alguns exemplos foram apresentados em lições anteriores, mas aqui estão mais alguns:
+
+* Em 2018, hackers usaram um ponto de acesso Wi-Fi aberto em um termostato de aquário para acessar a rede de um cassino e roubar dados. [The Hacker News - Casino Gets Hacked Through Its Internet-Connected Fish Tank Thermometer](https://thehackernews.com/2018/04/iot-hacking-thermometer.html)
+* Em 2016, o Botnet Mirai lançou um ataque de negação de serviço contra a Dyn, um provedor de serviços de Internet, derrubando grandes partes da Internet. Esse botnet usou malware para se conectar a dispositivos IoT, como DVRs e câmeras, que utilizavam nomes de usuário e senhas padrão, e a partir daí lançou o ataque. [The Guardian - DDoS attack that disrupted internet was largest of its kind in history, experts say](https://www.theguardian.com/technology/2016/oct/26/ddos-attack-dyn-mirai-botnet)
+* A Spiral Toys tinha um banco de dados de usuários de seus brinquedos conectados CloudPets disponível publicamente na Internet. [Troy Hunt - Data from connected CloudPets teddy bears leaked and ransomed, exposing kids' voice messages](https://www.troyhunt.com/data-from-connected-cloudpets-teddy-bears-leaked-and-ransomed-exposing-kids-voice-messages/).
+* O Strava marcava corredores que você passava e mostrava suas rotas, permitindo que estranhos vissem onde você mora. [Kim Komndo - Fitness app could lead a stranger right to your home — change this setting](https://www.komando.com/security-privacy/strava-fitness-app-privacy/755349/).
+
+✅ Faça uma pesquisa: Procure mais exemplos de ataques e violações de dados em IoT, especialmente com itens pessoais, como escovas de dente ou balanças conectadas à Internet. Pense no impacto que esses ataques podem ter sobre as vítimas ou clientes.
+
+> 💁 Segurança é um tópico enorme, e esta lição abordará apenas alguns dos conceitos básicos sobre a conexão do seu dispositivo à nuvem. Outros tópicos que não serão abordados incluem monitoramento de alterações de dados em trânsito, invasão direta de dispositivos ou alterações nas configurações dos dispositivos. A ameaça de invasões em IoT é tão grande que ferramentas como [Azure Defender for IoT](https://azure.microsoft.com/services/azure-defender-for-iot/?WT.mc_id=academic-17441-jabenn) foram desenvolvidas. Essas ferramentas são semelhantes aos antivírus e ferramentas de segurança que você pode ter no seu computador, mas projetadas para dispositivos IoT pequenos e de baixo consumo de energia.
+
+## Criptografia
+
+Quando um dispositivo se conecta a um serviço IoT, ele usa um ID para se identificar. O problema é que esse ID pode ser clonado - um hacker poderia configurar um dispositivo malicioso que usa o mesmo ID de um dispositivo real, mas envia dados falsos.
+
+
+
+A solução para isso é converter os dados enviados em um formato embaralhado, usando algum valor conhecido apenas pelo dispositivo e pela nuvem. Esse processo é chamado de *criptografia*, e o valor usado para criptografar os dados é chamado de *chave de criptografia*.
+
+
+
+O serviço na nuvem pode então converter os dados de volta para um formato legível, usando um processo chamado *descriptografia*, utilizando a mesma chave de criptografia ou uma *chave de descriptografia*. Se a mensagem criptografada não puder ser descriptografada pela chave, o dispositivo foi comprometido e a mensagem é rejeitada.
+
+A técnica para realizar a criptografia e a descriptografia é chamada de *criptografia*.
+
+### Criptografia antiga
+
+Os primeiros tipos de criptografia eram cifras de substituição, datando de 3.500 anos atrás. As cifras de substituição envolvem substituir uma letra por outra. Por exemplo, a [cifra de César](https://wikipedia.org/wiki/Caesar_cipher) envolve deslocar o alfabeto por uma quantidade definida, com apenas o remetente da mensagem criptografada e o destinatário sabendo quantas letras deslocar.
+
+A [cifra de Vigenère](https://wikipedia.org/wiki/Vigenère_cipher) levou isso adiante, usando palavras para criptografar o texto, de modo que cada letra no texto original fosse deslocada por uma quantidade diferente, em vez de sempre deslocar pelo mesmo número de letras.
+
+A criptografia foi usada para uma ampla gama de propósitos, como proteger receitas de esmaltes de cerâmica na antiga Mesopotâmia, escrever bilhetes de amor secretos na Índia ou manter feitiços mágicos egípcios em segredo.
+
+### Criptografia moderna
+
+A criptografia moderna é muito mais avançada, tornando-a mais difícil de ser quebrada do que os métodos antigos. A criptografia moderna usa matemática complexa para criptografar dados com um número tão grande de chaves possíveis que ataques de força bruta se tornam inviáveis.
+
+A criptografia é usada de várias maneiras para comunicações seguras. Se você está lendo esta página no GitHub, pode notar que o endereço do site começa com *HTTPS*, o que significa que a comunicação entre seu navegador e os servidores do GitHub está criptografada. Se alguém conseguisse ler o tráfego da Internet entre seu navegador e o GitHub, não seria capaz de entender os dados, pois estão criptografados. Seu computador pode até criptografar todos os dados no disco rígido, para que, se alguém o roubar, não consiga ler seus dados sem sua senha.
+
+> 🎓 HTTPS significa HyperText Transfer Protocol **Secure**
+
+Infelizmente, nem tudo é seguro. Alguns dispositivos não têm segurança, outros são protegidos com chaves fáceis de quebrar, ou às vezes todos os dispositivos do mesmo tipo usam a mesma chave. Há relatos de dispositivos IoT muito pessoais que têm a mesma senha para conexão via Wi-Fi ou Bluetooth. Se você pode se conectar ao seu próprio dispositivo, pode se conectar ao de outra pessoa. Uma vez conectado, você poderia acessar dados muito privados ou controlar o dispositivo de outra pessoa.
+
+> 💁 Apesar das complexidades da criptografia moderna e das alegações de que quebrar a criptografia pode levar bilhões de anos, o avanço da computação quântica trouxe a possibilidade de quebrar toda a criptografia conhecida em um período muito curto de tempo!
+
+### Chaves simétricas e assimétricas
+
+A criptografia pode ser de dois tipos - simétrica e assimétrica.
+
+A criptografia **simétrica** usa a mesma chave para criptografar e descriptografar os dados. Tanto o remetente quanto o destinatário precisam conhecer a mesma chave. Este é o tipo menos seguro, pois a chave precisa ser compartilhada de alguma forma. Para que um remetente envie uma mensagem criptografada a um destinatário, o remetente pode precisar enviar a chave ao destinatário primeiro.
+
+
+
+Se a chave for roubada durante o envio, ou se o remetente ou destinatário forem hackeados e a chave for descoberta, a criptografia pode ser comprometida.
+
+
+
+A criptografia **assimétrica** usa 2 chaves - uma chave para criptografar e outra para descriptografar, conhecidas como par de chaves pública/privada. A chave pública é usada para criptografar a mensagem, mas não pode ser usada para descriptografá-la; a chave privada é usada para descriptografar a mensagem, mas não pode ser usada para criptografá-la.
+
+
+
+O destinatário compartilha sua chave pública, e o remetente a utiliza para criptografar a mensagem. Após o envio, o destinatário descriptografa a mensagem com sua chave privada. A criptografia assimétrica é mais segura, pois a chave privada é mantida em segredo pelo destinatário e nunca é compartilhada. Qualquer pessoa pode ter a chave pública, já que ela só pode ser usada para criptografar mensagens.
+
+A criptografia simétrica é mais rápida do que a assimétrica, enquanto a assimétrica é mais segura. Alguns sistemas utilizam ambas - usando a criptografia assimétrica para criptografar e compartilhar a chave simétrica, e depois usando a chave simétrica para criptografar todos os dados. Isso torna o compartilhamento da chave simétrica mais seguro entre remetente e destinatário, e mais rápido ao criptografar e descriptografar os dados.
+
+## Proteja seus dispositivos IoT
+
+Os dispositivos IoT podem ser protegidos usando criptografia simétrica ou assimétrica. A simétrica é mais fácil, mas menos segura.
+
+### Chaves simétricas
+
+Quando você configurou seu dispositivo IoT para interagir com o IoT Hub, utilizou uma string de conexão. Um exemplo de string de conexão é:
+
+```output
+HostName=soil-moisture-sensor.azure-devices.net;DeviceId=soil-moisture-sensor;SharedAccessKey=Bhry+ind7kKEIDxubK61RiEHHRTrPl7HUow8cEm/mU0=
+```
+
+Essa string de conexão é composta por três partes separadas por ponto e vírgula, com cada parte sendo uma chave e um valor:
+
+| Chave | Valor | Descrição |
+| --- | ----- | ----------- |
+| HostName | `soil-moisture-sensor.azure-devices.net` | A URL do IoT Hub |
+| DeviceId | `soil-moisture-sensor` | O ID único do dispositivo |
+| SharedAccessKey | `Bhry+ind7kKEIDxubK61RiEHHRTrPl7HUow8cEm/mU0=` | Uma chave simétrica conhecida pelo dispositivo e pelo IoT Hub |
+
+A última parte dessa string de conexão, o `SharedAccessKey`, é a chave simétrica conhecida tanto pelo dispositivo quanto pelo IoT Hub. Essa chave nunca é enviada do dispositivo para a nuvem, nem da nuvem para o dispositivo. Em vez disso, ela é usada para criptografar os dados enviados ou recebidos.
+
+✅ Faça um experimento. O que você acha que acontecerá se você alterar a parte `SharedAccessKey` da string de conexão ao conectar seu dispositivo IoT? Experimente.
+
+Quando o dispositivo tenta se conectar pela primeira vez, ele envia um token de assinatura de acesso compartilhado (SAS) que consiste na URL do IoT Hub, um timestamp indicando quando a assinatura de acesso expirará (geralmente 1 dia a partir do momento atual) e uma assinatura. Essa assinatura consiste na URL e no tempo de expiração criptografados com a chave de acesso compartilhado da string de conexão.
+
+O IoT Hub descriptografa essa assinatura com a chave de acesso compartilhado e, se o valor descriptografado corresponder à URL e ao tempo de expiração, o dispositivo é autorizado a se conectar. Ele também verifica se o horário atual é anterior ao tempo de expiração, para impedir que um dispositivo malicioso capture o token SAS de um dispositivo real e o utilize.
+
+Essa é uma maneira elegante de verificar se o remetente é o dispositivo correto. Ao enviar alguns dados conhecidos em uma forma descriptografada e criptografada, o servidor pode verificar o dispositivo garantindo que, ao descriptografar os dados criptografados, o resultado corresponda à versão descriptografada enviada. Se corresponder, então tanto o remetente quanto o destinatário possuem a mesma chave de criptografia simétrica.
+💁 Devido ao tempo de expiração, seu dispositivo IoT precisa saber a hora exata, geralmente obtida de um servidor [NTP](https://wikipedia.org/wiki/Network_Time_Protocol). Se a hora não estiver correta, a conexão falhará.
+Após a conexão, todos os dados enviados para o IoT Hub a partir do dispositivo, ou para o dispositivo a partir do IoT Hub, serão criptografados com a chave de acesso compartilhada.
+
+✅ O que você acha que acontecerá se vários dispositivos compartilharem a mesma string de conexão?
+
+> 💁 Não é uma boa prática de segurança armazenar essa chave no código. Se um hacker obtiver seu código-fonte, ele poderá acessar sua chave. Além disso, isso dificulta o lançamento de código, pois seria necessário recompilar com uma chave atualizada para cada dispositivo. É melhor carregar essa chave a partir de um módulo de segurança de hardware - um chip no dispositivo IoT que armazena valores criptografados que podem ser lidos pelo seu código.
+>
+> Ao aprender sobre IoT, muitas vezes é mais fácil colocar a chave no código, como você fez em uma lição anterior, mas é essencial garantir que essa chave não seja incluída em um controle de código-fonte público.
+
+Os dispositivos possuem 2 chaves e 2 strings de conexão correspondentes. Isso permite que você faça a rotação das chaves - ou seja, alterne de uma chave para outra caso a primeira seja comprometida, e gere novamente a primeira chave.
+
+### Certificados X.509
+
+Quando você utiliza criptografia assimétrica com um par de chaves pública/privada, é necessário fornecer sua chave pública para qualquer pessoa que queira enviar dados para você. O problema é: como o destinatário da sua chave pode ter certeza de que é realmente sua chave pública e não de alguém se passando por você? Em vez de fornecer apenas a chave, você pode incluí-la em um certificado que foi verificado por uma terceira parte confiável, chamado de certificado X.509.
+
+Os certificados X.509 são documentos digitais que contêm a parte pública do par de chaves pública/privada. Eles geralmente são emitidos por uma das várias organizações confiáveis chamadas [Autoridades Certificadoras](https://wikipedia.org/wiki/Certificate_authority) (CAs) e são assinados digitalmente pela CA para indicar que a chave é válida e vem de você. Você confia no certificado e na chave pública porque confia na CA, de forma semelhante a como confiaria em um passaporte ou carteira de motorista porque confia no país que os emitiu. Certificados têm um custo, mas você também pode "autoassinar", ou seja, criar um certificado você mesmo e assiná-lo para fins de teste.
+
+> 💁 Você nunca deve usar um certificado autoassinado em um ambiente de produção.
+
+Esses certificados possuem vários campos, incluindo quem é o proprietário da chave pública, os detalhes da CA que o emitiu, o período de validade e a própria chave pública. Antes de usar um certificado, é uma boa prática verificá-lo, confirmando que foi assinado pela CA original.
+
+✅ Você pode ler uma lista completa dos campos de um certificado no [tutorial da Microsoft sobre Certificados de Chave Pública X.509](https://docs.microsoft.com/azure/iot-hub/tutorial-x509-certificates?WT.mc_id=academic-17441-jabenn#certificate-fields).
+
+Ao usar certificados X.509, tanto o remetente quanto o destinatário terão suas próprias chaves públicas e privadas, além de certificados X.509 contendo suas respectivas chaves públicas. Eles então trocam os certificados X.509 de alguma forma, utilizando as chaves públicas um do outro para criptografar os dados enviados e suas próprias chaves privadas para descriptografar os dados recebidos.
+
+
+
+Uma grande vantagem de usar certificados X.509 é que eles podem ser compartilhados entre dispositivos. Você pode criar um certificado, carregá-lo no IoT Hub e usá-lo para todos os seus dispositivos. Cada dispositivo só precisa conhecer a chave privada para descriptografar as mensagens recebidas do IoT Hub.
+
+O certificado usado pelo seu dispositivo para criptografar mensagens enviadas ao IoT Hub é publicado pela Microsoft. É o mesmo certificado usado por muitos serviços do Azure e, às vezes, já está integrado nos SDKs.
+
+> 💁 Lembre-se, uma chave pública é exatamente isso - pública. A chave pública do Azure só pode ser usada para criptografar dados enviados ao Azure, não para descriptografá-los, então ela pode ser compartilhada amplamente, inclusive no código-fonte. Por exemplo, você pode vê-la no [código-fonte do Azure IoT C SDK](https://github.com/Azure/azure-iot-sdk-c/blob/master/certs/certs.c).
+
+✅ Há muitos termos técnicos relacionados a certificados X.509. Você pode ler as definições de alguns desses termos no [Guia simplificado sobre o jargão de certificados X.509](https://techcommunity.microsoft.com/t5/internet-of-things/the-layman-s-guide-to-x-509-certificate-jargon/ba-p/2203540?WT.mc_id=academic-17441-jabenn).
+
+## Gerar e usar um certificado X.509
+
+Os passos para gerar um certificado X.509 são:
+
+1. Criar um par de chaves pública/privada. Um dos algoritmos mais amplamente utilizados para gerar um par de chaves pública/privada é o [Rivest–Shamir–Adleman](https://wikipedia.org/wiki/RSA_(cryptosystem)) (RSA).
+
+1. Submeter a chave pública com os dados associados para assinatura, seja por uma CA ou por autoassinatura.
+
+A CLI do Azure possui comandos para criar uma nova identidade de dispositivo no IoT Hub, gerar automaticamente o par de chaves pública/privada e criar um certificado autoassinado.
+
+> 💁 Se você quiser ver os passos detalhados, em vez de usar a CLI do Azure, pode encontrá-los no [tutorial sobre como usar o OpenSSL para criar certificados autoassinados na documentação do Microsoft IoT Hub](https://docs.microsoft.com/azure/iot-hub/tutorial-x509-self-sign?WT.mc_id=academic-17441-jabenn).
+
+### Tarefa - criar uma identidade de dispositivo usando um certificado X.509
+
+1. Execute o seguinte comando para registrar a nova identidade de dispositivo, gerando automaticamente as chaves e os certificados:
+
+ ```sh
+ az iot hub device-identity create --device-id soil-moisture-sensor-x509 \
+ --am x509_thumbprint \
+ --output-dir . \
+ --hub-name
+ ```
+
+ Substitua `` pelo nome que você usou para o IoT Hub.
+
+ Isso criará um dispositivo com o ID `soil-moisture-sensor-x509` para diferenciá-lo da identidade de dispositivo criada na última lição. Este comando também criará 2 arquivos no diretório atual:
+
+ * `soil-moisture-sensor-x509-key.pem` - este arquivo contém a chave privada do dispositivo.
+ * `soil-moisture-sensor-x509-cert.pem` - este é o arquivo de certificado X.509 do dispositivo.
+
+ Mantenha esses arquivos seguros! O arquivo da chave privada não deve ser incluído em um controle de código-fonte público.
+
+### Tarefa - usar o certificado X.509 no código do seu dispositivo
+
+Siga o guia relevante para conectar seu dispositivo IoT à nuvem usando o certificado X.509:
+
+* [Arduino - Wio Terminal](wio-terminal-x509.md)
+* [Computador de placa única - Raspberry Pi/Dispositivo IoT Virtual](single-board-computer-x509.md)
+
+---
+
+## 🚀 Desafio
+
+Existem várias maneiras de criar, gerenciar e excluir serviços do Azure, como Grupos de Recursos e IoT Hubs. Uma delas é o [Portal do Azure](https://portal.azure.com?WT.mc_id=academic-17441-jabenn) - uma interface baseada na web que oferece uma GUI para gerenciar seus serviços do Azure.
+
+Acesse [portal.azure.com](https://portal.azure.com?WT.mc_id=academic-17441-jabenn) e explore o portal. Veja se você consegue criar um IoT Hub usando o portal e, em seguida, excluí-lo.
+
+**Dica** - ao criar serviços pelo portal, não é necessário criar um Grupo de Recursos antecipadamente; um pode ser criado durante a criação do serviço. Certifique-se de excluí-lo quando terminar!
+
+Você pode encontrar muita documentação, tutoriais e guias sobre o Portal do Azure na [documentação do portal do Azure](https://docs.microsoft.com/azure/azure-portal/?WT.mc_id=academic-17441-jabenn).
+
+## Questionário pós-aula
+
+[Questionário pós-aula](https://black-meadow-040d15503.1.azurestaticapps.net/quiz/20)
+
+## Revisão e Autoestudo
+
+* Leia sobre a história da criptografia na [página História da criptografia na Wikipedia](https://wikipedia.org/wiki/History_of_cryptography).
+* Leia sobre certificados X.509 na [página X.509 na Wikipedia](https://wikipedia.org/wiki/X.509).
+
+## Tarefa
+
+[Crie um novo dispositivo IoT](assignment.md)
+
+---
+
+**Aviso Legal**:
+Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.
\ No newline at end of file
diff --git a/translations/br/2-farm/lessons/6-keep-your-plant-secure/assignment.md b/translations/br/2-farm/lessons/6-keep-your-plant-secure/assignment.md
new file mode 100644
index 00000000..7b465449
--- /dev/null
+++ b/translations/br/2-farm/lessons/6-keep-your-plant-secure/assignment.md
@@ -0,0 +1,29 @@
+
+# Construir um novo dispositivo IoT
+
+## Instruções
+
+Nas últimas 6 aulas, você aprendeu sobre agricultura digital e como usar dispositivos IoT para coletar dados, prever o crescimento das plantas e automatizar a irrigação com base nas leituras de umidade do solo.
+
+Use o que você aprendeu para construir um novo dispositivo IoT utilizando um sensor e um atuador de sua escolha. Envie telemetria para um IoT Hub e use isso para controlar um atuador por meio de código serverless. Você pode usar um sensor e um atuador que já utilizou neste ou no projeto anterior, ou, se tiver outros hardwares, experimente algo novo.
+
+## Rubrica
+
+| Critério | Exemplar | Adequado | Precisa de Melhorias |
+| -------- | --------- | -------- | -------------------- |
+| Programar um dispositivo IoT para usar um sensor e um atuador | Programou um dispositivo IoT que funciona com um sensor e um atuador | Programou um dispositivo IoT que funciona com um sensor ou um atuador | Não conseguiu programar um dispositivo IoT para usar um sensor ou um atuador |
+| Conectar o dispositivo IoT ao IoT Hub | Foi capaz de implantar um IoT Hub, enviar telemetria para ele e receber comandos dele | Foi capaz de implantar um IoT Hub e enviar telemetria ou receber comandos | Não conseguiu implantar um IoT Hub e se comunicar com ele a partir de um dispositivo IoT |
+| Controlar o atuador usando código serverless | Foi capaz de implantar uma Azure Function para controlar o dispositivo acionada por eventos de telemetria | Foi capaz de implantar uma Azure Function acionada por eventos de telemetria, mas não conseguiu controlar o atuador | Não conseguiu implantar uma Azure Function |
+
+---
+
+**Aviso Legal**:
+Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.
\ No newline at end of file
diff --git a/translations/br/2-farm/lessons/6-keep-your-plant-secure/single-board-computer-x509.md b/translations/br/2-farm/lessons/6-keep-your-plant-secure/single-board-computer-x509.md
new file mode 100644
index 00000000..e7ed2c93
--- /dev/null
+++ b/translations/br/2-farm/lessons/6-keep-your-plant-secure/single-board-computer-x509.md
@@ -0,0 +1,71 @@
+
+# Use o certificado X.509 no código do seu dispositivo - Hardware IoT Virtual e Raspberry Pi
+
+Nesta parte da lição, você conectará seu dispositivo IoT virtual ou Raspberry Pi ao IoT Hub usando o certificado X.509.
+
+## Conecte seu dispositivo ao IoT Hub
+
+O próximo passo é conectar seu dispositivo ao IoT Hub usando os certificados X.509.
+
+### Tarefa - conectar ao IoT Hub
+
+1. Copie os arquivos de chave e certificado para a pasta que contém o código do seu dispositivo IoT. Se você estiver usando um Raspberry Pi através do VS Code Remote SSH e criou as chaves no seu PC ou Mac, pode arrastar e soltar os arquivos no explorador do VS Code para copiá-los.
+
+1. Abra o arquivo `app.py`.
+
+1. Para conectar usando um certificado X.509, você precisará do nome do host do IoT Hub e do certificado X.509. Comece criando uma variável contendo o nome do host, adicionando o seguinte código antes de criar o cliente do dispositivo:
+
+ ```python
+ host_name = ""
+ ```
+
+ Substitua `` pelo nome do host do seu IoT Hub. Você pode obter isso na seção `HostName` da `connection_string`. Será o nome do seu IoT Hub, terminando com `.azure-devices.net`.
+
+1. Abaixo disso, declare uma variável com o ID do dispositivo:
+
+ ```python
+ device_id = "soil-moisture-sensor-x509"
+ ```
+
+1. Você precisará de uma instância da classe `X509` contendo os arquivos X.509. Adicione `X509` à lista de classes importadas do módulo `azure.iot.device`:
+
+ ```python
+ from azure.iot.device import IoTHubDeviceClient, Message, MethodResponse, X509
+ ```
+
+1. Crie uma instância da classe `X509` usando seus arquivos de certificado e chave, adicionando este código abaixo da declaração de `host_name`:
+
+ ```python
+ x509 = X509("./soil-moisture-sensor-x509-cert.pem", "./soil-moisture-sensor-x509-key.pem")
+ ```
+
+ Isso criará a classe `X509` usando os arquivos `soil-moisture-sensor-x509-cert.pem` e `soil-moisture-sensor-x509-key.pem` criados anteriormente.
+
+1. Substitua a linha de código que cria o `device_client` a partir de uma connection string pelo seguinte:
+
+ ```python
+ device_client = IoTHubDeviceClient.create_from_x509_certificate(x509, host_name, device_id)
+ ```
+
+ Isso conectará usando o certificado X.509 em vez de uma connection string.
+
+1. Exclua a linha com a variável `connection_string`.
+
+1. Execute seu código. Monitore as mensagens enviadas ao IoT Hub e envie solicitações de método direto como antes. Você verá o dispositivo conectando e enviando leituras de umidade do solo, além de receber solicitações de método direto.
+
+> 💁 Você pode encontrar este código na pasta [code/pi](../../../../../2-farm/lessons/6-keep-your-plant-secure/code/pi) ou [code/virtual-device](../../../../../2-farm/lessons/6-keep-your-plant-secure/code/virtual-device).
+
+😀 O programa do sensor de umidade do solo está conectado ao seu IoT Hub usando um certificado X.509!
+
+---
+
+**Aviso Legal**:
+Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.
\ No newline at end of file
diff --git a/translations/br/2-farm/lessons/6-keep-your-plant-secure/wio-terminal-x509.md b/translations/br/2-farm/lessons/6-keep-your-plant-secure/wio-terminal-x509.md
new file mode 100644
index 00000000..37fab007
--- /dev/null
+++ b/translations/br/2-farm/lessons/6-keep-your-plant-secure/wio-terminal-x509.md
@@ -0,0 +1,17 @@
+
+# Usar o certificado X.509 no código do seu dispositivo - Wio Terminal
+
+No momento da redação, o Azure Arduino SDK não oferece suporte a certificados X.509. Se você quiser experimentar com certificados X.509, pode consultar as [instruções para dispositivos IoT virtuais usando o SDK Python](single-board-computer-x509.md)
+
+---
+
+**Aviso Legal**:
+Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.
\ No newline at end of file
diff --git a/translations/br/3-transport/README.md b/translations/br/3-transport/README.md
new file mode 100644
index 00000000..c717e515
--- /dev/null
+++ b/translations/br/3-transport/README.md
@@ -0,0 +1,38 @@
+
+# Transporte da fazenda para a fábrica - usando IoT para rastrear entregas de alimentos
+
+Muitos agricultores cultivam alimentos para vender - seja como agricultores comerciais que vendem tudo o que produzem, ou como agricultores de subsistência que vendem o excedente para comprar itens essenciais. De alguma forma, os alimentos precisam sair da fazenda e chegar ao consumidor, e isso geralmente depende do transporte em grande escala, das fazendas para centros de distribuição ou plantas de processamento, e depois para as lojas. Por exemplo, um agricultor de tomates colhe os tomates, os embala em caixas, carrega as caixas em um caminhão e os entrega a uma planta de processamento. Os tomates são então classificados e, a partir daí, entregues aos consumidores na forma de alimentos processados, vendas no varejo ou consumidos em restaurantes.
+
+A IoT pode ajudar nessa cadeia de suprimentos ao rastrear os alimentos em trânsito - garantindo que os motoristas sigam o trajeto correto, monitorando a localização dos veículos e recebendo alertas quando os veículos chegam, para que os alimentos possam ser descarregados e estejam prontos para o processamento o mais rápido possível.
+
+> 🎓 Uma *cadeia de suprimentos* é a sequência de atividades para produzir e entregar algo. Por exemplo, no cultivo de tomates, ela abrange o fornecimento de sementes, solo, fertilizantes e água, o cultivo dos tomates, a entrega dos tomates a um centro de distribuição, o transporte para o centro local de um supermercado, o transporte para o supermercado individual, a exposição nas prateleiras, a venda ao consumidor e o transporte para casa para consumo. Cada etapa é como os elos de uma corrente.
+
+> 🎓 A parte de transporte da cadeia de suprimentos é conhecida como *logística*.
+
+Nestes 4 módulos, você aprenderá como aplicar a Internet das Coisas para melhorar a cadeia de suprimentos, monitorando os alimentos enquanto são carregados em um caminhão (virtual), que será rastreado enquanto se desloca até seu destino. Você aprenderá sobre rastreamento por GPS, como armazenar e visualizar dados de GPS, e como ser alertado quando um caminhão chegar ao seu destino.
+
+> 💁 Estes módulos utilizarão alguns recursos na nuvem. Se você não concluir todas as lições deste projeto, certifique-se de [Limpar seu projeto](../clean-up.md).
+
+## Tópicos
+
+1. [Rastreamento de localização](lessons/1-location-tracking/README.md)
+1. [Armazenar dados de localização](lessons/2-store-location-data/README.md)
+1. [Visualizar dados de localização](lessons/3-visualize-location-data/README.md)
+1. [Geofences](lessons/4-geofences/README.md)
+
+## Créditos
+
+Todas as lições foram escritas com ♥️ por [Jen Looper](https://github.com/jlooper) e [Jim Bennett](https://GitHub.com/JimBobBennett)
+
+---
+
+**Aviso Legal**:
+Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.
\ No newline at end of file
diff --git a/translations/br/3-transport/lessons/1-location-tracking/README.md b/translations/br/3-transport/lessons/1-location-tracking/README.md
new file mode 100644
index 00000000..34bf207e
--- /dev/null
+++ b/translations/br/3-transport/lessons/1-location-tracking/README.md
@@ -0,0 +1,216 @@
+
+# Rastreamento de localização
+
+
+
+> Ilustração por [Nitya Narasimhan](https://github.com/nitya). Clique na imagem para uma versão maior.
+
+## Questionário pré-aula
+
+[Questionário pré-aula](https://black-meadow-040d15503.1.azurestaticapps.net/quiz/21)
+
+## Introdução
+
+O processo principal para levar alimentos de um agricultor até o consumidor envolve carregar caixas de produtos em caminhões, navios, aviões ou outros veículos de transporte comercial e entregar os alimentos em algum lugar - seja diretamente ao cliente ou a um centro ou armazém para processamento. Todo o processo de ponta a ponta, do campo ao consumidor, faz parte de um processo chamado *cadeia de suprimentos*. O vídeo abaixo da Escola de Negócios W. P. Carey da Universidade Estadual do Arizona explica o conceito de cadeia de suprimentos e como ela é gerenciada em mais detalhes.
+
+[](https://www.youtube.com/watch?v=Mi1QBxVjZAw)
+
+> 🎥 Clique na imagem acima para assistir ao vídeo
+
+Adicionar dispositivos IoT pode melhorar drasticamente sua cadeia de suprimentos, permitindo gerenciar onde os itens estão, planejar melhor o transporte e o manuseio de mercadorias, e responder mais rapidamente a problemas.
+
+Ao gerenciar uma frota de veículos, como caminhões, é útil saber onde cada veículo está em um determinado momento. Os veículos podem ser equipados com sensores GPS que enviam sua localização para sistemas IoT, permitindo que os proprietários identifiquem sua localização, vejam a rota que percorreram e saibam quando chegarão ao destino. A maioria dos veículos opera fora da cobertura Wi-Fi, então eles usam redes celulares para enviar esse tipo de dado. Às vezes, o sensor GPS está integrado a dispositivos IoT mais complexos, como diários eletrônicos de bordo. Esses dispositivos rastreiam quanto tempo um caminhão esteve em trânsito para garantir que os motoristas estejam em conformidade com as leis locais sobre horas de trabalho.
+
+Nesta lição, você aprenderá como rastrear a localização de um veículo usando um sensor de Sistema de Posicionamento Global (GPS).
+
+Nesta lição, abordaremos:
+
+* [Veículos conectados](../../../../../3-transport/lessons/1-location-tracking)
+* [Coordenadas geoespaciais](../../../../../3-transport/lessons/1-location-tracking)
+* [Sistemas de Posicionamento Global (GPS)](../../../../../3-transport/lessons/1-location-tracking)
+* [Ler dados de sensores GPS](../../../../../3-transport/lessons/1-location-tracking)
+* [Dados GPS NMEA](../../../../../3-transport/lessons/1-location-tracking)
+* [Decodificar dados de sensores GPS](../../../../../3-transport/lessons/1-location-tracking)
+
+## Veículos conectados
+
+IoT está transformando a maneira como mercadorias são transportadas ao criar frotas de *veículos conectados*. Esses veículos estão conectados a sistemas de TI centrais, relatando informações sobre sua localização e outros dados de sensores. Ter uma frota de veículos conectados oferece uma ampla gama de benefícios:
+
+* Rastreamento de localização - você pode identificar onde um veículo está a qualquer momento, permitindo:
+
+ * Receber alertas quando um veículo estiver prestes a chegar ao destino para preparar a equipe para descarregar
+ * Localizar veículos roubados
+ * Combinar dados de localização e rota com problemas de trânsito para permitir redirecionar veículos durante a jornada
+ * Cumprir obrigações fiscais. Alguns países cobram impostos dos veículos com base na quilometragem percorrida em vias públicas (como o [RUC da Nova Zelândia](https://www.nzta.govt.nz/vehicles/licensing-rego/road-user-charges/)), então saber quando um veículo está em vias públicas versus privadas facilita o cálculo do imposto devido.
+ * Saber onde enviar equipes de manutenção em caso de avaria
+
+* Telemetria do motorista - garantir que os motoristas estejam respeitando os limites de velocidade, fazendo curvas em velocidades apropriadas, freando de forma eficiente e dirigindo com segurança. Veículos conectados também podem ter câmeras para registrar incidentes. Isso pode ser vinculado ao seguro, oferecendo taxas reduzidas para bons motoristas.
+
+* Conformidade com horas de trabalho - garantir que os motoristas dirijam apenas dentro das horas legalmente permitidas, com base nos horários em que ligam e desligam o motor.
+
+Esses benefícios podem ser combinados - por exemplo, combinando conformidade com horas de trabalho e rastreamento de localização para redirecionar motoristas caso não consigam chegar ao destino dentro das horas permitidas. Isso também pode ser combinado com outras telemetrias específicas do veículo, como dados de temperatura de caminhões refrigerados, permitindo redirecionar veículos caso a rota atual comprometa a manutenção da temperatura das mercadorias.
+
+> 🎓 Logística é o processo de transportar mercadorias de um lugar para outro, como de uma fazenda para um supermercado via um ou mais armazéns. Um agricultor embala caixas de tomates que são carregadas em um caminhão, entregues a um armazém central e colocadas em um segundo caminhão que pode conter uma mistura de diferentes tipos de produtos, que são então entregues a um supermercado.
+
+O componente principal do rastreamento de veículos é o GPS - sensores que podem identificar sua localização em qualquer lugar da Terra. Nesta lição, você aprenderá como usar um sensor GPS, começando com como definir uma localização na Terra.
+
+## Coordenadas geoespaciais
+
+Coordenadas geoespaciais são usadas para definir pontos na superfície da Terra, semelhante a como coordenadas podem ser usadas para desenhar um pixel em uma tela de computador ou posicionar pontos em bordados. Para um único ponto, você tem um par de coordenadas. Por exemplo, o Campus da Microsoft em Redmond, Washington, EUA está localizado em 47.6423109, -122.1390293.
+
+### Latitude e longitude
+
+A Terra é uma esfera - um círculo tridimensional. Por causa disso, os pontos são definidos dividindo-a em 360 graus, o mesmo que a geometria dos círculos. Latitude mede o número de graus de norte a sul, longitude mede o número de graus de leste a oeste.
+
+> 💁 Ninguém sabe ao certo o motivo original de os círculos serem divididos em 360 graus. A [página sobre grau (ângulo) na Wikipedia](https://wikipedia.org/wiki/Degree_(angle)) aborda algumas das possíveis razões.
+
+
+
+Latitude é medida usando linhas que circundam a Terra e correm paralelas ao equador, dividindo os hemisférios Norte e Sul em 90° cada. O equador está em 0°, o Polo Norte em 90°, também conhecido como 90° Norte, e o Polo Sul em -90°, ou 90° Sul.
+
+Longitude é medida como o número de graus de leste a oeste. A origem de 0° da longitude é chamada de *Meridiano de Greenwich*, definida em 1884 como uma linha do Polo Norte ao Polo Sul que passa pelo [Observatório Real Britânico em Greenwich, Inglaterra](https://wikipedia.org/wiki/Royal_Observatory,_Greenwich).
+
+
+
+> 🎓 Um meridiano é uma linha imaginária reta que vai do Polo Norte ao Polo Sul, formando um semicírculo.
+
+Para medir a longitude de um ponto, você mede o número de graus ao longo do equador do Meridiano de Greenwich até um meridiano que passa por esse ponto. Longitude vai de -180°, ou 180° Oeste, passando por 0° no Meridiano de Greenwich, até 180°, ou 180° Leste. 180° e -180° referem-se ao mesmo ponto, o antimeridiano ou 180º meridiano. Este é um meridiano no lado oposto da Terra em relação ao Meridiano de Greenwich.
+
+> 💁 O antimeridiano não deve ser confundido com a Linha Internacional de Data, que está aproximadamente na mesma posição, mas não é uma linha reta e varia para se ajustar às fronteiras geopolíticas.
+
+✅ Faça uma pesquisa: Tente encontrar a latitude e longitude de sua localização atual.
+
+### Graus, minutos e segundos vs graus decimais
+
+Tradicionalmente, as medições de graus de latitude e longitude eram feitas usando numeração sexagesimal, ou base-60, um sistema numérico usado pelos antigos babilônios que fizeram as primeiras medições e registros de tempo e distância. Você provavelmente usa sexagesimal todos os dias sem perceber - dividindo horas em 60 minutos e minutos em 60 segundos.
+
+Longitude e latitude são medidas em graus, minutos e segundos, com um minuto sendo 1/60 de um grau, e 1 segundo sendo 1/60 de um minuto.
+
+Por exemplo, no equador:
+
+* 1° de latitude é **111,3 quilômetros**
+* 1 minuto de latitude é 111,3/60 = **1,855 quilômetros**
+* 1 segundo de latitude é 1,855/60 = **0,031 quilômetros**
+
+O símbolo para um minuto é uma aspa simples, para um segundo é uma aspa dupla. 2 graus, 17 minutos e 43 segundos, por exemplo, seriam escritos como 2°17'43". Partes de segundos são dadas como decimais, por exemplo, meio segundo é 0°0'0,5".
+
+Computadores não trabalham em base-60, então essas coordenadas são dadas como graus decimais ao usar dados GPS na maioria dos sistemas computacionais. Por exemplo, 2°17'43" é 2,295277. O símbolo de grau geralmente é omitido.
+
+As coordenadas de um ponto são sempre dadas como `latitude, longitude`, então o exemplo anterior do Campus da Microsoft em 47.6423109,-122.117198 tem:
+
+* Uma latitude de 47.6423109 (47.6423109 graus ao norte do equador)
+* Uma longitude de -122.1390293 (122.1390293 graus a oeste do Meridiano de Greenwich).
+
+
+
+## Sistemas de Posicionamento Global (GPS)
+
+Sistemas GPS usam múltiplos satélites orbitando a Terra para localizar sua posição. Você provavelmente já usou sistemas GPS sem nem perceber - para encontrar sua localização em um aplicativo de mapas no seu celular, como Apple Maps ou Google Maps, ou para ver onde está seu transporte em um aplicativo de carona, como Uber ou Lyft, ou ao usar navegação por satélite (sat-nav) no seu carro.
+
+> 🎓 Os satélites na 'navegação por satélite' são satélites GPS!
+
+Sistemas GPS funcionam ao ter vários satélites que enviam um sinal com a posição atual de cada satélite e um carimbo de tempo preciso. Esses sinais são enviados por ondas de rádio e detectados por uma antena no sensor GPS. Um sensor GPS detecta esses sinais e, usando o horário atual, mede quanto tempo levou para o sinal chegar ao sensor a partir do satélite. Como a velocidade das ondas de rádio é constante, o sensor GPS pode usar o carimbo de tempo enviado para calcular a distância entre o sensor e o satélite. Combinando os dados de pelo menos 3 satélites com as posições enviadas, o sensor GPS consegue identificar sua localização na Terra.
+
+> 💁 Sensores GPS precisam de antenas para detectar ondas de rádio. As antenas embutidas em caminhões e carros com GPS integrado são posicionadas para obter um bom sinal, geralmente no para-brisa ou no teto. Se você estiver usando um sistema GPS separado, como um smartphone ou um dispositivo IoT, então precisa garantir que a antena embutida no sistema GPS ou telefone tenha uma visão clara do céu, como sendo montada no para-brisa.
+
+
+
+Satélites GPS estão circulando a Terra, não em um ponto fixo acima do sensor, então os dados de localização incluem altitude acima do nível do mar, além de latitude e longitude.
+
+O GPS costumava ter limitações de precisão impostas pelo exército dos EUA, limitando a precisão a cerca de 5 metros. Essa limitação foi removida em 2000, permitindo uma precisão de 30 centímetros. Obter essa precisão nem sempre é possível devido à interferência nos sinais.
+
+✅ Se você tiver um smartphone, abra o aplicativo de mapas e veja quão precisa é sua localização. Pode levar um curto período de tempo para seu telefone detectar múltiplos satélites e obter uma localização mais precisa.
+💁 Os satélites possuem relógios atômicos extremamente precisos, mas eles sofrem um desvio de 38 microssegundos (0,0000038 segundos) por dia em comparação com os relógios atômicos na Terra, devido à desaceleração do tempo conforme a velocidade aumenta, como previsto pelas teorias da relatividade especial e geral de Einstein - os satélites viajam mais rápido do que a rotação da Terra. Esse desvio foi utilizado para comprovar as previsões da relatividade especial e geral e precisa ser ajustado no design dos sistemas de GPS. Literalmente, o tempo passa mais devagar em um satélite de GPS.
+Sistemas de GPS foram desenvolvidos e implantados por diversos países e uniões políticas, incluindo os EUA, Rússia, Japão, Índia, UE e China. Sensores modernos de GPS podem se conectar à maioria desses sistemas para obter localizações mais rápidas e precisas.
+
+> 🎓 Os grupos de satélites em cada implantação são chamados de constelações.
+
+## Ler dados de sensores GPS
+
+A maioria dos sensores GPS envia dados via UART.
+
+> ⚠️ UART foi abordado em [projeto 2, lição 2](../../../2-farm/lessons/2-detect-soil-moisture/README.md#universal-asynchronous-receiver-transmitter-uart). Consulte essa lição novamente, se necessário.
+
+Você pode usar um sensor GPS no seu dispositivo IoT para obter dados de GPS.
+
+### Tarefa - conectar um sensor GPS e ler dados de GPS
+
+Siga o guia relevante para ler dados de GPS usando seu dispositivo IoT:
+
+* [Arduino - Wio Terminal](wio-terminal-gps-sensor.md)
+* [Computador de placa única - Raspberry Pi](pi-gps-sensor.md)
+* [Computador de placa única - Dispositivo virtual](virtual-device-gps-sensor.md)
+
+## Dados GPS NMEA
+
+Quando você executou seu código, pode ter visto algo que parece ser um monte de caracteres sem sentido na saída. Na verdade, isso é um padrão de dados GPS, e tudo tem um significado.
+
+Sensores GPS enviam dados usando mensagens NMEA, seguindo o padrão NMEA 0183. NMEA é um acrônimo para a [National Marine Electronics Association](https://www.nmea.org), uma organização comercial dos EUA que define padrões de comunicação entre eletrônicos marítimos.
+
+> 💁 Este padrão é proprietário e custa pelo menos US$2.000, mas informações suficientes sobre ele estão em domínio público, permitindo que a maior parte do padrão seja reversamente engenheirada e usada em código open source e outros projetos não comerciais.
+
+Essas mensagens são baseadas em texto. Cada mensagem consiste em uma *sentença* que começa com o caractere `$`, seguido por 2 caracteres que indicam a origem da mensagem (por exemplo, GP para o sistema GPS dos EUA, GN para GLONASS, o sistema GPS da Rússia) e 3 caracteres que indicam o tipo de mensagem. O restante da mensagem é composto por campos separados por vírgulas, terminando com um caractere de nova linha.
+
+Alguns dos tipos de mensagens que podem ser recebidas são:
+
+| Tipo | Descrição |
+| ---- | --------- |
+| GGA | Dados de localização GPS, incluindo latitude, longitude e altitude do sensor GPS, junto com o número de satélites em vista para calcular essa localização. |
+| ZDA | A data e hora atuais, incluindo o fuso horário local. |
+| GSV | Detalhes dos satélites em vista - definidos como os satélites dos quais o sensor GPS pode detectar sinais. |
+
+> 💁 Dados GPS incluem carimbos de tempo, então seu dispositivo IoT pode obter a hora, se necessário, de um sensor GPS, em vez de depender de um servidor NTP ou de um relógio interno em tempo real.
+
+A mensagem GGA inclui a localização atual usando o formato `(dd)dmm.mmmm`, junto com um único caractere para indicar a direção. O `d` no formato representa graus, o `m` representa minutos, com segundos como decimais de minutos. Por exemplo, 2°17'43" seria 217.716666667 - 2 graus, 17.716666667 minutos.
+
+O caractere de direção pode ser `N` ou `S` para latitude, indicando norte ou sul, e `E` ou `W` para longitude, indicando leste ou oeste. Por exemplo, uma latitude de 2°17'43" teria um caractere de direção `N`, enquanto -2°17'43" teria um caractere de direção `S`.
+
+Por exemplo - a sentença NMEA `$GNGGA,020604.001,4738.538654,N,12208.341758,W,1,3,,164.7,M,-17.1,M,,*67`
+
+* A parte da latitude é `4738.538654,N`, que se converte para 47.6423109 em graus decimais. `4738.538654` é 47.6423109, e a direção é `N` (norte), então é uma latitude positiva.
+
+* A parte da longitude é `12208.341758,W`, que se converte para -122.1390293 em graus decimais. `12208.341758` é 122.1390293°, e a direção é `W` (oeste), então é uma longitude negativa.
+
+## Decodificar dados de sensores GPS
+
+Em vez de usar os dados brutos NMEA, é melhor decodificá-los em um formato mais útil. Existem várias bibliotecas open source que você pode usar para ajudar a extrair dados úteis das mensagens NMEA brutas.
+
+### Tarefa - decodificar dados de sensores GPS
+
+Siga o guia relevante para decodificar dados de sensores GPS usando seu dispositivo IoT:
+
+* [Arduino - Wio Terminal](wio-terminal-gps-decode.md)
+* [Computador de placa única - Raspberry Pi/Dispositivo IoT virtual](single-board-computer-gps-decode.md)
+
+---
+
+## 🚀 Desafio
+
+Escreva seu próprio decodificador NMEA! Em vez de depender de bibliotecas de terceiros para decodificar sentenças NMEA, você consegue escrever seu próprio decodificador para extrair latitude e longitude de sentenças NMEA?
+
+## Quiz pós-aula
+
+[Quiz pós-aula](https://black-meadow-040d15503.1.azurestaticapps.net/quiz/22)
+
+## Revisão e Autoestudo
+
+* Leia mais sobre Coordenadas Geoespaciais na [página do sistema de coordenadas geográficas na Wikipedia](https://wikipedia.org/wiki/Geographic_coordinate_system).
+* Leia sobre os Meridianos Principais em outros corpos celestes além da Terra na [página do Meridiano Principal na Wikipedia](https://wikipedia.org/wiki/Prime_meridian#Prime_meridian_on_other_planetary_bodies).
+* Pesquise os diferentes sistemas GPS de diversos governos mundiais e uniões políticas, como a UE, Japão, Rússia, Índia e EUA.
+
+## Tarefa
+
+[Investigar outros dados de GPS](assignment.md)
+
+---
+
+**Aviso Legal**:
+Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.
\ No newline at end of file
diff --git a/translations/br/3-transport/lessons/1-location-tracking/assignment.md b/translations/br/3-transport/lessons/1-location-tracking/assignment.md
new file mode 100644
index 00000000..8e74048d
--- /dev/null
+++ b/translations/br/3-transport/lessons/1-location-tracking/assignment.md
@@ -0,0 +1,29 @@
+
+# Investigar outros dados de GPS
+
+## Instruções
+
+As sentenças NMEA provenientes do seu sensor GPS contêm outros dados além da localização. Investigue esses dados adicionais e utilize-os no seu dispositivo IoT.
+
+Por exemplo - você consegue obter a data e hora atuais? Se estiver usando um microcontrolador, consegue ajustar o relógio usando os dados do GPS da mesma forma que fez com os sinais NTP no projeto anterior? Consegue obter a elevação (sua altura acima do nível do mar) ou sua velocidade atual?
+
+Se estiver usando um dispositivo IoT virtual, você pode obter alguns desses dados enviando sentenças NMEA geradas por ferramentas como [nmeagen.org](https://www.nmeagen.org).
+
+## Rubrica
+
+| Critério | Exemplar | Adequado | Precisa Melhorar |
+| -------- | --------- | -------- | ---------------- |
+| Obter mais dados de GPS | Consegue obter e usar mais dados de GPS, seja como telemetria ou para configurar o dispositivo IoT | Consegue obter mais dados de GPS, mas não consegue utilizá-los | Não consegue obter mais dados de GPS |
+
+---
+
+**Aviso Legal**:
+Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.
\ No newline at end of file
diff --git a/translations/br/3-transport/lessons/1-location-tracking/pi-gps-sensor.md b/translations/br/3-transport/lessons/1-location-tracking/pi-gps-sensor.md
new file mode 100644
index 00000000..f0098f9c
--- /dev/null
+++ b/translations/br/3-transport/lessons/1-location-tracking/pi-gps-sensor.md
@@ -0,0 +1,193 @@
+
+# Ler dados de GPS - Raspberry Pi
+
+Nesta parte da lição, você adicionará um sensor GPS ao seu Raspberry Pi e lerá os valores dele.
+
+## Hardware
+
+O Raspberry Pi precisa de um sensor GPS.
+
+O sensor que você usará é o [sensor Grove GPS Air530](https://www.seeedstudio.com/Grove-GPS-Air530-p-4584.html). Este sensor pode se conectar a vários sistemas GPS para obter uma localização rápida e precisa. O sensor é composto por duas partes: os componentes eletrônicos principais e uma antena externa conectada por um fio fino para captar as ondas de rádio dos satélites.
+
+Este é um sensor UART, então ele envia dados GPS via UART.
+
+## Conectar o sensor GPS
+
+O sensor Grove GPS pode ser conectado ao Raspberry Pi.
+
+### Tarefa - conectar o sensor GPS
+
+Conecte o sensor GPS.
+
+
+
+1. Insira uma extremidade do cabo Grove no conector do sensor GPS. Ele só encaixará de uma maneira.
+
+1. Com o Raspberry Pi desligado, conecte a outra extremidade do cabo Grove ao conector UART marcado como **UART** no Grove Base Hat conectado ao Pi. Este conector está na fileira do meio, no lado mais próximo ao slot do cartão SD, oposto às portas USB e ao conector Ethernet.
+
+ 
+
+1. Posicione o sensor GPS de forma que a antena conectada tenha visibilidade para o céu - idealmente próximo a uma janela aberta ou ao ar livre. É mais fácil obter um sinal claro sem obstruções na frente da antena.
+
+## Programar o sensor GPS
+
+Agora o Raspberry Pi pode ser programado para usar o sensor GPS conectado.
+
+### Tarefa - programar o sensor GPS
+
+Programe o dispositivo.
+
+1. Ligue o Pi e aguarde o boot.
+
+1. O sensor GPS possui 2 LEDs - um LED azul que pisca quando os dados são transmitidos e um LED verde que pisca a cada segundo ao receber dados dos satélites. Certifique-se de que o LED azul esteja piscando ao ligar o Pi. Após alguns minutos, o LED verde começará a piscar - se isso não acontecer, pode ser necessário reposicionar a antena.
+
+1. Abra o VS Code, diretamente no Pi ou conecte-se via a extensão Remote SSH.
+
+ > ⚠️ Você pode consultar [as instruções para configurar e abrir o VS Code na lição 1, se necessário](../../../1-getting-started/lessons/1-introduction-to-iot/pi.md).
+
+1. Com versões mais recentes do Raspberry Pi que suportam Bluetooth, há um conflito entre a porta serial usada para Bluetooth e a usada pelo conector Grove UART. Para corrigir isso, faça o seguinte:
+
+ 1. No terminal do VS Code, edite o arquivo `/boot/config.txt` usando `nano`, um editor de texto integrado ao terminal, com o seguinte comando:
+
+ ```sh
+ sudo nano /boot/config.txt
+ ```
+
+ > Este arquivo não pode ser editado pelo VS Code, pois você precisa de permissões elevadas (`sudo`). O VS Code não executa com essas permissões.
+
+ 1. Use as teclas de navegação para ir até o final do arquivo e copie o código abaixo, colando-o no final do arquivo:
+
+ ```ini
+ dtoverlay=pi3-miniuart-bt
+ dtoverlay=pi3-disable-bt
+ enable_uart=1
+ ```
+
+ Você pode colar usando os atalhos normais do teclado para o seu dispositivo (`Ctrl+v` no Windows, Linux ou Raspberry Pi OS, `Cmd+v` no macOS).
+
+ 1. Salve o arquivo e saia do nano pressionando `Ctrl+x`. Pressione `y` quando perguntado se deseja salvar o buffer modificado e, em seguida, pressione `enter` para confirmar que deseja sobrescrever `/boot/config.txt`.
+
+ > Se cometer um erro, você pode sair sem salvar e repetir os passos.
+
+ 1. Edite o arquivo `/boot/cmdline.txt` no nano com o seguinte comando:
+
+ ```sh
+ sudo nano /boot/cmdline.txt
+ ```
+
+ 1. Este arquivo contém vários pares de chave/valor separados por espaços. Remova quaisquer pares de chave/valor para a chave `console`. Eles provavelmente serão semelhantes a isto:
+
+ ```output
+ console=serial0,115200 console=tty1
+ ```
+
+ Você pode navegar até essas entradas usando as teclas de navegação e excluí-las usando as teclas `del` ou `backspace`.
+
+ Por exemplo, se o arquivo original for assim:
+
+ ```output
+ console=serial0,115200 console=tty1 root=PARTUUID=058e2867-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait
+ ```
+
+ A nova versão será:
+
+ ```output
+ root=PARTUUID=058e2867-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait
+ ```
+
+ 1. Siga os passos acima para salvar este arquivo e sair do nano.
+
+ 1. Reinicie o Pi e reconecte-se ao VS Code após o reinício.
+
+1. No terminal, crie uma nova pasta no diretório home do usuário `pi` chamada `gps-sensor`. Crie um arquivo nesta pasta chamado `app.py`.
+
+1. Abra esta pasta no VS Code.
+
+1. O módulo GPS envia dados UART por uma porta serial. Instale o pacote Pip `pyserial` para se comunicar com a porta serial no seu código Python:
+
+ ```sh
+ pip3 install pyserial
+ ```
+
+1. Adicione o seguinte código ao seu arquivo `app.py`:
+
+ ```python
+ import time
+ import serial
+
+ serial = serial.Serial('/dev/ttyAMA0', 9600, timeout=1)
+ serial.reset_input_buffer()
+ serial.flush()
+
+ def print_gps_data(line):
+ print(line.rstrip())
+
+ while True:
+ line = serial.readline().decode('utf-8')
+
+ while len(line) > 0:
+ print_gps_data(line)
+ line = serial.readline().decode('utf-8')
+
+ time.sleep(1)
+ ```
+
+ Este código importa o módulo `serial` do pacote Pip `pyserial`. Em seguida, conecta-se à porta serial `/dev/ttyAMA0` - este é o endereço da porta serial que o Grove Pi Base Hat usa para sua porta UART. Ele então limpa quaisquer dados existentes dessa conexão serial.
+
+ Em seguida, uma função chamada `print_gps_data` é definida para imprimir no console a linha passada para ela.
+
+ Depois, o código entra em um loop infinito, lendo o máximo de linhas de texto possível da porta serial em cada iteração. Ele chama a função `print_gps_data` para cada linha.
+
+ Após ler todos os dados, o loop aguarda 1 segundo e tenta novamente.
+
+1. Execute este código. Você verá a saída bruta do sensor GPS, algo como o seguinte:
+
+ ```output
+ $GNGGA,020604.001,4738.538654,N,12208.341758,W,1,3,,164.7,M,-17.1,M,,*67
+ $GPGSA,A,1,,,,,,,,,,,,,,,*1E
+ $BDGSA,A,1,,,,,,,,,,,,,,,*0F
+ $GPGSV,1,1,00*79
+ $BDGSV,1,1,00*68
+ ```
+
+ > Se você receber um dos seguintes erros ao parar e reiniciar o código, adicione um bloco `try - except` ao seu loop while.
+
+ ```output
+ UnicodeDecodeError: 'utf-8' codec can't decode byte 0x93 in position 0: invalid start byte
+ UnicodeDecodeError: 'utf-8' codec can't decode byte 0xf1 in position 0: invalid continuation byte
+ ```
+
+ ```python
+ while True:
+ try:
+ line = serial.readline().decode('utf-8')
+
+ while len(line) > 0:
+ print_gps_data()
+ line = serial.readline().decode('utf-8')
+
+ # There's a random chance the first byte being read is part way through a character.
+ # Read another full line and continue.
+
+ except UnicodeDecodeError:
+ line = serial.readline().decode('utf-8')
+
+ time.sleep(1)
+ ```
+
+> 💁 Você pode encontrar este código na pasta [code-gps/pi](../../../../../3-transport/lessons/1-location-tracking/code-gps/pi).
+
+😀 Seu programa para o sensor GPS foi um sucesso!
+
+---
+
+**Aviso Legal**:
+Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.
\ No newline at end of file
diff --git a/translations/br/3-transport/lessons/1-location-tracking/single-board-computer-gps-decode.md b/translations/br/3-transport/lessons/1-location-tracking/single-board-computer-gps-decode.md
new file mode 100644
index 00000000..2ca108ed
--- /dev/null
+++ b/translations/br/3-transport/lessons/1-location-tracking/single-board-computer-gps-decode.md
@@ -0,0 +1,75 @@
+
+# Decodificar dados de GPS - Hardware IoT Virtual e Raspberry Pi
+
+Nesta parte da lição, você irá decodificar as mensagens NMEA lidas pelo sensor GPS no Raspberry Pi ou Dispositivo IoT Virtual e extrair a latitude e longitude.
+
+## Decodificar dados de GPS
+
+Depois que os dados brutos NMEA forem lidos da porta serial, eles podem ser decodificados usando uma biblioteca NMEA de código aberto.
+
+### Tarefa - decodificar dados de GPS
+
+Programe o dispositivo para decodificar os dados do GPS.
+
+1. Abra o projeto do aplicativo `gps-sensor`, caso ainda não esteja aberto.
+
+1. Instale o pacote Pip `pynmea2`. Este pacote contém o código necessário para decodificar mensagens NMEA.
+
+ ```sh
+ pip3 install pynmea2
+ ```
+
+1. Adicione o seguinte código às importações no arquivo `app.py` para importar o módulo `pynmea2`:
+
+ ```python
+ import pynmea2
+ ```
+
+1. Substitua o conteúdo da função `print_gps_data` pelo seguinte:
+
+ ```python
+ msg = pynmea2.parse(line)
+ if msg.sentence_type == 'GGA':
+ lat = pynmea2.dm_to_sd(msg.lat)
+ lon = pynmea2.dm_to_sd(msg.lon)
+
+ if msg.lat_dir == 'S':
+ lat = lat * -1
+
+ if msg.lon_dir == 'W':
+ lon = lon * -1
+
+ print(f'{lat},{lon} - from {msg.num_sats} satellites')
+ ```
+
+ Este código utiliza a biblioteca `pynmea2` para analisar a linha lida da porta serial UART.
+
+ Se o tipo de sentença da mensagem for `GGA`, então esta é uma mensagem de fixação de posição e será processada. Os valores de latitude e longitude são extraídos da mensagem e convertidos para graus decimais a partir do formato NMEA `(d)ddmm.mmmm`. A função `dm_to_sd` realiza essa conversão.
+
+ Em seguida, a direção da latitude é verificada, e se a latitude for sul, o valor é convertido para um número negativo. O mesmo ocorre com a longitude: se for oeste, ela é convertida para um número negativo.
+
+ Por fim, as coordenadas são exibidas no console, juntamente com o número de satélites usados para obter a localização.
+
+1. Execute o código. Se você estiver usando um dispositivo IoT virtual, certifique-se de que o aplicativo CounterFit esteja em execução e os dados do GPS estejam sendo enviados.
+
+ ```output
+ pi@raspberrypi:~/gps-sensor $ python3 app.py
+ 47.6423109,-122.1390293 - from 3 satellites
+ ```
+
+> 💁 Você pode encontrar este código na pasta [code-gps-decode/virtual-device](../../../../../3-transport/lessons/1-location-tracking/code-gps-decode/virtual-device) ou na pasta [code-gps-decode/pi](../../../../../3-transport/lessons/1-location-tracking/code-gps-decode/pi).
+
+😀 O programa do sensor GPS com decodificação de dados foi um sucesso!
+
+---
+
+**Aviso Legal**:
+Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.
\ No newline at end of file
diff --git a/translations/br/3-transport/lessons/1-location-tracking/virtual-device-gps-sensor.md b/translations/br/3-transport/lessons/1-location-tracking/virtual-device-gps-sensor.md
new file mode 100644
index 00000000..18592fbb
--- /dev/null
+++ b/translations/br/3-transport/lessons/1-location-tracking/virtual-device-gps-sensor.md
@@ -0,0 +1,144 @@
+
+# Ler dados de GPS - Hardware Virtual IoT
+
+Nesta parte da lição, você adicionará um sensor GPS ao seu dispositivo IoT virtual e lerá valores dele.
+
+## Hardware Virtual
+
+O dispositivo IoT virtual usará um sensor GPS simulado que é acessível via UART por meio de uma porta serial.
+
+Um sensor GPS físico terá uma antena para captar ondas de rádio dos satélites GPS e converter os sinais GPS em dados GPS. A versão virtual simula isso permitindo que você defina uma latitude e longitude, envie sentenças NMEA brutas ou carregue um arquivo GPX com múltiplas localizações que podem ser retornadas sequencialmente.
+
+> 🎓 Sentenças NMEA serão abordadas mais tarde nesta lição.
+
+### Adicionar o sensor ao CounterFit
+
+Para usar um sensor GPS virtual, você precisa adicionar um ao aplicativo CounterFit.
+
+#### Tarefa - adicionar o sensor ao CounterFit
+
+Adicione o sensor GPS ao aplicativo CounterFit.
+
+1. Crie um novo aplicativo Python no seu computador em uma pasta chamada `gps-sensor` com um único arquivo chamado `app.py` e um ambiente virtual Python, e adicione os pacotes pip do CounterFit.
+
+ > ⚠️ Você pode consultar [as instruções para criar e configurar um projeto Python do CounterFit na lição 1, se necessário](../../../1-getting-started/lessons/1-introduction-to-iot/virtual-device.md).
+
+1. Instale um pacote Pip adicional para instalar um shim do CounterFit que pode se comunicar com sensores baseados em UART por meio de uma conexão serial. Certifique-se de instalar isso a partir de um terminal com o ambiente virtual ativado.
+
+ ```sh
+ pip install counterfit-shims-serial
+ ```
+
+1. Certifique-se de que o aplicativo web do CounterFit esteja em execução.
+
+1. Crie um sensor GPS:
+
+ 1. Na caixa *Create sensor* no painel *Sensors*, abra o menu suspenso *Sensor type* e selecione *UART GPS*.
+
+ 1. Deixe o *Port* configurado como */dev/ttyAMA0*.
+
+ 1. Selecione o botão **Add** para criar o sensor GPS na porta `/dev/ttyAMA0`.
+
+ 
+
+ O sensor GPS será criado e aparecerá na lista de sensores.
+
+ 
+
+## Programar o sensor GPS
+
+O dispositivo IoT virtual agora pode ser programado para usar o sensor GPS virtual.
+
+### Tarefa - programar o sensor GPS
+
+Programe o aplicativo do sensor GPS.
+
+1. Certifique-se de que o aplicativo `gps-sensor` esteja aberto no VS Code.
+
+1. Abra o arquivo `app.py`.
+
+1. Adicione o seguinte código no início de `app.py` para conectar o aplicativo ao CounterFit:
+
+ ```python
+ from counterfit_connection import CounterFitConnection
+ CounterFitConnection.init('127.0.0.1', 5000)
+ ```
+
+1. Adicione o seguinte código abaixo disso para importar algumas bibliotecas necessárias, incluindo a biblioteca para a porta serial do CounterFit:
+
+ ```python
+ import time
+ import counterfit_shims_serial
+
+ serial = counterfit_shims_serial.Serial('/dev/ttyAMA0')
+ ```
+
+ Este código importa o módulo `serial` do pacote Pip `counterfit_shims_serial`. Em seguida, conecta-se à porta serial `/dev/ttyAMA0` - este é o endereço da porta serial que o sensor GPS virtual usa para sua porta UART.
+
+1. Adicione o seguinte código abaixo disso para ler da porta serial e imprimir os valores no console:
+
+ ```python
+ def print_gps_data(line):
+ print(line.rstrip())
+
+ while True:
+ line = serial.readline().decode('utf-8')
+
+ while len(line) > 0:
+ print_gps_data(line)
+ line = serial.readline().decode('utf-8')
+
+ time.sleep(1)
+ ```
+
+ Uma função chamada `print_gps_data` é definida para imprimir no console a linha passada para ela.
+
+ Em seguida, o código entra em um loop infinito, lendo o máximo de linhas de texto possível da porta serial em cada iteração. Ele chama a função `print_gps_data` para cada linha.
+
+ Depois que todos os dados forem lidos, o loop dorme por 1 segundo e tenta novamente.
+
+1. Execute este código, garantindo que você esteja usando um terminal diferente daquele em que o aplicativo CounterFit está sendo executado, para que o aplicativo CounterFit permaneça em execução.
+
+1. No aplicativo CounterFit, altere o valor do sensor GPS. Você pode fazer isso de uma das seguintes maneiras:
+
+ * Defina a **Source** como `Lat/Lon` e configure uma latitude, longitude e número de satélites usados para obter a localização GPS. Este valor será enviado apenas uma vez, então marque a caixa **Repeat** para que os dados sejam repetidos a cada segundo.
+
+ 
+
+ * Defina a **Source** como `NMEA` e adicione algumas sentenças NMEA na caixa de texto. Todos esses valores serão enviados, com um atraso de 1 segundo antes de cada nova sentença GGA (fixação de posição) ser lida.
+
+ 
+
+ Você pode usar uma ferramenta como [nmeagen.org](https://www.nmeagen.org) para gerar essas sentenças desenhando em um mapa. Esses valores serão enviados apenas uma vez, então marque a caixa **Repeat** para que os dados sejam repetidos um segundo após todos terem sido enviados.
+
+ * Defina a **Source** como arquivo GPX e carregue um arquivo GPX com localizações de trilhas. Você pode baixar arquivos GPX de vários sites populares de mapas e trilhas, como [AllTrails](https://www.alltrails.com/). Esses arquivos contêm múltiplas localizações GPS como uma trilha, e o sensor GPS retornará cada nova localização em intervalos de 1 segundo.
+
+ 
+
+ Esses valores serão enviados apenas uma vez, então marque a caixa **Repeat** para que os dados sejam repetidos um segundo após todos terem sido enviados.
+
+ Depois de configurar as configurações do GPS, selecione o botão **Set** para confirmar esses valores no sensor.
+
+1. Você verá a saída bruta do sensor GPS, algo como o seguinte:
+
+ ```output
+ $GNGGA,020604.001,4738.538654,N,12208.341758,W,1,3,,164.7,M,-17.1,M,,*67
+ $GNGGA,020604.001,4738.538654,N,12208.341758,W,1,3,,164.7,M,-17.1,M,,*67
+ ```
+
+> 💁 Você pode encontrar este código na pasta [code-gps/virtual-device](../../../../../3-transport/lessons/1-location-tracking/code-gps/virtual-device).
+
+😀 Seu programa do sensor GPS foi um sucesso!
+
+---
+
+**Aviso Legal**:
+Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.
\ No newline at end of file
diff --git a/translations/br/3-transport/lessons/1-location-tracking/wio-terminal-gps-decode.md b/translations/br/3-transport/lessons/1-location-tracking/wio-terminal-gps-decode.md
new file mode 100644
index 00000000..286058c0
--- /dev/null
+++ b/translations/br/3-transport/lessons/1-location-tracking/wio-terminal-gps-decode.md
@@ -0,0 +1,83 @@
+
+# Decodificar dados de GPS - Wio Terminal
+
+Nesta parte da lição, você irá decodificar as mensagens NMEA lidas do sensor GPS pelo Wio Terminal e extrair a latitude e a longitude.
+
+## Decodificar dados de GPS
+
+Uma vez que os dados brutos NMEA tenham sido lidos da porta serial, eles podem ser decodificados usando uma biblioteca NMEA de código aberto.
+
+### Tarefa - decodificar dados de GPS
+
+Programe o dispositivo para decodificar os dados do GPS.
+
+1. Abra o projeto do aplicativo `gps-sensor`, caso ainda não esteja aberto.
+
+1. Adicione uma dependência de biblioteca para a biblioteca [TinyGPSPlus](https://github.com/mikalhart/TinyGPSPlus) no arquivo `platformio.ini` do projeto. Esta biblioteca contém o código necessário para decodificar os dados NMEA.
+
+ ```ini
+ lib_deps =
+ mikalhart/TinyGPSPlus @ 1.0.2
+ ```
+
+1. No arquivo `main.cpp`, adicione uma diretiva de inclusão para a biblioteca TinyGPSPlus:
+
+ ```cpp
+ #include
+ ```
+
+1. Abaixo da declaração de `Serial3`, declare um objeto TinyGPSPlus para processar as sentenças NMEA:
+
+ ```cpp
+ TinyGPSPlus gps;
+ ```
+
+1. Altere o conteúdo da função `printGPSData` para o seguinte:
+
+ ```cpp
+ if (gps.encode(Serial3.read()))
+ {
+ if (gps.location.isValid())
+ {
+ Serial.print(gps.location.lat(), 6);
+ Serial.print(F(","));
+ Serial.print(gps.location.lng(), 6);
+ Serial.print(" - from ");
+ Serial.print(gps.satellites.value());
+ Serial.println(" satellites");
+ }
+ }
+ ```
+
+ Este código lê o próximo caractere da porta serial UART no decodificador NMEA `gps`. Após cada caractere, ele verifica se o decodificador leu uma sentença válida e, em seguida, verifica se leu uma localização válida. Se a localização for válida, ela será enviada para o monitor serial, junto com o número de satélites que contribuíram para essa fixação.
+
+1. Compile e envie o código para o Wio Terminal.
+
+1. Após o upload, você pode monitorar os dados de localização do GPS usando o monitor serial.
+
+ ```output
+ > Executing task: platformio device monitor <
+
+ --- Available filters and text transformations: colorize, debug, default, direct, hexlify, log2file, nocontrol, printable, send_on_enter, time
+ --- More details at http://bit.ly/pio-monitor-filters
+ --- Miniterm on /dev/cu.usbmodem1201 9600,8,N,1 ---
+ --- Quit: Ctrl+C | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H ---
+ 47.6423109,-122.1390293 - from 3 satellites
+ ```
+
+> 💁 Você pode encontrar este código na pasta [code-gps-decode/wio-terminal](../../../../../3-transport/lessons/1-location-tracking/code-gps-decode/wio-terminal).
+
+😀 O programa do sensor GPS com decodificação de dados foi um sucesso!
+
+---
+
+**Aviso Legal**:
+Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.
\ No newline at end of file
diff --git a/translations/br/3-transport/lessons/1-location-tracking/wio-terminal-gps-sensor.md b/translations/br/3-transport/lessons/1-location-tracking/wio-terminal-gps-sensor.md
new file mode 100644
index 00000000..52811720
--- /dev/null
+++ b/translations/br/3-transport/lessons/1-location-tracking/wio-terminal-gps-sensor.md
@@ -0,0 +1,154 @@
+
+# Ler dados de GPS - Wio Terminal
+
+Nesta parte da lição, você adicionará um sensor GPS ao seu Wio Terminal e lerá os valores dele.
+
+## Hardware
+
+O Wio Terminal precisa de um sensor GPS.
+
+O sensor que você usará é o [Grove GPS Air530 sensor](https://www.seeedstudio.com/Grove-GPS-Air530-p-4584.html). Este sensor pode se conectar a vários sistemas GPS para obter uma localização rápida e precisa. O sensor é composto por 2 partes - a eletrônica principal do sensor e uma antena externa conectada por um fio fino para captar as ondas de rádio dos satélites.
+
+Este é um sensor UART, então ele envia dados GPS via UART.
+
+### Conectar o sensor GPS
+
+O sensor Grove GPS pode ser conectado ao Wio Terminal.
+
+#### Tarefa - conectar o sensor GPS
+
+Conecte o sensor GPS.
+
+
+
+1. Insira uma extremidade de um cabo Grove no conector do sensor GPS. Ele só encaixará de uma maneira.
+
+1. Com o Wio Terminal desconectado do seu computador ou de outra fonte de energia, conecte a outra extremidade do cabo Grove ao conector Grove do lado esquerdo do Wio Terminal, olhando para a tela. Este é o conector mais próximo do botão de energia.
+
+ 
+
+1. Posicione o sensor GPS de forma que a antena conectada tenha visibilidade para o céu - de preferência próximo a uma janela aberta ou ao ar livre. É mais fácil obter um sinal claro sem nada obstruindo a antena.
+
+1. Agora você pode conectar o Wio Terminal ao seu computador.
+
+1. O sensor GPS possui 2 LEDs - um LED azul que pisca quando os dados são transmitidos e um LED verde que pisca a cada segundo ao receber dados dos satélites. Certifique-se de que o LED azul esteja piscando ao ligar o Wio Terminal. Após alguns minutos, o LED verde começará a piscar - se não, pode ser necessário reposicionar a antena.
+
+## Programar o sensor GPS
+
+Agora o Wio Terminal pode ser programado para usar o sensor GPS conectado.
+
+### Tarefa - programar o sensor GPS
+
+Programe o dispositivo.
+
+1. Crie um novo projeto para o Wio Terminal usando o PlatformIO. Chame este projeto de `gps-sensor`. Adicione o código na função `setup` para configurar a porta serial.
+
+1. Adicione a seguinte diretiva `include` no topo do arquivo `main.cpp`. Isso inclui um arquivo de cabeçalho com funções para configurar a porta Grove do lado esquerdo para UART.
+
+ ```cpp
+ #include
+ ```
+
+1. Abaixo disso, adicione a seguinte linha de código para declarar uma conexão de porta serial com a porta UART:
+
+ ```cpp
+ static Uart Serial3(&sercom3, PIN_WIRE_SCL, PIN_WIRE_SDA, SERCOM_RX_PAD_1, UART_TX_PAD_0);
+ ```
+
+1. Você precisa adicionar algum código para redirecionar alguns manipuladores de sinal internos para esta porta serial. Adicione o seguinte código abaixo da declaração `Serial3`:
+
+ ```cpp
+ void SERCOM3_0_Handler()
+ {
+ Serial3.IrqHandler();
+ }
+
+ void SERCOM3_1_Handler()
+ {
+ Serial3.IrqHandler();
+ }
+
+ void SERCOM3_2_Handler()
+ {
+ Serial3.IrqHandler();
+ }
+
+ void SERCOM3_3_Handler()
+ {
+ Serial3.IrqHandler();
+ }
+ ```
+
+1. Na função `setup`, abaixo de onde a porta `Serial` é configurada, configure a porta serial UART com o seguinte código:
+
+ ```cpp
+ Serial3.begin(9600);
+
+ while (!Serial3)
+ ; // Wait for Serial3 to be ready
+
+ delay(1000);
+ ```
+
+1. Abaixo deste código na função `setup`, adicione o seguinte código para conectar o pino Grove à porta serial:
+
+ ```cpp
+ pinPeripheral(PIN_WIRE_SCL, PIO_SERCOM_ALT);
+ ```
+
+1. Adicione a seguinte função antes da função `loop` para enviar os dados do GPS ao monitor serial:
+
+ ```cpp
+ void printGPSData()
+ {
+ Serial.println(Serial3.readStringUntil('\n'));
+ }
+ ```
+
+1. Na função `loop`, adicione o seguinte código para ler da porta serial UART e imprimir a saída no monitor serial:
+
+ ```cpp
+ while (Serial3.available() > 0)
+ {
+ printGPSData();
+ }
+
+ delay(1000);
+ ```
+
+ Este código lê da porta serial UART. A função `readStringUntil` lê até encontrar um caractere terminador, neste caso, uma nova linha. Isso permitirá ler uma sentença NMEA inteira (sentenças NMEA são terminadas com um caractere de nova linha). Enquanto houver dados para serem lidos da porta serial UART, eles serão lidos e enviados ao monitor serial através da função `printGPSData`. Quando não houver mais dados para ler, o `loop` aguarda 1 segundo (1.000ms).
+
+1. Compile e carregue o código no Wio Terminal.
+
+1. Após carregar, você pode monitorar os dados do GPS usando o monitor serial.
+
+ ```output
+ > Executing task: platformio device monitor <
+
+ --- Available filters and text transformations: colorize, debug, default, direct, hexlify, log2file, nocontrol, printable, send_on_enter, time
+ --- More details at http://bit.ly/pio-monitor-filters
+ --- Miniterm on /dev/cu.usbmodem1201 9600,8,N,1 ---
+ --- Quit: Ctrl+C | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H ---
+ $GNGGA,020604.001,4738.538654,N,12208.341758,W,1,3,,164.7,M,-17.1,M,,*67
+ $GPGSA,A,1,,,,,,,,,,,,,,,*1E
+ $BDGSA,A,1,,,,,,,,,,,,,,,*0F
+ $GPGSV,1,1,00*79
+ $BDGSV,1,1,00*68
+ ```
+
+> 💁 Você pode encontrar este código na pasta [code-gps/wio-terminal](../../../../../3-transport/lessons/1-location-tracking/code-gps/wio-terminal).
+
+😀 Seu programa para o sensor GPS foi um sucesso!
+
+---
+
+**Aviso Legal**:
+Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.
\ No newline at end of file
diff --git a/translations/br/3-transport/lessons/2-store-location-data/README.md b/translations/br/3-transport/lessons/2-store-location-data/README.md
new file mode 100644
index 00000000..b0dce199
--- /dev/null
+++ b/translations/br/3-transport/lessons/2-store-location-data/README.md
@@ -0,0 +1,479 @@
+
+# Dados de localização da loja
+
+
+
+> Ilustração por [Nitya Narasimhan](https://github.com/nitya). Clique na imagem para uma versão maior.
+
+## Quiz pré-aula
+
+[Quiz pré-aula](https://black-meadow-040d15503.1.azurestaticapps.net/quiz/23)
+
+## Introdução
+
+Na última lição, você aprendeu como usar um sensor GPS para capturar dados de localização. Para usar esses dados e visualizar a localização de um caminhão carregado de alimentos e sua jornada, é necessário enviá-los para um serviço de IoT na nuvem e armazená-los em algum lugar.
+
+Nesta lição, você aprenderá sobre as diferentes formas de armazenar dados de IoT e como armazenar dados do seu serviço de IoT usando código serverless.
+
+Nesta lição, abordaremos:
+
+* [Dados estruturados e não estruturados](../../../../../3-transport/lessons/2-store-location-data)
+* [Enviar dados de GPS para um IoT Hub](../../../../../3-transport/lessons/2-store-location-data)
+* [Caminhos quente, morno e frio](../../../../../3-transport/lessons/2-store-location-data)
+* [Lidar com eventos de GPS usando código serverless](../../../../../3-transport/lessons/2-store-location-data)
+* [Contas de armazenamento do Azure](../../../../../3-transport/lessons/2-store-location-data)
+* [Conectar seu código serverless ao armazenamento](../../../../../3-transport/lessons/2-store-location-data)
+
+## Dados estruturados e não estruturados
+
+Sistemas computacionais lidam com dados, e esses dados vêm em diferentes formas e tamanhos. Eles podem variar de números únicos a grandes quantidades de texto, vídeos, imagens e dados de IoT. Os dados geralmente podem ser divididos em duas categorias: *dados estruturados* e *dados não estruturados*.
+
+* **Dados estruturados** são dados com uma estrutura bem definida e rígida que não muda, geralmente mapeados para tabelas de dados com relacionamentos. Um exemplo é os detalhes de uma pessoa, incluindo seu nome, data de nascimento e endereço.
+
+* **Dados não estruturados** são dados sem uma estrutura bem definida e rígida, incluindo dados que podem mudar de estrutura frequentemente. Um exemplo são documentos como textos escritos ou planilhas.
+
+✅ Faça uma pesquisa: Você consegue pensar em outros exemplos de dados estruturados e não estruturados?
+
+> 💁 Também existem dados semi-estruturados que possuem estrutura, mas não se encaixam em tabelas fixas de dados.
+
+Dados de IoT geralmente são considerados dados não estruturados.
+
+Imagine que você está adicionando dispositivos IoT a uma frota de veículos de uma grande fazenda comercial. Você pode querer usar dispositivos diferentes para diferentes tipos de veículos. Por exemplo:
+
+* Para veículos agrícolas como tratores, você quer dados de GPS para garantir que eles estão trabalhando nos campos corretos.
+* Para caminhões de entrega transportando alimentos para armazéns, você quer dados de GPS, bem como dados de velocidade e aceleração para garantir que o motorista está dirigindo com segurança, além de identidade do motorista e dados de início/parada para garantir conformidade com as leis locais sobre horas de trabalho.
+* Para caminhões refrigerados, você também quer dados de temperatura para garantir que os alimentos não fiquem muito quentes ou frios e estraguem durante o transporte.
+
+Esses dados podem mudar constantemente. Por exemplo, se o dispositivo IoT estiver na cabine de um caminhão, os dados enviados podem mudar conforme o trailer muda, enviando dados de temperatura apenas quando um trailer refrigerado estiver sendo usado.
+
+✅ Que outros dados de IoT poderiam ser capturados? Pense nos tipos de cargas que os caminhões podem transportar, bem como dados de manutenção.
+
+Esses dados variam de veículo para veículo, mas todos são enviados para o mesmo serviço de IoT para processamento. O serviço de IoT precisa ser capaz de processar esses dados não estruturados, armazenando-os de uma forma que permita que sejam pesquisados ou analisados, mas que funcione com diferentes estruturas desses dados.
+
+### Armazenamento SQL vs NoSQL
+
+Bancos de dados são serviços que permitem armazenar e consultar dados. Eles vêm em dois tipos: SQL e NoSQL.
+
+#### Bancos de dados SQL
+
+Os primeiros bancos de dados eram Sistemas de Gerenciamento de Banco de Dados Relacional (RDBMS), ou banco de dados relacional. Eles também são conhecidos como bancos de dados SQL devido à Linguagem de Consulta Estruturada (SQL) usada para interagir com eles para adicionar, remover, atualizar ou consultar dados. Esses bancos de dados consistem em um esquema - um conjunto bem definido de tabelas de dados, semelhante a uma planilha. Cada tabela tem várias colunas nomeadas. Quando você insere dados, adiciona uma linha à tabela, colocando valores em cada uma das colunas. Isso mantém os dados em uma estrutura muito rígida - embora você possa deixar colunas vazias, se quiser adicionar uma nova coluna, terá que fazer isso no banco de dados, populando valores para as linhas existentes. Esses bancos de dados são relacionais - ou seja, uma tabela pode ter um relacionamento com outra.
+
+
+
+Por exemplo, se você armazenar os detalhes pessoais de um usuário em uma tabela, terá algum tipo de ID único interno por usuário que é usado em uma linha em uma tabela que contém o nome e endereço do usuário. Se você quiser armazenar outros detalhes sobre esse usuário, como suas compras, em outra tabela, terá uma coluna na nova tabela para o ID desse usuário. Quando você procura um usuário, pode usar seu ID para obter seus detalhes pessoais de uma tabela e suas compras de outra.
+
+Bancos de dados SQL são ideais para armazenar dados estruturados e para quando você quer garantir que os dados correspondam ao seu esquema.
+
+✅ Se você nunca usou SQL antes, reserve um momento para ler sobre ele na [página de SQL na Wikipedia](https://wikipedia.org/wiki/SQL).
+
+Alguns bancos de dados SQL conhecidos são Microsoft SQL Server, MySQL e PostgreSQL.
+
+✅ Faça uma pesquisa: Leia sobre alguns desses bancos de dados SQL e suas capacidades.
+
+#### Bancos de dados NoSQL
+
+Bancos de dados NoSQL são chamados assim porque não possuem a mesma estrutura rígida dos bancos de dados SQL. Eles também são conhecidos como bancos de dados de documentos, pois podem armazenar dados não estruturados, como documentos.
+
+> 💁 Apesar do nome, alguns bancos de dados NoSQL permitem usar SQL para consultar os dados.
+
+
+
+Bancos de dados NoSQL não possuem um esquema pré-definido que limite como os dados são armazenados; em vez disso, você pode inserir qualquer dado não estruturado, geralmente usando documentos JSON. Esses documentos podem ser organizados em pastas, semelhante a arquivos no seu computador. Cada documento pode ter campos diferentes de outros documentos - por exemplo, se você estivesse armazenando dados de IoT de seus veículos agrícolas, alguns poderiam ter campos para dados de acelerômetro e velocidade, enquanto outros poderiam ter campos para a temperatura no trailer. Se você adicionasse um novo tipo de caminhão, como um com balanças integradas para rastrear o peso dos produtos transportados, então seu dispositivo IoT poderia adicionar esse novo campo e ele poderia ser armazenado sem alterações no banco de dados.
+
+Alguns bancos de dados NoSQL conhecidos incluem Azure CosmosDB, MongoDB e CouchDB.
+
+✅ Faça uma pesquisa: Leia sobre alguns desses bancos de dados NoSQL e suas capacidades.
+
+Nesta lição, você usará armazenamento NoSQL para armazenar dados de IoT.
+
+## Enviar dados de GPS para um IoT Hub
+
+Na última lição, você capturou dados de GPS de um sensor GPS conectado ao seu dispositivo IoT. Para armazenar esses dados de IoT na nuvem, você precisa enviá-los para um serviço de IoT. Mais uma vez, você usará o Azure IoT Hub, o mesmo serviço de IoT na nuvem que utilizou no projeto anterior.
+
+
+
+### Tarefa - enviar dados de GPS para um IoT Hub
+
+1. Crie um novo IoT Hub usando o plano gratuito.
+
+ > ⚠️ Você pode consultar as [instruções para criar um IoT Hub do projeto 2, lição 4](../../../2-farm/lessons/4-migrate-your-plant-to-the-cloud/README.md#create-an-iot-service-in-the-cloud) se necessário.
+
+ Lembre-se de criar um novo Grupo de Recursos. Nomeie o novo Grupo de Recursos como `gps-sensor` e o novo IoT Hub com um nome único baseado em `gps-sensor`, como `gps-sensor-`.
+
+ > 💁 Se você ainda tiver seu IoT Hub do projeto anterior, pode reutilizá-lo. Lembre-se de usar o nome desse IoT Hub e o Grupo de Recursos em que ele está ao criar outros serviços.
+
+1. Adicione um novo dispositivo ao IoT Hub. Chame este dispositivo de `gps-sensor`. Pegue a string de conexão do dispositivo.
+
+1. Atualize o código do seu dispositivo para enviar os dados de GPS para o novo IoT Hub usando a string de conexão do dispositivo obtida na etapa anterior.
+
+ > ⚠️ Você pode consultar as [instruções para conectar seu dispositivo ao IoT do projeto 2, lição 4](../../../2-farm/lessons/4-migrate-your-plant-to-the-cloud/README.md#connect-your-device-to-the-iot-service) se necessário.
+
+1. Ao enviar os dados de GPS, faça isso em formato JSON no seguinte formato:
+
+ ```json
+ {
+ "gps" :
+ {
+ "lat" : ,
+ "lon" :
+ }
+ }
+ ```
+
+1. Envie dados de GPS a cada minuto para não ultrapassar sua cota diária de mensagens.
+
+Se você estiver usando o Wio Terminal, lembre-se de adicionar todas as bibliotecas necessárias e configurar o horário usando um servidor NTP. Seu código também precisará garantir que leu todos os dados da porta serial antes de enviar a localização GPS, usando o código existente da última lição. Use o seguinte código para construir o documento JSON:
+
+```cpp
+DynamicJsonDocument doc(1024);
+doc["gps"]["lat"] = gps.location.lat();
+doc["gps"]["lon"] = gps.location.lng();
+```
+
+Se você estiver usando um dispositivo IoT virtual, lembre-se de instalar todas as bibliotecas necessárias usando um ambiente virtual.
+
+Para o Raspberry Pi e o dispositivo IoT virtual, use o código existente da última lição para obter os valores de latitude e longitude e envie-os no formato JSON correto com o seguinte código:
+
+```python
+message_json = { "gps" : { "lat":lat, "lon":lon } }
+print("Sending telemetry", message_json)
+message = Message(json.dumps(message_json))
+```
+
+> 💁 Você pode encontrar este código nas pastas [code/wio-terminal](../../../../../3-transport/lessons/2-store-location-data/code/wio-terminal), [code/pi](../../../../../3-transport/lessons/2-store-location-data/code/pi) ou [code/virtual-device](../../../../../3-transport/lessons/2-store-location-data/code/virtual-device).
+
+Execute o código do seu dispositivo e certifique-se de que as mensagens estão fluindo para o IoT Hub usando o comando CLI `az iot hub monitor-events`.
+
+## Caminhos quente, morno e frio
+
+Os dados que fluem de um dispositivo IoT para a nuvem nem sempre são processados em tempo real. Alguns dados precisam de processamento em tempo real, outros podem ser processados um pouco depois, e outros podem ser processados muito mais tarde. O fluxo de dados para diferentes serviços que processam os dados em diferentes momentos é referido como caminhos quente, morno e frio.
+
+### Caminho quente
+
+O caminho quente refere-se aos dados que precisam ser processados em tempo real ou quase em tempo real. Você usaria dados do caminho quente para alertas, como receber notificações de que um veículo está se aproximando de um depósito ou que a temperatura em um caminhão refrigerado está muito alta.
+
+Para usar dados do caminho quente, seu código responderia a eventos assim que fossem recebidos pelos serviços na nuvem.
+
+### Caminho morno
+
+O caminho morno refere-se aos dados que podem ser processados pouco tempo depois de serem recebidos, por exemplo, para relatórios ou análises de curto prazo. Você usaria dados do caminho morno para relatórios diários sobre a quilometragem dos veículos, usando dados coletados no dia anterior.
+
+Os dados do caminho morno são armazenados assim que são recebidos pelo serviço na nuvem em algum tipo de armazenamento que pode ser acessado rapidamente.
+
+### Caminho frio
+
+O caminho frio refere-se aos dados históricos, armazenando dados a longo prazo para serem processados sempre que necessário. Por exemplo, você poderia usar o caminho frio para obter relatórios anuais de quilometragem dos veículos ou executar análises de rotas para encontrar a rota mais eficiente para reduzir custos de combustível.
+
+Os dados do caminho frio são armazenados em data warehouses - bancos de dados projetados para armazenar grandes quantidades de dados que nunca mudam e podem ser consultados de forma rápida e fácil. Normalmente, você teria um trabalho regular em sua aplicação na nuvem que seria executado em um horário regular a cada dia, semana ou mês para mover dados do armazenamento do caminho morno para o data warehouse.
+
+✅ Pense nos dados que você capturou até agora nessas lições. Eles são dados de caminho quente, morno ou frio?
+
+## Lidar com eventos de GPS usando código serverless
+
+Uma vez que os dados estão fluindo para o seu IoT Hub, você pode escrever algum código serverless para escutar eventos publicados no endpoint compatível com Event-Hub. Este é o caminho morno - esses dados serão armazenados e usados na próxima lição para relatórios sobre a jornada.
+
+
+
+### Tarefa - lidar com eventos de GPS usando código serverless
+
+1. Crie um aplicativo Azure Functions usando o CLI do Azure Functions. Use o runtime Python e crie-o em uma pasta chamada `gps-trigger`, usando o mesmo nome para o projeto do aplicativo Functions. Certifique-se de criar um ambiente virtual para isso.
+> ⚠️ Você pode consultar as [instruções para criar um Projeto de Funções do Azure do projeto 2, lição 5](../../../2-farm/lessons/5-migrate-application-to-the-cloud/README.md#create-a-serverless-application) se necessário.
+1. Adicione um gatilho de evento do IoT Hub que utilize o endpoint compatível com Event Hub do IoT Hub.
+
+ > ⚠️ Você pode consultar as [instruções para criar um gatilho de evento do IoT Hub no projeto 2, lição 5](../../../2-farm/lessons/5-migrate-application-to-the-cloud/README.md#create-an-iot-hub-event-trigger) se necessário.
+
+1. Configure a string de conexão do endpoint compatível com Event Hub no arquivo `local.settings.json` e use a chave dessa entrada no arquivo `function.json`.
+
+1. Use o aplicativo Azurite como um emulador de armazenamento local.
+
+1. Execute seu aplicativo de funções para garantir que ele está recebendo eventos do seu dispositivo GPS. Certifique-se de que seu dispositivo IoT também está funcionando e enviando dados de GPS.
+
+ ```output
+ Python EventHub trigger processed an event: {"gps": {"lat": 47.73481, "lon": -122.25701}}
+ ```
+
+## Contas de Armazenamento do Azure
+
+
+
+As Contas de Armazenamento do Azure são um serviço de armazenamento de propósito geral que pode armazenar dados de várias formas diferentes. Você pode armazenar dados como blobs, em filas, em tabelas ou como arquivos, tudo ao mesmo tempo.
+
+### Armazenamento de Blobs
+
+A palavra *Blob* significa objetos binários grandes, mas tornou-se o termo para qualquer dado não estruturado. Você pode armazenar qualquer dado no armazenamento de blobs, desde documentos JSON contendo dados de IoT até arquivos de imagem e vídeo. O armazenamento de blobs possui o conceito de *containers*, que são "baldes" nomeados onde você pode armazenar dados, semelhante a tabelas em um banco de dados relacional. Esses containers podem ter uma ou mais pastas para armazenar blobs, e cada pasta pode conter outras pastas, semelhante à forma como arquivos são armazenados no disco rígido do seu computador.
+
+Você usará o armazenamento de blobs nesta lição para armazenar dados de IoT.
+
+✅ Faça uma pesquisa: Leia sobre o [Armazenamento de Blobs do Azure](https://docs.microsoft.com/azure/storage/blobs/storage-blobs-overview?WT.mc_id=academic-17441-jabenn)
+
+### Armazenamento de Tabelas
+
+O armazenamento de tabelas permite armazenar dados semi-estruturados. O armazenamento de tabelas é, na verdade, um banco de dados NoSQL, então não requer um conjunto definido de tabelas previamente, mas é projetado para armazenar dados em uma ou mais tabelas, com chaves únicas para definir cada linha.
+
+✅ Faça uma pesquisa: Leia sobre o [Armazenamento de Tabelas do Azure](https://docs.microsoft.com/azure/storage/tables/table-storage-overview?WT.mc_id=academic-17441-jabenn)
+
+### Armazenamento de Filas
+
+O armazenamento de filas permite armazenar mensagens de até 64KB em uma fila. Você pode adicionar mensagens ao final da fila e lê-las do início. As filas armazenam mensagens indefinidamente enquanto houver espaço de armazenamento disponível, permitindo que as mensagens sejam armazenadas a longo prazo e lidas quando necessário. Por exemplo, se você quiser executar um trabalho mensal para processar dados de GPS, poderia adicionar mensagens à fila diariamente durante um mês e, no final do mês, processar todas as mensagens da fila.
+
+✅ Faça uma pesquisa: Leia sobre o [Armazenamento de Filas do Azure](https://docs.microsoft.com/azure/storage/queues/storage-queues-introduction?WT.mc_id=academic-17441-jabenn)
+
+### Armazenamento de Arquivos
+
+O armazenamento de arquivos é o armazenamento de arquivos na nuvem, e qualquer aplicativo ou dispositivo pode se conectar usando protocolos padrão da indústria. Você pode gravar arquivos no armazenamento de arquivos e montá-lo como uma unidade no seu PC ou Mac.
+
+✅ Faça uma pesquisa: Leia sobre o [Armazenamento de Arquivos do Azure](https://docs.microsoft.com/azure/storage/files/storage-files-introduction?WT.mc_id=academic-17441-jabenn)
+
+## Conecte seu código serverless ao armazenamento
+
+Seu aplicativo de funções agora precisa se conectar ao armazenamento de blobs para armazenar as mensagens do IoT Hub. Há duas maneiras de fazer isso:
+
+* Dentro do código da função, conecte-se ao armazenamento de blobs usando o SDK de armazenamento do Azure para Python e grave os dados como blobs.
+* Use um binding de saída da função para vincular o valor de retorno da função ao armazenamento de blobs e salvar o blob automaticamente.
+
+Nesta lição, você usará o SDK do Python para ver como interagir com o armazenamento de blobs.
+
+
+
+Os dados serão salvos como um blob JSON com o seguinte formato:
+
+```json
+{
+ "device_id": ,
+ "timestamp" :