diff --git a/translated_images/IMG_5305.aa291c8812a9f1e5b08f3e789f9858e9eacc88c4bbc23296df1bffbbd9c671b3.en.png b/translated_images/IMG_5305.aa291c8812a9f1e5b08f3e789f9858e9eacc88c4bbc23296df1bffbbd9c671b3.en.png
new file mode 100644
index 00000000..1ba4f5c7
Binary files /dev/null and b/translated_images/IMG_5305.aa291c8812a9f1e5b08f3e789f9858e9eacc88c4bbc23296df1bffbbd9c671b3.en.png differ
diff --git a/translated_images/IMG_5305.aa291c8812a9f1e5b08f3e789f9858e9eacc88c4bbc23296df1bffbbd9c671b3.lt.png b/translated_images/IMG_5305.aa291c8812a9f1e5b08f3e789f9858e9eacc88c4bbc23296df1bffbbd9c671b3.lt.png
new file mode 100644
index 00000000..1ba4f5c7
Binary files /dev/null and b/translated_images/IMG_5305.aa291c8812a9f1e5b08f3e789f9858e9eacc88c4bbc23296df1bffbbd9c671b3.lt.png differ
diff --git a/translated_images/IMG_5306.d575b9ab7025877b0ceba872490fa561edf3c4fcd5e8cca4ae2607a309d48c50.en.png b/translated_images/IMG_5306.d575b9ab7025877b0ceba872490fa561edf3c4fcd5e8cca4ae2607a309d48c50.en.png
new file mode 100644
index 00000000..3cac91bb
Binary files /dev/null and b/translated_images/IMG_5306.d575b9ab7025877b0ceba872490fa561edf3c4fcd5e8cca4ae2607a309d48c50.en.png differ
diff --git a/translated_images/IMG_5306.d575b9ab7025877b0ceba872490fa561edf3c4fcd5e8cca4ae2607a309d48c50.lt.png b/translated_images/IMG_5306.d575b9ab7025877b0ceba872490fa561edf3c4fcd5e8cca4ae2607a309d48c50.lt.png
new file mode 100644
index 00000000..3cac91bb
Binary files /dev/null and b/translated_images/IMG_5306.d575b9ab7025877b0ceba872490fa561edf3c4fcd5e8cca4ae2607a309d48c50.lt.png differ
diff --git a/translated_images/IMG_5307.f9c9b8361a8aa7345cc6e8ae05cf6b7583d43d3c37ecfbd76d3fdc531e3ac59c.en.png b/translated_images/IMG_5307.f9c9b8361a8aa7345cc6e8ae05cf6b7583d43d3c37ecfbd76d3fdc531e3ac59c.en.png
new file mode 100644
index 00000000..967e6539
Binary files /dev/null and b/translated_images/IMG_5307.f9c9b8361a8aa7345cc6e8ae05cf6b7583d43d3c37ecfbd76d3fdc531e3ac59c.en.png differ
diff --git a/translated_images/IMG_5307.f9c9b8361a8aa7345cc6e8ae05cf6b7583d43d3c37ecfbd76d3fdc531e3ac59c.lt.png b/translated_images/IMG_5307.f9c9b8361a8aa7345cc6e8ae05cf6b7583d43d3c37ecfbd76d3fdc531e3ac59c.lt.png
new file mode 100644
index 00000000..967e6539
Binary files /dev/null and b/translated_images/IMG_5307.f9c9b8361a8aa7345cc6e8ae05cf6b7583d43d3c37ecfbd76d3fdc531e3ac59c.lt.png differ
diff --git a/translated_images/IMG_5308.cbd6ed7007e6906012162c19b9e4097936c57873cdb2e54159899066c4281dc5.en.png b/translated_images/IMG_5308.cbd6ed7007e6906012162c19b9e4097936c57873cdb2e54159899066c4281dc5.en.png
new file mode 100644
index 00000000..247c1dd6
Binary files /dev/null and b/translated_images/IMG_5308.cbd6ed7007e6906012162c19b9e4097936c57873cdb2e54159899066c4281dc5.en.png differ
diff --git a/translated_images/IMG_5308.cbd6ed7007e6906012162c19b9e4097936c57873cdb2e54159899066c4281dc5.lt.png b/translated_images/IMG_5308.cbd6ed7007e6906012162c19b9e4097936c57873cdb2e54159899066c4281dc5.lt.png
new file mode 100644
index 00000000..247c1dd6
Binary files /dev/null and b/translated_images/IMG_5308.cbd6ed7007e6906012162c19b9e4097936c57873cdb2e54159899066c4281dc5.lt.png differ
diff --git a/translated_images/IMG_5309.23fbc3b6667bfb64fa44804f835f38885ad37d02b0a1c1c6e8d89f9a78ba19b4.en.png b/translated_images/IMG_5309.23fbc3b6667bfb64fa44804f835f38885ad37d02b0a1c1c6e8d89f9a78ba19b4.en.png
new file mode 100644
index 00000000..e89d81c4
Binary files /dev/null and b/translated_images/IMG_5309.23fbc3b6667bfb64fa44804f835f38885ad37d02b0a1c1c6e8d89f9a78ba19b4.en.png differ
diff --git a/translated_images/IMG_5309.23fbc3b6667bfb64fa44804f835f38885ad37d02b0a1c1c6e8d89f9a78ba19b4.lt.png b/translated_images/IMG_5309.23fbc3b6667bfb64fa44804f835f38885ad37d02b0a1c1c6e8d89f9a78ba19b4.lt.png
new file mode 100644
index 00000000..e89d81c4
Binary files /dev/null and b/translated_images/IMG_5309.23fbc3b6667bfb64fa44804f835f38885ad37d02b0a1c1c6e8d89f9a78ba19b4.lt.png differ
diff --git a/translated_images/IMG_5310.0ee0eb2fbc1c2d0e2d331e74d32b371a4086c07b0839817e9d6b7d4b5c98fc60.en.png b/translated_images/IMG_5310.0ee0eb2fbc1c2d0e2d331e74d32b371a4086c07b0839817e9d6b7d4b5c98fc60.en.png
new file mode 100644
index 00000000..0237836d
Binary files /dev/null and b/translated_images/IMG_5310.0ee0eb2fbc1c2d0e2d331e74d32b371a4086c07b0839817e9d6b7d4b5c98fc60.en.png differ
diff --git a/translated_images/IMG_5310.0ee0eb2fbc1c2d0e2d331e74d32b371a4086c07b0839817e9d6b7d4b5c98fc60.lt.png b/translated_images/IMG_5310.0ee0eb2fbc1c2d0e2d331e74d32b371a4086c07b0839817e9d6b7d4b5c98fc60.lt.png
new file mode 100644
index 00000000..0237836d
Binary files /dev/null and b/translated_images/IMG_5310.0ee0eb2fbc1c2d0e2d331e74d32b371a4086c07b0839817e9d6b7d4b5c98fc60.lt.png differ
diff --git a/translated_images/IMG_5311.8c90da6446c2d8c2ad70dd9e64f29b2b6f2b4d117f8502c3181be66297cc84da.en.png b/translated_images/IMG_5311.8c90da6446c2d8c2ad70dd9e64f29b2b6f2b4d117f8502c3181be66297cc84da.en.png
new file mode 100644
index 00000000..4229fee0
Binary files /dev/null and b/translated_images/IMG_5311.8c90da6446c2d8c2ad70dd9e64f29b2b6f2b4d117f8502c3181be66297cc84da.en.png differ
diff --git a/translated_images/IMG_5311.8c90da6446c2d8c2ad70dd9e64f29b2b6f2b4d117f8502c3181be66297cc84da.lt.png b/translated_images/IMG_5311.8c90da6446c2d8c2ad70dd9e64f29b2b6f2b4d117f8502c3181be66297cc84da.lt.png
new file mode 100644
index 00000000..4229fee0
Binary files /dev/null and b/translated_images/IMG_5311.8c90da6446c2d8c2ad70dd9e64f29b2b6f2b4d117f8502c3181be66297cc84da.lt.png differ
diff --git a/translated_images/IMG_5312.a45550ddd8ce8e654919361d52b919e2f8b1dbd01439268b5d3b813133a4e19b.en.png b/translated_images/IMG_5312.a45550ddd8ce8e654919361d52b919e2f8b1dbd01439268b5d3b813133a4e19b.en.png
new file mode 100644
index 00000000..9b503ac8
Binary files /dev/null and b/translated_images/IMG_5312.a45550ddd8ce8e654919361d52b919e2f8b1dbd01439268b5d3b813133a4e19b.en.png differ
diff --git a/translated_images/IMG_5312.a45550ddd8ce8e654919361d52b919e2f8b1dbd01439268b5d3b813133a4e19b.lt.png b/translated_images/IMG_5312.a45550ddd8ce8e654919361d52b919e2f8b1dbd01439268b5d3b813133a4e19b.lt.png
new file mode 100644
index 00000000..9b503ac8
Binary files /dev/null and b/translated_images/IMG_5312.a45550ddd8ce8e654919361d52b919e2f8b1dbd01439268b5d3b813133a4e19b.lt.png differ
diff --git a/translated_images/IMG_5313.ed1b45211271dbd23dc596ce9f72078aba665bd5f21088a616a85dd966100427.en.png b/translated_images/IMG_5313.ed1b45211271dbd23dc596ce9f72078aba665bd5f21088a616a85dd966100427.en.png
new file mode 100644
index 00000000..c98b7aaf
Binary files /dev/null and b/translated_images/IMG_5313.ed1b45211271dbd23dc596ce9f72078aba665bd5f21088a616a85dd966100427.en.png differ
diff --git a/translated_images/IMG_5313.ed1b45211271dbd23dc596ce9f72078aba665bd5f21088a616a85dd966100427.lt.png b/translated_images/IMG_5313.ed1b45211271dbd23dc596ce9f72078aba665bd5f21088a616a85dd966100427.lt.png
new file mode 100644
index 00000000..c98b7aaf
Binary files /dev/null and b/translated_images/IMG_5313.ed1b45211271dbd23dc596ce9f72078aba665bd5f21088a616a85dd966100427.lt.png differ
diff --git a/translated_images/IMG_5314.c2203206a05a74b5a4f10a68bbe274e65849a63e1fefe008b2c94be4ae86839c.en.png b/translated_images/IMG_5314.c2203206a05a74b5a4f10a68bbe274e65849a63e1fefe008b2c94be4ae86839c.en.png
new file mode 100644
index 00000000..706f83bc
Binary files /dev/null and b/translated_images/IMG_5314.c2203206a05a74b5a4f10a68bbe274e65849a63e1fefe008b2c94be4ae86839c.en.png differ
diff --git a/translated_images/IMG_5314.c2203206a05a74b5a4f10a68bbe274e65849a63e1fefe008b2c94be4ae86839c.lt.png b/translated_images/IMG_5314.c2203206a05a74b5a4f10a68bbe274e65849a63e1fefe008b2c94be4ae86839c.lt.png
new file mode 100644
index 00000000..706f83bc
Binary files /dev/null and b/translated_images/IMG_5314.c2203206a05a74b5a4f10a68bbe274e65849a63e1fefe008b2c94be4ae86839c.lt.png differ
diff --git a/translated_images/IMG_5315.f698228e0e031bd430efcfab0d08b00d9f3af5289133ce88a9f56c0c3478cd71.en.png b/translated_images/IMG_5315.f698228e0e031bd430efcfab0d08b00d9f3af5289133ce88a9f56c0c3478cd71.en.png
new file mode 100644
index 00000000..76bec4da
Binary files /dev/null and b/translated_images/IMG_5315.f698228e0e031bd430efcfab0d08b00d9f3af5289133ce88a9f56c0c3478cd71.en.png differ
diff --git a/translated_images/IMG_5315.f698228e0e031bd430efcfab0d08b00d9f3af5289133ce88a9f56c0c3478cd71.lt.png b/translated_images/IMG_5315.f698228e0e031bd430efcfab0d08b00d9f3af5289133ce88a9f56c0c3478cd71.lt.png
new file mode 100644
index 00000000..76bec4da
Binary files /dev/null and b/translated_images/IMG_5315.f698228e0e031bd430efcfab0d08b00d9f3af5289133ce88a9f56c0c3478cd71.lt.png differ
diff --git a/translated_images/IMG_5316.29dc70d802ce83497258426614e3e1426a91d6f9777e853daa4a9351b841b94f.en.png b/translated_images/IMG_5316.29dc70d802ce83497258426614e3e1426a91d6f9777e853daa4a9351b841b94f.en.png
new file mode 100644
index 00000000..b49060a2
Binary files /dev/null and b/translated_images/IMG_5316.29dc70d802ce83497258426614e3e1426a91d6f9777e853daa4a9351b841b94f.en.png differ
diff --git a/translated_images/IMG_5316.29dc70d802ce83497258426614e3e1426a91d6f9777e853daa4a9351b841b94f.lt.png b/translated_images/IMG_5316.29dc70d802ce83497258426614e3e1426a91d6f9777e853daa4a9351b841b94f.lt.png
new file mode 100644
index 00000000..b49060a2
Binary files /dev/null and b/translated_images/IMG_5316.29dc70d802ce83497258426614e3e1426a91d6f9777e853daa4a9351b841b94f.lt.png differ
diff --git a/translated_images/IMG_5317.ed81e4c1ca5046dc50613049e39c905157fbb318ea19db44c738db513ac501b1.en.png b/translated_images/IMG_5317.ed81e4c1ca5046dc50613049e39c905157fbb318ea19db44c738db513ac501b1.en.png
new file mode 100644
index 00000000..3ca064d5
Binary files /dev/null and b/translated_images/IMG_5317.ed81e4c1ca5046dc50613049e39c905157fbb318ea19db44c738db513ac501b1.en.png differ
diff --git a/translated_images/IMG_5317.ed81e4c1ca5046dc50613049e39c905157fbb318ea19db44c738db513ac501b1.lt.png b/translated_images/IMG_5317.ed81e4c1ca5046dc50613049e39c905157fbb318ea19db44c738db513ac501b1.lt.png
new file mode 100644
index 00000000..3ca064d5
Binary files /dev/null and b/translated_images/IMG_5317.ed81e4c1ca5046dc50613049e39c905157fbb318ea19db44c738db513ac501b1.lt.png differ
diff --git a/translated_images/IMG_5318.15dfffeb7f47abf7ca0393628024c1fd45761193ab23185c315e899bd0e7048b.en.png b/translated_images/IMG_5318.15dfffeb7f47abf7ca0393628024c1fd45761193ab23185c315e899bd0e7048b.en.png
new file mode 100644
index 00000000..1f5f2412
Binary files /dev/null and b/translated_images/IMG_5318.15dfffeb7f47abf7ca0393628024c1fd45761193ab23185c315e899bd0e7048b.en.png differ
diff --git a/translated_images/IMG_5318.15dfffeb7f47abf7ca0393628024c1fd45761193ab23185c315e899bd0e7048b.lt.png b/translated_images/IMG_5318.15dfffeb7f47abf7ca0393628024c1fd45761193ab23185c315e899bd0e7048b.lt.png
new file mode 100644
index 00000000..1f5f2412
Binary files /dev/null and b/translated_images/IMG_5318.15dfffeb7f47abf7ca0393628024c1fd45761193ab23185c315e899bd0e7048b.lt.png differ
diff --git a/translated_images/IMG_5319.b549b1fff0dcf143c2483044d0519a3c6dc3de12c88860911b378688e7a4e01b.en.png b/translated_images/IMG_5319.b549b1fff0dcf143c2483044d0519a3c6dc3de12c88860911b378688e7a4e01b.en.png
new file mode 100644
index 00000000..2953cea1
Binary files /dev/null and b/translated_images/IMG_5319.b549b1fff0dcf143c2483044d0519a3c6dc3de12c88860911b378688e7a4e01b.en.png differ
diff --git a/translated_images/IMG_5319.b549b1fff0dcf143c2483044d0519a3c6dc3de12c88860911b378688e7a4e01b.lt.png b/translated_images/IMG_5319.b549b1fff0dcf143c2483044d0519a3c6dc3de12c88860911b378688e7a4e01b.lt.png
new file mode 100644
index 00000000..2953cea1
Binary files /dev/null and b/translated_images/IMG_5319.b549b1fff0dcf143c2483044d0519a3c6dc3de12c88860911b378688e7a4e01b.lt.png differ
diff --git a/translated_images/IMG_5320.8268d3f61972f348df46401d107399af17512db9ef769f6a44c6cbb18faba998.en.png b/translated_images/IMG_5320.8268d3f61972f348df46401d107399af17512db9ef769f6a44c6cbb18faba998.en.png
new file mode 100644
index 00000000..2ce7dedf
Binary files /dev/null and b/translated_images/IMG_5320.8268d3f61972f348df46401d107399af17512db9ef769f6a44c6cbb18faba998.en.png differ
diff --git a/translated_images/IMG_5320.8268d3f61972f348df46401d107399af17512db9ef769f6a44c6cbb18faba998.lt.png b/translated_images/IMG_5320.8268d3f61972f348df46401d107399af17512db9ef769f6a44c6cbb18faba998.lt.png
new file mode 100644
index 00000000..2ce7dedf
Binary files /dev/null and b/translated_images/IMG_5320.8268d3f61972f348df46401d107399af17512db9ef769f6a44c6cbb18faba998.lt.png differ
diff --git a/translated_images/IMG_5321.b207cf143a59458d150cb1fbd44c3678d14f9cfffe77a0ec64e1cdfe1436df1c.en.png b/translated_images/IMG_5321.b207cf143a59458d150cb1fbd44c3678d14f9cfffe77a0ec64e1cdfe1436df1c.en.png
new file mode 100644
index 00000000..157c08c6
Binary files /dev/null and b/translated_images/IMG_5321.b207cf143a59458d150cb1fbd44c3678d14f9cfffe77a0ec64e1cdfe1436df1c.en.png differ
diff --git a/translated_images/IMG_5321.b207cf143a59458d150cb1fbd44c3678d14f9cfffe77a0ec64e1cdfe1436df1c.lt.png b/translated_images/IMG_5321.b207cf143a59458d150cb1fbd44c3678d14f9cfffe77a0ec64e1cdfe1436df1c.lt.png
new file mode 100644
index 00000000..157c08c6
Binary files /dev/null and b/translated_images/IMG_5321.b207cf143a59458d150cb1fbd44c3678d14f9cfffe77a0ec64e1cdfe1436df1c.lt.png differ
diff --git a/translated_images/IMG_5322.974809b9461a9e200e99ae46142b4885e093e5b9b668e0fd818de461e27856a7.en.png b/translated_images/IMG_5322.974809b9461a9e200e99ae46142b4885e093e5b9b668e0fd818de461e27856a7.en.png
new file mode 100644
index 00000000..031361a6
Binary files /dev/null and b/translated_images/IMG_5322.974809b9461a9e200e99ae46142b4885e093e5b9b668e0fd818de461e27856a7.en.png differ
diff --git a/translated_images/IMG_5322.974809b9461a9e200e99ae46142b4885e093e5b9b668e0fd818de461e27856a7.lt.png b/translated_images/IMG_5322.974809b9461a9e200e99ae46142b4885e093e5b9b668e0fd818de461e27856a7.lt.png
new file mode 100644
index 00000000..031361a6
Binary files /dev/null and b/translated_images/IMG_5322.974809b9461a9e200e99ae46142b4885e093e5b9b668e0fd818de461e27856a7.lt.png differ
diff --git a/translated_images/IMG_5323.4939fa17958f291bb856032bbd044a709c0199b2e3846f1801a7836d4455dd26.en.png b/translated_images/IMG_5323.4939fa17958f291bb856032bbd044a709c0199b2e3846f1801a7836d4455dd26.en.png
new file mode 100644
index 00000000..3a43eb23
Binary files /dev/null and b/translated_images/IMG_5323.4939fa17958f291bb856032bbd044a709c0199b2e3846f1801a7836d4455dd26.en.png differ
diff --git a/translated_images/IMG_5323.4939fa17958f291bb856032bbd044a709c0199b2e3846f1801a7836d4455dd26.lt.png b/translated_images/IMG_5323.4939fa17958f291bb856032bbd044a709c0199b2e3846f1801a7836d4455dd26.lt.png
new file mode 100644
index 00000000..3a43eb23
Binary files /dev/null and b/translated_images/IMG_5323.4939fa17958f291bb856032bbd044a709c0199b2e3846f1801a7836d4455dd26.lt.png differ
diff --git a/translated_images/IMG_5324.0afbc6f0caceb1a341a9606fc9b879938eebebbc8401fce37dff2b167ed4b410.en.png b/translated_images/IMG_5324.0afbc6f0caceb1a341a9606fc9b879938eebebbc8401fce37dff2b167ed4b410.en.png
new file mode 100644
index 00000000..7c9552e3
Binary files /dev/null and b/translated_images/IMG_5324.0afbc6f0caceb1a341a9606fc9b879938eebebbc8401fce37dff2b167ed4b410.en.png differ
diff --git a/translated_images/IMG_5324.0afbc6f0caceb1a341a9606fc9b879938eebebbc8401fce37dff2b167ed4b410.lt.png b/translated_images/IMG_5324.0afbc6f0caceb1a341a9606fc9b879938eebebbc8401fce37dff2b167ed4b410.lt.png
new file mode 100644
index 00000000..7c9552e3
Binary files /dev/null and b/translated_images/IMG_5324.0afbc6f0caceb1a341a9606fc9b879938eebebbc8401fce37dff2b167ed4b410.lt.png differ
diff --git a/translated_images/IMG_5325.9e9d9e9b85a10b06ac6038bf88ef91ef56fd371ed9e67b53495cd6878019faf9.en.png b/translated_images/IMG_5325.9e9d9e9b85a10b06ac6038bf88ef91ef56fd371ed9e67b53495cd6878019faf9.en.png
new file mode 100644
index 00000000..78f695b7
Binary files /dev/null and b/translated_images/IMG_5325.9e9d9e9b85a10b06ac6038bf88ef91ef56fd371ed9e67b53495cd6878019faf9.en.png differ
diff --git a/translated_images/IMG_5325.9e9d9e9b85a10b06ac6038bf88ef91ef56fd371ed9e67b53495cd6878019faf9.lt.png b/translated_images/IMG_5325.9e9d9e9b85a10b06ac6038bf88ef91ef56fd371ed9e67b53495cd6878019faf9.lt.png
new file mode 100644
index 00000000..78f695b7
Binary files /dev/null and b/translated_images/IMG_5325.9e9d9e9b85a10b06ac6038bf88ef91ef56fd371ed9e67b53495cd6878019faf9.lt.png differ
diff --git a/translated_images/IMG_5326.35bbc9e054c704d0418a8ba7418aa38f51baee13bd2b00cfe8300e1500fa9f32.en.png b/translated_images/IMG_5326.35bbc9e054c704d0418a8ba7418aa38f51baee13bd2b00cfe8300e1500fa9f32.en.png
new file mode 100644
index 00000000..77f563fb
Binary files /dev/null and b/translated_images/IMG_5326.35bbc9e054c704d0418a8ba7418aa38f51baee13bd2b00cfe8300e1500fa9f32.en.png differ
diff --git a/translated_images/IMG_5326.35bbc9e054c704d0418a8ba7418aa38f51baee13bd2b00cfe8300e1500fa9f32.lt.png b/translated_images/IMG_5326.35bbc9e054c704d0418a8ba7418aa38f51baee13bd2b00cfe8300e1500fa9f32.lt.png
new file mode 100644
index 00000000..77f563fb
Binary files /dev/null and b/translated_images/IMG_5326.35bbc9e054c704d0418a8ba7418aa38f51baee13bd2b00cfe8300e1500fa9f32.lt.png differ
diff --git a/translated_images/IMG_5327.804b63a605b5a77a7b60c2fbf370be0f7364f2b5acb98c736420728e61845b62.en.png b/translated_images/IMG_5327.804b63a605b5a77a7b60c2fbf370be0f7364f2b5acb98c736420728e61845b62.en.png
new file mode 100644
index 00000000..8dccd514
Binary files /dev/null and b/translated_images/IMG_5327.804b63a605b5a77a7b60c2fbf370be0f7364f2b5acb98c736420728e61845b62.en.png differ
diff --git a/translated_images/IMG_5327.804b63a605b5a77a7b60c2fbf370be0f7364f2b5acb98c736420728e61845b62.lt.png b/translated_images/IMG_5327.804b63a605b5a77a7b60c2fbf370be0f7364f2b5acb98c736420728e61845b62.lt.png
new file mode 100644
index 00000000..8dccd514
Binary files /dev/null and b/translated_images/IMG_5327.804b63a605b5a77a7b60c2fbf370be0f7364f2b5acb98c736420728e61845b62.lt.png differ
diff --git a/translated_images/IMG_5328.925a9da23d96759f6c7c13bfcd94b8063bb5082d2e8a0431058c057e6d14446b.en.png b/translated_images/IMG_5328.925a9da23d96759f6c7c13bfcd94b8063bb5082d2e8a0431058c057e6d14446b.en.png
new file mode 100644
index 00000000..b75e015e
Binary files /dev/null and b/translated_images/IMG_5328.925a9da23d96759f6c7c13bfcd94b8063bb5082d2e8a0431058c057e6d14446b.en.png differ
diff --git a/translated_images/IMG_5328.925a9da23d96759f6c7c13bfcd94b8063bb5082d2e8a0431058c057e6d14446b.lt.png b/translated_images/IMG_5328.925a9da23d96759f6c7c13bfcd94b8063bb5082d2e8a0431058c057e6d14446b.lt.png
new file mode 100644
index 00000000..b75e015e
Binary files /dev/null and b/translated_images/IMG_5328.925a9da23d96759f6c7c13bfcd94b8063bb5082d2e8a0431058c057e6d14446b.lt.png differ
diff --git a/translated_images/IMG_5329.27da5fcbc3336773e94bbd2640df07799c76051bf97d2db7891d47bc462c6e09.en.png b/translated_images/IMG_5329.27da5fcbc3336773e94bbd2640df07799c76051bf97d2db7891d47bc462c6e09.en.png
new file mode 100644
index 00000000..5bfed282
Binary files /dev/null and b/translated_images/IMG_5329.27da5fcbc3336773e94bbd2640df07799c76051bf97d2db7891d47bc462c6e09.en.png differ
diff --git a/translated_images/IMG_5329.27da5fcbc3336773e94bbd2640df07799c76051bf97d2db7891d47bc462c6e09.lt.png b/translated_images/IMG_5329.27da5fcbc3336773e94bbd2640df07799c76051bf97d2db7891d47bc462c6e09.lt.png
new file mode 100644
index 00000000..5bfed282
Binary files /dev/null and b/translated_images/IMG_5329.27da5fcbc3336773e94bbd2640df07799c76051bf97d2db7891d47bc462c6e09.lt.png differ
diff --git a/translated_images/IMG_5330.3db3d5ea01c8cca2ae41cf5ea501a0a836569a3abbc2ae95696e0ad1dd005b6a.en.png b/translated_images/IMG_5330.3db3d5ea01c8cca2ae41cf5ea501a0a836569a3abbc2ae95696e0ad1dd005b6a.en.png
new file mode 100644
index 00000000..34ca765c
Binary files /dev/null and b/translated_images/IMG_5330.3db3d5ea01c8cca2ae41cf5ea501a0a836569a3abbc2ae95696e0ad1dd005b6a.en.png differ
diff --git a/translated_images/IMG_5330.3db3d5ea01c8cca2ae41cf5ea501a0a836569a3abbc2ae95696e0ad1dd005b6a.lt.png b/translated_images/IMG_5330.3db3d5ea01c8cca2ae41cf5ea501a0a836569a3abbc2ae95696e0ad1dd005b6a.lt.png
new file mode 100644
index 00000000..34ca765c
Binary files /dev/null and b/translated_images/IMG_5330.3db3d5ea01c8cca2ae41cf5ea501a0a836569a3abbc2ae95696e0ad1dd005b6a.lt.png differ
diff --git a/translated_images/IMG_5331.181987d3d094472fbf569a61760fadf282575f2821138de50007e408fd63182e.en.png b/translated_images/IMG_5331.181987d3d094472fbf569a61760fadf282575f2821138de50007e408fd63182e.en.png
new file mode 100644
index 00000000..d1f7bc09
Binary files /dev/null and b/translated_images/IMG_5331.181987d3d094472fbf569a61760fadf282575f2821138de50007e408fd63182e.en.png differ
diff --git a/translated_images/IMG_5331.181987d3d094472fbf569a61760fadf282575f2821138de50007e408fd63182e.lt.png b/translated_images/IMG_5331.181987d3d094472fbf569a61760fadf282575f2821138de50007e408fd63182e.lt.png
new file mode 100644
index 00000000..d1f7bc09
Binary files /dev/null and b/translated_images/IMG_5331.181987d3d094472fbf569a61760fadf282575f2821138de50007e408fd63182e.lt.png differ
diff --git a/translated_images/IMG_5332.4beed56eaa5158e3785dbacb53c9670a0ef1699ce386528f4bb9bad50adf88ca.en.png b/translated_images/IMG_5332.4beed56eaa5158e3785dbacb53c9670a0ef1699ce386528f4bb9bad50adf88ca.en.png
new file mode 100644
index 00000000..c215b446
Binary files /dev/null and b/translated_images/IMG_5332.4beed56eaa5158e3785dbacb53c9670a0ef1699ce386528f4bb9bad50adf88ca.en.png differ
diff --git a/translated_images/IMG_5332.4beed56eaa5158e3785dbacb53c9670a0ef1699ce386528f4bb9bad50adf88ca.lt.png b/translated_images/IMG_5332.4beed56eaa5158e3785dbacb53c9670a0ef1699ce386528f4bb9bad50adf88ca.lt.png
new file mode 100644
index 00000000..c215b446
Binary files /dev/null and b/translated_images/IMG_5332.4beed56eaa5158e3785dbacb53c9670a0ef1699ce386528f4bb9bad50adf88ca.lt.png differ
diff --git a/translated_images/IMG_5333.53c3364c2ee0e7bb5db0e299915faaf31e47bb99ad045ec8f6de6ca23d323f47.en.png b/translated_images/IMG_5333.53c3364c2ee0e7bb5db0e299915faaf31e47bb99ad045ec8f6de6ca23d323f47.en.png
new file mode 100644
index 00000000..63f58daa
Binary files /dev/null and b/translated_images/IMG_5333.53c3364c2ee0e7bb5db0e299915faaf31e47bb99ad045ec8f6de6ca23d323f47.en.png differ
diff --git a/translated_images/IMG_5333.53c3364c2ee0e7bb5db0e299915faaf31e47bb99ad045ec8f6de6ca23d323f47.lt.png b/translated_images/IMG_5333.53c3364c2ee0e7bb5db0e299915faaf31e47bb99ad045ec8f6de6ca23d323f47.lt.png
new file mode 100644
index 00000000..63f58daa
Binary files /dev/null and b/translated_images/IMG_5333.53c3364c2ee0e7bb5db0e299915faaf31e47bb99ad045ec8f6de6ca23d323f47.lt.png differ
diff --git a/translated_images/IMG_5334.979472e433948c109b122ae4bbd0f96971dc2e7b1e64615776ebb7337a97e183.en.png b/translated_images/IMG_5334.979472e433948c109b122ae4bbd0f96971dc2e7b1e64615776ebb7337a97e183.en.png
new file mode 100644
index 00000000..3eb38501
Binary files /dev/null and b/translated_images/IMG_5334.979472e433948c109b122ae4bbd0f96971dc2e7b1e64615776ebb7337a97e183.en.png differ
diff --git a/translated_images/IMG_5334.979472e433948c109b122ae4bbd0f96971dc2e7b1e64615776ebb7337a97e183.lt.png b/translated_images/IMG_5334.979472e433948c109b122ae4bbd0f96971dc2e7b1e64615776ebb7337a97e183.lt.png
new file mode 100644
index 00000000..3eb38501
Binary files /dev/null and b/translated_images/IMG_5334.979472e433948c109b122ae4bbd0f96971dc2e7b1e64615776ebb7337a97e183.lt.png differ
diff --git a/translated_images/IMG_5335.9f5bfba69a8d5a901c3e3b994a69f62a00d73ef9209b85561553d2ae99a56615.en.png b/translated_images/IMG_5335.9f5bfba69a8d5a901c3e3b994a69f62a00d73ef9209b85561553d2ae99a56615.en.png
new file mode 100644
index 00000000..4f960870
Binary files /dev/null and b/translated_images/IMG_5335.9f5bfba69a8d5a901c3e3b994a69f62a00d73ef9209b85561553d2ae99a56615.en.png differ
diff --git a/translated_images/IMG_5335.9f5bfba69a8d5a901c3e3b994a69f62a00d73ef9209b85561553d2ae99a56615.lt.png b/translated_images/IMG_5335.9f5bfba69a8d5a901c3e3b994a69f62a00d73ef9209b85561553d2ae99a56615.lt.png
new file mode 100644
index 00000000..4f960870
Binary files /dev/null and b/translated_images/IMG_5335.9f5bfba69a8d5a901c3e3b994a69f62a00d73ef9209b85561553d2ae99a56615.lt.png differ
diff --git a/translated_images/IMG_5336.1b46586fdec957670ea71c1bd68c26f73aa95cd5671d057328fd198640729db7.en.png b/translated_images/IMG_5336.1b46586fdec957670ea71c1bd68c26f73aa95cd5671d057328fd198640729db7.en.png
new file mode 100644
index 00000000..ca5b5882
Binary files /dev/null and b/translated_images/IMG_5336.1b46586fdec957670ea71c1bd68c26f73aa95cd5671d057328fd198640729db7.en.png differ
diff --git a/translated_images/IMG_5336.1b46586fdec957670ea71c1bd68c26f73aa95cd5671d057328fd198640729db7.lt.png b/translated_images/IMG_5336.1b46586fdec957670ea71c1bd68c26f73aa95cd5671d057328fd198640729db7.lt.png
new file mode 100644
index 00000000..ca5b5882
Binary files /dev/null and b/translated_images/IMG_5336.1b46586fdec957670ea71c1bd68c26f73aa95cd5671d057328fd198640729db7.lt.png differ
diff --git a/translated_images/IMG_5337.91c82be4d37029b03cbb07553d92b9d2dd672e22a07fee6453cbc40568fbdef3.en.png b/translated_images/IMG_5337.91c82be4d37029b03cbb07553d92b9d2dd672e22a07fee6453cbc40568fbdef3.en.png
new file mode 100644
index 00000000..2c3440cd
Binary files /dev/null and b/translated_images/IMG_5337.91c82be4d37029b03cbb07553d92b9d2dd672e22a07fee6453cbc40568fbdef3.en.png differ
diff --git a/translated_images/IMG_5337.91c82be4d37029b03cbb07553d92b9d2dd672e22a07fee6453cbc40568fbdef3.lt.png b/translated_images/IMG_5337.91c82be4d37029b03cbb07553d92b9d2dd672e22a07fee6453cbc40568fbdef3.lt.png
new file mode 100644
index 00000000..2c3440cd
Binary files /dev/null and b/translated_images/IMG_5337.91c82be4d37029b03cbb07553d92b9d2dd672e22a07fee6453cbc40568fbdef3.lt.png differ
diff --git a/translated_images/IMG_5338.9ab356541448923b528f2dedecd72d7ecd07d53cc69118aeb861c39dccb8b8cc.en.png b/translated_images/IMG_5338.9ab356541448923b528f2dedecd72d7ecd07d53cc69118aeb861c39dccb8b8cc.en.png
new file mode 100644
index 00000000..5294a9dc
Binary files /dev/null and b/translated_images/IMG_5338.9ab356541448923b528f2dedecd72d7ecd07d53cc69118aeb861c39dccb8b8cc.en.png differ
diff --git a/translated_images/IMG_5338.9ab356541448923b528f2dedecd72d7ecd07d53cc69118aeb861c39dccb8b8cc.lt.png b/translated_images/IMG_5338.9ab356541448923b528f2dedecd72d7ecd07d53cc69118aeb861c39dccb8b8cc.lt.png
new file mode 100644
index 00000000..5294a9dc
Binary files /dev/null and b/translated_images/IMG_5338.9ab356541448923b528f2dedecd72d7ecd07d53cc69118aeb861c39dccb8b8cc.lt.png differ
diff --git a/translated_images/IMG_5340.8440651b3ce1dd35d9962036330b32a600fb3f59078a581a05c93920c5012b3a.en.png b/translated_images/IMG_5340.8440651b3ce1dd35d9962036330b32a600fb3f59078a581a05c93920c5012b3a.en.png
new file mode 100644
index 00000000..912ac4ca
Binary files /dev/null and b/translated_images/IMG_5340.8440651b3ce1dd35d9962036330b32a600fb3f59078a581a05c93920c5012b3a.en.png differ
diff --git a/translated_images/IMG_5340.8440651b3ce1dd35d9962036330b32a600fb3f59078a581a05c93920c5012b3a.lt.png b/translated_images/IMG_5340.8440651b3ce1dd35d9962036330b32a600fb3f59078a581a05c93920c5012b3a.lt.png
new file mode 100644
index 00000000..912ac4ca
Binary files /dev/null and b/translated_images/IMG_5340.8440651b3ce1dd35d9962036330b32a600fb3f59078a581a05c93920c5012b3a.lt.png differ
diff --git a/translated_images/IMG_5341.a1aa041c42dbc534c033447b06f0546fdd779b3ed5034992ded08a45a960fff5.en.png b/translated_images/IMG_5341.a1aa041c42dbc534c033447b06f0546fdd779b3ed5034992ded08a45a960fff5.en.png
new file mode 100644
index 00000000..8e47de7d
Binary files /dev/null and b/translated_images/IMG_5341.a1aa041c42dbc534c033447b06f0546fdd779b3ed5034992ded08a45a960fff5.en.png differ
diff --git a/translated_images/IMG_5341.a1aa041c42dbc534c033447b06f0546fdd779b3ed5034992ded08a45a960fff5.lt.png b/translated_images/IMG_5341.a1aa041c42dbc534c033447b06f0546fdd779b3ed5034992ded08a45a960fff5.lt.png
new file mode 100644
index 00000000..8e47de7d
Binary files /dev/null and b/translated_images/IMG_5341.a1aa041c42dbc534c033447b06f0546fdd779b3ed5034992ded08a45a960fff5.lt.png differ
diff --git a/translated_images/IMG_5342.9f3b93d9fab90d3b3c1936edb55768b57024c9ebe88a214be315f5ebb083e45d.en.png b/translated_images/IMG_5342.9f3b93d9fab90d3b3c1936edb55768b57024c9ebe88a214be315f5ebb083e45d.en.png
new file mode 100644
index 00000000..b3c98d83
Binary files /dev/null and b/translated_images/IMG_5342.9f3b93d9fab90d3b3c1936edb55768b57024c9ebe88a214be315f5ebb083e45d.en.png differ
diff --git a/translated_images/IMG_5342.9f3b93d9fab90d3b3c1936edb55768b57024c9ebe88a214be315f5ebb083e45d.lt.png b/translated_images/IMG_5342.9f3b93d9fab90d3b3c1936edb55768b57024c9ebe88a214be315f5ebb083e45d.lt.png
new file mode 100644
index 00000000..b3c98d83
Binary files /dev/null and b/translated_images/IMG_5342.9f3b93d9fab90d3b3c1936edb55768b57024c9ebe88a214be315f5ebb083e45d.lt.png differ
diff --git a/translated_images/IMG_5343.fa30105d3c10cad2079ca2b2f023e9dab8f82824a235be61837d7e9d09d8d067.en.png b/translated_images/IMG_5343.fa30105d3c10cad2079ca2b2f023e9dab8f82824a235be61837d7e9d09d8d067.en.png
new file mode 100644
index 00000000..1d494613
Binary files /dev/null and b/translated_images/IMG_5343.fa30105d3c10cad2079ca2b2f023e9dab8f82824a235be61837d7e9d09d8d067.en.png differ
diff --git a/translated_images/IMG_5343.fa30105d3c10cad2079ca2b2f023e9dab8f82824a235be61837d7e9d09d8d067.lt.png b/translated_images/IMG_5343.fa30105d3c10cad2079ca2b2f023e9dab8f82824a235be61837d7e9d09d8d067.lt.png
new file mode 100644
index 00000000..1d494613
Binary files /dev/null and b/translated_images/IMG_5343.fa30105d3c10cad2079ca2b2f023e9dab8f82824a235be61837d7e9d09d8d067.lt.png differ
diff --git a/translated_images/IMG_5344.acfcd61ee5281321426b2d93efeeb01a60505e73b4c5ee6224c7fa375027b9d8.en.png b/translated_images/IMG_5344.acfcd61ee5281321426b2d93efeeb01a60505e73b4c5ee6224c7fa375027b9d8.en.png
new file mode 100644
index 00000000..47ced39a
Binary files /dev/null and b/translated_images/IMG_5344.acfcd61ee5281321426b2d93efeeb01a60505e73b4c5ee6224c7fa375027b9d8.en.png differ
diff --git a/translated_images/IMG_5344.acfcd61ee5281321426b2d93efeeb01a60505e73b4c5ee6224c7fa375027b9d8.lt.png b/translated_images/IMG_5344.acfcd61ee5281321426b2d93efeeb01a60505e73b4c5ee6224c7fa375027b9d8.lt.png
new file mode 100644
index 00000000..47ced39a
Binary files /dev/null and b/translated_images/IMG_5344.acfcd61ee5281321426b2d93efeeb01a60505e73b4c5ee6224c7fa375027b9d8.lt.png differ
diff --git a/translated_images/IMG_5345.3d305ee2bb4ee8040102a8d1922cdf0450f619c6824add16014a4c0887c18b1d.en.png b/translated_images/IMG_5345.3d305ee2bb4ee8040102a8d1922cdf0450f619c6824add16014a4c0887c18b1d.en.png
new file mode 100644
index 00000000..88d5c896
Binary files /dev/null and b/translated_images/IMG_5345.3d305ee2bb4ee8040102a8d1922cdf0450f619c6824add16014a4c0887c18b1d.en.png differ
diff --git a/translated_images/IMG_5345.3d305ee2bb4ee8040102a8d1922cdf0450f619c6824add16014a4c0887c18b1d.lt.png b/translated_images/IMG_5345.3d305ee2bb4ee8040102a8d1922cdf0450f619c6824add16014a4c0887c18b1d.lt.png
new file mode 100644
index 00000000..88d5c896
Binary files /dev/null and b/translated_images/IMG_5345.3d305ee2bb4ee8040102a8d1922cdf0450f619c6824add16014a4c0887c18b1d.lt.png differ
diff --git a/translated_images/IMG_5346.281dcc267f69c70b2bc2353b5e8289617c7bf3608f889dae8a582b9376a9ae7d.en.png b/translated_images/IMG_5346.281dcc267f69c70b2bc2353b5e8289617c7bf3608f889dae8a582b9376a9ae7d.en.png
new file mode 100644
index 00000000..e0706533
Binary files /dev/null and b/translated_images/IMG_5346.281dcc267f69c70b2bc2353b5e8289617c7bf3608f889dae8a582b9376a9ae7d.en.png differ
diff --git a/translated_images/IMG_5346.281dcc267f69c70b2bc2353b5e8289617c7bf3608f889dae8a582b9376a9ae7d.lt.png b/translated_images/IMG_5346.281dcc267f69c70b2bc2353b5e8289617c7bf3608f889dae8a582b9376a9ae7d.lt.png
new file mode 100644
index 00000000..e0706533
Binary files /dev/null and b/translated_images/IMG_5346.281dcc267f69c70b2bc2353b5e8289617c7bf3608f889dae8a582b9376a9ae7d.lt.png differ
diff --git a/translated_images/IMG_5347.48a4a981e76910ae1c65bf75102883039be5f0ded32b73f3d09d855f5b7dc977.en.png b/translated_images/IMG_5347.48a4a981e76910ae1c65bf75102883039be5f0ded32b73f3d09d855f5b7dc977.en.png
new file mode 100644
index 00000000..a1f17249
Binary files /dev/null and b/translated_images/IMG_5347.48a4a981e76910ae1c65bf75102883039be5f0ded32b73f3d09d855f5b7dc977.en.png differ
diff --git a/translated_images/IMG_5347.48a4a981e76910ae1c65bf75102883039be5f0ded32b73f3d09d855f5b7dc977.lt.png b/translated_images/IMG_5347.48a4a981e76910ae1c65bf75102883039be5f0ded32b73f3d09d855f5b7dc977.lt.png
new file mode 100644
index 00000000..a1f17249
Binary files /dev/null and b/translated_images/IMG_5347.48a4a981e76910ae1c65bf75102883039be5f0ded32b73f3d09d855f5b7dc977.lt.png differ
diff --git a/translated_images/IMG_5348.3961d3b444537c131299f8906dc4e2f7c3c172591ffeacb45719ec3d3718b625.en.png b/translated_images/IMG_5348.3961d3b444537c131299f8906dc4e2f7c3c172591ffeacb45719ec3d3718b625.en.png
new file mode 100644
index 00000000..3adc61ef
Binary files /dev/null and b/translated_images/IMG_5348.3961d3b444537c131299f8906dc4e2f7c3c172591ffeacb45719ec3d3718b625.en.png differ
diff --git a/translated_images/IMG_5348.3961d3b444537c131299f8906dc4e2f7c3c172591ffeacb45719ec3d3718b625.lt.png b/translated_images/IMG_5348.3961d3b444537c131299f8906dc4e2f7c3c172591ffeacb45719ec3d3718b625.lt.png
new file mode 100644
index 00000000..3adc61ef
Binary files /dev/null and b/translated_images/IMG_5348.3961d3b444537c131299f8906dc4e2f7c3c172591ffeacb45719ec3d3718b625.lt.png differ
diff --git a/translated_images/IMG_5349.1f0ec7fbf8807b3bf991dd5400cfb69ded9fe53059bd1e71934f4dbd7ff963db.en.png b/translated_images/IMG_5349.1f0ec7fbf8807b3bf991dd5400cfb69ded9fe53059bd1e71934f4dbd7ff963db.en.png
new file mode 100644
index 00000000..1c3c8d53
Binary files /dev/null and b/translated_images/IMG_5349.1f0ec7fbf8807b3bf991dd5400cfb69ded9fe53059bd1e71934f4dbd7ff963db.en.png differ
diff --git a/translated_images/IMG_5349.1f0ec7fbf8807b3bf991dd5400cfb69ded9fe53059bd1e71934f4dbd7ff963db.lt.png b/translated_images/IMG_5349.1f0ec7fbf8807b3bf991dd5400cfb69ded9fe53059bd1e71934f4dbd7ff963db.lt.png
new file mode 100644
index 00000000..1c3c8d53
Binary files /dev/null and b/translated_images/IMG_5349.1f0ec7fbf8807b3bf991dd5400cfb69ded9fe53059bd1e71934f4dbd7ff963db.lt.png differ
diff --git a/translated_images/Roadmap.bb1dec285dda0eda691788b95ddfc96d31d76bb7649e3f04a135e4ad395f323e.en.jpg b/translated_images/Roadmap.bb1dec285dda0eda691788b95ddfc96d31d76bb7649e3f04a135e4ad395f323e.en.jpg
new file mode 100644
index 00000000..0f4a9a38
Binary files /dev/null and b/translated_images/Roadmap.bb1dec285dda0eda691788b95ddfc96d31d76bb7649e3f04a135e4ad395f323e.en.jpg differ
diff --git a/translated_images/Roadmap.bb1dec285dda0eda691788b95ddfc96d31d76bb7649e3f04a135e4ad395f323e.lt.jpg b/translated_images/Roadmap.bb1dec285dda0eda691788b95ddfc96d31d76bb7649e3f04a135e4ad395f323e.lt.jpg
new file mode 100644
index 00000000..0f4a9a38
Binary files /dev/null and b/translated_images/Roadmap.bb1dec285dda0eda691788b95ddfc96d31d76bb7649e3f04a135e4ad395f323e.lt.jpg differ
diff --git a/translated_images/amqp.804bd4fce83301578f19af1b877f8ce87a6473a3616fb6c3f901fe4041ab6c96.en.png b/translated_images/amqp.804bd4fce83301578f19af1b877f8ce87a6473a3616fb6c3f901fe4041ab6c96.en.png
new file mode 100644
index 00000000..32dab60c
Binary files /dev/null and b/translated_images/amqp.804bd4fce83301578f19af1b877f8ce87a6473a3616fb6c3f901fe4041ab6c96.en.png differ
diff --git a/translated_images/amqp.804bd4fce83301578f19af1b877f8ce87a6473a3616fb6c3f901fe4041ab6c96.lt.png b/translated_images/amqp.804bd4fce83301578f19af1b877f8ce87a6473a3616fb6c3f901fe4041ab6c96.lt.png
new file mode 100644
index 00000000..32dab60c
Binary files /dev/null and b/translated_images/amqp.804bd4fce83301578f19af1b877f8ce87a6473a3616fb6c3f901fe4041ab6c96.lt.png differ
diff --git a/translated_images/analog-sensor-voltage.3b6f3153922473997cae6f71a6110d89a020a8a1838a83fba4f97e8fa6cef3ac.en.png b/translated_images/analog-sensor-voltage.3b6f3153922473997cae6f71a6110d89a020a8a1838a83fba4f97e8fa6cef3ac.en.png
new file mode 100644
index 00000000..78e9b675
Binary files /dev/null and b/translated_images/analog-sensor-voltage.3b6f3153922473997cae6f71a6110d89a020a8a1838a83fba4f97e8fa6cef3ac.en.png differ
diff --git a/translated_images/analog-sensor-voltage.3b6f3153922473997cae6f71a6110d89a020a8a1838a83fba4f97e8fa6cef3ac.lt.png b/translated_images/analog-sensor-voltage.3b6f3153922473997cae6f71a6110d89a020a8a1838a83fba4f97e8fa6cef3ac.lt.png
new file mode 100644
index 00000000..78e9b675
Binary files /dev/null and b/translated_images/analog-sensor-voltage.3b6f3153922473997cae6f71a6110d89a020a8a1838a83fba4f97e8fa6cef3ac.lt.png differ
diff --git a/translated_images/arducam-wio-terminal-connections.a4d5a4049bdb5ab800a2877389fc6ecf5e4ff307e6451ff56c517e6786467d0a.en.png b/translated_images/arducam-wio-terminal-connections.a4d5a4049bdb5ab800a2877389fc6ecf5e4ff307e6451ff56c517e6786467d0a.en.png
new file mode 100644
index 00000000..fb87dd71
Binary files /dev/null and b/translated_images/arducam-wio-terminal-connections.a4d5a4049bdb5ab800a2877389fc6ecf5e4ff307e6451ff56c517e6786467d0a.en.png differ
diff --git a/translated_images/arducam-wio-terminal-connections.a4d5a4049bdb5ab800a2877389fc6ecf5e4ff307e6451ff56c517e6786467d0a.lt.png b/translated_images/arducam-wio-terminal-connections.a4d5a4049bdb5ab800a2877389fc6ecf5e4ff307e6451ff56c517e6786467d0a.lt.png
new file mode 100644
index 00000000..fb87dd71
Binary files /dev/null and b/translated_images/arducam-wio-terminal-connections.a4d5a4049bdb5ab800a2877389fc6ecf5e4ff307e6451ff56c517e6786467d0a.lt.png differ
diff --git a/translated_images/arducam.20e4e4cbb268296570b5914e20d6c349fc42ddac9ed4e1b9deba2188204eebae.en.png b/translated_images/arducam.20e4e4cbb268296570b5914e20d6c349fc42ddac9ed4e1b9deba2188204eebae.en.png
new file mode 100644
index 00000000..acaa9a02
Binary files /dev/null and b/translated_images/arducam.20e4e4cbb268296570b5914e20d6c349fc42ddac9ed4e1b9deba2188204eebae.en.png differ
diff --git a/translated_images/arducam.20e4e4cbb268296570b5914e20d6c349fc42ddac9ed4e1b9deba2188204eebae.lt.png b/translated_images/arducam.20e4e4cbb268296570b5914e20d6c349fc42ddac9ed4e1b9deba2188204eebae.lt.png
new file mode 100644
index 00000000..acaa9a02
Binary files /dev/null and b/translated_images/arducam.20e4e4cbb268296570b5914e20d6c349fc42ddac9ed4e1b9deba2188204eebae.lt.png differ
diff --git a/translated_images/arduino-sketch.79590cb837ff7a7c6a68d1afda6cab83fd53d3bb1bd9a8bf2eaf8d693a4d3ea6.en.png b/translated_images/arduino-sketch.79590cb837ff7a7c6a68d1afda6cab83fd53d3bb1bd9a8bf2eaf8d693a4d3ea6.en.png
new file mode 100644
index 00000000..b6afaa8a
Binary files /dev/null and b/translated_images/arduino-sketch.79590cb837ff7a7c6a68d1afda6cab83fd53d3bb1bd9a8bf2eaf8d693a4d3ea6.en.png differ
diff --git a/translated_images/arduino-sketch.79590cb837ff7a7c6a68d1afda6cab83fd53d3bb1bd9a8bf2eaf8d693a4d3ea6.lt.png b/translated_images/arduino-sketch.79590cb837ff7a7c6a68d1afda6cab83fd53d3bb1bd9a8bf2eaf8d693a4d3ea6.lt.png
new file mode 100644
index 00000000..b6afaa8a
Binary files /dev/null and b/translated_images/arduino-sketch.79590cb837ff7a7c6a68d1afda6cab83fd53d3bb1bd9a8bf2eaf8d693a4d3ea6.lt.png differ
diff --git a/translated_images/assignment-1-flow.7552a51acb1a5ec858dca6e855cdbb44206434006df8ba3799a25afcdab1665d.en.png b/translated_images/assignment-1-flow.7552a51acb1a5ec858dca6e855cdbb44206434006df8ba3799a25afcdab1665d.en.png
new file mode 100644
index 00000000..18f92ede
Binary files /dev/null and b/translated_images/assignment-1-flow.7552a51acb1a5ec858dca6e855cdbb44206434006df8ba3799a25afcdab1665d.en.png differ
diff --git a/translated_images/assignment-1-flow.7552a51acb1a5ec858dca6e855cdbb44206434006df8ba3799a25afcdab1665d.lt.png b/translated_images/assignment-1-flow.7552a51acb1a5ec858dca6e855cdbb44206434006df8ba3799a25afcdab1665d.lt.png
new file mode 100644
index 00000000..18f92ede
Binary files /dev/null and b/translated_images/assignment-1-flow.7552a51acb1a5ec858dca6e855cdbb44206434006df8ba3799a25afcdab1665d.lt.png differ
diff --git a/translated_images/assignment-1-internet-flow.3256feab5f052fd273bf4e331157c574c2c3fa42e479836fc9c3586f41db35a5.en.png b/translated_images/assignment-1-internet-flow.3256feab5f052fd273bf4e331157c574c2c3fa42e479836fc9c3586f41db35a5.en.png
new file mode 100644
index 00000000..e1eb6df0
Binary files /dev/null and b/translated_images/assignment-1-internet-flow.3256feab5f052fd273bf4e331157c574c2c3fa42e479836fc9c3586f41db35a5.en.png differ
diff --git a/translated_images/assignment-1-internet-flow.3256feab5f052fd273bf4e331157c574c2c3fa42e479836fc9c3586f41db35a5.lt.png b/translated_images/assignment-1-internet-flow.3256feab5f052fd273bf4e331157c574c2c3fa42e479836fc9c3586f41db35a5.lt.png
new file mode 100644
index 00000000..e1eb6df0
Binary files /dev/null and b/translated_images/assignment-1-internet-flow.3256feab5f052fd273bf4e331157c574c2c3fa42e479836fc9c3586f41db35a5.lt.png differ
diff --git a/translated_images/azure-container-registry-logo.09494206991d4b295025ebff7d4e2900325e527a59184ffbc8464b6ab59654be.en.png b/translated_images/azure-container-registry-logo.09494206991d4b295025ebff7d4e2900325e527a59184ffbc8464b6ab59654be.en.png
new file mode 100644
index 00000000..dfcfde45
Binary files /dev/null and b/translated_images/azure-container-registry-logo.09494206991d4b295025ebff7d4e2900325e527a59184ffbc8464b6ab59654be.en.png differ
diff --git a/translated_images/azure-container-registry-logo.09494206991d4b295025ebff7d4e2900325e527a59184ffbc8464b6ab59654be.lt.png b/translated_images/azure-container-registry-logo.09494206991d4b295025ebff7d4e2900325e527a59184ffbc8464b6ab59654be.lt.png
new file mode 100644
index 00000000..dfcfde45
Binary files /dev/null and b/translated_images/azure-container-registry-logo.09494206991d4b295025ebff7d4e2900325e527a59184ffbc8464b6ab59654be.lt.png differ
diff --git a/translated_images/azure-functions-logo.1cfc8e3204c9c44aaf80fcf406fc8544d80d7f00f8d3e8ed6fed764563e17564.en.png b/translated_images/azure-functions-logo.1cfc8e3204c9c44aaf80fcf406fc8544d80d7f00f8d3e8ed6fed764563e17564.en.png
new file mode 100644
index 00000000..44af1896
Binary files /dev/null and b/translated_images/azure-functions-logo.1cfc8e3204c9c44aaf80fcf406fc8544d80d7f00f8d3e8ed6fed764563e17564.en.png differ
diff --git a/translated_images/azure-functions-logo.1cfc8e3204c9c44aaf80fcf406fc8544d80d7f00f8d3e8ed6fed764563e17564.lt.png b/translated_images/azure-functions-logo.1cfc8e3204c9c44aaf80fcf406fc8544d80d7f00f8d3e8ed6fed764563e17564.lt.png
new file mode 100644
index 00000000..44af1896
Binary files /dev/null and b/translated_images/azure-functions-logo.1cfc8e3204c9c44aaf80fcf406fc8544d80d7f00f8d3e8ed6fed764563e17564.lt.png differ
diff --git a/translated_images/azure-iot-edge-logo.c1c076749b5cba2e8755262fadc2f19ca1146b948d76990b1229199ac2292d79.en.png b/translated_images/azure-iot-edge-logo.c1c076749b5cba2e8755262fadc2f19ca1146b948d76990b1229199ac2292d79.en.png
new file mode 100644
index 00000000..6d749e6c
Binary files /dev/null and b/translated_images/azure-iot-edge-logo.c1c076749b5cba2e8755262fadc2f19ca1146b948d76990b1229199ac2292d79.en.png differ
diff --git a/translated_images/azure-iot-edge-logo.c1c076749b5cba2e8755262fadc2f19ca1146b948d76990b1229199ac2292d79.lt.png b/translated_images/azure-iot-edge-logo.c1c076749b5cba2e8755262fadc2f19ca1146b948d76990b1229199ac2292d79.lt.png
new file mode 100644
index 00000000..6d749e6c
Binary files /dev/null and b/translated_images/azure-iot-edge-logo.c1c076749b5cba2e8755262fadc2f19ca1146b948d76990b1229199ac2292d79.lt.png differ
diff --git a/translated_images/azure-iot-hub-logo.28a19de76d0a1932464d858f7558712bcdace3e5ec69c434d482ed7ce41c3a26.en.png b/translated_images/azure-iot-hub-logo.28a19de76d0a1932464d858f7558712bcdace3e5ec69c434d482ed7ce41c3a26.en.png
new file mode 100644
index 00000000..7485e36c
Binary files /dev/null and b/translated_images/azure-iot-hub-logo.28a19de76d0a1932464d858f7558712bcdace3e5ec69c434d482ed7ce41c3a26.en.png differ
diff --git a/translated_images/azure-iot-hub-logo.28a19de76d0a1932464d858f7558712bcdace3e5ec69c434d482ed7ce41c3a26.lt.png b/translated_images/azure-iot-hub-logo.28a19de76d0a1932464d858f7558712bcdace3e5ec69c434d482ed7ce41c3a26.lt.png
new file mode 100644
index 00000000..7485e36c
Binary files /dev/null and b/translated_images/azure-iot-hub-logo.28a19de76d0a1932464d858f7558712bcdace3e5ec69c434d482ed7ce41c3a26.lt.png differ
diff --git a/translated_images/azure-maps-logo.35d01dcfbd81fe6140e94257aaa1538f785a58c91576d14e0ebe7a2f6c694b99.en.png b/translated_images/azure-maps-logo.35d01dcfbd81fe6140e94257aaa1538f785a58c91576d14e0ebe7a2f6c694b99.en.png
new file mode 100644
index 00000000..0f499097
Binary files /dev/null and b/translated_images/azure-maps-logo.35d01dcfbd81fe6140e94257aaa1538f785a58c91576d14e0ebe7a2f6c694b99.en.png differ
diff --git a/translated_images/azure-maps-logo.35d01dcfbd81fe6140e94257aaa1538f785a58c91576d14e0ebe7a2f6c694b99.lt.png b/translated_images/azure-maps-logo.35d01dcfbd81fe6140e94257aaa1538f785a58c91576d14e0ebe7a2f6c694b99.lt.png
new file mode 100644
index 00000000..0f499097
Binary files /dev/null and b/translated_images/azure-maps-logo.35d01dcfbd81fe6140e94257aaa1538f785a58c91576d14e0ebe7a2f6c694b99.lt.png differ
diff --git a/translated_images/azure-region-existing.73f704604f2aa6cb9b5a49ed40e93d4fd81ae3f4e6af4a8ca504023902832f56.en.png b/translated_images/azure-region-existing.73f704604f2aa6cb9b5a49ed40e93d4fd81ae3f4e6af4a8ca504023902832f56.en.png
new file mode 100644
index 00000000..710c440c
Binary files /dev/null and b/translated_images/azure-region-existing.73f704604f2aa6cb9b5a49ed40e93d4fd81ae3f4e6af4a8ca504023902832f56.en.png differ
diff --git a/translated_images/azure-region-existing.73f704604f2aa6cb9b5a49ed40e93d4fd81ae3f4e6af4a8ca504023902832f56.lt.png b/translated_images/azure-region-existing.73f704604f2aa6cb9b5a49ed40e93d4fd81ae3f4e6af4a8ca504023902832f56.lt.png
new file mode 100644
index 00000000..710c440c
Binary files /dev/null and b/translated_images/azure-region-existing.73f704604f2aa6cb9b5a49ed40e93d4fd81ae3f4e6af4a8ca504023902832f56.lt.png differ
diff --git a/translated_images/azure-region-planned-expansion.a5074a1e8af74f156a73552d502429e5b126ea5019274d767ecb4b9afdad442b.en.png b/translated_images/azure-region-planned-expansion.a5074a1e8af74f156a73552d502429e5b126ea5019274d767ecb4b9afdad442b.en.png
new file mode 100644
index 00000000..24cecced
Binary files /dev/null and b/translated_images/azure-region-planned-expansion.a5074a1e8af74f156a73552d502429e5b126ea5019274d767ecb4b9afdad442b.en.png differ
diff --git a/translated_images/azure-region-planned-expansion.a5074a1e8af74f156a73552d502429e5b126ea5019274d767ecb4b9afdad442b.lt.png b/translated_images/azure-region-planned-expansion.a5074a1e8af74f156a73552d502429e5b126ea5019274d767ecb4b9afdad442b.lt.png
new file mode 100644
index 00000000..24cecced
Binary files /dev/null and b/translated_images/azure-region-planned-expansion.a5074a1e8af74f156a73552d502429e5b126ea5019274d767ecb4b9afdad442b.lt.png differ
diff --git a/translated_images/azure-speech-logo.a1f08c4befb0159f2cb5d692d3baf5b599e7b44759d316da907bda1508f46a4a.en.png b/translated_images/azure-speech-logo.a1f08c4befb0159f2cb5d692d3baf5b599e7b44759d316da907bda1508f46a4a.en.png
new file mode 100644
index 00000000..b36025d9
Binary files /dev/null and b/translated_images/azure-speech-logo.a1f08c4befb0159f2cb5d692d3baf5b599e7b44759d316da907bda1508f46a4a.en.png differ
diff --git a/translated_images/azure-speech-logo.a1f08c4befb0159f2cb5d692d3baf5b599e7b44759d316da907bda1508f46a4a.lt.png b/translated_images/azure-speech-logo.a1f08c4befb0159f2cb5d692d3baf5b599e7b44759d316da907bda1508f46a4a.lt.png
new file mode 100644
index 00000000..b36025d9
Binary files /dev/null and b/translated_images/azure-speech-logo.a1f08c4befb0159f2cb5d692d3baf5b599e7b44759d316da907bda1508f46a4a.lt.png differ
diff --git a/translated_images/azure-storage-logo.605c0f602c640d482a80f1b35a2629a32d595711b7ab1d7ceea843250615ff32.en.png b/translated_images/azure-storage-logo.605c0f602c640d482a80f1b35a2629a32d595711b7ab1d7ceea843250615ff32.en.png
new file mode 100644
index 00000000..b21a4bed
Binary files /dev/null and b/translated_images/azure-storage-logo.605c0f602c640d482a80f1b35a2629a32d595711b7ab1d7ceea843250615ff32.en.png differ
diff --git a/translated_images/azure-storage-logo.605c0f602c640d482a80f1b35a2629a32d595711b7ab1d7ceea843250615ff32.lt.png b/translated_images/azure-storage-logo.605c0f602c640d482a80f1b35a2629a32d595711b7ab1d7ceea843250615ff32.lt.png
new file mode 100644
index 00000000..b21a4bed
Binary files /dev/null and b/translated_images/azure-storage-logo.605c0f602c640d482a80f1b35a2629a32d595711b7ab1d7ceea843250615ff32.lt.png differ
diff --git a/translated_images/azure-translator-logo.c6ed3a4a433edfd2f11577eca105412c50b8396b194cbbd730723dd1d0793bcd.en.png b/translated_images/azure-translator-logo.c6ed3a4a433edfd2f11577eca105412c50b8396b194cbbd730723dd1d0793bcd.en.png
new file mode 100644
index 00000000..8da6f9a4
Binary files /dev/null and b/translated_images/azure-translator-logo.c6ed3a4a433edfd2f11577eca105412c50b8396b194cbbd730723dd1d0793bcd.en.png differ
diff --git a/translated_images/azure-translator-logo.c6ed3a4a433edfd2f11577eca105412c50b8396b194cbbd730723dd1d0793bcd.lt.png b/translated_images/azure-translator-logo.c6ed3a4a433edfd2f11577eca105412c50b8396b194cbbd730723dd1d0793bcd.lt.png
new file mode 100644
index 00000000..8da6f9a4
Binary files /dev/null and b/translated_images/azure-translator-logo.c6ed3a4a433edfd2f11577eca105412c50b8396b194cbbd730723dd1d0793bcd.lt.png differ
diff --git a/translated_images/banana-arducam.be1b32d4267a8194b0fd042362e56faa431da9cd4af172051b37243ea9be0256.en.jpg b/translated_images/banana-arducam.be1b32d4267a8194b0fd042362e56faa431da9cd4af172051b37243ea9be0256.en.jpg
new file mode 100644
index 00000000..437f3d07
Binary files /dev/null and b/translated_images/banana-arducam.be1b32d4267a8194b0fd042362e56faa431da9cd4af172051b37243ea9be0256.en.jpg differ
diff --git a/translated_images/banana-arducam.be1b32d4267a8194b0fd042362e56faa431da9cd4af172051b37243ea9be0256.lt.jpg b/translated_images/banana-arducam.be1b32d4267a8194b0fd042362e56faa431da9cd4af172051b37243ea9be0256.lt.jpg
new file mode 100644
index 00000000..437f3d07
Binary files /dev/null and b/translated_images/banana-arducam.be1b32d4267a8194b0fd042362e56faa431da9cd4af172051b37243ea9be0256.lt.jpg differ
diff --git a/translated_images/banana-picture-compare.174df164dc326a42cf7fb051a7497e6113c620e91552d92ca914220305d47d9a.en.png b/translated_images/banana-picture-compare.174df164dc326a42cf7fb051a7497e6113c620e91552d92ca914220305d47d9a.en.png
new file mode 100644
index 00000000..cc61fb13
Binary files /dev/null and b/translated_images/banana-picture-compare.174df164dc326a42cf7fb051a7497e6113c620e91552d92ca914220305d47d9a.en.png differ
diff --git a/translated_images/banana-picture-compare.174df164dc326a42cf7fb051a7497e6113c620e91552d92ca914220305d47d9a.lt.png b/translated_images/banana-picture-compare.174df164dc326a42cf7fb051a7497e6113c620e91552d92ca914220305d47d9a.lt.png
new file mode 100644
index 00000000..cc61fb13
Binary files /dev/null and b/translated_images/banana-picture-compare.174df164dc326a42cf7fb051a7497e6113c620e91552d92ca914220305d47d9a.lt.png differ
diff --git a/translated_images/banana-ripe-1.6ed72365ffc9230064fbaefdb698bde74529ad5b3c747a4a28421b534730fa5f.en.png b/translated_images/banana-ripe-1.6ed72365ffc9230064fbaefdb698bde74529ad5b3c747a4a28421b534730fa5f.en.png
new file mode 100644
index 00000000..3472b1d9
Binary files /dev/null and b/translated_images/banana-ripe-1.6ed72365ffc9230064fbaefdb698bde74529ad5b3c747a4a28421b534730fa5f.en.png differ
diff --git a/translated_images/banana-ripe-1.6ed72365ffc9230064fbaefdb698bde74529ad5b3c747a4a28421b534730fa5f.lt.png b/translated_images/banana-ripe-1.6ed72365ffc9230064fbaefdb698bde74529ad5b3c747a4a28421b534730fa5f.lt.png
new file mode 100644
index 00000000..3472b1d9
Binary files /dev/null and b/translated_images/banana-ripe-1.6ed72365ffc9230064fbaefdb698bde74529ad5b3c747a4a28421b534730fa5f.lt.png differ
diff --git a/translated_images/banana-ripe-1.780e9be3a60d8879826126ee1e84e135ffa20ec91697bb759daf7ba0b76c811b.en.png b/translated_images/banana-ripe-1.780e9be3a60d8879826126ee1e84e135ffa20ec91697bb759daf7ba0b76c811b.en.png
new file mode 100644
index 00000000..0bbca602
Binary files /dev/null and b/translated_images/banana-ripe-1.780e9be3a60d8879826126ee1e84e135ffa20ec91697bb759daf7ba0b76c811b.en.png differ
diff --git a/translated_images/banana-ripe-1.780e9be3a60d8879826126ee1e84e135ffa20ec91697bb759daf7ba0b76c811b.lt.png b/translated_images/banana-ripe-1.780e9be3a60d8879826126ee1e84e135ffa20ec91697bb759daf7ba0b76c811b.lt.png
new file mode 100644
index 00000000..0bbca602
Binary files /dev/null and b/translated_images/banana-ripe-1.780e9be3a60d8879826126ee1e84e135ffa20ec91697bb759daf7ba0b76c811b.lt.png differ
diff --git a/translated_images/banana-ripe-10.c3d98eb280e7464ffa36da1fa18413db4fd032da973b098bb4978d6d99c1a3af.en.png b/translated_images/banana-ripe-10.c3d98eb280e7464ffa36da1fa18413db4fd032da973b098bb4978d6d99c1a3af.en.png
new file mode 100644
index 00000000..b5775adc
Binary files /dev/null and b/translated_images/banana-ripe-10.c3d98eb280e7464ffa36da1fa18413db4fd032da973b098bb4978d6d99c1a3af.en.png differ
diff --git a/translated_images/banana-ripe-10.c3d98eb280e7464ffa36da1fa18413db4fd032da973b098bb4978d6d99c1a3af.lt.png b/translated_images/banana-ripe-10.c3d98eb280e7464ffa36da1fa18413db4fd032da973b098bb4978d6d99c1a3af.lt.png
new file mode 100644
index 00000000..b5775adc
Binary files /dev/null and b/translated_images/banana-ripe-10.c3d98eb280e7464ffa36da1fa18413db4fd032da973b098bb4978d6d99c1a3af.lt.png differ
diff --git a/translated_images/banana-ripe-11.3d932f292b95b9a202082ce75f5b52ecaf43718721661810b53f7a5a2c4b4133.en.png b/translated_images/banana-ripe-11.3d932f292b95b9a202082ce75f5b52ecaf43718721661810b53f7a5a2c4b4133.en.png
new file mode 100644
index 00000000..bc58477a
Binary files /dev/null and b/translated_images/banana-ripe-11.3d932f292b95b9a202082ce75f5b52ecaf43718721661810b53f7a5a2c4b4133.en.png differ
diff --git a/translated_images/banana-ripe-11.3d932f292b95b9a202082ce75f5b52ecaf43718721661810b53f7a5a2c4b4133.lt.png b/translated_images/banana-ripe-11.3d932f292b95b9a202082ce75f5b52ecaf43718721661810b53f7a5a2c4b4133.lt.png
new file mode 100644
index 00000000..bc58477a
Binary files /dev/null and b/translated_images/banana-ripe-11.3d932f292b95b9a202082ce75f5b52ecaf43718721661810b53f7a5a2c4b4133.lt.png differ
diff --git a/translated_images/banana-ripe-12.9f87e663b9da6c8525f3ce63c5c0a1c095e42675e2a6af9b0fddb14ebb1e0b4b.en.png b/translated_images/banana-ripe-12.9f87e663b9da6c8525f3ce63c5c0a1c095e42675e2a6af9b0fddb14ebb1e0b4b.en.png
new file mode 100644
index 00000000..1b7a40f4
Binary files /dev/null and b/translated_images/banana-ripe-12.9f87e663b9da6c8525f3ce63c5c0a1c095e42675e2a6af9b0fddb14ebb1e0b4b.en.png differ
diff --git a/translated_images/banana-ripe-12.9f87e663b9da6c8525f3ce63c5c0a1c095e42675e2a6af9b0fddb14ebb1e0b4b.lt.png b/translated_images/banana-ripe-12.9f87e663b9da6c8525f3ce63c5c0a1c095e42675e2a6af9b0fddb14ebb1e0b4b.lt.png
new file mode 100644
index 00000000..1b7a40f4
Binary files /dev/null and b/translated_images/banana-ripe-12.9f87e663b9da6c8525f3ce63c5c0a1c095e42675e2a6af9b0fddb14ebb1e0b4b.lt.png differ
diff --git a/translated_images/banana-ripe-13.b7402e05160f454309533a578849d7e79f92dd70799428943d7211c2fbb82465.en.png b/translated_images/banana-ripe-13.b7402e05160f454309533a578849d7e79f92dd70799428943d7211c2fbb82465.en.png
new file mode 100644
index 00000000..011b07a3
Binary files /dev/null and b/translated_images/banana-ripe-13.b7402e05160f454309533a578849d7e79f92dd70799428943d7211c2fbb82465.en.png differ
diff --git a/translated_images/banana-ripe-13.b7402e05160f454309533a578849d7e79f92dd70799428943d7211c2fbb82465.lt.png b/translated_images/banana-ripe-13.b7402e05160f454309533a578849d7e79f92dd70799428943d7211c2fbb82465.lt.png
new file mode 100644
index 00000000..011b07a3
Binary files /dev/null and b/translated_images/banana-ripe-13.b7402e05160f454309533a578849d7e79f92dd70799428943d7211c2fbb82465.lt.png differ
diff --git a/translated_images/banana-ripe-14.85cf309aa702cfa870286a5f8838ee5875a655074a982bafe5b8d32d4d5819f2.en.png b/translated_images/banana-ripe-14.85cf309aa702cfa870286a5f8838ee5875a655074a982bafe5b8d32d4d5819f2.en.png
new file mode 100644
index 00000000..7f9d24ef
Binary files /dev/null and b/translated_images/banana-ripe-14.85cf309aa702cfa870286a5f8838ee5875a655074a982bafe5b8d32d4d5819f2.en.png differ
diff --git a/translated_images/banana-ripe-14.85cf309aa702cfa870286a5f8838ee5875a655074a982bafe5b8d32d4d5819f2.lt.png b/translated_images/banana-ripe-14.85cf309aa702cfa870286a5f8838ee5875a655074a982bafe5b8d32d4d5819f2.lt.png
new file mode 100644
index 00000000..7f9d24ef
Binary files /dev/null and b/translated_images/banana-ripe-14.85cf309aa702cfa870286a5f8838ee5875a655074a982bafe5b8d32d4d5819f2.lt.png differ
diff --git a/translated_images/banana-ripe-15.933412eb14a3f8e419c764c8157d1e5f25256972a8dcf450aa630b8c007c8c3d.en.png b/translated_images/banana-ripe-15.933412eb14a3f8e419c764c8157d1e5f25256972a8dcf450aa630b8c007c8c3d.en.png
new file mode 100644
index 00000000..0c6a7067
Binary files /dev/null and b/translated_images/banana-ripe-15.933412eb14a3f8e419c764c8157d1e5f25256972a8dcf450aa630b8c007c8c3d.en.png differ
diff --git a/translated_images/banana-ripe-15.933412eb14a3f8e419c764c8157d1e5f25256972a8dcf450aa630b8c007c8c3d.lt.png b/translated_images/banana-ripe-15.933412eb14a3f8e419c764c8157d1e5f25256972a8dcf450aa630b8c007c8c3d.lt.png
new file mode 100644
index 00000000..0c6a7067
Binary files /dev/null and b/translated_images/banana-ripe-15.933412eb14a3f8e419c764c8157d1e5f25256972a8dcf450aa630b8c007c8c3d.lt.png differ
diff --git a/translated_images/banana-ripe-16.781a68a01401f89e5e523c88e659a0f9697b7de378571c91e597edc0d0c2eb07.en.png b/translated_images/banana-ripe-16.781a68a01401f89e5e523c88e659a0f9697b7de378571c91e597edc0d0c2eb07.en.png
new file mode 100644
index 00000000..8f7968a5
Binary files /dev/null and b/translated_images/banana-ripe-16.781a68a01401f89e5e523c88e659a0f9697b7de378571c91e597edc0d0c2eb07.en.png differ
diff --git a/translated_images/banana-ripe-16.781a68a01401f89e5e523c88e659a0f9697b7de378571c91e597edc0d0c2eb07.lt.png b/translated_images/banana-ripe-16.781a68a01401f89e5e523c88e659a0f9697b7de378571c91e597edc0d0c2eb07.lt.png
new file mode 100644
index 00000000..8f7968a5
Binary files /dev/null and b/translated_images/banana-ripe-16.781a68a01401f89e5e523c88e659a0f9697b7de378571c91e597edc0d0c2eb07.lt.png differ
diff --git a/translated_images/banana-ripe-17.f8e2853a40d3ac450e290036792b75ac4b8da5883536478722fb336d5f66517e.en.png b/translated_images/banana-ripe-17.f8e2853a40d3ac450e290036792b75ac4b8da5883536478722fb336d5f66517e.en.png
new file mode 100644
index 00000000..20c6036f
Binary files /dev/null and b/translated_images/banana-ripe-17.f8e2853a40d3ac450e290036792b75ac4b8da5883536478722fb336d5f66517e.en.png differ
diff --git a/translated_images/banana-ripe-17.f8e2853a40d3ac450e290036792b75ac4b8da5883536478722fb336d5f66517e.lt.png b/translated_images/banana-ripe-17.f8e2853a40d3ac450e290036792b75ac4b8da5883536478722fb336d5f66517e.lt.png
new file mode 100644
index 00000000..20c6036f
Binary files /dev/null and b/translated_images/banana-ripe-17.f8e2853a40d3ac450e290036792b75ac4b8da5883536478722fb336d5f66517e.lt.png differ
diff --git a/translated_images/banana-ripe-18.3d05f5f78ecf6f0d74aecdafb8e415851a5333e5dbc016ac1870ab5e4c383b07.en.png b/translated_images/banana-ripe-18.3d05f5f78ecf6f0d74aecdafb8e415851a5333e5dbc016ac1870ab5e4c383b07.en.png
new file mode 100644
index 00000000..f077b6e9
Binary files /dev/null and b/translated_images/banana-ripe-18.3d05f5f78ecf6f0d74aecdafb8e415851a5333e5dbc016ac1870ab5e4c383b07.en.png differ
diff --git a/translated_images/banana-ripe-18.3d05f5f78ecf6f0d74aecdafb8e415851a5333e5dbc016ac1870ab5e4c383b07.lt.png b/translated_images/banana-ripe-18.3d05f5f78ecf6f0d74aecdafb8e415851a5333e5dbc016ac1870ab5e4c383b07.lt.png
new file mode 100644
index 00000000..f077b6e9
Binary files /dev/null and b/translated_images/banana-ripe-18.3d05f5f78ecf6f0d74aecdafb8e415851a5333e5dbc016ac1870ab5e4c383b07.lt.png differ
diff --git a/translated_images/banana-ripe-19.ac3b0fc6cf6fdfd5523227bc246c915b228bc3d4bc1c72f6612723ed889023b5.en.png b/translated_images/banana-ripe-19.ac3b0fc6cf6fdfd5523227bc246c915b228bc3d4bc1c72f6612723ed889023b5.en.png
new file mode 100644
index 00000000..484206d5
Binary files /dev/null and b/translated_images/banana-ripe-19.ac3b0fc6cf6fdfd5523227bc246c915b228bc3d4bc1c72f6612723ed889023b5.en.png differ
diff --git a/translated_images/banana-ripe-19.ac3b0fc6cf6fdfd5523227bc246c915b228bc3d4bc1c72f6612723ed889023b5.lt.png b/translated_images/banana-ripe-19.ac3b0fc6cf6fdfd5523227bc246c915b228bc3d4bc1c72f6612723ed889023b5.lt.png
new file mode 100644
index 00000000..484206d5
Binary files /dev/null and b/translated_images/banana-ripe-19.ac3b0fc6cf6fdfd5523227bc246c915b228bc3d4bc1c72f6612723ed889023b5.lt.png differ
diff --git a/translated_images/banana-ripe-2.8ab96da692df69f1c78bd3a93acfdb17bc292ac964a3f3bac9249ba1dd1681c3.en.png b/translated_images/banana-ripe-2.8ab96da692df69f1c78bd3a93acfdb17bc292ac964a3f3bac9249ba1dd1681c3.en.png
new file mode 100644
index 00000000..9fa156e2
Binary files /dev/null and b/translated_images/banana-ripe-2.8ab96da692df69f1c78bd3a93acfdb17bc292ac964a3f3bac9249ba1dd1681c3.en.png differ
diff --git a/translated_images/banana-ripe-2.8ab96da692df69f1c78bd3a93acfdb17bc292ac964a3f3bac9249ba1dd1681c3.lt.png b/translated_images/banana-ripe-2.8ab96da692df69f1c78bd3a93acfdb17bc292ac964a3f3bac9249ba1dd1681c3.lt.png
new file mode 100644
index 00000000..9fa156e2
Binary files /dev/null and b/translated_images/banana-ripe-2.8ab96da692df69f1c78bd3a93acfdb17bc292ac964a3f3bac9249ba1dd1681c3.lt.png differ
diff --git a/translated_images/banana-ripe-2.96ddc53114c5f020a328b264174eef43d2096620c6b10ff5189e99674c1dfa8c.en.png b/translated_images/banana-ripe-2.96ddc53114c5f020a328b264174eef43d2096620c6b10ff5189e99674c1dfa8c.en.png
new file mode 100644
index 00000000..b0813972
Binary files /dev/null and b/translated_images/banana-ripe-2.96ddc53114c5f020a328b264174eef43d2096620c6b10ff5189e99674c1dfa8c.en.png differ
diff --git a/translated_images/banana-ripe-2.96ddc53114c5f020a328b264174eef43d2096620c6b10ff5189e99674c1dfa8c.lt.png b/translated_images/banana-ripe-2.96ddc53114c5f020a328b264174eef43d2096620c6b10ff5189e99674c1dfa8c.lt.png
new file mode 100644
index 00000000..b0813972
Binary files /dev/null and b/translated_images/banana-ripe-2.96ddc53114c5f020a328b264174eef43d2096620c6b10ff5189e99674c1dfa8c.lt.png differ
diff --git a/translated_images/banana-ripe-20.a4d0ad33a7e6f037ac9276dc751ae62d56d3cc16e625837197ef49da426bc3c8.en.png b/translated_images/banana-ripe-20.a4d0ad33a7e6f037ac9276dc751ae62d56d3cc16e625837197ef49da426bc3c8.en.png
new file mode 100644
index 00000000..4f2da8dc
Binary files /dev/null and b/translated_images/banana-ripe-20.a4d0ad33a7e6f037ac9276dc751ae62d56d3cc16e625837197ef49da426bc3c8.en.png differ
diff --git a/translated_images/banana-ripe-20.a4d0ad33a7e6f037ac9276dc751ae62d56d3cc16e625837197ef49da426bc3c8.lt.png b/translated_images/banana-ripe-20.a4d0ad33a7e6f037ac9276dc751ae62d56d3cc16e625837197ef49da426bc3c8.lt.png
new file mode 100644
index 00000000..4f2da8dc
Binary files /dev/null and b/translated_images/banana-ripe-20.a4d0ad33a7e6f037ac9276dc751ae62d56d3cc16e625837197ef49da426bc3c8.lt.png differ
diff --git a/translated_images/banana-ripe-21.07e03d64f265d55dfe3b304df3e36f06140b87f80ae2cadd22a7736e2855eb8f.en.png b/translated_images/banana-ripe-21.07e03d64f265d55dfe3b304df3e36f06140b87f80ae2cadd22a7736e2855eb8f.en.png
new file mode 100644
index 00000000..8ae3904c
Binary files /dev/null and b/translated_images/banana-ripe-21.07e03d64f265d55dfe3b304df3e36f06140b87f80ae2cadd22a7736e2855eb8f.en.png differ
diff --git a/translated_images/banana-ripe-21.07e03d64f265d55dfe3b304df3e36f06140b87f80ae2cadd22a7736e2855eb8f.lt.png b/translated_images/banana-ripe-21.07e03d64f265d55dfe3b304df3e36f06140b87f80ae2cadd22a7736e2855eb8f.lt.png
new file mode 100644
index 00000000..8ae3904c
Binary files /dev/null and b/translated_images/banana-ripe-21.07e03d64f265d55dfe3b304df3e36f06140b87f80ae2cadd22a7736e2855eb8f.lt.png differ
diff --git a/translated_images/banana-ripe-22.a63c05aeb7f866fc64b6ac04e6fa68e1d1a22d729ad16d9fadf3357df97654a3.en.png b/translated_images/banana-ripe-22.a63c05aeb7f866fc64b6ac04e6fa68e1d1a22d729ad16d9fadf3357df97654a3.en.png
new file mode 100644
index 00000000..ea5cbe30
Binary files /dev/null and b/translated_images/banana-ripe-22.a63c05aeb7f866fc64b6ac04e6fa68e1d1a22d729ad16d9fadf3357df97654a3.en.png differ
diff --git a/translated_images/banana-ripe-22.a63c05aeb7f866fc64b6ac04e6fa68e1d1a22d729ad16d9fadf3357df97654a3.lt.png b/translated_images/banana-ripe-22.a63c05aeb7f866fc64b6ac04e6fa68e1d1a22d729ad16d9fadf3357df97654a3.lt.png
new file mode 100644
index 00000000..ea5cbe30
Binary files /dev/null and b/translated_images/banana-ripe-22.a63c05aeb7f866fc64b6ac04e6fa68e1d1a22d729ad16d9fadf3357df97654a3.lt.png differ
diff --git a/translated_images/banana-ripe-23.6f3364afcab19e571497cb5a3fa2b0c603a303beb31034cb82ae25635f4cc005.en.png b/translated_images/banana-ripe-23.6f3364afcab19e571497cb5a3fa2b0c603a303beb31034cb82ae25635f4cc005.en.png
new file mode 100644
index 00000000..eab9fb03
Binary files /dev/null and b/translated_images/banana-ripe-23.6f3364afcab19e571497cb5a3fa2b0c603a303beb31034cb82ae25635f4cc005.en.png differ
diff --git a/translated_images/banana-ripe-23.6f3364afcab19e571497cb5a3fa2b0c603a303beb31034cb82ae25635f4cc005.lt.png b/translated_images/banana-ripe-23.6f3364afcab19e571497cb5a3fa2b0c603a303beb31034cb82ae25635f4cc005.lt.png
new file mode 100644
index 00000000..eab9fb03
Binary files /dev/null and b/translated_images/banana-ripe-23.6f3364afcab19e571497cb5a3fa2b0c603a303beb31034cb82ae25635f4cc005.lt.png differ
diff --git a/translated_images/banana-ripe-24.ff2c02cc80a9c4301d1f851af0a96f414fcc844f912ea4bea902877c9d6978f6.en.png b/translated_images/banana-ripe-24.ff2c02cc80a9c4301d1f851af0a96f414fcc844f912ea4bea902877c9d6978f6.en.png
new file mode 100644
index 00000000..c49c0459
Binary files /dev/null and b/translated_images/banana-ripe-24.ff2c02cc80a9c4301d1f851af0a96f414fcc844f912ea4bea902877c9d6978f6.en.png differ
diff --git a/translated_images/banana-ripe-24.ff2c02cc80a9c4301d1f851af0a96f414fcc844f912ea4bea902877c9d6978f6.lt.png b/translated_images/banana-ripe-24.ff2c02cc80a9c4301d1f851af0a96f414fcc844f912ea4bea902877c9d6978f6.lt.png
new file mode 100644
index 00000000..c49c0459
Binary files /dev/null and b/translated_images/banana-ripe-24.ff2c02cc80a9c4301d1f851af0a96f414fcc844f912ea4bea902877c9d6978f6.lt.png differ
diff --git a/translated_images/banana-ripe-25.65ce63418cdc4de2d1d29d0fd35401a9f99e967938e01c3578f13a6b6812ae50.en.png b/translated_images/banana-ripe-25.65ce63418cdc4de2d1d29d0fd35401a9f99e967938e01c3578f13a6b6812ae50.en.png
new file mode 100644
index 00000000..127b0257
Binary files /dev/null and b/translated_images/banana-ripe-25.65ce63418cdc4de2d1d29d0fd35401a9f99e967938e01c3578f13a6b6812ae50.en.png differ
diff --git a/translated_images/banana-ripe-25.65ce63418cdc4de2d1d29d0fd35401a9f99e967938e01c3578f13a6b6812ae50.lt.png b/translated_images/banana-ripe-25.65ce63418cdc4de2d1d29d0fd35401a9f99e967938e01c3578f13a6b6812ae50.lt.png
new file mode 100644
index 00000000..127b0257
Binary files /dev/null and b/translated_images/banana-ripe-25.65ce63418cdc4de2d1d29d0fd35401a9f99e967938e01c3578f13a6b6812ae50.lt.png differ
diff --git a/translated_images/banana-ripe-3.4fae05a0a1d2b5f010998afee52fb77a113453a95331c76eb4b509c14d5cb5d7.en.png b/translated_images/banana-ripe-3.4fae05a0a1d2b5f010998afee52fb77a113453a95331c76eb4b509c14d5cb5d7.en.png
new file mode 100644
index 00000000..0b528799
Binary files /dev/null and b/translated_images/banana-ripe-3.4fae05a0a1d2b5f010998afee52fb77a113453a95331c76eb4b509c14d5cb5d7.en.png differ
diff --git a/translated_images/banana-ripe-3.4fae05a0a1d2b5f010998afee52fb77a113453a95331c76eb4b509c14d5cb5d7.lt.png b/translated_images/banana-ripe-3.4fae05a0a1d2b5f010998afee52fb77a113453a95331c76eb4b509c14d5cb5d7.lt.png
new file mode 100644
index 00000000..0b528799
Binary files /dev/null and b/translated_images/banana-ripe-3.4fae05a0a1d2b5f010998afee52fb77a113453a95331c76eb4b509c14d5cb5d7.lt.png differ
diff --git a/translated_images/banana-ripe-5.c762086879ccec4c5402fb5dd5387f4ee4c208de3ec13fd69a5461ef36cde34a.en.png b/translated_images/banana-ripe-5.c762086879ccec4c5402fb5dd5387f4ee4c208de3ec13fd69a5461ef36cde34a.en.png
new file mode 100644
index 00000000..e5b04c65
Binary files /dev/null and b/translated_images/banana-ripe-5.c762086879ccec4c5402fb5dd5387f4ee4c208de3ec13fd69a5461ef36cde34a.en.png differ
diff --git a/translated_images/banana-ripe-5.c762086879ccec4c5402fb5dd5387f4ee4c208de3ec13fd69a5461ef36cde34a.lt.png b/translated_images/banana-ripe-5.c762086879ccec4c5402fb5dd5387f4ee4c208de3ec13fd69a5461ef36cde34a.lt.png
new file mode 100644
index 00000000..e5b04c65
Binary files /dev/null and b/translated_images/banana-ripe-5.c762086879ccec4c5402fb5dd5387f4ee4c208de3ec13fd69a5461ef36cde34a.lt.png differ
diff --git a/translated_images/banana-ripe-6.5131bcbf492980cb737c3658b96f6ff3381ced4cd6505588b05bd95d82965c49.en.png b/translated_images/banana-ripe-6.5131bcbf492980cb737c3658b96f6ff3381ced4cd6505588b05bd95d82965c49.en.png
new file mode 100644
index 00000000..46543926
Binary files /dev/null and b/translated_images/banana-ripe-6.5131bcbf492980cb737c3658b96f6ff3381ced4cd6505588b05bd95d82965c49.en.png differ
diff --git a/translated_images/banana-ripe-6.5131bcbf492980cb737c3658b96f6ff3381ced4cd6505588b05bd95d82965c49.lt.png b/translated_images/banana-ripe-6.5131bcbf492980cb737c3658b96f6ff3381ced4cd6505588b05bd95d82965c49.lt.png
new file mode 100644
index 00000000..46543926
Binary files /dev/null and b/translated_images/banana-ripe-6.5131bcbf492980cb737c3658b96f6ff3381ced4cd6505588b05bd95d82965c49.lt.png differ
diff --git a/translated_images/banana-ripe-7.5fc18dfe7b7ae9dc5afe27cc6c0ce162c819b78b69b05f6f9c1636d5d1b82edc.en.png b/translated_images/banana-ripe-7.5fc18dfe7b7ae9dc5afe27cc6c0ce162c819b78b69b05f6f9c1636d5d1b82edc.en.png
new file mode 100644
index 00000000..46e99668
Binary files /dev/null and b/translated_images/banana-ripe-7.5fc18dfe7b7ae9dc5afe27cc6c0ce162c819b78b69b05f6f9c1636d5d1b82edc.en.png differ
diff --git a/translated_images/banana-ripe-7.5fc18dfe7b7ae9dc5afe27cc6c0ce162c819b78b69b05f6f9c1636d5d1b82edc.lt.png b/translated_images/banana-ripe-7.5fc18dfe7b7ae9dc5afe27cc6c0ce162c819b78b69b05f6f9c1636d5d1b82edc.lt.png
new file mode 100644
index 00000000..46e99668
Binary files /dev/null and b/translated_images/banana-ripe-7.5fc18dfe7b7ae9dc5afe27cc6c0ce162c819b78b69b05f6f9c1636d5d1b82edc.lt.png differ
diff --git a/translated_images/banana-ripe-8.dba1d33bd34d4830201c15a9c35c56fde4b1a45dc7dc5e3a7def9986bf1b6c28.en.png b/translated_images/banana-ripe-8.dba1d33bd34d4830201c15a9c35c56fde4b1a45dc7dc5e3a7def9986bf1b6c28.en.png
new file mode 100644
index 00000000..c012d47d
Binary files /dev/null and b/translated_images/banana-ripe-8.dba1d33bd34d4830201c15a9c35c56fde4b1a45dc7dc5e3a7def9986bf1b6c28.en.png differ
diff --git a/translated_images/banana-ripe-8.dba1d33bd34d4830201c15a9c35c56fde4b1a45dc7dc5e3a7def9986bf1b6c28.lt.png b/translated_images/banana-ripe-8.dba1d33bd34d4830201c15a9c35c56fde4b1a45dc7dc5e3a7def9986bf1b6c28.lt.png
new file mode 100644
index 00000000..c012d47d
Binary files /dev/null and b/translated_images/banana-ripe-8.dba1d33bd34d4830201c15a9c35c56fde4b1a45dc7dc5e3a7def9986bf1b6c28.lt.png differ
diff --git a/translated_images/banana-ripe-9.32f91462c8b0e2d3666f49a12afd84462212c5834835f988b3c37441c0493952.en.png b/translated_images/banana-ripe-9.32f91462c8b0e2d3666f49a12afd84462212c5834835f988b3c37441c0493952.en.png
new file mode 100644
index 00000000..fa44061a
Binary files /dev/null and b/translated_images/banana-ripe-9.32f91462c8b0e2d3666f49a12afd84462212c5834835f988b3c37441c0493952.en.png differ
diff --git a/translated_images/banana-ripe-9.32f91462c8b0e2d3666f49a12afd84462212c5834835f988b3c37441c0493952.lt.png b/translated_images/banana-ripe-9.32f91462c8b0e2d3666f49a12afd84462212c5834835f988b3c37441c0493952.lt.png
new file mode 100644
index 00000000..fa44061a
Binary files /dev/null and b/translated_images/banana-ripe-9.32f91462c8b0e2d3666f49a12afd84462212c5834835f988b3c37441c0493952.lt.png differ
diff --git a/translated_images/banana-training-images.530eb203346d73bc23b8b990fb4609470bf4ff7c942ccc13d4cfffeed9be1ad4.en.png b/translated_images/banana-training-images.530eb203346d73bc23b8b990fb4609470bf4ff7c942ccc13d4cfffeed9be1ad4.en.png
new file mode 100644
index 00000000..e499b2fd
Binary files /dev/null and b/translated_images/banana-training-images.530eb203346d73bc23b8b990fb4609470bf4ff7c942ccc13d4cfffeed9be1ad4.en.png differ
diff --git a/translated_images/banana-training-images.530eb203346d73bc23b8b990fb4609470bf4ff7c942ccc13d4cfffeed9be1ad4.lt.png b/translated_images/banana-training-images.530eb203346d73bc23b8b990fb4609470bf4ff7c942ccc13d4cfffeed9be1ad4.lt.png
new file mode 100644
index 00000000..e499b2fd
Binary files /dev/null and b/translated_images/banana-training-images.530eb203346d73bc23b8b990fb4609470bf4ff7c942ccc13d4cfffeed9be1ad4.lt.png differ
diff --git a/translated_images/banana-unripe-1.910c8606a300fa2014a0e0adb31348effd6e0fdd5760fdfe80b8e69533bac6f7.en.png b/translated_images/banana-unripe-1.910c8606a300fa2014a0e0adb31348effd6e0fdd5760fdfe80b8e69533bac6f7.en.png
new file mode 100644
index 00000000..66e9927a
Binary files /dev/null and b/translated_images/banana-unripe-1.910c8606a300fa2014a0e0adb31348effd6e0fdd5760fdfe80b8e69533bac6f7.en.png differ
diff --git a/translated_images/banana-unripe-1.910c8606a300fa2014a0e0adb31348effd6e0fdd5760fdfe80b8e69533bac6f7.lt.png b/translated_images/banana-unripe-1.910c8606a300fa2014a0e0adb31348effd6e0fdd5760fdfe80b8e69533bac6f7.lt.png
new file mode 100644
index 00000000..66e9927a
Binary files /dev/null and b/translated_images/banana-unripe-1.910c8606a300fa2014a0e0adb31348effd6e0fdd5760fdfe80b8e69533bac6f7.lt.png differ
diff --git a/translated_images/banana-unripe-1.b2c7051d9c8a4e617be0425bea42775d16f896f3a183344e9038da2d1fb81dea.en.png b/translated_images/banana-unripe-1.b2c7051d9c8a4e617be0425bea42775d16f896f3a183344e9038da2d1fb81dea.en.png
new file mode 100644
index 00000000..e512cf63
Binary files /dev/null and b/translated_images/banana-unripe-1.b2c7051d9c8a4e617be0425bea42775d16f896f3a183344e9038da2d1fb81dea.en.png differ
diff --git a/translated_images/banana-unripe-1.b2c7051d9c8a4e617be0425bea42775d16f896f3a183344e9038da2d1fb81dea.lt.png b/translated_images/banana-unripe-1.b2c7051d9c8a4e617be0425bea42775d16f896f3a183344e9038da2d1fb81dea.lt.png
new file mode 100644
index 00000000..e512cf63
Binary files /dev/null and b/translated_images/banana-unripe-1.b2c7051d9c8a4e617be0425bea42775d16f896f3a183344e9038da2d1fb81dea.lt.png differ
diff --git a/translated_images/banana-unripe-10.38dab0db918a24870e655b62e7f3af030eaebe5bcfb7cfebbfb010637b46ba44.en.png b/translated_images/banana-unripe-10.38dab0db918a24870e655b62e7f3af030eaebe5bcfb7cfebbfb010637b46ba44.en.png
new file mode 100644
index 00000000..89e41b8a
Binary files /dev/null and b/translated_images/banana-unripe-10.38dab0db918a24870e655b62e7f3af030eaebe5bcfb7cfebbfb010637b46ba44.en.png differ
diff --git a/translated_images/banana-unripe-10.38dab0db918a24870e655b62e7f3af030eaebe5bcfb7cfebbfb010637b46ba44.lt.png b/translated_images/banana-unripe-10.38dab0db918a24870e655b62e7f3af030eaebe5bcfb7cfebbfb010637b46ba44.lt.png
new file mode 100644
index 00000000..89e41b8a
Binary files /dev/null and b/translated_images/banana-unripe-10.38dab0db918a24870e655b62e7f3af030eaebe5bcfb7cfebbfb010637b46ba44.lt.png differ
diff --git a/translated_images/banana-unripe-11.ec8d0eefe63e10b953579d18d4fdd9d89cedc247749ec1d11fdbe49a43f1bc90.en.png b/translated_images/banana-unripe-11.ec8d0eefe63e10b953579d18d4fdd9d89cedc247749ec1d11fdbe49a43f1bc90.en.png
new file mode 100644
index 00000000..257c3e55
Binary files /dev/null and b/translated_images/banana-unripe-11.ec8d0eefe63e10b953579d18d4fdd9d89cedc247749ec1d11fdbe49a43f1bc90.en.png differ
diff --git a/translated_images/banana-unripe-11.ec8d0eefe63e10b953579d18d4fdd9d89cedc247749ec1d11fdbe49a43f1bc90.lt.png b/translated_images/banana-unripe-11.ec8d0eefe63e10b953579d18d4fdd9d89cedc247749ec1d11fdbe49a43f1bc90.lt.png
new file mode 100644
index 00000000..257c3e55
Binary files /dev/null and b/translated_images/banana-unripe-11.ec8d0eefe63e10b953579d18d4fdd9d89cedc247749ec1d11fdbe49a43f1bc90.lt.png differ
diff --git a/translated_images/banana-unripe-12.b95a088ccae935db01b47786dac829cb356feb5d4dbfcf8d91e000e9ed3be7a2.en.png b/translated_images/banana-unripe-12.b95a088ccae935db01b47786dac829cb356feb5d4dbfcf8d91e000e9ed3be7a2.en.png
new file mode 100644
index 00000000..85a581ed
Binary files /dev/null and b/translated_images/banana-unripe-12.b95a088ccae935db01b47786dac829cb356feb5d4dbfcf8d91e000e9ed3be7a2.en.png differ
diff --git a/translated_images/banana-unripe-12.b95a088ccae935db01b47786dac829cb356feb5d4dbfcf8d91e000e9ed3be7a2.lt.png b/translated_images/banana-unripe-12.b95a088ccae935db01b47786dac829cb356feb5d4dbfcf8d91e000e9ed3be7a2.lt.png
new file mode 100644
index 00000000..85a581ed
Binary files /dev/null and b/translated_images/banana-unripe-12.b95a088ccae935db01b47786dac829cb356feb5d4dbfcf8d91e000e9ed3be7a2.lt.png differ
diff --git a/translated_images/banana-unripe-13.37e5a7cac5aa0920343a6dd17dc720499d9f9b7c990cf4bc002f681216a545b7.en.png b/translated_images/banana-unripe-13.37e5a7cac5aa0920343a6dd17dc720499d9f9b7c990cf4bc002f681216a545b7.en.png
new file mode 100644
index 00000000..c07f67c3
Binary files /dev/null and b/translated_images/banana-unripe-13.37e5a7cac5aa0920343a6dd17dc720499d9f9b7c990cf4bc002f681216a545b7.en.png differ
diff --git a/translated_images/banana-unripe-13.37e5a7cac5aa0920343a6dd17dc720499d9f9b7c990cf4bc002f681216a545b7.lt.png b/translated_images/banana-unripe-13.37e5a7cac5aa0920343a6dd17dc720499d9f9b7c990cf4bc002f681216a545b7.lt.png
new file mode 100644
index 00000000..c07f67c3
Binary files /dev/null and b/translated_images/banana-unripe-13.37e5a7cac5aa0920343a6dd17dc720499d9f9b7c990cf4bc002f681216a545b7.lt.png differ
diff --git a/translated_images/banana-unripe-14.d19ddd6bbf63a2591db0d88a6c81e17d2186dee04b9bb4ff60031009fc0cce0a.en.png b/translated_images/banana-unripe-14.d19ddd6bbf63a2591db0d88a6c81e17d2186dee04b9bb4ff60031009fc0cce0a.en.png
new file mode 100644
index 00000000..c598913b
Binary files /dev/null and b/translated_images/banana-unripe-14.d19ddd6bbf63a2591db0d88a6c81e17d2186dee04b9bb4ff60031009fc0cce0a.en.png differ
diff --git a/translated_images/banana-unripe-14.d19ddd6bbf63a2591db0d88a6c81e17d2186dee04b9bb4ff60031009fc0cce0a.lt.png b/translated_images/banana-unripe-14.d19ddd6bbf63a2591db0d88a6c81e17d2186dee04b9bb4ff60031009fc0cce0a.lt.png
new file mode 100644
index 00000000..c598913b
Binary files /dev/null and b/translated_images/banana-unripe-14.d19ddd6bbf63a2591db0d88a6c81e17d2186dee04b9bb4ff60031009fc0cce0a.lt.png differ
diff --git a/translated_images/banana-unripe-15.274e48544326077a58c0e00e04e98c7abe04bc473caaab64fe3154c551d8a0a8.en.png b/translated_images/banana-unripe-15.274e48544326077a58c0e00e04e98c7abe04bc473caaab64fe3154c551d8a0a8.en.png
new file mode 100644
index 00000000..a630a6f3
Binary files /dev/null and b/translated_images/banana-unripe-15.274e48544326077a58c0e00e04e98c7abe04bc473caaab64fe3154c551d8a0a8.en.png differ
diff --git a/translated_images/banana-unripe-15.274e48544326077a58c0e00e04e98c7abe04bc473caaab64fe3154c551d8a0a8.lt.png b/translated_images/banana-unripe-15.274e48544326077a58c0e00e04e98c7abe04bc473caaab64fe3154c551d8a0a8.lt.png
new file mode 100644
index 00000000..a630a6f3
Binary files /dev/null and b/translated_images/banana-unripe-15.274e48544326077a58c0e00e04e98c7abe04bc473caaab64fe3154c551d8a0a8.lt.png differ
diff --git a/translated_images/banana-unripe-16.bd058f64bd7ec014d10bdeb9da39568aeb5871908b5c2a6376a5f97d3101c273.en.png b/translated_images/banana-unripe-16.bd058f64bd7ec014d10bdeb9da39568aeb5871908b5c2a6376a5f97d3101c273.en.png
new file mode 100644
index 00000000..f63ad48d
Binary files /dev/null and b/translated_images/banana-unripe-16.bd058f64bd7ec014d10bdeb9da39568aeb5871908b5c2a6376a5f97d3101c273.en.png differ
diff --git a/translated_images/banana-unripe-16.bd058f64bd7ec014d10bdeb9da39568aeb5871908b5c2a6376a5f97d3101c273.lt.png b/translated_images/banana-unripe-16.bd058f64bd7ec014d10bdeb9da39568aeb5871908b5c2a6376a5f97d3101c273.lt.png
new file mode 100644
index 00000000..f63ad48d
Binary files /dev/null and b/translated_images/banana-unripe-16.bd058f64bd7ec014d10bdeb9da39568aeb5871908b5c2a6376a5f97d3101c273.lt.png differ
diff --git a/translated_images/banana-unripe-17.408382d679bfa079fbe89e269fbc05a2602d2f980834601380633a5471c72396.en.png b/translated_images/banana-unripe-17.408382d679bfa079fbe89e269fbc05a2602d2f980834601380633a5471c72396.en.png
new file mode 100644
index 00000000..73c0aea6
Binary files /dev/null and b/translated_images/banana-unripe-17.408382d679bfa079fbe89e269fbc05a2602d2f980834601380633a5471c72396.en.png differ
diff --git a/translated_images/banana-unripe-17.408382d679bfa079fbe89e269fbc05a2602d2f980834601380633a5471c72396.lt.png b/translated_images/banana-unripe-17.408382d679bfa079fbe89e269fbc05a2602d2f980834601380633a5471c72396.lt.png
new file mode 100644
index 00000000..73c0aea6
Binary files /dev/null and b/translated_images/banana-unripe-17.408382d679bfa079fbe89e269fbc05a2602d2f980834601380633a5471c72396.lt.png differ
diff --git a/translated_images/banana-unripe-18.39c0eb79d7b3b9baf71858801fb8cb8b01e395289bab8c7091a57a97d1dfa075.en.png b/translated_images/banana-unripe-18.39c0eb79d7b3b9baf71858801fb8cb8b01e395289bab8c7091a57a97d1dfa075.en.png
new file mode 100644
index 00000000..0768efbc
Binary files /dev/null and b/translated_images/banana-unripe-18.39c0eb79d7b3b9baf71858801fb8cb8b01e395289bab8c7091a57a97d1dfa075.en.png differ
diff --git a/translated_images/banana-unripe-18.39c0eb79d7b3b9baf71858801fb8cb8b01e395289bab8c7091a57a97d1dfa075.lt.png b/translated_images/banana-unripe-18.39c0eb79d7b3b9baf71858801fb8cb8b01e395289bab8c7091a57a97d1dfa075.lt.png
new file mode 100644
index 00000000..0768efbc
Binary files /dev/null and b/translated_images/banana-unripe-18.39c0eb79d7b3b9baf71858801fb8cb8b01e395289bab8c7091a57a97d1dfa075.lt.png differ
diff --git a/translated_images/banana-unripe-19.e61e6d7efaf2d8c81a25acbff9c40f018b78c3c240c8e384d54da374eda70f9b.en.png b/translated_images/banana-unripe-19.e61e6d7efaf2d8c81a25acbff9c40f018b78c3c240c8e384d54da374eda70f9b.en.png
new file mode 100644
index 00000000..a6c3afe8
Binary files /dev/null and b/translated_images/banana-unripe-19.e61e6d7efaf2d8c81a25acbff9c40f018b78c3c240c8e384d54da374eda70f9b.en.png differ
diff --git a/translated_images/banana-unripe-19.e61e6d7efaf2d8c81a25acbff9c40f018b78c3c240c8e384d54da374eda70f9b.lt.png b/translated_images/banana-unripe-19.e61e6d7efaf2d8c81a25acbff9c40f018b78c3c240c8e384d54da374eda70f9b.lt.png
new file mode 100644
index 00000000..a6c3afe8
Binary files /dev/null and b/translated_images/banana-unripe-19.e61e6d7efaf2d8c81a25acbff9c40f018b78c3c240c8e384d54da374eda70f9b.lt.png differ
diff --git a/translated_images/banana-unripe-2.43a73b544521afc7efd54de90fd585f314844de67b16509fff2ab80c05eec7bd.en.png b/translated_images/banana-unripe-2.43a73b544521afc7efd54de90fd585f314844de67b16509fff2ab80c05eec7bd.en.png
new file mode 100644
index 00000000..eed10ecb
Binary files /dev/null and b/translated_images/banana-unripe-2.43a73b544521afc7efd54de90fd585f314844de67b16509fff2ab80c05eec7bd.en.png differ
diff --git a/translated_images/banana-unripe-2.43a73b544521afc7efd54de90fd585f314844de67b16509fff2ab80c05eec7bd.lt.png b/translated_images/banana-unripe-2.43a73b544521afc7efd54de90fd585f314844de67b16509fff2ab80c05eec7bd.lt.png
new file mode 100644
index 00000000..eed10ecb
Binary files /dev/null and b/translated_images/banana-unripe-2.43a73b544521afc7efd54de90fd585f314844de67b16509fff2ab80c05eec7bd.lt.png differ
diff --git a/translated_images/banana-unripe-2.9591d1a6aa27deebbaec0955b227bbae20d6bfae43f29d832bd412bbafa45bfd.en.png b/translated_images/banana-unripe-2.9591d1a6aa27deebbaec0955b227bbae20d6bfae43f29d832bd412bbafa45bfd.en.png
new file mode 100644
index 00000000..4c086050
Binary files /dev/null and b/translated_images/banana-unripe-2.9591d1a6aa27deebbaec0955b227bbae20d6bfae43f29d832bd412bbafa45bfd.en.png differ
diff --git a/translated_images/banana-unripe-2.9591d1a6aa27deebbaec0955b227bbae20d6bfae43f29d832bd412bbafa45bfd.lt.png b/translated_images/banana-unripe-2.9591d1a6aa27deebbaec0955b227bbae20d6bfae43f29d832bd412bbafa45bfd.lt.png
new file mode 100644
index 00000000..4c086050
Binary files /dev/null and b/translated_images/banana-unripe-2.9591d1a6aa27deebbaec0955b227bbae20d6bfae43f29d832bd412bbafa45bfd.lt.png differ
diff --git a/translated_images/banana-unripe-20.85b7a74eaab5634e769fe2fec57405201513094c400f71e16d75cd79bde092ab.en.png b/translated_images/banana-unripe-20.85b7a74eaab5634e769fe2fec57405201513094c400f71e16d75cd79bde092ab.en.png
new file mode 100644
index 00000000..9f641588
Binary files /dev/null and b/translated_images/banana-unripe-20.85b7a74eaab5634e769fe2fec57405201513094c400f71e16d75cd79bde092ab.en.png differ
diff --git a/translated_images/banana-unripe-20.85b7a74eaab5634e769fe2fec57405201513094c400f71e16d75cd79bde092ab.lt.png b/translated_images/banana-unripe-20.85b7a74eaab5634e769fe2fec57405201513094c400f71e16d75cd79bde092ab.lt.png
new file mode 100644
index 00000000..9f641588
Binary files /dev/null and b/translated_images/banana-unripe-20.85b7a74eaab5634e769fe2fec57405201513094c400f71e16d75cd79bde092ab.lt.png differ
diff --git a/translated_images/banana-unripe-21.ccc1333439b344bc502fbfa9b60e5e9013a4d57ba539ba87000ccd69dc0675e2.en.png b/translated_images/banana-unripe-21.ccc1333439b344bc502fbfa9b60e5e9013a4d57ba539ba87000ccd69dc0675e2.en.png
new file mode 100644
index 00000000..9404843f
Binary files /dev/null and b/translated_images/banana-unripe-21.ccc1333439b344bc502fbfa9b60e5e9013a4d57ba539ba87000ccd69dc0675e2.en.png differ
diff --git a/translated_images/banana-unripe-21.ccc1333439b344bc502fbfa9b60e5e9013a4d57ba539ba87000ccd69dc0675e2.lt.png b/translated_images/banana-unripe-21.ccc1333439b344bc502fbfa9b60e5e9013a4d57ba539ba87000ccd69dc0675e2.lt.png
new file mode 100644
index 00000000..9404843f
Binary files /dev/null and b/translated_images/banana-unripe-21.ccc1333439b344bc502fbfa9b60e5e9013a4d57ba539ba87000ccd69dc0675e2.lt.png differ
diff --git a/translated_images/banana-unripe-22.27dff4b438163080fcace0af6f24b8c9866b76a15269844e9ed1b722ae2220e7.en.png b/translated_images/banana-unripe-22.27dff4b438163080fcace0af6f24b8c9866b76a15269844e9ed1b722ae2220e7.en.png
new file mode 100644
index 00000000..9636ac68
Binary files /dev/null and b/translated_images/banana-unripe-22.27dff4b438163080fcace0af6f24b8c9866b76a15269844e9ed1b722ae2220e7.en.png differ
diff --git a/translated_images/banana-unripe-22.27dff4b438163080fcace0af6f24b8c9866b76a15269844e9ed1b722ae2220e7.lt.png b/translated_images/banana-unripe-22.27dff4b438163080fcace0af6f24b8c9866b76a15269844e9ed1b722ae2220e7.lt.png
new file mode 100644
index 00000000..9636ac68
Binary files /dev/null and b/translated_images/banana-unripe-22.27dff4b438163080fcace0af6f24b8c9866b76a15269844e9ed1b722ae2220e7.lt.png differ
diff --git a/translated_images/banana-unripe-23.c4c9067f23370e90c5156d7659a0d17590d952e2defd6550aeded84e847c1e4b.en.png b/translated_images/banana-unripe-23.c4c9067f23370e90c5156d7659a0d17590d952e2defd6550aeded84e847c1e4b.en.png
new file mode 100644
index 00000000..38a2b35d
Binary files /dev/null and b/translated_images/banana-unripe-23.c4c9067f23370e90c5156d7659a0d17590d952e2defd6550aeded84e847c1e4b.en.png differ
diff --git a/translated_images/banana-unripe-23.c4c9067f23370e90c5156d7659a0d17590d952e2defd6550aeded84e847c1e4b.lt.png b/translated_images/banana-unripe-23.c4c9067f23370e90c5156d7659a0d17590d952e2defd6550aeded84e847c1e4b.lt.png
new file mode 100644
index 00000000..38a2b35d
Binary files /dev/null and b/translated_images/banana-unripe-23.c4c9067f23370e90c5156d7659a0d17590d952e2defd6550aeded84e847c1e4b.lt.png differ
diff --git a/translated_images/banana-unripe-24.6f0b781c309da62f71147fcc87699967bef10c57a794029ede2eb0d1d88e4b73.en.png b/translated_images/banana-unripe-24.6f0b781c309da62f71147fcc87699967bef10c57a794029ede2eb0d1d88e4b73.en.png
new file mode 100644
index 00000000..cd09e177
Binary files /dev/null and b/translated_images/banana-unripe-24.6f0b781c309da62f71147fcc87699967bef10c57a794029ede2eb0d1d88e4b73.en.png differ
diff --git a/translated_images/banana-unripe-24.6f0b781c309da62f71147fcc87699967bef10c57a794029ede2eb0d1d88e4b73.lt.png b/translated_images/banana-unripe-24.6f0b781c309da62f71147fcc87699967bef10c57a794029ede2eb0d1d88e4b73.lt.png
new file mode 100644
index 00000000..cd09e177
Binary files /dev/null and b/translated_images/banana-unripe-24.6f0b781c309da62f71147fcc87699967bef10c57a794029ede2eb0d1d88e4b73.lt.png differ
diff --git a/translated_images/banana-unripe-25.21d553d84880ac4ff73128909d01c79c4544424d218f740482da46bdae46f74b.en.png b/translated_images/banana-unripe-25.21d553d84880ac4ff73128909d01c79c4544424d218f740482da46bdae46f74b.en.png
new file mode 100644
index 00000000..4cc4f4bc
Binary files /dev/null and b/translated_images/banana-unripe-25.21d553d84880ac4ff73128909d01c79c4544424d218f740482da46bdae46f74b.en.png differ
diff --git a/translated_images/banana-unripe-25.21d553d84880ac4ff73128909d01c79c4544424d218f740482da46bdae46f74b.lt.png b/translated_images/banana-unripe-25.21d553d84880ac4ff73128909d01c79c4544424d218f740482da46bdae46f74b.lt.png
new file mode 100644
index 00000000..4cc4f4bc
Binary files /dev/null and b/translated_images/banana-unripe-25.21d553d84880ac4ff73128909d01c79c4544424d218f740482da46bdae46f74b.lt.png differ
diff --git a/translated_images/banana-unripe-26.823c48b61feb1d5c319e9cf54f5e7c2bb43f91e781bf42d57f386d0dabf3fd12.en.png b/translated_images/banana-unripe-26.823c48b61feb1d5c319e9cf54f5e7c2bb43f91e781bf42d57f386d0dabf3fd12.en.png
new file mode 100644
index 00000000..33e03220
Binary files /dev/null and b/translated_images/banana-unripe-26.823c48b61feb1d5c319e9cf54f5e7c2bb43f91e781bf42d57f386d0dabf3fd12.en.png differ
diff --git a/translated_images/banana-unripe-26.823c48b61feb1d5c319e9cf54f5e7c2bb43f91e781bf42d57f386d0dabf3fd12.lt.png b/translated_images/banana-unripe-26.823c48b61feb1d5c319e9cf54f5e7c2bb43f91e781bf42d57f386d0dabf3fd12.lt.png
new file mode 100644
index 00000000..33e03220
Binary files /dev/null and b/translated_images/banana-unripe-26.823c48b61feb1d5c319e9cf54f5e7c2bb43f91e781bf42d57f386d0dabf3fd12.lt.png differ
diff --git a/translated_images/banana-unripe-27.f98fd272deeb02d9b6771340fe6da2de82db652ade770d9eca14ba6be2d0ad17.en.png b/translated_images/banana-unripe-27.f98fd272deeb02d9b6771340fe6da2de82db652ade770d9eca14ba6be2d0ad17.en.png
new file mode 100644
index 00000000..489d49e3
Binary files /dev/null and b/translated_images/banana-unripe-27.f98fd272deeb02d9b6771340fe6da2de82db652ade770d9eca14ba6be2d0ad17.en.png differ
diff --git a/translated_images/banana-unripe-27.f98fd272deeb02d9b6771340fe6da2de82db652ade770d9eca14ba6be2d0ad17.lt.png b/translated_images/banana-unripe-27.f98fd272deeb02d9b6771340fe6da2de82db652ade770d9eca14ba6be2d0ad17.lt.png
new file mode 100644
index 00000000..489d49e3
Binary files /dev/null and b/translated_images/banana-unripe-27.f98fd272deeb02d9b6771340fe6da2de82db652ade770d9eca14ba6be2d0ad17.lt.png differ
diff --git a/translated_images/banana-unripe-28.5331ba409ce41c07caa09d72d6ad7375b5a5b3d7609fcabdaa82d9799439fd21.en.png b/translated_images/banana-unripe-28.5331ba409ce41c07caa09d72d6ad7375b5a5b3d7609fcabdaa82d9799439fd21.en.png
new file mode 100644
index 00000000..80b39b63
Binary files /dev/null and b/translated_images/banana-unripe-28.5331ba409ce41c07caa09d72d6ad7375b5a5b3d7609fcabdaa82d9799439fd21.en.png differ
diff --git a/translated_images/banana-unripe-28.5331ba409ce41c07caa09d72d6ad7375b5a5b3d7609fcabdaa82d9799439fd21.lt.png b/translated_images/banana-unripe-28.5331ba409ce41c07caa09d72d6ad7375b5a5b3d7609fcabdaa82d9799439fd21.lt.png
new file mode 100644
index 00000000..80b39b63
Binary files /dev/null and b/translated_images/banana-unripe-28.5331ba409ce41c07caa09d72d6ad7375b5a5b3d7609fcabdaa82d9799439fd21.lt.png differ
diff --git a/translated_images/banana-unripe-29.84e126f389bf627ed464abdf8127f3a58e8b0131b5b1b9ee038de51703c31657.en.png b/translated_images/banana-unripe-29.84e126f389bf627ed464abdf8127f3a58e8b0131b5b1b9ee038de51703c31657.en.png
new file mode 100644
index 00000000..2404a4ce
Binary files /dev/null and b/translated_images/banana-unripe-29.84e126f389bf627ed464abdf8127f3a58e8b0131b5b1b9ee038de51703c31657.en.png differ
diff --git a/translated_images/banana-unripe-29.84e126f389bf627ed464abdf8127f3a58e8b0131b5b1b9ee038de51703c31657.lt.png b/translated_images/banana-unripe-29.84e126f389bf627ed464abdf8127f3a58e8b0131b5b1b9ee038de51703c31657.lt.png
new file mode 100644
index 00000000..2404a4ce
Binary files /dev/null and b/translated_images/banana-unripe-29.84e126f389bf627ed464abdf8127f3a58e8b0131b5b1b9ee038de51703c31657.lt.png differ
diff --git a/translated_images/banana-unripe-3.896df8fb2c3b8f51f71b212645fc5314b591a033938208000839642858ddcabd.en.png b/translated_images/banana-unripe-3.896df8fb2c3b8f51f71b212645fc5314b591a033938208000839642858ddcabd.en.png
new file mode 100644
index 00000000..f884cc81
Binary files /dev/null and b/translated_images/banana-unripe-3.896df8fb2c3b8f51f71b212645fc5314b591a033938208000839642858ddcabd.en.png differ
diff --git a/translated_images/banana-unripe-3.896df8fb2c3b8f51f71b212645fc5314b591a033938208000839642858ddcabd.lt.png b/translated_images/banana-unripe-3.896df8fb2c3b8f51f71b212645fc5314b591a033938208000839642858ddcabd.lt.png
new file mode 100644
index 00000000..f884cc81
Binary files /dev/null and b/translated_images/banana-unripe-3.896df8fb2c3b8f51f71b212645fc5314b591a033938208000839642858ddcabd.lt.png differ
diff --git a/translated_images/banana-unripe-4.483e740d6fd7b5a671cb49ad1b0f2c35f1637f86ccb9746bb4cc3b59ab752bf7.en.png b/translated_images/banana-unripe-4.483e740d6fd7b5a671cb49ad1b0f2c35f1637f86ccb9746bb4cc3b59ab752bf7.en.png
new file mode 100644
index 00000000..9f649bd1
Binary files /dev/null and b/translated_images/banana-unripe-4.483e740d6fd7b5a671cb49ad1b0f2c35f1637f86ccb9746bb4cc3b59ab752bf7.en.png differ
diff --git a/translated_images/banana-unripe-4.483e740d6fd7b5a671cb49ad1b0f2c35f1637f86ccb9746bb4cc3b59ab752bf7.lt.png b/translated_images/banana-unripe-4.483e740d6fd7b5a671cb49ad1b0f2c35f1637f86ccb9746bb4cc3b59ab752bf7.lt.png
new file mode 100644
index 00000000..9f649bd1
Binary files /dev/null and b/translated_images/banana-unripe-4.483e740d6fd7b5a671cb49ad1b0f2c35f1637f86ccb9746bb4cc3b59ab752bf7.lt.png differ
diff --git a/translated_images/banana-unripe-5.e9923cf1ffcfc1c93e8c2aeb184bd071566742b738b671ab9cedcd5708239a58.en.png b/translated_images/banana-unripe-5.e9923cf1ffcfc1c93e8c2aeb184bd071566742b738b671ab9cedcd5708239a58.en.png
new file mode 100644
index 00000000..03e1fa8c
Binary files /dev/null and b/translated_images/banana-unripe-5.e9923cf1ffcfc1c93e8c2aeb184bd071566742b738b671ab9cedcd5708239a58.en.png differ
diff --git a/translated_images/banana-unripe-5.e9923cf1ffcfc1c93e8c2aeb184bd071566742b738b671ab9cedcd5708239a58.lt.png b/translated_images/banana-unripe-5.e9923cf1ffcfc1c93e8c2aeb184bd071566742b738b671ab9cedcd5708239a58.lt.png
new file mode 100644
index 00000000..03e1fa8c
Binary files /dev/null and b/translated_images/banana-unripe-5.e9923cf1ffcfc1c93e8c2aeb184bd071566742b738b671ab9cedcd5708239a58.lt.png differ
diff --git a/translated_images/banana-unripe-6.e3a73307558caecc9aac5ae80bbe37ca38f105e2bd7311afab61ee1014fc6c0e.en.png b/translated_images/banana-unripe-6.e3a73307558caecc9aac5ae80bbe37ca38f105e2bd7311afab61ee1014fc6c0e.en.png
new file mode 100644
index 00000000..983f836f
Binary files /dev/null and b/translated_images/banana-unripe-6.e3a73307558caecc9aac5ae80bbe37ca38f105e2bd7311afab61ee1014fc6c0e.en.png differ
diff --git a/translated_images/banana-unripe-6.e3a73307558caecc9aac5ae80bbe37ca38f105e2bd7311afab61ee1014fc6c0e.lt.png b/translated_images/banana-unripe-6.e3a73307558caecc9aac5ae80bbe37ca38f105e2bd7311afab61ee1014fc6c0e.lt.png
new file mode 100644
index 00000000..983f836f
Binary files /dev/null and b/translated_images/banana-unripe-6.e3a73307558caecc9aac5ae80bbe37ca38f105e2bd7311afab61ee1014fc6c0e.lt.png differ
diff --git a/translated_images/banana-unripe-7.634ca89acc17d68f8423b1a13f1bec6bdbd5135f0149c6cfaa53d7b7d5fa1c65.en.png b/translated_images/banana-unripe-7.634ca89acc17d68f8423b1a13f1bec6bdbd5135f0149c6cfaa53d7b7d5fa1c65.en.png
new file mode 100644
index 00000000..2aede939
Binary files /dev/null and b/translated_images/banana-unripe-7.634ca89acc17d68f8423b1a13f1bec6bdbd5135f0149c6cfaa53d7b7d5fa1c65.en.png differ
diff --git a/translated_images/banana-unripe-7.634ca89acc17d68f8423b1a13f1bec6bdbd5135f0149c6cfaa53d7b7d5fa1c65.lt.png b/translated_images/banana-unripe-7.634ca89acc17d68f8423b1a13f1bec6bdbd5135f0149c6cfaa53d7b7d5fa1c65.lt.png
new file mode 100644
index 00000000..2aede939
Binary files /dev/null and b/translated_images/banana-unripe-7.634ca89acc17d68f8423b1a13f1bec6bdbd5135f0149c6cfaa53d7b7d5fa1c65.lt.png differ
diff --git a/translated_images/banana-unripe-8.75720b4cdebac8c36964c86e051ea962ab02e530abec3f577bd77fdbc34d7f9d.en.png b/translated_images/banana-unripe-8.75720b4cdebac8c36964c86e051ea962ab02e530abec3f577bd77fdbc34d7f9d.en.png
new file mode 100644
index 00000000..7bc7bab2
Binary files /dev/null and b/translated_images/banana-unripe-8.75720b4cdebac8c36964c86e051ea962ab02e530abec3f577bd77fdbc34d7f9d.en.png differ
diff --git a/translated_images/banana-unripe-8.75720b4cdebac8c36964c86e051ea962ab02e530abec3f577bd77fdbc34d7f9d.lt.png b/translated_images/banana-unripe-8.75720b4cdebac8c36964c86e051ea962ab02e530abec3f577bd77fdbc34d7f9d.lt.png
new file mode 100644
index 00000000..7bc7bab2
Binary files /dev/null and b/translated_images/banana-unripe-8.75720b4cdebac8c36964c86e051ea962ab02e530abec3f577bd77fdbc34d7f9d.lt.png differ
diff --git a/translated_images/banana-unripe-9.e8076983351d2f54cfb246bc01090e7016b63fb8d81396822cbe5366c1b88b7f.en.png b/translated_images/banana-unripe-9.e8076983351d2f54cfb246bc01090e7016b63fb8d81396822cbe5366c1b88b7f.en.png
new file mode 100644
index 00000000..4ffd862a
Binary files /dev/null and b/translated_images/banana-unripe-9.e8076983351d2f54cfb246bc01090e7016b63fb8d81396822cbe5366c1b88b7f.en.png differ
diff --git a/translated_images/banana-unripe-9.e8076983351d2f54cfb246bc01090e7016b63fb8d81396822cbe5366c1b88b7f.lt.png b/translated_images/banana-unripe-9.e8076983351d2f54cfb246bc01090e7016b63fb8d81396822cbe5366c1b88b7f.lt.png
new file mode 100644
index 00000000..4ffd862a
Binary files /dev/null and b/translated_images/banana-unripe-9.e8076983351d2f54cfb246bc01090e7016b63fb8d81396822cbe5366c1b88b7f.lt.png differ
diff --git a/translated_images/banana-unripe-quick-test-prediction.dae9b5e1c4ef7c64886422438850ea14f0be6ac918c217ea3b255c685abfabe7.en.png b/translated_images/banana-unripe-quick-test-prediction.dae9b5e1c4ef7c64886422438850ea14f0be6ac918c217ea3b255c685abfabe7.en.png
new file mode 100644
index 00000000..ef506579
Binary files /dev/null and b/translated_images/banana-unripe-quick-test-prediction.dae9b5e1c4ef7c64886422438850ea14f0be6ac918c217ea3b255c685abfabe7.en.png differ
diff --git a/translated_images/banana-unripe-quick-test-prediction.dae9b5e1c4ef7c64886422438850ea14f0be6ac918c217ea3b255c685abfabe7.lt.png b/translated_images/banana-unripe-quick-test-prediction.dae9b5e1c4ef7c64886422438850ea14f0be6ac918c217ea3b255c685abfabe7.lt.png
new file mode 100644
index 00000000..ef506579
Binary files /dev/null and b/translated_images/banana-unripe-quick-test-prediction.dae9b5e1c4ef7c64886422438850ea14f0be6ac918c217ea3b255c685abfabe7.lt.png differ
diff --git a/translated_images/bananas-ripe-vs-unripe-predictions.8d0e2034014aa50ece4e4589e724b142da0681f35470fe3db3f7d51240f69c85.en.png b/translated_images/bananas-ripe-vs-unripe-predictions.8d0e2034014aa50ece4e4589e724b142da0681f35470fe3db3f7d51240f69c85.en.png
new file mode 100644
index 00000000..ddf79213
Binary files /dev/null and b/translated_images/bananas-ripe-vs-unripe-predictions.8d0e2034014aa50ece4e4589e724b142da0681f35470fe3db3f7d51240f69c85.en.png differ
diff --git a/translated_images/bananas-ripe-vs-unripe-predictions.8d0e2034014aa50ece4e4589e724b142da0681f35470fe3db3f7d51240f69c85.lt.png b/translated_images/bananas-ripe-vs-unripe-predictions.8d0e2034014aa50ece4e4589e724b142da0681f35470fe3db3f7d51240f69c85.lt.png
new file mode 100644
index 00000000..ddf79213
Binary files /dev/null and b/translated_images/bananas-ripe-vs-unripe-predictions.8d0e2034014aa50ece4e4589e724b142da0681f35470fe3db3f7d51240f69c85.lt.png differ
diff --git a/translated_images/basic-thermostat.a923217fd1f37e5a6f3390396a65c22a387419ea2dd17e518ec24315ba6ae9a8.en.png b/translated_images/basic-thermostat.a923217fd1f37e5a6f3390396a65c22a387419ea2dd17e518ec24315ba6ae9a8.en.png
new file mode 100644
index 00000000..1796bcce
Binary files /dev/null and b/translated_images/basic-thermostat.a923217fd1f37e5a6f3390396a65c22a387419ea2dd17e518ec24315ba6ae9a8.en.png differ
diff --git a/translated_images/basic-thermostat.a923217fd1f37e5a6f3390396a65c22a387419ea2dd17e518ec24315ba6ae9a8.lt.png b/translated_images/basic-thermostat.a923217fd1f37e5a6f3390396a65c22a387419ea2dd17e518ec24315ba6ae9a8.lt.png
new file mode 100644
index 00000000..1796bcce
Binary files /dev/null and b/translated_images/basic-thermostat.a923217fd1f37e5a6f3390396a65c22a387419ea2dd17e518ec24315ba6ae9a8.lt.png differ
diff --git a/translated_images/bing-translate.348aa796d6efe2a92f41ea74a5cf42bb4c63d6faaa08e7f46924e072a35daa48.en.png b/translated_images/bing-translate.348aa796d6efe2a92f41ea74a5cf42bb4c63d6faaa08e7f46924e072a35daa48.en.png
new file mode 100644
index 00000000..ab763666
Binary files /dev/null and b/translated_images/bing-translate.348aa796d6efe2a92f41ea74a5cf42bb4c63d6faaa08e7f46924e072a35daa48.en.png differ
diff --git a/translated_images/bing-translate.348aa796d6efe2a92f41ea74a5cf42bb4c63d6faaa08e7f46924e072a35daa48.lt.png b/translated_images/bing-translate.348aa796d6efe2a92f41ea74a5cf42bb4c63d6faaa08e7f46924e072a35daa48.lt.png
new file mode 100644
index 00000000..ab763666
Binary files /dev/null and b/translated_images/bing-translate.348aa796d6efe2a92f41ea74a5cf42bb4c63d6faaa08e7f46924e072a35daa48.lt.png differ
diff --git a/translated_images/bounding-box.1420a7ea0d3d15f71e1ffb5cf4b2271d184fac051f990abc541975168d163684.en.png b/translated_images/bounding-box.1420a7ea0d3d15f71e1ffb5cf4b2271d184fac051f990abc541975168d163684.en.png
new file mode 100644
index 00000000..013f247d
Binary files /dev/null and b/translated_images/bounding-box.1420a7ea0d3d15f71e1ffb5cf4b2271d184fac051f990abc541975168d163684.en.png differ
diff --git a/translated_images/bounding-box.1420a7ea0d3d15f71e1ffb5cf4b2271d184fac051f990abc541975168d163684.lt.png b/translated_images/bounding-box.1420a7ea0d3d15f71e1ffb5cf4b2271d184fac051f990abc541975168d163684.lt.png
new file mode 100644
index 00000000..013f247d
Binary files /dev/null and b/translated_images/bounding-box.1420a7ea0d3d15f71e1ffb5cf4b2271d184fac051f990abc541975168d163684.lt.png differ
diff --git a/translated_images/bricked-car.dc38f8efadc6c59d76211f981a521efb300939283dee468f79503aae3ec67615.en.png b/translated_images/bricked-car.dc38f8efadc6c59d76211f981a521efb300939283dee468f79503aae3ec67615.en.png
new file mode 100644
index 00000000..fd1b7753
Binary files /dev/null and b/translated_images/bricked-car.dc38f8efadc6c59d76211f981a521efb300939283dee468f79503aae3ec67615.en.png differ
diff --git a/translated_images/bricked-car.dc38f8efadc6c59d76211f981a521efb300939283dee468f79503aae3ec67615.lt.png b/translated_images/bricked-car.dc38f8efadc6c59d76211f981a521efb300939283dee468f79503aae3ec67615.lt.png
new file mode 100644
index 00000000..fd1b7753
Binary files /dev/null and b/translated_images/bricked-car.dc38f8efadc6c59d76211f981a521efb300939283dee468f79503aae3ec67615.lt.png differ
diff --git a/translated_images/button-with-digital.3749edea8eb885af0303f7ea29e2389d704661c0ca3225b08ff0cbc22f332059.en.png b/translated_images/button-with-digital.3749edea8eb885af0303f7ea29e2389d704661c0ca3225b08ff0cbc22f332059.en.png
new file mode 100644
index 00000000..55154b84
Binary files /dev/null and b/translated_images/button-with-digital.3749edea8eb885af0303f7ea29e2389d704661c0ca3225b08ff0cbc22f332059.en.png differ
diff --git a/translated_images/button-with-digital.3749edea8eb885af0303f7ea29e2389d704661c0ca3225b08ff0cbc22f332059.lt.png b/translated_images/button-with-digital.3749edea8eb885af0303f7ea29e2389d704661c0ca3225b08ff0cbc22f332059.lt.png
new file mode 100644
index 00000000..55154b84
Binary files /dev/null and b/translated_images/button-with-digital.3749edea8eb885af0303f7ea29e2389d704661c0ca3225b08ff0cbc22f332059.lt.png differ
diff --git a/translated_images/button.eadb560b77ac45e56f523d9d8876e40444f63b419e33eb820082d461fa79490b.en.png b/translated_images/button.eadb560b77ac45e56f523d9d8876e40444f63b419e33eb820082d461fa79490b.en.png
new file mode 100644
index 00000000..306d6f14
Binary files /dev/null and b/translated_images/button.eadb560b77ac45e56f523d9d8876e40444f63b419e33eb820082d461fa79490b.en.png differ
diff --git a/translated_images/button.eadb560b77ac45e56f523d9d8876e40444f63b419e33eb820082d461fa79490b.lt.png b/translated_images/button.eadb560b77ac45e56f523d9d8876e40444f63b419e33eb820082d461fa79490b.lt.png
new file mode 100644
index 00000000..306d6f14
Binary files /dev/null and b/translated_images/button.eadb560b77ac45e56f523d9d8876e40444f63b419e33eb820082d461fa79490b.lt.png differ
diff --git a/translated_images/chart-soil-moisture-relay.fbb391236d34a64d0abf1df396e9197e0a24df14150620b9cc820a64a55c9326.en.png b/translated_images/chart-soil-moisture-relay.fbb391236d34a64d0abf1df396e9197e0a24df14150620b9cc820a64a55c9326.en.png
new file mode 100644
index 00000000..dfb03646
Binary files /dev/null and b/translated_images/chart-soil-moisture-relay.fbb391236d34a64d0abf1df396e9197e0a24df14150620b9cc820a64a55c9326.en.png differ
diff --git a/translated_images/chart-soil-moisture-relay.fbb391236d34a64d0abf1df396e9197e0a24df14150620b9cc820a64a55c9326.lt.png b/translated_images/chart-soil-moisture-relay.fbb391236d34a64d0abf1df396e9197e0a24df14150620b9cc820a64a55c9326.lt.png
new file mode 100644
index 00000000..dfb03646
Binary files /dev/null and b/translated_images/chart-soil-moisture-relay.fbb391236d34a64d0abf1df396e9197e0a24df14150620b9cc820a64a55c9326.lt.png differ
diff --git a/translated_images/chart-soil-moisture.fd6d9d0cdc0b5f75e78038ecb8945dfc84b38851359de99d84b16e3336d6d7c2.en.png b/translated_images/chart-soil-moisture.fd6d9d0cdc0b5f75e78038ecb8945dfc84b38851359de99d84b16e3336d6d7c2.en.png
new file mode 100644
index 00000000..05208120
Binary files /dev/null and b/translated_images/chart-soil-moisture.fd6d9d0cdc0b5f75e78038ecb8945dfc84b38851359de99d84b16e3336d6d7c2.en.png differ
diff --git a/translated_images/chart-soil-moisture.fd6d9d0cdc0b5f75e78038ecb8945dfc84b38851359de99d84b16e3336d6d7c2.lt.png b/translated_images/chart-soil-moisture.fd6d9d0cdc0b5f75e78038ecb8945dfc84b38851359de99d84b16e3336d6d7c2.lt.png
new file mode 100644
index 00000000..05208120
Binary files /dev/null and b/translated_images/chart-soil-moisture.fd6d9d0cdc0b5f75e78038ecb8945dfc84b38851359de99d84b16e3336d6d7c2.lt.png differ
diff --git a/translated_images/child-watering-garden.9a5d3f1bfe6d0d8d488291e8189899b2c59f82abaa487f18d404217a25e671e7.en.jpg b/translated_images/child-watering-garden.9a5d3f1bfe6d0d8d488291e8189899b2c59f82abaa487f18d404217a25e671e7.en.jpg
new file mode 100644
index 00000000..e78b8c6c
Binary files /dev/null and b/translated_images/child-watering-garden.9a5d3f1bfe6d0d8d488291e8189899b2c59f82abaa487f18d404217a25e671e7.en.jpg differ
diff --git a/translated_images/child-watering-garden.9a5d3f1bfe6d0d8d488291e8189899b2c59f82abaa487f18d404217a25e671e7.lt.jpg b/translated_images/child-watering-garden.9a5d3f1bfe6d0d8d488291e8189899b2c59f82abaa487f18d404217a25e671e7.lt.jpg
new file mode 100644
index 00000000..e78b8c6c
Binary files /dev/null and b/translated_images/child-watering-garden.9a5d3f1bfe6d0d8d488291e8189899b2c59f82abaa487f18d404217a25e671e7.lt.jpg differ
diff --git a/translated_images/cloud-with-edge.1e26462c62c126fe150bd15a5714ddf0be599f09bacbad08b85be02b76ea1ae1.en.png b/translated_images/cloud-with-edge.1e26462c62c126fe150bd15a5714ddf0be599f09bacbad08b85be02b76ea1ae1.en.png
new file mode 100644
index 00000000..0b221a3f
Binary files /dev/null and b/translated_images/cloud-with-edge.1e26462c62c126fe150bd15a5714ddf0be599f09bacbad08b85be02b76ea1ae1.en.png differ
diff --git a/translated_images/cloud-with-edge.1e26462c62c126fe150bd15a5714ddf0be599f09bacbad08b85be02b76ea1ae1.lt.png b/translated_images/cloud-with-edge.1e26462c62c126fe150bd15a5714ddf0be599f09bacbad08b85be02b76ea1ae1.lt.png
new file mode 100644
index 00000000..0b221a3f
Binary files /dev/null and b/translated_images/cloud-with-edge.1e26462c62c126fe150bd15a5714ddf0be599f09bacbad08b85be02b76ea1ae1.lt.png differ
diff --git a/translated_images/cloud-without-edge.b4da641f6022c95ed6b91fde8b5323abd2f94e0d52073ad54172ae8f5dac90e9.en.png b/translated_images/cloud-without-edge.b4da641f6022c95ed6b91fde8b5323abd2f94e0d52073ad54172ae8f5dac90e9.en.png
new file mode 100644
index 00000000..576d3f84
Binary files /dev/null and b/translated_images/cloud-without-edge.b4da641f6022c95ed6b91fde8b5323abd2f94e0d52073ad54172ae8f5dac90e9.en.png differ
diff --git a/translated_images/cloud-without-edge.b4da641f6022c95ed6b91fde8b5323abd2f94e0d52073ad54172ae8f5dac90e9.lt.png b/translated_images/cloud-without-edge.b4da641f6022c95ed6b91fde8b5323abd2f94e0d52073ad54172ae8f5dac90e9.lt.png
new file mode 100644
index 00000000..576d3f84
Binary files /dev/null and b/translated_images/cloud-without-edge.b4da641f6022c95ed6b91fde8b5323abd2f94e0d52073ad54172ae8f5dac90e9.lt.png differ
diff --git a/translated_images/cmos-sensor.75f9cd74decb137149a4c9ea825251a4549497d67c0ae2776159e6102bb53aa9.en.png b/translated_images/cmos-sensor.75f9cd74decb137149a4c9ea825251a4549497d67c0ae2776159e6102bb53aa9.en.png
new file mode 100644
index 00000000..297ccc5e
Binary files /dev/null and b/translated_images/cmos-sensor.75f9cd74decb137149a4c9ea825251a4549497d67c0ae2776159e6102bb53aa9.en.png differ
diff --git a/translated_images/cmos-sensor.75f9cd74decb137149a4c9ea825251a4549497d67c0ae2776159e6102bb53aa9.lt.png b/translated_images/cmos-sensor.75f9cd74decb137149a4c9ea825251a4549497d67c0ae2776159e6102bb53aa9.lt.png
new file mode 100644
index 00000000..297ccc5e
Binary files /dev/null and b/translated_images/cmos-sensor.75f9cd74decb137149a4c9ea825251a4549497d67c0ae2776159e6102bb53aa9.lt.png differ
diff --git a/translated_images/commands.d6c06bbbb3a02cce95f2831a1c331daf6dedd4e470c4aa2b0ae54f332016e504.en.png b/translated_images/commands.d6c06bbbb3a02cce95f2831a1c331daf6dedd4e470c4aa2b0ae54f332016e504.en.png
new file mode 100644
index 00000000..89bd1ba6
Binary files /dev/null and b/translated_images/commands.d6c06bbbb3a02cce95f2831a1c331daf6dedd4e470c4aa2b0ae54f332016e504.en.png differ
diff --git a/translated_images/commands.d6c06bbbb3a02cce95f2831a1c331daf6dedd4e470c4aa2b0ae54f332016e504.lt.png b/translated_images/commands.d6c06bbbb3a02cce95f2831a1c331daf6dedd4e470c4aa2b0ae54f332016e504.lt.png
new file mode 100644
index 00000000..89bd1ba6
Binary files /dev/null and b/translated_images/commands.d6c06bbbb3a02cce95f2831a1c331daf6dedd4e470c4aa2b0ae54f332016e504.lt.png differ
diff --git a/translated_images/condenser-mic.6f6ed5b76ca19e0ec3fd0c544601542d4479a6cb7565db336de49fbbf69f623e.en.jpg b/translated_images/condenser-mic.6f6ed5b76ca19e0ec3fd0c544601542d4479a6cb7565db336de49fbbf69f623e.en.jpg
new file mode 100644
index 00000000..383794f2
Binary files /dev/null and b/translated_images/condenser-mic.6f6ed5b76ca19e0ec3fd0c544601542d4479a6cb7565db336de49fbbf69f623e.en.jpg differ
diff --git a/translated_images/condenser-mic.6f6ed5b76ca19e0ec3fd0c544601542d4479a6cb7565db336de49fbbf69f623e.lt.jpg b/translated_images/condenser-mic.6f6ed5b76ca19e0ec3fd0c544601542d4479a6cb7565db336de49fbbf69f623e.lt.jpg
new file mode 100644
index 00000000..383794f2
Binary files /dev/null and b/translated_images/condenser-mic.6f6ed5b76ca19e0ec3fd0c544601542d4479a6cb7565db336de49fbbf69f623e.lt.jpg differ
diff --git a/translated_images/consumer-groups.a3262e26fc27ba2092863678ad57af15c7223416e388a23f330c058cf4358630.en.png b/translated_images/consumer-groups.a3262e26fc27ba2092863678ad57af15c7223416e388a23f330c058cf4358630.en.png
new file mode 100644
index 00000000..f28538e1
Binary files /dev/null and b/translated_images/consumer-groups.a3262e26fc27ba2092863678ad57af15c7223416e388a23f330c058cf4358630.en.png differ
diff --git a/translated_images/consumer-groups.a3262e26fc27ba2092863678ad57af15c7223416e388a23f330c058cf4358630.lt.png b/translated_images/consumer-groups.a3262e26fc27ba2092863678ad57af15c7223416e388a23f330c058cf4358630.lt.png
new file mode 100644
index 00000000..f28538e1
Binary files /dev/null and b/translated_images/consumer-groups.a3262e26fc27ba2092863678ad57af15c7223416e388a23f330c058cf4358630.lt.png differ
diff --git a/translated_images/container-edge-flow.c246050dd60ceefdb6ace026a4ce5c6aa4112bb5898ae23fbb2ab4be29ae3e1b.en.png b/translated_images/container-edge-flow.c246050dd60ceefdb6ace026a4ce5c6aa4112bb5898ae23fbb2ab4be29ae3e1b.en.png
new file mode 100644
index 00000000..39431760
Binary files /dev/null and b/translated_images/container-edge-flow.c246050dd60ceefdb6ace026a4ce5c6aa4112bb5898ae23fbb2ab4be29ae3e1b.en.png differ
diff --git a/translated_images/container-edge-flow.c246050dd60ceefdb6ace026a4ce5c6aa4112bb5898ae23fbb2ab4be29ae3e1b.lt.png b/translated_images/container-edge-flow.c246050dd60ceefdb6ace026a4ce5c6aa4112bb5898ae23fbb2ab4be29ae3e1b.lt.png
new file mode 100644
index 00000000..39431760
Binary files /dev/null and b/translated_images/container-edge-flow.c246050dd60ceefdb6ace026a4ce5c6aa4112bb5898ae23fbb2ab4be29ae3e1b.lt.png differ
diff --git a/translated_images/container-web-browser.4ee81dd4f0d8838ce622b2a0d600b6a4322b5d4fe43159facd87b7b34f84d66a.en.png b/translated_images/container-web-browser.4ee81dd4f0d8838ce622b2a0d600b6a4322b5d4fe43159facd87b7b34f84d66a.en.png
new file mode 100644
index 00000000..46a26d45
Binary files /dev/null and b/translated_images/container-web-browser.4ee81dd4f0d8838ce622b2a0d600b6a4322b5d4fe43159facd87b7b34f84d66a.en.png differ
diff --git a/translated_images/container-web-browser.4ee81dd4f0d8838ce622b2a0d600b6a4322b5d4fe43159facd87b7b34f84d66a.lt.png b/translated_images/container-web-browser.4ee81dd4f0d8838ce622b2a0d600b6a4322b5d4fe43159facd87b7b34f84d66a.lt.png
new file mode 100644
index 00000000..46a26d45
Binary files /dev/null and b/translated_images/container-web-browser.4ee81dd4f0d8838ce622b2a0d600b6a4322b5d4fe43159facd87b7b34f84d66a.lt.png differ
diff --git a/translated_images/counterfit-camera-options.eb3bd5150a8e7dffbf24bc5bcaba0cf2cdef95fbe6bbe393695d173817d6b8df.en.png b/translated_images/counterfit-camera-options.eb3bd5150a8e7dffbf24bc5bcaba0cf2cdef95fbe6bbe393695d173817d6b8df.en.png
new file mode 100644
index 00000000..6f70239b
Binary files /dev/null and b/translated_images/counterfit-camera-options.eb3bd5150a8e7dffbf24bc5bcaba0cf2cdef95fbe6bbe393695d173817d6b8df.en.png differ
diff --git a/translated_images/counterfit-camera-options.eb3bd5150a8e7dffbf24bc5bcaba0cf2cdef95fbe6bbe393695d173817d6b8df.lt.png b/translated_images/counterfit-camera-options.eb3bd5150a8e7dffbf24bc5bcaba0cf2cdef95fbe6bbe393695d173817d6b8df.lt.png
new file mode 100644
index 00000000..6f70239b
Binary files /dev/null and b/translated_images/counterfit-camera-options.eb3bd5150a8e7dffbf24bc5bcaba0cf2cdef95fbe6bbe393695d173817d6b8df.lt.png differ
diff --git a/translated_images/counterfit-camera.001ec52194c8ee5d3f617173da2c79e1df903d10882adc625cbfc493525125d4.en.png b/translated_images/counterfit-camera.001ec52194c8ee5d3f617173da2c79e1df903d10882adc625cbfc493525125d4.en.png
new file mode 100644
index 00000000..c5cd51da
Binary files /dev/null and b/translated_images/counterfit-camera.001ec52194c8ee5d3f617173da2c79e1df903d10882adc625cbfc493525125d4.en.png differ
diff --git a/translated_images/counterfit-camera.001ec52194c8ee5d3f617173da2c79e1df903d10882adc625cbfc493525125d4.lt.png b/translated_images/counterfit-camera.001ec52194c8ee5d3f617173da2c79e1df903d10882adc625cbfc493525125d4.lt.png
new file mode 100644
index 00000000..c5cd51da
Binary files /dev/null and b/translated_images/counterfit-camera.001ec52194c8ee5d3f617173da2c79e1df903d10882adc625cbfc493525125d4.lt.png differ
diff --git a/translated_images/counterfit-connected.ed30b46d8f79b0921f3fc70be10366e596a89dca3f80c2224a9d9fc98fccf884.en.png b/translated_images/counterfit-connected.ed30b46d8f79b0921f3fc70be10366e596a89dca3f80c2224a9d9fc98fccf884.en.png
new file mode 100644
index 00000000..0328b3ea
Binary files /dev/null and b/translated_images/counterfit-connected.ed30b46d8f79b0921f3fc70be10366e596a89dca3f80c2224a9d9fc98fccf884.en.png differ
diff --git a/translated_images/counterfit-connected.ed30b46d8f79b0921f3fc70be10366e596a89dca3f80c2224a9d9fc98fccf884.lt.png b/translated_images/counterfit-connected.ed30b46d8f79b0921f3fc70be10366e596a89dca3f80c2224a9d9fc98fccf884.lt.png
new file mode 100644
index 00000000..0328b3ea
Binary files /dev/null and b/translated_images/counterfit-connected.ed30b46d8f79b0921f3fc70be10366e596a89dca3f80c2224a9d9fc98fccf884.lt.png differ
diff --git a/translated_images/counterfit-create-camera.a5de97f59c0bd3cbe0416d7e89a3cfe86d19fbae05c641c53a91286412af0a34.en.png b/translated_images/counterfit-create-camera.a5de97f59c0bd3cbe0416d7e89a3cfe86d19fbae05c641c53a91286412af0a34.en.png
new file mode 100644
index 00000000..b3d0d223
Binary files /dev/null and b/translated_images/counterfit-create-camera.a5de97f59c0bd3cbe0416d7e89a3cfe86d19fbae05c641c53a91286412af0a34.en.png differ
diff --git a/translated_images/counterfit-create-camera.a5de97f59c0bd3cbe0416d7e89a3cfe86d19fbae05c641c53a91286412af0a34.lt.png b/translated_images/counterfit-create-camera.a5de97f59c0bd3cbe0416d7e89a3cfe86d19fbae05c641c53a91286412af0a34.lt.png
new file mode 100644
index 00000000..b3d0d223
Binary files /dev/null and b/translated_images/counterfit-create-camera.a5de97f59c0bd3cbe0416d7e89a3cfe86d19fbae05c641c53a91286412af0a34.lt.png differ
diff --git a/translated_images/counterfit-create-distance-sensor.967c9fb98f27888d95920c9784d004c972490eb71f70397fe13bd70a79a879a3.en.png b/translated_images/counterfit-create-distance-sensor.967c9fb98f27888d95920c9784d004c972490eb71f70397fe13bd70a79a879a3.en.png
new file mode 100644
index 00000000..0729dbce
Binary files /dev/null and b/translated_images/counterfit-create-distance-sensor.967c9fb98f27888d95920c9784d004c972490eb71f70397fe13bd70a79a879a3.en.png differ
diff --git a/translated_images/counterfit-create-distance-sensor.967c9fb98f27888d95920c9784d004c972490eb71f70397fe13bd70a79a879a3.lt.png b/translated_images/counterfit-create-distance-sensor.967c9fb98f27888d95920c9784d004c972490eb71f70397fe13bd70a79a879a3.lt.png
new file mode 100644
index 00000000..0729dbce
Binary files /dev/null and b/translated_images/counterfit-create-distance-sensor.967c9fb98f27888d95920c9784d004c972490eb71f70397fe13bd70a79a879a3.lt.png differ
diff --git a/translated_images/counterfit-create-gps-sensor.6385dc9357d85ad1d47b4abb2525e7651fd498917d25eefc5a72feab09eedc70.en.png b/translated_images/counterfit-create-gps-sensor.6385dc9357d85ad1d47b4abb2525e7651fd498917d25eefc5a72feab09eedc70.en.png
new file mode 100644
index 00000000..2e3adef5
Binary files /dev/null and b/translated_images/counterfit-create-gps-sensor.6385dc9357d85ad1d47b4abb2525e7651fd498917d25eefc5a72feab09eedc70.en.png differ
diff --git a/translated_images/counterfit-create-gps-sensor.6385dc9357d85ad1d47b4abb2525e7651fd498917d25eefc5a72feab09eedc70.lt.png b/translated_images/counterfit-create-gps-sensor.6385dc9357d85ad1d47b4abb2525e7651fd498917d25eefc5a72feab09eedc70.lt.png
new file mode 100644
index 00000000..2e3adef5
Binary files /dev/null and b/translated_images/counterfit-create-gps-sensor.6385dc9357d85ad1d47b4abb2525e7651fd498917d25eefc5a72feab09eedc70.lt.png differ
diff --git a/translated_images/counterfit-create-humidity-sensor.2750e27b6f30e09cf4e22101defd5252710717620816ab41ba688f91f757c49a.en.png b/translated_images/counterfit-create-humidity-sensor.2750e27b6f30e09cf4e22101defd5252710717620816ab41ba688f91f757c49a.en.png
new file mode 100644
index 00000000..4e9aa9b4
Binary files /dev/null and b/translated_images/counterfit-create-humidity-sensor.2750e27b6f30e09cf4e22101defd5252710717620816ab41ba688f91f757c49a.en.png differ
diff --git a/translated_images/counterfit-create-humidity-sensor.2750e27b6f30e09cf4e22101defd5252710717620816ab41ba688f91f757c49a.lt.png b/translated_images/counterfit-create-humidity-sensor.2750e27b6f30e09cf4e22101defd5252710717620816ab41ba688f91f757c49a.lt.png
new file mode 100644
index 00000000..4e9aa9b4
Binary files /dev/null and b/translated_images/counterfit-create-humidity-sensor.2750e27b6f30e09cf4e22101defd5252710717620816ab41ba688f91f757c49a.lt.png differ
diff --git a/translated_images/counterfit-create-led.ba9db1c9b8c622a635d6dfae5cdc4e70c2b250635bd4f0601c6cf0bd22b7ba46.en.png b/translated_images/counterfit-create-led.ba9db1c9b8c622a635d6dfae5cdc4e70c2b250635bd4f0601c6cf0bd22b7ba46.en.png
new file mode 100644
index 00000000..766527c0
Binary files /dev/null and b/translated_images/counterfit-create-led.ba9db1c9b8c622a635d6dfae5cdc4e70c2b250635bd4f0601c6cf0bd22b7ba46.en.png differ
diff --git a/translated_images/counterfit-create-led.ba9db1c9b8c622a635d6dfae5cdc4e70c2b250635bd4f0601c6cf0bd22b7ba46.lt.png b/translated_images/counterfit-create-led.ba9db1c9b8c622a635d6dfae5cdc4e70c2b250635bd4f0601c6cf0bd22b7ba46.lt.png
new file mode 100644
index 00000000..766527c0
Binary files /dev/null and b/translated_images/counterfit-create-led.ba9db1c9b8c622a635d6dfae5cdc4e70c2b250635bd4f0601c6cf0bd22b7ba46.lt.png differ
diff --git a/translated_images/counterfit-create-light-sensor.9f36a5e0d4458d8d554d54b34d2c806d56093d6e49fddcda2d20f6fef7f5cce1.en.png b/translated_images/counterfit-create-light-sensor.9f36a5e0d4458d8d554d54b34d2c806d56093d6e49fddcda2d20f6fef7f5cce1.en.png
new file mode 100644
index 00000000..f34ad7c6
Binary files /dev/null and b/translated_images/counterfit-create-light-sensor.9f36a5e0d4458d8d554d54b34d2c806d56093d6e49fddcda2d20f6fef7f5cce1.en.png differ
diff --git a/translated_images/counterfit-create-light-sensor.9f36a5e0d4458d8d554d54b34d2c806d56093d6e49fddcda2d20f6fef7f5cce1.lt.png b/translated_images/counterfit-create-light-sensor.9f36a5e0d4458d8d554d54b34d2c806d56093d6e49fddcda2d20f6fef7f5cce1.lt.png
new file mode 100644
index 00000000..f34ad7c6
Binary files /dev/null and b/translated_images/counterfit-create-light-sensor.9f36a5e0d4458d8d554d54b34d2c806d56093d6e49fddcda2d20f6fef7f5cce1.lt.png differ
diff --git a/translated_images/counterfit-create-relay.fa7c40fd0f2f6afc33b35ea94fcb235085be4861e14e3fe6b9b7bcfc82d1c888.en.png b/translated_images/counterfit-create-relay.fa7c40fd0f2f6afc33b35ea94fcb235085be4861e14e3fe6b9b7bcfc82d1c888.en.png
new file mode 100644
index 00000000..403bb436
Binary files /dev/null and b/translated_images/counterfit-create-relay.fa7c40fd0f2f6afc33b35ea94fcb235085be4861e14e3fe6b9b7bcfc82d1c888.en.png differ
diff --git a/translated_images/counterfit-create-relay.fa7c40fd0f2f6afc33b35ea94fcb235085be4861e14e3fe6b9b7bcfc82d1c888.lt.png b/translated_images/counterfit-create-relay.fa7c40fd0f2f6afc33b35ea94fcb235085be4861e14e3fe6b9b7bcfc82d1c888.lt.png
new file mode 100644
index 00000000..403bb436
Binary files /dev/null and b/translated_images/counterfit-create-relay.fa7c40fd0f2f6afc33b35ea94fcb235085be4861e14e3fe6b9b7bcfc82d1c888.lt.png differ
diff --git a/translated_images/counterfit-create-soil-moisture-sensor.35266135a5e0ae68b29a684d7db0d2933a8098b2307d197f7c71577b724603aa.en.png b/translated_images/counterfit-create-soil-moisture-sensor.35266135a5e0ae68b29a684d7db0d2933a8098b2307d197f7c71577b724603aa.en.png
new file mode 100644
index 00000000..07398a97
Binary files /dev/null and b/translated_images/counterfit-create-soil-moisture-sensor.35266135a5e0ae68b29a684d7db0d2933a8098b2307d197f7c71577b724603aa.en.png differ
diff --git a/translated_images/counterfit-create-soil-moisture-sensor.35266135a5e0ae68b29a684d7db0d2933a8098b2307d197f7c71577b724603aa.lt.png b/translated_images/counterfit-create-soil-moisture-sensor.35266135a5e0ae68b29a684d7db0d2933a8098b2307d197f7c71577b724603aa.lt.png
new file mode 100644
index 00000000..07398a97
Binary files /dev/null and b/translated_images/counterfit-create-soil-moisture-sensor.35266135a5e0ae68b29a684d7db0d2933a8098b2307d197f7c71577b724603aa.lt.png differ
diff --git a/translated_images/counterfit-create-temperature-sensor.199350ed34f7343d79dccbe95eaf6c11d2121f03d1c35ab9613b330c23f39b29.en.png b/translated_images/counterfit-create-temperature-sensor.199350ed34f7343d79dccbe95eaf6c11d2121f03d1c35ab9613b330c23f39b29.en.png
new file mode 100644
index 00000000..83d0a29e
Binary files /dev/null and b/translated_images/counterfit-create-temperature-sensor.199350ed34f7343d79dccbe95eaf6c11d2121f03d1c35ab9613b330c23f39b29.en.png differ
diff --git a/translated_images/counterfit-create-temperature-sensor.199350ed34f7343d79dccbe95eaf6c11d2121f03d1c35ab9613b330c23f39b29.lt.png b/translated_images/counterfit-create-temperature-sensor.199350ed34f7343d79dccbe95eaf6c11d2121f03d1c35ab9613b330c23f39b29.lt.png
new file mode 100644
index 00000000..83d0a29e
Binary files /dev/null and b/translated_images/counterfit-create-temperature-sensor.199350ed34f7343d79dccbe95eaf6c11d2121f03d1c35ab9613b330c23f39b29.lt.png differ
diff --git a/translated_images/counterfit-distance-sensor.079eefeeea0b68afc36431ce8fcbe2f09a7e4916ed1cd5cb30e696db53bc18fa.en.png b/translated_images/counterfit-distance-sensor.079eefeeea0b68afc36431ce8fcbe2f09a7e4916ed1cd5cb30e696db53bc18fa.en.png
new file mode 100644
index 00000000..cdd566f5
Binary files /dev/null and b/translated_images/counterfit-distance-sensor.079eefeeea0b68afc36431ce8fcbe2f09a7e4916ed1cd5cb30e696db53bc18fa.en.png differ
diff --git a/translated_images/counterfit-distance-sensor.079eefeeea0b68afc36431ce8fcbe2f09a7e4916ed1cd5cb30e696db53bc18fa.lt.png b/translated_images/counterfit-distance-sensor.079eefeeea0b68afc36431ce8fcbe2f09a7e4916ed1cd5cb30e696db53bc18fa.lt.png
new file mode 100644
index 00000000..cdd566f5
Binary files /dev/null and b/translated_images/counterfit-distance-sensor.079eefeeea0b68afc36431ce8fcbe2f09a7e4916ed1cd5cb30e696db53bc18fa.lt.png differ
diff --git a/translated_images/counterfit-first-run.433326358b669b31d0e99c3513cb01bfbb13724d162c99cdcc8f51ecf5f9c779.en.png b/translated_images/counterfit-first-run.433326358b669b31d0e99c3513cb01bfbb13724d162c99cdcc8f51ecf5f9c779.en.png
new file mode 100644
index 00000000..50caa7a8
Binary files /dev/null and b/translated_images/counterfit-first-run.433326358b669b31d0e99c3513cb01bfbb13724d162c99cdcc8f51ecf5f9c779.en.png differ
diff --git a/translated_images/counterfit-first-run.433326358b669b31d0e99c3513cb01bfbb13724d162c99cdcc8f51ecf5f9c779.lt.png b/translated_images/counterfit-first-run.433326358b669b31d0e99c3513cb01bfbb13724d162c99cdcc8f51ecf5f9c779.lt.png
new file mode 100644
index 00000000..50caa7a8
Binary files /dev/null and b/translated_images/counterfit-first-run.433326358b669b31d0e99c3513cb01bfbb13724d162c99cdcc8f51ecf5f9c779.lt.png differ
diff --git a/translated_images/counterfit-gps-sensor-gpxfile.8310b063ce8a425ccc8ebeec8306aeac5e8e55207f007d52c6e1194432a70cd9.en.png b/translated_images/counterfit-gps-sensor-gpxfile.8310b063ce8a425ccc8ebeec8306aeac5e8e55207f007d52c6e1194432a70cd9.en.png
new file mode 100644
index 00000000..e68c1881
Binary files /dev/null and b/translated_images/counterfit-gps-sensor-gpxfile.8310b063ce8a425ccc8ebeec8306aeac5e8e55207f007d52c6e1194432a70cd9.en.png differ
diff --git a/translated_images/counterfit-gps-sensor-gpxfile.8310b063ce8a425ccc8ebeec8306aeac5e8e55207f007d52c6e1194432a70cd9.lt.png b/translated_images/counterfit-gps-sensor-gpxfile.8310b063ce8a425ccc8ebeec8306aeac5e8e55207f007d52c6e1194432a70cd9.lt.png
new file mode 100644
index 00000000..e68c1881
Binary files /dev/null and b/translated_images/counterfit-gps-sensor-gpxfile.8310b063ce8a425ccc8ebeec8306aeac5e8e55207f007d52c6e1194432a70cd9.lt.png differ
diff --git a/translated_images/counterfit-gps-sensor-latlon.008c867d75464fbe7f84107cc57040df565ac07cb57d2f21db37d087d470197d.en.png b/translated_images/counterfit-gps-sensor-latlon.008c867d75464fbe7f84107cc57040df565ac07cb57d2f21db37d087d470197d.en.png
new file mode 100644
index 00000000..357708db
Binary files /dev/null and b/translated_images/counterfit-gps-sensor-latlon.008c867d75464fbe7f84107cc57040df565ac07cb57d2f21db37d087d470197d.en.png differ
diff --git a/translated_images/counterfit-gps-sensor-latlon.008c867d75464fbe7f84107cc57040df565ac07cb57d2f21db37d087d470197d.lt.png b/translated_images/counterfit-gps-sensor-latlon.008c867d75464fbe7f84107cc57040df565ac07cb57d2f21db37d087d470197d.lt.png
new file mode 100644
index 00000000..357708db
Binary files /dev/null and b/translated_images/counterfit-gps-sensor-latlon.008c867d75464fbe7f84107cc57040df565ac07cb57d2f21db37d087d470197d.lt.png differ
diff --git a/translated_images/counterfit-gps-sensor-nmea.c62eea442171e17e19528b051b104cfcecdc9cd18db7bc72920f29821ae63f73.en.png b/translated_images/counterfit-gps-sensor-nmea.c62eea442171e17e19528b051b104cfcecdc9cd18db7bc72920f29821ae63f73.en.png
new file mode 100644
index 00000000..ff2cb168
Binary files /dev/null and b/translated_images/counterfit-gps-sensor-nmea.c62eea442171e17e19528b051b104cfcecdc9cd18db7bc72920f29821ae63f73.en.png differ
diff --git a/translated_images/counterfit-gps-sensor-nmea.c62eea442171e17e19528b051b104cfcecdc9cd18db7bc72920f29821ae63f73.lt.png b/translated_images/counterfit-gps-sensor-nmea.c62eea442171e17e19528b051b104cfcecdc9cd18db7bc72920f29821ae63f73.lt.png
new file mode 100644
index 00000000..ff2cb168
Binary files /dev/null and b/translated_images/counterfit-gps-sensor-nmea.c62eea442171e17e19528b051b104cfcecdc9cd18db7bc72920f29821ae63f73.lt.png differ
diff --git a/translated_images/counterfit-gps-sensor.3fbb15af0a5367566f2f11324ef5a6f30861cdf2b497071a5e002b7aa473550e.en.png b/translated_images/counterfit-gps-sensor.3fbb15af0a5367566f2f11324ef5a6f30861cdf2b497071a5e002b7aa473550e.en.png
new file mode 100644
index 00000000..4dd28830
Binary files /dev/null and b/translated_images/counterfit-gps-sensor.3fbb15af0a5367566f2f11324ef5a6f30861cdf2b497071a5e002b7aa473550e.en.png differ
diff --git a/translated_images/counterfit-gps-sensor.3fbb15af0a5367566f2f11324ef5a6f30861cdf2b497071a5e002b7aa473550e.lt.png b/translated_images/counterfit-gps-sensor.3fbb15af0a5367566f2f11324ef5a6f30861cdf2b497071a5e002b7aa473550e.lt.png
new file mode 100644
index 00000000..4dd28830
Binary files /dev/null and b/translated_images/counterfit-gps-sensor.3fbb15af0a5367566f2f11324ef5a6f30861cdf2b497071a5e002b7aa473550e.lt.png differ
diff --git a/translated_images/counterfit-humidity-sensor.7b12f7f339e430cb26c8211d2dba4ef75261b353a01da0932698b5bebd693f27.en.png b/translated_images/counterfit-humidity-sensor.7b12f7f339e430cb26c8211d2dba4ef75261b353a01da0932698b5bebd693f27.en.png
new file mode 100644
index 00000000..36a0bed7
Binary files /dev/null and b/translated_images/counterfit-humidity-sensor.7b12f7f339e430cb26c8211d2dba4ef75261b353a01da0932698b5bebd693f27.en.png differ
diff --git a/translated_images/counterfit-humidity-sensor.7b12f7f339e430cb26c8211d2dba4ef75261b353a01da0932698b5bebd693f27.lt.png b/translated_images/counterfit-humidity-sensor.7b12f7f339e430cb26c8211d2dba4ef75261b353a01da0932698b5bebd693f27.lt.png
new file mode 100644
index 00000000..36a0bed7
Binary files /dev/null and b/translated_images/counterfit-humidity-sensor.7b12f7f339e430cb26c8211d2dba4ef75261b353a01da0932698b5bebd693f27.lt.png differ
diff --git a/translated_images/counterfit-led.c0ab02de6d256ad84d9bad4d67a7faa709f0ea83e410cfe9b5561ef0cef30b1c.en.png b/translated_images/counterfit-led.c0ab02de6d256ad84d9bad4d67a7faa709f0ea83e410cfe9b5561ef0cef30b1c.en.png
new file mode 100644
index 00000000..43b82415
Binary files /dev/null and b/translated_images/counterfit-led.c0ab02de6d256ad84d9bad4d67a7faa709f0ea83e410cfe9b5561ef0cef30b1c.en.png differ
diff --git a/translated_images/counterfit-led.c0ab02de6d256ad84d9bad4d67a7faa709f0ea83e410cfe9b5561ef0cef30b1c.lt.png b/translated_images/counterfit-led.c0ab02de6d256ad84d9bad4d67a7faa709f0ea83e410cfe9b5561ef0cef30b1c.lt.png
new file mode 100644
index 00000000..43b82415
Binary files /dev/null and b/translated_images/counterfit-led.c0ab02de6d256ad84d9bad4d67a7faa709f0ea83e410cfe9b5561ef0cef30b1c.lt.png differ
diff --git a/translated_images/counterfit-light-sensor.5d0f5584df56b90f6b2561910d9cb20dfbd73eeff2177c238d38f4de54aefae1.en.png b/translated_images/counterfit-light-sensor.5d0f5584df56b90f6b2561910d9cb20dfbd73eeff2177c238d38f4de54aefae1.en.png
new file mode 100644
index 00000000..9f42e92d
Binary files /dev/null and b/translated_images/counterfit-light-sensor.5d0f5584df56b90f6b2561910d9cb20dfbd73eeff2177c238d38f4de54aefae1.en.png differ
diff --git a/translated_images/counterfit-light-sensor.5d0f5584df56b90f6b2561910d9cb20dfbd73eeff2177c238d38f4de54aefae1.lt.png b/translated_images/counterfit-light-sensor.5d0f5584df56b90f6b2561910d9cb20dfbd73eeff2177c238d38f4de54aefae1.lt.png
new file mode 100644
index 00000000..9f42e92d
Binary files /dev/null and b/translated_images/counterfit-light-sensor.5d0f5584df56b90f6b2561910d9cb20dfbd73eeff2177c238d38f4de54aefae1.lt.png differ
diff --git a/translated_images/counterfit-relay.bbf74c1dbdc8b9acd983367fcbd06703a402aefef6af54ddb28e11307ba8a12c.en.png b/translated_images/counterfit-relay.bbf74c1dbdc8b9acd983367fcbd06703a402aefef6af54ddb28e11307ba8a12c.en.png
new file mode 100644
index 00000000..91118b35
Binary files /dev/null and b/translated_images/counterfit-relay.bbf74c1dbdc8b9acd983367fcbd06703a402aefef6af54ddb28e11307ba8a12c.en.png differ
diff --git a/translated_images/counterfit-relay.bbf74c1dbdc8b9acd983367fcbd06703a402aefef6af54ddb28e11307ba8a12c.lt.png b/translated_images/counterfit-relay.bbf74c1dbdc8b9acd983367fcbd06703a402aefef6af54ddb28e11307ba8a12c.lt.png
new file mode 100644
index 00000000..91118b35
Binary files /dev/null and b/translated_images/counterfit-relay.bbf74c1dbdc8b9acd983367fcbd06703a402aefef6af54ddb28e11307ba8a12c.lt.png differ
diff --git a/translated_images/counterfit-soil-moisture-sensor.81742b2de0e9de60a3b3b9a2ff8ecc686d428eb6d71820f27a693be26e5aceee.en.png b/translated_images/counterfit-soil-moisture-sensor.81742b2de0e9de60a3b3b9a2ff8ecc686d428eb6d71820f27a693be26e5aceee.en.png
new file mode 100644
index 00000000..c1074a8e
Binary files /dev/null and b/translated_images/counterfit-soil-moisture-sensor.81742b2de0e9de60a3b3b9a2ff8ecc686d428eb6d71820f27a693be26e5aceee.en.png differ
diff --git a/translated_images/counterfit-soil-moisture-sensor.81742b2de0e9de60a3b3b9a2ff8ecc686d428eb6d71820f27a693be26e5aceee.lt.png b/translated_images/counterfit-soil-moisture-sensor.81742b2de0e9de60a3b3b9a2ff8ecc686d428eb6d71820f27a693be26e5aceee.lt.png
new file mode 100644
index 00000000..c1074a8e
Binary files /dev/null and b/translated_images/counterfit-soil-moisture-sensor.81742b2de0e9de60a3b3b9a2ff8ecc686d428eb6d71820f27a693be26e5aceee.lt.png differ
diff --git a/translated_images/counterfit-temperature-sensor.f0560236c96a9016bafce7f6f792476fe3367bc6941a1f7d5811d144d4bcbfff.en.png b/translated_images/counterfit-temperature-sensor.f0560236c96a9016bafce7f6f792476fe3367bc6941a1f7d5811d144d4bcbfff.en.png
new file mode 100644
index 00000000..a4cca4dc
Binary files /dev/null and b/translated_images/counterfit-temperature-sensor.f0560236c96a9016bafce7f6f792476fe3367bc6941a1f7d5811d144d4bcbfff.en.png differ
diff --git a/translated_images/counterfit-temperature-sensor.f0560236c96a9016bafce7f6f792476fe3367bc6941a1f7d5811d144d4bcbfff.lt.png b/translated_images/counterfit-temperature-sensor.f0560236c96a9016bafce7f6f792476fe3367bc6941a1f7d5811d144d4bcbfff.lt.png
new file mode 100644
index 00000000..a4cca4dc
Binary files /dev/null and b/translated_images/counterfit-temperature-sensor.f0560236c96a9016bafce7f6f792476fe3367bc6941a1f7d5811d144d4bcbfff.lt.png differ
diff --git a/translated_images/custom-vision-banana-prediction.30cdff4e1d72db5d9a0be0193790a47c2b387da034e12dc1314dd57ca2131b59.en.png b/translated_images/custom-vision-banana-prediction.30cdff4e1d72db5d9a0be0193790a47c2b387da034e12dc1314dd57ca2131b59.en.png
new file mode 100644
index 00000000..1dd02459
Binary files /dev/null and b/translated_images/custom-vision-banana-prediction.30cdff4e1d72db5d9a0be0193790a47c2b387da034e12dc1314dd57ca2131b59.en.png differ
diff --git a/translated_images/custom-vision-banana-prediction.30cdff4e1d72db5d9a0be0193790a47c2b387da034e12dc1314dd57ca2131b59.lt.png b/translated_images/custom-vision-banana-prediction.30cdff4e1d72db5d9a0be0193790a47c2b387da034e12dc1314dd57ca2131b59.lt.png
new file mode 100644
index 00000000..1dd02459
Binary files /dev/null and b/translated_images/custom-vision-banana-prediction.30cdff4e1d72db5d9a0be0193790a47c2b387da034e12dc1314dd57ca2131b59.lt.png differ
diff --git a/translated_images/custom-vision-create-object-detector-project.32d4fb9aa8e7e7375f8a799bfce517aca970f2cb65e42d4245c5e635c734ab29.en.png b/translated_images/custom-vision-create-object-detector-project.32d4fb9aa8e7e7375f8a799bfce517aca970f2cb65e42d4245c5e635c734ab29.en.png
new file mode 100644
index 00000000..64ba974b
Binary files /dev/null and b/translated_images/custom-vision-create-object-detector-project.32d4fb9aa8e7e7375f8a799bfce517aca970f2cb65e42d4245c5e635c734ab29.en.png differ
diff --git a/translated_images/custom-vision-create-object-detector-project.32d4fb9aa8e7e7375f8a799bfce517aca970f2cb65e42d4245c5e635c734ab29.lt.png b/translated_images/custom-vision-create-object-detector-project.32d4fb9aa8e7e7375f8a799bfce517aca970f2cb65e42d4245c5e635c734ab29.lt.png
new file mode 100644
index 00000000..64ba974b
Binary files /dev/null and b/translated_images/custom-vision-create-object-detector-project.32d4fb9aa8e7e7375f8a799bfce517aca970f2cb65e42d4245c5e635c734ab29.lt.png differ
diff --git a/translated_images/custom-vision-create-project.cf46325b92d8b131089f6647cf5e07b664cb77850e106d66e3c057b6b69756c6.en.png b/translated_images/custom-vision-create-project.cf46325b92d8b131089f6647cf5e07b664cb77850e106d66e3c057b6b69756c6.en.png
new file mode 100644
index 00000000..fd3d1f9b
Binary files /dev/null and b/translated_images/custom-vision-create-project.cf46325b92d8b131089f6647cf5e07b664cb77850e106d66e3c057b6b69756c6.en.png differ
diff --git a/translated_images/custom-vision-create-project.cf46325b92d8b131089f6647cf5e07b664cb77850e106d66e3c057b6b69756c6.lt.png b/translated_images/custom-vision-create-project.cf46325b92d8b131089f6647cf5e07b664cb77850e106d66e3c057b6b69756c6.lt.png
new file mode 100644
index 00000000..fd3d1f9b
Binary files /dev/null and b/translated_images/custom-vision-create-project.cf46325b92d8b131089f6647cf5e07b664cb77850e106d66e3c057b6b69756c6.lt.png differ
diff --git a/translated_images/custom-vision-logo.d3d4e7c8a87ec9daf825e72e210576c3cbf60312577be7a139e22dd97ab7f1e6.en.png b/translated_images/custom-vision-logo.d3d4e7c8a87ec9daf825e72e210576c3cbf60312577be7a139e22dd97ab7f1e6.en.png
new file mode 100644
index 00000000..f523159b
Binary files /dev/null and b/translated_images/custom-vision-logo.d3d4e7c8a87ec9daf825e72e210576c3cbf60312577be7a139e22dd97ab7f1e6.en.png differ
diff --git a/translated_images/custom-vision-logo.d3d4e7c8a87ec9daf825e72e210576c3cbf60312577be7a139e22dd97ab7f1e6.lt.png b/translated_images/custom-vision-logo.d3d4e7c8a87ec9daf825e72e210576c3cbf60312577be7a139e22dd97ab7f1e6.lt.png
new file mode 100644
index 00000000..f523159b
Binary files /dev/null and b/translated_images/custom-vision-logo.d3d4e7c8a87ec9daf825e72e210576c3cbf60312577be7a139e22dd97ab7f1e6.lt.png differ
diff --git a/translated_images/custom-vision-object-detector-publish-button.34ee379fc650ccb9856c3868d0003f413b9529f102fc73c37168c98d721cc293.en.png b/translated_images/custom-vision-object-detector-publish-button.34ee379fc650ccb9856c3868d0003f413b9529f102fc73c37168c98d721cc293.en.png
new file mode 100644
index 00000000..70a9bacf
Binary files /dev/null and b/translated_images/custom-vision-object-detector-publish-button.34ee379fc650ccb9856c3868d0003f413b9529f102fc73c37168c98d721cc293.en.png differ
diff --git a/translated_images/custom-vision-object-detector-publish-button.34ee379fc650ccb9856c3868d0003f413b9529f102fc73c37168c98d721cc293.lt.png b/translated_images/custom-vision-object-detector-publish-button.34ee379fc650ccb9856c3868d0003f413b9529f102fc73c37168c98d721cc293.lt.png
new file mode 100644
index 00000000..70a9bacf
Binary files /dev/null and b/translated_images/custom-vision-object-detector-publish-button.34ee379fc650ccb9856c3868d0003f413b9529f102fc73c37168c98d721cc293.lt.png differ
diff --git a/translated_images/custom-vision-prediction-key-endpoint.30c569ffd0338864f319911f052d5e9b8c5066cb0800a26dd6f7ff5713130ad8.en.png b/translated_images/custom-vision-prediction-key-endpoint.30c569ffd0338864f319911f052d5e9b8c5066cb0800a26dd6f7ff5713130ad8.en.png
new file mode 100644
index 00000000..9e30ab1c
Binary files /dev/null and b/translated_images/custom-vision-prediction-key-endpoint.30c569ffd0338864f319911f052d5e9b8c5066cb0800a26dd6f7ff5713130ad8.en.png differ
diff --git a/translated_images/custom-vision-prediction-key-endpoint.30c569ffd0338864f319911f052d5e9b8c5066cb0800a26dd6f7ff5713130ad8.lt.png b/translated_images/custom-vision-prediction-key-endpoint.30c569ffd0338864f319911f052d5e9b8c5066cb0800a26dd6f7ff5713130ad8.lt.png
new file mode 100644
index 00000000..9e30ab1c
Binary files /dev/null and b/translated_images/custom-vision-prediction-key-endpoint.30c569ffd0338864f319911f052d5e9b8c5066cb0800a26dd6f7ff5713130ad8.lt.png differ
diff --git a/translated_images/custom-vision-publish-button.b7174e1977b0c33b8b72d4e5b1326c779e0af196f3849d09985ee2d7d5493a39.en.png b/translated_images/custom-vision-publish-button.b7174e1977b0c33b8b72d4e5b1326c779e0af196f3849d09985ee2d7d5493a39.en.png
new file mode 100644
index 00000000..e9f61adc
Binary files /dev/null and b/translated_images/custom-vision-publish-button.b7174e1977b0c33b8b72d4e5b1326c779e0af196f3849d09985ee2d7d5493a39.en.png differ
diff --git a/translated_images/custom-vision-publish-button.b7174e1977b0c33b8b72d4e5b1326c779e0af196f3849d09985ee2d7d5493a39.lt.png b/translated_images/custom-vision-publish-button.b7174e1977b0c33b8b72d4e5b1326c779e0af196f3849d09985ee2d7d5493a39.lt.png
new file mode 100644
index 00000000..e9f61adc
Binary files /dev/null and b/translated_images/custom-vision-publish-button.b7174e1977b0c33b8b72d4e5b1326c779e0af196f3849d09985ee2d7d5493a39.lt.png differ
diff --git a/translated_images/custom-vision-stock-prediction.942266ab1bcca3410ecdf23643b9f5f570cfab2345235074e24c51f285777613.en.png b/translated_images/custom-vision-stock-prediction.942266ab1bcca3410ecdf23643b9f5f570cfab2345235074e24c51f285777613.en.png
new file mode 100644
index 00000000..a54521f7
Binary files /dev/null and b/translated_images/custom-vision-stock-prediction.942266ab1bcca3410ecdf23643b9f5f570cfab2345235074e24c51f285777613.en.png differ
diff --git a/translated_images/custom-vision-stock-prediction.942266ab1bcca3410ecdf23643b9f5f570cfab2345235074e24c51f285777613.lt.png b/translated_images/custom-vision-stock-prediction.942266ab1bcca3410ecdf23643b9f5f570cfab2345235074e24c51f285777613.lt.png
new file mode 100644
index 00000000..a54521f7
Binary files /dev/null and b/translated_images/custom-vision-stock-prediction.942266ab1bcca3410ecdf23643b9f5f570cfab2345235074e24c51f285777613.lt.png differ
diff --git a/translated_images/dimmable-light.9ceffeb195dec1a849da718b2d71b32c35171ff7dfea9c07bbf82646a67acf6b.en.png b/translated_images/dimmable-light.9ceffeb195dec1a849da718b2d71b32c35171ff7dfea9c07bbf82646a67acf6b.en.png
new file mode 100644
index 00000000..6981df8a
Binary files /dev/null and b/translated_images/dimmable-light.9ceffeb195dec1a849da718b2d71b32c35171ff7dfea9c07bbf82646a67acf6b.en.png differ
diff --git a/translated_images/dimmable-light.9ceffeb195dec1a849da718b2d71b32c35171ff7dfea9c07bbf82646a67acf6b.lt.png b/translated_images/dimmable-light.9ceffeb195dec1a849da718b2d71b32c35171ff7dfea9c07bbf82646a67acf6b.lt.png
new file mode 100644
index 00000000..6981df8a
Binary files /dev/null and b/translated_images/dimmable-light.9ceffeb195dec1a849da718b2d71b32c35171ff7dfea9c07bbf82646a67acf6b.lt.png differ
diff --git a/translated_images/dmac-adc-buffers.4509aee49145c90bc2e1be472b8ed2ddfcb2b6a81ad3e559114aca55f5fff759.en.png b/translated_images/dmac-adc-buffers.4509aee49145c90bc2e1be472b8ed2ddfcb2b6a81ad3e559114aca55f5fff759.en.png
new file mode 100644
index 00000000..2722c065
Binary files /dev/null and b/translated_images/dmac-adc-buffers.4509aee49145c90bc2e1be472b8ed2ddfcb2b6a81ad3e559114aca55f5fff759.en.png differ
diff --git a/translated_images/dmac-adc-buffers.4509aee49145c90bc2e1be472b8ed2ddfcb2b6a81ad3e559114aca55f5fff759.lt.png b/translated_images/dmac-adc-buffers.4509aee49145c90bc2e1be472b8ed2ddfcb2b6a81ad3e559114aca55f5fff759.lt.png
new file mode 100644
index 00000000..2722c065
Binary files /dev/null and b/translated_images/dmac-adc-buffers.4509aee49145c90bc2e1be472b8ed2ddfcb2b6a81ad3e559114aca55f5fff759.lt.png differ
diff --git a/translated_images/dynamic-mic.8babac890a2d80dfb0874b5bf37d4b851fe2aeb9da6fd72945746176978bf3bb.en.jpg b/translated_images/dynamic-mic.8babac890a2d80dfb0874b5bf37d4b851fe2aeb9da6fd72945746176978bf3bb.en.jpg
new file mode 100644
index 00000000..cce2a759
Binary files /dev/null and b/translated_images/dynamic-mic.8babac890a2d80dfb0874b5bf37d4b851fe2aeb9da6fd72945746176978bf3bb.en.jpg differ
diff --git a/translated_images/dynamic-mic.8babac890a2d80dfb0874b5bf37d4b851fe2aeb9da6fd72945746176978bf3bb.lt.jpg b/translated_images/dynamic-mic.8babac890a2d80dfb0874b5bf37d4b851fe2aeb9da6fd72945746176978bf3bb.lt.jpg
new file mode 100644
index 00000000..cce2a759
Binary files /dev/null and b/translated_images/dynamic-mic.8babac890a2d80dfb0874b5bf37d4b851fe2aeb9da6fd72945746176978bf3bb.lt.jpg differ
diff --git a/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.en.png b/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.en.png
new file mode 100644
index 00000000..26e0ae43
Binary files /dev/null and b/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.en.png differ
diff --git a/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.lt.png b/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.lt.png
new file mode 100644
index 00000000..26e0ae43
Binary files /dev/null and b/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.lt.png differ
diff --git a/translated_images/fetch-decode-execute.2fd6f150f6280392807f4475382319abd0cee0b90058e1735444d6baa6f2078c.en.png b/translated_images/fetch-decode-execute.2fd6f150f6280392807f4475382319abd0cee0b90058e1735444d6baa6f2078c.en.png
new file mode 100644
index 00000000..a5d549fd
Binary files /dev/null and b/translated_images/fetch-decode-execute.2fd6f150f6280392807f4475382319abd0cee0b90058e1735444d6baa6f2078c.en.png differ
diff --git a/translated_images/fetch-decode-execute.2fd6f150f6280392807f4475382319abd0cee0b90058e1735444d6baa6f2078c.lt.png b/translated_images/fetch-decode-execute.2fd6f150f6280392807f4475382319abd0cee0b90058e1735444d6baa6f2078c.lt.png
new file mode 100644
index 00000000..a5d549fd
Binary files /dev/null and b/translated_images/fetch-decode-execute.2fd6f150f6280392807f4475382319abd0cee0b90058e1735444d6baa6f2078c.lt.png differ
diff --git a/translated_images/fruit-quality-detector-message-flow.adf2a65da8fd8741ac7af11361574de89adc126785d67606bb4d2ec00467e380.en.png b/translated_images/fruit-quality-detector-message-flow.adf2a65da8fd8741ac7af11361574de89adc126785d67606bb4d2ec00467e380.en.png
new file mode 100644
index 00000000..a251745c
Binary files /dev/null and b/translated_images/fruit-quality-detector-message-flow.adf2a65da8fd8741ac7af11361574de89adc126785d67606bb4d2ec00467e380.en.png differ
diff --git a/translated_images/fruit-quality-detector-message-flow.adf2a65da8fd8741ac7af11361574de89adc126785d67606bb4d2ec00467e380.lt.png b/translated_images/fruit-quality-detector-message-flow.adf2a65da8fd8741ac7af11361574de89adc126785d67606bb4d2ec00467e380.lt.png
new file mode 100644
index 00000000..a251745c
Binary files /dev/null and b/translated_images/fruit-quality-detector-message-flow.adf2a65da8fd8741ac7af11361574de89adc126785d67606bb4d2ec00467e380.lt.png differ
diff --git a/translated_images/gdd-calculation-corn.64a58b7a7afcd0dfd46ff733996d939f17f4f3feac9f0d1c632be3523e51ebd9.en.png b/translated_images/gdd-calculation-corn.64a58b7a7afcd0dfd46ff733996d939f17f4f3feac9f0d1c632be3523e51ebd9.en.png
new file mode 100644
index 00000000..bb97d28e
Binary files /dev/null and b/translated_images/gdd-calculation-corn.64a58b7a7afcd0dfd46ff733996d939f17f4f3feac9f0d1c632be3523e51ebd9.en.png differ
diff --git a/translated_images/gdd-calculation-corn.64a58b7a7afcd0dfd46ff733996d939f17f4f3feac9f0d1c632be3523e51ebd9.lt.png b/translated_images/gdd-calculation-corn.64a58b7a7afcd0dfd46ff733996d939f17f4f3feac9f0d1c632be3523e51ebd9.lt.png
new file mode 100644
index 00000000..bb97d28e
Binary files /dev/null and b/translated_images/gdd-calculation-corn.64a58b7a7afcd0dfd46ff733996d939f17f4f3feac9f0d1c632be3523e51ebd9.lt.png differ
diff --git a/translated_images/gdd-calculation-strawberries.59f57db94b22adb8ff6efb951ace33af104a1c6ccca3ffb0f8169c14cb160c90.en.png b/translated_images/gdd-calculation-strawberries.59f57db94b22adb8ff6efb951ace33af104a1c6ccca3ffb0f8169c14cb160c90.en.png
new file mode 100644
index 00000000..e34dea22
Binary files /dev/null and b/translated_images/gdd-calculation-strawberries.59f57db94b22adb8ff6efb951ace33af104a1c6ccca3ffb0f8169c14cb160c90.en.png differ
diff --git a/translated_images/gdd-calculation-strawberries.59f57db94b22adb8ff6efb951ace33af104a1c6ccca3ffb0f8169c14cb160c90.lt.png b/translated_images/gdd-calculation-strawberries.59f57db94b22adb8ff6efb951ace33af104a1c6ccca3ffb0f8169c14cb160c90.lt.png
new file mode 100644
index 00000000..e34dea22
Binary files /dev/null and b/translated_images/gdd-calculation-strawberries.59f57db94b22adb8ff6efb951ace33af104a1c6ccca3ffb0f8169c14cb160c90.lt.png differ
diff --git a/translated_images/gdd-calculation.79b3660f9c5757aa92dc2dd2cdde75344e2d2c1565c4b3151640f7887edc0275.en.png b/translated_images/gdd-calculation.79b3660f9c5757aa92dc2dd2cdde75344e2d2c1565c4b3151640f7887edc0275.en.png
new file mode 100644
index 00000000..fa863501
Binary files /dev/null and b/translated_images/gdd-calculation.79b3660f9c5757aa92dc2dd2cdde75344e2d2c1565c4b3151640f7887edc0275.en.png differ
diff --git a/translated_images/gdd-calculation.79b3660f9c5757aa92dc2dd2cdde75344e2d2c1565c4b3151640f7887edc0275.lt.png b/translated_images/gdd-calculation.79b3660f9c5757aa92dc2dd2cdde75344e2d2c1565c4b3151640f7887edc0275.lt.png
new file mode 100644
index 00000000..fa863501
Binary files /dev/null and b/translated_images/gdd-calculation.79b3660f9c5757aa92dc2dd2cdde75344e2d2c1565c4b3151640f7887edc0275.lt.png differ
diff --git a/translated_images/gdd-jupyter-notebook.c5b52cf21094f158a61f47f455490fd95f1729777ff90861a4521820bf354cdc.en.png b/translated_images/gdd-jupyter-notebook.c5b52cf21094f158a61f47f455490fd95f1729777ff90861a4521820bf354cdc.en.png
new file mode 100644
index 00000000..0d0e0c48
Binary files /dev/null and b/translated_images/gdd-jupyter-notebook.c5b52cf21094f158a61f47f455490fd95f1729777ff90861a4521820bf354cdc.en.png differ
diff --git a/translated_images/gdd-jupyter-notebook.c5b52cf21094f158a61f47f455490fd95f1729777ff90861a4521820bf354cdc.lt.png b/translated_images/gdd-jupyter-notebook.c5b52cf21094f158a61f47f455490fd95f1729777ff90861a4521820bf354cdc.lt.png
new file mode 100644
index 00000000..0d0e0c48
Binary files /dev/null and b/translated_images/gdd-jupyter-notebook.c5b52cf21094f158a61f47f455490fd95f1729777ff90861a4521820bf354cdc.lt.png differ
diff --git a/translated_images/geofence-crossing-inaccurate-gps.6a3ed911202ad9cabb66d3964888cec03a42c61d5b8f536ad5bdc99716b370f5.en.png b/translated_images/geofence-crossing-inaccurate-gps.6a3ed911202ad9cabb66d3964888cec03a42c61d5b8f536ad5bdc99716b370f5.en.png
new file mode 100644
index 00000000..6f79a498
Binary files /dev/null and b/translated_images/geofence-crossing-inaccurate-gps.6a3ed911202ad9cabb66d3964888cec03a42c61d5b8f536ad5bdc99716b370f5.en.png differ
diff --git a/translated_images/geofence-crossing-inaccurate-gps.6a3ed911202ad9cabb66d3964888cec03a42c61d5b8f536ad5bdc99716b370f5.lt.png b/translated_images/geofence-crossing-inaccurate-gps.6a3ed911202ad9cabb66d3964888cec03a42c61d5b8f536ad5bdc99716b370f5.lt.png
new file mode 100644
index 00000000..6f79a498
Binary files /dev/null and b/translated_images/geofence-crossing-inaccurate-gps.6a3ed911202ad9cabb66d3964888cec03a42c61d5b8f536ad5bdc99716b370f5.lt.png differ
diff --git a/translated_images/geofence-examples.172fbc534665769f6e1a1ddcf75e3b25183cd10354c80cc603ba44b635390e1a.en.png b/translated_images/geofence-examples.172fbc534665769f6e1a1ddcf75e3b25183cd10354c80cc603ba44b635390e1a.en.png
new file mode 100644
index 00000000..8527d4cd
Binary files /dev/null and b/translated_images/geofence-examples.172fbc534665769f6e1a1ddcf75e3b25183cd10354c80cc603ba44b635390e1a.en.png differ
diff --git a/translated_images/geofence-examples.172fbc534665769f6e1a1ddcf75e3b25183cd10354c80cc603ba44b635390e1a.lt.png b/translated_images/geofence-examples.172fbc534665769f6e1a1ddcf75e3b25183cd10354c80cc603ba44b635390e1a.lt.png
new file mode 100644
index 00000000..8527d4cd
Binary files /dev/null and b/translated_images/geofence-examples.172fbc534665769f6e1a1ddcf75e3b25183cd10354c80cc603ba44b635390e1a.lt.png differ
diff --git a/translated_images/gps-satellites.04acf1148fe25fbf1586bc2e8ba698e8d79b79a50c36824b38417dd13372b90f.en.png b/translated_images/gps-satellites.04acf1148fe25fbf1586bc2e8ba698e8d79b79a50c36824b38417dd13372b90f.en.png
new file mode 100644
index 00000000..8597bf4d
Binary files /dev/null and b/translated_images/gps-satellites.04acf1148fe25fbf1586bc2e8ba698e8d79b79a50c36824b38417dd13372b90f.en.png differ
diff --git a/translated_images/gps-satellites.04acf1148fe25fbf1586bc2e8ba698e8d79b79a50c36824b38417dd13372b90f.lt.png b/translated_images/gps-satellites.04acf1148fe25fbf1586bc2e8ba698e8d79b79a50c36824b38417dd13372b90f.lt.png
new file mode 100644
index 00000000..8597bf4d
Binary files /dev/null and b/translated_images/gps-satellites.04acf1148fe25fbf1586bc2e8ba698e8d79b79a50c36824b38417dd13372b90f.lt.png differ
diff --git a/translated_images/gps-telemetry-iot-hub-functions.24d3fa5592455e9f4e2fe73856b40c3915a292b90263c31d652acfd976cfedd8.en.png b/translated_images/gps-telemetry-iot-hub-functions.24d3fa5592455e9f4e2fe73856b40c3915a292b90263c31d652acfd976cfedd8.en.png
new file mode 100644
index 00000000..3bf24358
Binary files /dev/null and b/translated_images/gps-telemetry-iot-hub-functions.24d3fa5592455e9f4e2fe73856b40c3915a292b90263c31d652acfd976cfedd8.en.png differ
diff --git a/translated_images/gps-telemetry-iot-hub-functions.24d3fa5592455e9f4e2fe73856b40c3915a292b90263c31d652acfd976cfedd8.lt.png b/translated_images/gps-telemetry-iot-hub-functions.24d3fa5592455e9f4e2fe73856b40c3915a292b90263c31d652acfd976cfedd8.lt.png
new file mode 100644
index 00000000..3bf24358
Binary files /dev/null and b/translated_images/gps-telemetry-iot-hub-functions.24d3fa5592455e9f4e2fe73856b40c3915a292b90263c31d652acfd976cfedd8.lt.png differ
diff --git a/translated_images/gps-telemetry-iot-hub.8115335d51cd2c1285d20e9d1b18cf685e59a8e093e7797291ef173445af6f3d.en.png b/translated_images/gps-telemetry-iot-hub.8115335d51cd2c1285d20e9d1b18cf685e59a8e093e7797291ef173445af6f3d.en.png
new file mode 100644
index 00000000..562f66d2
Binary files /dev/null and b/translated_images/gps-telemetry-iot-hub.8115335d51cd2c1285d20e9d1b18cf685e59a8e093e7797291ef173445af6f3d.en.png differ
diff --git a/translated_images/gps-telemetry-iot-hub.8115335d51cd2c1285d20e9d1b18cf685e59a8e093e7797291ef173445af6f3d.lt.png b/translated_images/gps-telemetry-iot-hub.8115335d51cd2c1285d20e9d1b18cf685e59a8e093e7797291ef173445af6f3d.lt.png
new file mode 100644
index 00000000..562f66d2
Binary files /dev/null and b/translated_images/gps-telemetry-iot-hub.8115335d51cd2c1285d20e9d1b18cf685e59a8e093e7797291ef173445af6f3d.lt.png differ
diff --git a/translated_images/grove-base-hat-ribbon-cable.501fed202fcf73b11b2b68f6d246189f7d15d3e4423c572ddee79d77b4632b47.en.png b/translated_images/grove-base-hat-ribbon-cable.501fed202fcf73b11b2b68f6d246189f7d15d3e4423c572ddee79d77b4632b47.en.png
new file mode 100644
index 00000000..2f50d53a
Binary files /dev/null and b/translated_images/grove-base-hat-ribbon-cable.501fed202fcf73b11b2b68f6d246189f7d15d3e4423c572ddee79d77b4632b47.en.png differ
diff --git a/translated_images/grove-base-hat-ribbon-cable.501fed202fcf73b11b2b68f6d246189f7d15d3e4423c572ddee79d77b4632b47.lt.png b/translated_images/grove-base-hat-ribbon-cable.501fed202fcf73b11b2b68f6d246189f7d15d3e4423c572ddee79d77b4632b47.lt.png
new file mode 100644
index 00000000..2f50d53a
Binary files /dev/null and b/translated_images/grove-base-hat-ribbon-cable.501fed202fcf73b11b2b68f6d246189f7d15d3e4423c572ddee79d77b4632b47.lt.png differ
diff --git a/translated_images/grove-button.a70cfbb809a8563681003250cf5b06d68cdcc68624f9e2f493d5a534ae2da1e5.en.png b/translated_images/grove-button.a70cfbb809a8563681003250cf5b06d68cdcc68624f9e2f493d5a534ae2da1e5.en.png
new file mode 100644
index 00000000..de7f343e
Binary files /dev/null and b/translated_images/grove-button.a70cfbb809a8563681003250cf5b06d68cdcc68624f9e2f493d5a534ae2da1e5.en.png differ
diff --git a/translated_images/grove-button.a70cfbb809a8563681003250cf5b06d68cdcc68624f9e2f493d5a534ae2da1e5.lt.png b/translated_images/grove-button.a70cfbb809a8563681003250cf5b06d68cdcc68624f9e2f493d5a534ae2da1e5.lt.png
new file mode 100644
index 00000000..de7f343e
Binary files /dev/null and b/translated_images/grove-button.a70cfbb809a8563681003250cf5b06d68cdcc68624f9e2f493d5a534ae2da1e5.lt.png differ
diff --git a/translated_images/grove-capacitive-soil-moisture-sensor.e7f0776cce30e78be5cc5a07839385fd6718857f31b5bf5ad3d0c73c83b2f0ef.en.png b/translated_images/grove-capacitive-soil-moisture-sensor.e7f0776cce30e78be5cc5a07839385fd6718857f31b5bf5ad3d0c73c83b2f0ef.en.png
new file mode 100644
index 00000000..c8b1a544
Binary files /dev/null and b/translated_images/grove-capacitive-soil-moisture-sensor.e7f0776cce30e78be5cc5a07839385fd6718857f31b5bf5ad3d0c73c83b2f0ef.en.png differ
diff --git a/translated_images/grove-capacitive-soil-moisture-sensor.e7f0776cce30e78be5cc5a07839385fd6718857f31b5bf5ad3d0c73c83b2f0ef.lt.png b/translated_images/grove-capacitive-soil-moisture-sensor.e7f0776cce30e78be5cc5a07839385fd6718857f31b5bf5ad3d0c73c83b2f0ef.lt.png
new file mode 100644
index 00000000..c8b1a544
Binary files /dev/null and b/translated_images/grove-capacitive-soil-moisture-sensor.e7f0776cce30e78be5cc5a07839385fd6718857f31b5bf5ad3d0c73c83b2f0ef.lt.png differ
diff --git a/translated_images/grove-dht11.07f8eafceee170043efbb53e1d15722bd4e00fbaa9ff74290b57e9f66eb82c17.en.png b/translated_images/grove-dht11.07f8eafceee170043efbb53e1d15722bd4e00fbaa9ff74290b57e9f66eb82c17.en.png
new file mode 100644
index 00000000..17d1151d
Binary files /dev/null and b/translated_images/grove-dht11.07f8eafceee170043efbb53e1d15722bd4e00fbaa9ff74290b57e9f66eb82c17.en.png differ
diff --git a/translated_images/grove-dht11.07f8eafceee170043efbb53e1d15722bd4e00fbaa9ff74290b57e9f66eb82c17.lt.png b/translated_images/grove-dht11.07f8eafceee170043efbb53e1d15722bd4e00fbaa9ff74290b57e9f66eb82c17.lt.png
new file mode 100644
index 00000000..17d1151d
Binary files /dev/null and b/translated_images/grove-dht11.07f8eafceee170043efbb53e1d15722bd4e00fbaa9ff74290b57e9f66eb82c17.lt.png differ
diff --git a/translated_images/grove-gps-sensor.247943bf69b03f0d1820ef6ed10c587f9b650e8db55b936851c92412180bd3e2.en.png b/translated_images/grove-gps-sensor.247943bf69b03f0d1820ef6ed10c587f9b650e8db55b936851c92412180bd3e2.en.png
new file mode 100644
index 00000000..ffafc104
Binary files /dev/null and b/translated_images/grove-gps-sensor.247943bf69b03f0d1820ef6ed10c587f9b650e8db55b936851c92412180bd3e2.en.png differ
diff --git a/translated_images/grove-gps-sensor.247943bf69b03f0d1820ef6ed10c587f9b650e8db55b936851c92412180bd3e2.lt.png b/translated_images/grove-gps-sensor.247943bf69b03f0d1820ef6ed10c587f9b650e8db55b936851c92412180bd3e2.lt.png
new file mode 100644
index 00000000..ffafc104
Binary files /dev/null and b/translated_images/grove-gps-sensor.247943bf69b03f0d1820ef6ed10c587f9b650e8db55b936851c92412180bd3e2.lt.png differ
diff --git a/translated_images/grove-led.6c853be93f473cf2c439cfc74bb1064732b22251a83cedf66e62f783f9cc1a79.en.png b/translated_images/grove-led.6c853be93f473cf2c439cfc74bb1064732b22251a83cedf66e62f783f9cc1a79.en.png
new file mode 100644
index 00000000..e3d86f8c
Binary files /dev/null and b/translated_images/grove-led.6c853be93f473cf2c439cfc74bb1064732b22251a83cedf66e62f783f9cc1a79.en.png differ
diff --git a/translated_images/grove-led.6c853be93f473cf2c439cfc74bb1064732b22251a83cedf66e62f783f9cc1a79.lt.png b/translated_images/grove-led.6c853be93f473cf2c439cfc74bb1064732b22251a83cedf66e62f783f9cc1a79.lt.png
new file mode 100644
index 00000000..e3d86f8c
Binary files /dev/null and b/translated_images/grove-led.6c853be93f473cf2c439cfc74bb1064732b22251a83cedf66e62f783f9cc1a79.lt.png differ
diff --git a/translated_images/grove-light-sensor.b8127b7c434e632d6bcdb57587a14e9ef69a268a22df95d08628f62b8fa5505c.en.png b/translated_images/grove-light-sensor.b8127b7c434e632d6bcdb57587a14e9ef69a268a22df95d08628f62b8fa5505c.en.png
new file mode 100644
index 00000000..3a4445ee
Binary files /dev/null and b/translated_images/grove-light-sensor.b8127b7c434e632d6bcdb57587a14e9ef69a268a22df95d08628f62b8fa5505c.en.png differ
diff --git a/translated_images/grove-light-sensor.b8127b7c434e632d6bcdb57587a14e9ef69a268a22df95d08628f62b8fa5505c.lt.png b/translated_images/grove-light-sensor.b8127b7c434e632d6bcdb57587a14e9ef69a268a22df95d08628f62b8fa5505c.lt.png
new file mode 100644
index 00000000..3a4445ee
Binary files /dev/null and b/translated_images/grove-light-sensor.b8127b7c434e632d6bcdb57587a14e9ef69a268a22df95d08628f62b8fa5505c.lt.png differ
diff --git a/translated_images/grove-relay-labelled.293e068f5c3c2a199bd7892f2661fdc9e10c920b535cfed317fbd6d1d4ae1168.en.png b/translated_images/grove-relay-labelled.293e068f5c3c2a199bd7892f2661fdc9e10c920b535cfed317fbd6d1d4ae1168.en.png
new file mode 100644
index 00000000..b2bf4d3f
Binary files /dev/null and b/translated_images/grove-relay-labelled.293e068f5c3c2a199bd7892f2661fdc9e10c920b535cfed317fbd6d1d4ae1168.en.png differ
diff --git a/translated_images/grove-relay-labelled.293e068f5c3c2a199bd7892f2661fdc9e10c920b535cfed317fbd6d1d4ae1168.lt.png b/translated_images/grove-relay-labelled.293e068f5c3c2a199bd7892f2661fdc9e10c920b535cfed317fbd6d1d4ae1168.lt.png
new file mode 100644
index 00000000..b2bf4d3f
Binary files /dev/null and b/translated_images/grove-relay-labelled.293e068f5c3c2a199bd7892f2661fdc9e10c920b535cfed317fbd6d1d4ae1168.lt.png differ
diff --git a/translated_images/grove-relay.d426958ca210fbd0fb7983d7edc069d46c73a8b0a099d94797bd756f7b6bb6be.en.png b/translated_images/grove-relay.d426958ca210fbd0fb7983d7edc069d46c73a8b0a099d94797bd756f7b6bb6be.en.png
new file mode 100644
index 00000000..467cedcd
Binary files /dev/null and b/translated_images/grove-relay.d426958ca210fbd0fb7983d7edc069d46c73a8b0a099d94797bd756f7b6bb6be.en.png differ
diff --git a/translated_images/grove-relay.d426958ca210fbd0fb7983d7edc069d46c73a8b0a099d94797bd756f7b6bb6be.lt.png b/translated_images/grove-relay.d426958ca210fbd0fb7983d7edc069d46c73a8b0a099d94797bd756f7b6bb6be.lt.png
new file mode 100644
index 00000000..467cedcd
Binary files /dev/null and b/translated_images/grove-relay.d426958ca210fbd0fb7983d7edc069d46c73a8b0a099d94797bd756f7b6bb6be.lt.png differ
diff --git a/translated_images/grove-time-of-flight-sensor.d82ff2165bfded9f485de54d8d07195a6270a602696825fca19f629ddfe94e86.en.png b/translated_images/grove-time-of-flight-sensor.d82ff2165bfded9f485de54d8d07195a6270a602696825fca19f629ddfe94e86.en.png
new file mode 100644
index 00000000..88efaa59
Binary files /dev/null and b/translated_images/grove-time-of-flight-sensor.d82ff2165bfded9f485de54d8d07195a6270a602696825fca19f629ddfe94e86.en.png differ
diff --git a/translated_images/grove-time-of-flight-sensor.d82ff2165bfded9f485de54d8d07195a6270a602696825fca19f629ddfe94e86.lt.png b/translated_images/grove-time-of-flight-sensor.d82ff2165bfded9f485de54d8d07195a6270a602696825fca19f629ddfe94e86.lt.png
new file mode 100644
index 00000000..88efaa59
Binary files /dev/null and b/translated_images/grove-time-of-flight-sensor.d82ff2165bfded9f485de54d8d07195a6270a602696825fca19f629ddfe94e86.lt.png differ
diff --git a/translated_images/gsm-calculation-example.99f9803b4f29e97668e7c15412136c0c399ab12dbba0b89596fdae9d8aedb6fb.en.png b/translated_images/gsm-calculation-example.99f9803b4f29e97668e7c15412136c0c399ab12dbba0b89596fdae9d8aedb6fb.en.png
new file mode 100644
index 00000000..6197ed95
Binary files /dev/null and b/translated_images/gsm-calculation-example.99f9803b4f29e97668e7c15412136c0c399ab12dbba0b89596fdae9d8aedb6fb.en.png differ
diff --git a/translated_images/gsm-calculation-example.99f9803b4f29e97668e7c15412136c0c399ab12dbba0b89596fdae9d8aedb6fb.lt.png b/translated_images/gsm-calculation-example.99f9803b4f29e97668e7c15412136c0c399ab12dbba0b89596fdae9d8aedb6fb.lt.png
new file mode 100644
index 00000000..6197ed95
Binary files /dev/null and b/translated_images/gsm-calculation-example.99f9803b4f29e97668e7c15412136c0c399ab12dbba0b89596fdae9d8aedb6fb.lt.png differ
diff --git a/translated_images/gsm-calculation.6da38c6201eec14e7573bb2647aa18892883193553d23c9d77e5dc681522dfb2.en.png b/translated_images/gsm-calculation.6da38c6201eec14e7573bb2647aa18892883193553d23c9d77e5dc681522dfb2.en.png
new file mode 100644
index 00000000..ec7768da
Binary files /dev/null and b/translated_images/gsm-calculation.6da38c6201eec14e7573bb2647aa18892883193553d23c9d77e5dc681522dfb2.en.png differ
diff --git a/translated_images/gsm-calculation.6da38c6201eec14e7573bb2647aa18892883193553d23c9d77e5dc681522dfb2.lt.png b/translated_images/gsm-calculation.6da38c6201eec14e7573bb2647aa18892883193553d23c9d77e5dc681522dfb2.lt.png
new file mode 100644
index 00000000..ec7768da
Binary files /dev/null and b/translated_images/gsm-calculation.6da38c6201eec14e7573bb2647aa18892883193553d23c9d77e5dc681522dfb2.lt.png differ
diff --git a/translated_images/i2c.83da845dde02256bdd462dbe0d5145461416b74930571b89d1ae142841eeb584.en.png b/translated_images/i2c.83da845dde02256bdd462dbe0d5145461416b74930571b89d1ae142841eeb584.en.png
new file mode 100644
index 00000000..f68bf461
Binary files /dev/null and b/translated_images/i2c.83da845dde02256bdd462dbe0d5145461416b74930571b89d1ae142841eeb584.en.png differ
diff --git a/translated_images/i2c.83da845dde02256bdd462dbe0d5145461416b74930571b89d1ae142841eeb584.lt.png b/translated_images/i2c.83da845dde02256bdd462dbe0d5145461416b74930571b89d1ae142841eeb584.lt.png
new file mode 100644
index 00000000..f68bf461
Binary files /dev/null and b/translated_images/i2c.83da845dde02256bdd462dbe0d5145461416b74930571b89d1ae142841eeb584.lt.png differ
diff --git a/translated_images/image-classifier-cashews-tomato.bc2e16ab8f05cf9ac0f59f73e32efc4227f9a5b601b90b2c60f436694547a965.en.png b/translated_images/image-classifier-cashews-tomato.bc2e16ab8f05cf9ac0f59f73e32efc4227f9a5b601b90b2c60f436694547a965.en.png
new file mode 100644
index 00000000..73e34cfe
Binary files /dev/null and b/translated_images/image-classifier-cashews-tomato.bc2e16ab8f05cf9ac0f59f73e32efc4227f9a5b601b90b2c60f436694547a965.en.png differ
diff --git a/translated_images/image-classifier-cashews-tomato.bc2e16ab8f05cf9ac0f59f73e32efc4227f9a5b601b90b2c60f436694547a965.lt.png b/translated_images/image-classifier-cashews-tomato.bc2e16ab8f05cf9ac0f59f73e32efc4227f9a5b601b90b2c60f436694547a965.lt.png
new file mode 100644
index 00000000..73e34cfe
Binary files /dev/null and b/translated_images/image-classifier-cashews-tomato.bc2e16ab8f05cf9ac0f59f73e32efc4227f9a5b601b90b2c60f436694547a965.lt.png differ
diff --git a/translated_images/image-upload-bananas.0751639f3815e0ec42bdbc6254d1e4357a185834d1ae10c9948a0e7d6d336695.en.png b/translated_images/image-upload-bananas.0751639f3815e0ec42bdbc6254d1e4357a185834d1ae10c9948a0e7d6d336695.en.png
new file mode 100644
index 00000000..21cc6bd0
Binary files /dev/null and b/translated_images/image-upload-bananas.0751639f3815e0ec42bdbc6254d1e4357a185834d1ae10c9948a0e7d6d336695.en.png differ
diff --git a/translated_images/image-upload-bananas.0751639f3815e0ec42bdbc6254d1e4357a185834d1ae10c9948a0e7d6d336695.lt.png b/translated_images/image-upload-bananas.0751639f3815e0ec42bdbc6254d1e4357a185834d1ae10c9948a0e7d6d336695.lt.png
new file mode 100644
index 00000000..21cc6bd0
Binary files /dev/null and b/translated_images/image-upload-bananas.0751639f3815e0ec42bdbc6254d1e4357a185834d1ae10c9948a0e7d6d336695.lt.png differ
diff --git a/translated_images/image-upload-object-detector.77c7892c3093cb59b79018edecd678749a75d71a099bc8a2d2f2f76320f88a5b.en.png b/translated_images/image-upload-object-detector.77c7892c3093cb59b79018edecd678749a75d71a099bc8a2d2f2f76320f88a5b.en.png
new file mode 100644
index 00000000..9c7deb23
Binary files /dev/null and b/translated_images/image-upload-object-detector.77c7892c3093cb59b79018edecd678749a75d71a099bc8a2d2f2f76320f88a5b.en.png differ
diff --git a/translated_images/image-upload-object-detector.77c7892c3093cb59b79018edecd678749a75d71a099bc8a2d2f2f76320f88a5b.lt.png b/translated_images/image-upload-object-detector.77c7892c3093cb59b79018edecd678749a75d71a099bc8a2d2f2f76320f88a5b.lt.png
new file mode 100644
index 00000000..9c7deb23
Binary files /dev/null and b/translated_images/image-upload-object-detector.77c7892c3093cb59b79018edecd678749a75d71a099bc8a2d2f2f76320f88a5b.lt.png differ
diff --git a/translated_images/iot-device-and-hacked-device-connecting-encryption.5941aff601fc978f979e46f2849b573564eeb4a4dc5b52f669f62745397492fb.en.png b/translated_images/iot-device-and-hacked-device-connecting-encryption.5941aff601fc978f979e46f2849b573564eeb4a4dc5b52f669f62745397492fb.en.png
new file mode 100644
index 00000000..ddc9958b
Binary files /dev/null and b/translated_images/iot-device-and-hacked-device-connecting-encryption.5941aff601fc978f979e46f2849b573564eeb4a4dc5b52f669f62745397492fb.en.png differ
diff --git a/translated_images/iot-device-and-hacked-device-connecting-encryption.5941aff601fc978f979e46f2849b573564eeb4a4dc5b52f669f62745397492fb.lt.png b/translated_images/iot-device-and-hacked-device-connecting-encryption.5941aff601fc978f979e46f2849b573564eeb4a4dc5b52f669f62745397492fb.lt.png
new file mode 100644
index 00000000..ddc9958b
Binary files /dev/null and b/translated_images/iot-device-and-hacked-device-connecting-encryption.5941aff601fc978f979e46f2849b573564eeb4a4dc5b52f669f62745397492fb.lt.png differ
diff --git a/translated_images/iot-device-and-hacked-device-connecting.e0671675df74d6d99eb1dedb5a670e606f698efa6202b1ad4c8ae548db299cc6.en.png b/translated_images/iot-device-and-hacked-device-connecting.e0671675df74d6d99eb1dedb5a670e606f698efa6202b1ad4c8ae548db299cc6.en.png
new file mode 100644
index 00000000..d181210a
Binary files /dev/null and b/translated_images/iot-device-and-hacked-device-connecting.e0671675df74d6d99eb1dedb5a670e606f698efa6202b1ad4c8ae548db299cc6.en.png differ
diff --git a/translated_images/iot-device-and-hacked-device-connecting.e0671675df74d6d99eb1dedb5a670e606f698efa6202b1ad4c8ae548db299cc6.lt.png b/translated_images/iot-device-and-hacked-device-connecting.e0671675df74d6d99eb1dedb5a670e606f698efa6202b1ad4c8ae548db299cc6.lt.png
new file mode 100644
index 00000000..d181210a
Binary files /dev/null and b/translated_images/iot-device-and-hacked-device-connecting.e0671675df74d6d99eb1dedb5a670e606f698efa6202b1ad4c8ae548db299cc6.lt.png differ
diff --git a/translated_images/iot-for-beginners.95958e2ed1900917f0c2173dd725ae0a2c1af97b9a26e56c76d3c8c8925f32ee.en.png b/translated_images/iot-for-beginners.95958e2ed1900917f0c2173dd725ae0a2c1af97b9a26e56c76d3c8c8925f32ee.en.png
new file mode 100644
index 00000000..a00ab427
Binary files /dev/null and b/translated_images/iot-for-beginners.95958e2ed1900917f0c2173dd725ae0a2c1af97b9a26e56c76d3c8c8925f32ee.en.png differ
diff --git a/translated_images/iot-for-beginners.95958e2ed1900917f0c2173dd725ae0a2c1af97b9a26e56c76d3c8c8925f32ee.lt.png b/translated_images/iot-for-beginners.95958e2ed1900917f0c2173dd725ae0a2c1af97b9a26e56c76d3c8c8925f32ee.lt.png
new file mode 100644
index 00000000..a00ab427
Binary files /dev/null and b/translated_images/iot-for-beginners.95958e2ed1900917f0c2173dd725ae0a2c1af97b9a26e56c76d3c8c8925f32ee.lt.png differ
diff --git a/translated_images/iot-hub-cloud-to-device-message.f4f21fea772cc20ba15004d853b805f6c01b612d257df6295ed7618550308aaf.en.png b/translated_images/iot-hub-cloud-to-device-message.f4f21fea772cc20ba15004d853b805f6c01b612d257df6295ed7618550308aaf.en.png
new file mode 100644
index 00000000..dedb38a3
Binary files /dev/null and b/translated_images/iot-hub-cloud-to-device-message.f4f21fea772cc20ba15004d853b805f6c01b612d257df6295ed7618550308aaf.en.png differ
diff --git a/translated_images/iot-hub-cloud-to-device-message.f4f21fea772cc20ba15004d853b805f6c01b612d257df6295ed7618550308aaf.lt.png b/translated_images/iot-hub-cloud-to-device-message.f4f21fea772cc20ba15004d853b805f6c01b612d257df6295ed7618550308aaf.lt.png
new file mode 100644
index 00000000..dedb38a3
Binary files /dev/null and b/translated_images/iot-hub-cloud-to-device-message.f4f21fea772cc20ba15004d853b805f6c01b612d257df6295ed7618550308aaf.lt.png differ
diff --git a/translated_images/iot-hub-device-to-cloud-message.e46e584d87f35fd952657f0b566dcac59473fe960d87c96fa54a4b5438ddc31f.en.png b/translated_images/iot-hub-device-to-cloud-message.e46e584d87f35fd952657f0b566dcac59473fe960d87c96fa54a4b5438ddc31f.en.png
new file mode 100644
index 00000000..2b34487d
Binary files /dev/null and b/translated_images/iot-hub-device-to-cloud-message.e46e584d87f35fd952657f0b566dcac59473fe960d87c96fa54a4b5438ddc31f.en.png differ
diff --git a/translated_images/iot-hub-device-to-cloud-message.e46e584d87f35fd952657f0b566dcac59473fe960d87c96fa54a4b5438ddc31f.lt.png b/translated_images/iot-hub-device-to-cloud-message.e46e584d87f35fd952657f0b566dcac59473fe960d87c96fa54a4b5438ddc31f.lt.png
new file mode 100644
index 00000000..2b34487d
Binary files /dev/null and b/translated_images/iot-hub-device-to-cloud-message.e46e584d87f35fd952657f0b566dcac59473fe960d87c96fa54a4b5438ddc31f.lt.png differ
diff --git a/translated_images/iot-hub-device-twins.7055a60fc5e2331c44298ae157d72edec0022910b1a4bf4bc93f39c620878b68.en.png b/translated_images/iot-hub-device-twins.7055a60fc5e2331c44298ae157d72edec0022910b1a4bf4bc93f39c620878b68.en.png
new file mode 100644
index 00000000..1cae68ed
Binary files /dev/null and b/translated_images/iot-hub-device-twins.7055a60fc5e2331c44298ae157d72edec0022910b1a4bf4bc93f39c620878b68.en.png differ
diff --git a/translated_images/iot-hub-device-twins.7055a60fc5e2331c44298ae157d72edec0022910b1a4bf4bc93f39c620878b68.lt.png b/translated_images/iot-hub-device-twins.7055a60fc5e2331c44298ae157d72edec0022910b1a4bf4bc93f39c620878b68.lt.png
new file mode 100644
index 00000000..1cae68ed
Binary files /dev/null and b/translated_images/iot-hub-device-twins.7055a60fc5e2331c44298ae157d72edec0022910b1a4bf4bc93f39c620878b68.lt.png differ
diff --git a/translated_images/iot-hub-direct-method-request.86a5026e91f4ca1864e2043fab4b8199e42c2c6efc1209973cb56f199646b171.en.png b/translated_images/iot-hub-direct-method-request.86a5026e91f4ca1864e2043fab4b8199e42c2c6efc1209973cb56f199646b171.en.png
new file mode 100644
index 00000000..df961cae
Binary files /dev/null and b/translated_images/iot-hub-direct-method-request.86a5026e91f4ca1864e2043fab4b8199e42c2c6efc1209973cb56f199646b171.en.png differ
diff --git a/translated_images/iot-hub-direct-method-request.86a5026e91f4ca1864e2043fab4b8199e42c2c6efc1209973cb56f199646b171.lt.png b/translated_images/iot-hub-direct-method-request.86a5026e91f4ca1864e2043fab4b8199e42c2c6efc1209973cb56f199646b171.lt.png
new file mode 100644
index 00000000..df961cae
Binary files /dev/null and b/translated_images/iot-hub-direct-method-request.86a5026e91f4ca1864e2043fab4b8199e42c2c6efc1209973cb56f199646b171.lt.png differ
diff --git a/translated_images/iot-messages-to-serverless.0194da1cc0732bb7d0f823aed3fce54735c6b1ad3bf36089804d8aaefc0a774f.en.png b/translated_images/iot-messages-to-serverless.0194da1cc0732bb7d0f823aed3fce54735c6b1ad3bf36089804d8aaefc0a774f.en.png
new file mode 100644
index 00000000..aaeaeff8
Binary files /dev/null and b/translated_images/iot-messages-to-serverless.0194da1cc0732bb7d0f823aed3fce54735c6b1ad3bf36089804d8aaefc0a774f.en.png differ
diff --git a/translated_images/iot-messages-to-serverless.0194da1cc0732bb7d0f823aed3fce54735c6b1ad3bf36089804d8aaefc0a774f.lt.png b/translated_images/iot-messages-to-serverless.0194da1cc0732bb7d0f823aed3fce54735c6b1ad3bf36089804d8aaefc0a774f.lt.png
new file mode 100644
index 00000000..aaeaeff8
Binary files /dev/null and b/translated_images/iot-messages-to-serverless.0194da1cc0732bb7d0f823aed3fce54735c6b1ad3bf36089804d8aaefc0a774f.lt.png differ
diff --git a/translated_images/iot-reference-architecture-azure.0b8d2161af924cb18ae48a8558a19541cca47f27264851b5b7e56d7b8bb372ac.en.png b/translated_images/iot-reference-architecture-azure.0b8d2161af924cb18ae48a8558a19541cca47f27264851b5b7e56d7b8bb372ac.en.png
new file mode 100644
index 00000000..7613fe86
Binary files /dev/null and b/translated_images/iot-reference-architecture-azure.0b8d2161af924cb18ae48a8558a19541cca47f27264851b5b7e56d7b8bb372ac.en.png differ
diff --git a/translated_images/iot-reference-architecture-azure.0b8d2161af924cb18ae48a8558a19541cca47f27264851b5b7e56d7b8bb372ac.lt.png b/translated_images/iot-reference-architecture-azure.0b8d2161af924cb18ae48a8558a19541cca47f27264851b5b7e56d7b8bb372ac.lt.png
new file mode 100644
index 00000000..7613fe86
Binary files /dev/null and b/translated_images/iot-reference-architecture-azure.0b8d2161af924cb18ae48a8558a19541cca47f27264851b5b7e56d7b8bb372ac.lt.png differ
diff --git a/translated_images/iot-reference-architecture-fruit-quality.cc705f121c3b6fa71c800d9630935ac34bc08223a04601e35f41d5e9b5dd5207.en.png b/translated_images/iot-reference-architecture-fruit-quality.cc705f121c3b6fa71c800d9630935ac34bc08223a04601e35f41d5e9b5dd5207.en.png
new file mode 100644
index 00000000..335bdf32
Binary files /dev/null and b/translated_images/iot-reference-architecture-fruit-quality.cc705f121c3b6fa71c800d9630935ac34bc08223a04601e35f41d5e9b5dd5207.en.png differ
diff --git a/translated_images/iot-reference-architecture-fruit-quality.cc705f121c3b6fa71c800d9630935ac34bc08223a04601e35f41d5e9b5dd5207.lt.png b/translated_images/iot-reference-architecture-fruit-quality.cc705f121c3b6fa71c800d9630935ac34bc08223a04601e35f41d5e9b5dd5207.lt.png
new file mode 100644
index 00000000..335bdf32
Binary files /dev/null and b/translated_images/iot-reference-architecture-fruit-quality.cc705f121c3b6fa71c800d9630935ac34bc08223a04601e35f41d5e9b5dd5207.lt.png differ
diff --git a/translated_images/iot-reference-architecture.2278b98b55c6d4e89bde18eada3688d893861d43507641804dd2f9d3079cfaa0.en.png b/translated_images/iot-reference-architecture.2278b98b55c6d4e89bde18eada3688d893861d43507641804dd2f9d3079cfaa0.en.png
new file mode 100644
index 00000000..32c8ba10
Binary files /dev/null and b/translated_images/iot-reference-architecture.2278b98b55c6d4e89bde18eada3688d893861d43507641804dd2f9d3079cfaa0.en.png differ
diff --git a/translated_images/iot-reference-architecture.2278b98b55c6d4e89bde18eada3688d893861d43507641804dd2f9d3079cfaa0.lt.png b/translated_images/iot-reference-architecture.2278b98b55c6d4e89bde18eada3688d893861d43507641804dd2f9d3079cfaa0.lt.png
new file mode 100644
index 00000000..32c8ba10
Binary files /dev/null and b/translated_images/iot-reference-architecture.2278b98b55c6d4e89bde18eada3688d893861d43507641804dd2f9d3079cfaa0.lt.png differ
diff --git a/translated_images/iot-service-allowed-denied-connection.818b0063ac213fb84204a7229303764d9b467ca430fb822b4ac2fca267d56726.en.png b/translated_images/iot-service-allowed-denied-connection.818b0063ac213fb84204a7229303764d9b467ca430fb822b4ac2fca267d56726.en.png
new file mode 100644
index 00000000..82802e17
Binary files /dev/null and b/translated_images/iot-service-allowed-denied-connection.818b0063ac213fb84204a7229303764d9b467ca430fb822b4ac2fca267d56726.en.png differ
diff --git a/translated_images/iot-service-allowed-denied-connection.818b0063ac213fb84204a7229303764d9b467ca430fb822b4ac2fca267d56726.lt.png b/translated_images/iot-service-allowed-denied-connection.818b0063ac213fb84204a7229303764d9b467ca430fb822b4ac2fca267d56726.lt.png
new file mode 100644
index 00000000..82802e17
Binary files /dev/null and b/translated_images/iot-service-allowed-denied-connection.818b0063ac213fb84204a7229303764d9b467ca430fb822b4ac2fca267d56726.lt.png differ
diff --git a/translated_images/iot-service-connectivity.7e873847921a5d6fd60d0ba3a943210194518cee0d4e362476624316443275c3.en.png b/translated_images/iot-service-connectivity.7e873847921a5d6fd60d0ba3a943210194518cee0d4e362476624316443275c3.en.png
new file mode 100644
index 00000000..8214fc2c
Binary files /dev/null and b/translated_images/iot-service-connectivity.7e873847921a5d6fd60d0ba3a943210194518cee0d4e362476624316443275c3.en.png differ
diff --git a/translated_images/iot-service-connectivity.7e873847921a5d6fd60d0ba3a943210194518cee0d4e362476624316443275c3.lt.png b/translated_images/iot-service-connectivity.7e873847921a5d6fd60d0ba3a943210194518cee0d4e362476624316443275c3.lt.png
new file mode 100644
index 00000000..8214fc2c
Binary files /dev/null and b/translated_images/iot-service-connectivity.7e873847921a5d6fd60d0ba3a943210194518cee0d4e362476624316443275c3.lt.png differ
diff --git a/translated_images/latitude-equator.feccc3214b7d9fb1e1b2e44f938081c85149f092152de1509783b344e5f2097a.en.png b/translated_images/latitude-equator.feccc3214b7d9fb1e1b2e44f938081c85149f092152de1509783b344e5f2097a.en.png
new file mode 100644
index 00000000..434baaad
Binary files /dev/null and b/translated_images/latitude-equator.feccc3214b7d9fb1e1b2e44f938081c85149f092152de1509783b344e5f2097a.en.png differ
diff --git a/translated_images/latitude-equator.feccc3214b7d9fb1e1b2e44f938081c85149f092152de1509783b344e5f2097a.lt.png b/translated_images/latitude-equator.feccc3214b7d9fb1e1b2e44f938081c85149f092152de1509783b344e5f2097a.lt.png
new file mode 100644
index 00000000..434baaad
Binary files /dev/null and b/translated_images/latitude-equator.feccc3214b7d9fb1e1b2e44f938081c85149f092152de1509783b344e5f2097a.lt.png differ
diff --git a/translated_images/latitude-lines.11d8d91dfb2014a57437272d7db7fd6607243098e8685f06e0c5f1ec984cb7eb.en.png b/translated_images/latitude-lines.11d8d91dfb2014a57437272d7db7fd6607243098e8685f06e0c5f1ec984cb7eb.en.png
new file mode 100644
index 00000000..d32271b5
Binary files /dev/null and b/translated_images/latitude-lines.11d8d91dfb2014a57437272d7db7fd6607243098e8685f06e0c5f1ec984cb7eb.en.png differ
diff --git a/translated_images/latitude-lines.11d8d91dfb2014a57437272d7db7fd6607243098e8685f06e0c5f1ec984cb7eb.lt.png b/translated_images/latitude-lines.11d8d91dfb2014a57437272d7db7fd6607243098e8685f06e0c5f1ec984cb7eb.lt.png
new file mode 100644
index 00000000..d32271b5
Binary files /dev/null and b/translated_images/latitude-lines.11d8d91dfb2014a57437272d7db7fd6607243098e8685f06e0c5f1ec984cb7eb.lt.png differ
diff --git a/translated_images/led-digital-control.13b9be14077ea49f883c2ec52e1ce1c587804f2ed653f4061661e6a8783dd8c7.en.png b/translated_images/led-digital-control.13b9be14077ea49f883c2ec52e1ce1c587804f2ed653f4061661e6a8783dd8c7.en.png
new file mode 100644
index 00000000..04cd7dc8
Binary files /dev/null and b/translated_images/led-digital-control.13b9be14077ea49f883c2ec52e1ce1c587804f2ed653f4061661e6a8783dd8c7.en.png differ
diff --git a/translated_images/led-digital-control.13b9be14077ea49f883c2ec52e1ce1c587804f2ed653f4061661e6a8783dd8c7.lt.png b/translated_images/led-digital-control.13b9be14077ea49f883c2ec52e1ce1c587804f2ed653f4061661e6a8783dd8c7.lt.png
new file mode 100644
index 00000000..04cd7dc8
Binary files /dev/null and b/translated_images/led-digital-control.13b9be14077ea49f883c2ec52e1ce1c587804f2ed653f4061661e6a8783dd8c7.lt.png differ
diff --git a/translated_images/led.ec6d94f66676a174ad06d9fa9ea49c2ee89beb18b312d5c6476467c66375b07f.en.png b/translated_images/led.ec6d94f66676a174ad06d9fa9ea49c2ee89beb18b312d5c6476467c66375b07f.en.png
new file mode 100644
index 00000000..a8a12bce
Binary files /dev/null and b/translated_images/led.ec6d94f66676a174ad06d9fa9ea49c2ee89beb18b312d5c6476467c66375b07f.en.png differ
diff --git a/translated_images/led.ec6d94f66676a174ad06d9fa9ea49c2ee89beb18b312d5c6476467c66375b07f.lt.png b/translated_images/led.ec6d94f66676a174ad06d9fa9ea49c2ee89beb18b312d5c6476467c66375b07f.lt.png
new file mode 100644
index 00000000..a8a12bce
Binary files /dev/null and b/translated_images/led.ec6d94f66676a174ad06d9fa9ea49c2ee89beb18b312d5c6476467c66375b07f.lt.png differ
diff --git a/translated_images/lesson-1.2606670fa61ee904687da5d6fa4e726639d524d064c895117da1b95b9ff6251d.en.jpg b/translated_images/lesson-1.2606670fa61ee904687da5d6fa4e726639d524d064c895117da1b95b9ff6251d.en.jpg
new file mode 100644
index 00000000..23ea98b2
Binary files /dev/null and b/translated_images/lesson-1.2606670fa61ee904687da5d6fa4e726639d524d064c895117da1b95b9ff6251d.en.jpg differ
diff --git a/translated_images/lesson-1.2606670fa61ee904687da5d6fa4e726639d524d064c895117da1b95b9ff6251d.lt.jpg b/translated_images/lesson-1.2606670fa61ee904687da5d6fa4e726639d524d064c895117da1b95b9ff6251d.lt.jpg
new file mode 100644
index 00000000..23ea98b2
Binary files /dev/null and b/translated_images/lesson-1.2606670fa61ee904687da5d6fa4e726639d524d064c895117da1b95b9ff6251d.lt.jpg differ
diff --git a/translated_images/lesson-10.829c86b80b9403bb770929ee553a1d293afe50dc23121aaf9be144673ae012cc.en.jpg b/translated_images/lesson-10.829c86b80b9403bb770929ee553a1d293afe50dc23121aaf9be144673ae012cc.en.jpg
new file mode 100644
index 00000000..1e3581d3
Binary files /dev/null and b/translated_images/lesson-10.829c86b80b9403bb770929ee553a1d293afe50dc23121aaf9be144673ae012cc.en.jpg differ
diff --git a/translated_images/lesson-10.829c86b80b9403bb770929ee553a1d293afe50dc23121aaf9be144673ae012cc.lt.jpg b/translated_images/lesson-10.829c86b80b9403bb770929ee553a1d293afe50dc23121aaf9be144673ae012cc.lt.jpg
new file mode 100644
index 00000000..1e3581d3
Binary files /dev/null and b/translated_images/lesson-10.829c86b80b9403bb770929ee553a1d293afe50dc23121aaf9be144673ae012cc.lt.jpg differ
diff --git a/translated_images/lesson-11.9fddbac4b664c6d50ab7ac9bb32f1fc3f945f03760e72f7f43938073762fb017.en.jpg b/translated_images/lesson-11.9fddbac4b664c6d50ab7ac9bb32f1fc3f945f03760e72f7f43938073762fb017.en.jpg
new file mode 100644
index 00000000..554ea37b
Binary files /dev/null and b/translated_images/lesson-11.9fddbac4b664c6d50ab7ac9bb32f1fc3f945f03760e72f7f43938073762fb017.en.jpg differ
diff --git a/translated_images/lesson-11.9fddbac4b664c6d50ab7ac9bb32f1fc3f945f03760e72f7f43938073762fb017.lt.jpg b/translated_images/lesson-11.9fddbac4b664c6d50ab7ac9bb32f1fc3f945f03760e72f7f43938073762fb017.lt.jpg
new file mode 100644
index 00000000..554ea37b
Binary files /dev/null and b/translated_images/lesson-11.9fddbac4b664c6d50ab7ac9bb32f1fc3f945f03760e72f7f43938073762fb017.lt.jpg differ
diff --git a/translated_images/lesson-12.ca7f53039712a3ec14ad6474d8445361c84adab643edc53fa6269b77895606bb.en.jpg b/translated_images/lesson-12.ca7f53039712a3ec14ad6474d8445361c84adab643edc53fa6269b77895606bb.en.jpg
new file mode 100644
index 00000000..427ba4c3
Binary files /dev/null and b/translated_images/lesson-12.ca7f53039712a3ec14ad6474d8445361c84adab643edc53fa6269b77895606bb.en.jpg differ
diff --git a/translated_images/lesson-12.ca7f53039712a3ec14ad6474d8445361c84adab643edc53fa6269b77895606bb.lt.jpg b/translated_images/lesson-12.ca7f53039712a3ec14ad6474d8445361c84adab643edc53fa6269b77895606bb.lt.jpg
new file mode 100644
index 00000000..427ba4c3
Binary files /dev/null and b/translated_images/lesson-12.ca7f53039712a3ec14ad6474d8445361c84adab643edc53fa6269b77895606bb.lt.jpg differ
diff --git a/translated_images/lesson-13.a259db1485021be7d7c72e90842fbe0ab977529e8684c179b5fb1ea75e92b3ef.en.jpg b/translated_images/lesson-13.a259db1485021be7d7c72e90842fbe0ab977529e8684c179b5fb1ea75e92b3ef.en.jpg
new file mode 100644
index 00000000..b2357285
Binary files /dev/null and b/translated_images/lesson-13.a259db1485021be7d7c72e90842fbe0ab977529e8684c179b5fb1ea75e92b3ef.en.jpg differ
diff --git a/translated_images/lesson-13.a259db1485021be7d7c72e90842fbe0ab977529e8684c179b5fb1ea75e92b3ef.lt.jpg b/translated_images/lesson-13.a259db1485021be7d7c72e90842fbe0ab977529e8684c179b5fb1ea75e92b3ef.lt.jpg
new file mode 100644
index 00000000..b2357285
Binary files /dev/null and b/translated_images/lesson-13.a259db1485021be7d7c72e90842fbe0ab977529e8684c179b5fb1ea75e92b3ef.lt.jpg differ
diff --git a/translated_images/lesson-14.63980c5150ae3c153e770fb71d044c1845dce79248d86bed9fc525adf3ede73c.en.jpg b/translated_images/lesson-14.63980c5150ae3c153e770fb71d044c1845dce79248d86bed9fc525adf3ede73c.en.jpg
new file mode 100644
index 00000000..1736ebb4
Binary files /dev/null and b/translated_images/lesson-14.63980c5150ae3c153e770fb71d044c1845dce79248d86bed9fc525adf3ede73c.en.jpg differ
diff --git a/translated_images/lesson-14.63980c5150ae3c153e770fb71d044c1845dce79248d86bed9fc525adf3ede73c.lt.jpg b/translated_images/lesson-14.63980c5150ae3c153e770fb71d044c1845dce79248d86bed9fc525adf3ede73c.lt.jpg
new file mode 100644
index 00000000..1736ebb4
Binary files /dev/null and b/translated_images/lesson-14.63980c5150ae3c153e770fb71d044c1845dce79248d86bed9fc525adf3ede73c.lt.jpg differ
diff --git a/translated_images/lesson-15.843d21afdc6fb2bba70cd9db7b7d2f91598859fafda2078b0bdc44954194b6c0.en.jpg b/translated_images/lesson-15.843d21afdc6fb2bba70cd9db7b7d2f91598859fafda2078b0bdc44954194b6c0.en.jpg
new file mode 100644
index 00000000..bf1d724f
Binary files /dev/null and b/translated_images/lesson-15.843d21afdc6fb2bba70cd9db7b7d2f91598859fafda2078b0bdc44954194b6c0.en.jpg differ
diff --git a/translated_images/lesson-15.843d21afdc6fb2bba70cd9db7b7d2f91598859fafda2078b0bdc44954194b6c0.lt.jpg b/translated_images/lesson-15.843d21afdc6fb2bba70cd9db7b7d2f91598859fafda2078b0bdc44954194b6c0.lt.jpg
new file mode 100644
index 00000000..bf1d724f
Binary files /dev/null and b/translated_images/lesson-15.843d21afdc6fb2bba70cd9db7b7d2f91598859fafda2078b0bdc44954194b6c0.lt.jpg differ
diff --git a/translated_images/lesson-16.215daf18b00631fbdfd64c6fc2dc6044dff5d544288825d8076f9fb83d964c23.en.jpg b/translated_images/lesson-16.215daf18b00631fbdfd64c6fc2dc6044dff5d544288825d8076f9fb83d964c23.en.jpg
new file mode 100644
index 00000000..bb78259a
Binary files /dev/null and b/translated_images/lesson-16.215daf18b00631fbdfd64c6fc2dc6044dff5d544288825d8076f9fb83d964c23.en.jpg differ
diff --git a/translated_images/lesson-16.215daf18b00631fbdfd64c6fc2dc6044dff5d544288825d8076f9fb83d964c23.lt.jpg b/translated_images/lesson-16.215daf18b00631fbdfd64c6fc2dc6044dff5d544288825d8076f9fb83d964c23.lt.jpg
new file mode 100644
index 00000000..bb78259a
Binary files /dev/null and b/translated_images/lesson-16.215daf18b00631fbdfd64c6fc2dc6044dff5d544288825d8076f9fb83d964c23.lt.jpg differ
diff --git a/translated_images/lesson-17.bc333c3c35ba8e42cce666cfffa82b915f787f455bd94e006aea2b6f2722421a.en.jpg b/translated_images/lesson-17.bc333c3c35ba8e42cce666cfffa82b915f787f455bd94e006aea2b6f2722421a.en.jpg
new file mode 100644
index 00000000..b311b568
Binary files /dev/null and b/translated_images/lesson-17.bc333c3c35ba8e42cce666cfffa82b915f787f455bd94e006aea2b6f2722421a.en.jpg differ
diff --git a/translated_images/lesson-17.bc333c3c35ba8e42cce666cfffa82b915f787f455bd94e006aea2b6f2722421a.lt.jpg b/translated_images/lesson-17.bc333c3c35ba8e42cce666cfffa82b915f787f455bd94e006aea2b6f2722421a.lt.jpg
new file mode 100644
index 00000000..b311b568
Binary files /dev/null and b/translated_images/lesson-17.bc333c3c35ba8e42cce666cfffa82b915f787f455bd94e006aea2b6f2722421a.lt.jpg differ
diff --git a/translated_images/lesson-18.92c32ed1d354caa5a54baa4032cf0b172d4655e8e326ad5d46c558a0def15365.en.jpg b/translated_images/lesson-18.92c32ed1d354caa5a54baa4032cf0b172d4655e8e326ad5d46c558a0def15365.en.jpg
new file mode 100644
index 00000000..5bd350fd
Binary files /dev/null and b/translated_images/lesson-18.92c32ed1d354caa5a54baa4032cf0b172d4655e8e326ad5d46c558a0def15365.en.jpg differ
diff --git a/translated_images/lesson-18.92c32ed1d354caa5a54baa4032cf0b172d4655e8e326ad5d46c558a0def15365.lt.jpg b/translated_images/lesson-18.92c32ed1d354caa5a54baa4032cf0b172d4655e8e326ad5d46c558a0def15365.lt.jpg
new file mode 100644
index 00000000..5bd350fd
Binary files /dev/null and b/translated_images/lesson-18.92c32ed1d354caa5a54baa4032cf0b172d4655e8e326ad5d46c558a0def15365.lt.jpg differ
diff --git a/translated_images/lesson-19.cf6973cecadf080c4b526310620dc4d6f5994c80fb0139c6f378cc9ca2d435cd.en.jpg b/translated_images/lesson-19.cf6973cecadf080c4b526310620dc4d6f5994c80fb0139c6f378cc9ca2d435cd.en.jpg
new file mode 100644
index 00000000..66fbe114
Binary files /dev/null and b/translated_images/lesson-19.cf6973cecadf080c4b526310620dc4d6f5994c80fb0139c6f378cc9ca2d435cd.en.jpg differ
diff --git a/translated_images/lesson-19.cf6973cecadf080c4b526310620dc4d6f5994c80fb0139c6f378cc9ca2d435cd.lt.jpg b/translated_images/lesson-19.cf6973cecadf080c4b526310620dc4d6f5994c80fb0139c6f378cc9ca2d435cd.lt.jpg
new file mode 100644
index 00000000..66fbe114
Binary files /dev/null and b/translated_images/lesson-19.cf6973cecadf080c4b526310620dc4d6f5994c80fb0139c6f378cc9ca2d435cd.lt.jpg differ
diff --git a/translated_images/lesson-2.324b0580d620c25e0a24fb7fddfc0b29a846dd4b82c08e7a9466d580ee78ce51.en.jpg b/translated_images/lesson-2.324b0580d620c25e0a24fb7fddfc0b29a846dd4b82c08e7a9466d580ee78ce51.en.jpg
new file mode 100644
index 00000000..050e7206
Binary files /dev/null and b/translated_images/lesson-2.324b0580d620c25e0a24fb7fddfc0b29a846dd4b82c08e7a9466d580ee78ce51.en.jpg differ
diff --git a/translated_images/lesson-2.324b0580d620c25e0a24fb7fddfc0b29a846dd4b82c08e7a9466d580ee78ce51.lt.jpg b/translated_images/lesson-2.324b0580d620c25e0a24fb7fddfc0b29a846dd4b82c08e7a9466d580ee78ce51.lt.jpg
new file mode 100644
index 00000000..050e7206
Binary files /dev/null and b/translated_images/lesson-2.324b0580d620c25e0a24fb7fddfc0b29a846dd4b82c08e7a9466d580ee78ce51.lt.jpg differ
diff --git a/translated_images/lesson-20.0211df9551a8abb300fc8fcf7dc2789468dea2eabe9202273ac077b0ba37f15e.en.jpg b/translated_images/lesson-20.0211df9551a8abb300fc8fcf7dc2789468dea2eabe9202273ac077b0ba37f15e.en.jpg
new file mode 100644
index 00000000..91c64faa
Binary files /dev/null and b/translated_images/lesson-20.0211df9551a8abb300fc8fcf7dc2789468dea2eabe9202273ac077b0ba37f15e.en.jpg differ
diff --git a/translated_images/lesson-20.0211df9551a8abb300fc8fcf7dc2789468dea2eabe9202273ac077b0ba37f15e.lt.jpg b/translated_images/lesson-20.0211df9551a8abb300fc8fcf7dc2789468dea2eabe9202273ac077b0ba37f15e.lt.jpg
new file mode 100644
index 00000000..91c64faa
Binary files /dev/null and b/translated_images/lesson-20.0211df9551a8abb300fc8fcf7dc2789468dea2eabe9202273ac077b0ba37f15e.lt.jpg differ
diff --git a/translated_images/lesson-21.e34de51354d6606fb5ee08d8c89d0222eea0a2a7aaf744a8805ae847c4f69dc4.en.jpg b/translated_images/lesson-21.e34de51354d6606fb5ee08d8c89d0222eea0a2a7aaf744a8805ae847c4f69dc4.en.jpg
new file mode 100644
index 00000000..36e1a4b3
Binary files /dev/null and b/translated_images/lesson-21.e34de51354d6606fb5ee08d8c89d0222eea0a2a7aaf744a8805ae847c4f69dc4.en.jpg differ
diff --git a/translated_images/lesson-21.e34de51354d6606fb5ee08d8c89d0222eea0a2a7aaf744a8805ae847c4f69dc4.lt.jpg b/translated_images/lesson-21.e34de51354d6606fb5ee08d8c89d0222eea0a2a7aaf744a8805ae847c4f69dc4.lt.jpg
new file mode 100644
index 00000000..36e1a4b3
Binary files /dev/null and b/translated_images/lesson-21.e34de51354d6606fb5ee08d8c89d0222eea0a2a7aaf744a8805ae847c4f69dc4.lt.jpg differ
diff --git a/translated_images/lesson-22.6148ea28500d9e00c396aaa2649935fb6641362c8f03d8e5e90a676977ab01dd.en.jpg b/translated_images/lesson-22.6148ea28500d9e00c396aaa2649935fb6641362c8f03d8e5e90a676977ab01dd.en.jpg
new file mode 100644
index 00000000..1b87df4c
Binary files /dev/null and b/translated_images/lesson-22.6148ea28500d9e00c396aaa2649935fb6641362c8f03d8e5e90a676977ab01dd.en.jpg differ
diff --git a/translated_images/lesson-22.6148ea28500d9e00c396aaa2649935fb6641362c8f03d8e5e90a676977ab01dd.lt.jpg b/translated_images/lesson-22.6148ea28500d9e00c396aaa2649935fb6641362c8f03d8e5e90a676977ab01dd.lt.jpg
new file mode 100644
index 00000000..1b87df4c
Binary files /dev/null and b/translated_images/lesson-22.6148ea28500d9e00c396aaa2649935fb6641362c8f03d8e5e90a676977ab01dd.lt.jpg differ
diff --git a/translated_images/lesson-23.f38483e1d4df4828990d3f02d60e46c978b075d384ae7cb4f7bab738e107c850.en.jpg b/translated_images/lesson-23.f38483e1d4df4828990d3f02d60e46c978b075d384ae7cb4f7bab738e107c850.en.jpg
new file mode 100644
index 00000000..8df37a22
Binary files /dev/null and b/translated_images/lesson-23.f38483e1d4df4828990d3f02d60e46c978b075d384ae7cb4f7bab738e107c850.en.jpg differ
diff --git a/translated_images/lesson-23.f38483e1d4df4828990d3f02d60e46c978b075d384ae7cb4f7bab738e107c850.lt.jpg b/translated_images/lesson-23.f38483e1d4df4828990d3f02d60e46c978b075d384ae7cb4f7bab738e107c850.lt.jpg
new file mode 100644
index 00000000..8df37a22
Binary files /dev/null and b/translated_images/lesson-23.f38483e1d4df4828990d3f02d60e46c978b075d384ae7cb4f7bab738e107c850.lt.jpg differ
diff --git a/translated_images/lesson-24.4246968ed058510ab275052e87ef9aa89c7b2f938915d103c605c04dc6cd5bb7.en.jpg b/translated_images/lesson-24.4246968ed058510ab275052e87ef9aa89c7b2f938915d103c605c04dc6cd5bb7.en.jpg
new file mode 100644
index 00000000..943af1b9
Binary files /dev/null and b/translated_images/lesson-24.4246968ed058510ab275052e87ef9aa89c7b2f938915d103c605c04dc6cd5bb7.en.jpg differ
diff --git a/translated_images/lesson-24.4246968ed058510ab275052e87ef9aa89c7b2f938915d103c605c04dc6cd5bb7.lt.jpg b/translated_images/lesson-24.4246968ed058510ab275052e87ef9aa89c7b2f938915d103c605c04dc6cd5bb7.lt.jpg
new file mode 100644
index 00000000..943af1b9
Binary files /dev/null and b/translated_images/lesson-24.4246968ed058510ab275052e87ef9aa89c7b2f938915d103c605c04dc6cd5bb7.lt.jpg differ
diff --git a/translated_images/lesson-3.cc3b7b4cd646de598698cce043c0393fd62ef42bac2eaf60e61272cd844250f4.en.jpg b/translated_images/lesson-3.cc3b7b4cd646de598698cce043c0393fd62ef42bac2eaf60e61272cd844250f4.en.jpg
new file mode 100644
index 00000000..5a96f7fb
Binary files /dev/null and b/translated_images/lesson-3.cc3b7b4cd646de598698cce043c0393fd62ef42bac2eaf60e61272cd844250f4.en.jpg differ
diff --git a/translated_images/lesson-3.cc3b7b4cd646de598698cce043c0393fd62ef42bac2eaf60e61272cd844250f4.lt.jpg b/translated_images/lesson-3.cc3b7b4cd646de598698cce043c0393fd62ef42bac2eaf60e61272cd844250f4.lt.jpg
new file mode 100644
index 00000000..5a96f7fb
Binary files /dev/null and b/translated_images/lesson-3.cc3b7b4cd646de598698cce043c0393fd62ef42bac2eaf60e61272cd844250f4.lt.jpg differ
diff --git a/translated_images/lesson-4.7344e074ea68fa545fd320b12dce36d72dd62d28c3b4596cb26cf315f434b98f.en.jpg b/translated_images/lesson-4.7344e074ea68fa545fd320b12dce36d72dd62d28c3b4596cb26cf315f434b98f.en.jpg
new file mode 100644
index 00000000..8f0bee50
Binary files /dev/null and b/translated_images/lesson-4.7344e074ea68fa545fd320b12dce36d72dd62d28c3b4596cb26cf315f434b98f.en.jpg differ
diff --git a/translated_images/lesson-4.7344e074ea68fa545fd320b12dce36d72dd62d28c3b4596cb26cf315f434b98f.lt.jpg b/translated_images/lesson-4.7344e074ea68fa545fd320b12dce36d72dd62d28c3b4596cb26cf315f434b98f.lt.jpg
new file mode 100644
index 00000000..8f0bee50
Binary files /dev/null and b/translated_images/lesson-4.7344e074ea68fa545fd320b12dce36d72dd62d28c3b4596cb26cf315f434b98f.lt.jpg differ
diff --git a/translated_images/lesson-5.42b234299279d263143148b88ab4583861a32ddb03110c6c1120e41bb88b2592.en.jpg b/translated_images/lesson-5.42b234299279d263143148b88ab4583861a32ddb03110c6c1120e41bb88b2592.en.jpg
new file mode 100644
index 00000000..4ba24109
Binary files /dev/null and b/translated_images/lesson-5.42b234299279d263143148b88ab4583861a32ddb03110c6c1120e41bb88b2592.en.jpg differ
diff --git a/translated_images/lesson-5.42b234299279d263143148b88ab4583861a32ddb03110c6c1120e41bb88b2592.lt.jpg b/translated_images/lesson-5.42b234299279d263143148b88ab4583861a32ddb03110c6c1120e41bb88b2592.lt.jpg
new file mode 100644
index 00000000..4ba24109
Binary files /dev/null and b/translated_images/lesson-5.42b234299279d263143148b88ab4583861a32ddb03110c6c1120e41bb88b2592.lt.jpg differ
diff --git a/translated_images/lesson-6.3e493b60eee85adc8c74dfeaaec3a3a6cfba61fedbcb84aa0146e7e80603a5dd.en.jpg b/translated_images/lesson-6.3e493b60eee85adc8c74dfeaaec3a3a6cfba61fedbcb84aa0146e7e80603a5dd.en.jpg
new file mode 100644
index 00000000..cdf0f557
Binary files /dev/null and b/translated_images/lesson-6.3e493b60eee85adc8c74dfeaaec3a3a6cfba61fedbcb84aa0146e7e80603a5dd.en.jpg differ
diff --git a/translated_images/lesson-6.3e493b60eee85adc8c74dfeaaec3a3a6cfba61fedbcb84aa0146e7e80603a5dd.lt.jpg b/translated_images/lesson-6.3e493b60eee85adc8c74dfeaaec3a3a6cfba61fedbcb84aa0146e7e80603a5dd.lt.jpg
new file mode 100644
index 00000000..cdf0f557
Binary files /dev/null and b/translated_images/lesson-6.3e493b60eee85adc8c74dfeaaec3a3a6cfba61fedbcb84aa0146e7e80603a5dd.lt.jpg differ
diff --git a/translated_images/lesson-7.30b5f577d3cb8e031238751475cb519c7d6dbaea261b5df4643d086ffb2a03bb.en.jpg b/translated_images/lesson-7.30b5f577d3cb8e031238751475cb519c7d6dbaea261b5df4643d086ffb2a03bb.en.jpg
new file mode 100644
index 00000000..f59ee98d
Binary files /dev/null and b/translated_images/lesson-7.30b5f577d3cb8e031238751475cb519c7d6dbaea261b5df4643d086ffb2a03bb.en.jpg differ
diff --git a/translated_images/lesson-7.30b5f577d3cb8e031238751475cb519c7d6dbaea261b5df4643d086ffb2a03bb.lt.jpg b/translated_images/lesson-7.30b5f577d3cb8e031238751475cb519c7d6dbaea261b5df4643d086ffb2a03bb.lt.jpg
new file mode 100644
index 00000000..f59ee98d
Binary files /dev/null and b/translated_images/lesson-7.30b5f577d3cb8e031238751475cb519c7d6dbaea261b5df4643d086ffb2a03bb.lt.jpg differ
diff --git a/translated_images/lesson-8.3f21f3c11159e6a0a376351973ea5724d5de68fa23b4288853a174bed9ac48c3.en.jpg b/translated_images/lesson-8.3f21f3c11159e6a0a376351973ea5724d5de68fa23b4288853a174bed9ac48c3.en.jpg
new file mode 100644
index 00000000..5bdbfd14
Binary files /dev/null and b/translated_images/lesson-8.3f21f3c11159e6a0a376351973ea5724d5de68fa23b4288853a174bed9ac48c3.en.jpg differ
diff --git a/translated_images/lesson-8.3f21f3c11159e6a0a376351973ea5724d5de68fa23b4288853a174bed9ac48c3.lt.jpg b/translated_images/lesson-8.3f21f3c11159e6a0a376351973ea5724d5de68fa23b4288853a174bed9ac48c3.lt.jpg
new file mode 100644
index 00000000..5bdbfd14
Binary files /dev/null and b/translated_images/lesson-8.3f21f3c11159e6a0a376351973ea5724d5de68fa23b4288853a174bed9ac48c3.lt.jpg differ
diff --git a/translated_images/lesson-9.dfe99c8e891f48e179724520da9f5794392cf9a625079281ccdcbf09bd85e1b6.en.jpg b/translated_images/lesson-9.dfe99c8e891f48e179724520da9f5794392cf9a625079281ccdcbf09bd85e1b6.en.jpg
new file mode 100644
index 00000000..b78ab3ac
Binary files /dev/null and b/translated_images/lesson-9.dfe99c8e891f48e179724520da9f5794392cf9a625079281ccdcbf09bd85e1b6.en.jpg differ
diff --git a/translated_images/lesson-9.dfe99c8e891f48e179724520da9f5794392cf9a625079281ccdcbf09bd85e1b6.lt.jpg b/translated_images/lesson-9.dfe99c8e891f48e179724520da9f5794392cf9a625079281ccdcbf09bd85e1b6.lt.jpg
new file mode 100644
index 00000000..b78ab3ac
Binary files /dev/null and b/translated_images/lesson-9.dfe99c8e891f48e179724520da9f5794392cf9a625079281ccdcbf09bd85e1b6.lt.jpg differ
diff --git a/translated_images/light-switch.760317ad6ab8bd6d611da5352dfe9c73a94a0822ccec7df3c8bae35da18e1658.en.png b/translated_images/light-switch.760317ad6ab8bd6d611da5352dfe9c73a94a0822ccec7df3c8bae35da18e1658.en.png
new file mode 100644
index 00000000..d071dffe
Binary files /dev/null and b/translated_images/light-switch.760317ad6ab8bd6d611da5352dfe9c73a94a0822ccec7df3c8bae35da18e1658.en.png differ
diff --git a/translated_images/light-switch.760317ad6ab8bd6d611da5352dfe9c73a94a0822ccec7df3c8bae35da18e1658.lt.png b/translated_images/light-switch.760317ad6ab8bd6d611da5352dfe9c73a94a0822ccec7df3c8bae35da18e1658.lt.png
new file mode 100644
index 00000000..d071dffe
Binary files /dev/null and b/translated_images/light-switch.760317ad6ab8bd6d611da5352dfe9c73a94a0822ccec7df3c8bae35da18e1658.lt.png differ
diff --git a/translated_images/lines-of-longitude-and-latitude.032aca9d3e402c4e89da3f1c269b955f0dac443ae4ae3dd6e1dada5761c39a92.en.png b/translated_images/lines-of-longitude-and-latitude.032aca9d3e402c4e89da3f1c269b955f0dac443ae4ae3dd6e1dada5761c39a92.en.png
new file mode 100644
index 00000000..b8947f6d
Binary files /dev/null and b/translated_images/lines-of-longitude-and-latitude.032aca9d3e402c4e89da3f1c269b955f0dac443ae4ae3dd6e1dada5761c39a92.en.png differ
diff --git a/translated_images/lines-of-longitude-and-latitude.032aca9d3e402c4e89da3f1c269b955f0dac443ae4ae3dd6e1dada5761c39a92.lt.png b/translated_images/lines-of-longitude-and-latitude.032aca9d3e402c4e89da3f1c269b955f0dac443ae4ae3dd6e1dada5761c39a92.lt.png
new file mode 100644
index 00000000..b8947f6d
Binary files /dev/null and b/translated_images/lines-of-longitude-and-latitude.032aca9d3e402c4e89da3f1c269b955f0dac443ae4ae3dd6e1dada5761c39a92.lt.png differ
diff --git a/translated_images/longitude-meridians.ab4ef1c91c064586b0185a3c8d39e585903696c6a7d28c098a93a629cddb5d20.en.png b/translated_images/longitude-meridians.ab4ef1c91c064586b0185a3c8d39e585903696c6a7d28c098a93a629cddb5d20.en.png
new file mode 100644
index 00000000..5c5dfb96
Binary files /dev/null and b/translated_images/longitude-meridians.ab4ef1c91c064586b0185a3c8d39e585903696c6a7d28c098a93a629cddb5d20.en.png differ
diff --git a/translated_images/longitude-meridians.ab4ef1c91c064586b0185a3c8d39e585903696c6a7d28c098a93a629cddb5d20.lt.png b/translated_images/longitude-meridians.ab4ef1c91c064586b0185a3c8d39e585903696c6a7d28c098a93a629cddb5d20.lt.png
new file mode 100644
index 00000000..5c5dfb96
Binary files /dev/null and b/translated_images/longitude-meridians.ab4ef1c91c064586b0185a3c8d39e585903696c6a7d28c098a93a629cddb5d20.lt.png differ
diff --git a/translated_images/longitude-prime-meridian.33b01b41ce615f9ddf85d91b0f93bdc076cfa44bb10b17296de42e2d1ba1090e.en.png b/translated_images/longitude-prime-meridian.33b01b41ce615f9ddf85d91b0f93bdc076cfa44bb10b17296de42e2d1ba1090e.en.png
new file mode 100644
index 00000000..663ad7e9
Binary files /dev/null and b/translated_images/longitude-prime-meridian.33b01b41ce615f9ddf85d91b0f93bdc076cfa44bb10b17296de42e2d1ba1090e.en.png differ
diff --git a/translated_images/longitude-prime-meridian.33b01b41ce615f9ddf85d91b0f93bdc076cfa44bb10b17296de42e2d1ba1090e.lt.png b/translated_images/longitude-prime-meridian.33b01b41ce615f9ddf85d91b0f93bdc076cfa44bb10b17296de42e2d1ba1090e.lt.png
new file mode 100644
index 00000000..663ad7e9
Binary files /dev/null and b/translated_images/longitude-prime-meridian.33b01b41ce615f9ddf85d91b0f93bdc076cfa44bb10b17296de42e2d1ba1090e.lt.png differ
diff --git a/translated_images/luis-intent-examples.25716580b2d2723cf1bafdf277d015c7f046d8cfa20f27bddf3a0873ec45fab7.en.png b/translated_images/luis-intent-examples.25716580b2d2723cf1bafdf277d015c7f046d8cfa20f27bddf3a0873ec45fab7.en.png
new file mode 100644
index 00000000..b1e33d6b
Binary files /dev/null and b/translated_images/luis-intent-examples.25716580b2d2723cf1bafdf277d015c7f046d8cfa20f27bddf3a0873ec45fab7.en.png differ
diff --git a/translated_images/luis-intent-examples.25716580b2d2723cf1bafdf277d015c7f046d8cfa20f27bddf3a0873ec45fab7.lt.png b/translated_images/luis-intent-examples.25716580b2d2723cf1bafdf277d015c7f046d8cfa20f27bddf3a0873ec45fab7.lt.png
new file mode 100644
index 00000000..b1e33d6b
Binary files /dev/null and b/translated_images/luis-intent-examples.25716580b2d2723cf1bafdf277d015c7f046d8cfa20f27bddf3a0873ec45fab7.lt.png differ
diff --git a/translated_images/luis-logo.5cb4f3e88c020ee6df4f614e8831f4a4b6809a7247bf52085fb48d629ef9be52.en.png b/translated_images/luis-logo.5cb4f3e88c020ee6df4f614e8831f4a4b6809a7247bf52085fb48d629ef9be52.en.png
new file mode 100644
index 00000000..2a03ab78
Binary files /dev/null and b/translated_images/luis-logo.5cb4f3e88c020ee6df4f614e8831f4a4b6809a7247bf52085fb48d629ef9be52.en.png differ
diff --git a/translated_images/luis-logo.5cb4f3e88c020ee6df4f614e8831f4a4b6809a7247bf52085fb48d629ef9be52.lt.png b/translated_images/luis-logo.5cb4f3e88c020ee6df4f614e8831f4a4b6809a7247bf52085fb48d629ef9be52.lt.png
new file mode 100644
index 00000000..2a03ab78
Binary files /dev/null and b/translated_images/luis-logo.5cb4f3e88c020ee6df4f614e8831f4a4b6809a7247bf52085fb48d629ef9be52.lt.png differ
diff --git a/translated_images/map-image.8fb2c53eb23ef39c1c0a4410a5282e879b3b452b707eb066ff04c5488d3d72b7.en.png b/translated_images/map-image.8fb2c53eb23ef39c1c0a4410a5282e879b3b452b707eb066ff04c5488d3d72b7.en.png
new file mode 100644
index 00000000..02ef1351
Binary files /dev/null and b/translated_images/map-image.8fb2c53eb23ef39c1c0a4410a5282e879b3b452b707eb066ff04c5488d3d72b7.en.png differ
diff --git a/translated_images/map-image.8fb2c53eb23ef39c1c0a4410a5282e879b3b452b707eb066ff04c5488d3d72b7.lt.png b/translated_images/map-image.8fb2c53eb23ef39c1c0a4410a5282e879b3b452b707eb066ff04c5488d3d72b7.lt.png
new file mode 100644
index 00000000..02ef1351
Binary files /dev/null and b/translated_images/map-image.8fb2c53eb23ef39c1c0a4410a5282e879b3b452b707eb066ff04c5488d3d72b7.lt.png differ
diff --git a/translated_images/map-path.896832e72dc696ffe20650e4051027d4855442d955f93fdbb80bb417ca8a406f.en.png b/translated_images/map-path.896832e72dc696ffe20650e4051027d4855442d955f93fdbb80bb417ca8a406f.en.png
new file mode 100644
index 00000000..33faabd1
Binary files /dev/null and b/translated_images/map-path.896832e72dc696ffe20650e4051027d4855442d955f93fdbb80bb417ca8a406f.en.png differ
diff --git a/translated_images/map-path.896832e72dc696ffe20650e4051027d4855442d955f93fdbb80bb417ca8a406f.lt.png b/translated_images/map-path.896832e72dc696ffe20650e4051027d4855442d955f93fdbb80bb417ca8a406f.lt.png
new file mode 100644
index 00000000..33faabd1
Binary files /dev/null and b/translated_images/map-path.896832e72dc696ffe20650e4051027d4855442d955f93fdbb80bb417ca8a406f.lt.png differ
diff --git a/translated_images/mems-microphone.80574019e1f5e4d9ee72fed720ecd25a39fc2969c91355d17ebb24ba4159e4c4.en.png b/translated_images/mems-microphone.80574019e1f5e4d9ee72fed720ecd25a39fc2969c91355d17ebb24ba4159e4c4.en.png
new file mode 100644
index 00000000..aa94da2c
Binary files /dev/null and b/translated_images/mems-microphone.80574019e1f5e4d9ee72fed720ecd25a39fc2969c91355d17ebb24ba4159e4c4.en.png differ
diff --git a/translated_images/mems-microphone.80574019e1f5e4d9ee72fed720ecd25a39fc2969c91355d17ebb24ba4159e4c4.lt.png b/translated_images/mems-microphone.80574019e1f5e4d9ee72fed720ecd25a39fc2969c91355d17ebb24ba4159e4c4.lt.png
new file mode 100644
index 00000000..aa94da2c
Binary files /dev/null and b/translated_images/mems-microphone.80574019e1f5e4d9ee72fed720ecd25a39fc2969c91355d17ebb24ba4159e4c4.lt.png differ
diff --git a/translated_images/microsoft-gps-location-world.a321d481b010f6adfcca139b2ba0adc53b79f58a540495b8e2ce7f779ea64bfe.en.png b/translated_images/microsoft-gps-location-world.a321d481b010f6adfcca139b2ba0adc53b79f58a540495b8e2ce7f779ea64bfe.en.png
new file mode 100644
index 00000000..ac000818
Binary files /dev/null and b/translated_images/microsoft-gps-location-world.a321d481b010f6adfcca139b2ba0adc53b79f58a540495b8e2ce7f779ea64bfe.en.png differ
diff --git a/translated_images/microsoft-gps-location-world.a321d481b010f6adfcca139b2ba0adc53b79f58a540495b8e2ce7f779ea64bfe.lt.png b/translated_images/microsoft-gps-location-world.a321d481b010f6adfcca139b2ba0adc53b79f58a540495b8e2ce7f779ea64bfe.lt.png
new file mode 100644
index 00000000..ac000818
Binary files /dev/null and b/translated_images/microsoft-gps-location-world.a321d481b010f6adfcca139b2ba0adc53b79f58a540495b8e2ce7f779ea64bfe.lt.png differ
diff --git a/translated_images/microsoft-gps-location.9eb77a13b22b7e70a0a80bd2b54c24eda141b4ee15a0373c93f8c73f4fcd81f5.en.png b/translated_images/microsoft-gps-location.9eb77a13b22b7e70a0a80bd2b54c24eda141b4ee15a0373c93f8c73f4fcd81f5.en.png
new file mode 100644
index 00000000..2fb519f5
Binary files /dev/null and b/translated_images/microsoft-gps-location.9eb77a13b22b7e70a0a80bd2b54c24eda141b4ee15a0373c93f8c73f4fcd81f5.en.png differ
diff --git a/translated_images/microsoft-gps-location.9eb77a13b22b7e70a0a80bd2b54c24eda141b4ee15a0373c93f8c73f4fcd81f5.lt.png b/translated_images/microsoft-gps-location.9eb77a13b22b7e70a0a80bd2b54c24eda141b4ee15a0373c93f8c73f4fcd81f5.lt.png
new file mode 100644
index 00000000..2fb519f5
Binary files /dev/null and b/translated_images/microsoft-gps-location.9eb77a13b22b7e70a0a80bd2b54c24eda141b4ee15a0373c93f8c73f4fcd81f5.lt.png differ
diff --git a/translated_images/mobile-controlled-thermostat.4a994010473d8d6a52ba68c67e5f02dc8928c717e93ca4b9bc55525aa75bbb60.en.png b/translated_images/mobile-controlled-thermostat.4a994010473d8d6a52ba68c67e5f02dc8928c717e93ca4b9bc55525aa75bbb60.en.png
new file mode 100644
index 00000000..48459b92
Binary files /dev/null and b/translated_images/mobile-controlled-thermostat.4a994010473d8d6a52ba68c67e5f02dc8928c717e93ca4b9bc55525aa75bbb60.en.png differ
diff --git a/translated_images/mobile-controlled-thermostat.4a994010473d8d6a52ba68c67e5f02dc8928c717e93ca4b9bc55525aa75bbb60.lt.png b/translated_images/mobile-controlled-thermostat.4a994010473d8d6a52ba68c67e5f02dc8928c717e93ca4b9bc55525aa75bbb60.lt.png
new file mode 100644
index 00000000..48459b92
Binary files /dev/null and b/translated_images/mobile-controlled-thermostat.4a994010473d8d6a52ba68c67e5f02dc8928c717e93ca4b9bc55525aa75bbb60.lt.png differ
diff --git a/translated_images/mqtt.cbf7f21d9adc3e17548b359444cc11bb4bf2010543e32ece9a47becf54438c23.en.png b/translated_images/mqtt.cbf7f21d9adc3e17548b359444cc11bb4bf2010543e32ece9a47becf54438c23.en.png
new file mode 100644
index 00000000..d502a579
Binary files /dev/null and b/translated_images/mqtt.cbf7f21d9adc3e17548b359444cc11bb4bf2010543e32ece9a47becf54438c23.en.png differ
diff --git a/translated_images/mqtt.cbf7f21d9adc3e17548b359444cc11bb4bf2010543e32ece9a47becf54438c23.lt.png b/translated_images/mqtt.cbf7f21d9adc3e17548b359444cc11bb4bf2010543e32ece9a47becf54438c23.lt.png
new file mode 100644
index 00000000..d502a579
Binary files /dev/null and b/translated_images/mqtt.cbf7f21d9adc3e17548b359444cc11bb4bf2010543e32ece9a47becf54438c23.lt.png differ
diff --git a/translated_images/noqsl-database.62d24ccf5b73f60d35c245a8533f1c7147c0928e955b82cb290b2e184bb434df.en.png b/translated_images/noqsl-database.62d24ccf5b73f60d35c245a8533f1c7147c0928e955b82cb290b2e184bb434df.en.png
new file mode 100644
index 00000000..fca45002
Binary files /dev/null and b/translated_images/noqsl-database.62d24ccf5b73f60d35c245a8533f1c7147c0928e955b82cb290b2e184bb434df.en.png differ
diff --git a/translated_images/noqsl-database.62d24ccf5b73f60d35c245a8533f1c7147c0928e955b82cb290b2e184bb434df.lt.png b/translated_images/noqsl-database.62d24ccf5b73f60d35c245a8533f1c7147c0928e955b82cb290b2e184bb434df.lt.png
new file mode 100644
index 00000000..fca45002
Binary files /dev/null and b/translated_images/noqsl-database.62d24ccf5b73f60d35c245a8533f1c7147c0928e955b82cb290b2e184bb434df.lt.png differ
diff --git a/translated_images/object-detector-cashews-tomato.1af7c26686b4db0e709754aeb196f4e73271f54e2085db3bcccb70d4a0d84d97.en.png b/translated_images/object-detector-cashews-tomato.1af7c26686b4db0e709754aeb196f4e73271f54e2085db3bcccb70d4a0d84d97.en.png
new file mode 100644
index 00000000..94aa28db
Binary files /dev/null and b/translated_images/object-detector-cashews-tomato.1af7c26686b4db0e709754aeb196f4e73271f54e2085db3bcccb70d4a0d84d97.en.png differ
diff --git a/translated_images/object-detector-cashews-tomato.1af7c26686b4db0e709754aeb196f4e73271f54e2085db3bcccb70d4a0d84d97.lt.png b/translated_images/object-detector-cashews-tomato.1af7c26686b4db0e709754aeb196f4e73271f54e2085db3bcccb70d4a0d84d97.lt.png
new file mode 100644
index 00000000..94aa28db
Binary files /dev/null and b/translated_images/object-detector-cashews-tomato.1af7c26686b4db0e709754aeb196f4e73271f54e2085db3bcccb70d4a0d84d97.lt.png differ
diff --git a/translated_images/object-detector-detected-tomato-paste.52656fe87af4c37b4ee540526d63e73ed075da2e54a9a060aa528e0c562fb1b6.en.png b/translated_images/object-detector-detected-tomato-paste.52656fe87af4c37b4ee540526d63e73ed075da2e54a9a060aa528e0c562fb1b6.en.png
new file mode 100644
index 00000000..894df473
Binary files /dev/null and b/translated_images/object-detector-detected-tomato-paste.52656fe87af4c37b4ee540526d63e73ed075da2e54a9a060aa528e0c562fb1b6.en.png differ
diff --git a/translated_images/object-detector-detected-tomato-paste.52656fe87af4c37b4ee540526d63e73ed075da2e54a9a060aa528e0c562fb1b6.lt.png b/translated_images/object-detector-detected-tomato-paste.52656fe87af4c37b4ee540526d63e73ed075da2e54a9a060aa528e0c562fb1b6.lt.png
new file mode 100644
index 00000000..894df473
Binary files /dev/null and b/translated_images/object-detector-detected-tomato-paste.52656fe87af4c37b4ee540526d63e73ed075da2e54a9a060aa528e0c562fb1b6.lt.png differ
diff --git a/translated_images/object-detector-tag-tomato-paste.f47c362fb0f0eb582f3bc68cf3855fb43a805106395358d41896a269c210b7b4.en.png b/translated_images/object-detector-tag-tomato-paste.f47c362fb0f0eb582f3bc68cf3855fb43a805106395358d41896a269c210b7b4.en.png
new file mode 100644
index 00000000..b75dfdd2
Binary files /dev/null and b/translated_images/object-detector-tag-tomato-paste.f47c362fb0f0eb582f3bc68cf3855fb43a805106395358d41896a269c210b7b4.en.png differ
diff --git a/translated_images/object-detector-tag-tomato-paste.f47c362fb0f0eb582f3bc68cf3855fb43a805106395358d41896a269c210b7b4.lt.png b/translated_images/object-detector-tag-tomato-paste.f47c362fb0f0eb582f3bc68cf3855fb43a805106395358d41896a269c210b7b4.lt.png
new file mode 100644
index 00000000..b75dfdd2
Binary files /dev/null and b/translated_images/object-detector-tag-tomato-paste.f47c362fb0f0eb582f3bc68cf3855fb43a805106395358d41896a269c210b7b4.lt.png differ
diff --git a/translated_images/optical-tomato-sorting.61aa134bdda4e5b1bfb16a212c1e35a6ef0c426cbb8b1c975f79d7bfbf48d068.en.png b/translated_images/optical-tomato-sorting.61aa134bdda4e5b1bfb16a212c1e35a6ef0c426cbb8b1c975f79d7bfbf48d068.en.png
new file mode 100644
index 00000000..1e7934c3
Binary files /dev/null and b/translated_images/optical-tomato-sorting.61aa134bdda4e5b1bfb16a212c1e35a6ef0c426cbb8b1c975f79d7bfbf48d068.en.png differ
diff --git a/translated_images/optical-tomato-sorting.61aa134bdda4e5b1bfb16a212c1e35a6ef0c426cbb8b1c975f79d7bfbf48d068.lt.png b/translated_images/optical-tomato-sorting.61aa134bdda4e5b1bfb16a212c1e35a6ef0c426cbb8b1c975f79d7bfbf48d068.lt.png
new file mode 100644
index 00000000..1e7934c3
Binary files /dev/null and b/translated_images/optical-tomato-sorting.61aa134bdda4e5b1bfb16a212c1e35a6ef0c426cbb8b1c975f79d7bfbf48d068.lt.png differ
diff --git a/translated_images/overlap-object-detection.d431e03cae75072a2760430eca7f2c5fdd43045bfd72dadcbf12711f7cd6c2ae.en.png b/translated_images/overlap-object-detection.d431e03cae75072a2760430eca7f2c5fdd43045bfd72dadcbf12711f7cd6c2ae.en.png
new file mode 100644
index 00000000..5bb319ec
Binary files /dev/null and b/translated_images/overlap-object-detection.d431e03cae75072a2760430eca7f2c5fdd43045bfd72dadcbf12711f7cd6c2ae.en.png differ
diff --git a/translated_images/overlap-object-detection.d431e03cae75072a2760430eca7f2c5fdd43045bfd72dadcbf12711f7cd6c2ae.lt.png b/translated_images/overlap-object-detection.d431e03cae75072a2760430eca7f2c5fdd43045bfd72dadcbf12711f7cd6c2ae.lt.png
new file mode 100644
index 00000000..5bb319ec
Binary files /dev/null and b/translated_images/overlap-object-detection.d431e03cae75072a2760430eca7f2c5fdd43045bfd72dadcbf12711f7cd6c2ae.lt.png differ
diff --git a/translated_images/pi-button.c7a1a4f55943341ce1baf1057658e9a205804d4131d258e820c93f951df0abf3.en.png b/translated_images/pi-button.c7a1a4f55943341ce1baf1057658e9a205804d4131d258e820c93f951df0abf3.en.png
new file mode 100644
index 00000000..d66e224f
Binary files /dev/null and b/translated_images/pi-button.c7a1a4f55943341ce1baf1057658e9a205804d4131d258e820c93f951df0abf3.en.png differ
diff --git a/translated_images/pi-button.c7a1a4f55943341ce1baf1057658e9a205804d4131d258e820c93f951df0abf3.lt.png b/translated_images/pi-button.c7a1a4f55943341ce1baf1057658e9a205804d4131d258e820c93f951df0abf3.lt.png
new file mode 100644
index 00000000..d66e224f
Binary files /dev/null and b/translated_images/pi-button.c7a1a4f55943341ce1baf1057658e9a205804d4131d258e820c93f951df0abf3.lt.png differ
diff --git a/translated_images/pi-camera-module.4278753c31bd6e757aa2b858be97d72049f71616278cefe4fb5abb485b40a078.en.png b/translated_images/pi-camera-module.4278753c31bd6e757aa2b858be97d72049f71616278cefe4fb5abb485b40a078.en.png
new file mode 100644
index 00000000..ed18e7b0
Binary files /dev/null and b/translated_images/pi-camera-module.4278753c31bd6e757aa2b858be97d72049f71616278cefe4fb5abb485b40a078.en.png differ
diff --git a/translated_images/pi-camera-module.4278753c31bd6e757aa2b858be97d72049f71616278cefe4fb5abb485b40a078.lt.png b/translated_images/pi-camera-module.4278753c31bd6e757aa2b858be97d72049f71616278cefe4fb5abb485b40a078.lt.png
new file mode 100644
index 00000000..ed18e7b0
Binary files /dev/null and b/translated_images/pi-camera-module.4278753c31bd6e757aa2b858be97d72049f71616278cefe4fb5abb485b40a078.lt.png differ
diff --git a/translated_images/pi-camera-ribbon-cable.0bf82acd251611c21ac616f082849413e2b322a261d0e4f8fec344248083b07e.en.png b/translated_images/pi-camera-ribbon-cable.0bf82acd251611c21ac616f082849413e2b322a261d0e4f8fec344248083b07e.en.png
new file mode 100644
index 00000000..9acb21a7
Binary files /dev/null and b/translated_images/pi-camera-ribbon-cable.0bf82acd251611c21ac616f082849413e2b322a261d0e4f8fec344248083b07e.en.png differ
diff --git a/translated_images/pi-camera-ribbon-cable.0bf82acd251611c21ac616f082849413e2b322a261d0e4f8fec344248083b07e.lt.png b/translated_images/pi-camera-ribbon-cable.0bf82acd251611c21ac616f082849413e2b322a261d0e4f8fec344248083b07e.lt.png
new file mode 100644
index 00000000..9acb21a7
Binary files /dev/null and b/translated_images/pi-camera-ribbon-cable.0bf82acd251611c21ac616f082849413e2b322a261d0e4f8fec344248083b07e.lt.png differ
diff --git a/translated_images/pi-camera-socket-ribbon-cable.a18309920b11800911082ed7aa6fb28e6d9be3a022e4079ff990016cae3fca10.en.png b/translated_images/pi-camera-socket-ribbon-cable.a18309920b11800911082ed7aa6fb28e6d9be3a022e4079ff990016cae3fca10.en.png
new file mode 100644
index 00000000..1ced5fc1
Binary files /dev/null and b/translated_images/pi-camera-socket-ribbon-cable.a18309920b11800911082ed7aa6fb28e6d9be3a022e4079ff990016cae3fca10.en.png differ
diff --git a/translated_images/pi-camera-socket-ribbon-cable.a18309920b11800911082ed7aa6fb28e6d9be3a022e4079ff990016cae3fca10.lt.png b/translated_images/pi-camera-socket-ribbon-cable.a18309920b11800911082ed7aa6fb28e6d9be3a022e4079ff990016cae3fca10.lt.png
new file mode 100644
index 00000000..1ced5fc1
Binary files /dev/null and b/translated_images/pi-camera-socket-ribbon-cable.a18309920b11800911082ed7aa6fb28e6d9be3a022e4079ff990016cae3fca10.lt.png differ
diff --git a/translated_images/pi-camera-upside-down.5376961ba31459883362124152ad6b823d5ac5fc14e85f317e22903bd681c2b6.en.png b/translated_images/pi-camera-upside-down.5376961ba31459883362124152ad6b823d5ac5fc14e85f317e22903bd681c2b6.en.png
new file mode 100644
index 00000000..7293ced1
Binary files /dev/null and b/translated_images/pi-camera-upside-down.5376961ba31459883362124152ad6b823d5ac5fc14e85f317e22903bd681c2b6.en.png differ
diff --git a/translated_images/pi-camera-upside-down.5376961ba31459883362124152ad6b823d5ac5fc14e85f317e22903bd681c2b6.lt.png b/translated_images/pi-camera-upside-down.5376961ba31459883362124152ad6b823d5ac5fc14e85f317e22903bd681c2b6.lt.png
new file mode 100644
index 00000000..7293ced1
Binary files /dev/null and b/translated_images/pi-camera-upside-down.5376961ba31459883362124152ad6b823d5ac5fc14e85f317e22903bd681c2b6.lt.png differ
diff --git a/translated_images/pi-gps-sensor.1f99ee2b2f6528915047ec78967bd362e0e4ee0ed594368a3837b9cf9cdaca64.en.png b/translated_images/pi-gps-sensor.1f99ee2b2f6528915047ec78967bd362e0e4ee0ed594368a3837b9cf9cdaca64.en.png
new file mode 100644
index 00000000..be837c63
Binary files /dev/null and b/translated_images/pi-gps-sensor.1f99ee2b2f6528915047ec78967bd362e0e4ee0ed594368a3837b9cf9cdaca64.en.png differ
diff --git a/translated_images/pi-gps-sensor.1f99ee2b2f6528915047ec78967bd362e0e4ee0ed594368a3837b9cf9cdaca64.lt.png b/translated_images/pi-gps-sensor.1f99ee2b2f6528915047ec78967bd362e0e4ee0ed594368a3837b9cf9cdaca64.lt.png
new file mode 100644
index 00000000..be837c63
Binary files /dev/null and b/translated_images/pi-gps-sensor.1f99ee2b2f6528915047ec78967bd362e0e4ee0ed594368a3837b9cf9cdaca64.lt.png differ
diff --git a/translated_images/pi-hardware-kit.26dbadaedb7dd44c73b0131d5d68ea29472ed0a9744f90d5866c6d82f2d16380.en.png b/translated_images/pi-hardware-kit.26dbadaedb7dd44c73b0131d5d68ea29472ed0a9744f90d5866c6d82f2d16380.en.png
new file mode 100644
index 00000000..73861107
Binary files /dev/null and b/translated_images/pi-hardware-kit.26dbadaedb7dd44c73b0131d5d68ea29472ed0a9744f90d5866c6d82f2d16380.en.png differ
diff --git a/translated_images/pi-hardware-kit.26dbadaedb7dd44c73b0131d5d68ea29472ed0a9744f90d5866c6d82f2d16380.lt.png b/translated_images/pi-hardware-kit.26dbadaedb7dd44c73b0131d5d68ea29472ed0a9744f90d5866c6d82f2d16380.lt.png
new file mode 100644
index 00000000..73861107
Binary files /dev/null and b/translated_images/pi-hardware-kit.26dbadaedb7dd44c73b0131d5d68ea29472ed0a9744f90d5866c6d82f2d16380.lt.png differ
diff --git a/translated_images/pi-led.97f1d474981dc35d1c7996c7b17de355d3d0a6bc9606d79fa5f89df933415122.en.png b/translated_images/pi-led.97f1d474981dc35d1c7996c7b17de355d3d0a6bc9606d79fa5f89df933415122.en.png
new file mode 100644
index 00000000..1b26d7ff
Binary files /dev/null and b/translated_images/pi-led.97f1d474981dc35d1c7996c7b17de355d3d0a6bc9606d79fa5f89df933415122.en.png differ
diff --git a/translated_images/pi-led.97f1d474981dc35d1c7996c7b17de355d3d0a6bc9606d79fa5f89df933415122.lt.png b/translated_images/pi-led.97f1d474981dc35d1c7996c7b17de355d3d0a6bc9606d79fa5f89df933415122.lt.png
new file mode 100644
index 00000000..1b26d7ff
Binary files /dev/null and b/translated_images/pi-led.97f1d474981dc35d1c7996c7b17de355d3d0a6bc9606d79fa5f89df933415122.lt.png differ
diff --git a/translated_images/pi-light-sensor.66cc1e31fa48cd7d5f23400d4b2119aa41508275cb7c778053a7923b4e972d7e.en.png b/translated_images/pi-light-sensor.66cc1e31fa48cd7d5f23400d4b2119aa41508275cb7c778053a7923b4e972d7e.en.png
new file mode 100644
index 00000000..f1905ecc
Binary files /dev/null and b/translated_images/pi-light-sensor.66cc1e31fa48cd7d5f23400d4b2119aa41508275cb7c778053a7923b4e972d7e.en.png differ
diff --git a/translated_images/pi-light-sensor.66cc1e31fa48cd7d5f23400d4b2119aa41508275cb7c778053a7923b4e972d7e.lt.png b/translated_images/pi-light-sensor.66cc1e31fa48cd7d5f23400d4b2119aa41508275cb7c778053a7923b4e972d7e.lt.png
new file mode 100644
index 00000000..f1905ecc
Binary files /dev/null and b/translated_images/pi-light-sensor.66cc1e31fa48cd7d5f23400d4b2119aa41508275cb7c778053a7923b4e972d7e.lt.png differ
diff --git a/translated_images/pi-relay-and-soil-moisture-sensor.02f3198975b8c53e69ec716cd2719ce117700bd1fc933eaf93476c103c57939b.en.png b/translated_images/pi-relay-and-soil-moisture-sensor.02f3198975b8c53e69ec716cd2719ce117700bd1fc933eaf93476c103c57939b.en.png
new file mode 100644
index 00000000..edc44fa9
Binary files /dev/null and b/translated_images/pi-relay-and-soil-moisture-sensor.02f3198975b8c53e69ec716cd2719ce117700bd1fc933eaf93476c103c57939b.en.png differ
diff --git a/translated_images/pi-relay-and-soil-moisture-sensor.02f3198975b8c53e69ec716cd2719ce117700bd1fc933eaf93476c103c57939b.lt.png b/translated_images/pi-relay-and-soil-moisture-sensor.02f3198975b8c53e69ec716cd2719ce117700bd1fc933eaf93476c103c57939b.lt.png
new file mode 100644
index 00000000..edc44fa9
Binary files /dev/null and b/translated_images/pi-relay-and-soil-moisture-sensor.02f3198975b8c53e69ec716cd2719ce117700bd1fc933eaf93476c103c57939b.lt.png differ
diff --git a/translated_images/pi-respeaker-hat.f00fabe7dd039a93e2e0aa0fc946c9af0c6a9eb17c32fa1ca097fb4e384f69f0.en.png b/translated_images/pi-respeaker-hat.f00fabe7dd039a93e2e0aa0fc946c9af0c6a9eb17c32fa1ca097fb4e384f69f0.en.png
new file mode 100644
index 00000000..87854d3a
Binary files /dev/null and b/translated_images/pi-respeaker-hat.f00fabe7dd039a93e2e0aa0fc946c9af0c6a9eb17c32fa1ca097fb4e384f69f0.en.png differ
diff --git a/translated_images/pi-respeaker-hat.f00fabe7dd039a93e2e0aa0fc946c9af0c6a9eb17c32fa1ca097fb4e384f69f0.lt.png b/translated_images/pi-respeaker-hat.f00fabe7dd039a93e2e0aa0fc946c9af0c6a9eb17c32fa1ca097fb4e384f69f0.lt.png
new file mode 100644
index 00000000..87854d3a
Binary files /dev/null and b/translated_images/pi-respeaker-hat.f00fabe7dd039a93e2e0aa0fc946c9af0c6a9eb17c32fa1ca097fb4e384f69f0.lt.png differ
diff --git a/translated_images/pi-soil-moisture-sensor.fdd7eb2393792cf6739cacf1985d9f55beda16d372f30d0b5a51d586f978a870.en.png b/translated_images/pi-soil-moisture-sensor.fdd7eb2393792cf6739cacf1985d9f55beda16d372f30d0b5a51d586f978a870.en.png
new file mode 100644
index 00000000..d1158e0d
Binary files /dev/null and b/translated_images/pi-soil-moisture-sensor.fdd7eb2393792cf6739cacf1985d9f55beda16d372f30d0b5a51d586f978a870.en.png differ
diff --git a/translated_images/pi-soil-moisture-sensor.fdd7eb2393792cf6739cacf1985d9f55beda16d372f30d0b5a51d586f978a870.lt.png b/translated_images/pi-soil-moisture-sensor.fdd7eb2393792cf6739cacf1985d9f55beda16d372f30d0b5a51d586f978a870.lt.png
new file mode 100644
index 00000000..d1158e0d
Binary files /dev/null and b/translated_images/pi-soil-moisture-sensor.fdd7eb2393792cf6739cacf1985d9f55beda16d372f30d0b5a51d586f978a870.lt.png differ
diff --git a/translated_images/pi-temperature-sensor.3ff82fff672c8e565ef25a39d26d111de006b825a7e0867227ef4e7fbff8553c.en.png b/translated_images/pi-temperature-sensor.3ff82fff672c8e565ef25a39d26d111de006b825a7e0867227ef4e7fbff8553c.en.png
new file mode 100644
index 00000000..122abea4
Binary files /dev/null and b/translated_images/pi-temperature-sensor.3ff82fff672c8e565ef25a39d26d111de006b825a7e0867227ef4e7fbff8553c.en.png differ
diff --git a/translated_images/pi-temperature-sensor.3ff82fff672c8e565ef25a39d26d111de006b825a7e0867227ef4e7fbff8553c.lt.png b/translated_images/pi-temperature-sensor.3ff82fff672c8e565ef25a39d26d111de006b825a7e0867227ef4e7fbff8553c.lt.png
new file mode 100644
index 00000000..122abea4
Binary files /dev/null and b/translated_images/pi-temperature-sensor.3ff82fff672c8e565ef25a39d26d111de006b825a7e0867227ef4e7fbff8553c.lt.png differ
diff --git a/translated_images/pi-time-of-flight-sensor.58c8dc04eb3bfb57a7c3019f031433ef4d798d4d7603d565afbf6f3802840dba.en.png b/translated_images/pi-time-of-flight-sensor.58c8dc04eb3bfb57a7c3019f031433ef4d798d4d7603d565afbf6f3802840dba.en.png
new file mode 100644
index 00000000..dc009aa5
Binary files /dev/null and b/translated_images/pi-time-of-flight-sensor.58c8dc04eb3bfb57a7c3019f031433ef4d798d4d7603d565afbf6f3802840dba.en.png differ
diff --git a/translated_images/pi-time-of-flight-sensor.58c8dc04eb3bfb57a7c3019f031433ef4d798d4d7603d565afbf6f3802840dba.lt.png b/translated_images/pi-time-of-flight-sensor.58c8dc04eb3bfb57a7c3019f031433ef4d798d4d7603d565afbf6f3802840dba.lt.png
new file mode 100644
index 00000000..dc009aa5
Binary files /dev/null and b/translated_images/pi-time-of-flight-sensor.58c8dc04eb3bfb57a7c3019f031433ef4d798d4d7603d565afbf6f3802840dba.lt.png differ
diff --git a/translated_images/plant-growth-temp-graph copy.65baa28afd9b7f5fbc04bf7c9684b086c466a467631568c23549d54949fc71d2.en.png b/translated_images/plant-growth-temp-graph copy.65baa28afd9b7f5fbc04bf7c9684b086c466a467631568c23549d54949fc71d2.en.png
new file mode 100644
index 00000000..ccb0d4e1
Binary files /dev/null and b/translated_images/plant-growth-temp-graph copy.65baa28afd9b7f5fbc04bf7c9684b086c466a467631568c23549d54949fc71d2.en.png differ
diff --git a/translated_images/plant-growth-temp-graph copy.65baa28afd9b7f5fbc04bf7c9684b086c466a467631568c23549d54949fc71d2.lt.png b/translated_images/plant-growth-temp-graph copy.65baa28afd9b7f5fbc04bf7c9684b086c466a467631568c23549d54949fc71d2.lt.png
new file mode 100644
index 00000000..ccb0d4e1
Binary files /dev/null and b/translated_images/plant-growth-temp-graph copy.65baa28afd9b7f5fbc04bf7c9684b086c466a467631568c23549d54949fc71d2.lt.png differ
diff --git a/translated_images/plant-growth-temp-graph.c6d69c9478e6ca832baa8dcb8d4adcbb67304074ce50e94ac8faae95975177f9.en.png b/translated_images/plant-growth-temp-graph.c6d69c9478e6ca832baa8dcb8d4adcbb67304074ce50e94ac8faae95975177f9.en.png
new file mode 100644
index 00000000..ccb0d4e1
Binary files /dev/null and b/translated_images/plant-growth-temp-graph.c6d69c9478e6ca832baa8dcb8d4adcbb67304074ce50e94ac8faae95975177f9.en.png differ
diff --git a/translated_images/plant-growth-temp-graph.c6d69c9478e6ca832baa8dcb8d4adcbb67304074ce50e94ac8faae95975177f9.lt.png b/translated_images/plant-growth-temp-graph.c6d69c9478e6ca832baa8dcb8d4adcbb67304074ce50e94ac8faae95975177f9.lt.png
new file mode 100644
index 00000000..ccb0d4e1
Binary files /dev/null and b/translated_images/plant-growth-temp-graph.c6d69c9478e6ca832baa8dcb8d4adcbb67304074ce50e94ac8faae95975177f9.lt.png differ
diff --git a/translated_images/polygon-points.302193da381cb415f46c2c7a98496ee4be05d6c73d21238a89721ad93e121233.en.png b/translated_images/polygon-points.302193da381cb415f46c2c7a98496ee4be05d6c73d21238a89721ad93e121233.en.png
new file mode 100644
index 00000000..12274b8b
Binary files /dev/null and b/translated_images/polygon-points.302193da381cb415f46c2c7a98496ee4be05d6c73d21238a89721ad93e121233.en.png differ
diff --git a/translated_images/polygon-points.302193da381cb415f46c2c7a98496ee4be05d6c73d21238a89721ad93e121233.lt.png b/translated_images/polygon-points.302193da381cb415f46c2c7a98496ee4be05d6c73d21238a89721ad93e121233.lt.png
new file mode 100644
index 00000000..12274b8b
Binary files /dev/null and b/translated_images/polygon-points.302193da381cb415f46c2c7a98496ee4be05d6c73d21238a89721ad93e121233.lt.png differ
diff --git a/translated_images/potentiometer.35a348b9ce22f6ec1199ad37d68692d04185456ccbc2541a454bb6698be9f19c.en.png b/translated_images/potentiometer.35a348b9ce22f6ec1199ad37d68692d04185456ccbc2541a454bb6698be9f19c.en.png
new file mode 100644
index 00000000..da226797
Binary files /dev/null and b/translated_images/potentiometer.35a348b9ce22f6ec1199ad37d68692d04185456ccbc2541a454bb6698be9f19c.en.png differ
diff --git a/translated_images/potentiometer.35a348b9ce22f6ec1199ad37d68692d04185456ccbc2541a454bb6698be9f19c.lt.png b/translated_images/potentiometer.35a348b9ce22f6ec1199ad37d68692d04185456ccbc2541a454bb6698be9f19c.lt.png
new file mode 100644
index 00000000..da226797
Binary files /dev/null and b/translated_images/potentiometer.35a348b9ce22f6ec1199ad37d68692d04185456ccbc2541a454bb6698be9f19c.lt.png differ
diff --git a/translated_images/proximity-sensor.f5cd752c77fb62fea000156233b32fd24fad3707ec69b8bdd8d312b7af85156d.en.png b/translated_images/proximity-sensor.f5cd752c77fb62fea000156233b32fd24fad3707ec69b8bdd8d312b7af85156d.en.png
new file mode 100644
index 00000000..67bd8a82
Binary files /dev/null and b/translated_images/proximity-sensor.f5cd752c77fb62fea000156233b32fd24fad3707ec69b8bdd8d312b7af85156d.en.png differ
diff --git a/translated_images/proximity-sensor.f5cd752c77fb62fea000156233b32fd24fad3707ec69b8bdd8d312b7af85156d.lt.png b/translated_images/proximity-sensor.f5cd752c77fb62fea000156233b32fd24fad3707ec69b8bdd8d312b7af85156d.lt.png
new file mode 100644
index 00000000..67bd8a82
Binary files /dev/null and b/translated_images/proximity-sensor.f5cd752c77fb62fea000156233b32fd24fad3707ec69b8bdd8d312b7af85156d.lt.png differ
diff --git a/translated_images/pub-sub.7c7ed43fe9fd15d4e1f81a3fd95440413c457acd9bcbe9a43341e30e88db5264.en.png b/translated_images/pub-sub.7c7ed43fe9fd15d4e1f81a3fd95440413c457acd9bcbe9a43341e30e88db5264.en.png
new file mode 100644
index 00000000..18938f59
Binary files /dev/null and b/translated_images/pub-sub.7c7ed43fe9fd15d4e1f81a3fd95440413c457acd9bcbe9a43341e30e88db5264.en.png differ
diff --git a/translated_images/pub-sub.7c7ed43fe9fd15d4e1f81a3fd95440413c457acd9bcbe9a43341e30e88db5264.lt.png b/translated_images/pub-sub.7c7ed43fe9fd15d4e1f81a3fd95440413c457acd9bcbe9a43341e30e88db5264.lt.png
new file mode 100644
index 00000000..18938f59
Binary files /dev/null and b/translated_images/pub-sub.7c7ed43fe9fd15d4e1f81a3fd95440413c457acd9bcbe9a43341e30e88db5264.lt.png differ
diff --git a/translated_images/pump-wired-to-relay.66c5cfc0d89189900cd601777f5caeb39ee35c6250f6c86bf38feaceedb21fe9.en.png b/translated_images/pump-wired-to-relay.66c5cfc0d89189900cd601777f5caeb39ee35c6250f6c86bf38feaceedb21fe9.en.png
new file mode 100644
index 00000000..db480604
Binary files /dev/null and b/translated_images/pump-wired-to-relay.66c5cfc0d89189900cd601777f5caeb39ee35c6250f6c86bf38feaceedb21fe9.en.png differ
diff --git a/translated_images/pump-wired-to-relay.66c5cfc0d89189900cd601777f5caeb39ee35c6250f6c86bf38feaceedb21fe9.lt.png b/translated_images/pump-wired-to-relay.66c5cfc0d89189900cd601777f5caeb39ee35c6250f6c86bf38feaceedb21fe9.lt.png
new file mode 100644
index 00000000..db480604
Binary files /dev/null and b/translated_images/pump-wired-to-relay.66c5cfc0d89189900cd601777f5caeb39ee35c6250f6c86bf38feaceedb21fe9.lt.png differ
diff --git a/translated_images/pwm-motor-150rpm.83347ac04ca38482bd120939b133803963c9c15ca9d8d484712a4bd92820f6a4.en.png b/translated_images/pwm-motor-150rpm.83347ac04ca38482bd120939b133803963c9c15ca9d8d484712a4bd92820f6a4.en.png
new file mode 100644
index 00000000..535e5798
Binary files /dev/null and b/translated_images/pwm-motor-150rpm.83347ac04ca38482bd120939b133803963c9c15ca9d8d484712a4bd92820f6a4.en.png differ
diff --git a/translated_images/pwm-motor-150rpm.83347ac04ca38482bd120939b133803963c9c15ca9d8d484712a4bd92820f6a4.lt.png b/translated_images/pwm-motor-150rpm.83347ac04ca38482bd120939b133803963c9c15ca9d8d484712a4bd92820f6a4.lt.png
new file mode 100644
index 00000000..535e5798
Binary files /dev/null and b/translated_images/pwm-motor-150rpm.83347ac04ca38482bd120939b133803963c9c15ca9d8d484712a4bd92820f6a4.lt.png differ
diff --git a/translated_images/pwm-motor-75rpm.a5e4c939934b6e14fd9e98e4f2c9539d723da2b18f490eae0948dd044d18ff7e.en.png b/translated_images/pwm-motor-75rpm.a5e4c939934b6e14fd9e98e4f2c9539d723da2b18f490eae0948dd044d18ff7e.en.png
new file mode 100644
index 00000000..b3d83ab7
Binary files /dev/null and b/translated_images/pwm-motor-75rpm.a5e4c939934b6e14fd9e98e4f2c9539d723da2b18f490eae0948dd044d18ff7e.en.png differ
diff --git a/translated_images/pwm-motor-75rpm.a5e4c939934b6e14fd9e98e4f2c9539d723da2b18f490eae0948dd044d18ff7e.lt.png b/translated_images/pwm-motor-75rpm.a5e4c939934b6e14fd9e98e4f2c9539d723da2b18f490eae0948dd044d18ff7e.lt.png
new file mode 100644
index 00000000..b3d83ab7
Binary files /dev/null and b/translated_images/pwm-motor-75rpm.a5e4c939934b6e14fd9e98e4f2c9539d723da2b18f490eae0948dd044d18ff7e.lt.png differ
diff --git a/translated_images/ram-comparison.6beb73541b42ac6ffde64cdf79fc925a84b932ce7ebd4d41d5fd7afc1257a696.en.png b/translated_images/ram-comparison.6beb73541b42ac6ffde64cdf79fc925a84b932ce7ebd4d41d5fd7afc1257a696.en.png
new file mode 100644
index 00000000..4bb97d60
Binary files /dev/null and b/translated_images/ram-comparison.6beb73541b42ac6ffde64cdf79fc925a84b932ce7ebd4d41d5fd7afc1257a696.en.png differ
diff --git a/translated_images/ram-comparison.6beb73541b42ac6ffde64cdf79fc925a84b932ce7ebd4d41d5fd7afc1257a696.lt.png b/translated_images/ram-comparison.6beb73541b42ac6ffde64cdf79fc925a84b932ce7ebd4d41d5fd7afc1257a696.lt.png
new file mode 100644
index 00000000..4bb97d60
Binary files /dev/null and b/translated_images/ram-comparison.6beb73541b42ac6ffde64cdf79fc925a84b932ce7ebd4d41d5fd7afc1257a696.lt.png differ
diff --git a/translated_images/raspberry-pi-4.fd4590d308c3d456db1327e86b395ddcd735513267aafd4879ea2785f7792eac.en.jpg b/translated_images/raspberry-pi-4.fd4590d308c3d456db1327e86b395ddcd735513267aafd4879ea2785f7792eac.en.jpg
new file mode 100644
index 00000000..4cf0d73d
Binary files /dev/null and b/translated_images/raspberry-pi-4.fd4590d308c3d456db1327e86b395ddcd735513267aafd4879ea2785f7792eac.en.jpg differ
diff --git a/translated_images/raspberry-pi-4.fd4590d308c3d456db1327e86b395ddcd735513267aafd4879ea2785f7792eac.lt.jpg b/translated_images/raspberry-pi-4.fd4590d308c3d456db1327e86b395ddcd735513267aafd4879ea2785f7792eac.lt.jpg
new file mode 100644
index 00000000..4cf0d73d
Binary files /dev/null and b/translated_images/raspberry-pi-4.fd4590d308c3d456db1327e86b395ddcd735513267aafd4879ea2785f7792eac.lt.jpg differ
diff --git a/translated_images/raspberry-pi-imager.24aedeab9e233d841a1504ed7cfeb871b1f8e1134cfcd8370e7f60a092056be2.en.png b/translated_images/raspberry-pi-imager.24aedeab9e233d841a1504ed7cfeb871b1f8e1134cfcd8370e7f60a092056be2.en.png
new file mode 100644
index 00000000..0aace880
Binary files /dev/null and b/translated_images/raspberry-pi-imager.24aedeab9e233d841a1504ed7cfeb871b1f8e1134cfcd8370e7f60a092056be2.en.png differ
diff --git a/translated_images/raspberry-pi-imager.24aedeab9e233d841a1504ed7cfeb871b1f8e1134cfcd8370e7f60a092056be2.lt.png b/translated_images/raspberry-pi-imager.24aedeab9e233d841a1504ed7cfeb871b1f8e1134cfcd8370e7f60a092056be2.lt.png
new file mode 100644
index 00000000..0aace880
Binary files /dev/null and b/translated_images/raspberry-pi-imager.24aedeab9e233d841a1504ed7cfeb871b1f8e1134cfcd8370e7f60a092056be2.lt.png differ
diff --git a/translated_images/raspberry-pi-logo.4efaa16605cee05489d8fa53941e991b3757aa24c20a95abdcf8cfd761953596.en.png b/translated_images/raspberry-pi-logo.4efaa16605cee05489d8fa53941e991b3757aa24c20a95abdcf8cfd761953596.en.png
new file mode 100644
index 00000000..b19b1f6b
Binary files /dev/null and b/translated_images/raspberry-pi-logo.4efaa16605cee05489d8fa53941e991b3757aa24c20a95abdcf8cfd761953596.en.png differ
diff --git a/translated_images/raspberry-pi-logo.4efaa16605cee05489d8fa53941e991b3757aa24c20a95abdcf8cfd761953596.lt.png b/translated_images/raspberry-pi-logo.4efaa16605cee05489d8fa53941e991b3757aa24c20a95abdcf8cfd761953596.lt.png
new file mode 100644
index 00000000..b19b1f6b
Binary files /dev/null and b/translated_images/raspberry-pi-logo.4efaa16605cee05489d8fa53941e991b3757aa24c20a95abdcf8cfd761953596.lt.png differ
diff --git a/translated_images/raspberry-pi-zero.f7a4133e1e7d54bb3dbb32319b217a53c5b94871995a54647f2894b54206b8d8.en.jpg b/translated_images/raspberry-pi-zero.f7a4133e1e7d54bb3dbb32319b217a53c5b94871995a54647f2894b54206b8d8.en.jpg
new file mode 100644
index 00000000..827670ed
Binary files /dev/null and b/translated_images/raspberry-pi-zero.f7a4133e1e7d54bb3dbb32319b217a53c5b94871995a54647f2894b54206b8d8.en.jpg differ
diff --git a/translated_images/raspberry-pi-zero.f7a4133e1e7d54bb3dbb32319b217a53c5b94871995a54647f2894b54206b8d8.lt.jpg b/translated_images/raspberry-pi-zero.f7a4133e1e7d54bb3dbb32319b217a53c5b94871995a54647f2894b54206b8d8.lt.jpg
new file mode 100644
index 00000000..827670ed
Binary files /dev/null and b/translated_images/raspberry-pi-zero.f7a4133e1e7d54bb3dbb32319b217a53c5b94871995a54647f2894b54206b8d8.lt.jpg differ
diff --git a/translated_images/relay-off.c34a178a2960fecdc3c6400d43e633ed11c6746cd653cfb4a768fa097c40394c.en.png b/translated_images/relay-off.c34a178a2960fecdc3c6400d43e633ed11c6746cd653cfb4a768fa097c40394c.en.png
new file mode 100644
index 00000000..435f901a
Binary files /dev/null and b/translated_images/relay-off.c34a178a2960fecdc3c6400d43e633ed11c6746cd653cfb4a768fa097c40394c.en.png differ
diff --git a/translated_images/relay-off.c34a178a2960fecdc3c6400d43e633ed11c6746cd653cfb4a768fa097c40394c.lt.png b/translated_images/relay-off.c34a178a2960fecdc3c6400d43e633ed11c6746cd653cfb4a768fa097c40394c.lt.png
new file mode 100644
index 00000000..435f901a
Binary files /dev/null and b/translated_images/relay-off.c34a178a2960fecdc3c6400d43e633ed11c6746cd653cfb4a768fa097c40394c.lt.png differ
diff --git a/translated_images/relay-on.4db16a0fd6b669262fd6699aff3fbcd31b6057c06d90411b6bddc06326d1cf75.en.png b/translated_images/relay-on.4db16a0fd6b669262fd6699aff3fbcd31b6057c06d90411b6bddc06326d1cf75.en.png
new file mode 100644
index 00000000..7308a1d1
Binary files /dev/null and b/translated_images/relay-on.4db16a0fd6b669262fd6699aff3fbcd31b6057c06d90411b6bddc06326d1cf75.en.png differ
diff --git a/translated_images/relay-on.4db16a0fd6b669262fd6699aff3fbcd31b6057c06d90411b6bddc06326d1cf75.lt.png b/translated_images/relay-on.4db16a0fd6b669262fd6699aff3fbcd31b6057c06d90411b6bddc06326d1cf75.lt.png
new file mode 100644
index 00000000..7308a1d1
Binary files /dev/null and b/translated_images/relay-on.4db16a0fd6b669262fd6699aff3fbcd31b6057c06d90411b6bddc06326d1cf75.lt.png differ
diff --git a/translated_images/resistive-soil-moisture-sensor.728a138a3d109e0653d8e4f6744140836c67461bbd0f4d887f47ed8228dc80b5.en.png b/translated_images/resistive-soil-moisture-sensor.728a138a3d109e0653d8e4f6744140836c67461bbd0f4d887f47ed8228dc80b5.en.png
new file mode 100644
index 00000000..8454c4d2
Binary files /dev/null and b/translated_images/resistive-soil-moisture-sensor.728a138a3d109e0653d8e4f6744140836c67461bbd0f4d887f47ed8228dc80b5.en.png differ
diff --git a/translated_images/resistive-soil-moisture-sensor.728a138a3d109e0653d8e4f6744140836c67461bbd0f4d887f47ed8228dc80b5.lt.png b/translated_images/resistive-soil-moisture-sensor.728a138a3d109e0653d8e4f6744140836c67461bbd0f4d887f47ed8228dc80b5.lt.png
new file mode 100644
index 00000000..8454c4d2
Binary files /dev/null and b/translated_images/resistive-soil-moisture-sensor.728a138a3d109e0653d8e4f6744140836c67461bbd0f4d887f47ed8228dc80b5.lt.png differ
diff --git a/translated_images/respeaker-35mm-speaker.ad79ef4f128c7751f0abf854869b6b779c90c12ae3e48909944a7e48aeee3c7e.en.png b/translated_images/respeaker-35mm-speaker.ad79ef4f128c7751f0abf854869b6b779c90c12ae3e48909944a7e48aeee3c7e.en.png
new file mode 100644
index 00000000..324b711d
Binary files /dev/null and b/translated_images/respeaker-35mm-speaker.ad79ef4f128c7751f0abf854869b6b779c90c12ae3e48909944a7e48aeee3c7e.en.png differ
diff --git a/translated_images/respeaker-35mm-speaker.ad79ef4f128c7751f0abf854869b6b779c90c12ae3e48909944a7e48aeee3c7e.lt.png b/translated_images/respeaker-35mm-speaker.ad79ef4f128c7751f0abf854869b6b779c90c12ae3e48909944a7e48aeee3c7e.lt.png
new file mode 100644
index 00000000..324b711d
Binary files /dev/null and b/translated_images/respeaker-35mm-speaker.ad79ef4f128c7751f0abf854869b6b779c90c12ae3e48909944a7e48aeee3c7e.lt.png differ
diff --git a/translated_images/respeaker-jst-speaker.a441d177809df9458041a2012dd336dbb22c00a5c9642647109d2940a50d6fcc.en.png b/translated_images/respeaker-jst-speaker.a441d177809df9458041a2012dd336dbb22c00a5c9642647109d2940a50d6fcc.en.png
new file mode 100644
index 00000000..ddfb42aa
Binary files /dev/null and b/translated_images/respeaker-jst-speaker.a441d177809df9458041a2012dd336dbb22c00a5c9642647109d2940a50d6fcc.en.png differ
diff --git a/translated_images/respeaker-jst-speaker.a441d177809df9458041a2012dd336dbb22c00a5c9642647109d2940a50d6fcc.lt.png b/translated_images/respeaker-jst-speaker.a441d177809df9458041a2012dd336dbb22c00a5c9642647109d2940a50d6fcc.lt.png
new file mode 100644
index 00000000..ddfb42aa
Binary files /dev/null and b/translated_images/respeaker-jst-speaker.a441d177809df9458041a2012dd336dbb22c00a5c9642647109d2940a50d6fcc.lt.png differ
diff --git a/translated_images/respeaker.f5d19d1c6b14ab1676d24ac2764e64fac5339046ae07be8b45ce07633d61b79b.en.png b/translated_images/respeaker.f5d19d1c6b14ab1676d24ac2764e64fac5339046ae07be8b45ce07633d61b79b.en.png
new file mode 100644
index 00000000..280f2fe0
Binary files /dev/null and b/translated_images/respeaker.f5d19d1c6b14ab1676d24ac2764e64fac5339046ae07be8b45ce07633d61b79b.en.png differ
diff --git a/translated_images/respeaker.f5d19d1c6b14ab1676d24ac2764e64fac5339046ae07be8b45ce07633d61b79b.lt.png b/translated_images/respeaker.f5d19d1c6b14ab1676d24ac2764e64fac5339046ae07be8b45ce07633d61b79b.lt.png
new file mode 100644
index 00000000..280f2fe0
Binary files /dev/null and b/translated_images/respeaker.f5d19d1c6b14ab1676d24ac2764e64fac5339046ae07be8b45ce07633d61b79b.lt.png differ
diff --git a/translated_images/ribbon-mic.eacc8e092c7441caee6d7a81e2f40e1675bf36269848964c7c09c9a9acb05127.en.jpg b/translated_images/ribbon-mic.eacc8e092c7441caee6d7a81e2f40e1675bf36269848964c7c09c9a9acb05127.en.jpg
new file mode 100644
index 00000000..89b581ef
Binary files /dev/null and b/translated_images/ribbon-mic.eacc8e092c7441caee6d7a81e2f40e1675bf36269848964c7c09c9a9acb05127.en.jpg differ
diff --git a/translated_images/ribbon-mic.eacc8e092c7441caee6d7a81e2f40e1675bf36269848964c7c09c9a9acb05127.lt.jpg b/translated_images/ribbon-mic.eacc8e092c7441caee6d7a81e2f40e1675bf36269848964c7c09c9a9acb05127.lt.jpg
new file mode 100644
index 00000000..89b581ef
Binary files /dev/null and b/translated_images/ribbon-mic.eacc8e092c7441caee6d7a81e2f40e1675bf36269848964c7c09c9a9acb05127.lt.jpg differ
diff --git a/translated_images/rpi-stock-with-bounding-boxes.b5540e2ecb7cd49f1271828d3be412671d950e87625c5597ea97c90f11e01097.en.jpg b/translated_images/rpi-stock-with-bounding-boxes.b5540e2ecb7cd49f1271828d3be412671d950e87625c5597ea97c90f11e01097.en.jpg
new file mode 100644
index 00000000..6efd2da1
Binary files /dev/null and b/translated_images/rpi-stock-with-bounding-boxes.b5540e2ecb7cd49f1271828d3be412671d950e87625c5597ea97c90f11e01097.en.jpg differ
diff --git a/translated_images/rpi-stock-with-bounding-boxes.b5540e2ecb7cd49f1271828d3be412671d950e87625c5597ea97c90f11e01097.lt.jpg b/translated_images/rpi-stock-with-bounding-boxes.b5540e2ecb7cd49f1271828d3be412671d950e87625c5597ea97c90f11e01097.lt.jpg
new file mode 100644
index 00000000..6efd2da1
Binary files /dev/null and b/translated_images/rpi-stock-with-bounding-boxes.b5540e2ecb7cd49f1271828d3be412671d950e87625c5597ea97c90f11e01097.lt.jpg differ
diff --git a/translated_images/sampling.6f4fadb3f2d9dfe7618f9edfe75a350e6b3f74293ec84f02ab69c19d2afe3d73.en.png b/translated_images/sampling.6f4fadb3f2d9dfe7618f9edfe75a350e6b3f74293ec84f02ab69c19d2afe3d73.en.png
new file mode 100644
index 00000000..348fe7a0
Binary files /dev/null and b/translated_images/sampling.6f4fadb3f2d9dfe7618f9edfe75a350e6b3f74293ec84f02ab69c19d2afe3d73.en.png differ
diff --git a/translated_images/sampling.6f4fadb3f2d9dfe7618f9edfe75a350e6b3f74293ec84f02ab69c19d2afe3d73.lt.png b/translated_images/sampling.6f4fadb3f2d9dfe7618f9edfe75a350e6b3f74293ec84f02ab69c19d2afe3d73.lt.png
new file mode 100644
index 00000000..348fe7a0
Binary files /dev/null and b/translated_images/sampling.6f4fadb3f2d9dfe7618f9edfe75a350e6b3f74293ec84f02ab69c19d2afe3d73.lt.png differ
diff --git a/translated_images/save-telemetry-database.ddc9c6bea0c5ba39449966a463ca6748cd8e2d565dab44ff31c9f1d2f6c21d27.en.png b/translated_images/save-telemetry-database.ddc9c6bea0c5ba39449966a463ca6748cd8e2d565dab44ff31c9f1d2f6c21d27.en.png
new file mode 100644
index 00000000..a69e73f4
Binary files /dev/null and b/translated_images/save-telemetry-database.ddc9c6bea0c5ba39449966a463ca6748cd8e2d565dab44ff31c9f1d2f6c21d27.en.png differ
diff --git a/translated_images/save-telemetry-database.ddc9c6bea0c5ba39449966a463ca6748cd8e2d565dab44ff31c9f1d2f6c21d27.lt.png b/translated_images/save-telemetry-database.ddc9c6bea0c5ba39449966a463ca6748cd8e2d565dab44ff31c9f1d2f6c21d27.lt.png
new file mode 100644
index 00000000..a69e73f4
Binary files /dev/null and b/translated_images/save-telemetry-database.ddc9c6bea0c5ba39449966a463ca6748cd8e2d565dab44ff31c9f1d2f6c21d27.lt.png differ
diff --git a/translated_images/save-telemetry-to-storage-from-functions.ed3b1820980097f143d9f0570072da11304c2bc7906359dfa075b4d9b253c20f.en.png b/translated_images/save-telemetry-to-storage-from-functions.ed3b1820980097f143d9f0570072da11304c2bc7906359dfa075b4d9b253c20f.en.png
new file mode 100644
index 00000000..49b0ca9b
Binary files /dev/null and b/translated_images/save-telemetry-to-storage-from-functions.ed3b1820980097f143d9f0570072da11304c2bc7906359dfa075b4d9b253c20f.en.png differ
diff --git a/translated_images/save-telemetry-to-storage-from-functions.ed3b1820980097f143d9f0570072da11304c2bc7906359dfa075b4d9b253c20f.lt.png b/translated_images/save-telemetry-to-storage-from-functions.ed3b1820980097f143d9f0570072da11304c2bc7906359dfa075b4d9b253c20f.lt.png
new file mode 100644
index 00000000..49b0ca9b
Binary files /dev/null and b/translated_images/save-telemetry-to-storage-from-functions.ed3b1820980097f143d9f0570072da11304c2bc7906359dfa075b4d9b253c20f.lt.png differ
diff --git a/translated_images/search-buffer-and-distance.e6a79af3898183c7b2ef6fbf12271b8b34afd23969bb946962b1b18d3d2635e8.en.png b/translated_images/search-buffer-and-distance.e6a79af3898183c7b2ef6fbf12271b8b34afd23969bb946962b1b18d3d2635e8.en.png
new file mode 100644
index 00000000..458a3c95
Binary files /dev/null and b/translated_images/search-buffer-and-distance.e6a79af3898183c7b2ef6fbf12271b8b34afd23969bb946962b1b18d3d2635e8.en.png differ
diff --git a/translated_images/search-buffer-and-distance.e6a79af3898183c7b2ef6fbf12271b8b34afd23969bb946962b1b18d3d2635e8.lt.png b/translated_images/search-buffer-and-distance.e6a79af3898183c7b2ef6fbf12271b8b34afd23969bb946962b1b18d3d2635e8.lt.png
new file mode 100644
index 00000000..458a3c95
Binary files /dev/null and b/translated_images/search-buffer-and-distance.e6a79af3898183c7b2ef6fbf12271b8b34afd23969bb946962b1b18d3d2635e8.lt.png differ
diff --git a/translated_images/seeed-logo.74732b6b482b6e8e8bdcc06f0541fc92b1dabf5e3e8f37afb91e04393a8cb977.en.png b/translated_images/seeed-logo.74732b6b482b6e8e8bdcc06f0541fc92b1dabf5e3e8f37afb91e04393a8cb977.en.png
new file mode 100644
index 00000000..90b687c2
Binary files /dev/null and b/translated_images/seeed-logo.74732b6b482b6e8e8bdcc06f0541fc92b1dabf5e3e8f37afb91e04393a8cb977.en.png differ
diff --git a/translated_images/seeed-logo.74732b6b482b6e8e8bdcc06f0541fc92b1dabf5e3e8f37afb91e04393a8cb977.lt.png b/translated_images/seeed-logo.74732b6b482b6e8e8bdcc06f0541fc92b1dabf5e3e8f37afb91e04393a8cb977.lt.png
new file mode 100644
index 00000000..90b687c2
Binary files /dev/null and b/translated_images/seeed-logo.74732b6b482b6e8e8bdcc06f0541fc92b1dabf5e3e8f37afb91e04393a8cb977.lt.png differ
diff --git a/translated_images/select-the-random-checkbox-and-set-a-range.32cf4bc7c12e797f8c76616b10c7c23a6592321bb1a6310e0b481e72f97d23b3.en.png b/translated_images/select-the-random-checkbox-and-set-a-range.32cf4bc7c12e797f8c76616b10c7c23a6592321bb1a6310e0b481e72f97d23b3.en.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.en.png differ
diff --git a/translated_images/select-the-random-checkbox-and-set-a-range.32cf4bc7c12e797f8c76616b10c7c23a6592321bb1a6310e0b481e72f97d23b3.lt.png b/translated_images/select-the-random-checkbox-and-set-a-range.32cf4bc7c12e797f8c76616b10c7c23a6592321bb1a6310e0b481e72f97d23b3.lt.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.lt.png differ
diff --git a/translated_images/send-message-asymmetric.7abe327c62615b8c19805252af5d4b6c5e7aaeb8fbc455efeff866fe2d300b62.en.png b/translated_images/send-message-asymmetric.7abe327c62615b8c19805252af5d4b6c5e7aaeb8fbc455efeff866fe2d300b62.en.png
new file mode 100644
index 00000000..e7ea8ab6
Binary files /dev/null and b/translated_images/send-message-asymmetric.7abe327c62615b8c19805252af5d4b6c5e7aaeb8fbc455efeff866fe2d300b62.en.png differ
diff --git a/translated_images/send-message-asymmetric.7abe327c62615b8c19805252af5d4b6c5e7aaeb8fbc455efeff866fe2d300b62.lt.png b/translated_images/send-message-asymmetric.7abe327c62615b8c19805252af5d4b6c5e7aaeb8fbc455efeff866fe2d300b62.lt.png
new file mode 100644
index 00000000..e7ea8ab6
Binary files /dev/null and b/translated_images/send-message-asymmetric.7abe327c62615b8c19805252af5d4b6c5e7aaeb8fbc455efeff866fe2d300b62.lt.png differ
diff --git a/translated_images/send-message-certificate.9cc576ac1e46b76eb58ebc8eedaa522566fa0700076da46f5180aad78c2435db.en.png b/translated_images/send-message-certificate.9cc576ac1e46b76eb58ebc8eedaa522566fa0700076da46f5180aad78c2435db.en.png
new file mode 100644
index 00000000..6f138cf9
Binary files /dev/null and b/translated_images/send-message-certificate.9cc576ac1e46b76eb58ebc8eedaa522566fa0700076da46f5180aad78c2435db.en.png differ
diff --git a/translated_images/send-message-certificate.9cc576ac1e46b76eb58ebc8eedaa522566fa0700076da46f5180aad78c2435db.lt.png b/translated_images/send-message-certificate.9cc576ac1e46b76eb58ebc8eedaa522566fa0700076da46f5180aad78c2435db.lt.png
new file mode 100644
index 00000000..6f138cf9
Binary files /dev/null and b/translated_images/send-message-certificate.9cc576ac1e46b76eb58ebc8eedaa522566fa0700076da46f5180aad78c2435db.lt.png differ
diff --git a/translated_images/send-message-symmetric-key-hacker.e7cb53db1707adfb1486a8144060cb76435fe8dbdede8cecc09e7d15b2d9a251.en.png b/translated_images/send-message-symmetric-key-hacker.e7cb53db1707adfb1486a8144060cb76435fe8dbdede8cecc09e7d15b2d9a251.en.png
new file mode 100644
index 00000000..2f5f2861
Binary files /dev/null and b/translated_images/send-message-symmetric-key-hacker.e7cb53db1707adfb1486a8144060cb76435fe8dbdede8cecc09e7d15b2d9a251.en.png differ
diff --git a/translated_images/send-message-symmetric-key-hacker.e7cb53db1707adfb1486a8144060cb76435fe8dbdede8cecc09e7d15b2d9a251.lt.png b/translated_images/send-message-symmetric-key-hacker.e7cb53db1707adfb1486a8144060cb76435fe8dbdede8cecc09e7d15b2d9a251.lt.png
new file mode 100644
index 00000000..2f5f2861
Binary files /dev/null and b/translated_images/send-message-symmetric-key-hacker.e7cb53db1707adfb1486a8144060cb76435fe8dbdede8cecc09e7d15b2d9a251.lt.png differ
diff --git a/translated_images/send-message-symmetric-key.a2e8ad0d495896ffcdf15d25bb4491c695a5cb851457b359fb0f0c89d67707c9.en.png b/translated_images/send-message-symmetric-key.a2e8ad0d495896ffcdf15d25bb4491c695a5cb851457b359fb0f0c89d67707c9.en.png
new file mode 100644
index 00000000..f2f1b63e
Binary files /dev/null and b/translated_images/send-message-symmetric-key.a2e8ad0d495896ffcdf15d25bb4491c695a5cb851457b359fb0f0c89d67707c9.en.png differ
diff --git a/translated_images/send-message-symmetric-key.a2e8ad0d495896ffcdf15d25bb4491c695a5cb851457b359fb0f0c89d67707c9.lt.png b/translated_images/send-message-symmetric-key.a2e8ad0d495896ffcdf15d25bb4491c695a5cb851457b359fb0f0c89d67707c9.lt.png
new file mode 100644
index 00000000..f2f1b63e
Binary files /dev/null and b/translated_images/send-message-symmetric-key.a2e8ad0d495896ffcdf15d25bb4491c695a5cb851457b359fb0f0c89d67707c9.lt.png differ
diff --git a/translated_images/sentence-as-intent-entities.301401696f9922590a99343f5c5d211b710b906f212f0d4d034cee3ffb610272.en.png b/translated_images/sentence-as-intent-entities.301401696f9922590a99343f5c5d211b710b906f212f0d4d034cee3ffb610272.en.png
new file mode 100644
index 00000000..5643c164
Binary files /dev/null and b/translated_images/sentence-as-intent-entities.301401696f9922590a99343f5c5d211b710b906f212f0d4d034cee3ffb610272.en.png differ
diff --git a/translated_images/sentence-as-intent-entities.301401696f9922590a99343f5c5d211b710b906f212f0d4d034cee3ffb610272.lt.png b/translated_images/sentence-as-intent-entities.301401696f9922590a99343f5c5d211b710b906f212f0d4d034cee3ffb610272.lt.png
new file mode 100644
index 00000000..5643c164
Binary files /dev/null and b/translated_images/sentence-as-intent-entities.301401696f9922590a99343f5c5d211b710b906f212f0d4d034cee3ffb610272.lt.png differ
diff --git a/translated_images/serverless-scaling.f8c769adf0413fd17be1af4f07ff63016b347e2ff869be6c4abb211f9e93909d.en.png b/translated_images/serverless-scaling.f8c769adf0413fd17be1af4f07ff63016b347e2ff869be6c4abb211f9e93909d.en.png
new file mode 100644
index 00000000..73fa30d1
Binary files /dev/null and b/translated_images/serverless-scaling.f8c769adf0413fd17be1af4f07ff63016b347e2ff869be6c4abb211f9e93909d.en.png differ
diff --git a/translated_images/serverless-scaling.f8c769adf0413fd17be1af4f07ff63016b347e2ff869be6c4abb211f9e93909d.lt.png b/translated_images/serverless-scaling.f8c769adf0413fd17be1af4f07ff63016b347e2ff869be6c4abb211f9e93909d.lt.png
new file mode 100644
index 00000000..73fa30d1
Binary files /dev/null and b/translated_images/serverless-scaling.f8c769adf0413fd17be1af4f07ff63016b347e2ff869be6c4abb211f9e93909d.lt.png differ
diff --git a/translated_images/shapes-to-images.1a309f0ea88dd66fafa4da6d38e88806ce174cc6a88081efb32852230ed55de8.en.png b/translated_images/shapes-to-images.1a309f0ea88dd66fafa4da6d38e88806ce174cc6a88081efb32852230ed55de8.en.png
new file mode 100644
index 00000000..eee39f7d
Binary files /dev/null and b/translated_images/shapes-to-images.1a309f0ea88dd66fafa4da6d38e88806ce174cc6a88081efb32852230ed55de8.en.png differ
diff --git a/translated_images/shapes-to-images.1a309f0ea88dd66fafa4da6d38e88806ce174cc6a88081efb32852230ed55de8.lt.png b/translated_images/shapes-to-images.1a309f0ea88dd66fafa4da6d38e88806ce174cc6a88081efb32852230ed55de8.lt.png
new file mode 100644
index 00000000..eee39f7d
Binary files /dev/null and b/translated_images/shapes-to-images.1a309f0ea88dd66fafa4da6d38e88806ce174cc6a88081efb32852230ed55de8.lt.png differ
diff --git a/translated_images/smarter-thermostat.a75855f15d2d9e63d5da9d7ba5847a987f6c9d98e96e770c203532275194e27d.en.png b/translated_images/smarter-thermostat.a75855f15d2d9e63d5da9d7ba5847a987f6c9d98e96e770c203532275194e27d.en.png
new file mode 100644
index 00000000..5a0fb117
Binary files /dev/null and b/translated_images/smarter-thermostat.a75855f15d2d9e63d5da9d7ba5847a987f6c9d98e96e770c203532275194e27d.en.png differ
diff --git a/translated_images/smarter-thermostat.a75855f15d2d9e63d5da9d7ba5847a987f6c9d98e96e770c203532275194e27d.lt.png b/translated_images/smarter-thermostat.a75855f15d2d9e63d5da9d7ba5847a987f6c9d98e96e770c203532275194e27d.lt.png
new file mode 100644
index 00000000..5a0fb117
Binary files /dev/null and b/translated_images/smarter-thermostat.a75855f15d2d9e63d5da9d7ba5847a987f6c9d98e96e770c203532275194e27d.lt.png differ
diff --git a/translated_images/soil-moisture-delay.865f3fae206db01d5f8f100f4f44040215d44a0412dd3450aef7ff7b93b6d273.en.png b/translated_images/soil-moisture-delay.865f3fae206db01d5f8f100f4f44040215d44a0412dd3450aef7ff7b93b6d273.en.png
new file mode 100644
index 00000000..27ddbfee
Binary files /dev/null and b/translated_images/soil-moisture-delay.865f3fae206db01d5f8f100f4f44040215d44a0412dd3450aef7ff7b93b6d273.en.png differ
diff --git a/translated_images/soil-moisture-delay.865f3fae206db01d5f8f100f4f44040215d44a0412dd3450aef7ff7b93b6d273.lt.png b/translated_images/soil-moisture-delay.865f3fae206db01d5f8f100f4f44040215d44a0412dd3450aef7ff7b93b6d273.lt.png
new file mode 100644
index 00000000..27ddbfee
Binary files /dev/null and b/translated_images/soil-moisture-delay.865f3fae206db01d5f8f100f4f44040215d44a0412dd3450aef7ff7b93b6d273.lt.png differ
diff --git a/translated_images/soil-moisture-sensor-in-soil.bfad91002bda5e960f8c51ee64b02ee59b32c8c717e3515a2c945f33e614e403.en.png b/translated_images/soil-moisture-sensor-in-soil.bfad91002bda5e960f8c51ee64b02ee59b32c8c717e3515a2c945f33e614e403.en.png
new file mode 100644
index 00000000..ee07bd10
Binary files /dev/null and b/translated_images/soil-moisture-sensor-in-soil.bfad91002bda5e960f8c51ee64b02ee59b32c8c717e3515a2c945f33e614e403.en.png differ
diff --git a/translated_images/soil-moisture-sensor-in-soil.bfad91002bda5e960f8c51ee64b02ee59b32c8c717e3515a2c945f33e614e403.lt.png b/translated_images/soil-moisture-sensor-in-soil.bfad91002bda5e960f8c51ee64b02ee59b32c8c717e3515a2c945f33e614e403.lt.png
new file mode 100644
index 00000000..ee07bd10
Binary files /dev/null and b/translated_images/soil-moisture-sensor-in-soil.bfad91002bda5e960f8c51ee64b02ee59b32c8c717e3515a2c945f33e614e403.lt.png differ
diff --git a/translated_images/soil-moisture-to-voltage-with-reading.681cb3e1f8b68caf5547dbf1415851c82e201edfb78face16fc98da4051ed9b2.en.png b/translated_images/soil-moisture-to-voltage-with-reading.681cb3e1f8b68caf5547dbf1415851c82e201edfb78face16fc98da4051ed9b2.en.png
new file mode 100644
index 00000000..37a2464a
Binary files /dev/null and b/translated_images/soil-moisture-to-voltage-with-reading.681cb3e1f8b68caf5547dbf1415851c82e201edfb78face16fc98da4051ed9b2.en.png differ
diff --git a/translated_images/soil-moisture-to-voltage-with-reading.681cb3e1f8b68caf5547dbf1415851c82e201edfb78face16fc98da4051ed9b2.lt.png b/translated_images/soil-moisture-to-voltage-with-reading.681cb3e1f8b68caf5547dbf1415851c82e201edfb78face16fc98da4051ed9b2.lt.png
new file mode 100644
index 00000000..37a2464a
Binary files /dev/null and b/translated_images/soil-moisture-to-voltage-with-reading.681cb3e1f8b68caf5547dbf1415851c82e201edfb78face16fc98da4051ed9b2.lt.png differ
diff --git a/translated_images/soil-moisture-to-voltage.df86d80cda1587008f312431ed5f79eb6c50c58d4fbc25a6763c5e9127c3106b.en.png b/translated_images/soil-moisture-to-voltage.df86d80cda1587008f312431ed5f79eb6c50c58d4fbc25a6763c5e9127c3106b.en.png
new file mode 100644
index 00000000..d852153c
Binary files /dev/null and b/translated_images/soil-moisture-to-voltage.df86d80cda1587008f312431ed5f79eb6c50c58d4fbc25a6763c5e9127c3106b.en.png differ
diff --git a/translated_images/soil-moisture-to-voltage.df86d80cda1587008f312431ed5f79eb6c50c58d4fbc25a6763c5e9127c3106b.lt.png b/translated_images/soil-moisture-to-voltage.df86d80cda1587008f312431ed5f79eb6c50c58d4fbc25a6763c5e9127c3106b.lt.png
new file mode 100644
index 00000000..d852153c
Binary files /dev/null and b/translated_images/soil-moisture-to-voltage.df86d80cda1587008f312431ed5f79eb6c50c58d4fbc25a6763c5e9127c3106b.lt.png differ
diff --git a/translated_images/soil-moisture-travel.a0e31af222cf14385de5380dfc32c7b8213960965228b8e4f7b7ab7f73b310a3.en.png b/translated_images/soil-moisture-travel.a0e31af222cf14385de5380dfc32c7b8213960965228b8e4f7b7ab7f73b310a3.en.png
new file mode 100644
index 00000000..a457ac8d
Binary files /dev/null and b/translated_images/soil-moisture-travel.a0e31af222cf14385de5380dfc32c7b8213960965228b8e4f7b7ab7f73b310a3.en.png differ
diff --git a/translated_images/soil-moisture-travel.a0e31af222cf14385de5380dfc32c7b8213960965228b8e4f7b7ab7f73b310a3.lt.png b/translated_images/soil-moisture-travel.a0e31af222cf14385de5380dfc32c7b8213960965228b8e4f7b7ab7f73b310a3.lt.png
new file mode 100644
index 00000000..a457ac8d
Binary files /dev/null and b/translated_images/soil-moisture-travel.a0e31af222cf14385de5380dfc32c7b8213960965228b8e4f7b7ab7f73b310a3.lt.png differ
diff --git a/translated_images/spi.297431d6f98b386b4ff88aea44ce9c1e7acfb1ef69c7e4e388a7aa97b6948e24.en.png b/translated_images/spi.297431d6f98b386b4ff88aea44ce9c1e7acfb1ef69c7e4e388a7aa97b6948e24.en.png
new file mode 100644
index 00000000..3eccd326
Binary files /dev/null and b/translated_images/spi.297431d6f98b386b4ff88aea44ce9c1e7acfb1ef69c7e4e388a7aa97b6948e24.en.png differ
diff --git a/translated_images/spi.297431d6f98b386b4ff88aea44ce9c1e7acfb1ef69c7e4e388a7aa97b6948e24.lt.png b/translated_images/spi.297431d6f98b386b4ff88aea44ce9c1e7acfb1ef69c7e4e388a7aa97b6948e24.lt.png
new file mode 100644
index 00000000..3eccd326
Binary files /dev/null and b/translated_images/spi.297431d6f98b386b4ff88aea44ce9c1e7acfb1ef69c7e4e388a7aa97b6948e24.lt.png differ
diff --git a/translated_images/sql-database.be160f12bfccefd3ca718a66468c2c4c89c53e5aad4c295324d576da87f9dfdd.en.png b/translated_images/sql-database.be160f12bfccefd3ca718a66468c2c4c89c53e5aad4c295324d576da87f9dfdd.en.png
new file mode 100644
index 00000000..49083372
Binary files /dev/null and b/translated_images/sql-database.be160f12bfccefd3ca718a66468c2c4c89c53e5aad4c295324d576da87f9dfdd.en.png differ
diff --git a/translated_images/sql-database.be160f12bfccefd3ca718a66468c2c4c89c53e5aad4c295324d576da87f9dfdd.lt.png b/translated_images/sql-database.be160f12bfccefd3ca718a66468c2c4c89c53e5aad4c295324d576da87f9dfdd.lt.png
new file mode 100644
index 00000000..49083372
Binary files /dev/null and b/translated_images/sql-database.be160f12bfccefd3ca718a66468c2c4c89c53e5aad4c295324d576da87f9dfdd.lt.png differ
diff --git a/translated_images/stock-7-cans-tomato-paste.f86059cc573d7becaa89a0eafb9d2cd7e2fe37405a530fe565990e2333d0e4a1.en.png b/translated_images/stock-7-cans-tomato-paste.f86059cc573d7becaa89a0eafb9d2cd7e2fe37405a530fe565990e2333d0e4a1.en.png
new file mode 100644
index 00000000..1b4a94e5
Binary files /dev/null and b/translated_images/stock-7-cans-tomato-paste.f86059cc573d7becaa89a0eafb9d2cd7e2fe37405a530fe565990e2333d0e4a1.en.png differ
diff --git a/translated_images/stock-7-cans-tomato-paste.f86059cc573d7becaa89a0eafb9d2cd7e2fe37405a530fe565990e2333d0e4a1.lt.png b/translated_images/stock-7-cans-tomato-paste.f86059cc573d7becaa89a0eafb9d2cd7e2fe37405a530fe565990e2333d0e4a1.lt.png
new file mode 100644
index 00000000..1b4a94e5
Binary files /dev/null and b/translated_images/stock-7-cans-tomato-paste.f86059cc573d7becaa89a0eafb9d2cd7e2fe37405a530fe565990e2333d0e4a1.lt.png differ
diff --git a/translated_images/stock-rogue-corn.be1f3ada8c4578544641af66671c1711a4c02297f14cc7f503354dae0d30a954.en.png b/translated_images/stock-rogue-corn.be1f3ada8c4578544641af66671c1711a4c02297f14cc7f503354dae0d30a954.en.png
new file mode 100644
index 00000000..8589e88f
Binary files /dev/null and b/translated_images/stock-rogue-corn.be1f3ada8c4578544641af66671c1711a4c02297f14cc7f503354dae0d30a954.en.png differ
diff --git a/translated_images/stock-rogue-corn.be1f3ada8c4578544641af66671c1711a4c02297f14cc7f503354dae0d30a954.lt.png b/translated_images/stock-rogue-corn.be1f3ada8c4578544641af66671c1711a4c02297f14cc7f503354dae0d30a954.lt.png
new file mode 100644
index 00000000..8589e88f
Binary files /dev/null and b/translated_images/stock-rogue-corn.be1f3ada8c4578544641af66671c1711a4c02297f14cc7f503354dae0d30a954.lt.png differ
diff --git a/translated_images/strawberry-with-pump.b410fc72ac6aabad3e28de9775bf2393ead73dcfec6fd8c9bc01cf107ecd171a.en.png b/translated_images/strawberry-with-pump.b410fc72ac6aabad3e28de9775bf2393ead73dcfec6fd8c9bc01cf107ecd171a.en.png
new file mode 100644
index 00000000..e1246f56
Binary files /dev/null and b/translated_images/strawberry-with-pump.b410fc72ac6aabad3e28de9775bf2393ead73dcfec6fd8c9bc01cf107ecd171a.en.png differ
diff --git a/translated_images/strawberry-with-pump.b410fc72ac6aabad3e28de9775bf2393ead73dcfec6fd8c9bc01cf107ecd171a.lt.png b/translated_images/strawberry-with-pump.b410fc72ac6aabad3e28de9775bf2393ead73dcfec6fd8c9bc01cf107ecd171a.lt.png
new file mode 100644
index 00000000..e1246f56
Binary files /dev/null and b/translated_images/strawberry-with-pump.b410fc72ac6aabad3e28de9775bf2393ead73dcfec6fd8c9bc01cf107ecd171a.lt.png differ
diff --git a/translated_images/telemetry.21e5d8b97649d2ebeb0f68d4b9691ab2d1f7bd629338e131465aff8a614e4d4a.en.png b/translated_images/telemetry.21e5d8b97649d2ebeb0f68d4b9691ab2d1f7bd629338e131465aff8a614e4d4a.en.png
new file mode 100644
index 00000000..db66a52b
Binary files /dev/null and b/translated_images/telemetry.21e5d8b97649d2ebeb0f68d4b9691ab2d1f7bd629338e131465aff8a614e4d4a.en.png differ
diff --git a/translated_images/telemetry.21e5d8b97649d2ebeb0f68d4b9691ab2d1f7bd629338e131465aff8a614e4d4a.lt.png b/translated_images/telemetry.21e5d8b97649d2ebeb0f68d4b9691ab2d1f7bd629338e131465aff8a614e4d4a.lt.png
new file mode 100644
index 00000000..db66a52b
Binary files /dev/null and b/translated_images/telemetry.21e5d8b97649d2ebeb0f68d4b9691ab2d1f7bd629338e131465aff8a614e4d4a.lt.png differ
diff --git a/translated_images/temperature-as-digital.85004491b977bae1129707df107c0b19fe6fc6374210e9027e04acb34a640c78.en.png b/translated_images/temperature-as-digital.85004491b977bae1129707df107c0b19fe6fc6374210e9027e04acb34a640c78.en.png
new file mode 100644
index 00000000..66c76c2f
Binary files /dev/null and b/translated_images/temperature-as-digital.85004491b977bae1129707df107c0b19fe6fc6374210e9027e04acb34a640c78.en.png differ
diff --git a/translated_images/temperature-as-digital.85004491b977bae1129707df107c0b19fe6fc6374210e9027e04acb34a640c78.lt.png b/translated_images/temperature-as-digital.85004491b977bae1129707df107c0b19fe6fc6374210e9027e04acb34a640c78.lt.png
new file mode 100644
index 00000000..66c76c2f
Binary files /dev/null and b/translated_images/temperature-as-digital.85004491b977bae1129707df107c0b19fe6fc6374210e9027e04acb34a640c78.lt.png differ
diff --git a/translated_images/time-of-flight-banana.079921ad8b1496e4525dc26b4cdc71a076407aba3e72ba113ba2e38febae92c5.en.png b/translated_images/time-of-flight-banana.079921ad8b1496e4525dc26b4cdc71a076407aba3e72ba113ba2e38febae92c5.en.png
new file mode 100644
index 00000000..450b824c
Binary files /dev/null and b/translated_images/time-of-flight-banana.079921ad8b1496e4525dc26b4cdc71a076407aba3e72ba113ba2e38febae92c5.en.png differ
diff --git a/translated_images/time-of-flight-banana.079921ad8b1496e4525dc26b4cdc71a076407aba3e72ba113ba2e38febae92c5.lt.png b/translated_images/time-of-flight-banana.079921ad8b1496e4525dc26b4cdc71a076407aba3e72ba113ba2e38febae92c5.lt.png
new file mode 100644
index 00000000..450b824c
Binary files /dev/null and b/translated_images/time-of-flight-banana.079921ad8b1496e4525dc26b4cdc71a076407aba3e72ba113ba2e38febae92c5.lt.png differ
diff --git a/translated_images/traditional-vs-ml.5c20c169621fa539ca84a2cd9a49f6ff7410b3a6c6b46c97ff2af3f99db3c66b.en.png b/translated_images/traditional-vs-ml.5c20c169621fa539ca84a2cd9a49f6ff7410b3a6c6b46c97ff2af3f99db3c66b.en.png
new file mode 100644
index 00000000..615bc7a9
Binary files /dev/null and b/translated_images/traditional-vs-ml.5c20c169621fa539ca84a2cd9a49f6ff7410b3a6c6b46c97ff2af3f99db3c66b.en.png differ
diff --git a/translated_images/traditional-vs-ml.5c20c169621fa539ca84a2cd9a49f6ff7410b3a6c6b46c97ff2af3f99db3c66b.lt.png b/translated_images/traditional-vs-ml.5c20c169621fa539ca84a2cd9a49f6ff7410b3a6c6b46c97ff2af3f99db3c66b.lt.png
new file mode 100644
index 00000000..615bc7a9
Binary files /dev/null and b/translated_images/traditional-vs-ml.5c20c169621fa539ca84a2cd9a49f6ff7410b3a6c6b46c97ff2af3f99db3c66b.lt.png differ
diff --git a/translated_images/translated-smart-timer.08ac20057fdc5c3778ed41cb425dca5d7fbcd4584b6da7b73ca67115a5b8a883.en.png b/translated_images/translated-smart-timer.08ac20057fdc5c3778ed41cb425dca5d7fbcd4584b6da7b73ca67115a5b8a883.en.png
new file mode 100644
index 00000000..3c9e2930
Binary files /dev/null and b/translated_images/translated-smart-timer.08ac20057fdc5c3778ed41cb425dca5d7fbcd4584b6da7b73ca67115a5b8a883.en.png differ
diff --git a/translated_images/translated-smart-timer.08ac20057fdc5c3778ed41cb425dca5d7fbcd4584b6da7b73ca67115a5b8a883.lt.png b/translated_images/translated-smart-timer.08ac20057fdc5c3778ed41cb425dca5d7fbcd4584b6da7b73ca67115a5b8a883.lt.png
new file mode 100644
index 00000000..3c9e2930
Binary files /dev/null and b/translated_images/translated-smart-timer.08ac20057fdc5c3778ed41cb425dca5d7fbcd4584b6da7b73ca67115a5b8a883.lt.png differ
diff --git a/translated_images/transpiration.b735aa34e4372e659f76d82527e9ce683f076d56065d0d8fddf13321666f4d80.en.png b/translated_images/transpiration.b735aa34e4372e659f76d82527e9ce683f076d56065d0d8fddf13321666f4d80.en.png
new file mode 100644
index 00000000..e4bb0186
Binary files /dev/null and b/translated_images/transpiration.b735aa34e4372e659f76d82527e9ce683f076d56065d0d8fddf13321666f4d80.en.png differ
diff --git a/translated_images/transpiration.b735aa34e4372e659f76d82527e9ce683f076d56065d0d8fddf13321666f4d80.lt.png b/translated_images/transpiration.b735aa34e4372e659f76d82527e9ce683f076d56065d0d8fddf13321666f4d80.lt.png
new file mode 100644
index 00000000..e4bb0186
Binary files /dev/null and b/translated_images/transpiration.b735aa34e4372e659f76d82527e9ce683f076d56065d0d8fddf13321666f4d80.lt.png differ
diff --git a/translated_images/tts-overview.193843cf3f5ee09f8b3371a9fdaeb0f116698a07ca69daaa77158da4800e5453.en.png b/translated_images/tts-overview.193843cf3f5ee09f8b3371a9fdaeb0f116698a07ca69daaa77158da4800e5453.en.png
new file mode 100644
index 00000000..91e4cba6
Binary files /dev/null and b/translated_images/tts-overview.193843cf3f5ee09f8b3371a9fdaeb0f116698a07ca69daaa77158da4800e5453.en.png differ
diff --git a/translated_images/tts-overview.193843cf3f5ee09f8b3371a9fdaeb0f116698a07ca69daaa77158da4800e5453.lt.png b/translated_images/tts-overview.193843cf3f5ee09f8b3371a9fdaeb0f116698a07ca69daaa77158da4800e5453.lt.png
new file mode 100644
index 00000000..91e4cba6
Binary files /dev/null and b/translated_images/tts-overview.193843cf3f5ee09f8b3371a9fdaeb0f116698a07ca69daaa77158da4800e5453.lt.png differ
diff --git a/translated_images/uart.d0dbd3fb9e3728c6ee1995c8206f3cdb13cdfd208f13745e8ef6854cab75e421.en.png b/translated_images/uart.d0dbd3fb9e3728c6ee1995c8206f3cdb13cdfd208f13745e8ef6854cab75e421.en.png
new file mode 100644
index 00000000..91230d0c
Binary files /dev/null and b/translated_images/uart.d0dbd3fb9e3728c6ee1995c8206f3cdb13cdfd208f13745e8ef6854cab75e421.en.png differ
diff --git a/translated_images/uart.d0dbd3fb9e3728c6ee1995c8206f3cdb13cdfd208f13745e8ef6854cab75e421.lt.png b/translated_images/uart.d0dbd3fb9e3728c6ee1995c8206f3cdb13cdfd208f13745e8ef6854cab75e421.lt.png
new file mode 100644
index 00000000..91230d0c
Binary files /dev/null and b/translated_images/uart.d0dbd3fb9e3728c6ee1995c8206f3cdb13cdfd208f13745e8ef6854cab75e421.lt.png differ
diff --git a/translated_images/vscode-azure-functions-init-notification.bd19b49229963edb5311fb3a79445ea469424759d2917ee2f2eb6f92d65d5086.en.png b/translated_images/vscode-azure-functions-init-notification.bd19b49229963edb5311fb3a79445ea469424759d2917ee2f2eb6f92d65d5086.en.png
new file mode 100644
index 00000000..128cd4a9
Binary files /dev/null and b/translated_images/vscode-azure-functions-init-notification.bd19b49229963edb5311fb3a79445ea469424759d2917ee2f2eb6f92d65d5086.en.png differ
diff --git a/translated_images/vscode-azure-functions-init-notification.bd19b49229963edb5311fb3a79445ea469424759d2917ee2f2eb6f92d65d5086.lt.png b/translated_images/vscode-azure-functions-init-notification.bd19b49229963edb5311fb3a79445ea469424759d2917ee2f2eb6f92d65d5086.lt.png
new file mode 100644
index 00000000..128cd4a9
Binary files /dev/null and b/translated_images/vscode-azure-functions-init-notification.bd19b49229963edb5311fb3a79445ea469424759d2917ee2f2eb6f92d65d5086.lt.png differ
diff --git a/translated_images/vscode-kill-terminal.1cc4de7c6f25ee08f423f0ead714e61d069fac1eb2089e97b8a7bbcb3d45fe5e.en.png b/translated_images/vscode-kill-terminal.1cc4de7c6f25ee08f423f0ead714e61d069fac1eb2089e97b8a7bbcb3d45fe5e.en.png
new file mode 100644
index 00000000..8d62d827
Binary files /dev/null and b/translated_images/vscode-kill-terminal.1cc4de7c6f25ee08f423f0ead714e61d069fac1eb2089e97b8a7bbcb3d45fe5e.en.png differ
diff --git a/translated_images/vscode-kill-terminal.1cc4de7c6f25ee08f423f0ead714e61d069fac1eb2089e97b8a7bbcb3d45fe5e.lt.png b/translated_images/vscode-kill-terminal.1cc4de7c6f25ee08f423f0ead714e61d069fac1eb2089e97b8a7bbcb3d45fe5e.lt.png
new file mode 100644
index 00000000..8d62d827
Binary files /dev/null and b/translated_images/vscode-kill-terminal.1cc4de7c6f25ee08f423f0ead714e61d069fac1eb2089e97b8a7bbcb3d45fe5e.lt.png differ
diff --git a/translated_images/vscode-new-file-button.182702340fe6723c8cbb4cfa1a9a9fb0d0a5227643b4e46b91ff67b07a39a92f.en.png b/translated_images/vscode-new-file-button.182702340fe6723c8cbb4cfa1a9a9fb0d0a5227643b4e46b91ff67b07a39a92f.en.png
new file mode 100644
index 00000000..a84ab661
Binary files /dev/null and b/translated_images/vscode-new-file-button.182702340fe6723c8cbb4cfa1a9a9fb0d0a5227643b4e46b91ff67b07a39a92f.en.png differ
diff --git a/translated_images/vscode-new-file-button.182702340fe6723c8cbb4cfa1a9a9fb0d0a5227643b4e46b91ff67b07a39a92f.lt.png b/translated_images/vscode-new-file-button.182702340fe6723c8cbb4cfa1a9a9fb0d0a5227643b4e46b91ff67b07a39a92f.lt.png
new file mode 100644
index 00000000..a84ab661
Binary files /dev/null and b/translated_images/vscode-new-file-button.182702340fe6723c8cbb4cfa1a9a9fb0d0a5227643b4e46b91ff67b07a39a92f.lt.png differ
diff --git a/translated_images/vscode-new-terminal.77db8fc0f9cd31824b0e49a201beafe4ae4616d6c7339992cb2819e789b3eff9.en.png b/translated_images/vscode-new-terminal.77db8fc0f9cd31824b0e49a201beafe4ae4616d6c7339992cb2819e789b3eff9.en.png
new file mode 100644
index 00000000..4c88d3d3
Binary files /dev/null and b/translated_images/vscode-new-terminal.77db8fc0f9cd31824b0e49a201beafe4ae4616d6c7339992cb2819e789b3eff9.en.png differ
diff --git a/translated_images/vscode-new-terminal.77db8fc0f9cd31824b0e49a201beafe4ae4616d6c7339992cb2819e789b3eff9.lt.png b/translated_images/vscode-new-terminal.77db8fc0f9cd31824b0e49a201beafe4ae4616d6c7339992cb2819e789b3eff9.lt.png
new file mode 100644
index 00000000..4c88d3d3
Binary files /dev/null and b/translated_images/vscode-new-terminal.77db8fc0f9cd31824b0e49a201beafe4ae4616d6c7339992cb2819e789b3eff9.lt.png differ
diff --git a/translated_images/vscode-open-nightlight-remote.d3d2a4011e30d535c4b70084f6e94bf6b5b1327fd8e77affe64465ac151ee766.en.png b/translated_images/vscode-open-nightlight-remote.d3d2a4011e30d535c4b70084f6e94bf6b5b1327fd8e77affe64465ac151ee766.en.png
new file mode 100644
index 00000000..bc1895b8
Binary files /dev/null and b/translated_images/vscode-open-nightlight-remote.d3d2a4011e30d535c4b70084f6e94bf6b5b1327fd8e77affe64465ac151ee766.en.png differ
diff --git a/translated_images/vscode-open-nightlight-remote.d3d2a4011e30d535c4b70084f6e94bf6b5b1327fd8e77affe64465ac151ee766.lt.png b/translated_images/vscode-open-nightlight-remote.d3d2a4011e30d535c4b70084f6e94bf6b5b1327fd8e77affe64465ac151ee766.lt.png
new file mode 100644
index 00000000..bc1895b8
Binary files /dev/null and b/translated_images/vscode-open-nightlight-remote.d3d2a4011e30d535c4b70084f6e94bf6b5b1327fd8e77affe64465ac151ee766.lt.png differ
diff --git a/translated_images/vscode-platformio-build-command-palette.7708e7ec7d75d7ee1a0551f42229a321c7e2e4bccac7f1a64df2ed55999f723d.en.png b/translated_images/vscode-platformio-build-command-palette.7708e7ec7d75d7ee1a0551f42229a321c7e2e4bccac7f1a64df2ed55999f723d.en.png
new file mode 100644
index 00000000..d8ff3180
Binary files /dev/null and b/translated_images/vscode-platformio-build-command-palette.7708e7ec7d75d7ee1a0551f42229a321c7e2e4bccac7f1a64df2ed55999f723d.en.png differ
diff --git a/translated_images/vscode-platformio-build-command-palette.7708e7ec7d75d7ee1a0551f42229a321c7e2e4bccac7f1a64df2ed55999f723d.lt.png b/translated_images/vscode-platformio-build-command-palette.7708e7ec7d75d7ee1a0551f42229a321c7e2e4bccac7f1a64df2ed55999f723d.lt.png
new file mode 100644
index 00000000..d8ff3180
Binary files /dev/null and b/translated_images/vscode-platformio-build-command-palette.7708e7ec7d75d7ee1a0551f42229a321c7e2e4bccac7f1a64df2ed55999f723d.lt.png differ
diff --git a/translated_images/vscode-platformio-home-open.3f9a41bfd3f4da1c866ec3e69f1675faa30b823b5b58ab58ac88e5df9a85da19.en.png b/translated_images/vscode-platformio-home-open.3f9a41bfd3f4da1c866ec3e69f1675faa30b823b5b58ab58ac88e5df9a85da19.en.png
new file mode 100644
index 00000000..06b86a65
Binary files /dev/null and b/translated_images/vscode-platformio-home-open.3f9a41bfd3f4da1c866ec3e69f1675faa30b823b5b58ab58ac88e5df9a85da19.en.png differ
diff --git a/translated_images/vscode-platformio-home-open.3f9a41bfd3f4da1c866ec3e69f1675faa30b823b5b58ab58ac88e5df9a85da19.lt.png b/translated_images/vscode-platformio-home-open.3f9a41bfd3f4da1c866ec3e69f1675faa30b823b5b58ab58ac88e5df9a85da19.lt.png
new file mode 100644
index 00000000..06b86a65
Binary files /dev/null and b/translated_images/vscode-platformio-home-open.3f9a41bfd3f4da1c866ec3e69f1675faa30b823b5b58ab58ac88e5df9a85da19.lt.png differ
diff --git a/translated_images/vscode-platformio-menu.297be26b9733e5c4635d9d8e636e93fed2015809eafb7cc8fd409c37b3ef2ef5.en.png b/translated_images/vscode-platformio-menu.297be26b9733e5c4635d9d8e636e93fed2015809eafb7cc8fd409c37b3ef2ef5.en.png
new file mode 100644
index 00000000..ac7aa47a
Binary files /dev/null and b/translated_images/vscode-platformio-menu.297be26b9733e5c4635d9d8e636e93fed2015809eafb7cc8fd409c37b3ef2ef5.en.png differ
diff --git a/translated_images/vscode-platformio-menu.297be26b9733e5c4635d9d8e636e93fed2015809eafb7cc8fd409c37b3ef2ef5.lt.png b/translated_images/vscode-platformio-menu.297be26b9733e5c4635d9d8e636e93fed2015809eafb7cc8fd409c37b3ef2ef5.lt.png
new file mode 100644
index 00000000..ac7aa47a
Binary files /dev/null and b/translated_images/vscode-platformio-menu.297be26b9733e5c4635d9d8e636e93fed2015809eafb7cc8fd409c37b3ef2ef5.lt.png differ
diff --git a/translated_images/vscode-platformio-nightlight-project-wizard.5c64db4da6037420827c2597507897233457210ee23975711fa2285efdcd0dc7.en.png b/translated_images/vscode-platformio-nightlight-project-wizard.5c64db4da6037420827c2597507897233457210ee23975711fa2285efdcd0dc7.en.png
new file mode 100644
index 00000000..20480a22
Binary files /dev/null and b/translated_images/vscode-platformio-nightlight-project-wizard.5c64db4da6037420827c2597507897233457210ee23975711fa2285efdcd0dc7.en.png differ
diff --git a/translated_images/vscode-platformio-nightlight-project-wizard.5c64db4da6037420827c2597507897233457210ee23975711fa2285efdcd0dc7.lt.png b/translated_images/vscode-platformio-nightlight-project-wizard.5c64db4da6037420827c2597507897233457210ee23975711fa2285efdcd0dc7.lt.png
new file mode 100644
index 00000000..20480a22
Binary files /dev/null and b/translated_images/vscode-platformio-nightlight-project-wizard.5c64db4da6037420827c2597507897233457210ee23975711fa2285efdcd0dc7.lt.png differ
diff --git a/translated_images/vscode-platformio-serial-monitor-command-palette.b348ec841b8a1c14af503d6fc0bf73c657c79c9acc12a6b6dd485ce3b5826f48.en.png b/translated_images/vscode-platformio-serial-monitor-command-palette.b348ec841b8a1c14af503d6fc0bf73c657c79c9acc12a6b6dd485ce3b5826f48.en.png
new file mode 100644
index 00000000..9d90f435
Binary files /dev/null and b/translated_images/vscode-platformio-serial-monitor-command-palette.b348ec841b8a1c14af503d6fc0bf73c657c79c9acc12a6b6dd485ce3b5826f48.en.png differ
diff --git a/translated_images/vscode-platformio-serial-monitor-command-palette.b348ec841b8a1c14af503d6fc0bf73c657c79c9acc12a6b6dd485ce3b5826f48.lt.png b/translated_images/vscode-platformio-serial-monitor-command-palette.b348ec841b8a1c14af503d6fc0bf73c657c79c9acc12a6b6dd485ce3b5826f48.lt.png
new file mode 100644
index 00000000..9d90f435
Binary files /dev/null and b/translated_images/vscode-platformio-serial-monitor-command-palette.b348ec841b8a1c14af503d6fc0bf73c657c79c9acc12a6b6dd485ce3b5826f48.lt.png differ
diff --git a/translated_images/vscode-platformio-upload-command-palette.9e0f49cf80d1f1c3eb5c6689b8705ad8b89f0374b21698e996fec11e4ed09347.en.png b/translated_images/vscode-platformio-upload-command-palette.9e0f49cf80d1f1c3eb5c6689b8705ad8b89f0374b21698e996fec11e4ed09347.en.png
new file mode 100644
index 00000000..27b0ea2c
Binary files /dev/null and b/translated_images/vscode-platformio-upload-command-palette.9e0f49cf80d1f1c3eb5c6689b8705ad8b89f0374b21698e996fec11e4ed09347.en.png differ
diff --git a/translated_images/vscode-platformio-upload-command-palette.9e0f49cf80d1f1c3eb5c6689b8705ad8b89f0374b21698e996fec11e4ed09347.lt.png b/translated_images/vscode-platformio-upload-command-palette.9e0f49cf80d1f1c3eb5c6689b8705ad8b89f0374b21698e996fec11e4ed09347.lt.png
new file mode 100644
index 00000000..27b0ea2c
Binary files /dev/null and b/translated_images/vscode-platformio-upload-command-palette.9e0f49cf80d1f1c3eb5c6689b8705ad8b89f0374b21698e996fec11e4ed09347.lt.png differ
diff --git a/translated_images/vscode-platformio-welcome-new-button.ba6fc8a4c7b78cc822e1ce47ba29c5db96668cce7c5f4adbfd2f1196422baa26.en.png b/translated_images/vscode-platformio-welcome-new-button.ba6fc8a4c7b78cc822e1ce47ba29c5db96668cce7c5f4adbfd2f1196422baa26.en.png
new file mode 100644
index 00000000..3526a6d0
Binary files /dev/null and b/translated_images/vscode-platformio-welcome-new-button.ba6fc8a4c7b78cc822e1ce47ba29c5db96668cce7c5f4adbfd2f1196422baa26.en.png differ
diff --git a/translated_images/vscode-platformio-welcome-new-button.ba6fc8a4c7b78cc822e1ce47ba29c5db96668cce7c5f4adbfd2f1196422baa26.lt.png b/translated_images/vscode-platformio-welcome-new-button.ba6fc8a4c7b78cc822e1ce47ba29c5db96668cce7c5f4adbfd2f1196422baa26.lt.png
new file mode 100644
index 00000000..3526a6d0
Binary files /dev/null and b/translated_images/vscode-platformio-welcome-new-button.ba6fc8a4c7b78cc822e1ce47ba29c5db96668cce7c5f4adbfd2f1196422baa26.lt.png differ
diff --git a/translated_images/vscode-virtual-env.8ba42e04c3d533cf677e16cbe5ed9a3b80f62c6964472dc84b6f940800f0909f.en.png b/translated_images/vscode-virtual-env.8ba42e04c3d533cf677e16cbe5ed9a3b80f62c6964472dc84b6f940800f0909f.en.png
new file mode 100644
index 00000000..855d442e
Binary files /dev/null and b/translated_images/vscode-virtual-env.8ba42e04c3d533cf677e16cbe5ed9a3b80f62c6964472dc84b6f940800f0909f.en.png differ
diff --git a/translated_images/vscode-virtual-env.8ba42e04c3d533cf677e16cbe5ed9a3b80f62c6964472dc84b6f940800f0909f.lt.png b/translated_images/vscode-virtual-env.8ba42e04c3d533cf677e16cbe5ed9a3b80f62c6964472dc84b6f940800f0909f.lt.png
new file mode 100644
index 00000000..855d442e
Binary files /dev/null and b/translated_images/vscode-virtual-env.8ba42e04c3d533cf677e16cbe5ed9a3b80f62c6964472dc84b6f940800f0909f.lt.png differ
diff --git a/translated_images/what-is-azure-video-thumbnail.20174db09e03bbb87d213f928d3cb27410305d2e567e952827de8478dbda959b.en.png b/translated_images/what-is-azure-video-thumbnail.20174db09e03bbb87d213f928d3cb27410305d2e567e952827de8478dbda959b.en.png
new file mode 100644
index 00000000..aed3d813
Binary files /dev/null and b/translated_images/what-is-azure-video-thumbnail.20174db09e03bbb87d213f928d3cb27410305d2e567e952827de8478dbda959b.en.png differ
diff --git a/translated_images/what-is-azure-video-thumbnail.20174db09e03bbb87d213f928d3cb27410305d2e567e952827de8478dbda959b.lt.png b/translated_images/what-is-azure-video-thumbnail.20174db09e03bbb87d213f928d3cb27410305d2e567e952827de8478dbda959b.lt.png
new file mode 100644
index 00000000..aed3d813
Binary files /dev/null and b/translated_images/what-is-azure-video-thumbnail.20174db09e03bbb87d213f928d3cb27410305d2e567e952827de8478dbda959b.lt.png differ
diff --git a/translated_images/wio-gps-sensor.19fd52b81ce58095d5deb3d4e5a1fdd88818d76569b00b1f0d740c92dc986525.en.png b/translated_images/wio-gps-sensor.19fd52b81ce58095d5deb3d4e5a1fdd88818d76569b00b1f0d740c92dc986525.en.png
new file mode 100644
index 00000000..9bfca6c2
Binary files /dev/null and b/translated_images/wio-gps-sensor.19fd52b81ce58095d5deb3d4e5a1fdd88818d76569b00b1f0d740c92dc986525.en.png differ
diff --git a/translated_images/wio-gps-sensor.19fd52b81ce58095d5deb3d4e5a1fdd88818d76569b00b1f0d740c92dc986525.lt.png b/translated_images/wio-gps-sensor.19fd52b81ce58095d5deb3d4e5a1fdd88818d76569b00b1f0d740c92dc986525.lt.png
new file mode 100644
index 00000000..9bfca6c2
Binary files /dev/null and b/translated_images/wio-gps-sensor.19fd52b81ce58095d5deb3d4e5a1fdd88818d76569b00b1f0d740c92dc986525.lt.png differ
diff --git a/translated_images/wio-hardware-kit.4c70c48b85e4283a1d73e248d87d49587c0cd077eeb69cb3eca803166f63c9a5.en.png b/translated_images/wio-hardware-kit.4c70c48b85e4283a1d73e248d87d49587c0cd077eeb69cb3eca803166f63c9a5.en.png
new file mode 100644
index 00000000..0490e302
Binary files /dev/null and b/translated_images/wio-hardware-kit.4c70c48b85e4283a1d73e248d87d49587c0cd077eeb69cb3eca803166f63c9a5.en.png differ
diff --git a/translated_images/wio-hardware-kit.4c70c48b85e4283a1d73e248d87d49587c0cd077eeb69cb3eca803166f63c9a5.lt.png b/translated_images/wio-hardware-kit.4c70c48b85e4283a1d73e248d87d49587c0cd077eeb69cb3eca803166f63c9a5.lt.png
new file mode 100644
index 00000000..0490e302
Binary files /dev/null and b/translated_images/wio-hardware-kit.4c70c48b85e4283a1d73e248d87d49587c0cd077eeb69cb3eca803166f63c9a5.lt.png differ
diff --git a/translated_images/wio-led.265a1897e72d7f21c753257516a4b677d8e30ce2b95fee98189458b3275ba0a6.en.png b/translated_images/wio-led.265a1897e72d7f21c753257516a4b677d8e30ce2b95fee98189458b3275ba0a6.en.png
new file mode 100644
index 00000000..676e2378
Binary files /dev/null and b/translated_images/wio-led.265a1897e72d7f21c753257516a4b677d8e30ce2b95fee98189458b3275ba0a6.en.png differ
diff --git a/translated_images/wio-led.265a1897e72d7f21c753257516a4b677d8e30ce2b95fee98189458b3275ba0a6.lt.png b/translated_images/wio-led.265a1897e72d7f21c753257516a4b677d8e30ce2b95fee98189458b3275ba0a6.lt.png
new file mode 100644
index 00000000..676e2378
Binary files /dev/null and b/translated_images/wio-led.265a1897e72d7f21c753257516a4b677d8e30ce2b95fee98189458b3275ba0a6.lt.png differ
diff --git a/translated_images/wio-light-sensor.b1f529f3c95f51654f2e2c1d2d4b55fe547d189f588c974f5c2462c728133840.en.png b/translated_images/wio-light-sensor.b1f529f3c95f51654f2e2c1d2d4b55fe547d189f588c974f5c2462c728133840.en.png
new file mode 100644
index 00000000..280e18c3
Binary files /dev/null and b/translated_images/wio-light-sensor.b1f529f3c95f51654f2e2c1d2d4b55fe547d189f588c974f5c2462c728133840.en.png differ
diff --git a/translated_images/wio-light-sensor.b1f529f3c95f51654f2e2c1d2d4b55fe547d189f588c974f5c2462c728133840.lt.png b/translated_images/wio-light-sensor.b1f529f3c95f51654f2e2c1d2d4b55fe547d189f588c974f5c2462c728133840.lt.png
new file mode 100644
index 00000000..280e18c3
Binary files /dev/null and b/translated_images/wio-light-sensor.b1f529f3c95f51654f2e2c1d2d4b55fe547d189f588c974f5c2462c728133840.lt.png differ
diff --git a/translated_images/wio-mic.3f8c843dbe8ad917424037a93e3d25c62634add00a04dd8e091317b5a7a90088.en.png b/translated_images/wio-mic.3f8c843dbe8ad917424037a93e3d25c62634add00a04dd8e091317b5a7a90088.en.png
new file mode 100644
index 00000000..bb70a905
Binary files /dev/null and b/translated_images/wio-mic.3f8c843dbe8ad917424037a93e3d25c62634add00a04dd8e091317b5a7a90088.en.png differ
diff --git a/translated_images/wio-mic.3f8c843dbe8ad917424037a93e3d25c62634add00a04dd8e091317b5a7a90088.lt.png b/translated_images/wio-mic.3f8c843dbe8ad917424037a93e3d25c62634add00a04dd8e091317b5a7a90088.lt.png
new file mode 100644
index 00000000..bb70a905
Binary files /dev/null and b/translated_images/wio-mic.3f8c843dbe8ad917424037a93e3d25c62634add00a04dd8e091317b5a7a90088.lt.png differ
diff --git a/translated_images/wio-relay-and-soil-moisture-sensor.ed722202d42babe0be5f4518cf13e8c2c81e8df21d37839266cbdb60cf30172d.en.png b/translated_images/wio-relay-and-soil-moisture-sensor.ed722202d42babe0be5f4518cf13e8c2c81e8df21d37839266cbdb60cf30172d.en.png
new file mode 100644
index 00000000..c0860d6e
Binary files /dev/null and b/translated_images/wio-relay-and-soil-moisture-sensor.ed722202d42babe0be5f4518cf13e8c2c81e8df21d37839266cbdb60cf30172d.en.png differ
diff --git a/translated_images/wio-relay-and-soil-moisture-sensor.ed722202d42babe0be5f4518cf13e8c2c81e8df21d37839266cbdb60cf30172d.lt.png b/translated_images/wio-relay-and-soil-moisture-sensor.ed722202d42babe0be5f4518cf13e8c2c81e8df21d37839266cbdb60cf30172d.lt.png
new file mode 100644
index 00000000..c0860d6e
Binary files /dev/null and b/translated_images/wio-relay-and-soil-moisture-sensor.ed722202d42babe0be5f4518cf13e8c2c81e8df21d37839266cbdb60cf30172d.lt.png differ
diff --git a/translated_images/wio-respeaker-hat.bd54917d446e6f6f142f9371ea52c12fd708873986bf46191208a151cd929bad.en.png b/translated_images/wio-respeaker-hat.bd54917d446e6f6f142f9371ea52c12fd708873986bf46191208a151cd929bad.en.png
new file mode 100644
index 00000000..9a34d708
Binary files /dev/null and b/translated_images/wio-respeaker-hat.bd54917d446e6f6f142f9371ea52c12fd708873986bf46191208a151cd929bad.en.png differ
diff --git a/translated_images/wio-respeaker-hat.bd54917d446e6f6f142f9371ea52c12fd708873986bf46191208a151cd929bad.lt.png b/translated_images/wio-respeaker-hat.bd54917d446e6f6f142f9371ea52c12fd708873986bf46191208a151cd929bad.lt.png
new file mode 100644
index 00000000..9a34d708
Binary files /dev/null and b/translated_images/wio-respeaker-hat.bd54917d446e6f6f142f9371ea52c12fd708873986bf46191208a151cd929bad.lt.png differ
diff --git a/translated_images/wio-respeaker-wiring-0.767f80aa6508103880d256cdf99ee7219e190db257c7261e4aec219759dc67b9.en.png b/translated_images/wio-respeaker-wiring-0.767f80aa6508103880d256cdf99ee7219e190db257c7261e4aec219759dc67b9.en.png
new file mode 100644
index 00000000..2c683d8b
Binary files /dev/null and b/translated_images/wio-respeaker-wiring-0.767f80aa6508103880d256cdf99ee7219e190db257c7261e4aec219759dc67b9.en.png differ
diff --git a/translated_images/wio-respeaker-wiring-0.767f80aa6508103880d256cdf99ee7219e190db257c7261e4aec219759dc67b9.lt.png b/translated_images/wio-respeaker-wiring-0.767f80aa6508103880d256cdf99ee7219e190db257c7261e4aec219759dc67b9.lt.png
new file mode 100644
index 00000000..2c683d8b
Binary files /dev/null and b/translated_images/wio-respeaker-wiring-0.767f80aa6508103880d256cdf99ee7219e190db257c7261e4aec219759dc67b9.lt.png differ
diff --git a/translated_images/wio-respeaker-wiring-1.8d894727f2ba24004824ee5e06b83b6d10952550003a3efb603182121521b0ef.en.png b/translated_images/wio-respeaker-wiring-1.8d894727f2ba24004824ee5e06b83b6d10952550003a3efb603182121521b0ef.en.png
new file mode 100644
index 00000000..1ba4c5b0
Binary files /dev/null and b/translated_images/wio-respeaker-wiring-1.8d894727f2ba24004824ee5e06b83b6d10952550003a3efb603182121521b0ef.en.png differ
diff --git a/translated_images/wio-respeaker-wiring-1.8d894727f2ba24004824ee5e06b83b6d10952550003a3efb603182121521b0ef.lt.png b/translated_images/wio-respeaker-wiring-1.8d894727f2ba24004824ee5e06b83b6d10952550003a3efb603182121521b0ef.lt.png
new file mode 100644
index 00000000..1ba4c5b0
Binary files /dev/null and b/translated_images/wio-respeaker-wiring-1.8d894727f2ba24004824ee5e06b83b6d10952550003a3efb603182121521b0ef.lt.png differ
diff --git a/translated_images/wio-respeaker-wiring-2.329e1cbd306e754f8ffe56f9294794f4a8fa123860d76067a79e9ea385d1bf56.en.png b/translated_images/wio-respeaker-wiring-2.329e1cbd306e754f8ffe56f9294794f4a8fa123860d76067a79e9ea385d1bf56.en.png
new file mode 100644
index 00000000..93aa3743
Binary files /dev/null and b/translated_images/wio-respeaker-wiring-2.329e1cbd306e754f8ffe56f9294794f4a8fa123860d76067a79e9ea385d1bf56.en.png differ
diff --git a/translated_images/wio-respeaker-wiring-2.329e1cbd306e754f8ffe56f9294794f4a8fa123860d76067a79e9ea385d1bf56.lt.png b/translated_images/wio-respeaker-wiring-2.329e1cbd306e754f8ffe56f9294794f4a8fa123860d76067a79e9ea385d1bf56.lt.png
new file mode 100644
index 00000000..93aa3743
Binary files /dev/null and b/translated_images/wio-respeaker-wiring-2.329e1cbd306e754f8ffe56f9294794f4a8fa123860d76067a79e9ea385d1bf56.lt.png differ
diff --git a/translated_images/wio-respeaker-wiring-3.75b0be447e2fa9307a6a954f9ae8a71b77e39ada6a5ef1a059d341dc850fd90c.en.png b/translated_images/wio-respeaker-wiring-3.75b0be447e2fa9307a6a954f9ae8a71b77e39ada6a5ef1a059d341dc850fd90c.en.png
new file mode 100644
index 00000000..3089e5e1
Binary files /dev/null and b/translated_images/wio-respeaker-wiring-3.75b0be447e2fa9307a6a954f9ae8a71b77e39ada6a5ef1a059d341dc850fd90c.en.png differ
diff --git a/translated_images/wio-respeaker-wiring-3.75b0be447e2fa9307a6a954f9ae8a71b77e39ada6a5ef1a059d341dc850fd90c.lt.png b/translated_images/wio-respeaker-wiring-3.75b0be447e2fa9307a6a954f9ae8a71b77e39ada6a5ef1a059d341dc850fd90c.lt.png
new file mode 100644
index 00000000..3089e5e1
Binary files /dev/null and b/translated_images/wio-respeaker-wiring-3.75b0be447e2fa9307a6a954f9ae8a71b77e39ada6a5ef1a059d341dc850fd90c.lt.png differ
diff --git a/translated_images/wio-respeaker-wiring-4.aa9cd434d8779437de720cba2719d83992413caed1b620b6148f6c8924889afb.en.png b/translated_images/wio-respeaker-wiring-4.aa9cd434d8779437de720cba2719d83992413caed1b620b6148f6c8924889afb.en.png
new file mode 100644
index 00000000..53468420
Binary files /dev/null and b/translated_images/wio-respeaker-wiring-4.aa9cd434d8779437de720cba2719d83992413caed1b620b6148f6c8924889afb.en.png differ
diff --git a/translated_images/wio-respeaker-wiring-4.aa9cd434d8779437de720cba2719d83992413caed1b620b6148f6c8924889afb.lt.png b/translated_images/wio-respeaker-wiring-4.aa9cd434d8779437de720cba2719d83992413caed1b620b6148f6c8924889afb.lt.png
new file mode 100644
index 00000000..53468420
Binary files /dev/null and b/translated_images/wio-respeaker-wiring-4.aa9cd434d8779437de720cba2719d83992413caed1b620b6148f6c8924889afb.lt.png differ
diff --git a/translated_images/wio-respeaker-wiring-5.af117c20acf622f3cd656ccd8f4053f8845d6aaa3af164d24cb7dbd54a4bb470.en.png b/translated_images/wio-respeaker-wiring-5.af117c20acf622f3cd656ccd8f4053f8845d6aaa3af164d24cb7dbd54a4bb470.en.png
new file mode 100644
index 00000000..003dc174
Binary files /dev/null and b/translated_images/wio-respeaker-wiring-5.af117c20acf622f3cd656ccd8f4053f8845d6aaa3af164d24cb7dbd54a4bb470.en.png differ
diff --git a/translated_images/wio-respeaker-wiring-5.af117c20acf622f3cd656ccd8f4053f8845d6aaa3af164d24cb7dbd54a4bb470.lt.png b/translated_images/wio-respeaker-wiring-5.af117c20acf622f3cd656ccd8f4053f8845d6aaa3af164d24cb7dbd54a4bb470.lt.png
new file mode 100644
index 00000000..003dc174
Binary files /dev/null and b/translated_images/wio-respeaker-wiring-5.af117c20acf622f3cd656ccd8f4053f8845d6aaa3af164d24cb7dbd54a4bb470.lt.png differ
diff --git a/translated_images/wio-sd-card.acdcbe322fa4ee7f8f9c8cc015b3263964bb26ab5c7e25b41747988cc5280d64.en.png b/translated_images/wio-sd-card.acdcbe322fa4ee7f8f9c8cc015b3263964bb26ab5c7e25b41747988cc5280d64.en.png
new file mode 100644
index 00000000..3c0d2f87
Binary files /dev/null and b/translated_images/wio-sd-card.acdcbe322fa4ee7f8f9c8cc015b3263964bb26ab5c7e25b41747988cc5280d64.en.png differ
diff --git a/translated_images/wio-sd-card.acdcbe322fa4ee7f8f9c8cc015b3263964bb26ab5c7e25b41747988cc5280d64.lt.png b/translated_images/wio-sd-card.acdcbe322fa4ee7f8f9c8cc015b3263964bb26ab5c7e25b41747988cc5280d64.lt.png
new file mode 100644
index 00000000..3c0d2f87
Binary files /dev/null and b/translated_images/wio-sd-card.acdcbe322fa4ee7f8f9c8cc015b3263964bb26ab5c7e25b41747988cc5280d64.lt.png differ
diff --git a/translated_images/wio-soil-moisture-sensor.46919b61c3f6cb7497662251b29038ee0e57a4c8b9d071feb996c3b0d7f65aaf.en.png b/translated_images/wio-soil-moisture-sensor.46919b61c3f6cb7497662251b29038ee0e57a4c8b9d071feb996c3b0d7f65aaf.en.png
new file mode 100644
index 00000000..56f285f2
Binary files /dev/null and b/translated_images/wio-soil-moisture-sensor.46919b61c3f6cb7497662251b29038ee0e57a4c8b9d071feb996c3b0d7f65aaf.en.png differ
diff --git a/translated_images/wio-soil-moisture-sensor.46919b61c3f6cb7497662251b29038ee0e57a4c8b9d071feb996c3b0d7f65aaf.lt.png b/translated_images/wio-soil-moisture-sensor.46919b61c3f6cb7497662251b29038ee0e57a4c8b9d071feb996c3b0d7f65aaf.lt.png
new file mode 100644
index 00000000..56f285f2
Binary files /dev/null and b/translated_images/wio-soil-moisture-sensor.46919b61c3f6cb7497662251b29038ee0e57a4c8b9d071feb996c3b0d7f65aaf.lt.png differ
diff --git a/translated_images/wio-temperature-sensor.2934928f38c7f79a68d24879d2c8986c78244696f931e2e33c293f426ecdc0ad.en.png b/translated_images/wio-temperature-sensor.2934928f38c7f79a68d24879d2c8986c78244696f931e2e33c293f426ecdc0ad.en.png
new file mode 100644
index 00000000..ec8bbe2f
Binary files /dev/null and b/translated_images/wio-temperature-sensor.2934928f38c7f79a68d24879d2c8986c78244696f931e2e33c293f426ecdc0ad.en.png differ
diff --git a/translated_images/wio-temperature-sensor.2934928f38c7f79a68d24879d2c8986c78244696f931e2e33c293f426ecdc0ad.lt.png b/translated_images/wio-temperature-sensor.2934928f38c7f79a68d24879d2c8986c78244696f931e2e33c293f426ecdc0ad.lt.png
new file mode 100644
index 00000000..ec8bbe2f
Binary files /dev/null and b/translated_images/wio-temperature-sensor.2934928f38c7f79a68d24879d2c8986c78244696f931e2e33c293f426ecdc0ad.lt.png differ
diff --git a/translated_images/wio-terminal-c-button.73df3cb1c1445ea07ee98316af0e7925fcb43135df0abed58d3d4822b2589c3b.en.png b/translated_images/wio-terminal-c-button.73df3cb1c1445ea07ee98316af0e7925fcb43135df0abed58d3d4822b2589c3b.en.png
new file mode 100644
index 00000000..bbaae894
Binary files /dev/null and b/translated_images/wio-terminal-c-button.73df3cb1c1445ea07ee98316af0e7925fcb43135df0abed58d3d4822b2589c3b.en.png differ
diff --git a/translated_images/wio-terminal-c-button.73df3cb1c1445ea07ee98316af0e7925fcb43135df0abed58d3d4822b2589c3b.lt.png b/translated_images/wio-terminal-c-button.73df3cb1c1445ea07ee98316af0e7925fcb43135df0abed58d3d4822b2589c3b.lt.png
new file mode 100644
index 00000000..bbaae894
Binary files /dev/null and b/translated_images/wio-terminal-c-button.73df3cb1c1445ea07ee98316af0e7925fcb43135df0abed58d3d4822b2589c3b.lt.png differ
diff --git a/translated_images/wio-terminal-pin-sticker.b90b1535937b84bd00d853f0004aea74fac2aec04b43f14b887796b2633f855e.en.png b/translated_images/wio-terminal-pin-sticker.b90b1535937b84bd00d853f0004aea74fac2aec04b43f14b887796b2633f855e.en.png
new file mode 100644
index 00000000..ef71f6da
Binary files /dev/null and b/translated_images/wio-terminal-pin-sticker.b90b1535937b84bd00d853f0004aea74fac2aec04b43f14b887796b2633f855e.en.png differ
diff --git a/translated_images/wio-terminal-pin-sticker.b90b1535937b84bd00d853f0004aea74fac2aec04b43f14b887796b2633f855e.lt.png b/translated_images/wio-terminal-pin-sticker.b90b1535937b84bd00d853f0004aea74fac2aec04b43f14b887796b2633f855e.lt.png
new file mode 100644
index 00000000..ef71f6da
Binary files /dev/null and b/translated_images/wio-terminal-pin-sticker.b90b1535937b84bd00d853f0004aea74fac2aec04b43f14b887796b2633f855e.lt.png differ
diff --git a/translated_images/wio-terminal.b8299ee16587db9aa9e05fabf9721bccd9eb8fb541b7c1a8267241282d81b603.en.png b/translated_images/wio-terminal.b8299ee16587db9aa9e05fabf9721bccd9eb8fb541b7c1a8267241282d81b603.en.png
new file mode 100644
index 00000000..4e9390eb
Binary files /dev/null and b/translated_images/wio-terminal.b8299ee16587db9aa9e05fabf9721bccd9eb8fb541b7c1a8267241282d81b603.en.png differ
diff --git a/translated_images/wio-terminal.b8299ee16587db9aa9e05fabf9721bccd9eb8fb541b7c1a8267241282d81b603.lt.png b/translated_images/wio-terminal.b8299ee16587db9aa9e05fabf9721bccd9eb8fb541b7c1a8267241282d81b603.lt.png
new file mode 100644
index 00000000..4e9390eb
Binary files /dev/null and b/translated_images/wio-terminal.b8299ee16587db9aa9e05fabf9721bccd9eb8fb541b7c1a8267241282d81b603.lt.png differ
diff --git a/translated_images/wio-time-of-flight-sensor.c4c182131d2ea73df67febd004dc0313d271013d016be9c47e7da4d77c6c20a8.en.png b/translated_images/wio-time-of-flight-sensor.c4c182131d2ea73df67febd004dc0313d271013d016be9c47e7da4d77c6c20a8.en.png
new file mode 100644
index 00000000..16d7af80
Binary files /dev/null and b/translated_images/wio-time-of-flight-sensor.c4c182131d2ea73df67febd004dc0313d271013d016be9c47e7da4d77c6c20a8.en.png differ
diff --git a/translated_images/wio-time-of-flight-sensor.c4c182131d2ea73df67febd004dc0313d271013d016be9c47e7da4d77c6c20a8.lt.png b/translated_images/wio-time-of-flight-sensor.c4c182131d2ea73df67febd004dc0313d271013d016be9c47e7da4d77c6c20a8.lt.png
new file mode 100644
index 00000000..16d7af80
Binary files /dev/null and b/translated_images/wio-time-of-flight-sensor.c4c182131d2ea73df67febd004dc0313d271013d016be9c47e7da4d77c6c20a8.lt.png differ
diff --git a/translations/en/1-getting-started/README.md b/translations/en/1-getting-started/README.md
new file mode 100644
index 00000000..4ec2b979
--- /dev/null
+++ b/translations/en/1-getting-started/README.md
@@ -0,0 +1,30 @@
+
+# Getting Started with IoT
+
+In this section of the curriculum, you will be introduced to the Internet of Things and learn the basic concepts, including creating your first 'Hello World' IoT project that connects to the cloud. This project is a nightlight that turns on when the light levels measured by a sensor decrease.
+
+
+
+## Topics
+
+1. [Introduction to IoT](lessons/1-introduction-to-iot/README.md)
+1. [A deeper dive into IoT](lessons/2-deeper-dive/README.md)
+1. [Interact with the physical world with sensors and actuators](lessons/3-sensors-and-actuators/README.md)
+1. [Connect your device to the Internet](lessons/4-connect-internet/README.md)
+
+## Credits
+
+All the lessons were written with ♥️ by [Jim Bennett](https://GitHub.com/JimBobBennett)
+
+---
+
+**Disclaimer**:
+This document has been translated using the AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). While we aim for accuracy, please note that automated translations may include errors or inaccuracies. The original document in its native language should be regarded as the authoritative source. For critical information, professional human translation is advised. We are not responsible for any misunderstandings or misinterpretations resulting from the use of this translation.
\ No newline at end of file
diff --git a/translations/en/1-getting-started/lessons/1-introduction-to-iot/README.md b/translations/en/1-getting-started/lessons/1-introduction-to-iot/README.md
new file mode 100644
index 00000000..948d3aac
--- /dev/null
+++ b/translations/en/1-getting-started/lessons/1-introduction-to-iot/README.md
@@ -0,0 +1,240 @@
+
+# Introduction to IoT
+
+
+
+> Sketchnote by [Nitya Narasimhan](https://github.com/nitya). Click the image for a larger version.
+
+This lesson was part of the [Hello IoT series](https://youtube.com/playlist?list=PLmsFUfdnGr3xRts0TIwyaHyQuHaNQcb6-) from the [Microsoft Reactor](https://developer.microsoft.com/reactor/?WT.mc_id=academic-17441-jabenn). It was delivered in two videos: a 1-hour lesson and a 1-hour office hour session that explored the lesson in more depth and answered questions.
+
+[](https://youtu.be/bVFfcYh6UBw)
+
+[](https://youtu.be/YI772q5v3yI)
+
+> 🎥 Click the images above to watch the videos
+
+## Pre-lecture quiz
+
+[Pre-lecture quiz](https://black-meadow-040d15503.1.azurestaticapps.net/quiz/1)
+
+## Introduction
+
+This lesson introduces key concepts of the Internet of Things (IoT) and guides you through setting up your hardware.
+
+In this lesson, we’ll cover:
+
+* [What is the 'Internet of Things'?](../../../../../1-getting-started/lessons/1-introduction-to-iot)
+* [IoT devices](../../../../../1-getting-started/lessons/1-introduction-to-iot)
+* [Set up your device](../../../../../1-getting-started/lessons/1-introduction-to-iot)
+* [Applications of IoT](../../../../../1-getting-started/lessons/1-introduction-to-iot)
+* [Examples of IoT devices you may have around you](../../../../../1-getting-started/lessons/1-introduction-to-iot)
+
+## What is the 'Internet of Things'?
+
+The term 'Internet of Things' was coined by [Kevin Ashton](https://wikipedia.org/wiki/Kevin_Ashton) in 1999 to describe connecting the Internet to the physical world through sensors. Since then, it has come to mean any device that interacts with the physical world, either by collecting data through sensors or performing actions via actuators (e.g., turning on a switch or lighting an LED), often connected to other devices or the Internet.
+
+> **Sensors** collect information from the environment, such as speed, temperature, or location.
+>
+> **Actuators** convert electrical signals into real-world actions, like flipping a switch, turning on lights, making sounds, or sending control signals to other hardware, such as activating a power socket.
+
+IoT encompasses more than just devices—it includes cloud-based services that process sensor data or send commands to actuators. It also involves devices that operate without direct Internet connectivity, often called edge devices. These devices can process and respond to sensor data locally, often using AI models trained in the cloud.
+
+IoT is a rapidly growing field. By the end of 2020, an estimated 30 billion IoT devices were connected to the Internet. By 2025, these devices are expected to generate nearly 80 zettabytes of data (80 trillion gigabytes). That’s an enormous amount of data!
+
+
+
+✅ Research this: How much of the data generated by IoT devices is actually used, and how much is wasted? Why is so much data ignored?
+
+This data is central to IoT’s success. To excel as an IoT developer, you need to understand what data to collect, how to collect it, how to make decisions based on it, and how to use those decisions to interact with the physical world when necessary.
+
+## IoT devices
+
+The **T** in IoT stands for **Things**—devices that interact with the physical world by collecting data through sensors or performing actions via actuators.
+
+Devices designed for production or commercial use, such as fitness trackers or industrial machine controllers, are typically custom-built. They use specialized circuit boards and processors tailored to specific tasks, whether it’s being compact enough to fit on a wrist or durable enough to withstand harsh factory conditions.
+
+As a developer learning about IoT or prototyping a device, you’ll start with a developer kit. These are general-purpose IoT devices designed for experimentation, often featuring capabilities not found in production devices, such as external pins for connecting sensors or actuators, debugging tools, or extra resources that would be unnecessary in mass production.
+
+Developer kits generally fall into two categories: microcontrollers and single-board computers. We’ll introduce both here and explore them in more detail in the next lesson.
+
+> 💁 Your smartphone can also be considered a general-purpose IoT device, with built-in sensors and actuators. Different apps use these components in various ways, often connecting to cloud services. Some IoT tutorials even use a phone app as the IoT device.
+
+### Microcontrollers
+
+A microcontroller (MCU) is a small computer that includes:
+
+🧠 One or more central processing units (CPUs) to run your program
+💾 Memory (RAM and program memory) to store your program, data, and variables
+🔌 Programmable input/output (I/O) connections to interact with external devices like sensors and actuators
+
+Microcontrollers are cost-effective, with prices for custom hardware versions averaging around $0.50, and some as low as $0.03. Developer kits start at about $4, with prices increasing as features are added. The [Wio Terminal](https://www.seeedstudio.com/Wio-Terminal-p-4509.html), a microcontroller developer kit from [Seeed Studios](https://www.seeedstudio.com), costs around $30 and includes sensors, actuators, WiFi, and a screen.
+
+
+
+> 💁 When searching for microcontrollers online, be cautious with the term **MCU**, as it often brings up results for the Marvel Cinematic Universe instead of microcontrollers.
+
+Microcontrollers are designed for specific tasks rather than general-purpose computing. You typically can’t connect a monitor, keyboard, or mouse to use them like a PC or Mac.
+
+Developer kits often include built-in sensors and actuators, such as LEDs or temperature sensors, and may support wireless connectivity like Bluetooth or WiFi.
+
+> 💁 Microcontrollers are usually programmed in C/C++.
+
+### Single-board computers
+
+A single-board computer is a compact device that functions as a complete computer on a single board. These devices are similar to desktop or laptop PCs but are smaller, consume less power, and are much cheaper.
+
+
+
+The Raspberry Pi is one of the most popular single-board computers.
+
+Unlike microcontrollers, single-board computers include features like graphics chips for connecting monitors, audio outputs, and USB ports for peripherals like keyboards, mice, webcams, or external storage. Programs and operating systems are stored on SD cards or hard drives instead of built-in memory chips.
+
+> 🎓 Think of a single-board computer as a smaller, cheaper version of your PC or Mac, with added GPIO (general-purpose input/output) pins for interacting with sensors and actuators.
+
+Single-board computers are versatile and can be programmed in any language. IoT projects often use Python.
+
+### Hardware choices for the rest of the lessons
+
+The upcoming lessons include assignments that involve using an IoT device to interact with the physical world and communicate with the cloud. You can choose from three options: an Arduino (using a Seeed Studios Wio Terminal), a physical single-board computer (like a Raspberry Pi 4), or a virtual single-board computer running on your PC or Mac.
+
+You can find details about the required hardware in the [hardware guide](../../../hardware.md).
+
+> 💁 You don’t need to buy IoT hardware to complete the assignments; everything can be done using a virtual single-board computer.
+
+Your choice of hardware depends on what’s available to you and which programming language you prefer or want to learn. Both hardware options use the same sensor ecosystem, so you can switch between them without replacing most of the components. The virtual single-board computer simulates a Raspberry Pi, and most of the code can be transferred to a physical Pi if you decide to get one later.
+
+### Arduino developer kit
+
+If you want to learn microcontroller development, you can use an Arduino device for the assignments. A basic understanding of C/C++ is required, as the lessons will focus on code relevant to the Arduino framework, sensors, actuators, and cloud libraries.
+
+The assignments will use [Visual Studio Code](https://code.visualstudio.com/?WT.mc_id=academic-17441-jabenn) with the [PlatformIO extension for microcontroller development](https://platformio.org). If you’re experienced with the Arduino IDE, you can use it, but instructions won’t be provided.
+
+### Single-board computer developer kit
+
+If you prefer IoT development with single-board computers, you can use a Raspberry Pi or a virtual device on your PC or Mac.
+
+A basic understanding of Python is required, as the lessons will focus on code relevant to the sensors, actuators, and cloud libraries.
+
+> 💁 Want to learn Python? Check out these video series:
+>
+> * [Python for beginners](https://channel9.msdn.com/Series/Intro-to-Python-Development?WT.mc_id=academic-17441-jabenn)
+> * [More Python for beginners](https://channel9.msdn.com/Series/More-Python-for-Beginners?WT.mc_id=academic-7372-jabenn)
+
+The assignments will use [Visual Studio Code](https://code.visualstudio.com/?WT.mc_id=academic-17441-jabenn).
+
+If you’re using a Raspberry Pi, you can either run it with the full desktop version of Raspberry Pi OS and code directly on the Pi using [VS Code for Raspberry Pi OS](https://code.visualstudio.com/docs/setup/raspberry-pi?WT.mc_id=academic-17441-jabenn), or run it as a headless device and code from your PC or Mac using the [Remote SSH extension](https://code.visualstudio.com/docs/remote/ssh?WT.mc_id=academic-17441-jabenn).
+
+If you choose the virtual device option, you’ll code directly on your computer. Instead of physical sensors and actuators, you’ll use a tool to simulate hardware, providing sensor values and displaying actuator results on screen.
+
+## Set up your device
+
+Before you start programming your IoT device, you’ll need to complete some setup. Follow the instructions for your chosen device.
+💁 If you don't have a device yet, check out the [hardware guide](../../../hardware.md) to help you decide which device to use and what additional hardware you might need to buy. Purchasing hardware is not necessary, as all the projects can be executed on virtual hardware.
+These instructions include links to third-party websites from the creators of the hardware or tools you will be using. This ensures you always have access to the most up-to-date instructions for the various tools and hardware.
+
+Follow the relevant guide to set up your device and complete a 'Hello World' project. This will be your first step in creating an IoT nightlight over the course of four lessons in this introductory section.
+
+* [Arduino - Wio Terminal](wio-terminal.md)
+* [Single-board computer - Raspberry Pi](pi.md)
+* [Single-board computer - Virtual device](virtual-device.md)
+
+✅ You will be using VS Code for both Arduino and single-board computers. If you haven't used it before, you can learn more about it on the [VS Code site](https://code.visualstudio.com?WT.mc_id=academic-17441-jabenn).
+
+## Applications of IoT
+
+IoT spans a wide range of use cases across several broad categories:
+
+* Consumer IoT
+* Commercial IoT
+* Industrial IoT
+* Infrastructure IoT
+
+✅ Do a little research: For each of the areas described below, find one specific example that isn't mentioned in the text.
+
+### Consumer IoT
+
+Consumer IoT refers to IoT devices that people purchase and use in their homes. Some of these devices are incredibly useful, such as smart speakers, smart heating systems, and robotic vacuum cleaners. Others are less practical, like voice-controlled faucets that become difficult to turn off because the voice control can't hear you over the sound of running water.
+
+Consumer IoT devices empower people to do more in their environments, especially the 1 billion individuals living with disabilities. Robotic vacuum cleaners can help people with mobility challenges maintain clean floors, voice-controlled ovens enable those with limited vision or motor skills to operate their ovens using only their voice, and health monitors allow patients to track chronic conditions with more frequent and detailed updates. These devices are becoming so common that even young children use them daily—for instance, students engaged in virtual learning during the COVID pandemic used smart home devices to set timers for schoolwork or alarms for upcoming class meetings.
+
+✅ What consumer IoT devices do you have on you or in your home?
+
+### Commercial IoT
+
+Commercial IoT involves the use of IoT in workplaces. In offices, occupancy sensors and motion detectors can manage lighting and heating, ensuring these systems are only active when needed, which reduces costs and carbon emissions. In factories, IoT devices can monitor safety hazards, such as workers not wearing hard hats or noise levels reaching dangerous thresholds. In retail, IoT devices can track the temperature of cold storage, alerting shop owners if a fridge or freezer goes outside the required range, or monitor shelf inventory to direct employees to restock items. The transportation industry increasingly relies on IoT to track vehicle locations, monitor mileage for road usage fees, ensure driver compliance with hours and breaks, or notify staff when a vehicle is approaching a depot for loading or unloading.
+
+✅ What commercial IoT devices do you have in your school or workplace?
+
+### Industrial IoT (IIoT)
+
+Industrial IoT, or IIoT, refers to the use of IoT devices to manage and control machinery on a large scale. This includes applications in factories and digital agriculture.
+
+Factories use IoT devices in various ways. Sensors can monitor machinery for temperature, vibration, and rotation speed. This data can be used to shut down machines if they exceed certain limits—for example, if they overheat. Additionally, this data can be analyzed over time for predictive maintenance, where AI models identify patterns leading to failures and predict future issues before they occur.
+
+Digital agriculture is vital for feeding the growing global population, especially the 2 billion people in 500 million households who rely on [subsistence farming](https://wikipedia.org/wiki/Subsistence_agriculture). Digital agriculture can range from inexpensive sensors to large-scale commercial setups. Farmers can start by monitoring temperatures and using [growing degree days](https://wikipedia.org/wiki/Growing_degree-day) to predict harvest times. Soil moisture sensors can be connected to automated irrigation systems to provide plants with just the right amount of water, avoiding both drought and waste. Advanced setups include drones, satellite data, and AI to monitor crop growth, disease, and soil quality across vast areas of farmland.
+
+✅ What other IoT devices could benefit farmers?
+
+### Infrastructure IoT
+
+Infrastructure IoT involves monitoring and managing local and global infrastructure that people use daily.
+
+[Smart Cities](https://wikipedia.org/wiki/Smart_city) are urban areas that use IoT devices to collect data and improve city operations. These cities often involve collaborations between local governments, academia, and businesses, tracking and managing aspects like transportation, parking, and pollution. For example, in Copenhagen, Denmark, air pollution is a major concern for residents, so it is measured, and the data is used to provide information on the cleanest cycling and jogging routes.
+
+[Smart power grids](https://wikipedia.org/wiki/Smart_grid) use IoT to analyze power demand by collecting usage data at the household level. This data can inform decisions at a national level, such as where to build new power stations, and at a personal level, offering insights into individual power usage patterns and suggestions for cost savings, like charging electric vehicles at night.
+
+✅ If you could add IoT devices to measure anything in your area, what would it be?
+
+## Examples of IoT devices you may have around you
+
+You might be surprised by how many IoT devices are around you. Writing this from home, I have the following devices connected to the Internet with smart features like app control, voice control, or the ability to send data to my phone:
+
+* Multiple smart speakers
+* Fridge, dishwasher, oven, and microwave
+* Electricity monitor for solar panels
+* Smart plugs
+* Video doorbell and security cameras
+* Smart thermostat with multiple smart room sensors
+* Garage door opener
+* Home entertainment systems and voice-controlled TVs
+* Lights
+* Fitness and health trackers
+
+All these devices have sensors and/or actuators and connect to the Internet. For example, I can check from my phone whether my garage door is open and ask my smart speaker to close it. I can even set it to close automatically at night if it's still open. When my doorbell rings, I can see who's there on my phone, no matter where I am, and talk to them through the doorbell's built-in speaker and microphone. I can monitor my blood glucose, heart rate, and sleep patterns, using the data to improve my health. I can control my lights via the cloud, though I sit in the dark when my Internet connection goes down.
+
+---
+
+## 🚀 Challenge
+
+List as many IoT devices as you can find in your home, school, or workplace—you might discover more than you expect!
+
+## Post-lecture quiz
+
+[Post-lecture quiz](https://black-meadow-040d15503.1.azurestaticapps.net/quiz/2)
+
+## Review & Self Study
+
+Research the benefits and drawbacks of consumer IoT projects. Look for news articles about instances where IoT has failed, such as privacy concerns, hardware issues, or problems caused by lack of connectivity.
+
+Some examples:
+
+* Check out the Twitter account **[Internet of Sh*t](https://twitter.com/internetofshit)** *(profanity warning)* for examples of consumer IoT failures.
+* [c|net - My Apple Watch saved my life: 5 people share their stories](https://www.cnet.com/news/apple-watch-lifesaving-health-features-read-5-peoples-stories/)
+* [c|net - ADT technician pleads guilty to spying on customer camera feeds for years](https://www.cnet.com/news/adt-home-security-technician-pleads-guilty-to-spying-on-customer-camera-feeds-for-years/) *(trigger warning - non-consensual voyeurism)*
+
+## Assignment
+
+[Investigate an IoT project](assignment.md)
+
+---
+
+**Disclaimer**:
+This document has been translated using the AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). While we aim for accuracy, please note that automated translations may include errors or inaccuracies. The original document in its native language should be regarded as the authoritative source. For critical information, professional human translation is advised. We are not responsible for any misunderstandings or misinterpretations resulting from the use of this translation.
\ No newline at end of file
diff --git a/translations/en/1-getting-started/lessons/1-introduction-to-iot/assignment.md b/translations/en/1-getting-started/lessons/1-introduction-to-iot/assignment.md
new file mode 100644
index 00000000..f03885eb
--- /dev/null
+++ b/translations/en/1-getting-started/lessons/1-introduction-to-iot/assignment.md
@@ -0,0 +1,27 @@
+
+# Explore an IoT Project
+
+## Instructions
+
+There are numerous IoT projects being implemented worldwide, ranging from smart farms to smart cities, healthcare monitoring, transportation, and public space management.
+
+Search online for information about a project that interests you, preferably one located near you. Discuss the advantages and disadvantages of the project, including the benefits it provides, any issues it creates, and how privacy concerns are addressed.
+
+## Rubric
+
+| Criteria | Outstanding | Satisfactory | Needs Improvement |
+| -------- | ----------- | ------------ | ----------------- |
+| Discuss the advantages and disadvantages | Provided a detailed explanation of the project's advantages and disadvantages | Provided a brief explanation of the project's advantages and disadvantages | Did not discuss the project's advantages or disadvantages |
+
+---
+
+**Disclaimer**:
+This document has been translated using the AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). While we aim for accuracy, please note that automated translations may include errors or inaccuracies. The original document in its native language should be regarded as the authoritative source. For critical information, professional human translation is advised. We are not responsible for any misunderstandings or misinterpretations resulting from the use of this translation.
\ No newline at end of file
diff --git a/translations/en/1-getting-started/lessons/1-introduction-to-iot/pi.md b/translations/en/1-getting-started/lessons/1-introduction-to-iot/pi.md
new file mode 100644
index 00000000..e53b54a6
--- /dev/null
+++ b/translations/en/1-getting-started/lessons/1-introduction-to-iot/pi.md
@@ -0,0 +1,284 @@
+
+# Raspberry Pi
+
+The [Raspberry Pi](https://raspberrypi.org) is a single-board computer. You can connect sensors and actuators using a variety of devices and ecosystems. For these lessons, you'll use a hardware ecosystem called [Grove](https://www.seeedstudio.com/category/Grove-c-1003.html). You'll program your Pi and interact with the Grove sensors using Python.
+
+
+
+## Setup
+
+If you're using a Raspberry Pi as your IoT hardware, you have two options: you can either work through these lessons and code directly on the Pi, or you can connect remotely to a 'headless' Pi and code from your computer.
+
+Before starting, you'll also need to attach the Grove Base Hat to your Pi.
+
+### Task - setup
+
+Install the Grove Base Hat on your Pi and configure the Pi.
+
+1. Attach the Grove Base Hat to your Pi. The socket on the hat fits over all the GPIO pins on the Pi, sliding down the pins to sit securely on the base. It will cover the Pi.
+
+ 
+
+1. Decide how you want to program your Pi, and go to the relevant section below:
+
+ * [Work directly on your Pi](../../../../../1-getting-started/lessons/1-introduction-to-iot)
+ * [Remote access to code the Pi](../../../../../1-getting-started/lessons/1-introduction-to-iot)
+
+### Work directly on your Pi
+
+If you prefer to work directly on your Pi, you can use the desktop version of Raspberry Pi OS and install all the necessary tools.
+
+#### Task - work directly on your Pi
+
+Prepare your Pi for development.
+
+1. Follow the instructions in the [Raspberry Pi setup guide](https://projects.raspberrypi.org/en/projects/raspberry-pi-setting-up) to set up your Pi, connect it to a keyboard/mouse/monitor, connect it to your WiFi or Ethernet network, and update the software.
+
+To program the Pi with the Grove sensors and actuators, you'll need to install an editor for writing device code, as well as various libraries and tools to interact with the Grove hardware.
+
+1. Once your Pi has rebooted, open the Terminal by clicking the **Terminal** icon on the top menu bar, or go to *Menu -> Accessories -> Terminal*.
+
+1. Run the following command to ensure the OS and installed software are up to date:
+
+ ```sh
+ sudo apt update && sudo apt full-upgrade --yes
+ ```
+
+1. Run the following commands to install all the required libraries for the Grove hardware:
+
+ ```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
+ ```
+
+ This starts by installing Git, along with Pip for managing Python packages.
+
+ One of Python's strengths is the ability to install [Pip packages](https://pypi.org)—these are code packages created by others and shared online. You can install a Pip package on your computer with a single command and use it in your code.
+
+ The Seeed Grove Python packages need to be installed from source. These commands will clone the repository containing the source code for this package and install it locally.
+
+ > 💁 By default, when you install a package, it becomes available system-wide, which can sometimes cause version conflicts—e.g., one application might require a specific version of a package that breaks when you install a newer version for another application. To avoid this, you can use a [Python virtual environment](https://docs.python.org/3/library/venv.html), which is essentially a dedicated folder containing a copy of Python. Any Pip packages you install will only be available in that folder. However, for this project, you won't be using virtual environments. The Grove installation script installs the Grove Python packages globally. If you wanted to use a virtual environment, you'd need to set it up and manually reinstall the Grove packages within it. Using global packages is simpler, especially since many Pi developers re-flash a clean SD card for each project.
+
+ Finally, this enables the I2C interface.
+
+1. Reboot the Pi using the menu or by running the following command in the Terminal:
+
+ ```sh
+ sudo reboot
+ ```
+
+1. After the Pi reboots, reopen the Terminal and run the following command to install [Visual Studio Code (VS Code)](https://code.visualstudio.com?WT.mc_id=academic-17441-jabenn), the editor you'll use to write your Python device code.
+
+ ```sh
+ sudo apt install code
+ ```
+
+ Once installed, VS Code will be accessible from the top menu.
+
+ > 💁 You can use any Python IDE or editor you prefer for these lessons, but the instructions provided will be based on VS Code.
+
+1. Install Pylance, an extension for VS Code that provides Python language support. Refer to the [Pylance extension documentation](https://marketplace.visualstudio.com/items?WT.mc_id=academic-17441-jabenn&itemName=ms-python.vscode-pylance) for installation instructions.
+
+### Remote access to code the Pi
+
+Instead of coding directly on the Pi, you can run it 'headless' (without a keyboard/mouse/monitor) and configure and code on it from your computer using Visual Studio Code.
+
+#### Set up the Pi OS
+
+To code remotely, you'll need to install the Pi OS on an SD card.
+
+##### Task - set up the Pi OS
+
+Prepare the headless Pi OS.
+
+1. Download the **Raspberry Pi Imager** from the [Raspberry Pi OS software page](https://www.raspberrypi.org/software/) and install it.
+
+1. Insert an SD card into your computer, using an adapter if needed.
+
+1. Open the Raspberry Pi Imager.
+
+1. In the Raspberry Pi Imager, click the **CHOOSE OS** button, then select *Raspberry Pi OS (Other)*, followed by *Raspberry Pi OS Lite (32-bit)*.
+
+ 
+
+ > 💁 Raspberry Pi OS Lite is a version of Raspberry Pi OS without the desktop UI or graphical tools. These aren't necessary for a headless Pi, making the installation smaller and boot times faster.
+
+1. Click the **CHOOSE STORAGE** button, then select your SD card.
+
+1. Open the **Advanced Options** by pressing `Ctrl+Shift+X`. These options allow you to pre-configure the Raspberry Pi OS before writing it to the SD card.
+
+ 1. Check the **Enable SSH** box and set a password for the `pi` user. You'll use this password to log in to the Pi later.
+
+ 1. If you plan to connect to the Pi via WiFi, check the **Configure WiFi** box and enter your WiFi SSID and password, as well as selecting your WiFi country. If you're using an Ethernet cable, you can skip this step. Ensure the network you connect to is the same as your computer's.
+
+ 1. Check the **Set locale settings** box and set your country and timezone.
+
+ 1. Click the **SAVE** button.
+
+1. Click the **WRITE** button to write the OS to the SD card. If you're using macOS, you'll be prompted to enter your password, as the tool that writes disk images requires elevated permissions.
+
+The OS will be written to the SD card. Once complete, the card will be ejected, and you'll be notified. Remove the SD card from your computer, insert it into the Pi, power it on, and wait about 2 minutes for it to boot.
+
+#### Connect to the Pi
+
+Next, you'll remotely access the Pi using `ssh`, which is available on macOS, Linux, and recent versions of Windows.
+
+##### Task - connect to the Pi
+
+Remotely access the Pi.
+
+1. Open a Terminal or Command Prompt and enter the following command to connect to the Pi:
+
+ ```sh
+ ssh pi@raspberrypi.local
+ ```
+
+ If you're using an older version of Windows without `ssh`, you can install OpenSSH. Follow the [OpenSSH installation documentation](https://docs.microsoft.com//windows-server/administration/openssh/openssh_install_firstuse?WT.mc_id=academic-17441-jabenn) for instructions.
+
+1. This should connect to your Pi and prompt you for the password.
+
+ The ability to find computers on your network using `.local` is a relatively recent feature in Linux and Windows. If you're using Linux or Windows and encounter errors about the hostname not being found, you'll need to install additional software to enable ZeroConf networking (also called Bonjour by Apple):
+
+ 1. On Linux, install Avahi with the following command:
+
+ ```sh
+ sudo apt-get install avahi-daemon
+ ```
+
+ 1. On Windows, the easiest way to enable ZeroConf is to install [Bonjour Print Services for Windows](http://support.apple.com/kb/DL999). Alternatively, you can install [iTunes for Windows](https://www.apple.com/itunes/download/) to get a newer version of the utility.
+
+ > 💁 If you can't connect using `raspberrypi.local`, you can use the Pi's IP address. Refer to the [Raspberry Pi IP address documentation](https://www.raspberrypi.org/documentation/remote-access/ip-address.md) for instructions on finding the IP address.
+
+1. Enter the password you set in the Raspberry Pi Imager Advanced Options.
+
+#### Configure software on the Pi
+
+Once connected to the Pi, you'll need to update the OS and install the necessary libraries and tools for the Grove hardware.
+
+##### Task - configure software on the Pi
+
+Set up the Pi software and install the Grove libraries.
+
+1. From your `ssh` session, run the following command to update and reboot the Pi:
+
+ ```sh
+ sudo apt update && sudo apt full-upgrade --yes && sudo reboot
+ ```
+
+ The Pi will update and reboot. The `ssh` session will disconnect during the reboot, so wait about 30 seconds before reconnecting.
+
+1. After reconnecting via `ssh`, run the following commands to install the required libraries for the Grove hardware:
+
+ ```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
+ ```
+
+ This starts by installing Git and Pip for managing Python packages.
+
+ The Seeed Grove Python packages need to be installed from source. These commands will clone the repository containing the source code and install it locally.
+
+ > 💁 By default, packages are installed globally, which can sometimes cause version conflicts. To avoid this, you can use a [Python virtual environment](https://docs.python.org/3/library/venv.html). However, for simplicity, you'll use global packages for this project.
+
+ Finally, this enables the I2C interface.
+
+1. Reboot the Pi with the following command:
+
+ ```sh
+ sudo reboot
+ ```
+
+ The `ssh` session will disconnect during the reboot. There's no need to reconnect.
+
+#### Configure VS Code for remote access
+
+Once the Pi is set up, you can connect to it using Visual Studio Code (VS Code) from your computer. VS Code is a free developer text editor you'll use to write your Python device code.
+
+##### Task - configure VS Code for remote access
+
+Install the necessary software and connect to your Pi remotely.
+
+1. Install VS Code on your computer by following the [VS Code documentation](https://code.visualstudio.com?WT.mc_id=academic-17441-jabenn).
+
+1. Follow the instructions in the [VS Code Remote Development using SSH documentation](https://code.visualstudio.com/docs/remote/ssh?WT.mc_id=academic-17441-jabenn) to install the required components.
+
+1. Using the same instructions, connect VS Code to the Pi.
+
+1. Once connected, follow the [managing extensions](https://code.visualstudio.com/docs/remote/ssh#_managing-extensions?WT.mc_id=academic-17441-jabenn) guide to install the [Pylance extension](https://marketplace.visualstudio.com/items?WT.mc_id=academic-17441-jabenn&itemName=ms-python.vscode-pylance) remotely on the Pi.
+
+## Hello world
+It is customary when learning a new programming language or technology to start by creating a 'Hello World' application—a simple program that outputs text like `"Hello World"` to confirm that all tools are set up correctly.
+
+The Hello World app for the Pi will help ensure that Python and Visual Studio Code are installed properly.
+
+This app will be stored in a folder named `nightlight`, and later in this assignment, the folder will be reused with different code to develop the nightlight application.
+
+### Task - Hello World
+
+Create the Hello World app.
+
+1. Open VS Code, either directly on the Pi or on your computer, connected to the Pi using the Remote SSH extension.
+
+1. Open the VS Code Terminal by selecting *Terminal -> New Terminal* or pressing `` CTRL+` ``. The terminal will open in the home directory of the `pi` user.
+
+1. Execute the following commands to create a directory for your code and a Python file named `app.py` within that directory:
+
+ ```sh
+ mkdir nightlight
+ cd nightlight
+ touch app.py
+ ```
+
+1. Open this folder in VS Code by selecting *File -> Open...* and choosing the *nightlight* folder, then click **OK**.
+
+ 
+
+1. Open the `app.py` file from the VS Code explorer and insert the following code:
+
+ ```python
+ print('Hello World!')
+ ```
+
+ The `print` function outputs whatever is passed to it in the console.
+
+1. From the VS Code Terminal, run the following command to execute your Python app:
+
+ ```sh
+ python app.py
+ ```
+
+ > 💁 You might need to explicitly use `python3` to run this code if Python 2 is installed alongside Python 3 (the latest version). If Python 2 is installed, running `python` will default to Python 2 instead of Python 3. By default, the latest Raspberry Pi OS versions only come with Python 3 installed.
+
+ The terminal will display the following output:
+
+ ```output
+ pi@raspberrypi:~/nightlight $ python3 app.py
+ Hello World!
+ ```
+
+> 💁 You can find this code in the [code/pi](../../../../../1-getting-started/lessons/1-introduction-to-iot/code/pi) folder.
+
+😀 Congratulations! Your 'Hello World' program worked successfully!
+
+---
+
+**Disclaimer**:
+This document has been translated using the AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). While we aim for accuracy, please note that automated translations may include errors or inaccuracies. The original document in its native language should be regarded as the authoritative source. For critical information, professional human translation is advised. We are not responsible for any misunderstandings or misinterpretations resulting from the use of this translation.
\ No newline at end of file
diff --git a/translations/en/1-getting-started/lessons/1-introduction-to-iot/virtual-device.md b/translations/en/1-getting-started/lessons/1-introduction-to-iot/virtual-device.md
new file mode 100644
index 00000000..342182b7
--- /dev/null
+++ b/translations/en/1-getting-started/lessons/1-introduction-to-iot/virtual-device.md
@@ -0,0 +1,239 @@
+
+# Virtual single-board computer
+
+Instead of buying an IoT device along with sensors and actuators, you can use your computer to simulate IoT hardware. The [CounterFit project](https://github.com/CounterFit-IoT/CounterFit) allows you to run an app locally that simulates IoT hardware like sensors and actuators, and access them from local Python code written in the same way as you would on a Raspberry Pi with physical hardware.
+
+## Setup
+
+To use CounterFit, you need to install some free software on your computer.
+
+### Task
+
+Install the required software.
+
+1. Install Python. Follow the instructions on the [Python downloads page](https://www.python.org/downloads/) to install the latest version of Python.
+
+1. Install Visual Studio Code (VS Code). This is the editor you will use to write your virtual device code in Python. Refer to the [VS Code documentation](https://code.visualstudio.com?WT.mc_id=academic-17441-jabenn) for installation instructions.
+
+ > 💁 You can use any Python IDE or editor for these lessons if you prefer, but the instructions will be based on using VS Code.
+
+1. Install the VS Code Pylance extension. This extension provides Python language support in VS Code. Refer to the [Pylance extension documentation](https://marketplace.visualstudio.com/items?WT.mc_id=academic-17441-jabenn&itemName=ms-python.vscode-pylance) for installation instructions.
+
+Instructions for installing and configuring the CounterFit app will be provided later in the assignment, as it is installed on a per-project basis.
+
+## Hello world
+
+When starting with a new programming language or technology, it’s traditional to create a 'Hello World' application—a small program that outputs something like `"Hello World"` to confirm that all tools are set up correctly.
+
+The Hello World app for the virtual IoT hardware will ensure that Python and Visual Studio Code are installed correctly. It will also connect to CounterFit for the virtual IoT sensors and actuators. No hardware will be used; the app will simply connect to verify everything is working.
+
+This app will be created in a folder called `nightlight` and will be reused with different code in later parts of this assignment to build the nightlight application.
+
+### Configure a Python virtual environment
+
+One of Python's strengths is the ability to install [Pip packages](https://pypi.org)—packages of code written by others and shared online. You can install a Pip package with a single command and use it in your code. You’ll use Pip to install a package to interact with CounterFit.
+
+By default, installed packages are available system-wide, which can lead to version conflicts—one application might require a specific version of a package that breaks when another application installs a newer version. To avoid this, you can use a [Python virtual environment](https://docs.python.org/3/library/venv.html), which is essentially a copy of Python in a dedicated folder. Pip packages installed in this environment are isolated to that folder.
+
+> 💁 If you are using a Raspberry Pi, you didn’t set up a virtual environment on that device to manage Pip packages. Instead, you are using global packages, as the Grove packages are installed globally by the installer script.
+
+#### Task - configure a Python virtual environment
+
+Set up a Python virtual environment and install the Pip packages for CounterFit.
+
+1. From your terminal or command line, run the following commands to create and navigate to a new directory:
+
+ ```sh
+ mkdir nightlight
+ cd nightlight
+ ```
+
+1. Create a virtual environment in the `.venv` folder:
+
+ ```sh
+ python3 -m venv .venv
+ ```
+
+ > 💁 Use `python3` explicitly to create the virtual environment, as `python` might refer to Python 2 if it’s installed on your system.
+
+1. Activate the virtual environment:
+
+ * On Windows:
+ * If using the Command Prompt or Command Prompt in Windows Terminal, run:
+
+ ```cmd
+ .venv\Scripts\activate.bat
+ ```
+
+ * If using PowerShell, run:
+
+ ```powershell
+ .\.venv\Scripts\Activate.ps1
+ ```
+
+ > If you encounter an error about running scripts being disabled, enable script execution by launching PowerShell as an administrator and running:
+
+ ```powershell
+ Set-ExecutionPolicy -ExecutionPolicy Unrestricted
+ ```
+
+ Confirm with `Y` when prompted. Then restart PowerShell and try again.
+
+ You can reset this execution policy later if needed. For more details, see the [Execution Policies page on Microsoft Docs](https://docs.microsoft.com/powershell/module/microsoft.powershell.core/about/about_execution_policies?WT.mc_id=academic-17441-jabenn).
+
+ * On macOS or Linux, run:
+
+ ```cmd
+ source ./.venv/bin/activate
+ ```
+
+ > 💁 Run these commands from the same location where you created the virtual environment. You don’t need to navigate into the `.venv` folder; always activate the environment and run commands from the folder where the virtual environment was created.
+
+1. Once the virtual environment is activated, the `python` command will use the version of Python that created the environment. Check the version by running:
+
+ ```sh
+ python --version
+ ```
+
+ The output should include:
+
+ ```output
+ (.venv) ➜ nightlight python --version
+ Python 3.9.1
+ ```
+
+ > 💁 Your Python version may differ. As long as it’s 3.6 or higher, you’re good. If not, delete the folder, install a newer Python version, and try again.
+
+1. Install the Pip packages for CounterFit:
+
+ ```sh
+ pip install CounterFit
+ pip install counterfit-connection
+ pip install counterfit-shims-grove
+ ```
+
+ These packages will only be available in the virtual environment.
+
+### Write the code
+
+Once the Python virtual environment is ready, you can write the 'Hello World' application.
+
+#### Task - write the code
+
+Create a Python application to print `"Hello World"` to the console.
+
+1. From the terminal or command line, create a Python file called `app.py`:
+
+ * On Windows:
+
+ ```cmd
+ type nul > app.py
+ ```
+
+ * On macOS or Linux:
+
+ ```cmd
+ touch app.py
+ ```
+
+1. Open the current folder in VS Code:
+
+ ```sh
+ code .
+ ```
+
+ > 💁 If you see `command not found` on macOS, it means VS Code isn’t in your PATH. Follow the [VS Code documentation](https://code.visualstudio.com/docs/setup/mac?WT.mc_id=academic-17441-jabenn#_launching-from-the-command-line) to add it to your PATH.
+
+1. When VS Code launches, it will activate the Python virtual environment. The selected environment will appear in the bottom status bar:
+
+ 
+
+1. If the VS Code Terminal is already running, it won’t have the virtual environment activated. Kill the terminal using the **Kill the active terminal instance** button:
+
+ 
+
+ The terminal prompt should include `.venv` when the virtual environment is active.
+
+1. Launch a new terminal in VS Code by selecting *Terminal -> New Terminal* or pressing `` CTRL+` ``. The new terminal will activate the virtual environment:
+
+ ```output
+ ➜ nightlight source .venv/bin/activate
+ (.venv) ➜ nightlight
+ ```
+
+1. Open `app.py` in VS Code and add the following code:
+
+ ```python
+ print('Hello World!')
+ ```
+
+ The `print` function outputs the provided text to the console.
+
+1. Run the Python app from the VS Code terminal:
+
+ ```sh
+ python app.py
+ ```
+
+ The output will be:
+
+ ```output
+ (.venv) ➜ nightlight python app.py
+ Hello World!
+ ```
+
+😀 Your 'Hello World' program works!
+
+### Connect the 'hardware'
+
+As a second 'Hello World' step, you’ll run the CounterFit app and connect your code to it. This simulates plugging IoT hardware into a development kit.
+
+#### Task - connect the 'hardware'
+
+1. Launch the CounterFit app from the VS Code terminal:
+
+ ```sh
+ counterfit
+ ```
+
+ The app will open in your browser:
+
+ 
+
+ It will show as *Disconnected*, with the LED in the top-right corner turned off.
+
+1. Add the following code to the top of `app.py`:
+
+ ```python
+ from counterfit_connection import CounterFitConnection
+ CounterFitConnection.init('127.0.0.1', 5000)
+ ```
+
+ This imports the `CounterFitConnection` class and initializes a connection to the CounterFit app running on `127.0.0.1` (localhost) on port 5000.
+
+ > 💁 If port 5000 is in use, change the port in the code and run CounterFit with `CounterFit --port `.
+
+1. Open a new VS Code terminal, as the current one is running the CounterFit app:
+
+ 
+
+1. Run `app.py` in the new terminal. The CounterFit app will show as **Connected**, and the LED will light up.
+
+ 
+
+> 💁 You can find this code in the [code/virtual-device](../../../../../1-getting-started/lessons/1-introduction-to-iot/code/virtual-device) folder.
+
+😀 Your connection to the hardware was successful!
+
+---
+
+**Disclaimer**:
+This document has been translated using the AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). While we aim for accuracy, please note that automated translations may include errors or inaccuracies. The original document in its native language should be regarded as the authoritative source. For critical information, professional human translation is advised. We are not responsible for any misunderstandings or misinterpretations resulting from the use of this translation.
\ No newline at end of file
diff --git a/translations/en/1-getting-started/lessons/1-introduction-to-iot/wio-terminal.md b/translations/en/1-getting-started/lessons/1-introduction-to-iot/wio-terminal.md
new file mode 100644
index 00000000..e016935f
--- /dev/null
+++ b/translations/en/1-getting-started/lessons/1-introduction-to-iot/wio-terminal.md
@@ -0,0 +1,222 @@
+
+# Wio Terminal
+
+The [Wio Terminal from Seeed Studios](https://www.seeedstudio.com/Wio-Terminal-p-4509.html) is an Arduino-compatible microcontroller that comes with built-in WiFi, sensors, and actuators. It also has ports to connect additional sensors and actuators using a hardware ecosystem called [Grove](https://www.seeedstudio.com/category/Grove-c-1003.html).
+
+
+
+## Setup
+
+To start using your Wio Terminal, you need to install some free software on your computer. Additionally, you'll need to update the Wio Terminal firmware before connecting it to WiFi.
+
+### Task - setup
+
+Install the necessary software and update the firmware.
+
+1. Install Visual Studio Code (VS Code), the editor you'll use to write your device code in C/C++. Follow the [VS Code documentation](https://code.visualstudio.com?WT.mc_id=academic-17441-jabenn) for installation instructions.
+
+ > 💁 Another popular IDE for Arduino development is the [Arduino IDE](https://www.arduino.cc/en/software). If you're already familiar with this tool, you can use it instead of VS Code and PlatformIO. However, the lessons will provide instructions based on using VS Code.
+
+1. Install the VS Code PlatformIO extension, which supports programming microcontrollers in C/C++. Refer to the [PlatformIO extension documentation](https://marketplace.visualstudio.com/items?WT.mc_id=academic-17441-jabenn&itemName=platformio.platformio-ide) for installation instructions. This extension automatically installs the Microsoft C/C++ extension required for working with C and C++ code.
+
+1. Connect your Wio Terminal to your computer. Use the USB-C port located at the bottom of the device to connect it to a USB port on your computer. The Wio Terminal comes with a USB-C to USB-A cable, but if your computer only has USB-C ports, you'll need a USB-C cable or a USB-A to USB-C adapter.
+
+1. Follow the instructions in the [Wio Terminal Wiki WiFi Overview documentation](https://wiki.seeedstudio.com/Wio-Terminal-Network-Overview/) to set up your Wio Terminal and update the firmware.
+
+## Hello World
+
+When learning a new programming language or technology, it's common to start with a 'Hello World' application—a simple program that outputs text like `"Hello World"` to confirm that everything is set up correctly.
+
+The Hello World app for the Wio Terminal will ensure that Visual Studio Code is installed properly with PlatformIO and configured for microcontroller development.
+
+### Create a PlatformIO project
+
+The first step is to create a new project in PlatformIO configured for the Wio Terminal.
+
+#### Task - create a PlatformIO project
+
+Create the PlatformIO project.
+
+1. Connect the Wio Terminal to your computer.
+
+1. Launch VS Code.
+
+1. Locate the PlatformIO icon in the side menu bar:
+
+ 
+
+ Click this icon, then select *PIO Home -> Open*.
+
+ 
+
+1. From the welcome screen, click the **+ New Project** button.
+
+ 
+
+1. Configure the project in the *Project Wizard*:
+
+ 1. Name your project `nightlight`.
+
+ 1. In the *Board* dropdown, type `WIO` to filter the boards, and select *Seeeduino Wio Terminal*.
+
+ 1. Leave the *Framework* as *Arduino*.
+
+ 1. Either keep the *Use default location* checkbox checked or uncheck it and choose a location for your project.
+
+ 1. Click the **Finish** button.
+
+ 
+
+ PlatformIO will download the necessary components to compile code for the Wio Terminal and create your project. This process may take a few minutes.
+
+### Investigate the PlatformIO project
+
+The VS Code explorer will display several files and folders created by the PlatformIO wizard.
+
+#### Folders
+
+* `.pio` - Contains temporary data needed by PlatformIO, such as libraries or compiled code. This folder is automatically recreated if deleted and doesn't need to be added to source code control (e.g., GitHub).
+* `.vscode` - Contains configuration files for PlatformIO and VS Code. This folder is also automatically recreated if deleted and doesn't need to be added to source code control.
+* `include` - Used for external header files when adding additional libraries to your code. This folder won't be used in these lessons.
+* `lib` - Used for external libraries that your code calls. This folder won't be used in these lessons.
+* `src` - Contains the main source code for your application. Initially, it includes a single file: `main.cpp`.
+* `test` - Used for unit tests for your code.
+
+#### Files
+
+* `main.cpp` - Located in the `src` folder, this file contains the entry point for your application. Open it, and you'll see the following code:
+
+ ```cpp
+ #include
+
+ void setup() {
+ // put your setup code here, to run once:
+ }
+
+ void loop() {
+ // put your main code here, to run repeatedly:
+ }
+ ```
+
+ When the device starts, the Arduino framework runs the `setup` function once, followed by the `loop` function repeatedly until the device is turned off.
+
+* `.gitignore` - Specifies files and directories to be ignored when adding your code to git source control, such as when uploading to GitHub.
+
+* `platformio.ini` - Contains configuration for your device and app. Open it, and you'll see the following code:
+
+ ```ini
+ [env:seeed_wio_terminal]
+ platform = atmelsam
+ board = seeed_wio_terminal
+ framework = arduino
+ ```
+
+ The `[env:seeed_wio_terminal]` section contains configuration for the Wio Terminal. You can have multiple `env` sections to compile your code for different boards.
+
+ The other values match the settings from the project wizard:
+
+ * `platform = atmelsam` specifies the hardware used by the Wio Terminal (an ATSAMD51-based microcontroller).
+ * `board = seeed_wio_terminal` specifies the type of microcontroller board (the Wio Terminal).
+ * `framework = arduino` indicates that the project uses the Arduino framework.
+
+### Write the Hello World app
+
+Now you're ready to write the Hello World app.
+
+#### Task - write the Hello World app
+
+Write the Hello World app.
+
+1. Open the `main.cpp` file in VS Code.
+
+1. Replace the code with the following:
+
+ ```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);
+ }
+ ```
+
+ The `setup` function initializes a connection to the serial port (in this case, the USB port connecting the Wio Terminal to your computer). The parameter `9600` specifies the [baud rate](https://wikipedia.org/wiki/Symbol_rate), or the speed at which data is sent over the serial port in bits per second. This setting means 9,600 bits of data are sent each second. The function then waits for the serial port to be ready.
+
+ The `loop` function sends the line `Hello World!` to the serial port, followed by a new line character. It then pauses for 5,000 milliseconds (5 seconds). After the `loop` ends, it runs again repeatedly as long as the microcontroller is powered on.
+
+1. Put your Wio Terminal into upload mode. You'll need to do this every time you upload new code to the device:
+
+ 1. Quickly pull down the power switch twice—it will spring back to the on position each time.
+
+ 1. Check the blue status LED to the right of the USB port. It should be pulsing.
+
+ [](https://youtu.be/LeKU_7zLRrQ)
+
+ Click the image above to watch a video demonstration.
+
+1. Build and upload the code to the Wio Terminal:
+
+ 1. Open the VS Code command palette.
+
+ 1. Type `PlatformIO Upload` to search for the upload option, and select *PlatformIO: Upload*.
+
+ 
+
+ PlatformIO will automatically build the code if necessary before uploading.
+
+ 1. The code will be compiled and uploaded to the Wio Terminal.
+
+ > 💁 If you're using macOS, you may see a notification about a *DISK NOT EJECTED PROPERLY*. This happens because the Wio Terminal is mounted as a drive during the flashing process and disconnected when the compiled code is written to the device. You can ignore this notification.
+
+ ⚠️ If you encounter errors about the upload port being unavailable, ensure the Wio Terminal is connected to your computer, switched on using the power switch on the left side of the screen, and set to upload mode. The green light at the bottom should be on, and the blue light should be pulsing. If the error persists, pull the power switch down twice quickly again to force the Wio Terminal into upload mode and retry the upload.
+
+PlatformIO includes a Serial Monitor that lets you view data sent over the USB cable from the Wio Terminal. This allows you to see the output of the `Serial.println("Hello World");` command.
+
+1. Open the VS Code command palette.
+
+1. Type `PlatformIO Serial` to search for the Serial Monitor option, and select *PlatformIO: Serial Monitor*.
+
+ 
+
+ A new terminal will open, displaying the data sent over the serial port:
+
+ ```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` will appear in the serial monitor every 5 seconds.
+
+> 💁 You can find this code in the [code/wio-terminal](../../../../../1-getting-started/lessons/1-introduction-to-iot/code/wio-terminal) folder.
+
+😀 Congratulations! Your 'Hello World' program is working successfully!
+
+---
+
+**Disclaimer**:
+This document has been translated using the AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). While we aim for accuracy, please note that automated translations may include errors or inaccuracies. The original document in its native language should be regarded as the authoritative source. For critical information, professional human translation is advised. We are not responsible for any misunderstandings or misinterpretations resulting from the use of this translation.
\ No newline at end of file
diff --git a/translations/en/1-getting-started/lessons/2-deeper-dive/README.md b/translations/en/1-getting-started/lessons/2-deeper-dive/README.md
new file mode 100644
index 00000000..e2be3639
--- /dev/null
+++ b/translations/en/1-getting-started/lessons/2-deeper-dive/README.md
@@ -0,0 +1,278 @@
+
+# A deeper dive into IoT
+
+
+
+> Sketchnote by [Nitya Narasimhan](https://github.com/nitya). Click the image for a larger version.
+
+This lesson was part of the [Hello IoT series](https://youtube.com/playlist?list=PLmsFUfdnGr3xRts0TIwyaHyQuHaNQcb6-) from the [Microsoft Reactor](https://developer.microsoft.com/reactor/?WT.mc_id=academic-17441-jabenn). It was delivered in two videos: a 1-hour lesson and a 1-hour office hour session that explored the lesson in more detail and answered questions.
+
+[](https://youtu.be/t0SySWw3z9M)
+
+[](https://youtu.be/tTZYf9EST1E)
+
+> 🎥 Click the images above to watch the videos
+
+## Pre-lecture quiz
+
+[Pre-lecture quiz](https://black-meadow-040d15503.1.azurestaticapps.net/quiz/3)
+
+## Introduction
+
+This lesson takes a closer look at some of the concepts introduced in the previous lesson.
+
+In this lesson, we’ll cover:
+
+* [Components of an IoT application](../../../../../1-getting-started/lessons/2-deeper-dive)
+* [Deeper dive into microcontrollers](../../../../../1-getting-started/lessons/2-deeper-dive)
+* [Deeper dive into single-board computers](../../../../../1-getting-started/lessons/2-deeper-dive)
+
+## Components of an IoT application
+
+An IoT application consists of two main components: the *Internet* and the *thing*. Let’s explore these components in more detail.
+
+### The Thing
+
+
+
+The **Thing** in IoT refers to a device that interacts with the physical world. These devices are typically small, affordable computers that operate at low speeds and consume minimal power. For example, they might be simple microcontrollers with kilobytes of RAM (compared to gigabytes in a PC), running at a few hundred megahertz (compared to gigahertz in a PC), and consuming so little power that they can run on batteries for weeks, months, or even years.
+
+These devices interact with the physical world by using sensors to collect data from their surroundings or by controlling outputs or actuators to make physical changes. A classic example is a smart thermostat, which includes a temperature sensor, a way to set a desired temperature (like a dial or touchscreen), and a connection to a heating or cooling system. The thermostat detects when the room is too cold and activates the heating system.
+
+
+
+There’s a wide variety of devices that can serve as IoT devices, ranging from specialized hardware that senses a single thing to general-purpose devices like your smartphone. For instance, a smartphone can use sensors to gather data about its environment and actuators to interact with the world—for example, using GPS to determine your location and a speaker to provide navigation instructions.
+
+✅ Think about other systems around you that use sensors to gather data and make decisions. One example is the thermostat in an oven. Can you identify more?
+
+### The Internet
+
+The **Internet** component of an IoT application includes the applications that IoT devices connect to in order to send and receive data, as well as other applications that process this data and make decisions about what commands to send back to the IoT device’s actuators.
+
+A common setup involves a cloud service that the IoT device connects to. This cloud service handles tasks like security, receiving messages from the IoT device, and sending messages back to it. The cloud service may also connect to other applications that process or store sensor data, or combine it with data from other systems to make decisions.
+
+Not all IoT devices connect directly to the Internet via WiFi or wired connections. Some use mesh networking to communicate with each other over technologies like Bluetooth, connecting through a hub device that has Internet access.
+
+For example, a smart thermostat might connect to a cloud service via home WiFi. The thermostat sends temperature data to the cloud service, which stores it in a database. The homeowner can then check current and past temperatures using a phone app. Another cloud service determines the desired temperature and sends commands back to the thermostat to control the heating system.
+
+
+
+A more advanced version might use AI in the cloud, combining data from other IoT devices like occupancy sensors, as well as external data like weather forecasts and your calendar, to make smarter decisions about temperature settings. For instance, it could turn off the heating if your calendar shows you’re on vacation or adjust the temperature room by room based on usage patterns, learning over time to become more accurate.
+
+
+
+✅ What other types of data could make an Internet-connected thermostat smarter?
+
+### IoT on the Edge
+
+Although the "I" in IoT stands for Internet, IoT devices don’t always need to connect to the Internet. In some cases, they connect to "edge" devices—gateway devices on a local network—allowing data to be processed locally without relying on an Internet connection. This can be faster when dealing with large amounts of data or a slow Internet connection, enables offline operation in places without Internet access (like ships or disaster zones), and helps maintain data privacy. Some devices even run cloud-developed processing code locally to make decisions without needing an Internet connection.
+
+An example is a smart home device like an Apple HomePod, Amazon Alexa, or Google Home. These devices use AI models trained in the cloud but run locally to listen for a wake word. Once activated, they send your speech to the cloud for processing, but only for the duration of the interaction. Everything said before the wake word or after the device stops listening remains private and is not sent to the cloud.
+
+✅ Think of other scenarios where privacy is critical, making edge processing preferable to cloud processing. Hint: Consider IoT devices with cameras or other imaging sensors.
+
+### IoT Security
+
+Security is a critical concern for any Internet-connected device. There’s an old joke that "the S in IoT stands for Security"—a play on the fact that there’s no "S" in IoT, implying it’s not secure.
+
+IoT devices rely on cloud services, and their security is only as strong as the cloud service they connect to. If the cloud service is poorly secured, malicious data or viruses could compromise the IoT device. This can have serious real-world consequences, as IoT devices often control physical systems. For example, the [Stuxnet worm](https://wikipedia.org/wiki/Stuxnet) damaged centrifuges by manipulating their valves. Hackers have also exploited [weak security to access baby monitors](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) and other home surveillance devices.
+
+> 💁 Some IoT and edge devices operate on networks completely isolated from the Internet to ensure privacy and security. This is known as [air-gapping](https://wikipedia.org/wiki/Air_gap_(networking)).
+
+## Deeper dive into microcontrollers
+
+In the previous lesson, we introduced microcontrollers. Let’s now explore them in greater detail.
+
+### CPU
+
+The CPU is the "brain" of the microcontroller. It runs your code and communicates with connected devices. CPUs can have one or more cores, which work together to execute instructions.
+
+CPUs operate based on a clock that ticks millions or billions of times per second. Each tick, or cycle, synchronizes the CPU’s actions. During each cycle, the CPU can execute an instruction, such as retrieving data or performing a calculation. Faster clock cycles allow more instructions to be processed per second, making the CPU faster. CPU speeds are measured in [Hertz (Hz)](https://wikipedia.org/wiki/Hertz), where 1 Hz equals one cycle per second.
+
+> 🎓 CPU speeds are often expressed in MHz or GHz. 1 MHz equals 1 million Hz, and 1 GHz equals 1 billion Hz.
+
+> 💁 CPUs execute programs using the [fetch-decode-execute cycle](https://wikipedia.org/wiki/Instruction_cycle). Each cycle involves fetching an instruction from memory, decoding it, and executing it. Some instructions take multiple cycles to complete.
+
+
+
+Microcontrollers have much lower clock speeds than PCs, laptops, or smartphones. For example, the Wio Terminal’s CPU runs at 120 MHz (120 million cycles per second).
+
+✅ Most PCs or Macs have CPUs with multiple cores running at several GHz, meaning billions of cycles per second. Research your computer’s clock speed and compare it to the Wio Terminal’s speed.
+
+Each clock cycle consumes power and generates heat. Faster cycles require more power and produce more heat. PCs use heat sinks and fans to prevent overheating, but microcontrollers often don’t need these because they run slower and cooler. PCs rely on mains power or large batteries, while microcontrollers can run for extended periods on small batteries. Some microcontrollers even have cores that operate at different speeds, switching to slower, low-power cores when demand is low to save energy.
+
+> 💁 Some modern PCs and Macs use a mix of high-performance and low-power cores to optimize battery life and performance. For example, Apple’s M1 chip has 4 performance cores and 4 efficiency cores.
+
+✅ Do some research: Read about CPUs in the [Wikipedia CPU article](https://wikipedia.org/wiki/Central_processing_unit).
+
+#### Task
+
+Explore the Wio Terminal.
+
+If you’re using a Wio Terminal for these lessons, locate the CPU. Check the *Hardware Overview* section of the [Wio Terminal product page](https://www.seeedstudio.com/Wio-Terminal-p-4509.html) for an internal diagram, and try to spot the CPU through the clear plastic window on the back.
+
+### Memory
+
+Microcontrollers typically have two types of memory: program memory and random-access memory (RAM).
+
+Program memory is non-volatile, meaning its contents persist even when the device is powered off. This memory stores your program code.
+
+RAM, on the other hand, is used by the program while it’s running. It holds variables and data from peripherals. RAM is volatile, so its contents are lost when the device loses power, effectively resetting the program.
+🎓 Program memory retains your code and remains intact even when the power is off.
+> 🎓 RAM is used to run your program and is reset when there is no power
+
+Like the CPU, the memory in a microcontroller is significantly smaller than that of a PC or Mac. A typical PC might have 8 Gigabytes (GB) of RAM, or 8,000,000,000 bytes, with each byte capable of storing a single letter or a number between 0-255. In contrast, a microcontroller typically has only Kilobytes (KB) of RAM, where a kilobyte equals 1,000 bytes. For example, the Wio Terminal mentioned earlier has 192KB of RAM, or 192,000 bytes—over 40,000 times less than the average PC!
+
+The diagram below illustrates the size difference between 192KB and 8GB—the tiny dot in the center represents 192KB.
+
+
+
+Program storage is also much smaller than on a PC. While a typical PC might have a 500GB hard drive for program storage, a microcontroller might only have kilobytes or a few megabytes (MB) of storage (1MB equals 1,000KB, or 1,000,000 bytes). The Wio Terminal, for instance, has 4MB of program storage.
+
+✅ Do a little research: How much RAM and storage does the computer you’re using to read this have? How does it compare to a microcontroller?
+
+### Input/Output
+
+Microcontrollers require input and output (I/O) connections to read data from sensors and send control signals to actuators. They typically include several general-purpose input/output (GPIO) pins. These pins can be configured in software as either input (to receive signals) or output (to send signals).
+
+🧠⬅️ Input pins are used to read values from sensors.
+
+🧠➡️ Output pins send instructions to actuators.
+
+✅ You’ll learn more about this in a later lesson.
+
+#### Task
+
+Investigate the Wio Terminal.
+
+If you’re using a Wio Terminal for these lessons, locate the GPIO pins. Check the *Pinout diagram* section on the [Wio Terminal product page](https://www.seeedstudio.com/Wio-Terminal-p-4509.html) to identify the pins. The Wio Terminal comes with a sticker for the back that labels the pin numbers—apply this now if you haven’t already.
+
+### Physical size
+
+Microcontrollers are generally small, with some being incredibly tiny. For example, the [Freescale Kinetis KL03 MCU](https://www.edn.com/tiny-arm-cortex-m0-based-mcu-shrinks-package/) is small enough to fit in the dimple of a golf ball. By comparison, the CPU in a PC can measure 40mm x 40mm, not including the heat sinks and fans required to prevent overheating. These components make the CPU significantly larger than a complete microcontroller. The Wio Terminal developer kit, which includes a microcontroller, case, screen, and various connections and components, is only slightly larger than a bare Intel i9 CPU—and much smaller than the CPU with its heat sink and fan!
+
+| Device | Size |
+| ------------------------------- | --------------------- |
+| Freescale Kinetis KL03 | 1.6mm x 2mm x 1mm |
+| Wio Terminal | 72mm x 57mm x 12mm |
+| Intel i9 CPU, Heat sink and fan | 136mm x 145mm x 103mm |
+
+### Frameworks and operating systems
+
+Because of their limited speed and memory, microcontrollers don’t run operating systems (OS) in the traditional sense. Desktop operating systems like Windows, Linux, or macOS require significant memory and processing power to handle tasks that are unnecessary for microcontrollers. Microcontrollers are typically programmed to perform specific tasks, unlike general-purpose computers that support user interfaces, multimedia, document editing, gaming, and web browsing.
+
+Programming a microcontroller without an OS requires tools to build code that the microcontroller can execute, using APIs to interact with peripherals. Since each microcontroller is unique, manufacturers often provide standard frameworks to simplify development. These frameworks allow you to write code that can run on any microcontroller supporting the framework.
+
+Some microcontrollers can run an OS, often referred to as a real-time operating system (RTOS). RTOSes are lightweight and designed to handle real-time data exchange with peripherals. They offer features like:
+
+* Multi-threading, enabling multiple blocks of code to run simultaneously on multiple cores or sequentially on a single core.
+* Networking for secure Internet communication.
+* Graphical user interface (GUI) components for devices with screens.
+
+✅ Learn about different RTOSes: [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) is one of the most popular microcontroller frameworks, especially among students, hobbyists, and makers. It’s an open-source electronics platform that combines software and hardware. Arduino-compatible boards can be purchased from Arduino or other manufacturers, and they are programmed using the Arduino framework.
+
+Arduino programs are written in C or C++. These languages allow for compact, fast code—essential for constrained devices like microcontrollers. An Arduino program, called a sketch, consists of two main functions: `setup` and `loop`. When the board powers on, the `setup` function runs once, followed by the `loop` function, which runs repeatedly until the device is powered off.
+
+The `setup` function is used for initialization tasks, such as connecting to WiFi or setting up input/output pins. The `loop` function contains the main processing logic, such as reading sensor data and sending it to the cloud. You can include delays in the loop to control how often it runs—for example, adding a 10-second delay to send sensor data every 10 seconds. This allows the microcontroller to sleep between loops, conserving power.
+
+
+
+✅ This program structure is called an *event loop* or *message loop*. It’s widely used in desktop applications running on OSes like Windows, macOS, or Linux. The `loop` listens for events, such as button presses or keyboard input, and responds accordingly. Learn more in this [article on the event loop](https://wikipedia.org/wiki/Event_loop).
+
+Arduino provides standard libraries for interacting with microcontrollers and GPIO pins. These libraries abstract the hardware differences, so code written for one Arduino board can often be recompiled for another, as long as the pins and features are compatible. For example:
+
+* The [`delay` function](https://www.arduino.cc/reference/en/language/functions/time/delay/) pauses the program for a specified time.
+* The [`digitalRead` function](https://www.arduino.cc/reference/en/language/functions/digital-io/digitalread/) reads a `HIGH` or `LOW` value from a pin.
+
+A large ecosystem of third-party Arduino libraries adds functionality, such as support for sensors, actuators, and cloud IoT services.
+
+##### Task
+
+Investigate the Wio Terminal.
+
+If you’re using a Wio Terminal for these lessons, revisit the code you wrote in the previous lesson. Locate the `setup` and `loop` functions. Monitor the serial output to observe the `loop` function being called repeatedly. Add code to the `setup` function to write to the serial port, and confirm that this code runs only once per reboot. Reboot the device using the power switch to verify this behavior.
+
+## Deeper dive into single-board computers
+
+In the previous lesson, we introduced single-board computers. Let’s explore them further.
+
+### Raspberry Pi
+
+
+
+The [Raspberry Pi Foundation](https://www.raspberrypi.org) is a UK-based charity founded in 2009 to promote computer science education, particularly in schools. As part of this mission, they developed the Raspberry Pi, a single-board computer. Raspberry Pis come in three variants: a full-size version, the smaller Pi Zero, and a compute module for embedding in IoT devices.
+
+
+
+The latest full-size model, the Raspberry Pi 4B, features a quad-core 1.5GHz CPU, 2, 4, or 8GB of RAM, gigabit Ethernet, WiFi, dual 4K HDMI ports, an audio/composite video output, USB ports (2 USB 2.0, 2 USB 3.0), 40 GPIO pins, a camera connector, and an SD card slot. It measures 88mm x 58mm x 19.5mm and is powered by a 3A USB-C supply. Prices start at $35, making it far cheaper than a PC or Mac.
+
+> 💁 There’s also the Pi400, an all-in-one computer with a Pi4 built into a keyboard.
+
+
+
+The Pi Zero is smaller and less powerful, with a single-core 1GHz CPU, 512MB of RAM, WiFi (in the Zero W model), a single HDMI port, a micro-USB port, 40 GPIO pins, a camera connector, and an SD card slot. It measures 65mm x 30mm x 5mm and consumes very little power. The Zero costs $5, while the Zero W with WiFi costs $10.
+
+> 🎓 Both models use ARM processors, similar to those in microcontrollers, mobile phones, Microsoft Surface X, and Apple Silicon Macs, rather than the Intel/AMD x86 or x64 processors found in most PCs and Macs.
+
+All Raspberry Pi models run Raspberry Pi OS, a version of Debian Linux. It’s available in a lite version (no desktop) for headless projects or a full version with a desktop environment, web browser, office tools, coding software, and games. Since Raspberry Pi OS is based on Debian Linux, you can install any Debian-compatible application built for ARM processors.
+
+#### Task
+
+Investigate the Raspberry Pi.
+
+If you’re using a Raspberry Pi for these lessons, familiarize yourself with its hardware components.
+
+* Learn about the processors on the [Raspberry Pi hardware documentation page](https://www.raspberrypi.org/documentation/hardware/raspberrypi/).
+* Locate the GPIO pins and read about them in the [Raspberry Pi GPIO documentation](https://www.raspberrypi.org/documentation/hardware/raspberrypi/gpio/README.md). Use the [GPIO Pin Usage guide](https://www.raspberrypi.org/documentation/usage/gpio/README.md) to identify the pins on your Pi.
+
+### Programming single-board computers
+
+Single-board computers are full-fledged computers running a complete OS. This means you can use a wide variety of programming languages, frameworks, and tools, unlike microcontrollers, which depend on specific frameworks like Arduino. Most programming languages have libraries for accessing GPIO pins to interact with sensors and actuators.
+
+✅ What programming languages do you know? Are they supported on Linux?
+
+Python is the most popular language for IoT development on Raspberry Pi. The Pi has a vast ecosystem of hardware, most of which comes with Python libraries for easy integration. Many of these hardware components are designed as "hats" that connect to the Pi’s 40 GPIO pins. These hats add functionality, such as screens, sensors, remote-controlled cars, or adapters for standardized sensor cables.
+### Use of single-board computers in professional IoT deployments
+
+Single-board computers are used in professional IoT deployments, not just as development kits. They offer a powerful way to control hardware and handle complex tasks, such as running machine learning models. For instance, the [Raspberry Pi 4 compute module](https://www.raspberrypi.org/blog/raspberry-pi-compute-module-4/) delivers all the capabilities of a Raspberry Pi 4 but in a smaller and more affordable form factor, without most of the ports, and is designed to be integrated into custom hardware.
+
+---
+
+## 🚀 Challenge
+
+The challenge in the previous lesson was to list as many IoT devices as you can find in your home, school, or workplace. For each device on your list, do you think it is built around microcontrollers, single-board computers, or perhaps a combination of both?
+
+## Post-lecture quiz
+
+[Post-lecture quiz](https://black-meadow-040d15503.1.azurestaticapps.net/quiz/4)
+
+## Review & Self Study
+
+* Read the [Arduino getting started guide](https://www.arduino.cc/en/Guide/Introduction) to learn more about the Arduino platform.
+* Check out the [introduction to the Raspberry Pi 4](https://www.raspberrypi.org/products/raspberry-pi-4-model-b/) to explore Raspberry Pis in greater detail.
+* Dive deeper into some of the concepts and acronyms by reading the [What the FAQ are CPUs, MPUs, MCUs, and GPUs article in the Electrical Engineering Journal](https://www.eejournal.com/article/what-the-faq-are-cpus-mpus-mcus-and-gpus/).
+
+✅ Use these resources, along with the cost information provided in the [hardware guide](../../../hardware.md), to decide which hardware platform you want to use—or whether you prefer to work with a virtual device.
+
+## Assignment
+
+[Compare and contrast microcontrollers and single-board computers](assignment.md)
+
+---
+
+**Disclaimer**:
+This document has been translated using the AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). While we aim for accuracy, please note that automated translations may include errors or inaccuracies. The original document in its native language should be regarded as the authoritative source. For critical information, professional human translation is advised. We are not responsible for any misunderstandings or misinterpretations resulting from the use of this translation.
\ No newline at end of file
diff --git a/translations/en/1-getting-started/lessons/2-deeper-dive/assignment.md b/translations/en/1-getting-started/lessons/2-deeper-dive/assignment.md
new file mode 100644
index 00000000..7ad4b948
--- /dev/null
+++ b/translations/en/1-getting-started/lessons/2-deeper-dive/assignment.md
@@ -0,0 +1,26 @@
+
+# Compare and contrast microcontrollers and single-board computers
+
+## Instructions
+
+This lesson covered microcontrollers and single-board computers. Create a table comparing and contrasting them, and note at least 2 reasons why you would use a microcontroller over a single-board computer, and at least 2 reasons why you would use a single-board computer over a microcontroller.
+
+## Rubric
+
+| Criteria | Exemplary | Adequate | Needs Improvement |
+| -------- | --------- | -------- | ----------------- |
+| Create a table comparing microcontrollers to single-board computers | Created a list with multiple items correctly comparing and contrasting | Created a list with only a couple of items | Was only able to come up with one item, or no items to compare and contrast |
+| Reasons for using one over the other | Was able to provide 2 or more reasons for microcontrollers, and 2 or more for single-board computers | Was only able to provide 1-2 reasons for a microcontroller, and 1-2 reasons for a single-board computer | Was unable to provide 1 or more reasons for a microcontroller or for a single-board computer |
+
+---
+
+**Disclaimer**:
+This document has been translated using the AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). While we aim for accuracy, please note that automated translations may include errors or inaccuracies. The original document in its native language should be regarded as the authoritative source. For critical information, professional human translation is advised. We are not responsible for any misunderstandings or misinterpretations resulting from the use of this translation.
\ No newline at end of file
diff --git a/translations/en/1-getting-started/lessons/3-sensors-and-actuators/README.md b/translations/en/1-getting-started/lessons/3-sensors-and-actuators/README.md
new file mode 100644
index 00000000..711eec17
--- /dev/null
+++ b/translations/en/1-getting-started/lessons/3-sensors-and-actuators/README.md
@@ -0,0 +1,230 @@
+
+# Interact with the physical world using sensors and actuators
+
+
+
+> Sketchnote by [Nitya Narasimhan](https://github.com/nitya). Click the image for a larger version.
+
+This lesson was part of the [Hello IoT series](https://youtube.com/playlist?list=PLmsFUfdnGr3xRts0TIwyaHyQuHaNQcb6-) from the [Microsoft Reactor](https://developer.microsoft.com/reactor/?WT.mc_id=academic-17441-jabenn). It was delivered in two videos: a 1-hour lesson and a 1-hour office hour session that explored the lesson in more detail and answered questions.
+
+[](https://youtu.be/Lqalu1v6aF4)
+
+[](https://youtu.be/qR3ekcMlLWA)
+
+> 🎥 Click the images above to watch the videos
+
+## Pre-lecture quiz
+
+[Pre-lecture quiz](https://black-meadow-040d15503.1.azurestaticapps.net/quiz/5)
+
+## Introduction
+
+This lesson introduces two key components of IoT devices: sensors and actuators. You'll get hands-on experience with both by adding a light sensor to your IoT project and then incorporating an LED that reacts to light levels, effectively creating a nightlight.
+
+In this lesson, we'll cover:
+
+* [What are sensors?](../../../../../1-getting-started/lessons/3-sensors-and-actuators)
+* [Use a sensor](../../../../../1-getting-started/lessons/3-sensors-and-actuators)
+* [Sensor types](../../../../../1-getting-started/lessons/3-sensors-and-actuators)
+* [What are actuators?](../../../../../1-getting-started/lessons/3-sensors-and-actuators)
+* [Use an actuator](../../../../../1-getting-started/lessons/3-sensors-and-actuators)
+* [Actuator types](../../../../../1-getting-started/lessons/3-sensors-and-actuators)
+
+## What are sensors?
+
+Sensors are hardware devices that detect and measure properties of the physical world, sending this information to an IoT device. They can measure a wide range of things, from environmental factors like air temperature to physical interactions like movement.
+
+Common types of sensors include:
+
+* Temperature sensors - measure air temperature or the temperature of objects they are in contact with. These are often combined with air pressure and humidity sensors for hobbyist and developer use.
+* Buttons - detect when they are pressed.
+* Light sensors - measure light levels, including specific colors, UV light, IR light, or general visible light.
+* Cameras - capture visual data by taking photos or streaming video.
+* Accelerometers - measure movement in multiple directions.
+* Microphones - detect sound, either general sound levels or directional sound.
+
+✅ Research the sensors in your phone. What can it measure?
+
+All sensors share a common trait: they convert what they detect into an electrical signal that can be interpreted by an IoT device. The way this signal is interpreted depends on the sensor and the communication protocol used.
+
+## Use a sensor
+
+Follow the appropriate guide below to add a sensor to your IoT device:
+
+* [Arduino - Wio Terminal](wio-terminal-sensor.md)
+* [Single-board computer - Raspberry Pi](pi-sensor.md)
+* [Single-board computer - Virtual device](virtual-device-sensor.md)
+
+## Sensor types
+
+Sensors can be classified as either analog or digital.
+
+### Analog sensors
+
+Analog sensors are among the simplest types. They receive a voltage from the IoT device, adjust this voltage based on their components, and return a modified voltage that represents the sensor's reading.
+
+> 🎓 Voltage measures the force that moves electricity from one point to another, such as from the positive terminal of a battery to the negative terminal. For example, a standard AA battery is 1.5V (volts) and can push electricity with a force of 1.5V. Different devices require different voltages to operate. For instance, an LED can light up with 2-3V, while a 100W filament bulb needs 240V. Learn more about voltage on the [Voltage page on Wikipedia](https://wikipedia.org/wiki/Voltage).
+
+A potentiometer is an example of an analog sensor. It’s a dial that can be rotated between two positions, and the sensor measures the rotation.
+
+
+
+The IoT device sends an electrical signal to the potentiometer, such as 5 volts (5V). As the potentiometer is adjusted, it changes the voltage that comes out. For example, if the potentiometer is set to the "off" position, 0V will come out. If it’s set to the "on" position, 5V will come out.
+
+> 🎓 This is a simplified explanation. Learn more about potentiometers on the [potentiometer Wikipedia page](https://wikipedia.org/wiki/Potentiometer).
+
+The voltage returned by the sensor is read by the IoT device, which can then respond accordingly. For example, an analog temperature sensor based on a [thermistor](https://wikipedia.org/wiki/Thermistor) changes its resistance based on temperature. The output voltage can be converted into a temperature value in Kelvin, Celsius, or Fahrenheit using code.
+
+✅ What happens if the sensor returns a higher voltage than was sent (e.g., from an external power source)? ⛔️ DO NOT test this.
+
+#### Analog to digital conversion
+
+IoT devices are digital—they only work with 0s and 1s. Analog sensor values must be converted to digital signals before they can be processed. Many IoT devices have analog-to-digital converters (ADCs) for this purpose. Sensors can also use ADCs via connector boards. For example, in the Seeed Grove ecosystem, analog sensors connect to specific ports on a "hat" attached to a Raspberry Pi. This hat has an ADC that converts the voltage into a digital signal.
+
+Imagine an analog light sensor connected to an IoT device running at 3.3V, returning a value of 1V. This 1V needs to be converted into a digital value. For example, the Seeed Grove light sensor outputs values from 0 to 1,023. At 3.3V, a 1V output would correspond to a value of 300. The IoT device would then convert this value into binary, such as `0000000100101100`.
+
+✅ If you’re unfamiliar with binary, research how numbers are represented using 0s and 1s. The [BBC Bitesize introduction to binary lesson](https://www.bbc.co.uk/bitesize/guides/zwsbwmn/revision/1) is a great starting point.
+
+From a coding perspective, libraries provided with sensors handle this conversion. For example, the Grove light sensor’s Python library lets you call the `light` property, or the Arduino library lets you use `analogRead` to get a value like 300.
+
+### Digital sensors
+
+Digital sensors also detect changes in electrical voltage but output a digital signal. They either measure two states or use a built-in ADC. Digital sensors are increasingly common because they eliminate the need for external ADCs.
+
+The simplest digital sensor is a button or switch, which has two states: on or off.
+
+
+
+IoT devices can directly measure this signal as 0 or 1. If the voltage sent matches the voltage returned, the value is 1; otherwise, it’s 0.
+
+> 💁 Voltages are rarely exact due to resistance in components, so there’s usually a tolerance. For example, Raspberry Pi GPIO pins work on 3.3V and interpret signals above 1.8V as 1 and below 1.8V as 0.
+
+* 3.3V goes into the button. The button is off, so 0V comes out, giving a value of 0.
+* 3.3V goes into the button. The button is on, so 3.3V comes out, giving a value of 1.
+
+More advanced digital sensors measure analog values and convert them to digital signals using built-in ADCs. For example, a digital temperature sensor uses a thermocouple to measure voltage changes caused by temperature. Instead of returning an analog value, it converts the reading to digital data and sends it to the IoT device.
+
+
+
+Digital sensors can send more detailed or even encrypted data. For example, a camera captures images and sends them as digital data, often in a compressed format like JPEG. It can also stream video by sending frames or compressed video streams.
+
+## What are actuators?
+
+Actuators are the opposite of sensors—they convert electrical signals from an IoT device into physical actions, such as emitting light or sound or moving a motor.
+
+Common types of actuators include:
+
+* LED - emits light when turned on.
+* Speaker - produces sound, ranging from simple buzzers to audio speakers that play music.
+* Stepper motor - rotates a specific amount, such as turning a dial 90°.
+* Relay - acts as a switch controlled by an electrical signal, allowing a small voltage to control larger voltages.
+* Screens - display information, ranging from simple LED displays to high-resolution monitors.
+
+✅ Research the actuators in your phone. What can it do?
+
+## Use an actuator
+
+Follow the appropriate guide below to add an actuator to your IoT device. You'll use a sensor to control an actuator, creating an IoT nightlight that turns on an LED when light levels are too low.
+
+
+
+* [Arduino - Wio Terminal](wio-terminal-actuator.md)
+* [Single-board computer - Raspberry Pi](pi-actuator.md)
+* [Single-board computer - Virtual device](virtual-device-actuator.md)
+
+## Actuator types
+
+Like sensors, actuators can be analog or digital.
+
+### Analog actuators
+
+Analog actuators take an analog signal and convert it into a physical action, with the action varying based on the voltage supplied.
+
+One example is a dimmable light, where the brightness depends on the voltage provided.
+
+
+Just like with sensors, IoT devices operate using digital signals, not analog. To send an analog signal, the IoT device requires a digital-to-analog converter (DAC), which can either be built into the IoT device itself or included on a connector board. This converter transforms the 0s and 1s from the IoT device into an analog voltage that the actuator can use.
+
+✅ What do you think would happen if the IoT device sends a voltage higher than what the actuator can handle?
+⛔️ DO NOT test this out.
+
+#### Pulse-Width Modulation
+
+Another way to convert digital signals from an IoT device into an analog signal is through pulse-width modulation (PWM). This method involves sending a series of rapid digital pulses that mimic an analog signal.
+
+For instance, PWM can be used to control the speed of a motor.
+
+Imagine controlling a motor powered by a 5V supply. You send a short pulse to the motor, switching the voltage to high (5V) for 0.02 seconds. During this time, the motor rotates one-tenth of a turn, or 36°. The signal then pauses for 0.02 seconds, sending a low signal (0V). Each on-off cycle lasts 0.04 seconds, and the cycle repeats.
+
+
+
+This means that in one second, you send 25 pulses of 5V, each lasting 0.02 seconds, causing the motor to rotate. Each pulse is followed by a 0.02-second pause at 0V, during which the motor does not rotate. Since each pulse rotates the motor by one-tenth of a turn, the motor completes 2.5 rotations per second. Using a digital signal, you've made the motor rotate at 2.5 rotations per second, or 150 [revolutions per minute](https://wikipedia.org/wiki/Revolutions_per_minute) (a common measure of rotational speed).
+
+```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
+```
+
+> 🎓 When a PWM signal is on for half the time and off for the other half, it is called a [50% duty cycle](https://wikipedia.org/wiki/Duty_cycle). Duty cycles are expressed as the percentage of time the signal is in the "on" state compared to the "off" state.
+
+
+
+You can adjust the motor speed by changing the duration of the pulses. For example, using the same motor, you can keep the cycle time at 0.04 seconds but reduce the "on" pulse to 0.01 seconds and increase the "off" pulse to 0.03 seconds. This results in the same number of pulses per second (25), but each "on" pulse is half as long. A shorter pulse rotates the motor by one-twentieth of a turn, and at 25 pulses per second, the motor completes 1.25 rotations per second, or 75 RPM. By modifying the pulse duration of a digital signal, you've halved the speed of an analog motor.
+
+```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
+```
+
+✅ How would you ensure the motor rotates smoothly, especially at low speeds? Would you use a small number of long pulses with long pauses, or many very short pulses with very short pauses?
+
+> 💁 Some sensors also use PWM to convert analog signals into digital signals.
+
+> 🎓 You can learn more about pulse-width modulation on the [pulse-width modulation page on Wikipedia](https://wikipedia.org/wiki/Pulse-width_modulation).
+
+### Digital actuators
+
+Digital actuators, like digital sensors, either have two states controlled by a high or low voltage or include a built-in DAC to convert a digital signal into an analog one.
+
+A simple example of a digital actuator is an LED. When the device sends a digital signal of 1, a high voltage is applied, lighting up the LED. When the device sends a digital signal of 0, the voltage drops to 0V, and the LED turns off.
+
+
+
+✅ Can you think of other simple two-state actuators? One example is a solenoid, which is an electromagnet that can be activated to perform tasks like moving a door bolt to lock or unlock a door.
+
+More advanced digital actuators, such as screens, require digital data to be sent in specific formats. These actuators often come with libraries that simplify the process of sending the correct data to control them.
+
+---
+
+## 🚀 Challenge
+
+In the last two lessons, the challenge was to list as many IoT devices as you could find in your home, school, or workplace and determine whether they are built around microcontrollers, single-board computers, or a combination of both.
+
+For each device you listed, identify the sensors and actuators it is connected to. What is the purpose of each sensor and actuator in these devices?
+
+## Post-lecture quiz
+
+[Post-lecture quiz](https://black-meadow-040d15503.1.azurestaticapps.net/quiz/6)
+
+## Review & Self Study
+
+* Learn about electricity and circuits on [ThingLearn](http://thinglearn.jenlooper.com/curriculum/).
+* Explore the different types of temperature sensors in the [Seeed Studios Temperature Sensors guide](https://www.seeedstudio.com/blog/2019/10/14/temperature-sensors-for-arduino-projects/).
+* Read about LEDs on the [Wikipedia LED page](https://wikipedia.org/wiki/Light-emitting_diode).
+
+## Assignment
+
+[Research sensors and actuators](assignment.md)
+
+---
+
+**Disclaimer**:
+This document has been translated using the AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). While we aim for accuracy, please note that automated translations may include errors or inaccuracies. The original document in its native language should be regarded as the authoritative source. For critical information, professional human translation is advised. We are not responsible for any misunderstandings or misinterpretations resulting from the use of this translation.
\ No newline at end of file
diff --git a/translations/en/1-getting-started/lessons/3-sensors-and-actuators/assignment.md b/translations/en/1-getting-started/lessons/3-sensors-and-actuators/assignment.md
new file mode 100644
index 00000000..5a263e7d
--- /dev/null
+++ b/translations/en/1-getting-started/lessons/3-sensors-and-actuators/assignment.md
@@ -0,0 +1,31 @@
+
+# Research sensors and actuators
+
+## Instructions
+
+This lesson covered sensors and actuators. Research and describe one sensor and one actuator that can be used with an IoT dev kit, including:
+
+* What it does
+* The electronics/hardware used inside
+* Whether it is analog or digital
+* The units and range of inputs or measurements
+
+## Rubric
+
+| Criteria | Exemplary | Adequate | Needs Improvement |
+| -------- | --------- | -------- | ----------------- |
+| Describe a sensor | Described a sensor with detailed information for all 4 sections listed above. | Described a sensor, but only provided details for 2-3 of the sections above. | Described a sensor, but only provided details for 1 of the sections above. |
+| Describe an actuator | Described an actuator with detailed information for all 4 sections listed above. | Described an actuator, but only provided details for 2-3 of the sections above. | Described an actuator, but only provided details for 1 of the sections above. |
+
+---
+
+**Disclaimer**:
+This document has been translated using the AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). While we aim for accuracy, please note that automated translations may include errors or inaccuracies. The original document in its native language should be regarded as the authoritative source. For critical information, professional human translation is advised. We are not responsible for any misunderstandings or misinterpretations resulting from the use of this translation.
\ No newline at end of file
diff --git a/translations/en/1-getting-started/lessons/3-sensors-and-actuators/pi-actuator.md b/translations/en/1-getting-started/lessons/3-sensors-and-actuators/pi-actuator.md
new file mode 100644
index 00000000..ca5082bb
--- /dev/null
+++ b/translations/en/1-getting-started/lessons/3-sensors-and-actuators/pi-actuator.md
@@ -0,0 +1,130 @@
+
+# Build a nightlight - Raspberry Pi
+
+In this part of the lesson, you will add an LED to your Raspberry Pi and use it to create a nightlight.
+
+## Hardware
+
+The nightlight now needs an actuator.
+
+The actuator is an **LED**, a [light-emitting diode](https://wikipedia.org/wiki/Light-emitting_diode) that emits light when current flows through it. This is a digital actuator with two states: on and off. Sending a value of 1 turns the LED on, and 0 turns it off. The LED is an external Grove actuator and needs to be connected to the Grove Base hat on the Raspberry Pi.
+
+The nightlight logic in pseudo-code is:
+
+```output
+Check the light level.
+If the light is less than 300
+ Turn the LED on
+Otherwise
+ Turn the LED off
+```
+
+### Connect the LED
+
+The Grove LED comes as a module with a selection of LEDs, allowing you to choose the color.
+
+#### Task - connect the LED
+
+Connect the LED.
+
+
+
+1. Pick your favorite LED and insert the legs into the two holes on the LED module.
+
+ LEDs are light-emitting diodes, and diodes are electronic devices that can only carry current in one direction. This means the LED needs to be connected the correct way, or it won't work.
+
+ One of the legs of the LED is the positive pin, and the other is the negative pin. The LED is not perfectly round and is slightly flatter on one side. The slightly flatter side is the negative pin. When you connect the LED to the module, make sure the pin by the rounded side is connected to the socket marked **+** on the outside of the module, and the flatter side is connected to the socket closer to the middle of the module.
+
+1. The LED module has a spin button that allows you to control the brightness. Turn this all the way up to start with by rotating it counterclockwise as far as it will go using a small Phillips head screwdriver.
+
+1. Insert one end of a Grove cable into the socket on the LED module. It will only fit one way.
+
+1. With the Raspberry Pi powered off, connect the other end of the Grove cable to the digital socket marked **D5** on the Grove Base hat attached to the Pi. This socket is the second from the left, on the row of sockets next to the GPIO pins.
+
+
+
+## Program the nightlight
+
+The nightlight can now be programmed using the Grove light sensor and the Grove LED.
+
+### Task - program the nightlight
+
+Program the nightlight.
+
+1. Power up the Pi and wait for it to boot.
+
+1. Open the nightlight project in VS Code that you created in the previous part of this assignment, either running directly on the Pi or connected using the Remote SSH extension.
+
+1. Add the following code to the `app.py` file to import a required library. This should be added to the top, below the other `import` lines.
+
+ ```python
+ from grove.grove_led import GroveLed
+ ```
+
+ The `from grove.grove_led import GroveLed` statement imports the `GroveLed` from the Grove Python libraries. This library contains code to interact with a Grove LED.
+
+1. Add the following code after the `light_sensor` declaration to create an instance of the class that manages the LED:
+
+ ```python
+ led = GroveLed(5)
+ ```
+
+ The line `led = GroveLed(5)` creates an instance of the `GroveLed` class connecting to pin **D5** - the digital Grove pin that the LED is connected to.
+
+ > 💁 All the sockets have unique pin numbers. Pins 0, 2, 4, and 6 are analog pins, while pins 5, 16, 18, 22, 24, and 26 are digital pins.
+
+1. Add a check inside the `while` loop, and before the `time.sleep` to check the light levels and turn the LED on or off:
+
+ ```python
+ if light < 300:
+ led.on()
+ else:
+ led.off()
+ ```
+
+ This code checks the `light` value. If this is less than 300, it calls the `on` method of the `GroveLed` class, which sends a digital value of 1 to the LED, turning it on. If the light value is greater than or equal to 300, it calls the `off` method, sending a digital value of 0 to the LED, turning it off.
+
+ > 💁 This code should be indented to the same level as the `print('Light level:', light)` line to be inside the while loop!
+
+ > 💁 When sending digital values to actuators, a 0 value is 0V, and a 1 value is the maximum voltage for the device. For the Raspberry Pi with Grove sensors and actuators, the 1 voltage is 3.3V.
+
+1. From the VS Code Terminal, run the following to execute your Python app:
+
+ ```sh
+ python3 app.py
+ ```
+
+ Light values will be output to the 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. Cover and uncover the light sensor. Notice how the LED lights up if the light level is 300 or less, and turns off when the light level is greater than 300.
+
+ > 💁 If the LED doesn't turn on, make sure it is connected the correct way, and the spin button is set to full brightness.
+
+
+
+> 💁 You can find this code in the [code-actuator/pi](../../../../../1-getting-started/lessons/3-sensors-and-actuators/code-actuator/pi) folder.
+
+😀 Your nightlight program was a success!
+
+---
+
+**Disclaimer**:
+This document has been translated using the AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). While we aim for accuracy, please note that automated translations may include errors or inaccuracies. The original document in its native language should be regarded as the authoritative source. For critical information, professional human translation is advised. We are not responsible for any misunderstandings or misinterpretations resulting from the use of this translation.
\ No newline at end of file
diff --git a/translations/en/1-getting-started/lessons/3-sensors-and-actuators/pi-sensor.md b/translations/en/1-getting-started/lessons/3-sensors-and-actuators/pi-sensor.md
new file mode 100644
index 00000000..8436deb0
--- /dev/null
+++ b/translations/en/1-getting-started/lessons/3-sensors-and-actuators/pi-sensor.md
@@ -0,0 +1,110 @@
+
+# Build a nightlight - Raspberry Pi
+
+In this part of the lesson, you will add a light sensor to your Raspberry Pi.
+
+## Hardware
+
+The sensor for this lesson is a **light sensor** that uses a [photodiode](https://wikipedia.org/wiki/Photodiode) to convert light into an electrical signal. This is an analog sensor that provides an integer value between 0 and 1,000, representing a relative amount of light. This value does not correspond to any standard unit of measurement like [lux](https://wikipedia.org/wiki/Lux).
+
+The light sensor is an external Grove sensor and needs to be connected to the Grove Base hat on the Raspberry Pi.
+
+### Connect the light sensor
+
+The Grove light sensor, which is used to detect light levels, needs to be connected to the Raspberry Pi.
+
+#### Task - connect the light sensor
+
+Connect the light sensor.
+
+
+
+1. Insert one end of a Grove cable into the socket on the light sensor module. It will only fit in one direction.
+
+1. With the Raspberry Pi powered off, connect the other end of the Grove cable to the analog socket labeled **A0** on the Grove Base hat attached to the Pi. This socket is the second from the right in the row of sockets next to the GPIO pins.
+
+
+
+## Program the light sensor
+
+The device can now be programmed using the Grove light sensor.
+
+### Task - program the light sensor
+
+Program the device.
+
+1. Power up the Pi and wait for it to boot.
+
+1. Open the nightlight project in VS Code that you created in the previous part of this assignment, either running directly on the Pi or connected using the Remote SSH extension.
+
+1. Open the `app.py` file and delete all existing code.
+
+1. Add the following code to the `app.py` file to import the necessary libraries:
+
+ ```python
+ import time
+ from grove.grove_light_sensor_v1_2 import GroveLightSensor
+ ```
+
+ The `import time` statement imports the `time` module, which will be used later in this assignment.
+
+ The `from grove.grove_light_sensor_v1_2 import GroveLightSensor` statement imports the `GroveLightSensor` from the Grove Python libraries. This library contains code to interact with a Grove light sensor and was installed globally during the Pi setup.
+
+1. Add the following code after the previous code to create an instance of the class that manages the light sensor:
+
+ ```python
+ light_sensor = GroveLightSensor(0)
+ ```
+
+ The line `light_sensor = GroveLightSensor(0)` creates an instance of the `GroveLightSensor` class, connecting to pin **A0**—the analog Grove pin where the light sensor is connected.
+
+1. Add an infinite loop after the previous code to continuously read the light sensor value and print it to the console:
+
+ ```python
+ while True:
+ light = light_sensor.light
+ print('Light level:', light)
+ ```
+
+ This will read the current light level on a scale of 0-1,023 using the `light` property of the `GroveLightSensor` class. This property reads the analog value from the pin. The value is then printed to the console.
+
+1. Add a short delay of one second at the end of the loop, as the light levels don't need to be checked constantly. Adding a delay reduces the device's power consumption.
+
+ ```python
+ time.sleep(1)
+ ```
+
+1. From the VS Code Terminal, run the following command to execute your Python app:
+
+ ```sh
+ python3 app.py
+ ```
+
+ Light values will be displayed in the console. Cover and uncover the light sensor, and you will see the values change:
+
+ ```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
+ ```
+
+> 💁 You can find this code in the [code-sensor/pi](../../../../../1-getting-started/lessons/3-sensors-and-actuators/code-sensor/pi) folder.
+
+😀 Adding a sensor to your nightlight program was a success!
+
+---
+
+**Disclaimer**:
+This document has been translated using the AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). While we aim for accuracy, please note that automated translations may include errors or inaccuracies. The original document in its native language should be regarded as the authoritative source. For critical information, professional human translation is advised. We are not responsible for any misunderstandings or misinterpretations resulting from the use of this translation.
\ No newline at end of file
diff --git a/translations/en/1-getting-started/lessons/3-sensors-and-actuators/virtual-device-actuator.md b/translations/en/1-getting-started/lessons/3-sensors-and-actuators/virtual-device-actuator.md
new file mode 100644
index 00000000..f93de392
--- /dev/null
+++ b/translations/en/1-getting-started/lessons/3-sensors-and-actuators/virtual-device-actuator.md
@@ -0,0 +1,124 @@
+
+# Build a nightlight - Virtual IoT Hardware
+
+In this part of the lesson, you will add an LED to your virtual IoT device and use it to create a nightlight.
+
+## Virtual Hardware
+
+The nightlight requires one actuator, which will be created in the CounterFit app.
+
+The actuator is an **LED**. In a physical IoT device, this would be a [light-emitting diode](https://wikipedia.org/wiki/Light-emitting_diode) that emits light when current flows through it. This is a digital actuator with two states: on and off. Sending a value of 1 turns the LED on, while sending a value of 0 turns it off.
+
+The nightlight logic in pseudo-code is:
+
+```output
+Check the light level.
+If the light is less than 300
+ Turn the LED on
+Otherwise
+ Turn the LED off
+```
+
+### Add the actuator to CounterFit
+
+To use a virtual LED, you need to add it to the CounterFit app.
+
+#### Task - Add the actuator to CounterFit
+
+Add the LED to the CounterFit app.
+
+1. Ensure the CounterFit web app is running from the previous part of this assignment. If it isn’t, start it and re-add the light sensor.
+
+1. Create an LED:
+
+ 1. In the *Create actuator* box in the *Actuator* pane, open the *Actuator type* dropdown and select *LED*.
+
+ 1. Set the *Pin* to *5*.
+
+ 1. Click the **Add** button to create the LED on Pin 5.
+
+ 
+
+ The LED will be created and will appear in the actuators list.
+
+ 
+
+ Once the LED is created, you can change its color using the *Color* picker. Click the **Set** button to apply the color after selecting it.
+
+### Program the nightlight
+
+Now you can program the nightlight using the CounterFit light sensor and LED.
+
+#### Task - Program the nightlight
+
+Program the nightlight.
+
+1. Open the nightlight project in VS Code that you created in the previous part of this assignment. If necessary, kill and re-create the terminal to ensure it is running with the virtual environment.
+
+1. Open the `app.py` file.
+
+1. Add the following code to the `app.py` file to import a required library. This should be added at the top, below the other `import` lines.
+
+ ```python
+ from counterfit_shims_grove.grove_led import GroveLed
+ ```
+
+ The `from counterfit_shims_grove.grove_led import GroveLed` statement imports the `GroveLed` class from the CounterFit Grove shim Python libraries. This library contains the code needed to interact with an LED created in the CounterFit app.
+
+1. Add the following code after the `light_sensor` declaration to create an instance of the class that manages the LED:
+
+ ```python
+ led = GroveLed(5)
+ ```
+
+ The line `led = GroveLed(5)` creates an instance of the `GroveLed` class, connecting it to pin **5**—the CounterFit Grove pin where the LED is connected.
+
+1. Add a check inside the `while` loop, before the `time.sleep`, to monitor the light levels and turn the LED on or off:
+
+ ```python
+ if light < 300:
+ led.on()
+ else:
+ led.off()
+ ```
+
+ This code checks the `light` value. If the value is less than 300, it calls the `on` method of the `GroveLed` class, which sends a digital value of 1 to the LED, turning it on. If the light value is 300 or higher, it calls the `off` method, sending a digital value of 0 to the LED, turning it off.
+
+ > 💁 Make sure this code is indented to the same level as the `print('Light level:', light)` line so that it is inside the while loop!
+
+1. From the VS Code Terminal, run the following command to execute your Python app:
+
+ ```sh
+ python3 app.py
+ ```
+
+ Light values will be displayed in the console.
+
+ ```output
+ (.venv) ➜ GroveTest python3 app.py
+ Light level: 143
+ Light level: 244
+ Light level: 246
+ Light level: 253
+ ```
+
+1. Adjust the *Value* or the *Random* settings to change the light level above and below 300. The LED will turn on and off accordingly.
+
+
+
+> 💁 You can find this code in the [code-actuator/virtual-device](../../../../../1-getting-started/lessons/3-sensors-and-actuators/code-actuator/virtual-device) folder.
+
+😀 Congratulations! Your nightlight program works perfectly!
+
+---
+
+**Disclaimer**:
+This document has been translated using the AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). While we aim for accuracy, please note that automated translations may include errors or inaccuracies. The original document in its native language should be regarded as the authoritative source. For critical information, professional human translation is advised. We are not responsible for any misunderstandings or misinterpretations resulting from the use of this translation.
\ No newline at end of file
diff --git a/translations/en/1-getting-started/lessons/3-sensors-and-actuators/virtual-device-sensor.md b/translations/en/1-getting-started/lessons/3-sensors-and-actuators/virtual-device-sensor.md
new file mode 100644
index 00000000..1439f13a
--- /dev/null
+++ b/translations/en/1-getting-started/lessons/3-sensors-and-actuators/virtual-device-sensor.md
@@ -0,0 +1,124 @@
+
+# Build a nightlight - Virtual IoT Hardware
+
+In this part of the lesson, you will add a light sensor to your virtual IoT device.
+
+## Virtual Hardware
+
+The nightlight requires one sensor, which will be created in the CounterFit app.
+
+The sensor is a **light sensor**. In a physical IoT device, this would be a [photodiode](https://wikipedia.org/wiki/Photodiode) that converts light into an electrical signal. Light sensors are analog sensors that provide an integer value representing the relative amount of light, but this value does not correspond to any standard unit of measurement like [lux](https://wikipedia.org/wiki/Lux).
+
+### Add the sensors to CounterFit
+
+To use a virtual light sensor, you need to add it to the CounterFit app.
+
+#### Task - Add the sensors to CounterFit
+
+Add the light sensor to the CounterFit app.
+
+1. Ensure the CounterFit web app is running from the previous part of this assignment. If it isn’t, start it.
+
+1. Create a light sensor:
+
+ 1. In the *Create sensor* box within the *Sensors* pane, open the *Sensor type* dropdown and select *Light*.
+
+ 1. Leave the *Units* set to *NoUnits*.
+
+ 1. Make sure the *Pin* is set to *0*.
+
+ 1. Click the **Add** button to create the light sensor on Pin 0.
+
+ 
+
+ The light sensor will be created and displayed in the sensors list.
+
+ 
+
+## Program the light sensor
+
+Now, the device can be programmed to use the built-in light sensor.
+
+### Task - Program the light sensor
+
+Program the device.
+
+1. Open the nightlight project in VS Code that you created in the previous part of this assignment. If necessary, kill and re-create the terminal to ensure it is running with the virtual environment.
+
+1. Open the `app.py` file.
+
+1. Add the following code at the top of the `app.py` file, alongside the other `import` statements, to include the required libraries:
+
+ ```python
+ import time
+ from counterfit_shims_grove.grove_light_sensor_v1_2 import GroveLightSensor
+ ```
+
+ The `import time` statement imports Python's `time` module, which will be used later in this assignment.
+
+ The `from counterfit_shims_grove.grove_light_sensor_v1_2 import GroveLightSensor` statement imports the `GroveLightSensor` from the CounterFit Grove shim Python libraries. This library contains code to interact with a light sensor created in the CounterFit app.
+
+1. Add the following code at the bottom of the file to create instances of classes that manage the light sensor:
+
+ ```python
+ light_sensor = GroveLightSensor(0)
+ ```
+
+ The line `light_sensor = GroveLightSensor(0)` creates an instance of the `GroveLightSensor` class, connecting it to pin **0**—the CounterFit Grove pin where the light sensor is connected.
+
+1. Add an infinite loop after the code above to continuously read the light sensor value and print it to the console:
+
+ ```python
+ while True:
+ light = light_sensor.light
+ print('Light level:', light)
+ ```
+
+ This code reads the current light level using the `light` property of the `GroveLightSensor` class. The property retrieves the analog value from the pin, which is then printed to the console.
+
+1. Add a short sleep of one second at the end of the `while` loop, as the light levels don’t need to be checked constantly. Adding a sleep reduces the device's power consumption.
+
+ ```python
+ time.sleep(1)
+ ```
+
+1. From the VS Code Terminal, run the following command to execute your Python app:
+
+ ```sh
+ python3 app.py
+ ```
+
+ Light values will be displayed in the console. Initially, this value will be 0.
+
+1. In the CounterFit app, modify the value of the light sensor that the app will read. You can do this in one of two ways:
+
+ * Enter a number in the *Value* box for the light sensor, then click the **Set** button. The number you enter will be the value returned by the sensor.
+
+ * Check the *Random* checkbox, and specify a *Min* and *Max* value, then click the **Set** button. Each time the sensor reads a value, it will return a random number between *Min* and *Max*.
+
+ The values you set will appear in the console. Adjust the *Value* or the *Random* settings to see the value change.
+
+ ```output
+ (.venv) ➜ GroveTest python3 app.py
+ Light level: 143
+ Light level: 244
+ Light level: 246
+ Light level: 253
+ ```
+
+> 💁 You can find this code in the [code-sensor/virtual-device](../../../../../1-getting-started/lessons/3-sensors-and-actuators/code-sensor/virtual-device) folder.
+
+😀 Your nightlight program was a success!
+
+---
+
+**Disclaimer**:
+This document has been translated using the AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). While we aim for accuracy, please note that automated translations may include errors or inaccuracies. The original document in its native language should be regarded as the authoritative source. For critical information, professional human translation is advised. We are not responsible for any misunderstandings or misinterpretations resulting from the use of this translation.
\ No newline at end of file
diff --git a/translations/en/1-getting-started/lessons/3-sensors-and-actuators/wio-terminal-actuator.md b/translations/en/1-getting-started/lessons/3-sensors-and-actuators/wio-terminal-actuator.md
new file mode 100644
index 00000000..6e91dda6
--- /dev/null
+++ b/translations/en/1-getting-started/lessons/3-sensors-and-actuators/wio-terminal-actuator.md
@@ -0,0 +1,124 @@
+
+# Build a nightlight - Wio Terminal
+
+In this part of the lesson, you will add an LED to your Wio Terminal and use it to create a nightlight.
+
+## Hardware
+
+The nightlight now needs an actuator.
+
+The actuator is an **LED**, a [light-emitting diode](https://wikipedia.org/wiki/Light-emitting_diode) that emits light when current flows through it. This is a digital actuator that has two states: on and off. Sending a value of 1 turns the LED on, and 0 turns it off. This is an external Grove actuator and needs to be connected to the Wio Terminal.
+
+The nightlight logic in pseudo-code is:
+
+```output
+Check the light level.
+If the light is less than 300
+ Turn the LED on
+Otherwise
+ Turn the LED off
+```
+
+### Connect the LED
+
+The Grove LED comes as a module with a selection of LEDs, allowing you to choose the color.
+
+#### Task - connect the LED
+
+Connect the LED.
+
+
+
+1. Pick your favorite LED and insert the legs into the two holes on the LED module.
+
+ LEDs are light-emitting diodes, and diodes are electronic devices that can only carry current in one direction. This means the LED needs to be connected the correct way, otherwise it won't work.
+
+ One of the legs of the LED is the positive pin, and the other is the negative pin. The LED is not perfectly round and is slightly flatter on one side. The slightly flatter side is the negative pin. When you connect the LED to the module, make sure the pin by the rounded side is connected to the socket marked **+** on the outside of the module, and the flatter side is connected to the socket closer to the middle of the module.
+
+1. The LED module has a spin button that allows you to control the brightness. Turn this all the way up to start with by rotating it counterclockwise as far as it will go using a small Phillips head screwdriver.
+
+1. Insert one end of a Grove cable into the socket on the LED module. It will only go in one way.
+
+1. With the Wio Terminal disconnected from your computer or other power supply, connect the other end of the Grove cable to the right-hand side Grove socket on the Wio Terminal as you look at the screen. This is the socket farthest away from the power button.
+
+ > 💁 The right-hand Grove socket can be used with analog or digital sensors and actuators. The left-hand socket is for I2C and digital sensors and actuators only. I2C will be covered in a later lesson.
+
+
+
+## Program the nightlight
+
+The nightlight can now be programmed using the built-in light sensor and the Grove LED.
+
+### Task - program the nightlight
+
+Program the nightlight.
+
+1. Open the nightlight project in VS Code that you created in the previous part of this assignment.
+
+1. Add the following line to the bottom of the `setup` function:
+
+ ```cpp
+ pinMode(D0, OUTPUT);
+ ```
+
+ This line configures the pin used to communicate with the LED via the Grove port.
+
+ The `D0` pin is the digital pin for the right-hand Grove socket. This pin is set to `OUTPUT`, meaning it connects to an actuator and data will be written to the pin.
+
+1. Add the following code immediately before the `delay` in the loop function:
+
+ ```cpp
+ if (light < 300)
+ {
+ digitalWrite(D0, HIGH);
+ }
+ else
+ {
+ digitalWrite(D0, LOW);
+ }
+ ```
+
+ This code checks the `light` value. If this is less than 300, it sends a `HIGH` value to the `D0` digital pin. This `HIGH` is a value of 1, turning on the LED. If the light is greater than or equal to 300, a `LOW` value of 0 is sent to the pin, turning the LED off.
+
+ > 💁 When sending digital values to actuators, a LOW value is 0v, and a HIGH value is the maximum voltage for the device. For the Wio Terminal, the HIGH voltage is 3.3V.
+
+1. Reconnect the Wio Terminal to your computer, and upload the new code as you did before.
+
+1. Connect the Serial Monitor. Light values will be output to the 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. Cover and uncover the light sensor. Notice how the LED will light up if the light level is 300 or less, and turn off when the light level is greater than 300.
+
+
+
+> 💁 You can find this code in the [code-actuator/wio-terminal](../../../../../1-getting-started/lessons/3-sensors-and-actuators/code-actuator/wio-terminal) folder.
+
+😀 Your nightlight program was a success!
+
+---
+
+**Disclaimer**:
+This document has been translated using the AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). While we aim for accuracy, please note that automated translations may include errors or inaccuracies. The original document in its native language should be regarded as the authoritative source. For critical information, professional human translation is advised. We are not responsible for any misunderstandings or misinterpretations resulting from the use of this translation.
\ No newline at end of file
diff --git a/translations/en/1-getting-started/lessons/3-sensors-and-actuators/wio-terminal-sensor.md b/translations/en/1-getting-started/lessons/3-sensors-and-actuators/wio-terminal-sensor.md
new file mode 100644
index 00000000..11deb7c4
--- /dev/null
+++ b/translations/en/1-getting-started/lessons/3-sensors-and-actuators/wio-terminal-sensor.md
@@ -0,0 +1,87 @@
+
+# Add a sensor - Wio Terminal
+
+In this part of the lesson, you will use the light sensor on your Wio Terminal.
+
+## Hardware
+
+The sensor for this lesson is a **light sensor** that uses a [photodiode](https://wikipedia.org/wiki/Photodiode) to convert light into an electrical signal. This is an analog sensor that provides an integer value between 0 and 1,023, representing a relative amount of light. However, this value does not correspond to any standard unit of measurement like [lux](https://wikipedia.org/wiki/Lux).
+
+The light sensor is integrated into the Wio Terminal and can be seen through the transparent plastic window on the back.
+
+
+
+## Program the light sensor
+
+Now, you can program the device to use the built-in light sensor.
+
+### Task
+
+Program the device.
+
+1. Open the nightlight project in VS Code that you created in the previous part of this assignment.
+
+1. Add the following line to the bottom of the `setup` function:
+
+ ```cpp
+ pinMode(WIO_LIGHT, INPUT);
+ ```
+
+ This line sets up the pins used to communicate with the sensor hardware.
+
+ The `WIO_LIGHT` pin represents the GPIO pin connected to the on-board light sensor. This pin is configured as `INPUT`, meaning it connects to a sensor and data will be read from it.
+
+1. Delete the contents of the `loop` function.
+
+1. Add the following code to the now-empty `loop` function:
+
+ ```cpp
+ int light = analogRead(WIO_LIGHT);
+ Serial.print("Light value: ");
+ Serial.println(light);
+ ```
+
+ This code reads an analog value from the `WIO_LIGHT` pin. It retrieves a value between 0 and 1,023 from the on-board light sensor. The value is then sent to the serial port, allowing you to view it in the Serial Monitor while the code is running. `Serial.print` writes the text without adding a new line at the end, so each line will start with `Light value:` and end with the actual light value.
+
+1. Add a short delay of one second (1,000ms) at the end of the `loop`, as the light levels don't need to be checked continuously. Adding a delay also reduces the device's power consumption.
+
+ ```cpp
+ delay(1000);
+ ```
+
+1. Reconnect the Wio Terminal to your computer, and upload the new code as you did before.
+
+1. Open the Serial Monitor. Light values will be displayed in the terminal. Cover and uncover the light sensor on the back of the Wio Terminal, and you will see the values change.
+
+ ```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
+ ```
+
+> 💁 You can find this code in the [code-sensor/wio-terminal](../../../../../1-getting-started/lessons/3-sensors-and-actuators/code-sensor/wio-terminal) folder.
+
+😀 Congratulations! You successfully added a sensor to your nightlight program!
+
+---
+
+**Disclaimer**:
+This document has been translated using the AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). While we aim for accuracy, please note that automated translations may include errors or inaccuracies. The original document in its native language should be regarded as the authoritative source. For critical information, professional human translation is recommended. We are not responsible for any misunderstandings or misinterpretations resulting from the use of this translation.
\ No newline at end of file
diff --git a/translations/en/1-getting-started/lessons/4-connect-internet/README.md b/translations/en/1-getting-started/lessons/4-connect-internet/README.md
new file mode 100644
index 00000000..9bfe7990
--- /dev/null
+++ b/translations/en/1-getting-started/lessons/4-connect-internet/README.md
@@ -0,0 +1,466 @@
+
+# Connect your device to the Internet
+
+
+
+> Sketchnote by [Nitya Narasimhan](https://github.com/nitya). Click the image for a larger version.
+
+This lesson was part of the [Hello IoT series](https://youtube.com/playlist?list=PLmsFUfdnGr3xRts0TIwyaHyQuHaNQcb6-) from the [Microsoft Reactor](https://developer.microsoft.com/reactor/?WT.mc_id=academic-17441-jabenn). It was delivered in two videos: a 1-hour lesson and a 1-hour office hour session that explored the lesson in more detail and answered questions.
+
+[](https://youtu.be/O4dd172mZhs)
+
+[](https://youtu.be/j-cVCzRDE2Q)
+
+> 🎥 Click the images above to watch the videos
+
+## Pre-lecture quiz
+
+[Pre-lecture quiz](https://black-meadow-040d15503.1.azurestaticapps.net/quiz/7)
+
+## Introduction
+
+The **I** in IoT stands for **Internet**—the cloud connectivity and services that enable many of the features of IoT devices, from collecting data from sensors to sending commands to actuators. IoT devices typically connect to a cloud IoT service using a standard communication protocol. This service integrates with the rest of your IoT application, including AI services for data-driven decisions and web apps for control or reporting.
+
+> 🎓 Data collected from sensors and sent to the cloud is called telemetry.
+
+IoT devices can also receive messages from the cloud. These messages often contain commands—instructions to perform actions either internally (like rebooting or updating firmware) or externally (like turning on a light via an actuator).
+
+This lesson introduces some of the communication protocols IoT devices use to connect to the cloud and the types of data they send or receive. You'll also get hands-on experience by adding internet control to your nightlight, moving the LED control logic to 'server' code running locally.
+
+In this lesson, we'll cover:
+
+* [Communication protocols](../../../../../1-getting-started/lessons/4-connect-internet)
+* [Message Queueing Telemetry Transport (MQTT)](../../../../../1-getting-started/lessons/4-connect-internet)
+* [Telemetry](../../../../../1-getting-started/lessons/4-connect-internet)
+* [Commands](../../../../../1-getting-started/lessons/4-connect-internet)
+
+## Communication protocols
+
+IoT devices use various communication protocols to connect to the Internet. The most popular ones are based on publish/subscribe messaging via a broker. IoT devices connect to the broker to publish telemetry and subscribe to commands. Cloud services also connect to the broker, subscribing to telemetry messages and publishing commands to specific devices or groups of devices.
+
+
+
+MQTT is the most widely used communication protocol for IoT devices and is the focus of this lesson. Other protocols include AMQP and HTTP/HTTPS.
+
+## Message Queueing Telemetry Transport (MQTT)
+
+[MQTT](http://mqtt.org) is a lightweight, open standard messaging protocol designed for device-to-device communication. It was originally developed in 1999 to monitor oil pipelines and was released as an open standard by IBM 15 years later.
+
+MQTT uses a single broker and multiple clients. Clients connect to the broker, which routes messages to the appropriate recipients. Messages are routed using named topics rather than being sent directly to specific clients. A client can publish to a topic, and any clients subscribed to that topic will receive the message.
+
+
+
+✅ Do some research. If you have a large number of IoT devices, how can you ensure your MQTT broker can handle all the messages?
+
+### Connect your IoT device to MQTT
+
+The first step in adding internet control to your nightlight is connecting it to an MQTT broker.
+
+#### Task
+
+Connect your device to an MQTT broker.
+
+In this part of the lesson, you'll connect your IoT nightlight to the internet for remote control. Later, your IoT device will send a telemetry message with the light level to a public MQTT broker. This message will be processed by server code you write, which will check the light level and send a command back to the device to turn the LED on or off.
+
+A real-world use case for this setup could involve gathering data from multiple light sensors before deciding to turn on lights in a large area, like a stadium. This approach prevents lights from being activated if only one sensor is obstructed (e.g., by clouds or a bird) while others detect sufficient light.
+
+✅ What other scenarios might require evaluating data from multiple sensors before sending commands?
+
+To simplify this assignment, you'll use a public test server running [Eclipse Mosquitto](https://www.mosquitto.org), an open-source MQTT broker. This test broker is publicly available at [test.mosquitto.org](https://test.mosquitto.org) and doesn't require an account, making it ideal for testing MQTT clients and servers.
+
+> 💁 This test broker is public and not secure. Anyone can listen to what you publish, so avoid using it for sensitive data.
+
+
+
+Follow the relevant step below to connect your device to the MQTT broker:
+
+* [Arduino - Wio Terminal](wio-terminal-mqtt.md)
+* [Single-board computer - Raspberry Pi/Virtual IoT device](single-board-computer-mqtt.md)
+
+### A deeper dive into MQTT
+
+MQTT topics can have a hierarchy, and clients can subscribe to different levels using wildcards. For example, you can send temperature data to `/telemetry/temperature` and humidity data to `/telemetry/humidity`. In your cloud app, you can subscribe to `/telemetry/*` to receive both temperature and humidity messages.
+
+Messages can be sent with a quality of service (QoS) level, which determines the delivery guarantee:
+
+* At most once: The message is sent once without acknowledgment (fire and forget).
+* At least once: The message is retried until acknowledged (acknowledged delivery).
+* Exactly once: A two-level handshake ensures the message is received only once (assured delivery).
+
+✅ What scenarios might require assured delivery over fire-and-forget messaging?
+
+Despite its name, MQTT doesn't support message queues. If a client disconnects, it won't receive messages sent during the disconnection unless the QoS process was already in progress. However, messages with a retained flag are stored by the broker and sent to clients that later subscribe to the topic, ensuring they receive the latest message.
+
+MQTT also includes a keep-alive feature to check if the connection remains active during long gaps between messages.
+
+> 🦟 [Mosquitto from the Eclipse Foundation](https://mosquitto.org) offers a free MQTT broker you can run locally for experimentation, as well as a public broker at [test.mosquitto.org](https://test.mosquitto.org).
+
+MQTT connections can be public and open or secured with encryption, usernames, passwords, or certificates.
+
+> 💁 MQTT uses TCP/IP, the same underlying protocol as HTTP, but on a different port. It can also operate over WebSockets for communication with web apps or in environments where standard MQTT connections are blocked.
+
+## Telemetry
+
+The term telemetry comes from Greek roots meaning "remote measurement." It refers to collecting data from sensors and sending it to the cloud.
+
+> 💁 One of the earliest telemetry systems was invented in France in 1874. It transmitted real-time weather and snow depth data from Mont Blanc to Paris using physical wires, as wireless technology didn't exist yet.
+
+Revisiting the smart thermostat example from Lesson 1:
+
+
+
+The thermostat collects temperature data using sensors. It likely has a built-in sensor and connects to external sensors via a wireless protocol like [Bluetooth Low Energy](https://wikipedia.org/wiki/Bluetooth_Low_Energy) (BLE).
+
+Example telemetry data:
+
+| Name | Value | Description |
+| ---- | ----- | ----------- |
+| `thermostat_temperature` | 18°C | Temperature from the thermostat's built-in sensor |
+| `livingroom_temperature` | 19°C | Temperature from a remote sensor labeled `livingroom` |
+| `bedroom_temperature` | 21°C | Temperature from a remote sensor labeled `bedroom` |
+
+The cloud service uses this telemetry to decide what commands to send to control the heating.
+
+### Send telemetry from your IoT device
+
+The next step in adding internet control to your nightlight is sending light level telemetry to the MQTT broker on a telemetry topic.
+
+#### Task - send telemetry from your IoT device
+
+Send light level telemetry to the MQTT broker.
+
+Data is sent in JSON format (JavaScript Object Notation), a standard for encoding data as key-value pairs.
+
+✅ If you're unfamiliar with JSON, check out the [JSON.org documentation](https://www.json.org/).
+
+Follow the relevant step below to send telemetry from your device to the MQTT broker:
+
+* [Arduino - Wio Terminal](wio-terminal-telemetry.md)
+* [Single-board computer - Raspberry Pi/Virtual IoT device](single-board-computer-telemetry.md)
+
+### Receive telemetry from the MQTT broker
+
+Sending telemetry is pointless without something to process it. The light level telemetry needs a listener to process the data. This 'server' code is similar to what you'd deploy to a cloud service in a larger IoT application. For now, you'll run it locally on your computer (or on your Raspberry Pi if coding directly there). The server code is a Python app that listens for telemetry messages over MQTT and later sends command messages to control the LED.
+
+✅ Do some research: What happens to MQTT messages if there is no listener?
+
+#### Install Python and VS Code
+
+If Python and VS Code aren't installed on your computer, you'll need to install them to write the server code. If you're using a virtual IoT device or working directly on a Raspberry Pi, you can skip this step since these tools should already be installed.
+
+##### Task - install Python and VS Code
+
+Install Python and VS Code.
+
+1. Install Python. Visit the [Python downloads page](https://www.python.org/downloads/) for instructions on installing the latest version.
+
+2. Install Visual Studio Code (VS Code). This is the editor you'll use to write your virtual device code in Python. Refer to the [VS Code documentation](https://code.visualstudio.com?WT.mc_id=academic-17441-jabenn) for installation instructions.
+> 💁 You are free to use any Python IDE or editor for these lessons if you have a preferred tool, but the lessons will provide instructions based on using VS Code.
+1. Install the VS Code Pylance extension. This is an extension for VS Code that provides Python language support. Refer to the [Pylance extension documentation](https://marketplace.visualstudio.com/items?WT.mc_id=academic-17441-jabenn&itemName=ms-python.vscode-pylance) for instructions on installing this extension in VS Code.
+
+#### Configure a Python virtual environment
+
+One of Python's powerful features is the ability to install [pip packages](https://pypi.org)—these are code packages written by others and shared online. You can install a pip package on your computer with a single command and then use it in your code. In this case, you'll use pip to install a package for MQTT communication.
+
+By default, when you install a package, it becomes available system-wide, which can lead to version conflicts. For example, one application might require a specific version of a package, but installing a newer version for another application could break the first one. To avoid this, you can use a [Python virtual environment](https://docs.python.org/3/library/venv.html). A virtual environment is essentially a copy of Python in a dedicated folder, and any pip packages you install are confined to that folder.
+
+##### Task - Configure a Python virtual environment
+
+Set up a Python virtual environment and install the MQTT pip packages.
+
+1. From your terminal or command line, run the following commands to create and navigate to a new directory:
+
+ ```sh
+ mkdir nightlight-server
+ cd nightlight-server
+ ```
+
+1. Next, create a virtual environment in the `.venv` folder by running:
+
+ ```sh
+ python3 -m venv .venv
+ ```
+
+ > 💁 Use `python3` explicitly to create the virtual environment, especially if Python 2 is also installed on your system. If Python 2 is present, the `python` command might default to Python 2 instead of Python 3.
+
+1. Activate the virtual environment:
+
+ * On Windows:
+ * If you're using the Command Prompt or Command Prompt via Windows Terminal, run:
+
+ ```cmd
+ .venv\Scripts\activate.bat
+ ```
+
+ * If you're using PowerShell, run:
+
+ ```powershell
+ .\.venv\Scripts\Activate.ps1
+ ```
+
+ * On macOS or Linux, run:
+
+ ```cmd
+ source ./.venv/bin/activate
+ ```
+
+ > 💁 These commands should be executed from the same directory where you created the virtual environment. You don't need to navigate into the `.venv` folder. Always run the activation command and any subsequent commands to install packages or execute code from the directory where the virtual environment was created.
+
+1. Once the virtual environment is activated, the default `python` command will use the Python version associated with the virtual environment. Check the version by running:
+
+ ```sh
+ python --version
+ ```
+
+ The output will look something like this:
+
+ ```output
+ (.venv) ➜ nightlight-server python --version
+ Python 3.9.1
+ ```
+
+ > 💁 Your Python version might differ. As long as it's version 3.6 or higher, you're good to go. If not, delete the folder, install a newer Python version, and try again.
+
+1. Install the pip package for [Paho-MQTT](https://pypi.org/project/paho-mqtt/), a popular MQTT library, by running:
+
+ ```sh
+ pip install paho-mqtt
+ ```
+
+ This package will only be installed in the virtual environment and won't be available outside of it.
+
+#### Write the server code
+
+Now you can write the server code in Python.
+
+##### Task - Write the server code
+
+Write the server code.
+
+1. From your terminal or command line, create a Python file named `app.py` inside the virtual environment:
+
+ * On Windows, run:
+
+ ```cmd
+ type nul > app.py
+ ```
+
+ * On macOS or Linux, run:
+
+ ```cmd
+ touch app.py
+ ```
+
+1. Open the current folder in VS Code:
+
+ ```sh
+ code .
+ ```
+
+1. When VS Code launches, it will activate the Python virtual environment. This will be indicated in the bottom status bar:
+
+ 
+
+1. If the VS Code Terminal is already open when VS Code starts, the virtual environment might not be activated in it. To fix this, kill the terminal using the **Kill the active terminal instance** button:
+
+ 
+
+1. Open a new VS Code Terminal by selecting *Terminal -> New Terminal* or pressing `` CTRL+` ``. The new terminal will load the virtual environment, and the activation command will appear in the terminal. The virtual environment's name (`.venv`) will also be displayed in the prompt:
+
+ ```output
+ ➜ nightlight-server source .venv/bin/activate
+ (.venv) ➜ nightlight
+ ```
+
+1. Open the `app.py` file in the VS Code explorer and add the following code:
+
+ ```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)
+ ```
+
+ Replace `` on line 6 with the unique ID you used when creating your device code.
+
+ ⚠️ This **must** match the ID used on your device; otherwise, the server code won't subscribe to or publish to the correct topic.
+
+ This code creates an MQTT client with a unique name and connects to the *test.mosquitto.org* broker. It then starts a background thread to process messages on subscribed topics.
+
+ The client subscribes to the telemetry topic and defines a function to handle incoming messages. When a telemetry message is received, the `handle_telemetry` function is called, printing the message to the console.
+
+ Finally, an infinite loop keeps the application running. The MQTT client listens for messages in the background as long as the main application is running.
+
+1. Run the Python app from the VS Code terminal:
+
+ ```sh
+ python app.py
+ ```
+
+ The app will start listening for messages from the IoT device.
+
+1. Ensure your device is running and sending telemetry messages. Adjust the light levels detected by your physical or virtual device. Received messages will be printed in the terminal.
+
+ ```output
+ (.venv) ➜ nightlight-server python app.py
+ Message received: {'light': 0}
+ Message received: {'light': 400}
+ ```
+
+ The `app.py` file in the nightlight virtual environment must be running for the `app.py` file in the nightlight-server virtual environment to receive the messages.
+
+> 💁 You can find this code in the [code-server/server](../../../../../1-getting-started/lessons/4-connect-internet/code-server/server) folder.
+
+### How often should telemetry be sent?
+
+A key consideration with telemetry is how frequently to measure and send data. The answer depends on the use case. Measuring frequently allows for faster responses to changes but consumes more power, bandwidth, and cloud resources. You need to strike a balance.
+
+For a thermostat, measuring every few minutes is likely sufficient since temperatures don't change rapidly. Measuring once a day might be too infrequent, while measuring every second would generate excessive, redundant data, consuming bandwidth and power unnecessarily.
+
+For critical machinery in a factory, measuring multiple times per second might be necessary to detect issues early and prevent costly failures. In such cases, it's better to over-collect data than to miss important telemetry.
+
+> 💁 In scenarios like this, you might consider using an edge device to process telemetry locally and reduce reliance on the Internet.
+
+### Loss of connectivity
+
+Internet connections can be unreliable. What should an IoT device do during an outage—discard the data or store it until connectivity is restored? Again, it depends.
+
+For a thermostat, old data can likely be discarded once a new measurement is taken. The current temperature is what matters for controlling the heating.
+
+For machinery, you might want to retain all data, especially if it's used for trend analysis or anomaly detection. Machine learning models often analyze historical data to predict maintenance needs. In such cases, the IoT device should store telemetry locally and send it once connectivity is restored.
+
+IoT devices should also be designed to function during outages. For example, a smart thermostat should still control heating based on local conditions even if it can't send telemetry to the cloud.
+
+[](https://twitter.com/internetofshit/status/1315736960082808832)
+
+For MQTT, handling connectivity loss requires the device and server code to ensure message delivery. For example, messages could require acknowledgments, and any unacknowledged messages could be queued for later delivery.
+
+## Commands
+
+Commands are messages sent from the cloud to a device, instructing it to perform an action. This could involve controlling an actuator or issuing a device-specific instruction, such as rebooting or collecting additional telemetry.
+
+
+
+For example, a thermostat might receive a command from the cloud to turn the heating on based on telemetry data from sensors.
+
+### Send commands to the MQTT broker
+
+The next step for the Internet-controlled nightlight is to have the server send commands to the IoT device to control the light based on detected light levels.
+
+1. Open the server code in VS Code.
+
+1. Add the following line after the declaration of the `client_telemetry_topic` to define the topic for sending commands:
+
+ ```python
+ server_command_topic = id + '/commands'
+ ```
+
+1. Add the following code to the end of the `handle_telemetry` function:
+
+ ```python
+ command = { 'led_on' : payload['light'] < 300 }
+ print("Sending message:", command)
+
+ client.publish(server_command_topic, json.dumps(command))
+ ```
+
+ This sends a JSON message to the command topic with the `led_on` value set to true or false, depending on whether the light level is below 300. If the light level is below 300, true is sent to turn the LED on.
+
+1. Run the code as before.
+
+1. Adjust the light levels detected by your physical or virtual device. Messages received and commands sent will be displayed in the 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}
+ ```
+
+> 💁 Telemetry and commands are sent on single topics. This means telemetry from multiple devices will appear on the same topic, and commands for multiple devices will appear on the same commands topic. To send a command to a specific device, you could use unique topics, such as `/commands/device1` or `/commands/device2`. This way, a device listens only to messages intended for it.
+
+> 💁 You can find this code in the [code-commands/server](../../../../../1-getting-started/lessons/4-connect-internet/code-commands/server) folder.
+
+### Handle commands on the IoT device
+
+Now that the server is sending commands, you can add code to the IoT device to handle them and control the LED.
+
+Follow the relevant instructions below to listen for commands from the MQTT broker:
+
+* [Arduino - Wio Terminal](wio-terminal-commands.md)
+* [Single-board computer - Raspberry Pi/Virtual IoT device](single-board-computer-commands.md)
+
+Once the code is implemented and running, experiment with changing light levels. Observe the server and device outputs, and watch the LED respond to changes.
+
+### Loss of connectivity
+
+What should a cloud service do if it needs to send a command to an offline IoT device? Again, it depends.
+
+If the latest command overrides earlier ones, the earlier commands can likely be ignored. For example, if a command to turn the heating on is followed by one to turn it off, the first command can be discarded.
+
+If commands must be processed in sequence (e.g., move a robot arm up, then close a grabber), they should be queued and sent in order once connectivity is restored.
+
+✅ How could the device or server code ensure commands are always sent and processed in order over MQTT if needed?
+
+---
+
+## 🚀 Challenge
+
+In the last three lessons, the challenge was to list as many IoT devices as you can find in your home, school, or workplace. Determine whether they are built around microcontrollers, single-board computers, or a mix of both, and consider the sensors and actuators they use.
+For these devices, consider what messages they might be sending or receiving. What telemetry data do they transmit? What messages or commands might they receive? Do you think they are secure?
+
+## Post-lecture quiz
+
+[Post-lecture quiz](https://black-meadow-040d15503.1.azurestaticapps.net/quiz/8)
+
+## Review & Self Study
+
+Learn more about MQTT on the [MQTT Wikipedia page](https://wikipedia.org/wiki/MQTT).
+
+Try setting up an MQTT broker yourself using [Mosquitto](https://www.mosquitto.org) and connect to it from your IoT device and server code.
+
+> 💁 Tip - By default, Mosquitto doesn't permit anonymous connections (connections without a username and password) and doesn't allow connections from outside the computer it's running on.
+> You can resolve this by using a [`mosquitto.conf` config file](https://www.mosquitto.org/man/mosquitto-conf-5.html) with the following:
+>
+> ```sh
+> listener 1883 0.0.0.0
+> allow_anonymous true
+> ```
+
+## Assignment
+
+[Compare and contrast MQTT with other communication protocols](assignment.md)
+
+---
+
+**Disclaimer**:
+This document has been translated using the AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). While we aim for accuracy, please note that automated translations may include errors or inaccuracies. The original document in its native language should be regarded as the authoritative source. For critical information, professional human translation is advised. We are not responsible for any misunderstandings or misinterpretations resulting from the use of this translation.
\ No newline at end of file
diff --git a/translations/en/1-getting-started/lessons/4-connect-internet/assignment.md b/translations/en/1-getting-started/lessons/4-connect-internet/assignment.md
new file mode 100644
index 00000000..9c947da4
--- /dev/null
+++ b/translations/en/1-getting-started/lessons/4-connect-internet/assignment.md
@@ -0,0 +1,28 @@
+
+# Compare and contrast MQTT with other communication protocols
+
+## Instructions
+
+This lesson covered MQTT as a communication protocol. There are others, including AMQP and HTTP/HTTPS.
+
+Research both of these and compare/contrast them with MQTT. Consider aspects such as power consumption, security, and message persistence in case of connection loss.
+
+## Rubric
+
+| Criteria | Exemplary | Adequate | Needs Improvement |
+| -------- | --------- | -------- | ----------------- |
+| Compare AMQP to MQTT | Successfully compares and contrasts AMQP to MQTT, addressing power consumption, security, and message persistence. | Partially compares and contrasts AMQP to MQTT, addressing two of the following: power consumption, security, or message persistence. | Partially compares and contrasts AMQP to MQTT, addressing only one of the following: power consumption, security, or message persistence. |
+| Compare HTTP/HTTPS to MQTT | Successfully compares and contrasts HTTP/HTTPS to MQTT, addressing power consumption, security, and message persistence. | Partially compares and contrasts HTTP/HTTPS to MQTT, addressing two of the following: power consumption, security, or message persistence. | Partially compares and contrasts HTTP/HTTPS to MQTT, addressing only one of the following: power consumption, security, or message persistence. |
+
+---
+
+**Disclaimer**:
+This document has been translated using the AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). While we aim for accuracy, please note that automated translations may include errors or inaccuracies. The original document in its native language should be regarded as the authoritative source. For critical information, professional human translation is advised. We are not responsible for any misunderstandings or misinterpretations resulting from the use of this translation.
\ No newline at end of file
diff --git a/translations/en/1-getting-started/lessons/4-connect-internet/single-board-computer-commands.md b/translations/en/1-getting-started/lessons/4-connect-internet/single-board-computer-commands.md
new file mode 100644
index 00000000..41960e0b
--- /dev/null
+++ b/translations/en/1-getting-started/lessons/4-connect-internet/single-board-computer-commands.md
@@ -0,0 +1,67 @@
+
+# Control your nightlight over the Internet - Virtual IoT Hardware and Raspberry Pi
+
+In this part of the lesson, you will subscribe to commands sent from an MQTT broker to your Raspberry Pi or virtual IoT device.
+
+## Subscribe to commands
+
+The next step is to subscribe to the commands sent from the MQTT broker and respond to them.
+
+### Task
+
+Subscribe to commands.
+
+1. Open the nightlight project in VS Code.
+
+1. If you are using a virtual IoT device, ensure the terminal is running the virtual environment. If you are using a Raspberry Pi, you won't be using a virtual environment.
+
+1. Add the following code after the definitions of the `client_telemetry_topic`:
+
+ ```python
+ server_command_topic = id + '/commands'
+ ```
+
+ The `server_command_topic` is the MQTT topic the device will subscribe to in order to receive LED commands.
+
+1. Add the following code just above the main loop, after the `mqtt_client.loop_start()` line:
+
+ ```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
+ ```
+
+ This code defines a function, `handle_command`, that reads a message as a JSON document and looks for the value of the `led_on` property. If it is set to `True`, the LED is turned on; otherwise, it is turned off.
+
+ The MQTT client subscribes to the topic where the server will send messages and sets the `handle_command` function to be called when a message is received.
+
+ > 💁 The `on_message` handler is called for all topics subscribed to. If you later write code that listens to multiple topics, you can get the topic that the message was sent to from the `message` object passed to the handler function.
+
+1. Run the code in the same way as you ran the code from the previous part of the assignment. If you are using a virtual IoT device, make sure the CounterFit app is running and the light sensor and LED have been created on the correct pins.
+
+1. Adjust the light levels detected by your physical or virtual device. Messages being received and commands being sent will be written to the terminal. The LED will also turn on and off depending on the light level.
+
+> 💁 You can find this code in the [code-commands/virtual-device](../../../../../1-getting-started/lessons/4-connect-internet/code-commands/virtual-device) folder or the [code-commands/pi](../../../../../1-getting-started/lessons/4-connect-internet/code-commands/pi) folder.
+
+😀 You have successfully coded your device to respond to commands from an MQTT broker.
+
+---
+
+**Disclaimer**:
+This document has been translated using the AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). While we aim for accuracy, please note that automated translations may include errors or inaccuracies. The original document in its native language should be regarded as the authoritative source. For critical information, professional human translation is advised. We are not responsible for any misunderstandings or misinterpretations resulting from the use of this translation.
\ No newline at end of file
diff --git a/translations/en/1-getting-started/lessons/4-connect-internet/single-board-computer-mqtt.md b/translations/en/1-getting-started/lessons/4-connect-internet/single-board-computer-mqtt.md
new file mode 100644
index 00000000..7c14b486
--- /dev/null
+++ b/translations/en/1-getting-started/lessons/4-connect-internet/single-board-computer-mqtt.md
@@ -0,0 +1,93 @@
+
+# Control your nightlight over the Internet - Virtual IoT Hardware and Raspberry Pi
+
+The IoT device needs to be programmed to communicate with *test.mosquitto.org* using MQTT to send telemetry data with the light sensor readings and receive commands to control the LED.
+
+In this part of the lesson, you will connect your Raspberry Pi or virtual IoT device to an MQTT broker.
+
+## Install the MQTT client package
+
+To communicate with the MQTT broker, you need to install an MQTT library pip package either on your Raspberry Pi or in your virtual environment if you are using a virtual device.
+
+### Task
+
+Install the pip package
+
+1. Open the nightlight project in VS Code.
+
+1. If you are using a virtual IoT device, ensure the terminal is running the virtual environment. If you are using a Raspberry Pi, you won't be using a virtual environment.
+
+1. Run the following command to install the MQTT pip package:
+
+ ```sh
+ pip3 install paho-mqtt
+ ```
+
+## Code the device
+
+The device is ready to be programmed.
+
+### Task
+
+Write the device code.
+
+1. Add the following import to the top of the `app.py` file:
+
+ ```python
+ import paho.mqtt.client as mqtt
+ ```
+
+ The `paho.mqtt.client` library allows your app to communicate using MQTT.
+
+1. Add the following code after the definitions of the light sensor and LED:
+
+ ```python
+ id = ''
+
+ client_name = id + 'nightlight_client'
+ ```
+
+ Replace `` with a unique ID that will serve as the name of this device client and later for the topics that this device publishes and subscribes to. The *test.mosquitto.org* broker is public and used by many people, including other students working on this assignment. Using a unique MQTT client name and topic names ensures your code won't interfere with anyone else's. You will also need this ID when creating the server code later in this assignment.
+
+ > 💁 You can use a website like [GUIDGen](https://www.guidgen.com) to generate a unique ID.
+
+ The `client_name` is a unique identifier for this MQTT client on the broker.
+
+1. Add the following code below this new code to create an MQTT client object and connect to the MQTT broker:
+
+ ```python
+ mqtt_client = mqtt.Client(client_name)
+ mqtt_client.connect('test.mosquitto.org')
+
+ mqtt_client.loop_start()
+
+ print("MQTT connected!")
+ ```
+
+ This code creates the client object, connects to the public MQTT broker, and starts a processing loop that runs in a background thread, listening for messages on any subscribed topics.
+
+1. Run the code in the same way as you ran the code from the previous part of the assignment. If you are using a virtual IoT device, make sure the CounterFit app is running and the light sensor and LED have been created on the correct pins.
+
+ ```output
+ (.venv) ➜ nightlight python app.py
+ MQTT connected!
+ Light level: 0
+ Light level: 0
+ ```
+
+> 💁 You can find this code in the [code-mqtt/virtual-device](../../../../../1-getting-started/lessons/4-connect-internet/code-mqtt/virtual-device) folder or the [code-mqtt/pi](../../../../../1-getting-started/lessons/4-connect-internet/code-mqtt/pi) folder.
+
+😀 You have successfully connected your device to an MQTT broker.
+
+---
+
+**Disclaimer**:
+This document has been translated using the AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). While we aim for accuracy, please note that automated translations may include errors or inaccuracies. The original document in its native language should be regarded as the authoritative source. For critical information, professional human translation is advised. We are not responsible for any misunderstandings or misinterpretations resulting from the use of this translation.
\ No newline at end of file
diff --git a/translations/en/1-getting-started/lessons/4-connect-internet/single-board-computer-telemetry.md b/translations/en/1-getting-started/lessons/4-connect-internet/single-board-computer-telemetry.md
new file mode 100644
index 00000000..164b9f85
--- /dev/null
+++ b/translations/en/1-getting-started/lessons/4-connect-internet/single-board-computer-telemetry.md
@@ -0,0 +1,74 @@
+
+# Control your nightlight over the Internet - Virtual IoT Hardware and Raspberry Pi
+
+In this part of the lesson, you will send telemetry data with light levels from your Raspberry Pi or virtual IoT device to an MQTT broker.
+
+## Publish telemetry
+
+The next step is to create a JSON document containing telemetry data and send it to the MQTT broker.
+
+### Task
+
+Send telemetry data to the MQTT broker.
+
+1. Open the nightlight project in VS Code.
+
+1. If you are using a virtual IoT device, ensure the terminal is running the virtual environment. If you are using a Raspberry Pi, you won't need a virtual environment.
+
+1. Add the following import at the top of the `app.py` file:
+
+ ```python
+ import json
+ ```
+
+ The `json` library is used to encode the telemetry data into a JSON document.
+
+1. Add the following line after the `client_name` declaration:
+
+ ```python
+ client_telemetry_topic = id + '/telemetry'
+ ```
+
+ The `client_telemetry_topic` is the MQTT topic where the device will publish the light levels.
+
+1. Replace the contents of the `while True:` loop at the end of the file with the following:
+
+ ```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)
+ ```
+
+ This code packages the light level into a JSON document and publishes it to the MQTT broker. It then pauses to reduce the frequency of messages being sent.
+
+1. Run the code in the same way you ran the code in the previous part of the assignment. If you are using a virtual IoT device, ensure the CounterFit app is running and that the light sensor and LED have been created on the correct pins.
+
+ ```output
+ (.venv) ➜ nightlight python app.py
+ MQTT connected!
+ Sending telemetry {"light": 0}
+ Sending telemetry {"light": 0}
+ ```
+
+> 💁 You can find this code in the [code-telemetry/virtual-device](../../../../../1-getting-started/lessons/4-connect-internet/code-telemetry/virtual-device) folder or the [code-telemetry/pi](../../../../../1-getting-started/lessons/4-connect-internet/code-telemetry/pi) folder.
+
+😀 You have successfully sent telemetry data from your device.
+
+---
+
+**Disclaimer**:
+This document has been translated using the AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). While we aim for accuracy, please note that automated translations may include errors or inaccuracies. The original document in its native language should be regarded as the authoritative source. For critical information, professional human translation is advised. We are not responsible for any misunderstandings or misinterpretations resulting from the use of this translation.
\ No newline at end of file
diff --git a/translations/en/1-getting-started/lessons/4-connect-internet/wio-terminal-commands.md b/translations/en/1-getting-started/lessons/4-connect-internet/wio-terminal-commands.md
new file mode 100644
index 00000000..883b8bff
--- /dev/null
+++ b/translations/en/1-getting-started/lessons/4-connect-internet/wio-terminal-commands.md
@@ -0,0 +1,93 @@
+
+# Control your nightlight over the Internet - Wio Terminal
+
+In this part of the lesson, you will configure your Wio Terminal to receive and respond to commands sent from an MQTT broker.
+
+## Subscribe to commands
+
+The next step is to set up your device to subscribe to commands sent from the MQTT broker and act on them.
+
+### Task
+
+Subscribe to commands.
+
+1. Open the nightlight project in VS Code.
+
+1. Add the following code at the end of the `config.h` file to define the topic name for the commands:
+
+ ```cpp
+ const string SERVER_COMMAND_TOPIC = ID + "/commands";
+ ```
+
+ The `SERVER_COMMAND_TOPIC` is the topic your device will subscribe to in order to receive LED control commands.
+
+1. Add the following line at the end of the `reconnectMQTTClient` function to subscribe to the command topic whenever the MQTT client reconnects:
+
+ ```cpp
+ client.subscribe(SERVER_COMMAND_TOPIC.c_str());
+ ```
+
+1. Insert the following code below the `reconnectMQTTClient` function:
+
+ ```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);
+ }
+ ```
+
+ This function serves as the callback that the MQTT client will invoke when it receives a message from the server.
+
+ Since the message is received as an array of unsigned 8-bit integers, it needs to be converted into a character array to process it as text.
+
+ The message contains a JSON document, which is decoded using the ArduinoJson library. The `led_on` property in the JSON document is read, and based on its value, the LED is either turned on or off.
+
+1. Add the following code to the `createMQTTClient` function:
+
+ ```cpp
+ client.setCallback(clientCallback);
+ ```
+
+ This code sets `clientCallback` as the function to be called whenever a message is received from the MQTT broker.
+
+ > 💁 The `clientCallback` function is triggered for all subscribed topics. If you later add code to listen to multiple topics, you can use the `topic` parameter passed to the callback function to identify which topic the message belongs to.
+
+1. Upload the code to your Wio Terminal, and use the Serial Monitor to observe the light levels being sent to the MQTT broker.
+
+1. Adjust the light levels detected by your physical or virtual device. You will see messages being received and commands being sent in the terminal. The LED will turn on or off based on the detected light level.
+
+> 💁 You can find this code in the [code-commands/wio-terminal](../../../../../1-getting-started/lessons/4-connect-internet/code-commands/wio-terminal) folder.
+
+😀 Congratulations! Your device is now successfully programmed to respond to commands from an MQTT broker.
+
+---
+
+**Disclaimer**:
+This document has been translated using the AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). While we aim for accuracy, please note that automated translations may include errors or inaccuracies. The original document in its native language should be regarded as the authoritative source. For critical information, professional human translation is advised. We are not responsible for any misunderstandings or misinterpretations resulting from the use of this translation.
\ No newline at end of file
diff --git a/translations/en/1-getting-started/lessons/4-connect-internet/wio-terminal-mqtt.md b/translations/en/1-getting-started/lessons/4-connect-internet/wio-terminal-mqtt.md
new file mode 100644
index 00000000..aca4451a
--- /dev/null
+++ b/translations/en/1-getting-started/lessons/4-connect-internet/wio-terminal-mqtt.md
@@ -0,0 +1,251 @@
+
+# Control your nightlight over the Internet - Wio Terminal
+
+The IoT device needs to be programmed to communicate with *test.mosquitto.org* using MQTT to send telemetry data based on the light sensor readings and receive commands to control the LED.
+
+In this part of the lesson, you will connect your Wio Terminal to an MQTT broker.
+
+## Install the WiFi and MQTT Arduino libraries
+
+To communicate with the MQTT broker, you need to install some Arduino libraries to use the WiFi chip in the Wio Terminal and interact with MQTT. When developing for Arduino devices, you can leverage a wide range of libraries containing open-source code that implement various functionalities. Seeed provides libraries for the Wio Terminal that enable WiFi communication. Other developers have created libraries for interacting with MQTT brokers, which you will use with your device.
+
+These libraries are available as source code that can be automatically imported into PlatformIO and compiled for your device. This ensures Arduino libraries work on any device supporting the Arduino framework, provided the device has the necessary hardware for the library. Some libraries, like the Seeed WiFi libraries, are specific to certain hardware.
+
+Libraries can be installed globally for reuse or directly into a specific project. For this assignment, the libraries will be installed into the project.
+
+✅ You can learn more about library management and how to find and install libraries in the [PlatformIO library documentation](https://docs.platformio.org/en/latest/librarymanager/index.html).
+
+### Task - install the WiFi and MQTT Arduino libraries
+
+Install the Arduino libraries.
+
+1. Open the nightlight project in VS Code.
+
+1. Add the following to the end of the `platformio.ini` file:
+
+ ```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
+ ```
+
+ This imports the Seeed WiFi libraries. The `@ ` syntax specifies a particular version of the library.
+
+ > 💁 You can remove the `@ ` to always use the latest version of the libraries, but there’s no guarantee that newer versions will work with the code below. The code provided here has been tested with this specific version of the libraries.
+
+ This is all you need to do to add the libraries. The next time PlatformIO builds the project, it will download the source code for these libraries and compile them into your project.
+
+1. Add the following to the `lib_deps`:
+
+ ```ini
+ knolleary/PubSubClient @ 2.8
+ ```
+
+ This imports [PubSubClient](https://github.com/knolleary/pubsubclient), an Arduino MQTT client.
+
+## Connect to WiFi
+
+The Wio Terminal can now be connected to WiFi.
+
+### Task - connect to WiFi
+
+Connect the Wio Terminal to WiFi.
+
+1. Create a new file in the `src` folder called `config.h`. You can do this by selecting the `src` folder or the `main.cpp` file inside it, and clicking the **New file** button in the explorer. This button appears when your cursor hovers over the explorer.
+
+ 
+
+1. Add the following code to this file to define constants for your WiFi credentials:
+
+ ```cpp
+ #pragma once
+
+ #include
+
+ using namespace std;
+
+ // WiFi credentials
+ const char *SSID = "";
+ const char *PASSWORD = "";
+ ```
+
+ Replace `` with your WiFi network name. Replace `` with your WiFi password.
+
+1. Open the `main.cpp` file.
+
+1. Add the following `#include` directives to the top of the file:
+
+ ```cpp
+ #include
+ #include
+ #include
+
+ #include "config.h"
+ ```
+
+ This includes header files for the libraries you added earlier, as well as the config header file. These header files are necessary to instruct PlatformIO to include the code from the libraries. Without explicitly including these header files, some code won’t be compiled, resulting in compiler errors.
+
+1. Add the following code above the `setup` function:
+
+ ```cpp
+ void connectWiFi()
+ {
+ while (WiFi.status() != WL_CONNECTED)
+ {
+ Serial.println("Connecting to WiFi..");
+ WiFi.begin(SSID, PASSWORD);
+ delay(500);
+ }
+
+ Serial.println("Connected!");
+ }
+ ```
+
+ This code loops while the device is not connected to WiFi and attempts to connect using the SSID and password from the config header file.
+
+1. Add a call to this function at the bottom of the `setup` function, after the pins have been configured.
+
+ ```cpp
+ connectWiFi();
+ ```
+
+1. Upload this code to your device to verify the WiFi connection. You should see the output in the serial monitor.
+
+ ```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!
+ ```
+
+## Connect to MQTT
+
+Once the Wio Terminal is connected to WiFi, it can connect to the MQTT broker.
+
+### Task - connect to MQTT
+
+Connect to the MQTT broker.
+
+1. Add the following code to the bottom of the `config.h` file to define the connection details for the MQTT broker:
+
+ ```cpp
+ // MQTT settings
+ const string ID = "";
+
+ const string BROKER = "test.mosquitto.org";
+ const string CLIENT_NAME = ID + "nightlight_client";
+ ```
+
+ Replace `` with a unique ID that will serve as the name of this device client and later for the topics this device publishes and subscribes to. The *test.mosquitto.org* broker is public and used by many people, including other students working on this assignment. Using a unique MQTT client name and topic names ensures your code won’t interfere with others. You will also need this ID when creating the server code later in this assignment.
+
+ > 💁 You can use a website like [GUIDGen](https://www.guidgen.com) to generate a unique ID.
+
+ The `BROKER` is the URL of the MQTT broker.
+
+ The `CLIENT_NAME` is a unique name for this MQTT client on the broker.
+
+1. Open the `main.cpp` file, and add the following code below the `connectWiFi` function and above the `setup` function:
+
+ ```cpp
+ WiFiClient wioClient;
+ PubSubClient client(wioClient);
+ ```
+
+ This code creates a WiFi client using the Wio Terminal WiFi libraries and uses it to create an MQTT client.
+
+1. Below this code, add the following:
+
+ ```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);
+ }
+ }
+ }
+ ```
+
+ This function tests the connection to the MQTT broker and reconnects if it is not connected. It loops continuously while disconnected and attempts to connect using the unique client name defined in the config header file.
+
+ If the connection fails, it retries after 5 seconds.
+
+1. Add the following code below the `reconnectMQTTClient` function:
+
+ ```cpp
+ void createMQTTClient()
+ {
+ client.setServer(BROKER.c_str(), 1883);
+ reconnectMQTTClient();
+ }
+ ```
+
+ This code sets the MQTT broker for the client, configures the callback for incoming messages, and attempts to connect to the broker.
+
+1. Call the `createMQTTClient` function in the `setup` function after the WiFi connection is established.
+
+1. Replace the entire `loop` function with the following:
+
+ ```cpp
+ void loop()
+ {
+ reconnectMQTTClient();
+ client.loop();
+
+ delay(2000);
+ }
+ ```
+
+ This code starts by reconnecting to the MQTT broker. MQTT connections can be easily disrupted, so it’s important to regularly check and reconnect if necessary. It then calls the `loop` method on the MQTT client to process any incoming messages on the subscribed topic. Since this app is single-threaded, messages cannot be received in the background, so time on the main thread must be allocated to handle any waiting messages.
+
+ Finally, a 2-second delay ensures the light levels are not sent too frequently, reducing the device’s power consumption.
+
+1. Upload the code to your Wio Terminal, and use the Serial Monitor to observe the device connecting to WiFi and 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
+ ```
+
+> 💁 You can find this code in the [code-mqtt/wio-terminal](../../../../../1-getting-started/lessons/4-connect-internet/code-mqtt/wio-terminal) folder.
+
+😀 You have successfully connected your device to an MQTT broker.
+
+---
+
+**Disclaimer**:
+This document has been translated using the AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). While we aim for accuracy, please note that automated translations may include errors or inaccuracies. The original document in its native language should be regarded as the authoritative source. For critical information, professional human translation is advised. We are not responsible for any misunderstandings or misinterpretations resulting from the use of this translation.
\ No newline at end of file
diff --git a/translations/en/1-getting-started/lessons/4-connect-internet/wio-terminal-telemetry.md b/translations/en/1-getting-started/lessons/4-connect-internet/wio-terminal-telemetry.md
new file mode 100644
index 00000000..1a480f95
--- /dev/null
+++ b/translations/en/1-getting-started/lessons/4-connect-internet/wio-terminal-telemetry.md
@@ -0,0 +1,93 @@
+
+# Control your nightlight over the Internet - Wio Terminal
+
+In this part of the lesson, you will send telemetry data with light levels from your Wio Terminal to the MQTT broker.
+
+## Install the JSON Arduino libraries
+
+A common way to send messages over MQTT is by using JSON. There is an Arduino library for JSON that simplifies reading and writing JSON documents.
+
+### Task
+
+Install the Arduino JSON library.
+
+1. Open the nightlight project in VS Code.
+
+1. Add the following as an additional line to the `lib_deps` list in the `platformio.ini` file:
+
+ ```ini
+ bblanchon/ArduinoJson @ 6.17.3
+ ```
+
+ This imports [ArduinoJson](https://arduinojson.org), an Arduino JSON library.
+
+## Publish telemetry
+
+The next step is to create a JSON document with telemetry data and send it to the MQTT broker.
+
+### Task - publish telemetry
+
+Send telemetry data to the MQTT broker.
+
+1. Add the following code to the bottom of the `config.h` file to define the telemetry topic name for the MQTT broker:
+
+ ```cpp
+ const string CLIENT_TELEMETRY_TOPIC = ID + "/telemetry";
+ ```
+
+ The `CLIENT_TELEMETRY_TOPIC` is the topic where the device will publish light levels.
+
+1. Open the `main.cpp` file.
+
+1. Add the following `#include` directive to the top of the file:
+
+ ```cpp
+ #include
+ ```
+
+1. Add the following code inside the `loop` function, just before the `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());
+ ```
+
+ This code reads the light level and creates a JSON document using ArduinoJson that contains this level. It is then serialized into a string and published to the telemetry MQTT topic by the MQTT client.
+
+1. Upload the code to your Wio Terminal, and use the Serial Monitor to observe the light levels being sent to the MQTT broker.
+
+ ```output
+ Connecting to WiFi..
+ Connected!
+ Attempting MQTT connection...connected
+ Sending telemetry {"light":652}
+ Sending telemetry {"light":612}
+ Sending telemetry {"light":583}
+ ```
+
+> 💁 You can find this code in the [code-telemetry/wio-terminal](../../../../../1-getting-started/lessons/4-connect-internet/code-telemetry/wio-terminal) folder.
+
+😀 You have successfully sent telemetry data from your device.
+
+---
+
+**Disclaimer**:
+This document has been translated using the AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). While we aim for accuracy, please note that automated translations may include errors or inaccuracies. The original document in its native language should be regarded as the authoritative source. For critical information, professional human translation is advised. We are not responsible for any misunderstandings or misinterpretations resulting from the use of this translation.
\ No newline at end of file
diff --git a/translations/en/2-farm/README.md b/translations/en/2-farm/README.md
new file mode 100644
index 00000000..000db32f
--- /dev/null
+++ b/translations/en/2-farm/README.md
@@ -0,0 +1,34 @@
+
+# Farming with IoT
+
+As the global population increases, so does the pressure on agriculture. While the amount of available land remains constant, the changing climate adds further challenges for farmers, particularly the 2 billion [subsistence farmers](https://wikipedia.org/wiki/Subsistence_agriculture) who depend on their crops for food and to support their families. IoT can assist farmers in making smarter decisions about what to grow and when to harvest, boost crop yields, reduce manual labor, and identify and address pest issues.
+
+In these six lessons, you'll explore how to leverage the Internet of Things to enhance and automate farming practices.
+
+> 💁 These lessons will utilize some cloud resources. If you don't complete all the lessons in this project, make sure you [Clean up your project](../clean-up.md).
+
+## Topics
+
+1. [Predict plant growth with IoT](lessons/1-predict-plant-growth/README.md)
+1. [Detect soil moisture](lessons/2-detect-soil-moisture/README.md)
+1. [Automated plant watering](lessons/3-automated-plant-watering/README.md)
+1. [Migrate your plant to the cloud](lessons/4-migrate-your-plant-to-the-cloud/README.md)
+1. [Migrate your application logic to the cloud](lessons/5-migrate-application-to-the-cloud/README.md)
+1. [Keep your plant secure](lessons/6-keep-your-plant-secure/README.md)
+
+## Credits
+
+All lessons were created with ♥️ by [Jim Bennett](https://GitHub.com/JimBobBennett)
+
+---
+
+**Disclaimer**:
+This document has been translated using the AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). While we aim for accuracy, please note that automated translations may include errors or inaccuracies. The original document in its native language should be regarded as the authoritative source. For critical information, professional human translation is advised. We are not responsible for any misunderstandings or misinterpretations resulting from the use of this translation.
\ No newline at end of file
diff --git a/translations/en/2-farm/lessons/1-predict-plant-growth/README.md b/translations/en/2-farm/lessons/1-predict-plant-growth/README.md
new file mode 100644
index 00000000..bf3bb096
--- /dev/null
+++ b/translations/en/2-farm/lessons/1-predict-plant-growth/README.md
@@ -0,0 +1,133 @@
+
+ This code extracts the temperature from the telemetry message and gets the current date and time. It then appends a new row to the CSV file with the date and temperature.
+
+1. Run the server code and ensure it is receiving telemetry from your IoT device. Check the CSV file to confirm that temperature data is being saved correctly.
+
+✅ Why do you think saving data in a CSV file might be useful for farmers?
+
+### Task - calculate GDD from the temperature data
+
+Once the temperature data is saved in a CSV file, you can calculate the GDD for each day and total it up to determine the cumulative GDD for a crop.
+
+1. Write a Python script to read the CSV file and calculate the GDD for each day. Use the simplified GDD formula:
+
+ ```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
+ ```
+
+ Replace `T_max`, `T_min`, and `T_base` with the appropriate values for your crop.
+
+1. Add code to sum up the daily GDD values to calculate the total GDD so far.
+
+1. Print the daily GDD values and the total GDD to the console.
+
+✅ Why is it important to calculate cumulative GDD for crops?
+
+### Task - notify when crops are close to maturity
+
+Once you have the total GDD, you can add logic to notify the farmer when the crop is close to maturity. For example:
+
+1. Set a threshold for the GDD required for maturity based on the crop you are monitoring.
+
+2. Add a condition to check if the total GDD is within a certain range of the maturity threshold (e.g., 90% of the required GDD).
+
+3. If the condition is met, print a message or send a notification to alert the farmer.
+
+✅ How could automated notifications improve farming efficiency?
+
+## Post-lecture quiz
+
+[Post-lecture quiz](https://black-meadow-040d15503.1.azurestaticapps.net/quiz/10)
+
+## Review & Self-study
+
+In this lesson, you learned how temperature affects plant growth and how to calculate growing degree days (GDD) using temperature data. You also explored how IoT devices can help farmers monitor and predict crop maturity.
+
+✅ Research other environmental factors that can be monitored using IoT devices to improve farming practices.
+
+## Assignment
+
+1. Use your IoT device to measure temperature data for a few days.
+2. Save the data to a CSV file and calculate the GDD for a crop of your choice.
+3. Determine how close the crop is to maturity based on the GDD calculation.
+4. Write a short report summarizing your findings and how this data could help a farmer.
+This code opens the CSV file and appends a new row at the end. The row includes the current date and time formatted in a human-readable way, followed by the temperature received from the IoT device. The data is stored in [ISO 8601 format](https://wikipedia.org/wiki/ISO_8601) with the timezone, but without microseconds.
+
+1. Run this code as before, ensuring your IoT device is sending data. A CSV file named `temperature.csv` will be created in the same folder. If you open it, you will see date/times and temperature measurements:
+
+ ```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. Let this code run for a while to collect data. Ideally, you should run it for an entire day to gather enough data for GDD calculations.
+
+
+> 💁 If you are using a Virtual IoT Device, check the random checkbox and set a range to avoid getting the same temperature every time the temperature value is returned.
+ 
+
+ > 💁 If you want to run this for an entire day, make sure the computer running your server code doesn’t go to sleep. You can do this by adjusting your power settings or using something like [this keep system active Python script](https://github.com/jaqsparow/keep-system-active).
+
+> 💁 You can find this code in the [code-server/temperature-sensor-server](../../../../../2-farm/lessons/1-predict-plant-growth/code-server/temperature-sensor-server) folder.
+
+### Task - calculate GDD using the stored data
+
+Once the server has captured temperature data, you can calculate the GDD for a plant.
+
+The steps to do this manually are:
+
+1. Determine the base temperature for the plant. For example, the base temperature for strawberries is 10°C.
+
+1. From the `temperature.csv` file, find the highest and lowest temperatures for the day.
+
+1. Use the GDD formula provided earlier to calculate the GDD.
+
+For example, if the highest temperature for the day is 25°C and the lowest is 12°C:
+
+
+
+* 25 + 12 = 37
+* 37 / 2 = 18.5
+* 18.5 - 10 = 8.5
+
+Thus, the strawberries have received **8.5** GDD. Since strawberries need about 250 GDD to bear fruit, there’s still some time to go.
+
+---
+
+## 🚀 Challenge
+
+Plants need more than just heat to grow. What other factors are necessary?
+
+For these factors, investigate whether there are sensors that can measure them. Are there actuators to control these levels? How would you design one or more IoT devices to optimize plant growth?
+
+## Post-lecture quiz
+
+[Post-lecture quiz](https://black-meadow-040d15503.1.azurestaticapps.net/quiz/10)
+
+## Review & Self Study
+
+* Learn more about digital agriculture on the [Digital Agriculture Wikipedia page](https://wikipedia.org/wiki/Digital_agriculture). Also, read about precision agriculture on the [Precision Agriculture Wikipedia page](https://wikipedia.org/wiki/Precision_agriculture).
+* The full growing degree days calculation is more complex than the simplified version provided here. Learn about the more detailed equation and how to handle temperatures below the baseline on the [Growing Degree Day Wikipedia page](https://wikipedia.org/wiki/Growing_degree-day).
+* Food scarcity may become a problem in the future if we continue using the same farming methods. Explore advanced farming techniques in this [Hi-Tech Farms of Future video on YouTube](https://www.youtube.com/watch?v=KIEOuKD9KX8).
+
+## Assignment
+
+[Visualize GDD data using a Jupyter Notebook](assignment.md)
+
+---
+
+**Disclaimer**:
+This document has been translated using the AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). While we aim for accuracy, please note that automated translations may include errors or inaccuracies. The original document in its native language should be regarded as the authoritative source. For critical information, professional human translation is advised. We are not responsible for any misunderstandings or misinterpretations resulting from the use of this translation.
\ No newline at end of file
diff --git a/translations/en/2-farm/lessons/1-predict-plant-growth/assignment.md b/translations/en/2-farm/lessons/1-predict-plant-growth/assignment.md
new file mode 100644
index 00000000..a7b88249
--- /dev/null
+++ b/translations/en/2-farm/lessons/1-predict-plant-growth/assignment.md
@@ -0,0 +1,57 @@
+
+# Visualize GDD Data Using a Jupyter Notebook
+
+## Instructions
+
+In this lesson, you collected GDD data using an IoT sensor. To obtain reliable GDD data, you need to gather data over several days. Tools like [Jupyter Notebooks](https://jupyter.org) can help you analyze the data by visualizing temperature trends and calculating GDD.
+
+Start by collecting data for a few days. Ensure that your server code runs continuously while your IoT device is active. You can achieve this by adjusting your power management settings or using a script like [this keep system active Python script](https://github.com/jaqsparow/keep-system-active).
+
+Once you have the temperature data, you can use the Jupyter Notebook provided in this repository to visualize it and calculate GDD. Jupyter notebooks combine code and instructions in sections called *cells*, often written in Python. You can follow the instructions and execute each block of code step by step. Additionally, you can modify the code. For instance, in this notebook, you can adjust the base temperature used to calculate the GDD for your specific plant.
+
+1. Create a folder named `gdd-calculation`.
+
+1. Download the [gdd.ipynb](./code-notebook/gdd.ipynb) file and place it in the `gdd-calculation` folder.
+
+1. Copy the `temperature.csv` file generated by the MQTT server.
+
+1. Set up a new Python virtual environment in the `gdd-calculation` folder.
+
+1. Install the necessary pip packages for Jupyter notebooks, along with libraries for managing and plotting the data:
+
+ ```sh
+ pip install --upgrade pip
+ pip install pandas
+ pip install matplotlib
+ pip install jupyter
+ ```
+
+1. Launch the notebook in Jupyter:
+
+ ```sh
+ jupyter notebook gdd.ipynb
+ ```
+
+ Jupyter will start and open the notebook in your browser. Follow the instructions in the notebook to visualize the recorded temperatures and calculate the growing degree days.
+
+ 
+
+## Rubric
+
+| Criteria | Exemplary | Adequate | Needs Improvement |
+| ------------------ | ------------------------------------------- | ---------------------------------- | ------------------------- |
+| Capture data | Capture at least 2 complete days of data | Capture at least 1 complete day | Capture some data |
+| Calculate GDD | Successfully run the notebook and calculate GDD | Successfully run the notebook | Not able to run the notebook |
+
+---
+
+**Disclaimer**:
+This document has been translated using the AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). While we aim for accuracy, please note that automated translations may include errors or inaccuracies. The original document in its native language should be regarded as the authoritative source. For critical information, professional human translation is advised. We are not responsible for any misunderstandings or misinterpretations resulting from the use of this translation.
\ No newline at end of file
diff --git a/translations/en/2-farm/lessons/1-predict-plant-growth/code-notebook/gdd.ipynb b/translations/en/2-farm/lessons/1-predict-plant-growth/code-notebook/gdd.ipynb
new file mode 100644
index 00000000..c6c92060
--- /dev/null
+++ b/translations/en/2-farm/lessons/1-predict-plant-growth/code-notebook/gdd.ipynb
@@ -0,0 +1,167 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Growing Degree Days\n",
+ "\n",
+ "This notebook loads temperature data stored in a CSV file and analyzes it. It plots the temperatures, displays the highest and lowest values for each day, and calculates the GDD.\n",
+ "\n",
+ "To use this notebook:\n",
+ "\n",
+ "* Place the `temperature.csv` file in the same folder as this notebook.\n",
+ "* Run all the cells using the **▶︎ Run** button above. This will execute the selected cell and then proceed to the next one.\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "In the cell below, set `base_temperature` to the base temperature of the plant.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "base_temperature = 10"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "The CSV file now needs to be loaded, using 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": [
+ "Once the data has been read it can be grouped by the `date` column, and the minimum and maximum temperatures extracted for each date.\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": [
+ "The GDD can be calculated using the standard GDD equation\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**Disclaimer**: \nThis document has been translated using the AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). While we aim for accuracy, please note that automated translations may include errors or inaccuracies. The original document in its native language should be regarded as the authoritative source. For critical information, professional human translation is advised. We are not responsible for any misunderstandings or misinterpretations resulting from the use of this translation.\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-28T20:46:55+00:00",
+ "source_file": "2-farm/lessons/1-predict-plant-growth/code-notebook/gdd.ipynb",
+ "language_code": "en"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
\ No newline at end of file
diff --git a/translations/en/2-farm/lessons/1-predict-plant-growth/pi-temp.md b/translations/en/2-farm/lessons/1-predict-plant-growth/pi-temp.md
new file mode 100644
index 00000000..49f895f5
--- /dev/null
+++ b/translations/en/2-farm/lessons/1-predict-plant-growth/pi-temp.md
@@ -0,0 +1,125 @@
+
+# Measure temperature - Raspberry Pi
+
+In this part of the lesson, you will add a temperature sensor to your Raspberry Pi.
+
+## Hardware
+
+The sensor you'll use is a [DHT11 humidity and temperature sensor](https://www.seeedstudio.com/Grove-Temperature-Humidity-Sensor-DHT11.html), which combines two sensors in one package. This sensor is quite popular, and many commercially available sensors combine temperature, humidity, and sometimes atmospheric pressure. The temperature sensor component is a negative temperature coefficient (NTC) thermistor, meaning its resistance decreases as the temperature increases.
+
+This is a digital sensor, so it has an onboard ADC that generates a digital signal containing the temperature and humidity data, which the microcontroller can read.
+
+### Connect the temperature sensor
+
+The Grove temperature sensor can be connected to the Raspberry Pi.
+
+#### Task
+
+Connect the temperature sensor.
+
+
+
+1. Insert one end of a Grove cable into the socket on the humidity and temperature sensor. It will only fit one way.
+
+1. With the Raspberry Pi powered off, connect the other end of the Grove cable to the digital socket marked **D5** on the Grove Base hat attached to the Pi. This socket is the second from the left in the row of sockets next to the GPIO pins.
+
+
+
+## Program the temperature sensor
+
+The device can now be programmed to use the attached temperature sensor.
+
+### Task
+
+Program the device.
+
+1. Power up the Pi and wait for it to boot.
+
+1. Launch VS Code, either directly on the Pi or by connecting via the Remote SSH extension.
+
+ > ⚠️ You can refer to [the instructions for setting up and launching VS Code in lesson 1 if needed](../../../1-getting-started/lessons/1-introduction-to-iot/pi.md).
+
+1. From the terminal, create a new folder in the `pi` user's home directory called `temperature-sensor`. Create a file in this folder called `app.py`:
+
+ ```sh
+ mkdir temperature-sensor
+ cd temperature-sensor
+ touch app.py
+ ```
+
+1. Open this folder in VS Code.
+
+1. To use the temperature and humidity sensor, an additional Pip package needs to be installed. From the Terminal in VS Code, run the following command to install this Pip package on the Pi:
+
+ ```sh
+ pip3 install seeed-python-dht
+ ```
+
+1. Add the following code to the `app.py` file to import the required libraries:
+
+ ```python
+ import time
+ from seeed_dht import DHT
+ ```
+
+ The `from seeed_dht import DHT` statement imports the `DHT` sensor class to interact with a Grove temperature sensor from the `seeed_dht` module.
+
+1. Add the following code after the code above to create an instance of the class that manages the temperature sensor:
+
+ ```python
+ sensor = DHT("11", 5)
+ ```
+
+ This declares an instance of the `DHT` class that manages the **D**igital **H**umidity and **T**emperature sensor. The first parameter specifies that the sensor being used is the *DHT11* sensor—the library you are using supports other variants of this sensor. The second parameter specifies that the sensor is connected to digital port `D5` on the Grove base hat.
+
+ > ✅ Remember, all the sockets have unique pin numbers. Pins 0, 2, 4, and 6 are analog pins, while pins 5, 16, 18, 22, 24, and 26 are digital pins.
+
+1. Add an infinite loop after the code above to poll the temperature sensor value and print it to the console:
+
+ ```python
+ while True:
+ _, temp = sensor.read()
+ print(f'Temperature {temp}°C')
+ ```
+
+ The call to `sensor.read()` returns a tuple containing humidity and temperature. You only need the temperature value, so the humidity is ignored. The temperature value is then printed to the console.
+
+1. Add a small sleep of ten seconds at the end of the `loop` since temperature levels don't need to be checked continuously. Adding a sleep reduces the device's power consumption.
+
+ ```python
+ time.sleep(10)
+ ```
+
+1. From the VS Code Terminal, run the following command to execute your Python app:
+
+ ```sh
+ python3 app.py
+ ```
+
+ You should see temperature values being output to the console. Use something to warm the sensor, such as pressing your thumb on it or using a fan, to observe the values change:
+
+ ```output
+ pi@raspberrypi:~/temperature-sensor $ python3 app.py
+ Temperature 26°C
+ Temperature 26°C
+ Temperature 28°C
+ Temperature 30°C
+ Temperature 32°C
+ ```
+
+> 💁 You can find this code in the [code-temperature/pi](../../../../../2-farm/lessons/1-predict-plant-growth/code-temperature/pi) folder.
+
+😀 Your temperature sensor program was a success!
+
+---
+
+**Disclaimer**:
+This document has been translated using the AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). While we aim for accuracy, please note that automated translations may include errors or inaccuracies. The original document in its native language should be regarded as the authoritative source. For critical information, professional human translation is advised. We are not responsible for any misunderstandings or misinterpretations resulting from the use of this translation.
\ No newline at end of file
diff --git a/translations/en/2-farm/lessons/1-predict-plant-growth/single-board-computer-temp-publish.md b/translations/en/2-farm/lessons/1-predict-plant-growth/single-board-computer-temp-publish.md
new file mode 100644
index 00000000..4a795bf8
--- /dev/null
+++ b/translations/en/2-farm/lessons/1-predict-plant-growth/single-board-computer-temp-publish.md
@@ -0,0 +1,71 @@
+
+# Publish temperature - Virtual IoT Hardware and Raspberry Pi
+
+In this part of the lesson, you will send the temperature values detected by the Raspberry Pi or Virtual IoT Device via MQTT so they can later be used to calculate GDD.
+
+## Publish the temperature
+
+After reading the temperature, it can be sent via MQTT to some 'server' code that will process the values and store them for GDD calculations.
+
+### Task - publish the temperature
+
+Program the device to send the temperature data.
+
+1. Open the `temperature-sensor` app project if it’s not already open.
+
+1. Repeat the steps you followed in lesson 4 to connect to MQTT and send telemetry. You will use the same public Mosquitto broker.
+
+ The steps are:
+
+ - Add the MQTT pip package.
+ - Add the code to connect to the MQTT broker.
+ - Add the code to send telemetry.
+
+ > ⚠️ Refer to the [instructions for connecting to MQTT](../../../1-getting-started/lessons/4-connect-internet/single-board-computer-mqtt.md) and the [instructions for sending telemetry](../../../1-getting-started/lessons/4-connect-internet/single-board-computer-telemetry.md) from lesson 4 if needed.
+
+1. Ensure the `client_name` matches the name of this project:
+
+ ```python
+ client_name = id + 'temperature_sensor_client'
+ ```
+
+1. For telemetry, instead of sending a light value, send the temperature value read from the DHT sensor as a property in the JSON document called `temperature`:
+
+ ```python
+ _, temp = sensor.read()
+ telemetry = json.dumps({'temperature' : temp})
+ ```
+
+1. The temperature doesn’t need to be read frequently—it won’t change much in a short period. Set the `time.sleep` to 10 minutes:
+
+ ```cpp
+ time.sleep(10 * 60);
+ ```
+
+ > 💁 The `sleep` function takes the time in seconds, so to make it easier to understand, the value is passed as the result of a calculation. Since there are 60 seconds in a minute, 10 x (60 seconds per minute) results in a 10-minute delay.
+
+1. Run the code the same way you ran the code in the previous part of the assignment. If you’re using a virtual IoT device, ensure the CounterFit app is running and the humidity and temperature sensors are set up on the correct pins.
+
+ ```output
+ pi@raspberrypi:~/temperature-sensor $ python3 app.py
+ MQTT connected!
+ Sending telemetry {"temperature": 25}
+ Sending telemetry {"temperature": 25}
+ ```
+
+> 💁 You can find this code in the [code-publish-temperature/virtual-device](../../../../../2-farm/lessons/1-predict-plant-growth/code-publish-temperature/virtual-device) folder or the [code-publish-temperature/pi](../../../../../2-farm/lessons/1-predict-plant-growth/code-publish-temperature/pi) folder.
+
+😀 You’ve successfully sent the temperature as telemetry from your device.
+
+---
+
+**Disclaimer**:
+This document has been translated using the AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). While we aim for accuracy, please note that automated translations may include errors or inaccuracies. The original document in its native language should be regarded as the authoritative source. For critical information, professional human translation is advised. We are not responsible for any misunderstandings or misinterpretations resulting from the use of this translation.
\ No newline at end of file
diff --git a/translations/en/2-farm/lessons/1-predict-plant-growth/virtual-device-temp.md b/translations/en/2-farm/lessons/1-predict-plant-growth/virtual-device-temp.md
new file mode 100644
index 00000000..2a8cd1aa
--- /dev/null
+++ b/translations/en/2-farm/lessons/1-predict-plant-growth/virtual-device-temp.md
@@ -0,0 +1,154 @@
+
+# Measure temperature - Virtual IoT Hardware
+
+In this part of the lesson, you will add a temperature sensor to your virtual IoT device.
+
+## Virtual Hardware
+
+The virtual IoT device will use a simulated Grove Digital Humidity and Temperature sensor. This keeps this lab consistent with using a Raspberry Pi with a physical Grove DHT11 sensor.
+
+The sensor combines a **temperature sensor** with a **humidity sensor**, but in this lab, you will focus only on the temperature sensor component. In a physical IoT device, the temperature sensor would be a [thermistor](https://wikipedia.org/wiki/Thermistor), which measures temperature by detecting changes in resistance as the temperature changes. Temperature sensors are typically digital sensors that internally convert the measured resistance into a temperature in degrees Celsius (or Kelvin, or Fahrenheit).
+
+### Add the sensors to CounterFit
+
+To use a virtual humidity and temperature sensor, you need to add the two sensors to the CounterFit app.
+
+#### Task - Add the sensors to CounterFit
+
+Add the humidity and temperature sensors to the CounterFit app.
+
+1. Create a new Python app on your computer in a folder called `temperature-sensor` with a single file named `app.py`, set up a Python virtual environment, and add the CounterFit pip packages.
+
+ > ⚠️ You can refer to [the instructions for creating and setting up a CounterFit Python project in lesson 1 if needed](../../../1-getting-started/lessons/1-introduction-to-iot/virtual-device.md).
+
+1. Install an additional pip package to add a CounterFit shim for the DHT11 sensor. Make sure you install this from a terminal with the virtual environment activated.
+
+ ```sh
+ pip install counterfit-shims-seeed-python-dht
+ ```
+
+1. Ensure the CounterFit web app is running.
+
+1. Create a humidity sensor:
+
+ 1. In the *Create sensor* box in the *Sensors* pane, open the *Sensor type* dropdown and select *Humidity*.
+
+ 1. Leave the *Units* set to *Percentage*.
+
+ 1. Ensure the *Pin* is set to *5*.
+
+ 1. Click the **Add** button to create the humidity sensor on Pin 5.
+
+ 
+
+ The humidity sensor will be created and appear in the sensors list.
+
+ 
+
+1. Create a temperature sensor:
+
+ 1. In the *Create sensor* box in the *Sensors* pane, open the *Sensor type* dropdown and select *Temperature*.
+
+ 1. Leave the *Units* set to *Celsius*.
+
+ 1. Ensure the *Pin* is set to *6*.
+
+ 1. Click the **Add** button to create the temperature sensor on Pin 6.
+
+ 
+
+ The temperature sensor will be created and appear in the sensors list.
+
+ 
+
+## Program the temperature sensor app
+
+The temperature sensor app can now be programmed using the CounterFit sensors.
+
+### Task - Program the temperature sensor app
+
+Program the temperature sensor app.
+
+1. Ensure the `temperature-sensor` app is open in VS Code.
+
+1. Open the `app.py` file.
+
+1. Add the following code to the top of `app.py` to connect the app to CounterFit:
+
+ ```python
+ from counterfit_connection import CounterFitConnection
+ CounterFitConnection.init('127.0.0.1', 5000)
+ ```
+
+1. Add the following code to the `app.py` file to import the required libraries:
+
+ ```python
+ import time
+ from counterfit_shims_seeed_python_dht import DHT
+ ```
+
+ The `from seeed_dht import DHT` statement imports the `DHT` sensor class to interact with a virtual Grove temperature sensor using a shim from the `counterfit_shims_seeed_python_dht` module.
+
+1. Add the following code after the code above to create an instance of the class that manages the virtual humidity and temperature sensor:
+
+ ```python
+ sensor = DHT("11", 5)
+ ```
+
+ This declares an instance of the `DHT` class that manages the virtual **D**igital **H**umidity and **T**emperature sensor. The first parameter specifies that the sensor being used is a virtual *DHT11* sensor. The second parameter specifies that the sensor is connected to port `5`.
+
+ > 💁 CounterFit simulates this combined humidity and temperature sensor by connecting to two sensors: a humidity sensor on the pin specified when the `DHT` class is created, and a temperature sensor that runs on the next pin. If the humidity sensor is on pin 5, the shim expects the temperature sensor to be on pin 6.
+
+1. Add an infinite loop after the code above to poll the temperature sensor value and print it to the console:
+
+ ```python
+ while True:
+ _, temp = sensor.read()
+ print(f'Temperature {temp}°C')
+ ```
+
+ The call to `sensor.read()` returns a tuple of humidity and temperature. You only need the temperature value, so the humidity is ignored. The temperature value is then printed to the console.
+
+1. Add a small sleep of ten seconds at the end of the `loop` since temperature levels don't need to be checked continuously. A sleep reduces the power consumption of the device.
+
+ ```python
+ time.sleep(10)
+ ```
+
+1. From the VS Code Terminal with an activated virtual environment, run the following to execute your Python app:
+
+ ```sh
+ python app.py
+ ```
+
+1. From the CounterFit app, change the value of the temperature sensor that will be read by the app. You can do this in one of two ways:
+
+ * Enter a number in the *Value* box for the temperature sensor, then click the **Set** button. The number you enter will be the value returned by the sensor.
+
+ * Check the *Random* checkbox, and enter a *Min* and *Max* value, then click the **Set** button. Every time the sensor reads a value, it will read a random number between *Min* and *Max*.
+
+ You should see the values you set appearing in the console. Change the *Value* or the *Random* settings to see the value change.
+
+ ```output
+ (.venv) ➜ temperature-sensor python app.py
+ Temperature 28.25°C
+ Temperature 30.71°C
+ Temperature 25.17°C
+ ```
+
+> 💁 You can find this code in the [code-temperature/virtual-device](../../../../../2-farm/lessons/1-predict-plant-growth/code-temperature/virtual-device) folder.
+
+😀 Your temperature sensor program was a success!
+
+---
+
+**Disclaimer**:
+This document has been translated using the AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). While we aim for accuracy, please note that automated translations may include errors or inaccuracies. The original document in its native language should be regarded as the authoritative source. For critical information, professional human translation is advised. We are not responsible for any misunderstandings or misinterpretations resulting from the use of this translation.
\ No newline at end of file
diff --git a/translations/en/2-farm/lessons/1-predict-plant-growth/wio-terminal-temp-publish.md b/translations/en/2-farm/lessons/1-predict-plant-growth/wio-terminal-temp-publish.md
new file mode 100644
index 00000000..0127ed2f
--- /dev/null
+++ b/translations/en/2-farm/lessons/1-predict-plant-growth/wio-terminal-temp-publish.md
@@ -0,0 +1,82 @@
+
+# Publish temperature - Wio Terminal
+
+In this part of the lesson, you will send the temperature values detected by the Wio Terminal via MQTT so they can later be used to calculate GDD.
+
+## Publish the temperature
+
+After reading the temperature, it can be sent via MQTT to some 'server' code that will process the values and store them for GDD calculations. Microcontrollers don't inherently fetch time from the Internet or track it using a real-time clock; they need to be programmed to do so, provided they have the required hardware.
+
+To keep things simple for this lesson, the time won't be sent along with the sensor data. Instead, the server code can add the timestamp when it receives the messages.
+
+### Task
+
+Program the device to send the temperature data.
+
+1. Open the `temperature-sensor` Wio Terminal project.
+
+1. Repeat the steps from lesson 4 to connect to MQTT and send telemetry. You will use the same public Mosquitto broker.
+
+ The steps are as follows:
+
+ - Add the Seeed WiFi and MQTT libraries to the `.ini` file.
+ - Include the configuration file and code to connect to WiFi.
+ - Add the code to connect to the MQTT broker.
+ - Add the code to send telemetry.
+
+ > ⚠️ Refer to the [instructions for connecting to MQTT](../../../1-getting-started/lessons/4-connect-internet/wio-terminal-mqtt.md) and the [instructions for sending telemetry](../../../1-getting-started/lessons/4-connect-internet/wio-terminal-telemetry.md) from lesson 4 if needed.
+
+1. Ensure the `CLIENT_NAME` in the `config.h` header file matches this project:
+
+ ```cpp
+ const string CLIENT_NAME = ID + "temperature_sensor_client";
+ ```
+
+1. For telemetry, instead of sending a light value, send the temperature value read from the DHT sensor in a property called `temperature` within the JSON document by modifying the `loop` function in `main.cpp`:
+
+ ```cpp
+ float temp_hum_val[2] = {0};
+ dht.readTempAndHumidity(temp_hum_val);
+
+ DynamicJsonDocument doc(1024);
+ doc["temperature"] = temp_hum_val[1];
+ ```
+
+1. The temperature doesn't need to be read frequently since it doesn't change much in a short period. Set the `delay` in the `loop` function to 10 minutes:
+
+ ```cpp
+ delay(10 * 60 * 1000);
+ ```
+
+ > 💁 The `delay` function takes time in milliseconds. To make it easier to understand, the value is calculated as follows: 1,000ms in a second, 60 seconds in a minute, so 10 x (60 seconds per minute) x (1,000ms per second) results in a 10-minute delay.
+
+1. Upload the code to your Wio Terminal and use the serial monitor to observe the temperature being sent to the MQTT broker.
+
+ ```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}
+ ```
+
+> 💁 You can find this code in the [code-publish-temperature/wio-terminal](../../../../../2-farm/lessons/1-predict-plant-growth/code-publish-temperature/wio-terminal) folder.
+
+😀 Congratulations! You have successfully sent the temperature as telemetry from your device.
+
+---
+
+**Disclaimer**:
+This document has been translated using the AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). While we aim for accuracy, please note that automated translations may include errors or inaccuracies. The original document in its native language should be regarded as the authoritative source. For critical information, professional human translation is advised. We are not responsible for any misunderstandings or misinterpretations resulting from the use of this translation.
\ No newline at end of file
diff --git a/translations/en/2-farm/lessons/1-predict-plant-growth/wio-terminal-temp.md b/translations/en/2-farm/lessons/1-predict-plant-growth/wio-terminal-temp.md
new file mode 100644
index 00000000..fe6997ac
--- /dev/null
+++ b/translations/en/2-farm/lessons/1-predict-plant-growth/wio-terminal-temp.md
@@ -0,0 +1,143 @@
+
+# Measure temperature - Wio Terminal
+
+In this part of the lesson, you will add a temperature sensor to your Wio Terminal and read temperature values from it.
+
+## Hardware
+
+The Wio Terminal requires a temperature sensor.
+
+The sensor you'll use is a [DHT11 humidity and temperature sensor](https://www.seeedstudio.com/Grove-Temperature-Humidity-Sensor-DHT11.html), which combines two sensors in one package. This is a fairly popular sensor, with many commercially available options that combine temperature, humidity, and sometimes atmospheric pressure. The temperature sensor component is a negative temperature coefficient (NTC) thermistor, meaning its resistance decreases as the temperature increases.
+
+This is a digital sensor, so it has an onboard ADC that generates a digital signal containing the temperature and humidity data, which the microcontroller can read.
+
+### Connect the temperature sensor
+
+The Grove temperature sensor can be connected to the Wio Terminal's digital port.
+
+#### Task - connect the temperature sensor
+
+Connect the temperature sensor.
+
+
+
+1. Insert one end of a Grove cable into the socket on the humidity and temperature sensor. It will only fit in one way.
+
+1. With the Wio Terminal disconnected from your computer or other power source, connect the other end of the Grove cable to the right-hand Grove socket on the Wio Terminal as you face the screen. This is the socket farthest from the power button.
+
+
+
+## Program the temperature sensor
+
+The Wio Terminal can now be programmed to use the attached temperature sensor.
+
+### Task - program the temperature sensor
+
+Program the device.
+
+1. Create a new Wio Terminal project using PlatformIO. Name this project `temperature-sensor`. Add code in the `setup` function to configure the serial port.
+
+ > ⚠️ You can refer to [the instructions for creating a PlatformIO project in project 1, lesson 1 if needed](../../../1-getting-started/lessons/1-introduction-to-iot/wio-terminal.md#create-a-platformio-project).
+
+1. Add a library dependency for the Seeed Grove Humidity and Temperature sensor library to the project's `platformio.ini` file:
+
+ ```ini
+ lib_deps =
+ seeed-studio/Grove Temperature And Humidity Sensor @ 1.0.1
+ ```
+
+ > ⚠️ You can refer to [the instructions for adding libraries to a PlatformIO project in project 1, lesson 4 if needed](../../../1-getting-started/lessons/4-connect-internet/wio-terminal-mqtt.md#install-the-wifi-and-mqtt-arduino-libraries).
+
+1. Add the following `#include` directives to the top of the file, under the existing `#include `:
+
+ ```cpp
+ #include
+ #include
+ ```
+
+ This imports the files needed to interact with the sensor. The `DHT.h` header file contains the code for the sensor itself, and adding the `SPI.h` header ensures the code needed to communicate with the sensor is included when the app is compiled.
+
+1. Before the `setup` function, declare the DHT sensor:
+
+ ```cpp
+ DHT dht(D0, DHT11);
+ ```
+
+ This declares an instance of the `DHT` class that manages the **D**igital **H**umidity and **T**emperature sensor. It is connected to port `D0`, the right-hand Grove socket on the Wio Terminal. The second parameter specifies that the sensor being used is the *DHT11* sensor—the library you are using supports other variants of this sensor.
+
+1. In the `setup` function, add code to set up the serial connection:
+
+ ```cpp
+ void setup()
+ {
+ Serial.begin(9600);
+
+ while (!Serial)
+ ; // Wait for Serial to be ready
+
+ delay(1000);
+ }
+ ```
+
+1. At the end of the `setup` function, after the last `delay`, add a call to start the DHT sensor:
+
+ ```cpp
+ dht.begin();
+ ```
+
+1. In the `loop` function, add code to call the sensor and print the temperature to the serial port:
+
+ ```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);
+ }
+ ```
+
+ This code declares an empty array of two floats and passes it to the `readTempAndHumidity` method on the `DHT` instance. This method populates the array with two values: the humidity is stored in the 0th item in the array (remember, in C++ arrays are 0-based, so the 0th item is the 'first' item), and the temperature is stored in the 1st item.
+
+ The temperature is read from the 1st item in the array and printed to the serial port.
+
+ > 🇺🇸 The temperature is read in Celsius. For Americans, to convert this to Fahrenheit, divide the Celsius value by 5, multiply by 9, and then add 32. For example, a temperature reading of 20°C becomes ((20/5)*9) + 32 = 68°F.
+
+1. Build and upload the code to the Wio Terminal.
+
+ > ⚠️ You can refer to [the instructions for creating a PlatformIO project in project 1, lesson 1 if needed](../../../1-getting-started/lessons/1-introduction-to-iot/wio-terminal.md#write-the-hello-world-app).
+
+1. Once uploaded, you can monitor the temperature using the serial monitor:
+
+ ```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
+ ```
+
+> 💁 You can find this code in the [code-temperature/wio-terminal](../../../../../2-farm/lessons/1-predict-plant-growth/code-temperature/wio-terminal) folder.
+
+😀 Your temperature sensor program was a success!
+
+---
+
+**Disclaimer**:
+This document has been translated using the AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). While we aim for accuracy, please note that automated translations may include errors or inaccuracies. The original document in its native language should be regarded as the authoritative source. For critical information, professional human translation is advised. We are not responsible for any misunderstandings or misinterpretations resulting from the use of this translation.
\ No newline at end of file
diff --git a/translations/en/2-farm/lessons/2-detect-soil-moisture/README.md b/translations/en/2-farm/lessons/2-detect-soil-moisture/README.md
new file mode 100644
index 00000000..2801f58a
--- /dev/null
+++ b/translations/en/2-farm/lessons/2-detect-soil-moisture/README.md
@@ -0,0 +1,171 @@
+
+C, pronounced *I-squared-C*, is a multi-controller, multi-peripheral protocol, where any connected device can act as a controller or peripheral, communicating over the I²C bus (the name for the communication system that transfers data). Data is sent as addressed packets, with each packet containing the address of the connected device it is intended for.
+
+> 💁 This model used to be referred to as master/slave, but this terminology is being phased out due to its association with slavery. The [Open Source Hardware Association has adopted controller/peripheral](https://www.oshwa.org/a-resolution-to-redefine-spi-signal-names/), but you may still encounter references to the old terminology.
+
+Devices have an address that is used when they connect to the I²C bus, and this address is usually hard-coded on the device. For example, each type of Grove sensor from Seeed has the same address for its type—so all light sensors share the same address, all buttons share the same address (different from the light sensor address), and so on. Some devices allow you to change the address by adjusting jumper settings or soldering pins together.
+
+I²C uses a bus made of two main wires, along with two power wires:
+
+| Wire | Name | Description |
+| ---- | --------- | ----------- |
+| SDA | Serial Data | This wire is used for sending data between devices. |
+| SCL | Serial Clock | This wire sends a clock signal at a rate set by the controller. |
+| VCC | Voltage common collector | The power supply for the devices. This is connected to the SDA and SCL wires to provide their power via a pull-up resistor that switches the signal off when no device is acting as the controller. |
+| GND | Ground | This provides a common ground for the electrical circuit. |
+
+
+
+To send data, one device issues a start condition to indicate it is ready to transmit. It then becomes the controller. The controller sends the address of the device it wants to communicate with, along with whether it intends to read or write data. After the data has been transmitted, the controller sends a stop condition to signal that it has finished. At this point, another device can take over as the controller and send or receive data.
+
+### I2C Speed Modes
+
+I2C has speed limits and operates in three different modes with fixed speeds. The fastest mode is High-Speed mode, which can reach a maximum speed of 3.4 Mbps (megabits per second), though very few devices support this speed. For example, the Raspberry Pi is limited to Fast mode at 400 Kbps (kilobits per second). Standard mode operates at 100 Kbps.
+
+> 💁 If you're using a Raspberry Pi with a Grove Base Hat as your IoT hardware, you'll notice several I2C sockets on the board. These can be used to communicate with I2C sensors. Analog Grove sensors also use I2C with an ADC to convert analog values into digital data. For instance, the light sensor you used simulated an analog pin, but the value was transmitted over I2C since the Raspberry Pi only supports digital pins.
+
+### Universal Asynchronous Receiver-Transmitter (UART)
+
+UART is a physical communication protocol that allows two devices to exchange data. Each device has two communication pins: transmit (Tx) and receive (Rx). The Tx pin of one device connects to the Rx pin of the other, and vice versa, enabling bidirectional communication.
+
+* Device 1 sends data from its Tx pin, which is received by Device 2 on its Rx pin.
+* Device 1 receives data on its Rx pin, which is sent by Device 2 from its Tx pin.
+
+
+
+> 🎓 Data is transmitted one bit at a time, a method known as *serial* communication. Most operating systems and microcontrollers have *serial ports*, which are connections that can send and receive serial data and are accessible to your code.
+
+UART devices operate at a specific [baud rate](https://wikipedia.org/wiki/Symbol_rate) (also called the Symbol rate), which determines the speed of data transmission in bits per second. A common baud rate is 9,600, meaning 9,600 bits (0s and 1s) are transmitted each second.
+
+UART uses start and stop bits to frame data. A start bit signals the beginning of a byte (8 bits) of data, and a stop bit marks its end.
+
+While UART speed depends on hardware, even the fastest implementations typically don't exceed 6.5 Mbps (megabits per second).
+
+You can use UART over GPIO pins by designating one pin as Tx and another as Rx, then connecting these to another device.
+
+> 💁 If you're using a Raspberry Pi with a Grove Base Hat as your IoT hardware, you'll find a UART socket on the board for communicating with sensors that use the UART protocol.
+
+### Serial Peripheral Interface (SPI)
+
+SPI is designed for short-distance communication, such as between a microcontroller and a storage device like flash memory. It follows a controller/peripheral model, where a single controller (usually the IoT device's processor) communicates with multiple peripherals. The controller manages communication by selecting a peripheral and sending or requesting data.
+
+> 💁 Similar to I2C, the terms "controller" and "peripheral" are recent updates, so you might encounter older terminology in some resources.
+
+SPI controllers use three shared wires and one additional wire per peripheral. Peripherals use four wires in total:
+
+| Wire | Name | Description |
+| ---- | --------- | ----------- |
+| COPI | Controller Output, Peripheral Input | Sends data from the controller to the peripheral. |
+| CIPO | Controller Input, Peripheral Output | Sends data from the peripheral to the controller. |
+| SCLK | Serial Clock | Sends a clock signal at a rate determined by the controller. |
+| CS | Chip Select | Each peripheral has its own CS wire, which the controller uses to activate the desired peripheral. |
+
+
+
+The CS wire activates one peripheral at a time, enabling communication over the COPI and CIPO wires. To switch peripherals, the controller deactivates the current CS wire and activates the CS wire for the next peripheral.
+
+SPI is *full-duplex*, meaning the controller can simultaneously send and receive data from the same peripheral using the COPI and CIPO wires. A clock signal on the SCLK wire keeps the devices synchronized, eliminating the need for start and stop bits.
+
+SPI has no defined speed limits, and implementations can often transmit several megabytes of data per second.
+
+IoT developer kits frequently support SPI over GPIO pins. For instance, on a Raspberry Pi, GPIO pins 19, 21, 23, 24, and 26 can be used for SPI.
+
+### Wireless
+
+Some sensors communicate using standard wireless protocols like Bluetooth (especially Bluetooth Low Energy, or BLE), LoRaWAN (a **Lo**ng **Ra**nge low-power networking protocol), or WiFi. These protocols enable remote sensors that aren't physically connected to an IoT device.
+
+For example, commercial soil moisture sensors measure soil moisture in a field and transmit the data over LoRaWAN to a hub device. The hub processes the data or sends it over the Internet. This setup reduces power consumption and eliminates the need for extensive WiFi networks or long cables.
+
+BLE is commonly used in advanced sensors like fitness trackers. These devices combine multiple sensors and transmit data to an IoT device, such as your phone, via BLE.
+
+✅ Do you have any Bluetooth sensors at home, school, or on your person? Examples include temperature sensors, occupancy sensors, device trackers, and fitness devices.
+
+A popular protocol for commercial devices is Zigbee. Zigbee uses WiFi to create mesh networks, where each device connects to as many nearby devices as possible. This forms a web-like network. When a device needs to send a message to the Internet, it forwards the message to the nearest device, which relays it to others until it reaches a coordinator and is sent online.
+
+> 🐝 The name Zigbee refers to the waggle dance performed by honeybees when they return to their hive.
+
+## Measure the Moisture Levels in Soil
+
+You can measure soil moisture using a soil moisture sensor, an IoT device, and a houseplant or a nearby patch of soil.
+
+### Task - Measure Soil Moisture
+
+Follow the appropriate guide to measure soil moisture with your IoT device:
+
+* [Arduino - Wio Terminal](wio-terminal-soil-moisture.md)
+* [Single-board computer - Raspberry Pi](pi-soil-moisture.md)
+* [Single-board computer - Virtual device](virtual-device-soil-moisture.md)
+
+## Sensor Calibration
+
+Sensors measure electrical properties like resistance or capacitance.
+
+> 🎓 Resistance, measured in ohms (Ω), indicates how much a material opposes the flow of electric current. When voltage is applied, the current depends on the material's resistance. Learn more on the [electrical resistance Wikipedia page](https://wikipedia.org/wiki/Electrical_resistance_and_conductance).
+
+> 🎓 Capacitance, measured in farads (F), is the ability of a component or circuit to store electrical energy. Learn more on the [capacitance Wikipedia page](https://wikipedia.org/wiki/Capacitance).
+
+These raw measurements aren't always useful. For instance, a temperature sensor might give a reading of 22.5 KΩ, which isn't intuitive. Calibration converts these values into meaningful units by matching the sensor's readings to known quantities.
+
+Some sensors are pre-calibrated. For example, the temperature sensor you used earlier was calibrated to return measurements in °C. During manufacturing, the sensor is exposed to known temperatures, and its resistance is measured. This data is used to create a formula that converts resistance (Ω) to temperature (°C).
+
+> 💁 The formula for calculating resistance from temperature is called the [Steinhart–Hart equation](https://wikipedia.org/wiki/Steinhart–Hart_equation).
+
+### Soil Moisture Sensor Calibration
+
+Soil moisture is measured using either gravimetric or volumetric water content:
+
+* Gravimetric: The weight of water per unit weight of soil, measured in kilograms of water per kilogram of dry soil.
+* Volumetric: The volume of water per unit volume of soil, measured in cubic meters of water per cubic meter of dry soil.
+
+> 🇺🇸 In the U.S., these can be measured in pounds or cubic feet due to consistent unit ratios.
+
+Soil moisture sensors measure electrical resistance or capacitance, which varies with both soil moisture and soil type. Calibration involves comparing sensor readings to scientifically measured values. For example, lab-calculated gravimetric soil moisture values can be used to calibrate the sensor, aligning its readings with actual moisture levels.
+
+
+
+The graph above illustrates sensor calibration. Voltage readings are taken from a soil sample, which is then analyzed in a lab. The lab measures the soil's wet and dry weights to calculate moisture content. These data points are plotted, and a line is fitted to the graph. This line is then used to convert sensor readings into accurate soil moisture measurements.
+
+💁 For resistive soil moisture sensors, voltage increases as soil moisture rises. For capacitive sensors, voltage decreases with increasing soil moisture, resulting in a downward-sloping graph.
+
+
+
+The graph above shows how a voltage reading from a soil moisture sensor can be used to determine the actual soil moisture level.
+
+This method allows farmers to take a few lab measurements for calibration and then use IoT devices for rapid soil moisture monitoring.
+
+---
+
+## 🚀 Challenge
+
+Resistive and capacitive soil moisture sensors have distinct differences. What are these differences, and which type (if any) is better for farmers? Does the answer vary between developing and developed countries?
+
+## Post-Lecture Quiz
+
+[Post-lecture quiz](https://black-meadow-040d15503.1.azurestaticapps.net/quiz/12)
+
+## Review & Self-Study
+
+Learn more about the hardware and protocols used by sensors and actuators:
+
+* [GPIO Wikipedia page](https://wikipedia.org/wiki/General-purpose_input/output)
+* [UART Wikipedia page](https://wikipedia.org/wiki/Universal_asynchronous_receiver-transmitter)
+* [SPI Wikipedia page](https://wikipedia.org/wiki/Serial_Peripheral_Interface)
+* [I2C Wikipedia page](https://wikipedia.org/wiki/I²C)
+* [Zigbee Wikipedia page](https://wikipedia.org/wiki/Zigbee)
+
+## Assignment
+
+[Calibrate your sensor](assignment.md)
+
+---
+
+**Disclaimer**:
+This document has been translated using the AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). While we aim for accuracy, please note that automated translations may include errors or inaccuracies. The original document in its native language should be regarded as the authoritative source. For critical information, professional human translation is advised. We are not responsible for any misunderstandings or misinterpretations resulting from the use of this translation.
\ No newline at end of file
diff --git a/translations/en/2-farm/lessons/2-detect-soil-moisture/assignment.md b/translations/en/2-farm/lessons/2-detect-soil-moisture/assignment.md
new file mode 100644
index 00000000..dd6bd16f
--- /dev/null
+++ b/translations/en/2-farm/lessons/2-detect-soil-moisture/assignment.md
@@ -0,0 +1,63 @@
+
+# Calibrate your sensor
+
+## Instructions
+
+In this lesson, you collected soil moisture sensor readings, measured as values ranging from 0 to 1023. To convert these into actual soil moisture readings, you need to calibrate your sensor. This involves taking readings from soil samples and calculating the gravimetric soil moisture content from these samples.
+
+You will need to repeat these steps multiple times to gather the necessary readings, using soil with varying levels of wetness each time.
+
+1. Take a soil moisture reading using the soil moisture sensor. Record this reading.
+
+1. Collect a sample of the soil and weigh it. Record this weight.
+
+1. Dry the soil—using a warm oven at 110°C (230°F) for a few hours is ideal. Alternatively, you can dry it in sunlight or place it in a warm, dry area until the soil is completely dry. The soil should become powdery and loose.
+
+ > 💁 In a laboratory setting, for the most accurate results, you would dry the soil in an oven for 48-72 hours. If your school has drying ovens, see if you can use them for a longer duration. The longer the drying time, the drier the sample and the more accurate the results.
+
+1. Weigh the soil again.
+
+ > 🔥 If you dried the soil in an oven, ensure it has cooled down before weighing!
+
+The gravimetric soil moisture is calculated as:
+
+
+
+* W
+ - the weight of the wet soil
+* W
+ - the weight of the dry soil
+
+For example, suppose you have a soil sample that weighs 212g when wet and 197g when dry.
+
+
+
+* W = 212g
+* W = 197g
+* 212 - 197 = 15
+* 15 / 197 = 0.076
+* 0.076 * 100 = 7.6%
+
+In this example, the soil has a gravimetric soil moisture of 7.6%.
+
+Once you have readings for at least three samples, plot a graph of soil moisture percentage against soil moisture sensor readings. Add a line of best fit to the points. You can then use this graph to determine the gravimetric soil moisture content for a given sensor reading by referencing the value on the line.
+
+## Rubric
+
+| Criteria | Exemplary | Adequate | Needs Improvement |
+| -------- | --------- | -------- | ----------------- |
+| Gather calibration data | Collect at least 3 calibration samples | Collect at least 2 calibration samples | Collect at least 1 calibration sample |
+| Make a calibrated reading | Successfully plot the calibration graph, make a reading from the sensor, and convert it to gravimetric soil moisture content | Successfully plot the calibration graph | Unable to plot the graph |
+
+---
+
+**Disclaimer**:
+This document has been translated using the AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). While we aim for accuracy, please note that automated translations may include errors or inaccuracies. The original document in its native language should be regarded as the authoritative source. For critical information, professional human translation is advised. We are not responsible for any misunderstandings or misinterpretations resulting from the use of this translation.
\ No newline at end of file
diff --git a/translations/en/2-farm/lessons/2-detect-soil-moisture/pi-soil-moisture.md b/translations/en/2-farm/lessons/2-detect-soil-moisture/pi-soil-moisture.md
new file mode 100644
index 00000000..c7087808
--- /dev/null
+++ b/translations/en/2-farm/lessons/2-detect-soil-moisture/pi-soil-moisture.md
@@ -0,0 +1,108 @@
+
+# Measure soil moisture - Raspberry Pi
+
+In this part of the lesson, you will add a capacitive soil moisture sensor to your Raspberry Pi and read values from it.
+
+## Hardware
+
+The Raspberry Pi requires a capacitive soil moisture sensor.
+
+The sensor you'll use is a [Capacitive Soil Moisture Sensor](https://www.seeedstudio.com/Grove-Capacitive-Moisture-Sensor-Corrosion-Resistant.html), which measures soil moisture by detecting the capacitance of the soil—a property that changes as the soil's moisture level changes. As the soil moisture increases, the voltage decreases.
+
+This is an analog sensor, so it uses an analog pin and the 10-bit ADC in the Grove Base Hat on the Pi to convert the voltage into a digital signal ranging from 1 to 1,023. This signal is then sent over I2C via the GPIO pins on the Pi.
+
+### Connect the soil moisture sensor
+
+The Grove soil moisture sensor can be connected to the Raspberry Pi.
+
+#### Task - connect the soil moisture sensor
+
+Connect the soil moisture sensor.
+
+
+
+1. Insert one end of a Grove cable into the socket on the soil moisture sensor. It will only fit one way.
+
+1. With the Raspberry Pi powered off, connect the other end of the Grove cable to the analog socket marked **A0** on the Grove Base Hat attached to the Pi. This socket is the second from the right in the row of sockets next to the GPIO pins.
+
+
+
+1. Insert the soil moisture sensor into the soil. The sensor has a 'highest position line'—a white line across the sensor. Insert the sensor up to, but not past, this line.
+
+
+
+## Program the soil moisture sensor
+
+The Raspberry Pi can now be programmed to use the attached soil moisture sensor.
+
+### Task - program the soil moisture sensor
+
+Program the device.
+
+1. Power up the Pi and wait for it to boot.
+
+1. Launch VS Code, either directly on the Pi or by connecting via the Remote SSH extension.
+
+ > ⚠️ You can refer to [the instructions for setting up and launching VS Code in nightlight - lesson 1 if needed](../../../1-getting-started/lessons/1-introduction-to-iot/pi.md).
+
+1. From the terminal, create a new folder in the `pi` user's home directory called `soil-moisture-sensor`. Create a file in this folder called `app.py`.
+
+1. Open this folder in VS Code.
+
+1. Add the following code to the `app.py` file to import some required libraries:
+
+ ```python
+ import time
+ from grove.adc import ADC
+ ```
+
+ The `import time` statement imports the `time` module, which will be used later in this assignment.
+
+ The `from grove.adc import ADC` statement imports the `ADC` from the Grove Python libraries. This library contains code to interact with the analog-to-digital converter on the Pi Base Hat and read voltages from analog sensors.
+
+1. Add the following code below this to create an instance of the `ADC` class:
+
+ ```python
+ adc = ADC()
+ ```
+
+1. Add an infinite loop that reads from this ADC on the A0 pin and writes the result to the console. This loop will then sleep for 10 seconds between reads.
+
+ ```python
+ while True:
+ soil_moisture = adc.read(0)
+ print("Soil moisture:", soil_moisture)
+
+ time.sleep(10)
+ ```
+
+1. Run the Python app. You will see the soil moisture measurements displayed in the console. Add some water to the soil or remove the sensor from the soil and observe the value change.
+
+ ```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
+ ```
+
+ In the example output above, you can see the voltage drop as water is added.
+
+> 💁 You can find this code in the [code/pi](../../../../../2-farm/lessons/2-detect-soil-moisture/code/pi) folder.
+
+😀 Your soil moisture sensor program was a success!
+
+---
+
+**Disclaimer**:
+This document has been translated using the AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). While we aim for accuracy, please note that automated translations may include errors or inaccuracies. The original document in its native language should be regarded as the authoritative source. For critical information, professional human translation is advised. We are not responsible for any misunderstandings or misinterpretations resulting from the use of this translation.
\ No newline at end of file
diff --git a/translations/en/2-farm/lessons/2-detect-soil-moisture/virtual-device-soil-moisture.md b/translations/en/2-farm/lessons/2-detect-soil-moisture/virtual-device-soil-moisture.md
new file mode 100644
index 00000000..6b30d2f5
--- /dev/null
+++ b/translations/en/2-farm/lessons/2-detect-soil-moisture/virtual-device-soil-moisture.md
@@ -0,0 +1,123 @@
+
+# Measure soil moisture - Virtual IoT Hardware
+
+In this part of the lesson, you will add a capacitive soil moisture sensor to your virtual IoT device and read values from it.
+
+## Virtual Hardware
+
+The virtual IoT device will use a simulated Grove capacitive soil moisture sensor. This keeps the lab consistent with using a Raspberry Pi and a physical Grove capacitive soil moisture sensor.
+
+In a physical IoT device, the soil moisture sensor would be a capacitive sensor that measures soil moisture by detecting the capacitance of the soil, a property that changes as the soil's moisture level changes. As the soil moisture increases, the voltage decreases.
+
+This is an analog sensor, so it uses a simulated 10-bit ADC to report a value between 1 and 1,023.
+
+### Add the soil moisture sensor to CounterFit
+
+To use a virtual soil moisture sensor, you need to add it to the CounterFit app.
+
+#### Task - Add the soil moisture sensor to CounterFit
+
+Add the soil moisture sensor to the CounterFit app.
+
+1. Create a new Python app on your computer in a folder called `soil-moisture-sensor` with a single file named `app.py`, set up a Python virtual environment, and add the CounterFit pip packages.
+
+ > ⚠️ You can refer to [the instructions for creating and setting up a CounterFit Python project in lesson 1 if needed](../../../1-getting-started/lessons/1-introduction-to-iot/virtual-device.md).
+
+1. Make sure the CounterFit web app is running.
+
+1. Create a soil moisture sensor:
+
+ 1. In the *Create sensor* box in the *Sensors* pane, open the *Sensor type* dropdown and select *Soil Moisture*.
+
+ 1. Leave the *Units* set to *NoUnits*.
+
+ 1. Ensure the *Pin* is set to *0*.
+
+ 1. Click the **Add** button to create the *Soil Moisture* sensor on Pin 0.
+
+ 
+
+ The soil moisture sensor will be created and appear in the sensors list.
+
+ 
+
+## Program the soil moisture sensor app
+
+The soil moisture sensor app can now be programmed using the CounterFit sensors.
+
+### Task - Program the soil moisture sensor app
+
+Program the soil moisture sensor app.
+
+1. Make sure the `soil-moisture-sensor` app is open in VS Code.
+
+1. Open the `app.py` file.
+
+1. Add the following code to the top of `app.py` to connect the app to CounterFit:
+
+ ```python
+ from counterfit_connection import CounterFitConnection
+ CounterFitConnection.init('127.0.0.1', 5000)
+ ```
+
+1. Add the following code to the `app.py` file to import some required libraries:
+
+ ```python
+ import time
+ from counterfit_shims_grove.adc import ADC
+ ```
+
+ The `import time` statement imports the `time` module, which will be used later in this assignment.
+
+ The `from counterfit_shims_grove.adc import ADC` statement imports the `ADC` class to interact with a virtual analog-to-digital converter that can connect to a CounterFit sensor.
+
+1. Add the following code below this to create an instance of the `ADC` class:
+
+ ```python
+ adc = ADC()
+ ```
+
+1. Add an infinite loop that reads from this ADC on pin 0 and writes the result to the console. This loop can then sleep for 10 seconds between reads.
+
+ ```python
+ while True:
+ soil_moisture = adc.read(0)
+ print("Soil moisture:", soil_moisture)
+
+ time.sleep(10)
+ ```
+
+1. From the CounterFit app, change the value of the soil moisture sensor that will be read by the app. You can do this in one of two ways:
+
+ * Enter a number in the *Value* box for the soil moisture sensor, then click the **Set** button. The number you enter will be the value returned by the sensor.
+
+ * Check the *Random* checkbox, and enter a *Min* and *Max* value, then click the **Set** button. Every time the sensor reads a value, it will read a random number between *Min* and *Max*.
+
+1. Run the Python app. You will see the soil moisture measurements written to the console. Change the *Value* or the *Random* settings to see the value change.
+
+ ```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
+ ```
+
+> 💁 You can find this code in the [code/virtual-device](../../../../../2-farm/lessons/2-detect-soil-moisture/code/virtual-device) folder.
+
+😀 Your soil moisture sensor program was a success!
+
+---
+
+**Disclaimer**:
+This document has been translated using the AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). While we strive for accuracy, please note that automated translations may contain errors or inaccuracies. The original document in its native language should be regarded as the authoritative source. For critical information, professional human translation is recommended. We are not responsible for any misunderstandings or misinterpretations resulting from the use of this translation.
\ No newline at end of file
diff --git a/translations/en/2-farm/lessons/2-detect-soil-moisture/wio-terminal-soil-moisture.md b/translations/en/2-farm/lessons/2-detect-soil-moisture/wio-terminal-soil-moisture.md
new file mode 100644
index 00000000..a76f6820
--- /dev/null
+++ b/translations/en/2-farm/lessons/2-detect-soil-moisture/wio-terminal-soil-moisture.md
@@ -0,0 +1,117 @@
+
+# Measure soil moisture - Wio Terminal
+
+In this part of the lesson, you will add a capacitive soil moisture sensor to your Wio Terminal and read values from it.
+
+## Hardware
+
+The Wio Terminal requires a capacitive soil moisture sensor.
+
+The sensor you'll use is a [Capacitive Soil Moisture Sensor](https://www.seeedstudio.com/Grove-Capacitive-Moisture-Sensor-Corrosion-Resistant.html), which measures soil moisture by detecting the capacitance of the soil, a property that changes as the soil's moisture level changes. As the soil moisture increases, the voltage decreases.
+
+This is an analog sensor, so it connects to the analog pins on the Wio Terminal, using an onboard ADC to generate a value between 0 and 1,023.
+
+### Connect the soil moisture sensor
+
+The Grove soil moisture sensor can be connected to the Wio Terminal's configurable analog/digital port.
+
+#### Task - connect the soil moisture sensor
+
+Connect the soil moisture sensor.
+
+
+
+1. Insert one end of a Grove cable into the socket on the soil moisture sensor. It will only fit in one way.
+
+1. With the Wio Terminal disconnected from your computer or any other power source, connect the other end of the Grove cable to the right-hand side Grove socket on the Wio Terminal as you face the screen. This is the socket farthest from the power button.
+
+
+
+1. Insert the soil moisture sensor into the soil. The sensor has a 'highest position line'—a white line across it. Insert the sensor up to, but not beyond, this line.
+
+
+
+1. You can now connect the Wio Terminal to your computer.
+
+## Program the soil moisture sensor
+
+The Wio Terminal can now be programmed to use the attached soil moisture sensor.
+
+### Task - program the soil moisture sensor
+
+Program the device.
+
+1. Create a new Wio Terminal project using PlatformIO. Name this project `soil-moisture-sensor`. Add code in the `setup` function to configure the serial port.
+
+ > ⚠️ You can refer to [the instructions for creating a PlatformIO project in project 1, lesson 1 if needed](../../../1-getting-started/lessons/1-introduction-to-iot/wio-terminal.md#create-a-platformio-project).
+
+1. There isn't a library for this sensor, but you can read from the analog pin using the built-in Arduino [`analogRead`](https://www.arduino.cc/reference/en/language/functions/analog-io/analogread/) function. Start by configuring the analog pin for input so values can be read from it by adding the following to the `setup` function.
+
+ ```cpp
+ pinMode(A0, INPUT);
+ ```
+
+ This sets the `A0` pin, the combined analog/digital pin, as an input pin from which voltage can be read.
+
+1. Add the following to the `loop` function to read the voltage from this pin:
+
+ ```cpp
+ int soil_moisture = analogRead(A0);
+ ```
+
+1. Below this code, add the following code to print the value to the serial port:
+
+ ```cpp
+ Serial.print("Soil Moisture: ");
+ Serial.println(soil_moisture);
+ ```
+
+1. Finally, add a delay of 10 seconds at the end:
+
+ ```cpp
+ delay(10000);
+ ```
+
+1. Build and upload the code to the Wio Terminal.
+
+ > ⚠️ You can refer to [the instructions for creating a PlatformIO project in project 1, lesson 1 if needed](../../../1-getting-started/lessons/1-introduction-to-iot/wio-terminal.md#write-the-hello-world-app).
+
+1. Once uploaded, you can monitor the soil moisture using the serial monitor. Add some water to the soil or remove the sensor from the soil and observe the value change.
+
+ ```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
+ ```
+
+ In the example output above, you can see the voltage drop as water is added.
+
+> 💁 You can find this code in the [code/wio-terminal](../../../../../2-farm/lessons/2-detect-soil-moisture/code/wio-terminal) folder.
+
+😀 Your soil moisture sensor program was a success!
+
+---
+
+**Disclaimer**:
+This document has been translated using the AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). While we aim for accuracy, please note that automated translations may include errors or inaccuracies. The original document in its native language should be regarded as the authoritative source. For critical information, professional human translation is advised. We are not responsible for any misunderstandings or misinterpretations resulting from the use of this translation.
\ No newline at end of file
diff --git a/translations/en/2-farm/lessons/3-automated-plant-watering/README.md b/translations/en/2-farm/lessons/3-automated-plant-watering/README.md
new file mode 100644
index 00000000..05ec0c60
--- /dev/null
+++ b/translations/en/2-farm/lessons/3-automated-plant-watering/README.md
@@ -0,0 +1,314 @@
+
+# Automated plant watering
+
+
+
+> Sketchnote by [Nitya Narasimhan](https://github.com/nitya). Click the image for a larger version.
+
+This lesson was taught as part of the [IoT for Beginners Project 2 - Digital Agriculture series](https://youtube.com/playlist?list=PLmsFUfdnGr3yCutmcVg6eAUEfsGiFXgcx) from the [Microsoft Reactor](https://developer.microsoft.com/reactor/?WT.mc_id=academic-17441-jabenn).
+
+[](https://youtu.be/g9FfZwv9R58)
+
+## Pre-lecture quiz
+
+[Pre-lecture quiz](https://black-meadow-040d15503.1.azurestaticapps.net/quiz/13)
+
+## Introduction
+
+In the previous lesson, you learned how to monitor soil moisture. In this lesson, you'll learn how to build the core components of an automated watering system that responds to soil moisture levels. You'll also explore the concept of timing—how sensors may take time to respond to changes and how actuators may take time to affect the properties being measured by sensors.
+
+In this lesson, we’ll cover:
+
+* [Control high power devices from a low power IoT device](../../../../../2-farm/lessons/3-automated-plant-watering)
+* [Control a relay](../../../../../2-farm/lessons/3-automated-plant-watering)
+* [Control your plant over MQTT](../../../../../2-farm/lessons/3-automated-plant-watering)
+* [Sensor and actuator timing](../../../../../2-farm/lessons/3-automated-plant-watering)
+* [Add timing to your plant control server](../../../../../2-farm/lessons/3-automated-plant-watering)
+
+## Control high power devices from a low power IoT device
+
+IoT devices operate at low voltage. While this is sufficient for sensors and low-power actuators like LEDs, it’s not enough to control larger hardware, such as a water pump for irrigation. Even small pumps for houseplants draw too much current for an IoT development kit and could damage the board.
+
+> 🎓 Current, measured in Amps (A), is the amount of electricity flowing through a circuit. Voltage provides the push, while current measures how much is pushed. You can learn more about current on the [electric current page on Wikipedia](https://wikipedia.org/wiki/Electric_current).
+
+The solution is to connect the pump to an external power supply and use an actuator to switch the pump on, similar to flipping a light switch. It takes only a small amount of energy (from your body) to flip the switch, which then connects the light to mains electricity running at 110V/240V.
+
+
+
+> 🎓 [Mains electricity](https://wikipedia.org/wiki/Mains_electricity) refers to the electricity supplied to homes and businesses through national infrastructure in many parts of the world.
+
+✅ IoT devices typically provide 3.3V or 5V at less than 1 amp (1A) of current. In comparison, mains electricity is usually 230V (120V in North America and 100V in Japan) and can power devices that draw up to 30A.
+
+There are various actuators that can achieve this, including mechanical devices that mimic a finger flipping a switch. The most common actuator for this purpose is a relay.
+
+### Relays
+
+A relay is an electromechanical switch that converts an electrical signal into a mechanical movement to turn a switch on or off. At the core of a relay is an electromagnet.
+
+> 🎓 [Electromagnets](https://wikipedia.org/wiki/Electromagnet) are magnets created by passing electricity through a coil of wire. When electricity flows through the coil, it becomes magnetized. When the electricity stops, the coil loses its magnetism.
+
+
+
+In a relay, a control circuit powers the electromagnet. When the electromagnet is activated, it pulls a lever that moves a switch, closing a pair of contacts and completing an output circuit.
+
+
+
+When the control circuit is off, the electromagnet deactivates, releasing the lever and opening the contacts, which turns off the output circuit. Relays are digital actuators—a high signal turns the relay on, and a low signal turns it off.
+
+The output circuit can power additional hardware, such as an irrigation system. The IoT device can turn the relay on, completing the output circuit to power the irrigation system and water the plants. The IoT device can then turn the relay off, cutting power to the irrigation system and stopping the water flow.
+
+
+
+In the video above, a relay is activated. An LED on the relay lights up to indicate it is on (some relay boards include LEDs for this purpose), and power is sent to the pump, which waters the plant.
+
+> 💁 Relays can also switch between two output circuits instead of simply turning one on or off. As the lever moves, it switches from completing one output circuit to completing another, often sharing a common power or ground connection.
+
+✅ Research task: There are different types of relays, with variations such as whether the control circuit turns the relay on or off when power is applied, or whether multiple output circuits are supported. Look into these different types.
+
+When the lever moves, you can often hear a distinct clicking sound as it makes contact with the electromagnet.
+
+> 💁 A relay can be wired so that activating it breaks its own power connection, turning it off. This then reactivates the relay, creating a rapid on-off cycle that produces a buzzing sound. This principle was used in early electric doorbells.
+
+### Relay power
+
+The electromagnet in a relay requires very little power to activate and can be controlled using the 3.3V or 5V output from an IoT development kit. The output circuit, however, can handle much higher power levels, depending on the relay, including mains voltage or even higher levels for industrial applications. This allows an IoT development kit to control irrigation systems ranging from small pumps for individual plants to large-scale systems for commercial farms.
+
+
+
+The image above shows a Grove relay. The control circuit connects to an IoT device and uses 3.3V or 5V to turn the relay on or off. The output circuit has two terminals, which can be used for power or ground. This relay can handle up to 250V at 10A, making it suitable for a variety of mains-powered devices. Higher-capacity relays are also available.
+
+
+
+In the image above, a pump is powered through a relay. A red wire connects the +5V terminal of a USB power supply to one terminal of the relay’s output circuit, and another red wire connects the other terminal to the pump. A black wire connects the pump to the ground on the USB power supply. When the relay is activated, it completes the circuit, sending 5V to the pump and turning it on.
+
+## Control a relay
+
+You can control a relay using your IoT development kit.
+
+### Task - control a relay
+
+Follow the appropriate guide to control a relay with your IoT device:
+
+* [Arduino - Wio Terminal](wio-terminal-relay.md)
+* [Single-board computer - Raspberry Pi](pi-relay.md)
+* [Single-board computer - Virtual device](virtual-device-relay.md)
+
+## Control your plant over MQTT
+
+Currently, your relay is controlled directly by the IoT device based on a single soil moisture reading. In a commercial irrigation system, control logic is centralized, allowing decisions to be made using data from multiple sensors and enabling configuration changes in one place. You can simulate this by controlling the relay over MQTT.
+
+### Task - control the relay over MQTT
+
+1. Add the necessary MQTT libraries/pip packages and code to your `soil-moisture-sensor` project to connect to MQTT. Name the client ID as `soilmoisturesensor_client` prefixed by your ID.
+
+ > ⚠️ Refer to [the instructions for connecting to MQTT in project 1, lesson 4 if needed](../../../1-getting-started/lessons/4-connect-internet/README.md#connect-your-iot-device-to-mqtt).
+
+2. Add the required device code to send telemetry with the soil moisture settings. Name the telemetry property `soil_moisture`.
+
+ > ⚠️ Refer to [the instructions for sending telemetry to MQTT in project 1, lesson 4 if needed](../../../1-getting-started/lessons/4-connect-internet/README.md#send-telemetry-from-your-iot-device).
+
+3. Create local server code to subscribe to telemetry and send a command to control the relay in a folder called `soil-moisture-sensor-server`. Name the command property `relay_on`, and set the client ID as `soilmoisturesensor_server` prefixed by your ID. Use the same structure as the server code from project 1, lesson 4, as you’ll expand on this code later.
+
+ > ⚠️ Refer to [the instructions for sending telemetry to MQTT](../../../1-getting-started/lessons/4-connect-internet/README.md#write-the-server-code) and [sending commands over MQTT](../../../1-getting-started/lessons/4-connect-internet/README.md#send-commands-to-the-mqtt-broker) in project 1, lesson 4 if needed.
+
+4. Add the necessary device code to control the relay based on received commands, using the `relay_on` property from the message. Send `true` for `relay_on` if the `soil_moisture` is greater than 450; otherwise, send `false`, following the same logic as before.
+
+ > ⚠️ Refer to [the instructions for responding to commands from MQTT in project 1, lesson 4 if needed](../../../1-getting-started/lessons/4-connect-internet/README.md#handle-commands-on-the-iot-device).
+
+> 💁 You can find this code in the [code-mqtt](../../../../../2-farm/lessons/3-automated-plant-watering/code-mqtt) folder.
+
+Ensure the code is running on your device and local server, and test it by adjusting soil moisture levels, either by modifying the values sent by the virtual sensor or by physically altering the soil moisture (e.g., adding water or removing the sensor).
+
+## Sensor and actuator timing
+
+In lesson 3, you built a nightlight—an LED that turns on as soon as a low light level is detected by a sensor. The light sensor responded instantly to changes, and the device reacted quickly, limited only by the delay in the `loop` function or `while True:` loop. However, as an IoT developer, you can’t always rely on such fast feedback loops.
+
+### Timing for soil moisture
+
+If you completed the previous lesson using a physical soil moisture sensor, you may have noticed that the soil moisture reading took a few seconds to drop after watering the plant. This delay isn’t due to the sensor being slow but rather the time it takes for water to soak through the soil.
+💁 If you watered too close to the sensor, you might have noticed the reading drop quickly and then rise again. This happens because the water near the sensor spreads through the rest of the soil, temporarily lowering the moisture level detected by the sensor.
+
+
+In the diagram above, a soil moisture reading shows 658. The plant is watered, but this reading doesn't change immediately because the water hasn't yet reached the sensor. Watering might even finish before the water reaches the sensor, and the value only drops once the water has soaked through the soil.
+
+If you were writing code to control an irrigation system using a relay based on soil moisture levels, you would need to account for this delay and implement smarter timing in your IoT device.
+
+✅ Take a moment to think about how you might handle this.
+
+### Control sensor and actuator timing
+
+Imagine you’ve been tasked with building an irrigation system for a farm. Based on the soil type, the ideal soil moisture level for the plants has been determined to correspond to an analog voltage reading of 400-450.
+
+You could program the device similarly to a nightlight: whenever the sensor reads above 450, turn on a relay to activate a pump. However, the problem is that water takes time to travel from the pump, through the soil, to the sensor. The sensor will stop the water when it detects a level of 450, but the water level will continue to drop as the pumped water keeps soaking through the soil. This results in wasted water and increases the risk of root damage.
+
+✅ Remember: too much water can be just as harmful to plants as too little, and it wastes a valuable resource.
+
+A better solution is to understand that there’s a delay between the actuator turning on and the sensor detecting a change. This means the sensor should wait for a while before measuring the value again, and the actuator should turn off for a while before the next sensor measurement is taken.
+
+How long should the relay stay on each time? It’s better to err on the side of caution and only turn the relay on for a short period, then wait for the water to soak through, and re-check the moisture levels. After all, you can always turn it on again to add more water, but you can’t remove water from the soil.
+
+> 💁 This kind of timing control is highly specific to the IoT device you’re building, the property you’re measuring, and the sensors and actuators being used.
+
+
+
+For example, I have a strawberry plant with a soil moisture sensor and a pump controlled by a relay. I’ve observed that when I add water, it takes about 20 seconds for the soil moisture reading to stabilize. This means I need to turn the relay off and wait 20 seconds before checking the moisture levels. I’d rather have too little water than too much—I can always turn the pump on again, but I can’t remove water from the plant.
+
+
+
+The best process for a watering cycle would look something like this:
+
+* Turn on the pump for 5 seconds
+* Wait 20 seconds
+* Check the soil moisture
+* If the level is still above the required threshold, repeat the steps above
+
+Five seconds might be too long for the pump, especially if the moisture levels are only slightly above the required threshold. The best way to determine the timing is to experiment, then adjust based on sensor data, using a constant feedback loop. This can even lead to more granular timing, such as turning the pump on for 1 second for every 100 above the required soil moisture level, instead of a fixed 5 seconds.
+
+✅ Do some research: Are there other timing considerations? Can the plant be watered anytime the soil moisture is too low, or are there specific times of day that are better or worse for watering?
+
+> 💁 Weather predictions can also be factored into automated watering systems for outdoor plants. If rain is expected, watering can be delayed until after the rain. At that point, the soil might already be moist enough, making watering unnecessary and saving water.
+
+## Add timing to your plant control server
+
+The server code can be updated to include control over the timing of the watering cycle and waiting for soil moisture levels to stabilize. The server logic for controlling the relay timing is as follows:
+
+1. Telemetry message received
+2. Check the soil moisture level
+3. If the level is acceptable, do nothing. If the reading is too high (indicating the soil moisture is too low):
+ 1. Send a command to turn the relay on
+ 2. Wait for 5 seconds
+ 3. Send a command to turn the relay off
+ 4. Wait for 20 seconds for the soil moisture levels to stabilize
+
+The watering cycle, from receiving the telemetry message to being ready to process soil moisture levels again, takes about 25 seconds. Since soil moisture levels are sent every 10 seconds, there’s an overlap where a message is received while the server is waiting for soil moisture levels to stabilize, potentially starting another watering cycle.
+
+There are two ways to address this:
+
+* Change the IoT device code to send telemetry every minute, ensuring the watering cycle is completed before the next message is sent.
+* Unsubscribe from telemetry during the watering cycle.
+
+The first option isn’t always ideal for large farms. For example, the farmer might want to capture soil moisture levels during watering for later analysis, such as understanding water flow in different areas of the farm to guide more targeted watering. The second option is better—the code ignores telemetry when it can’t use it, but the telemetry is still available for other services that might subscribe to it.
+
+> 💁 IoT data isn’t sent from just one device to one service. Instead, many devices can send data to a broker, and many services can listen to the data from the broker. For example, one service could store soil moisture data in a database for later analysis, while another service uses the same telemetry to control an irrigation system.
+
+### Task - add timing to your plant control server
+
+Update your server code to run the relay for 5 seconds, then wait 20 seconds.
+
+1. Open the `soil-moisture-sensor-server` folder in VS Code if it isn’t already open. Make sure the virtual environment is activated.
+
+1. Open the `app.py` file.
+
+1. Add the following code to the `app.py` file below the existing imports:
+
+ ```python
+ import threading
+ ```
+
+ This statement imports `threading` from Python libraries. Threading allows Python to execute other code while waiting.
+
+1. Add the following code before the `handle_telemetry` function that handles telemetry messages received by the server code:
+
+ ```python
+ water_time = 5
+ wait_time = 20
+ ```
+
+ This defines how long to run the relay (`water_time`) and how long to wait afterward to check the soil moisture (`wait_time`).
+
+1. Below this code, add the following:
+
+ ```python
+ def send_relay_command(client, state):
+ command = { 'relay_on' : state }
+ print("Sending message:", command)
+ client.publish(server_command_topic, json.dumps(command))
+ ```
+
+ This code defines a function called `send_relay_command` that sends a command over MQTT to control the relay. The telemetry is created as a dictionary, then converted to a JSON string. The value passed into `state` determines whether the relay should be on or off.
+
+1. After the `send_relay_code` function, add the following code:
+
+ ```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)
+ ```
+
+ This defines a function to control the relay based on the required timing. It starts by unsubscribing from telemetry so that soil moisture messages aren’t processed during watering. Next, it sends a command to turn the relay on. It then waits for the `water_time` before sending a command to turn the relay off. Finally, it waits for the soil moisture levels to stabilize for `wait_time` seconds and then re-subscribes to telemetry.
+
+1. Change the `handle_telemetry` function to the following:
+
+ ```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()
+ ```
+
+ This code checks the soil moisture level. If it’s greater than 450, the soil needs watering, so it calls the `control_relay` function. This function runs on a separate thread in the background.
+
+1. Make sure your IoT device is running, then run this code. Change the soil moisture levels and observe what happens to the relay—it should turn on for 5 seconds, then remain off for at least 20 seconds, only turning on again if the soil moisture levels are insufficient.
+
+ ```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}
+ ```
+
+ A good way to test this in a simulated irrigation system is to use dry soil, then manually pour water while the relay is on, stopping when the relay turns off.
+
+> 💁 You can find this code in the [code-timing](../../../../../2-farm/lessons/3-automated-plant-watering/code-timing) folder.
+
+> 💁 If you want to use a pump to build a real irrigation system, you can use a [6V water pump](https://www.seeedstudio.com/6V-Mini-Water-Pump-p-1945.html) with a [USB terminal power supply](https://www.adafruit.com/product/3628). Ensure the power to or from the pump is connected via the relay.
+
+---
+
+## 🚀 Challenge
+
+Can you think of other IoT or electrical devices with a similar issue, where it takes time for the actuator’s effect to reach the sensor? You probably have a few at home or school.
+
+* What properties do they measure?
+* How long does it take for the property to change after the actuator is used?
+* Is it acceptable for the property to exceed the required value?
+* How can it be brought back to the required value if needed?
+
+## Post-lecture quiz
+
+[Post-lecture quiz](https://black-meadow-040d15503.1.azurestaticapps.net/quiz/14)
+
+## Review & Self Study
+
+* Learn more about relays, including their historical use in telephone exchanges, on the [relay Wikipedia page](https://wikipedia.org/wiki/Relay).
+
+## Assignment
+
+[Build a more efficient watering cycle](assignment.md)
+
+---
+
+**Disclaimer**:
+This document has been translated using the AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). While we aim for accuracy, please note that automated translations may include errors or inaccuracies. The original document in its native language should be regarded as the authoritative source. For critical information, professional human translation is advised. We are not responsible for any misunderstandings or misinterpretations resulting from the use of this translation.
\ No newline at end of file
diff --git a/translations/en/2-farm/lessons/3-automated-plant-watering/assignment.md b/translations/en/2-farm/lessons/3-automated-plant-watering/assignment.md
new file mode 100644
index 00000000..dc93d862
--- /dev/null
+++ b/translations/en/2-farm/lessons/3-automated-plant-watering/assignment.md
@@ -0,0 +1,54 @@
+
+# Build a more efficient watering cycle
+
+## Instructions
+
+This lesson explained how to control a relay using sensor data, which can then control a pump for an irrigation system. For a specific area of soil, running a pump for a fixed amount of time should consistently affect the soil moisture in the same way. This allows you to estimate how many seconds of irrigation correspond to a specific change in soil moisture levels. Using this information, you can create a more precise irrigation system.
+
+For this assignment, you will calculate how long the pump should run to achieve a desired increase in soil moisture.
+
+> ⚠️ If you are using virtual IoT hardware, you can follow this process but simulate the results by manually increasing the soil moisture reading by a fixed amount for each second the relay is active.
+
+1. Start with dry soil and measure the soil moisture level.
+
+1. Add a fixed amount of water, either by running the pump for 1 second or by pouring a specific quantity of water.
+
+ > The pump should always operate at a consistent rate, so every second it runs, it should deliver the same amount of water.
+
+1. Wait for the soil moisture level to stabilize, then take a reading.
+
+1. Repeat this process several times and create a table of results. An example table is shown below:
+
+ | Total Pump time | Soil Moisture | Decrease |
+ | --- | --: | -: |
+ | Dry | 643 | 0 |
+ | 1s | 621 | 22 |
+ | 2s | 601 | 20 |
+ | 3s | 579 | 22 |
+ | 4s | 560 | 19 |
+ | 5s | 539 | 21 |
+ | 6s | 521 | 18 |
+
+1. Calculate the average increase in soil moisture per second of water. In the example above, each second of water decreases the reading by an average of 20.3.
+
+1. Use this data to optimize your server code, ensuring the pump runs for the exact amount of time needed to achieve the desired soil moisture level.
+
+## Rubric
+
+| Criteria | Exemplary | Adequate | Needs Improvement |
+| -------- | --------- | -------- | ----------------- |
+| Capture soil moisture data | Successfully captures multiple readings after adding fixed amounts of water | Captures some readings with fixed amounts of water | Captures only one or two readings, or struggles to use fixed amounts of water |
+| Calibrate the server code | Accurately calculates the average decrease in soil moisture and updates the server code accordingly | Calculates the average decrease but cannot update the server code, or calculates the average incorrectly but uses it to update the server code correctly | Fails to calculate the average or update the server code |
+
+---
+
+**Disclaimer**:
+This document has been translated using the AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). While we aim for accuracy, please note that automated translations may include errors or inaccuracies. The original document in its native language should be regarded as the authoritative source. For critical information, professional human translation is advised. We are not responsible for any misunderstandings or misinterpretations resulting from the use of this translation.
\ No newline at end of file
diff --git a/translations/en/2-farm/lessons/3-automated-plant-watering/pi-relay.md b/translations/en/2-farm/lessons/3-automated-plant-watering/pi-relay.md
new file mode 100644
index 00000000..9baa2c03
--- /dev/null
+++ b/translations/en/2-farm/lessons/3-automated-plant-watering/pi-relay.md
@@ -0,0 +1,123 @@
+
+# Control a relay - Raspberry Pi
+
+In this part of the lesson, you will add a relay to your Raspberry Pi alongside the soil moisture sensor and control it based on the soil moisture level.
+
+## Hardware
+
+The Raspberry Pi requires a relay.
+
+The relay you'll use is a [Grove relay](https://www.seeedstudio.com/Grove-Relay.html), a normally-open relay (meaning the output circuit is open or disconnected when no signal is sent to the relay) that can handle output circuits up to 250V and 10A.
+
+This is a digital actuator, so it connects to a digital pin on the Grove Base Hat.
+
+### Connect the relay
+
+The Grove relay can be connected to the Raspberry Pi.
+
+#### Task
+
+Connect the relay.
+
+
+
+1. Insert one end of a Grove cable into the socket on the relay. It will only fit one way.
+
+1. With the Raspberry Pi powered off, connect the other end of the Grove cable to the digital socket marked **D5** on the Grove Base Hat attached to the Pi. This socket is the second from the left, on the row of sockets next to the GPIO pins. Leave the soil moisture sensor connected to the **A0** socket.
+
+
+
+1. Insert the soil moisture sensor into soil, if it isn't already from the previous lesson.
+
+## Program the relay
+
+The Raspberry Pi can now be programmed to use the attached relay.
+
+### Task
+
+Program the device.
+
+1. Power up the Pi and wait for it to boot.
+
+1. Open the `soil-moisture-sensor` project from the last lesson in VS Code if it's not already open. You will be adding to this project.
+
+1. Add the following code to the `app.py` file below the existing imports:
+
+ ```python
+ from grove.grove_relay import GroveRelay
+ ```
+
+ This statement imports the `GroveRelay` from the Grove Python libraries to interact with the Grove relay.
+
+1. Add the following code below the declaration of the `ADC` class to create a `GroveRelay` instance:
+
+ ```python
+ relay = GroveRelay(5)
+ ```
+
+ This creates a relay using pin **D5**, the digital pin you connected the relay to.
+
+1. To test the relay is working, add the following to the `while True:` loop:
+
+ ```python
+ relay.on()
+ time.sleep(.5)
+ relay.off()
+ ```
+
+ The code turns the relay on, waits 0.5 seconds, then turns the relay off.
+
+1. Run the Python app. The relay will turn on and off every 10 seconds, with a half-second delay between turning on and off. You will hear the relay click on and then click off. An LED on the Grove board will light when the relay is on, then go out when the relay is off.
+
+ 
+
+## Control the relay from soil moisture
+
+Now that the relay is working, it can be controlled in response to soil moisture readings.
+
+### Task
+
+Control the relay.
+
+1. Delete the 3 lines of code that you added to test the relay. Replace them with the following code:
+
+ ```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()
+ ```
+
+ This code checks the soil moisture level from the soil moisture sensor. If it is above 450, it turns on the relay, and turns it off when it goes below 450.
+
+ > 💁 Remember, the capacitive soil moisture sensor works such that the lower the soil moisture level reading, the more moisture there is in the soil, and vice versa.
+
+1. Run the Python app. You will see the relay turn on or off depending on the soil moisture level. Try it in dry soil, then add water.
+
+ ```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.
+ ```
+
+> 💁 You can find this code in the [code-relay/pi](../../../../../2-farm/lessons/3-automated-plant-watering/code-relay/pi) folder.
+
+😀 Congratulations! Your soil moisture sensor is now successfully controlling a relay!
+
+---
+
+**Disclaimer**:
+This document has been translated using the AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). While we aim for accuracy, please note that automated translations may include errors or inaccuracies. The original document in its native language should be regarded as the authoritative source. For critical information, professional human translation is advised. We are not responsible for any misunderstandings or misinterpretations resulting from the use of this translation.
\ No newline at end of file
diff --git a/translations/en/2-farm/lessons/3-automated-plant-watering/virtual-device-relay.md b/translations/en/2-farm/lessons/3-automated-plant-watering/virtual-device-relay.md
new file mode 100644
index 00000000..abad8d54
--- /dev/null
+++ b/translations/en/2-farm/lessons/3-automated-plant-watering/virtual-device-relay.md
@@ -0,0 +1,127 @@
+
+# Control a Relay - Virtual IoT Hardware
+
+In this part of the lesson, you will add a relay to your virtual IoT device alongside the soil moisture sensor and control it based on the soil moisture level.
+
+## Virtual Hardware
+
+The virtual IoT device will use a simulated Grove relay. This ensures the lab remains consistent with using a Raspberry Pi and a physical Grove relay.
+
+In a physical IoT device, the relay would typically be a normally-open relay (meaning the output circuit is open, or disconnected, when no signal is sent to the relay). Such a relay can handle output circuits up to 250V and 10A.
+
+### Add the Relay to CounterFit
+
+To use a virtual relay, you need to add it to the CounterFit app.
+
+#### Task
+
+Add the relay to the CounterFit app.
+
+1. Open the `soil-moisture-sensor` project from the previous lesson in VS Code if it’s not already open. You will be adding to this project.
+
+1. Ensure the CounterFit web app is running.
+
+1. Create a relay:
+
+ 1. In the *Create actuator* box in the *Actuators* pane, open the *Actuator type* dropdown and select *Relay*.
+
+ 1. Set the *Pin* to *5*.
+
+ 1. Click the **Add** button to create the relay on Pin 5.
+
+ 
+
+ The relay will be created and will appear in the actuators list.
+
+ 
+
+## Program the Relay
+
+The soil moisture sensor app can now be programmed to use the virtual relay.
+
+### Task
+
+Program the virtual device.
+
+1. Open the `soil-moisture-sensor` project from the previous lesson in VS Code if it’s not already open. You will be adding to this project.
+
+1. Add the following code to the `app.py` file below the existing imports:
+
+ ```python
+ from counterfit_shims_grove.grove_relay import GroveRelay
+ ```
+
+ This statement imports the `GroveRelay` from the Grove Python shim libraries to interact with the virtual Grove relay.
+
+1. Add the following code below the declaration of the `ADC` class to create a `GroveRelay` instance:
+
+ ```python
+ relay = GroveRelay(5)
+ ```
+
+ This creates a relay using pin **5**, the same pin you connected the relay to.
+
+1. To test if the relay is working, add the following code to the `while True:` loop:
+
+ ```python
+ relay.on()
+ time.sleep(.5)
+ relay.off()
+ ```
+
+ This code turns the relay on, waits 0.5 seconds, and then turns it off.
+
+1. Run the Python app. The relay will turn on and off every 10 seconds, with a half-second delay between turning on and off. You will see the virtual relay in the CounterFit app close and open as the relay is turned on and off.
+
+ 
+
+## Control the Relay Based on Soil Moisture
+
+Now that the relay is working, it can be controlled in response to soil moisture readings.
+
+### Task
+
+Control the relay.
+
+1. Delete the 3 lines of code you added to test the relay. Replace them with the following code:
+
+ ```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()
+ ```
+
+ This code checks the soil moisture level from the soil moisture sensor. If the level is above 450, it turns on the relay. If it drops below 450, it turns the relay off.
+
+ > 💁 Remember, the capacitive soil moisture sensor works such that the lower the soil moisture level, the more moisture there is in the soil, and vice versa.
+
+1. Run the Python app. You will see the relay turn on or off depending on the soil moisture levels. Adjust the *Value* or the *Random* settings for the soil moisture sensor to observe the changes.
+
+ ```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.
+ ```
+
+> 💁 You can find this code in the [code-relay/virtual-device](../../../../../2-farm/lessons/3-automated-plant-watering/code-relay/virtual-device) folder.
+
+😀 Congratulations! Your virtual soil moisture sensor successfully controls a relay!
+
+---
+
+**Disclaimer**:
+This document has been translated using the AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). While we aim for accuracy, please note that automated translations may include errors or inaccuracies. The original document in its native language should be regarded as the authoritative source. For critical information, professional human translation is advised. We are not responsible for any misunderstandings or misinterpretations resulting from the use of this translation.
\ No newline at end of file
diff --git a/translations/en/2-farm/lessons/3-automated-plant-watering/wio-terminal-relay.md b/translations/en/2-farm/lessons/3-automated-plant-watering/wio-terminal-relay.md
new file mode 100644
index 00000000..1e61641f
--- /dev/null
+++ b/translations/en/2-farm/lessons/3-automated-plant-watering/wio-terminal-relay.md
@@ -0,0 +1,121 @@
+
+# Control a relay - Wio Terminal
+
+In this part of the lesson, you will add a relay to your Wio Terminal alongside the soil moisture sensor and control it based on the soil moisture level.
+
+## Hardware
+
+The Wio Terminal requires a relay.
+
+The relay you'll use is a [Grove relay](https://www.seeedstudio.com/Grove-Relay.html), a normally-open relay (meaning the output circuit is open or disconnected when no signal is sent to the relay) that can handle output circuits up to 250V and 10A.
+
+This is a digital actuator, so it connects to the digital pins on the Wio Terminal. The combined analog/digital port is already in use with the soil moisture sensor, so this relay plugs into the other port, which is a combined I2C and digital port.
+
+### Connect the relay
+
+The Grove relay can be connected to the Wio Terminal's digital port.
+
+#### Task
+
+Connect the relay.
+
+
+
+1. Insert one end of a Grove cable into the socket on the relay. It will only fit one way.
+
+1. With the Wio Terminal disconnected from your computer or other power supply, connect the other end of the Grove cable to the left-hand Grove socket on the Wio Terminal as you look at the screen. Leave the soil moisture sensor connected to the right-hand socket.
+
+
+
+1. Insert the soil moisture sensor into the soil if it isn't already from the previous lesson.
+
+## Program the relay
+
+The Wio Terminal can now be programmed to use the attached relay.
+
+### Task
+
+Program the device.
+
+1. Open the `soil-moisture-sensor` project from the last lesson in VS Code if it's not already open. You will be adding to this project.
+
+2. There isn't a library for this actuator—it's a digital actuator controlled by a high or low signal. To turn it on, you send a high signal to the pin (3.3V), and to turn it off, you send a low signal (0V). You can do this using the built-in Arduino [`digitalWrite`](https://www.arduino.cc/reference/en/language/functions/digital-io/digitalwrite/) function. Start by adding the following to the bottom of the `setup` function to set up the combined I2C/digital port as an output pin to send a voltage to the relay:
+
+ ```cpp
+ pinMode(PIN_WIRE_SCL, OUTPUT);
+ ```
+
+ `PIN_WIRE_SCL` is the port number for the combined I2C/digital port.
+
+1. To test if the relay is working, add the following to the `loop` function, below the final `delay`:
+
+ ```cpp
+ digitalWrite(PIN_WIRE_SCL, HIGH);
+ delay(500);
+ digitalWrite(PIN_WIRE_SCL, LOW);
+ ```
+
+ The code writes a high signal to the pin that the relay is connected to, turning it on, waits 500ms (half a second), then writes a low signal to turn the relay off.
+
+1. Build and upload the code to the Wio Terminal.
+
+1. Once uploaded, the relay will turn on and off every 10 seconds, with a half-second delay between turning on and off. You will hear the relay click on and then click off. An LED on the Grove board will light up when the relay is on and turn off when the relay is off.
+
+ 
+
+## Control the relay based on soil moisture
+
+Now that the relay is working, it can be controlled in response to soil moisture readings.
+
+### Task
+
+Control the relay.
+
+1. Delete the 3 lines of code that you added to test the relay. Replace them with the following code:
+
+ ```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);
+ }
+ ```
+
+ This code checks the soil moisture level from the soil moisture sensor. If it is above 450, it turns on the relay, and turns it off when it goes below 450.
+
+ > 💁 Remember, the capacitive soil moisture sensor reads lower values for higher soil moisture levels and higher values for drier soil.
+
+1. Build and upload the code to the Wio Terminal.
+
+1. Monitor the device via the serial monitor. You will see the relay turn on or off depending on the soil moisture level. Test it in dry soil, then add water.
+
+ ```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.
+ ```
+
+> 💁 You can find this code in the [code-relay/wio-terminal](../../../../../2-farm/lessons/3-automated-plant-watering/code-relay/wio-terminal) folder.
+
+😀 Congratulations! Your soil moisture sensor successfully controls a relay!
+
+---
+
+**Disclaimer**:
+This document has been translated using the AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). While we aim for accuracy, please note that automated translations may include errors or inaccuracies. The original document in its native language should be regarded as the authoritative source. For critical information, professional human translation is advised. We are not responsible for any misunderstandings or misinterpretations resulting from the use of this translation.
\ No newline at end of file
diff --git a/translations/en/2-farm/lessons/4-migrate-your-plant-to-the-cloud/README.md b/translations/en/2-farm/lessons/4-migrate-your-plant-to-the-cloud/README.md
new file mode 100644
index 00000000..89936291
--- /dev/null
+++ b/translations/en/2-farm/lessons/4-migrate-your-plant-to-the-cloud/README.md
@@ -0,0 +1,451 @@
+
+# Migrate your plant to the cloud
+
+
+
+> Sketchnote by [Nitya Narasimhan](https://github.com/nitya). Click the image for a larger version.
+
+This lesson was taught as part of the [IoT for Beginners Project 2 - Digital Agriculture series](https://youtube.com/playlist?list=PLmsFUfdnGr3yCutmcVg6eAUEfsGiFXgcx) from the [Microsoft Reactor](https://developer.microsoft.com/reactor/?WT.mc_id=academic-17441-jabenn).
+
+[](https://youtu.be/bNxjopXkhvk)
+
+## Pre-lecture quiz
+
+[Pre-lecture quiz](https://black-meadow-040d15503.1.azurestaticapps.net/quiz/15)
+
+## Introduction
+
+In the previous lesson, you learned how to connect your plant to an MQTT broker and control a relay using server code running locally. This is the foundation of an internet-connected automated watering system, which can be used for anything from a single plant at home to large-scale commercial farms.
+
+While the IoT device communicated with a public MQTT broker to demonstrate the concept, this approach is neither the most reliable nor the most secure. In this lesson, you'll learn about the cloud and the IoT capabilities offered by public cloud services. You'll also discover how to migrate your plant from the public MQTT broker to one of these cloud services.
+
+In this lesson, we'll cover:
+
+* [What is the cloud?](../../../../../2-farm/lessons/4-migrate-your-plant-to-the-cloud)
+* [Create a cloud subscription](../../../../../2-farm/lessons/4-migrate-your-plant-to-the-cloud)
+* [Cloud IoT services](../../../../../2-farm/lessons/4-migrate-your-plant-to-the-cloud)
+* [Create an IoT service in the cloud](../../../../../2-farm/lessons/4-migrate-your-plant-to-the-cloud)
+* [Communicate with IoT Hub](../../../../../2-farm/lessons/4-migrate-your-plant-to-the-cloud)
+* [Connect your device to the IoT service](../../../../../2-farm/lessons/4-migrate-your-plant-to-the-cloud)
+
+## What is the cloud?
+
+Before the cloud, companies that wanted to provide services to their employees (like databases or file storage) or to the public (like websites) had to build and manage their own data centers. These could range from a small room with a few computers to a large building filled with servers. Companies were responsible for everything, including:
+
+* Purchasing computers
+* Maintaining hardware
+* Managing power and cooling
+* Setting up networking
+* Ensuring security, both for the building and the software
+* Installing and updating software
+
+This approach was expensive, required a diverse set of skilled employees, and was slow to adapt to changing needs. For example, an online store preparing for a busy holiday season would need months to buy, configure, and install additional hardware and software. After the holiday season, when demand dropped, the extra hardware would sit idle until the next busy period.
+
+✅ Do you think this setup allowed companies to respond quickly? If an online clothing retailer suddenly became popular because a celebrity was seen wearing their clothes, would they be able to scale their computing power fast enough to handle the surge in orders?
+
+### Someone else's computer
+
+The cloud is often humorously described as "someone else's computer." The concept is simple: instead of buying computers, you rent them from a cloud computing provider. These providers manage massive data centers and handle everything, including hardware installation, power and cooling, networking, security, updates, and more. As a customer, you rent the computing resources you need, scaling up during high demand and scaling down when demand decreases. These cloud data centers are located all over the world.
+
+
+
+
+These data centers can span several square kilometers. The images above show a Microsoft cloud data center, including its initial size and planned expansion. The cleared area for expansion covers over 5 square kilometers.
+
+> 💁 These data centers consume significant amounts of power, and some even have their own power stations. Due to their size and the investments made by cloud providers, they are often environmentally friendly. They are more efficient than numerous small data centers, primarily use renewable energy, and work to reduce waste, minimize water usage, and replant forests to offset deforestation caused by construction. Learn more about sustainability efforts by one cloud provider on the [Azure sustainability site](https://azure.microsoft.com/global-infrastructure/sustainability/?WT.mc_id=academic-17441-jabenn).
+
+✅ Do some research: Look into major cloud providers like [Azure from Microsoft](https://azure.microsoft.com/?WT.mc_id=academic-17441-jabenn) or [GCP from Google](https://cloud.google.com). How many data centers do they have, and where are they located?
+
+Using the cloud reduces costs for companies and allows them to focus on their core business, leaving cloud management to the provider. Companies no longer need to rent or buy data center space, pay for connectivity and power, or hire experts. Instead, they pay a single monthly bill to the cloud provider, who handles everything.
+
+Cloud providers leverage economies of scale to lower costs, buying hardware in bulk, investing in tools to streamline maintenance, and even designing custom hardware to enhance their services.
+
+### Microsoft Azure
+
+Azure is Microsoft's developer-focused cloud platform, and it's the cloud you'll use in these lessons. The video below provides a brief overview of Azure:
+
+[](https://www.microsoft.com/videoplayer/embed/RE4Ibng?WT.mc_id=academic-17441-jabenn)
+
+## Create a cloud subscription
+
+To use cloud services, you'll need to sign up for a subscription with a cloud provider. For this lesson, you'll sign up for a Microsoft Azure subscription. If you already have an Azure subscription, you can skip this step. The subscription details provided here are accurate at the time of writing but may change.
+
+> 💁 If you're accessing these lessons through your school, you may already have an Azure subscription available. Check with your teacher.
+
+There are two types of free Azure subscriptions you can sign up for:
+
+* **Azure for Students** - Designed for students aged 18 and older. No credit card is required, and you validate your student status using your school email address. You'll receive $100 in cloud credits and access to free services, including a free version of an IoT service. This subscription lasts for 12 months and can be renewed annually as long as you're a student.
+
+* **Azure free subscription** - Available to anyone who isn't a student. A credit card is required for verification, but it won't be charged unless you upgrade to a paid plan. You'll receive $200 in credits for the first 30 days and access to free tiers of Azure services. Once your credits are used, your card won't be charged unless you opt for a pay-as-you-go subscription.
+
+> 💁 Microsoft also offers an Azure for Students Starter subscription for students under 18, but it doesn't support IoT services at the time of writing.
+
+### Task - sign up for a free cloud subscription
+
+If you're a student aged 18 or older, you can sign up for an Azure for Students subscription. You'll need to validate your student status using a school email address. You can do this in two ways:
+
+* Sign up for a GitHub Student Developer Pack at [education.github.com/pack](https://education.github.com/pack). This pack includes access to various tools and offers, including GitHub and Microsoft Azure. After signing up, you can activate the Azure for Students offer.
+
+* Sign up directly for an Azure for Students account at [azure.microsoft.com/free/students](https://azure.microsoft.com/free/students/?WT.mc_id=academic-17441-jabenn).
+
+> ⚠️ If your school email address isn't recognized, raise an [issue in this repo](https://github.com/Microsoft/IoT-For-Beginners/issues), and we'll check if it can be added to the Azure for Students allow list.
+
+If you're not a student or don't have a valid school email address, you can sign up for an Azure Free subscription.
+
+* Sign up for an Azure Free Subscription at [azure.microsoft.com/free](https://azure.microsoft.com/free/?WT.mc_id=academic-17441-jabenn)
+
+## Cloud IoT services
+
+The public test MQTT broker you've been using is a great learning tool but has several limitations for commercial use:
+
+* Reliability - It's a free service with no guarantees and could be shut down at any time.
+* Security - It's public, meaning anyone could intercept your data or send commands to your devices.
+* Performance - It's designed for limited test messages and can't handle high volumes of data.
+* Discovery - There's no way to identify connected devices.
+
+Cloud IoT services address these issues. They are maintained by large cloud providers who prioritize reliability and are ready to resolve problems. They include built-in security to prevent unauthorized access and ensure data privacy. These services are also highly scalable, capable of handling millions of messages daily.
+
+> 💁 While these services come with a monthly fee, most cloud providers offer free versions with limited features, which are sufficient for developers to learn. In this lesson, you'll use a free version.
+
+IoT devices connect to cloud services using either a device SDK (a library that simplifies interaction with the service) or directly through communication protocols like MQTT or HTTP. The device SDK is typically the easiest option, as it handles tasks like topic management and security.
+
+
+
+Your device communicates with other parts of your application through the service, similar to how you sent telemetry and received commands via MQTT. This is usually done using a service SDK or similar library. Messages from your device are sent to the service, where other components of your application can access them, and messages can be sent back to your device.
+
+
+
+These services enforce security by recognizing authorized devices, either through pre-registration or by using secret keys or certificates for first-time registration. Unauthorized devices are denied access, and their messages are ignored.
+
+✅ Do some research: What are the risks of having an open IoT service where any device or code can connect? Can you find examples of hackers exploiting such vulnerabilities?
+
+Other components of your application can connect to the IoT service to monitor connected devices, send commands, or interact with them individually or in bulk.
+💁 IoT services also offer extra features, and cloud providers have additional services and applications that can be integrated with the service. For instance, if you want to save all the telemetry messages sent by all devices in a database, it usually takes just a few clicks in the cloud provider's configuration tool to link the service to a database and stream the data into it.
+## Create an IoT service in the cloud
+
+Now that you have an Azure subscription, you can sign up for an IoT service. Microsoft's IoT service is called Azure IoT Hub.
+
+
+
+The video below provides a brief overview of Azure IoT Hub:
+
+[](https://www.youtube.com/watch?v=smuZaZZXKsU)
+
+> 🎥 Click the image above to watch the video
+
+✅ Take a moment to research and read the overview of IoT Hub in the [Microsoft IoT Hub documentation](https://docs.microsoft.com/azure/iot-hub/about-iot-hub?WT.mc_id=academic-17441-jabenn).
+
+Azure's cloud services can be managed through a web-based portal or a command-line interface (CLI). For this task, you will use the CLI.
+
+### Task - Install the Azure CLI
+
+To use the Azure CLI, you first need to install it on your PC or Mac.
+
+1. Follow the instructions in the [Azure CLI documentation](https://docs.microsoft.com/cli/azure/install-azure-cli?WT.mc_id=academic-17441-jabenn) to install the CLI.
+
+1. The Azure CLI supports various extensions that add functionality to manage a wide range of Azure services. Install the IoT extension by running the following command in your command line or terminal:
+
+ ```sh
+ az extension add --name azure-iot
+ ```
+
+1. Log in to your Azure subscription from the Azure CLI by running the following command in your command line or terminal:
+
+ ```sh
+ az login
+ ```
+
+ A web page will open in your default browser. Log in using the account associated with your Azure subscription. Once logged in, you can close the browser tab.
+
+1. If you have multiple Azure subscriptions, such as one provided by your school and another Azure for Students subscription, you need to select the one you want to use. Run the following command to list all subscriptions you have access to:
+
+ ```sh
+ az account list --output table
+ ```
+
+ The output will display the name of each subscription along with its `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
+ ```
+
+ To select the subscription you want to use, run the following command:
+
+ ```sh
+ az account set --subscription
+ ```
+
+ Replace `` with the ID of the subscription you want to use. After running this command, re-run the command to list your accounts. The `IsDefault` column will now show `True` for the subscription you just set.
+
+### Task - Create a resource group
+
+Azure services, such as IoT Hub instances, virtual machines, databases, or AI services, are referred to as **resources**. Every resource must belong to a **Resource Group**, which is a logical grouping of one or more resources.
+
+> 💁 Resource groups allow you to manage multiple services at once. For example, after completing all the lessons for this project, you can delete the resource group, and all the resources within it will be deleted automatically.
+
+1. Azure has multiple data centers worldwide, divided into regions. When creating an Azure resource or resource group, you must specify the region where it will be created. Run the following command to get a list of locations:
+
+ ```sh
+ az account list-locations --output table
+ ```
+
+ A list of locations will appear. This list is extensive.
+
+ > 💁 At the time of writing, there are 65 locations available for deployment.
+
+ ```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
+ ...
+ ```
+
+ Note the value in the `Name` column for the region closest to you. You can view the regions on a map on the [Azure geographies page](https://azure.microsoft.com/global-infrastructure/geographies/?WT.mc_id=academic-17441-jabenn).
+
+1. Run the following command to create a resource group called `soil-moisture-sensor`. Resource group names must be unique within your subscription.
+
+ ```sh
+ az group create --name soil-moisture-sensor \
+ --location
+ ```
+
+ Replace `` with the location you selected in the previous step.
+
+### Task - Create an IoT Hub
+
+You can now create an IoT Hub resource within your resource group.
+
+1. Use the following command to create your IoT Hub resource:
+
+ ```sh
+ az iot hub create --resource-group soil-moisture-sensor \
+ --sku F1 \
+ --partition-count 2 \
+ --name
+ ```
+
+ Replace `` with a name for your hub. This name must be globally unique—no other IoT Hub created by anyone else can have the same name. The name is used in a URL that points to the hub, so it must be unique. Use something like `soil-moisture-sensor-` followed by a unique identifier, such as random words or your name.
+
+ The `--sku F1` option specifies the free tier. The free tier supports 8,000 messages per day and includes most features of the paid tiers.
+
+ > 🎓 Azure services have different pricing levels, referred to as tiers. Each tier offers different features or data volumes at varying costs.
+
+ > 💁 To learn more about pricing, check out the [Azure IoT Hub pricing guide](https://azure.microsoft.com/pricing/details/iot-hub/?WT.mc_id=academic-17441-jabenn).
+
+ The `--partition-count 2` option defines the number of data streams the IoT Hub supports. More partitions reduce data blocking when multiple entities read and write to the IoT Hub. While partitions are outside the scope of these lessons, this value must be set to create a free-tier IoT Hub.
+
+ > 💁 You can only have one free-tier IoT Hub per subscription.
+
+The IoT Hub will be created. This process may take a minute or so.
+
+## Communicate with IoT Hub
+
+In the previous lesson, you used MQTT to send messages back and forth on different topics, with each topic serving a specific purpose. Instead of using different topics, IoT Hub provides several defined methods for devices to communicate with the Hub and vice versa.
+
+> 💁 Behind the scenes, communication between IoT Hub and your device can use MQTT, HTTPS, or AMQP.
+
+* Device-to-cloud (D2C) messages: These are messages sent from a device to IoT Hub, such as telemetry data. Your application code can then read these messages from the IoT Hub.
+
+ > 🎓 Internally, IoT Hub uses an Azure service called [Event Hubs](https://docs.microsoft.com/azure/event-hubs/?WT.mc_id=academic-17441-jabenn). When writing code to read messages sent to the hub, these are often referred to as events.
+
+* Cloud-to-device (C2D) messages: These are messages sent from application code, via IoT Hub, to an IoT device.
+
+* Direct method requests: These are messages sent from application code, via IoT Hub, to an IoT device to request specific actions, such as controlling an actuator. These messages require a response so your application code can confirm successful processing.
+
+* Device twins: These are JSON documents synchronized between the device and IoT Hub. They store settings or properties reported by the device or desired by the IoT Hub.
+
+IoT Hub can store messages and direct method requests for a configurable period (default is one day). If a device or application loses connection, it can retrieve messages sent while offline after reconnecting. Device twins are permanently stored in IoT Hub, so a device can reconnect at any time and retrieve the latest device twin.
+
+✅ Do some research: Read more about these message types in the [Device-to-cloud communications guidance](https://docs.microsoft.com/azure/iot-hub/iot-hub-devguide-d2c-guidance?WT.mc_id=academic-17441-jabenn) and the [Cloud-to-device communications guidance](https://docs.microsoft.com/azure/iot-hub/iot-hub-devguide-c2d-guidance?WT.mc_id=academic-17441-jabenn) in the IoT Hub documentation.
+
+## Connect your device to the IoT service
+
+Once the hub is created, your IoT device can connect to it. Only registered devices can connect to the service, so you must register your device first. Upon registration, you will receive a connection string that the device can use to connect. This connection string is device-specific and contains information about the IoT Hub, the device, and a secret key for authentication.
+
+> 🎓 A connection string is a generic term for a piece of text containing connection details. These are used to connect to IoT Hubs, databases, and other services. Connection strings typically include a service identifier, such as a URL, and security information like a secret key. They are passed to SDKs to establish a connection.
+
+> ⚠️ Connection strings should be kept secure! Security will be covered in more detail in a future lesson.
+
+### Task - Register your IoT device
+
+You can register your IoT device with your IoT Hub using the Azure CLI.
+
+1. Run the following command to register a device:
+
+ ```sh
+ az iot hub device-identity create --device-id soil-moisture-sensor \
+ --hub-name
+ ```
+
+ Replace `` with the name of your IoT Hub.
+
+ This will create a device with the ID `soil-moisture-sensor`.
+
+1. When your IoT device connects to your IoT Hub using the SDK, it will need a connection string containing the hub's URL and a secret key. Run the following command to retrieve the connection string:
+
+ ```sh
+ az iot hub device-identity connection-string show --device-id soil-moisture-sensor \
+ --output table \
+ --hub-name
+ ```
+
+ Replace `` with the name of your IoT Hub.
+
+1. Save the connection string displayed in the output, as you will need it later.
+
+### Task - Connect your IoT device to the cloud
+
+Follow the relevant guide to connect your IoT device to the cloud:
+
+* [Arduino - Wio Terminal](wio-terminal-connect-hub.md)
+* [Single-board computer - Raspberry Pi/Virtual IoT device](single-board-computer-connect-hub.md)
+
+### Task - Monitor events
+
+For now, you won't update your server code. Instead, you can use the Azure CLI to monitor events from your IoT device.
+
+1. Ensure your IoT device is running and sending soil moisture telemetry data.
+
+1. Run the following command in your command prompt or terminal to monitor messages sent to your IoT Hub:
+
+ ```sh
+ az iot hub monitor-events --hub-name
+ ```
+
+ Replace `` with the name of your IoT Hub.
+
+ Messages will appear in the console output as they are sent by your IoT device.
+
+ ```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}"
+ }
+ }
+ ```
+
+ The `payload` content will match the message sent by your IoT device.
+
+ > At the time of writing, the `az iot` extension does not fully work on Apple Silicon. If you are using an Apple Silicon device, you will need to monitor messages using an alternative method, such as the [Azure IoT Tools for Visual Studio Code](https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-vscode-iot-toolkit-cloud-device-messaging).
+
+1. Messages include several automatically attached properties, such as the timestamp. These are called *annotations*. To view all message annotations, use the following command:
+
+ ```sh
+ az iot hub monitor-events --properties anno --hub-name
+ ```
+
+ Replace `` with the name of your IoT Hub.
+
+ Messages will appear in the console output as they are sent by your IoT device.
+
+ ```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}"
+ }
+ }
+ ```
+
+ The time values in the annotations are in [UNIX time](https://wikipedia.org/wiki/Unix_time), representing the number of seconds since midnight on January 1, 1970.
+
+ Exit the event monitor when you are done.
+
+### Task - Control your IoT device
+
+You can also use the Azure CLI to invoke direct methods on your IoT device.
+
+1. Run the following command in your command prompt or terminal to invoke the `relay_on` method on the IoT device:
+
+ ```sh
+ az iot hub invoke-device-method --device-id soil-moisture-sensor \
+ --method-name relay_on \
+ --method-payload '{}' \
+ --hub-name
+ ```
+
+ Replace `
+
+` with the name you used for your IoT Hub.
+
+This sends a direct method request for the method specified by `method-name`. Direct methods can take a payload containing data for the method, and this can be specified in the `method-payload` parameter as JSON.
+
+You will see the relay turn on, and the corresponding output from your IoT device:
+
+```output
+ Direct method received - relay_on
+ ```
+
+1. Repeat the above step, but set the `--method-name` to `relay_off`. You will see the relay turn off and the corresponding output from the IoT device.
+
+---
+
+## 🚀 Challenge
+
+The free tier of IoT Hub allows 8,000 messages a day. The code you wrote sends telemetry messages every 10 seconds. How many messages a day is one message every 10 seconds?
+
+Think about how often soil moisture measurements should be sent. How can you change your code to stay within the free tier and check as often as needed but not too often? What if you wanted to add a second device?
+
+## Post-lecture quiz
+
+[Post-lecture quiz](https://black-meadow-040d15503.1.azurestaticapps.net/quiz/16)
+
+## Review & Self Study
+
+The IoT Hub SDK is open source for both Arduino and Python. In the code repos on GitHub, there are a number of samples showing how to work with different IoT Hub features.
+
+* If you are using a Wio Terminal, check out the [Arduino samples on GitHub](https://github.com/Azure/azure-iot-pal-arduino/tree/master/pal/samples)
+* If you are using a Raspberry Pi or Virtual device, check out the [Python samples on GitHub](https://github.com/Azure/azure-iot-sdk-python/tree/master/azure-iot-hub/samples)
+
+## Assignment
+
+[Learn about cloud services](assignment.md)
+
+---
+
+**Disclaimer**:
+This document has been translated using the AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). While we aim for accuracy, please note that automated translations may include errors or inaccuracies. The original document in its native language should be regarded as the authoritative source. For critical information, professional human translation is advised. We are not responsible for any misunderstandings or misinterpretations resulting from the use of this translation.
\ No newline at end of file
diff --git a/translations/en/2-farm/lessons/4-migrate-your-plant-to-the-cloud/assignment.md b/translations/en/2-farm/lessons/4-migrate-your-plant-to-the-cloud/assignment.md
new file mode 100644
index 00000000..33166ed1
--- /dev/null
+++ b/translations/en/2-farm/lessons/4-migrate-your-plant-to-the-cloud/assignment.md
@@ -0,0 +1,33 @@
+
+# Learn about cloud services
+
+## Instructions
+
+Cloud platforms, like Microsoft's Azure, provide more than just virtual machines for rent. The main categories of cloud services include:
+
+* Infrastructure as a service (IaaS)
+* Platform as a service (PaaS)
+* Serverless
+* Software as a service (SaaS)
+
+Understand these different types of services, and explain what they are and how they differ. Discuss which services are most relevant for IoT developers.
+
+## Rubric
+
+| Criteria | Exemplary | Adequate | Needs Improvement |
+| -------- | --------- | -------- | ----------------- |
+| Explain the different cloud offerings | Provided clear explanations of all 4 types of services | Explained 3 types of services | Explained only 1 or 2 types of services |
+| Explain which offering is relevant for IoT | Gave a detailed explanation of which services are relevant for IoT developers and why | Gave an explanation of which services are relevant for IoT developers but did not explain why | Could not explain which services are relevant for IoT developers |
+
+---
+
+**Disclaimer**:
+This document has been translated using the AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). While we aim for accuracy, please note that automated translations may include errors or inaccuracies. The original document in its native language should be regarded as the authoritative source. For critical information, professional human translation is advised. We are not responsible for any misunderstandings or misinterpretations resulting from the use of this translation.
\ No newline at end of file
diff --git a/translations/en/2-farm/lessons/4-migrate-your-plant-to-the-cloud/single-board-computer-connect-hub.md b/translations/en/2-farm/lessons/4-migrate-your-plant-to-the-cloud/single-board-computer-connect-hub.md
new file mode 100644
index 00000000..e0d002d6
--- /dev/null
+++ b/translations/en/2-farm/lessons/4-migrate-your-plant-to-the-cloud/single-board-computer-connect-hub.md
@@ -0,0 +1,130 @@
+
+# Connect your IoT device to the cloud - Virtual IoT Hardware and Raspberry Pi
+
+In this part of the lesson, you will connect your virtual IoT device or Raspberry Pi to your IoT Hub to send telemetry data and receive commands.
+
+## Connect your device to IoT Hub
+
+The next step is to connect your device to the IoT Hub.
+
+### Task - Connect to IoT Hub
+
+1. Open the `soil-moisture-sensor` folder in VS Code. If you are using a virtual IoT device, ensure the virtual environment is running in the terminal.
+
+1. Install some additional Pip packages:
+
+ ```sh
+ pip3 install azure-iot-device
+ ```
+
+ `azure-iot-device` is a library used to communicate with your IoT Hub.
+
+1. Add the following imports to the top of the `app.py` file, just below the existing imports:
+
+ ```python
+ from azure.iot.device import IoTHubDeviceClient, Message, MethodResponse
+ ```
+
+ This code imports the SDK needed to communicate with your IoT Hub.
+
+1. Remove the `import paho.mqtt.client as mqtt` line, as this library is no longer required. Delete all the MQTT-related code, including the topic names, any code that uses `mqtt_client`, and the `handle_command` function. Keep the `while True:` loop, but remove the `mqtt_client.publish` line from this loop.
+
+1. Add the following code below the import statements:
+
+ ```python
+ connection_string = ""
+ ```
+
+ Replace `` with the connection string you retrieved for the device earlier in this lesson.
+
+ > 💁 This is not a best practice. Connection strings should never be stored in source code, as they can be checked into source control and accessed by others. We are doing this here for simplicity. Ideally, you should use something like an environment variable and a tool like [`python-dotenv`](https://pypi.org/project/python-dotenv/). You will learn more about this in a future lesson.
+
+1. Below this code, add the following to create a device client object that can communicate with the IoT Hub and connect it:
+
+ ```python
+ device_client = IoTHubDeviceClient.create_from_connection_string(connection_string)
+
+ print('Connecting')
+ device_client.connect()
+ print('Connected')
+ ```
+
+1. Run this code. You will see your device connect.
+
+ ```output
+ pi@raspberrypi:~/soil-moisture-sensor $ python3 app.py
+ Connecting
+ Connected
+ Soil moisture: 379
+ ```
+
+## Send telemetry
+
+Now that your device is connected, you can send telemetry data to the IoT Hub instead of the MQTT broker.
+
+### Task - Send telemetry
+
+1. Add the following code inside the `while True` loop, just before the sleep statement:
+
+ ```python
+ message = Message(json.dumps({ 'soil_moisture': soil_moisture }))
+ device_client.send_message(message)
+ ```
+
+ This code creates an IoT Hub `Message` containing the soil moisture reading as a JSON string, then sends it to the IoT Hub as a device-to-cloud message.
+
+## Handle commands
+
+Your device needs to handle commands from the server code to control the relay. These commands are sent as direct method requests.
+
+### Task - Handle a direct method request
+
+1. Add the following code before the `while True` loop:
+
+ ```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()
+ ```
+
+ This defines a method, `handle_method_request`, which will be called when a direct method is invoked by the IoT Hub. Each direct method has a name, and this code expects a method called `relay_on` to turn the relay on, and `relay_off` to turn the relay off.
+
+ > 💁 This could also be implemented as a single direct method request, passing the desired state of the relay in a payload that can be included with the method request and accessed from the `request` object.
+
+1. Direct methods require a response to indicate that they have been handled. Add the following code at the end of the `handle_method_request` function to create a response to the request:
+
+ ```python
+ method_response = MethodResponse.create_from_method_request(request, 200)
+ device_client.send_method_response(method_response)
+ ```
+
+ This code sends a response to the direct method request with an HTTP status code of 200 and sends it back to the IoT Hub.
+
+1. Add the following code below this function definition:
+
+ ```python
+ device_client.on_method_request_received = handle_method_request
+ ```
+
+ This code tells the IoT Hub client to call the `handle_method_request` function whenever a direct method is invoked.
+
+> 💁 You can find this code in the [code/pi](../../../../../2-farm/lessons/4-migrate-your-plant-to-the-cloud/code/pi) or [code/virtual-device](../../../../../2-farm/lessons/4-migrate-your-plant-to-the-cloud/code/virtual-device) folder.
+
+😀 Your soil moisture sensor program is now connected to your IoT Hub!
+
+---
+
+**Disclaimer**:
+This document has been translated using the AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). While we aim for accuracy, please note that automated translations may include errors or inaccuracies. The original document in its native language should be regarded as the authoritative source. For critical information, professional human translation is advised. We are not responsible for any misunderstandings or misinterpretations resulting from the use of this translation.
\ No newline at end of file
diff --git a/translations/en/2-farm/lessons/4-migrate-your-plant-to-the-cloud/wio-terminal-connect-hub.md b/translations/en/2-farm/lessons/4-migrate-your-plant-to-the-cloud/wio-terminal-connect-hub.md
new file mode 100644
index 00000000..249dab87
--- /dev/null
+++ b/translations/en/2-farm/lessons/4-migrate-your-plant-to-the-cloud/wio-terminal-connect-hub.md
@@ -0,0 +1,306 @@
+
+# Connect your IoT device to the cloud - Wio Terminal
+
+In this part of the lesson, you will connect your Wio Terminal to your IoT Hub to send telemetry data and receive commands.
+
+## Connect your device to IoT Hub
+
+The next step is to connect your device to IoT Hub.
+
+### Task - Connect to IoT Hub
+
+1. Open the `soil-moisture-sensor` project in VS Code.
+
+1. Open the `platformio.ini` file. Remove the `knolleary/PubSubClient` library dependency. This library was used to connect to the public MQTT broker, but it is not required for connecting to IoT Hub.
+
+1. Add the following library dependencies:
+
+ ```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
+ ```
+
+ The `Seeed Arduino RTC` library provides functionality to interact with the real-time clock in the Wio Terminal, which is used to keep track of time. The other libraries enable your IoT device to connect to IoT Hub.
+
+1. Add the following line to the bottom of the `platformio.ini` file:
+
+ ```ini
+ build_flags =
+ -DDONT_USE_UPLOADTOBLOB
+ ```
+
+ This sets a compiler flag required for compiling the Arduino IoT Hub code.
+
+1. Open the `config.h` header file. Remove all the MQTT settings and add the following constant for the device connection string:
+
+ ```cpp
+ // IoT Hub settings
+ const char *CONNECTION_STRING = "";
+ ```
+
+ Replace `` with the connection string for your device that you copied earlier.
+
+1. The connection to IoT Hub uses a time-based token, which means the IoT device needs to know the current time. Unlike operating systems such as Windows, macOS, or Linux, microcontrollers don't automatically synchronize the current time over the Internet. Therefore, you need to add code to retrieve the current time from an [NTP](https://wikipedia.org/wiki/Network_Time_Protocol) server. Once the time is retrieved, it can be stored in the Wio Terminal's real-time clock, allowing the device to request the correct time later, as long as it doesn't lose power. Add a new file called `ntp.h` with the following code:
+
+ ```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);
+ }
+ ```
+
+ The details of this code are beyond the scope of this lesson. It defines a function called `initTime` that retrieves the current time from an NTP server and sets the clock on the Wio Terminal.
+
+1. Open the `main.cpp` file and remove all the MQTT-related code, including the `PubSubClient.h` header file, the declaration of the `PubSubClient` variable, the `reconnectMQTTClient` and `createMQTTClient` methods, and any calls to these variables and methods. This file should only contain code for connecting to WiFi, retrieving soil moisture data, and creating a JSON document with the data.
+
+1. Add the following `#include` directives to the top of the `main.cpp` file to include header files for the IoT Hub libraries and for setting the time:
+
+ ```cpp
+ #include
+ #include
+ #include
+ #include "ntp.h"
+ ```
+
+1. Add the following call to the end of the `setup` function to set the current time:
+
+ ```cpp
+ initTime();
+ ```
+
+1. Add the following variable declaration to the top of the file, just below the include directives:
+
+ ```cpp
+ IOTHUB_DEVICE_CLIENT_LL_HANDLE _device_ll_handle;
+ ```
+
+ This declares an `IOTHUB_DEVICE_CLIENT_LL_HANDLE`, which is a handle for the connection to IoT Hub.
+
+1. Below this, add the following code:
+
+ ```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");
+ }
+ }
+ ```
+
+ This declares a callback function that will be triggered when the connection to IoT Hub changes status, such as connecting or disconnecting. The status will be printed to the serial port.
+
+1. Below this, add a function to connect to 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);
+ }
+ ```
+
+ This code initializes the IoT Hub library, then creates a connection using the connection string from the `config.h` header file. The connection is based on MQTT. If the connection fails, the error will be printed to the serial port—check the connection string if you see this in the output. Finally, the connection status callback is set up.
+
+1. Call this function in the `setup` function, below the call to `initTime`:
+
+ ```cpp
+ connectIoTHub();
+ ```
+
+1. Similar to the MQTT client, this code runs on a single thread and requires time to process messages sent by and to the hub. Add the following to the top of the `loop` function to handle this:
+
+ ```cpp
+ IoTHubDeviceClient_LL_DoWork(_device_ll_handle);
+ ```
+
+1. Build and upload the code. You will see the connection status in the serial monitor:
+
+ ```output
+ Connecting to WiFi..
+ Connected!
+ Fetched NTP epoch time is: 1619983687
+ Sending telemetry {"soil_moisture":391}
+ The device client is connected to iothub
+ ```
+
+ In the output, you will see the NTP time being fetched, followed by the device client connecting. It may take a few seconds to connect, so you might see soil moisture data in the output while the device is still connecting.
+
+ > 💁 You can convert the UNIX time from the NTP server into a more readable format using a website like [unixtimestamp.com](https://www.unixtimestamp.com).
+
+## Send telemetry
+
+Now that your device is connected, you can send telemetry data to IoT Hub instead of the MQTT broker.
+
+### Task - Send telemetry
+
+1. Add the following function above the `setup` function:
+
+ ```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);
+ }
+ ```
+
+ This code creates an IoT Hub message from a string passed as a parameter, sends it to the hub, and then cleans up the message object.
+
+1. Call this function in the `loop` function, just after the line where telemetry data is sent to the serial port:
+
+ ```cpp
+ sendTelemetry(telemetry.c_str());
+ ```
+
+## Handle commands
+
+Your device needs to handle commands from the server code to control the relay. These commands are sent as direct method requests.
+
+### Task - Handle a direct method request
+
+1. Add the following code before the `connectIoTHub` function:
+
+ ```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);
+ }
+ }
+ ```
+
+ This code defines a callback function that the IoT Hub library can call when it receives a direct method request. The requested method is passed in the `method_name` parameter. This function prints the method name to the serial port and turns the relay on or off based on the method name.
+
+ > 💁 This could also be implemented using a single direct method request, where the desired relay state is passed in a payload available from the `payload` parameter.
+
+1. Add the following code to the end of the `directMethodCallback` function:
+
+ ```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;
+ ```
+
+ Direct method requests require a response, which consists of two parts: a response message and a return code. This code creates a result in the form of the following JSON document:
+
+ ```JSON
+ {
+ "Result": ""
+ }
+ ```
+
+ The result is copied into the `response` parameter, and the size of the response is set in the `response_size` parameter. The function then returns `IOTHUB_CLIENT_OK` to indicate that the method was handled successfully.
+
+1. Wire up the callback by adding the following line to the end of the `connectIoTHub` function:
+
+ ```cpp
+ IoTHubClient_LL_SetDeviceMethodCallback(_device_ll_handle, directMethodCallback, NULL);
+ ```
+
+1. The `loop` function calls the `IoTHubDeviceClient_LL_DoWork` function to process events sent by IoT Hub. Currently, this is only called every 10 seconds due to the `delay`, meaning direct methods are processed only every 10 seconds. To make this more efficient, the 10-second delay can be implemented as multiple shorter delays, calling `IoTHubDeviceClient_LL_DoWork` each time. Add the following code above the `loop` function:
+
+ ```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);
+ }
+ ```
+
+ This code loops repeatedly, calling `IoTHubDeviceClient_LL_DoWork` and delaying for 100ms each time. It repeats this process as many times as needed to achieve the delay specified in the `delay_time` parameter. This ensures the device waits no longer than 100ms to process direct method requests.
+
+1. In the `loop` function, remove the call to `IoTHubDeviceClient_LL_DoWork` and replace the `delay(10000)` call with the following line to use the new function:
+
+ ```cpp
+ work_delay(10000);
+ ```
+
+> 💁 You can find this code in the [code/wio-terminal](../../../../../2-farm/lessons/4-migrate-your-plant-to-the-cloud/code/wio-terminal) folder.
+
+😀 Your soil moisture sensor program is now connected to your IoT Hub!
+
+---
+
+**Disclaimer**:
+This document has been translated using the AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). While we aim for accuracy, please note that automated translations may include errors or inaccuracies. The original document in its native language should be regarded as the authoritative source. For critical information, professional human translation is advised. We are not responsible for any misunderstandings or misinterpretations resulting from the use of this translation.
\ No newline at end of file
diff --git a/translations/en/2-farm/lessons/5-migrate-application-to-the-cloud/README.md b/translations/en/2-farm/lessons/5-migrate-application-to-the-cloud/README.md
new file mode 100644
index 00000000..9ffa610e
--- /dev/null
+++ b/translations/en/2-farm/lessons/5-migrate-application-to-the-cloud/README.md
@@ -0,0 +1,654 @@
+
+# Migrate your application logic to the cloud
+
+
+
+> Sketchnote by [Nitya Narasimhan](https://github.com/nitya). Click the image for a larger version.
+
+This lesson was taught as part of the [IoT for Beginners Project 2 - Digital Agriculture series](https://youtube.com/playlist?list=PLmsFUfdnGr3yCutmcVg6eAUEfsGiFXgcx) from the [Microsoft Reactor](https://developer.microsoft.com/reactor/?WT.mc_id=academic-17441-jabenn).
+
+[](https://youtu.be/VVZDcs5u1_I)
+
+## Pre-lecture quiz
+
+[Pre-lecture quiz](https://black-meadow-040d15503.1.azurestaticapps.net/quiz/17)
+
+## Introduction
+
+In the previous lesson, you learned how to connect your plant soil moisture monitoring system and relay control to a cloud-based IoT service. The next step is to move the server code that manages the relay's timing to the cloud. In this lesson, you'll learn how to achieve this using serverless functions.
+
+In this lesson, we’ll cover:
+
+* [What is serverless?](../../../../../2-farm/lessons/5-migrate-application-to-the-cloud)
+* [Create a serverless application](../../../../../2-farm/lessons/5-migrate-application-to-the-cloud)
+* [Create an IoT Hub event trigger](../../../../../2-farm/lessons/5-migrate-application-to-the-cloud)
+* [Send direct method requests from serverless code](../../../../../2-farm/lessons/5-migrate-application-to-the-cloud)
+* [Deploy your serverless code to the cloud](../../../../../2-farm/lessons/5-migrate-application-to-the-cloud)
+
+## What is serverless?
+
+Serverless, or serverless computing, involves creating small blocks of code that run in the cloud in response to specific events. When an event occurs, your code is executed and receives data about the event. These events can originate from various sources, such as web requests, messages added to a queue, changes in a database, or messages sent to an IoT service by IoT devices.
+
+
+
+> 💁 If you've used database triggers before, think of this as a similar concept—code being triggered by an event, such as inserting a row.
+
+
+
+Your code only runs when an event occurs; it doesn’t remain active at other times. When an event happens, your code is loaded and executed. This makes serverless highly scalable—if multiple events occur simultaneously, the cloud provider can execute your function as many times as needed, across available servers. However, if you need to share information between events, you’ll need to store it in a database or another persistent storage, as serverless functions don’t maintain in-memory state.
+
+Your code is written as a function that takes event details as a parameter. A variety of programming languages can be used to write these serverless functions.
+
+> 🎓 Serverless is also known as Functions as a Service (FaaS) because each event trigger is implemented as a function in code.
+
+Despite the name, serverless does use servers. The term "serverless" refers to the fact that developers don’t need to manage the servers running their code. Instead, the cloud provider handles server allocation, networking, storage, CPU, memory, and other resources. You pay for the time your code runs and the memory it uses, rather than for a specific server.
+
+> 💰 Serverless is one of the most cost-effective ways to run code in the cloud. For example, at the time of writing, one cloud provider allows up to 1,000,000 function executions per month for free. Beyond that, they charge $0.20 per 1,000,000 executions. You only pay when your code runs.
+
+For IoT developers, the serverless model is ideal. You can write a function that responds to messages from any IoT device connected to your cloud-hosted IoT service. Your code will handle all incoming messages but will only run when needed.
+
+✅ Reflect on the server code you wrote to listen for MQTT messages. How might this code operate in the cloud using serverless? What changes would be necessary to adapt it for serverless computing?
+
+> 💁 The serverless model is expanding to other cloud services. For instance, serverless databases are available, where you pay per request (e.g., a query or insert). Pricing is often based on the complexity of the request. For example, a simple query for one row costs less than a complex operation involving multiple table joins and thousands of rows.
+
+## Create a serverless application
+
+Microsoft’s serverless computing service is called Azure Functions.
+
+
+
+The short video below provides an overview of Azure Functions:
+
+[](https://www.youtube.com/watch?v=8-jz5f_JyEQ)
+
+> 🎥 Click the image above to watch the video.
+
+✅ Take a moment to research and read the overview of Azure Functions in the [Microsoft Azure Functions documentation](https://docs.microsoft.com/azure/azure-functions/functions-overview?WT.mc_id=academic-17441-jabenn).
+
+To create Azure Functions, you start with a Functions app in your preferred programming language. Azure Functions natively supports Python, JavaScript, TypeScript, C#, F#, Java, and PowerShell. In this lesson, you’ll learn how to create an Azure Functions app using Python.
+
+> 💁 Azure Functions also supports custom handlers, allowing you to write functions in any language that supports HTTP requests, including older languages like COBOL.
+
+A Functions app consists of one or more *triggers*—functions that respond to events. Multiple triggers can exist within a single app, sharing common configurations. For example, the app’s configuration file can store IoT Hub connection details, which all triggers in the app can use.
+
+### Task - Install the Azure Functions tooling
+
+> At the time of writing, the Azure Functions tools for Python projects are not fully compatible with Apple Silicon. Use an Intel-based Mac, Windows PC, or Linux PC instead.
+
+One advantage of Azure Functions is the ability to run them locally. The same runtime used in the cloud can be run on your computer, enabling you to test and debug your code locally. Once satisfied, you can deploy the code to the cloud.
+
+The Azure Functions tooling is available as a CLI, called the Azure Functions Core Tools.
+
+1. Install the Azure Functions Core Tools by following the instructions in the [Azure Functions Core Tools documentation](https://docs.microsoft.com/azure/azure-functions/functions-run-local?WT.mc_id=academic-17441-jabenn).
+
+1. Install the Azure Functions extension for VS Code. This extension supports creating, debugging, and deploying Azure Functions. Refer to the [Azure Functions extension documentation](https://marketplace.visualstudio.com/items?WT.mc_id=academic-17441-jabenn&itemName=ms-azuretools.vscode-azurefunctions) for installation instructions.
+
+When deploying your Azure Functions app to the cloud, it requires a small amount of cloud storage for application files and logs. Locally, you can use a storage emulator called [Azurite](https://github.com/Azure/Azurite), which mimics cloud storage.
+
+> 🎓 In Azure, the storage used by Azure Functions is an Azure Storage Account. These accounts can store files, blobs, tables, or queues. A single storage account can be shared across multiple apps, such as a Functions app and a web app.
+
+1. Azurite is a Node.js app, so you’ll need to install Node.js. Download and install it from the [Node.js website](https://nodejs.org/). On a Mac, you can also use [Homebrew](https://formulae.brew.sh/formula/node).
+
+1. Install Azurite using the following command (`npm` is included with Node.js):
+
+ ```sh
+ npm install -g azurite
+ ```
+
+1. Create a folder named `azurite` for Azurite to store data:
+
+ ```sh
+ mkdir azurite
+ ```
+
+1. Run Azurite, specifying the new folder:
+
+ ```sh
+ azurite --location azurite
+ ```
+
+ Azurite will launch and be ready for the local Functions runtime to connect.
+
+ ```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
+ ```
+
+### Task - Create an Azure Functions project
+
+The Azure Functions CLI can be used to create a new Functions app.
+
+1. Create a folder for your Functions app and navigate to it. Name it `soil-moisture-trigger`:
+
+ ```sh
+ mkdir soil-moisture-trigger
+ cd soil-moisture-trigger
+ ```
+
+1. Create a Python virtual environment in this folder:
+
+ ```sh
+ python3 -m venv .venv
+ ```
+
+1. Activate the virtual environment:
+
+ * On Windows:
+ * If using the Command Prompt or Windows Terminal, run:
+
+ ```cmd
+ .venv\Scripts\activate.bat
+ ```
+
+ * If using PowerShell, run:
+
+ ```powershell
+ .\.venv\Scripts\Activate.ps1
+ ```
+
+ * On macOS or Linux, run:
+
+ ```cmd
+ source ./.venv/bin/activate
+ ```
+
+ > 💁 Always run the activation command from the folder where you created the virtual environment. Avoid navigating into the `.venv` folder directly.
+
+1. Create a Functions app in this folder:
+
+ ```sh
+ func init --worker-runtime python soil-moisture-trigger
+ ```
+
+ This will generate three files:
+
+ * `host.json` - Contains settings for your Functions app. No modifications are needed.
+ * `local.settings.json` - Stores local settings, such as IoT Hub connection strings. These settings are not included in source control or deployed to the cloud.
+ * `requirements.txt` - A [Pip requirements file](https://pip.pypa.io/en/stable/user_guide/#requirements-files) listing the necessary Pip packages.
+
+1. Update the `local.settings.json` file to connect to the Azurite emulator:
+
+ ```json
+ "AzureWebJobsStorage": "UseDevelopmentStorage=true",
+ ```
+
+1. Install the required Pip packages:
+
+ ```sh
+ pip install -r requirements.txt
+ ```
+
+ > 💁 Ensure all required Pip packages are listed in this file so they are installed when the app is deployed to the cloud.
+
+1. Test the setup by starting the Functions runtime:
+
+ ```sh
+ func start
+ ```
+
+ The runtime will start and indicate that no job functions (triggers) were found.
+
+ ```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.
+ ```
+> ⚠️ If you receive a firewall notification, allow access because the `func` application needs permission to read and write to your network.
+> ⚠️ If you are using macOS, there may be warnings in the output:
+>
+> ```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.
+ > ```
+>
+> You can ignore these as long as the Functions app starts correctly and lists the running functions. As mentioned in [this question on the 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) it can be ignored.
+
+1. Stop the Functions app by pressing `ctrl+c`.
+
+1. Open the current folder in VS Code, either by opening VS Code, then opening this folder, or by running the following:
+
+ ```sh
+ code .
+ ```
+
+ VS Code will detect your Functions project and show a notification saying:
+
+ ```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?
+ ```
+
+ 
+
+ Select **Yes** from this notification.
+
+1. Make sure the Python virtual environment is running in the VS Code terminal. Terminate it and restart it if necessary.
+
+## Create an IoT Hub event trigger
+
+The Functions app acts as the framework for your serverless code. To handle IoT Hub events, you can add an IoT Hub trigger to this app. This trigger connects to the stream of messages sent to the IoT Hub and processes them. To access this stream, your trigger must connect to the IoT Hub's *event hub compatible endpoint*.
+
+IoT Hub is built on another Azure service called Azure Event Hubs. Event Hubs enables sending and receiving messages, and IoT Hub extends this functionality with features tailored for IoT devices. The process of connecting to read messages from IoT Hub is the same as connecting to Event Hubs.
+
+✅ Research task: Read the overview of Event Hubs in the [Azure Event Hubs documentation](https://docs.microsoft.com/azure/event-hubs/event-hubs-about?WT.mc_id=academic-17441-jabenn). How do its basic features compare to IoT Hub?
+
+For an IoT device to connect to the IoT Hub, it must use a secret key to ensure only authorized devices can connect. Similarly, when connecting to read messages, your code will need a connection string containing a secret key and details about the IoT Hub.
+
+> 💁 The default connection string provided has **iothubowner** permissions, granting full access to the IoT Hub. Ideally, you should use the minimum permissions required. This will be covered in the next lesson.
+
+Once the trigger is connected, the function's code will execute for every message sent to the IoT Hub, regardless of the device that sent it. The trigger passes the message as a parameter.
+
+### Task - Get the Event Hub compatible endpoint connection string
+
+1. Run the following command in the VS Code terminal to retrieve the connection string for the IoT Hub's Event Hub compatible endpoint:
+
+ ```sh
+ az iot hub connection-string show --default-eventhub \
+ --output table \
+ --hub-name
+ ```
+
+ Replace `` with the name of your IoT Hub.
+
+1. In VS Code, open the `local.settings.json` file. Add the following value inside the `Values` section:
+
+ ```json
+ "IOT_HUB_CONNECTION_STRING": ""
+ ```
+
+ Replace `` with the value obtained in the previous step. Ensure you add a comma after the preceding line to maintain valid JSON formatting.
+
+### Task - Create an event trigger
+
+You are now ready to create the event trigger.
+
+1. From the VS Code terminal, run the following command inside the `soil-moisture-trigger` folder:
+
+ ```sh
+ func new --name iot-hub-trigger --template "Azure Event Hub trigger"
+ ```
+
+ This creates a new Function called `iot-hub-trigger`. The trigger connects to the Event Hub compatible endpoint on the IoT Hub, using an event hub trigger (there is no specific IoT Hub trigger).
+
+This will create a folder named `iot-hub-trigger` inside the `soil-moisture-trigger` folder. The folder will contain the following files:
+
+* `__init__.py` - This Python file contains the trigger code. The file name follows Python's standard convention for turning a folder into a module.
+
+ This file will include the following code:
+
+ ```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'))
+ ```
+
+ The core of the trigger is the `main` function, which is called whenever events are received from the IoT Hub. The `main` function has a parameter named `event` that contains an `EventHubEvent`. Each time a message is sent to the IoT Hub, this function is invoked with the message as the `event`, along with properties similar to the annotations discussed in the previous lesson.
+
+ The function's primary task is to log the event.
+
+* `function.json` - This file contains the trigger's configuration. The main configuration resides in a section called `bindings`. A binding is the connection between Azure Functions and other Azure services. This function has an input binding to an event hub, enabling it to receive data.
+
+ > 💁 Output bindings are also possible, allowing the function's output to be sent to another service. For example, you could add an output binding to a database, and the IoT Hub event returned by the function would be automatically inserted into the database.
+
+ ✅ Research task: Learn more about bindings in the [Azure Functions triggers and bindings concepts documentation](https://docs.microsoft.com/azure/azure-functions/functions-triggers-bindings?WT.mc_id=academic-17441-jabenn&tabs=python).
+
+ The `bindings` section includes the following key configurations:
+
+ * `"type": "eventHubTrigger"` - Specifies that the function listens to events from an Event Hub.
+ * `"name": "events"` - Defines the parameter name for the Event Hub events, matching the parameter name in the Python `main` function.
+ * `"direction": "in"` - Indicates this is an input binding, where data flows into the function from the event hub.
+ * `"connection": ""` - Specifies the name of the setting containing the connection string. When running locally, this setting is read from the `local.settings.json` file.
+
+ > 💁 The connection string cannot be stored directly in the `function.json` file to prevent accidental exposure.
+
+1. Due to [a bug in the Azure Functions template](https://github.com/Azure/azure-functions-templates/issues/1250), the `function.json` file contains an incorrect value for the `cardinality` field. Update this field from `many` to `one`:
+
+ ```json
+ "cardinality": "one",
+ ```
+
+1. Update the `"connection"` value in the `function.json` file to reference the new setting added to the `local.settings.json` file:
+
+ ```json
+ "connection": "IOT_HUB_CONNECTION_STRING",
+ ```
+
+ > 💁 Remember, this should reference the setting name, not the actual connection string.
+
+1. The connection string includes the `eventHubName` value, so the `eventHubName` field in the `function.json` file should be cleared. Set this value to an empty string:
+
+ ```json
+ "eventHubName": "",
+ ```
+
+### Task - Run the event trigger
+
+1. Ensure the IoT Hub event monitor is not running. If it runs simultaneously with the Functions app, the Functions app won't be able to connect and process events.
+
+ > 💁 Multiple apps can connect to IoT Hub endpoints using different *consumer groups*. This will be covered in a later lesson.
+
+1. To start the Functions app, run the following command in the VS Code terminal:
+
+ ```sh
+ func start
+ ```
+
+ The Functions app will start, discover the `iot-hub-trigger` function, and process any events sent to the IoT Hub in the past day.
+
+ ```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)
+ ```
+
+ Each function call will be logged with `Executing 'Functions.iot-hub-trigger'` and `Executed 'Functions.iot-hub-trigger'` blocks, showing the number of messages processed in each call.
+
+1. Ensure your IoT device is running. You should see new soil moisture messages appearing in the Functions app.
+
+1. Stop and restart the Functions app. It will only process new messages, not previously processed ones.
+
+> 💁 VS Code supports debugging Functions. You can set breakpoints by clicking next to the line numbers, selecting *Run -> Toggle breakpoint*, or pressing `F9`. Start debugging by selecting *Run -> Start debugging*, pressing `F5`, or using the *Run and debug* pane. This allows you to inspect the details of the events being processed.
+
+#### Troubleshooting
+
+* If you encounter the following error:
+
+ ```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.
+ ```
+
+ Ensure Azurite is running and the `AzureWebJobsStorage` setting in `local.settings.json` is set to `UseDevelopmentStorage=true`.
+
+* If you encounter the following error:
+
+ ```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'
+ ```
+
+ Verify that the `cardinality` field in `function.json` is set to `one`.
+
+* If you encounter the following error:
+
+ ```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').
+ ```
+
+ Ensure the `eventHubName` field in `function.json` is set to an empty string.
+
+## Send direct method requests from serverless code
+
+So far, your Functions app listens to messages from the IoT Hub using the Event Hub compatible endpoint. Now, you need to send commands to the IoT device. This is achieved by connecting to the IoT Hub via the *Registry Manager*. The Registry Manager allows you to manage registered devices, send cloud-to-device messages, invoke direct method requests, or update the device twin. It also enables registering, updating, or deleting IoT devices.
+
+To connect to the Registry Manager, you need a connection string.
+
+### Task - Get the Registry Manager connection string
+
+1. Run the following command to retrieve the connection string:
+
+ ```sh
+ az iot hub connection-string show --policy-name service \
+ --output table \
+ --hub-name
+ ```
+
+ Replace `` with the name of your IoT Hub.
+
+ The connection string is requested for the *ServiceConnect* policy using the `--policy-name service` parameter. This policy allows your code to send messages to IoT devices.
+
+ ✅ Research task: Learn about the different policies in the [IoT Hub permissions documentation](https://docs.microsoft.com/azure/iot-hub/iot-hub-devguide-security#iot-hub-permissions?WT.mc_id=academic-17441-jabenn).
+
+1. In VS Code, open the `local.settings.json` file. Add the following value inside the `Values` section:
+
+ ```json
+ "REGISTRY_MANAGER_CONNECTION_STRING": ""
+ ```
+
+ Replace `` with the value obtained in the previous step. Ensure you add a comma after the preceding line to maintain valid JSON formatting.
+
+### Task - Send a direct method request to a device
+
+1. The SDK for the Registry Manager is available as a Pip package. Add the following line to the `requirements.txt` file to include the dependency:
+
+ ```sh
+ azure-iot-hub
+ ```
+
+1. Ensure the VS Code terminal has the virtual environment activated, and run the following command to install the Pip packages:
+
+ ```sh
+ pip install -r requirements.txt
+ ```
+
+1. Add the following imports to the `__init__.py` file:
+
+ ```python
+ import json
+ import os
+ from azure.iot.hub import IoTHubRegistryManager
+ from azure.iot.hub.models import CloudToDeviceMethod
+ ```
+
+ This imports system libraries and the libraries required to interact with the Registry Manager and send direct method requests.
+
+1. Remove the existing code inside the `main` method, but retain the method itself.
+
+1. Add the following code to the `main` method:
+
+ ```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}')
+ ```
+
+ This code extracts the event body containing the JSON message sent by the IoT device. It retrieves the device ID from the annotations passed with the message. The event body contains the telemetry message, while the `iothub_metadata` dictionary includes properties like the device ID and the message's timestamp.
+
+ The extracted information is logged, and you will see this in the terminal when running the Functions app locally.
+
+1. Add the following code below the previous section:
+
+ ```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='{}')
+ ```
+
+ This code retrieves the soil moisture value from the message. Based on the value, it creates a helper class for the `relay_on` or `relay_off` direct method request. Since the method request doesn't require a payload, an empty JSON document is sent.
+
+1. Add the following code below this section:
+
+ ```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)
+ ```
+This code loads the `REGISTRY_MANAGER_CONNECTION_STRING` from the `local.settings.json` file. The values in this file are made available as environment variables, which can be accessed using the `os.environ` function. This function returns a dictionary of all the environment variables.
+
+> 💁 When this code is deployed to the cloud, the values in the `local.settings.json` file will be set as *Application Settings*, and these can be accessed from environment variables.
+
+The code then creates an instance of the Registry Manager helper class using the connection string.
+
+1. Add the following code below this:
+
+ ```python
+ registry_manager.invoke_device_method(device_id, direct_method)
+
+ logging.info('Direct method request sent!')
+ ```
+
+ This code instructs the registry manager to send the direct method request to the device that sent the telemetry.
+
+ > 💁 In the earlier versions of the app you created using MQTT, the relay control commands were sent to all devices. The code assumed there would only be one device. This version of the code sends the method request to a single device, making it suitable for setups with multiple moisture sensors and relays, ensuring the correct direct method request is sent to the appropriate device.
+
+1. Run the Functions app and ensure your IoT device is sending data. You will see the messages being processed and the direct method requests being sent. Move the soil moisture sensor in and out of the soil to observe the values change and the relay turn on and off.
+
+> 💁 You can find this code in the [code/functions](../../../../../2-farm/lessons/5-migrate-application-to-the-cloud/code/functions) folder.
+
+## Deploy your serverless code to the cloud
+
+Your code is now functioning locally, so the next step is to deploy the Functions App to the cloud.
+
+### Task - create the cloud resources
+
+Your Functions app needs to be deployed to a Functions App resource in Azure, which will reside inside the Resource Group you created for your IoT Hub. Additionally, you will need to create a Storage Account in Azure to replace the emulated one running locally.
+
+1. Run the following command to create a storage account:
+
+ ```sh
+ az storage account create --resource-group soil-moisture-sensor \
+ --sku Standard_LRS \
+ --name
+ ```
+
+ Replace `` with a name for your storage account. This name must be globally unique as it forms part of the URL used to access the storage account. Only lowercase letters and numbers are allowed, and the name is limited to 24 characters. Use something like `sms` and append a unique identifier, such as random words or your name.
+
+ The `--sku Standard_LRS` specifies the pricing tier, selecting the lowest-cost general-purpose account. There is no free tier for storage, and you pay based on usage. The costs are relatively low, with the most expensive storage costing less than US$0.05 per month per gigabyte stored.
+
+ ✅ Learn more about pricing on the [Azure Storage Account pricing page](https://azure.microsoft.com/pricing/details/storage/?WT.mc_id=academic-17441-jabenn)
+
+1. Run the following command to create a 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
+ ```
+
+ Replace `` with the location you used when creating the Resource Group in the previous lesson.
+
+ Replace `` with the name of the storage account you created in the previous step.
+
+ Replace `` with a unique name for your Functions App. This name must also be globally unique as it forms part of the URL used to access the Functions App. Use something like `soil-moisture-sensor-` and append a unique identifier, such as random words or your name.
+
+ The `--functions-version 3` option specifies the version of Azure Functions to use. Version 3 is the latest version.
+
+ The `--os-type Linux` tells the Functions runtime to use Linux as the operating system to host these functions. Functions can be hosted on Linux or Windows, depending on the programming language used. Python apps are only supported on Linux.
+
+### Task - upload your application settings
+
+When developing your Functions App, you stored some settings in the `local.settings.json` file for the IoT Hub connection strings. These settings need to be written to Application Settings in your Function App in Azure so they can be used by your code.
+
+> 🎓 The `local.settings.json` file is intended for local development settings only and should not be checked into source code control, such as GitHub. When deployed to the cloud, Application Settings are used. Application Settings are key/value pairs hosted in the cloud and are accessed as environment variables either in your code or by the runtime when connecting your code to IoT Hub.
+
+1. Run the following command to set the `IOT_HUB_CONNECTION_STRING` setting in the Functions App Application Settings:
+
+ ```sh
+ az functionapp config appsettings set --resource-group soil-moisture-sensor \
+ --name \
+ --settings "IOT_HUB_CONNECTION_STRING="
+ ```
+
+ Replace `` with the name you used for your Functions App.
+
+ Replace `` with the value of `IOT_HUB_CONNECTION_STRING` from your `local.settings.json` file.
+
+1. Repeat the step above, but set the value of `REGISTRY_MANAGER_CONNECTION_STRING` to the corresponding value from your `local.settings.json` file.
+
+When you run these commands, they will also output a list of all the Application Settings for the Functions App. You can use this to verify that your values are set correctly.
+
+> 💁 You will notice a value already set for `AzureWebJobsStorage`. In your `local.settings.json` file, this was set to use the local storage emulator. When you created the Functions App, the storage account was passed as a parameter, and this value was automatically set in the Application Settings.
+
+### Task - deploy your Functions App to the cloud
+
+Now that the Functions App is ready, you can deploy your code.
+
+1. Run the following command from the VS Code terminal to publish your Functions App:
+
+ ```sh
+ func azure functionapp publish
+ ```
+
+ Replace `` with the name you used for your Functions App.
+
+The code will be packaged and sent to the Functions App, where it will be deployed and started. The console will display a lot of output, ending with confirmation of the deployment and a list of the deployed functions. In this case, the list will only include the trigger.
+
+```output
+Deployment successful.
+Remote build succeeded!
+Syncing triggers...
+Functions in soil-moisture-sensor:
+ iot-hub-trigger - [eventHubTrigger]
+```
+
+Ensure your IoT device is running. Adjust the soil moisture levels by moving the sensor in and out of the soil. You will see the relay turn on and off as the soil moisture changes.
+
+---
+
+## 🚀 Challenge
+
+In the previous lesson, you managed the relay timing by unsubscribing from MQTT messages while the relay was on and for a short period after it was turned off. This method cannot be used here because you cannot unsubscribe your IoT Hub trigger.
+
+Think about alternative ways to handle this in your Functions App.
+
+## Post-lecture quiz
+
+[Post-lecture quiz](https://black-meadow-040d15503.1.azurestaticapps.net/quiz/18)
+
+## Review & Self Study
+
+* Learn about serverless computing on the [Serverless Computing page on Wikipedia](https://wikipedia.org/wiki/Serverless_computing)
+* Explore using serverless in Azure, including additional examples, in the [Go serverless for your IoT needs Azure blog post](https://azure.microsoft.com/blog/go-serverless-for-your-iot-needs/?WT.mc_id=academic-17441-jabenn)
+* Dive deeper into Azure Functions on the [Azure Functions YouTube channel](https://www.youtube.com/c/AzureFunctions)
+
+## Assignment
+
+[Add manual relay control](assignment.md)
+
+---
+
+**Disclaimer**:
+This document has been translated using the AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). While we aim for accuracy, please note that automated translations may include errors or inaccuracies. The original document in its native language should be regarded as the authoritative source. For critical information, professional human translation is advised. We are not responsible for any misunderstandings or misinterpretations resulting from the use of this translation.
\ No newline at end of file
diff --git a/translations/en/2-farm/lessons/5-migrate-application-to-the-cloud/assignment.md b/translations/en/2-farm/lessons/5-migrate-application-to-the-cloud/assignment.md
new file mode 100644
index 00000000..c347217b
--- /dev/null
+++ b/translations/en/2-farm/lessons/5-migrate-application-to-the-cloud/assignment.md
@@ -0,0 +1,70 @@
+
+# Add manual relay control
+
+## Instructions
+
+Serverless code can be activated by various events, including HTTP requests. You can use HTTP triggers to add a manual override for your relay control, enabling someone to turn the relay on or off via a web request.
+
+For this task, you need to add two HTTP triggers to your Functions App to control the relay (turn it on and off), applying what you've learned in this lesson to send commands to the device.
+
+Some tips:
+
+* You can add an HTTP trigger to your existing Functions App using the following command:
+
+ ```sh
+ func new --name --template "HTTP trigger"
+ ```
+
+ Replace `` with the name of your HTTP trigger. Use names like `relay_on` and `relay_off`.
+
+* HTTP triggers can include access control. By default, they require a function-specific API key to be included in the URL to execute. For this task, you can remove this restriction so anyone can run the function. To do this, modify the `authLevel` setting in the `function.json` file for the HTTP triggers to the following:
+
+ ```json
+ "authLevel": "anonymous"
+ ```
+
+ > 💁 You can find more details about this access control in the [Function access keys documentation](https://docs.microsoft.com/azure/azure-functions/functions-bindings-http-webhook-trigger?WT.mc_id=academic-17441-jabenn#authorization-keys).
+
+* HTTP triggers support GET and POST requests by default. This means you can call them using your web browser, as browsers make GET requests.
+
+ When running your Functions App locally, you will see the URL of the trigger:
+
+ ```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
+ ```
+
+ Copy the URL into your browser and press `Enter`, or `Ctrl+click` (`Cmd+click` on macOS) the link in the terminal window in VS Code to open it in your default browser. This will execute the trigger.
+
+ > 💁 Note that the URL includes `/api` - HTTP triggers are placed in the `api` subdomain by default.
+
+* Once you deploy the Functions App, the HTTP trigger URL will be:
+
+ `https://.azurewebsites.net/api/`
+
+ Here, `` is the name of your Functions App, and `` is the name of your trigger.
+
+## Rubric
+
+| Criteria | Exemplary | Adequate | Needs Improvement |
+| -------- | --------- | -------- | ----------------- |
+| Create HTTP triggers | Created 2 triggers to turn the relay on and off, with appropriate names | Created one trigger with an appropriate name | Was unable to create any triggers |
+| Control the relay from the HTTP triggers | Successfully connected both triggers to IoT Hub and controlled the relay as intended | Successfully connected one trigger to IoT Hub and controlled the relay as intended | Failed to connect the triggers to IoT Hub |
+
+---
+
+**Disclaimer**:
+This document has been translated using the AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). While we aim for accuracy, please note that automated translations may include errors or inaccuracies. The original document in its native language should be regarded as the authoritative source. For critical information, professional human translation is advised. We are not responsible for any misunderstandings or misinterpretations resulting from the use of this translation.
\ No newline at end of file
diff --git a/translations/en/2-farm/lessons/6-keep-your-plant-secure/README.md b/translations/en/2-farm/lessons/6-keep-your-plant-secure/README.md
new file mode 100644
index 00000000..ba893d79
--- /dev/null
+++ b/translations/en/2-farm/lessons/6-keep-your-plant-secure/README.md
@@ -0,0 +1,245 @@
+
+# Keep your plant secure
+
+
+
+> Sketchnote by [Nitya Narasimhan](https://github.com/nitya). Click the image for a larger version.
+
+## Pre-lecture quiz
+
+[Pre-lecture quiz](https://black-meadow-040d15503.1.azurestaticapps.net/quiz/19)
+
+## Introduction
+
+In the previous lessons, you built a soil monitoring IoT device and connected it to the cloud. But what if hackers working for a competing farmer managed to take control of your IoT devices? They could send false high soil moisture readings so your plants never get watered, or turn on your irrigation system continuously, drowning your plants and costing you a fortune in water bills.
+
+In this lesson, you'll learn how to secure IoT devices. Since this is the final lesson for this project, you'll also learn how to clean up your cloud resources to avoid unnecessary costs.
+
+This lesson will cover:
+
+* [Why do you need to secure IoT devices?](../../../../../2-farm/lessons/6-keep-your-plant-secure)
+* [Cryptography](../../../../../2-farm/lessons/6-keep-your-plant-secure)
+* [Secure your IoT devices](../../../../../2-farm/lessons/6-keep-your-plant-secure)
+* [Generate and use an X.509 certificate](../../../../../2-farm/lessons/6-keep-your-plant-secure)
+
+> 🗑 This is the last lesson in this project, so after completing this lesson and the assignment, don't forget to clean up your cloud services. You will need the services to complete the assignment, so make sure to complete that first.
+>
+> Refer to [the clean up your project guide](../../../clean-up.md) if necessary for instructions on how to do this.
+
+## Why do you need to secure IoT devices?
+
+IoT security ensures that only authorized devices can connect to your cloud IoT service and send telemetry, and only your cloud service can send commands to your devices. IoT data can include sensitive information, such as medical or personal data, so your application must prioritize security to prevent data leaks.
+
+If your IoT application isn't secure, several risks arise:
+
+* A fake device could send incorrect data, causing your application to respond inappropriately. For instance, it could send constant high soil moisture readings, preventing your irrigation system from turning on, leading to plant death.
+* Unauthorized users could access data from IoT devices, including sensitive or business-critical information.
+* Hackers could send commands to manipulate a device in ways that could damage it or connected hardware.
+* By accessing an IoT device, hackers could infiltrate additional networks and gain access to private systems.
+* Malicious users could exploit personal data for blackmail.
+
+These scenarios are not hypothetical—they happen frequently. Here are some real-world examples:
+
+* In 2018, hackers exploited an open WiFi access point on a fish tank thermostat to infiltrate a casino's network and steal data. [The Hacker News - Casino Gets Hacked Through Its Internet-Connected Fish Tank Thermometer](https://thehackernews.com/2018/04/iot-hacking-thermometer.html)
+* In 2016, the Mirai Botnet launched a denial-of-service attack against Dyn, an Internet service provider, disrupting large portions of the Internet. The botnet used malware to connect to IoT devices like DVRs and cameras with default usernames and passwords, then launched the attack. [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)
+* Spiral Toys had a database of users of their CloudPets connected toys publicly accessible online. [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/).
+* Strava tagged runners you passed and displayed their routes, allowing strangers to see where you live. [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/).
+
+✅ Do some research: Look for more examples of IoT hacks and data breaches, especially involving personal items like Internet-connected toothbrushes or scales. Consider the impact these hacks could have on victims or customers.
+
+> 💁 Security is a vast topic, and this lesson will only cover some basics related to connecting your device to the cloud. Other topics, such as monitoring data changes during transmission, hacking devices directly, or altering device configurations, won't be covered. IoT hacking is such a significant threat that tools like [Azure Defender for IoT](https://azure.microsoft.com/services/azure-defender-for-iot/?WT.mc_id=academic-17441-jabenn) have been developed. These tools are similar to the antivirus and security software you might use on your computer but are designed for small, low-powered IoT devices.
+
+## Cryptography
+
+When a device connects to an IoT service, it uses an ID to identify itself. The problem is that this ID can be cloned—a hacker could set up a malicious device using the same ID as a legitimate device but send false data.
+
+
+
+The solution is to scramble the data being sent using a value known only to the device and the cloud. This process is called *encryption*, and the value used to encrypt the data is called an *encryption key*.
+
+
+
+The cloud service can then unscramble the data using a process called *decryption*, using either the same encryption key or a *decryption key*. If the encrypted message cannot be decrypted with the key, the device is deemed compromised, and the message is rejected.
+
+The method of performing encryption and decryption is known as *cryptography*.
+
+### Early cryptography
+
+The earliest forms of cryptography were substitution ciphers, dating back 3,500 years. Substitution ciphers involve replacing one letter with another. For example, the [Caesar cipher](https://wikipedia.org/wiki/Caesar_cipher) shifts the alphabet by a specific number of letters, known only to the sender and recipient.
+
+The [Vigenère cipher](https://wikipedia.org/wiki/Vigenère_cipher) advanced this by using words to encrypt text, so each letter in the original text was shifted by a different amount rather than a fixed number.
+
+Cryptography has been used for various purposes, such as protecting a potter's glaze recipe in ancient Mesopotamia, writing secret love notes in India, or safeguarding ancient Egyptian magical spells.
+
+### Modern cryptography
+
+Modern cryptography is far more sophisticated, making it much harder to crack than earlier methods. It uses complex mathematics to encrypt data, with an enormous number of possible keys, making brute-force attacks impractical.
+
+Cryptography is widely used for secure communication. For example, if you're reading this page on GitHub, the website address likely starts with *HTTPS*, indicating that the communication between your browser and GitHub's servers is encrypted. Even if someone intercepts the internet traffic between your browser and GitHub, they won't be able to read the data because it's encrypted. Your computer might also encrypt all the data on your hard drive, ensuring that if someone steals it, they can't access your data without your password.
+
+> 🎓 HTTPS stands for HyperText Transfer Protocol **Secure**
+
+Unfortunately, not everything is secure. Some devices lack security entirely, while others use easily crackable keys or even the same key for all devices of a particular type. There have been cases of highly personal IoT devices with identical passwords for WiFi or Bluetooth connections. If you can connect to your own device, you can connect to someone else's, potentially accessing private data or controlling their device.
+
+> 💁 Despite the complexity of modern cryptography and claims that breaking encryption could take billions of years, the advent of quantum computing has raised concerns about breaking all known encryption in a very short time!
+
+### Symmetric and asymmetric keys
+
+Encryption comes in two types: symmetric and asymmetric.
+
+**Symmetric** encryption uses the same key for both encrypting and decrypting data. Both the sender and receiver must know the same key. This method is less secure because the key must be shared. For the sender to send an encrypted message, they first need to share the key with the recipient.
+
+
+
+If the key is intercepted during transmission or if either party is hacked, the encryption can be compromised.
+
+
+
+**Asymmetric** encryption uses two keys: an encryption key and a decryption key, known as a public/private key pair. The public key encrypts the message but cannot decrypt it, while the private key decrypts the message but cannot encrypt it.
+
+
+
+The recipient shares their public key, which the sender uses to encrypt the message. Once the message is sent, the recipient decrypts it with their private key. Asymmetric encryption is more secure because the private key is kept confidential and never shared. The public key can be freely distributed since it only encrypts messages.
+
+Symmetric encryption is faster, while asymmetric encryption is more secure. Some systems use both: asymmetric encryption to securely share the symmetric key, and symmetric encryption for faster data encryption and decryption.
+
+## Secure your IoT devices
+
+IoT devices can be secured using symmetric or asymmetric encryption. Symmetric encryption is simpler but less secure.
+
+### Symmetric keys
+
+When you set up your IoT device to interact with IoT Hub, you used a connection string. An example connection string is:
+
+```output
+HostName=soil-moisture-sensor.azure-devices.net;DeviceId=soil-moisture-sensor;SharedAccessKey=Bhry+ind7kKEIDxubK61RiEHHRTrPl7HUow8cEm/mU0=
+```
+
+This connection string consists of three parts separated by semicolons, with each part containing a key and a value:
+
+| Key | Value | Description |
+| --- | ----- | ----------- |
+| HostName | `soil-moisture-sensor.azure-devices.net` | The URL of the IoT Hub |
+| DeviceId | `soil-moisture-sensor` | The unique ID of the device |
+| SharedAccessKey | `Bhry+ind7kKEIDxubK61RiEHHRTrPl7HUow8cEm/mU0=` | A symmetric key known by the device and the IoT Hub |
+
+The last part of this connection string, the `SharedAccessKey`, is the symmetric key shared between the device and the IoT Hub. This key is never transmitted between the device and the cloud. Instead, it is used to encrypt data sent or received.
+
+✅ Do an experiment: What do you think will happen if you change the `SharedAccessKey` part of the connection string when connecting your IoT device? Try it out.
+
+When the device first connects, it sends a shared access signature (SAS) token containing the IoT Hub URL, a timestamp indicating when the token expires (usually one day from the current time), and a signature. This signature includes the URL and expiry time encrypted with the shared access key from the connection string.
+
+The IoT Hub decrypts the signature using the shared access key. If the decrypted value matches the URL and expiry time, the device is allowed to connect. It also checks that the current time is before the expiry time to prevent a malicious device from capturing and reusing the SAS token of a legitimate device.
+
+This method elegantly verifies the sender's identity. By sending both encrypted and decrypted versions of known data, the server can confirm the device's authenticity by ensuring the decrypted data matches the original. If it matches, both the sender and recipient share the same symmetric encryption key.
+💁 Because of the expiration time, your IoT device must have the correct time, typically obtained from an [NTP](https://wikipedia.org/wiki/Network_Time_Protocol) server. If the time is incorrect, the connection will not succeed.
+After the connection, all data sent to the IoT Hub from the device, or to the device from the IoT Hub, will be encrypted using the shared access key.
+
+✅ What do you think will happen if multiple devices share the same connection string?
+
+> 💁 Storing this key in your code is a bad security practice. If a hacker gains access to your source code, they can retrieve your key. Additionally, it complicates the release process, as you would need to recompile the code with an updated key for every device. A better approach is to load this key from a hardware security module—a chip on the IoT device that securely stores encrypted values accessible by your code.
+>
+> While learning IoT, it’s often easier to include the key in your code, as you did in an earlier lesson. However, you must ensure this key is not checked into public source code repositories.
+
+Devices have two keys and two corresponding connection strings. This allows you to rotate the keys—switching from one key to another if the first is compromised—and regenerate the first key.
+
+### X.509 certificates
+
+When using asymmetric encryption with a public/private key pair, you need to share your public key with anyone who wants to send you data. The challenge is ensuring the recipient knows it’s your public key and not someone pretending to be you. Instead of sharing just the key, you can provide your public key within a certificate verified by a trusted third party, known as an X.509 certificate.
+
+X.509 certificates are digital documents containing the public key part of the public/private key pair. They are typically issued by trusted organizations called [Certification Authorities](https://wikipedia.org/wiki/Certificate_authority) (CAs) and are digitally signed by the CA to confirm the key’s validity and origin. You trust the certificate—and the public key it contains—because you trust the CA, much like you trust a passport or driver’s license because you trust the issuing country. Certificates can be costly, but you can also create a 'self-signed' certificate for testing purposes, which is signed by you.
+
+> 💁 Never use a self-signed certificate in a production environment.
+
+These certificates include various fields, such as the identity of the public key owner, details about the issuing CA, the certificate’s validity period, and the public key itself. Before using a certificate, it’s good practice to verify it by checking that it was signed by the original CA.
+
+✅ You can find a complete list of the fields in a certificate in the [Microsoft Understanding X.509 Public Key Certificates tutorial](https://docs.microsoft.com/azure/iot-hub/tutorial-x509-certificates?WT.mc_id=academic-17441-jabenn#certificate-fields).
+
+When using X.509 certificates, both the sender and the recipient have their own public and private keys, as well as X.509 certificates containing their public keys. They exchange certificates and use each other’s public keys to encrypt the data they send, while using their private keys to decrypt the data they receive.
+
+
+
+One major advantage of using X.509 certificates is that they can be shared across devices. You can create one certificate, upload it to IoT Hub, and use it for all your devices. Each device only needs to know the private key to decrypt messages received from IoT Hub.
+
+The certificate your device uses to encrypt messages sent to the IoT Hub is published by Microsoft. It’s the same certificate used by many Azure services and is sometimes built into the SDKs.
+
+> 💁 Remember, a public key is public. The Azure public key can only be used to encrypt data sent to Azure, not to decrypt it, so it can be shared freely, even in source code. For example, you can find it in the [Azure IoT C SDK source code](https://github.com/Azure/azure-iot-sdk-c/blob/master/certs/certs.c).
+
+✅ X.509 certificates come with a lot of technical jargon. You can find definitions for some of the terms in [The layman’s guide to X.509 certificate jargon](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).
+
+## Generate and use an X.509 certificate
+
+The steps to generate an X.509 certificate are:
+
+1. Create a public/private key pair. One of the most widely used algorithms for this is [Rivest–Shamir–Adleman](https://wikipedia.org/wiki/RSA_(cryptosystem)) (RSA).
+
+2. Submit the public key with associated data for signing, either by a CA or through self-signing.
+
+The Azure CLI includes commands to create a new device identity in IoT Hub, automatically generate the public/private key pair, and create a self-signed certificate.
+
+> 💁 If you want to see the detailed steps instead of using the Azure CLI, check out the [Using OpenSSL to create self-signed certificates tutorial in the Microsoft IoT Hub documentation](https://docs.microsoft.com/azure/iot-hub/tutorial-x509-self-sign?WT.mc_id=academic-17441-jabenn).
+
+### Task - create a device identity using an X.509 certificate
+
+1. Run the following command to register the new device identity and automatically generate the keys and certificates:
+
+ ```sh
+ az iot hub device-identity create --device-id soil-moisture-sensor-x509 \
+ --am x509_thumbprint \
+ --output-dir . \
+ --hub-name
+ ```
+
+ Replace `` with the name of your IoT Hub.
+
+ This will create a device with the ID `soil-moisture-sensor-x509` to distinguish it from the device identity created in the previous lesson. The command will also generate two files in the current directory:
+
+ * `soil-moisture-sensor-x509-key.pem` - contains the private key for the device.
+ * `soil-moisture-sensor-x509-cert.pem` - the X.509 certificate file for the device.
+
+ Keep these files secure! The private key file should never be checked into public source code repositories.
+
+### Task - use the X.509 certificate in your device code
+
+Follow the relevant guide to connect your IoT device to the cloud using the X.509 certificate:
+
+* [Arduino - Wio Terminal](wio-terminal-x509.md)
+* [Single-board computer - Raspberry Pi/Virtual IoT device](single-board-computer-x509.md)
+
+---
+
+## 🚀 Challenge
+
+There are multiple ways to create, manage, and delete Azure services like Resource Groups and IoT Hubs. One option is the [Azure Portal](https://portal.azure.com?WT.mc_id=academic-17441-jabenn), a web-based interface with a graphical user interface (GUI) for managing Azure services.
+
+Visit [portal.azure.com](https://portal.azure.com?WT.mc_id=academic-17441-jabenn) and explore the portal. Try creating an IoT Hub using the portal, then delete it.
+
+**Hint** - When creating services through the portal, you don’t need to create a Resource Group beforehand; one can be created during the service creation process. Be sure to delete it when you’re done!
+
+You can find extensive documentation, tutorials, and guides on the Azure Portal in the [Azure portal documentation](https://docs.microsoft.com/azure/azure-portal/?WT.mc_id=academic-17441-jabenn).
+
+## Post-lecture quiz
+
+[Post-lecture quiz](https://black-meadow-040d15503.1.azurestaticapps.net/quiz/20)
+
+## Review & Self Study
+
+* Learn about the history of cryptography on the [History of cryptography page on Wikipedia](https://wikipedia.org/wiki/History_of_cryptography).
+* Read more about X.509 certificates on the [X.509 page on Wikipedia](https://wikipedia.org/wiki/X.509).
+
+## Assignment
+
+[Build a new IoT device](assignment.md)
+
+---
+
+**Disclaimer**:
+This document has been translated using the AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). While we aim for accuracy, please note that automated translations may include errors or inaccuracies. The original document in its native language should be regarded as the authoritative source. For critical information, professional human translation is advised. We are not responsible for any misunderstandings or misinterpretations resulting from the use of this translation.
\ No newline at end of file
diff --git a/translations/en/2-farm/lessons/6-keep-your-plant-secure/assignment.md b/translations/en/2-farm/lessons/6-keep-your-plant-secure/assignment.md
new file mode 100644
index 00000000..b4a6695a
--- /dev/null
+++ b/translations/en/2-farm/lessons/6-keep-your-plant-secure/assignment.md
@@ -0,0 +1,29 @@
+
+# Build a new IoT device
+
+## Instructions
+
+Over the past six lessons, you have explored digital agriculture and learned how to use IoT devices to collect data for predicting plant growth and automating irrigation based on soil moisture readings.
+
+Apply what you’ve learned to create a new IoT device using a sensor and actuator of your choice. Send telemetry data to an IoT Hub and use it to control an actuator through serverless code. You can use a sensor and actuator from this or a previous project, or experiment with new hardware if available.
+
+## Rubric
+
+| Criteria | Exemplary | Adequate | Needs Improvement |
+| -------- | --------- | -------- | ----------------- |
+| Code an IoT device to use a sensor and actuator | Successfully coded an IoT device that integrates both a sensor and an actuator | Coded an IoT device that integrates either a sensor or an actuator | Unable to code an IoT device that integrates a sensor or an actuator |
+| Connect the IoT device to IoT Hub | Successfully deployed an IoT Hub, sent telemetry data to it, and received commands from it | Successfully deployed an IoT Hub and either sent telemetry data or received commands | Unable to deploy an IoT Hub or establish communication with it from an IoT device |
+| Control the actuator using serverless code | Successfully deployed an Azure Function to control the device, triggered by telemetry events | Successfully deployed an Azure Function triggered by telemetry events but unable to control the actuator | Unable to deploy an Azure Function |
+
+---
+
+**Disclaimer**:
+This document has been translated using the AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). While we aim for accuracy, please note that automated translations may include errors or inaccuracies. The original document in its native language should be regarded as the authoritative source. For critical information, professional human translation is advised. We are not responsible for any misunderstandings or misinterpretations resulting from the use of this translation.
\ No newline at end of file
diff --git a/translations/en/2-farm/lessons/6-keep-your-plant-secure/single-board-computer-x509.md b/translations/en/2-farm/lessons/6-keep-your-plant-secure/single-board-computer-x509.md
new file mode 100644
index 00000000..0954aeb7
--- /dev/null
+++ b/translations/en/2-farm/lessons/6-keep-your-plant-secure/single-board-computer-x509.md
@@ -0,0 +1,71 @@
+
+# Use the X.509 certificate in your device code - Virtual IoT Hardware and Raspberry Pi
+
+In this part of the lesson, you will connect your virtual IoT device or Raspberry Pi to your IoT Hub using the X.509 certificate.
+
+## Connect your device to IoT Hub
+
+The next step is to connect your device to IoT Hub using the X.509 certificates.
+
+### Task - connect to IoT Hub
+
+1. Copy the key and certificate files to the folder containing your IoT device code. If you are using a Raspberry Pi through VS Code Remote SSH and created the keys on your PC or Mac, you can drag and drop the files into the explorer in VS Code to copy them.
+
+1. Open the `app.py` file.
+
+1. To connect using an X.509 certificate, you will need the host name of the IoT Hub, and the X.509 certificate. Start by creating a variable containing the host name by adding the following code before the device client is created:
+
+ ```python
+ host_name = ""
+ ```
+
+ Replace `` with your IoT Hub's host name. You can get this from the `HostName` section in the `connection_string`. It will be the name of your IoT Hub, ending with `.azure-devices.net`.
+
+1. Below this, declare a variable with the device ID:
+
+ ```python
+ device_id = "soil-moisture-sensor-x509"
+ ```
+
+1. You will need an instance of the `X509` class containing the X.509 files. Add `X509` to the list of classes imported from the `azure.iot.device` module:
+
+ ```python
+ from azure.iot.device import IoTHubDeviceClient, Message, MethodResponse, X509
+ ```
+
+1. Create an `X509` class instance using your certificate and key files by adding this code below the `host_name` declaration:
+
+ ```python
+ x509 = X509("./soil-moisture-sensor-x509-cert.pem", "./soil-moisture-sensor-x509-key.pem")
+ ```
+
+ This will create the `X509` class using the `soil-moisture-sensor-x509-cert.pem` and `soil-moisture-sensor-x509-key.pem` files created earlier.
+
+1. Replace the line of code that creates the `device_client` from a connection string, with the following:
+
+ ```python
+ device_client = IoTHubDeviceClient.create_from_x509_certificate(x509, host_name, device_id)
+ ```
+
+ This will connect using the X.509 certificate instead of a connection string.
+
+1. Delete the line with the `connection_string` variable.
+
+1. Run your code. Monitor the messages sent to IoT Hub, and send direct method requests as before. You will see the device connecting and sending soil moisture readings, as well as receiving direct method requests.
+
+> 💁 You can find this code in the [code/pi](../../../../../2-farm/lessons/6-keep-your-plant-secure/code/pi) or [code/virtual-device](../../../../../2-farm/lessons/6-keep-your-plant-secure/code/virtual-device) folder.
+
+😀 Your soil moisture sensor program is connected to your IoT Hub using an X.509 certificate!
+
+---
+
+**Disclaimer**:
+This document has been translated using the AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). While we aim for accuracy, please note that automated translations may include errors or inaccuracies. The original document in its native language should be regarded as the authoritative source. For critical information, professional human translation is advised. We are not responsible for any misunderstandings or misinterpretations resulting from the use of this translation.
\ No newline at end of file
diff --git a/translations/en/2-farm/lessons/6-keep-your-plant-secure/wio-terminal-x509.md b/translations/en/2-farm/lessons/6-keep-your-plant-secure/wio-terminal-x509.md
new file mode 100644
index 00000000..23b29b1b
--- /dev/null
+++ b/translations/en/2-farm/lessons/6-keep-your-plant-secure/wio-terminal-x509.md
@@ -0,0 +1,17 @@
+
+# Use the X.509 certificate in your device code - Wio Terminal
+
+At the time of writing, the Azure Arduino SDK does not support X.509 certificates. If you want to experiment with X.509 certificates, you can refer to the [Virtual IoT device instructions using the Python SDK](single-board-computer-x509.md)
+
+---
+
+**Disclaimer**:
+This document has been translated using the AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). While we aim for accuracy, please note that automated translations may include errors or inaccuracies. The original document in its native language should be regarded as the authoritative source. For critical information, professional human translation is advised. We are not responsible for any misunderstandings or misinterpretations resulting from the use of this translation.
\ No newline at end of file
diff --git a/translations/en/3-transport/README.md b/translations/en/3-transport/README.md
new file mode 100644
index 00000000..126839e7
--- /dev/null
+++ b/translations/en/3-transport/README.md
@@ -0,0 +1,38 @@
+
+# Transport from farm to factory - using IoT to track food deliveries
+
+Many farmers grow food to sell—either they are commercial farmers who sell everything they grow, or they are subsistence farmers who sell their surplus to buy necessities. Somehow, the food needs to get from the farm to the consumer, and this usually involves bulk transport from farms to hubs or processing plants, and then to stores. For example, a tomato farmer will harvest tomatoes, pack them into boxes, load the boxes onto a truck, and deliver them to a processing plant. The tomatoes are then sorted and delivered to consumers as processed food, retail products, or served in restaurants.
+
+IoT can assist in this supply chain by tracking food during transit—ensuring drivers follow the correct routes, monitoring vehicle locations, and sending alerts when vehicles arrive so the food can be unloaded and prepared for processing as quickly as possible.
+
+> 🎓 A *supply chain* refers to the sequence of activities involved in producing and delivering something. For example, in tomato farming, it includes seed, soil, fertilizer, and water supply; growing tomatoes; delivering them to a central hub; transporting them to a supermarket's local hub; moving them to individual supermarkets; displaying them for sale; and finally, selling them to consumers who take them home to eat. Each step is like a link in a chain.
+
+> 🎓 The transportation aspect of the supply chain is called *logistics*.
+
+In these four lessons, you'll learn how to use the Internet of Things to enhance the supply chain by monitoring food as it is loaded onto a (virtual) truck, tracking the truck as it moves to its destination, and receiving alerts when the truck arrives. You'll explore GPS tracking, storing and visualizing GPS data, and setting up notifications for arrivals.
+
+> 💁 These lessons will use some cloud resources. If you don't complete all the lessons in this project, make sure you [Clean up your project](../clean-up.md).
+
+## Topics
+
+1. [Location tracking](lessons/1-location-tracking/README.md)
+1. [Store location data](lessons/2-store-location-data/README.md)
+1. [Visualize location data](lessons/3-visualize-location-data/README.md)
+1. [Geofences](lessons/4-geofences/README.md)
+
+## Credits
+
+All the lessons were written with ♥️ by [Jen Looper](https://github.com/jlooper) and [Jim Bennett](https://GitHub.com/JimBobBennett)
+
+---
+
+**Disclaimer**:
+This document has been translated using the AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). While we aim for accuracy, please note that automated translations may include errors or inaccuracies. The original document in its native language should be regarded as the authoritative source. For critical information, professional human translation is advised. We are not responsible for any misunderstandings or misinterpretations resulting from the use of this translation.
\ No newline at end of file
diff --git a/translations/en/3-transport/lessons/1-location-tracking/README.md b/translations/en/3-transport/lessons/1-location-tracking/README.md
new file mode 100644
index 00000000..3ca58e8d
--- /dev/null
+++ b/translations/en/3-transport/lessons/1-location-tracking/README.md
@@ -0,0 +1,213 @@
+
+# Location tracking
+
+
+
+> Sketchnote by [Nitya Narasimhan](https://github.com/nitya). Click the image for a larger version.
+
+## Pre-lecture quiz
+
+[Pre-lecture quiz](https://black-meadow-040d15503.1.azurestaticapps.net/quiz/21)
+
+## Introduction
+
+The process of delivering food from a farmer to a consumer typically involves loading boxes of produce onto trucks, ships, airplanes, or other transport vehicles and delivering them to a destination—either directly to a customer or to a central hub or warehouse for further processing. This entire journey, from farm to consumer, is part of what’s known as the *supply chain*. The video below from Arizona State University's W. P. Carey School of Business explains the concept of the supply chain and how it is managed in greater detail.
+
+[](https://www.youtube.com/watch?v=Mi1QBxVjZAw)
+
+> 🎥 Click the image above to watch a video
+
+Integrating IoT devices into the supply chain can significantly enhance its efficiency, enabling better tracking of items, improved transport planning, faster response to issues, and optimized goods handling.
+
+When managing a fleet of vehicles like trucks, it’s useful to know the location of each vehicle at any given time. Vehicles equipped with GPS sensors can send their location to IoT systems, allowing owners to track their position, review their travel routes, and estimate their arrival times. Since most vehicles operate outside WiFi coverage, they rely on cellular networks to transmit this data. In some cases, GPS sensors are part of more advanced IoT devices, such as electronic logbooks, which monitor how long a truck has been in transit to ensure drivers comply with local regulations on working hours.
+
+In this lesson, you’ll learn how to track a vehicle’s location using a Global Positioning System (GPS) sensor.
+
+This lesson will cover:
+
+* [Connected vehicles](../../../../../3-transport/lessons/1-location-tracking)
+* [Geospatial coordinates](../../../../../3-transport/lessons/1-location-tracking)
+* [Global Positioning Systems (GPS)](../../../../../3-transport/lessons/1-location-tracking)
+* [Read GPS sensor data](../../../../../3-transport/lessons/1-location-tracking)
+* [NMEA GPS data](../../../../../3-transport/lessons/1-location-tracking)
+* [Decode GPS sensor data](../../../../../3-transport/lessons/1-location-tracking)
+
+## Connected vehicles
+
+IoT is revolutionizing the transportation of goods by enabling fleets of *connected vehicles*. These vehicles communicate with central IT systems, providing information about their location and other sensor data. Connected fleets offer numerous advantages:
+
+* **Location tracking** - You can determine a vehicle’s location at any time, enabling you to:
+ * Receive alerts when a vehicle is nearing its destination, allowing you to prepare for unloading.
+ * Locate stolen vehicles.
+ * Combine location and route data with traffic updates to reroute vehicles during their journey.
+ * Comply with tax regulations. In some countries, vehicles are taxed based on mileage driven on public roads (e.g., [New Zealand's RUC](https://www.nzta.govt.nz/vehicles/licensing-rego/road-user-charges/)). Knowing when a vehicle is on public versus private roads simplifies tax calculations.
+ * Direct maintenance crews to the exact location in case of a breakdown.
+
+* **Driver telemetry** - Monitor driver behavior to ensure compliance with speed limits, safe cornering, efficient braking, and overall safe driving practices. Connected vehicles can also include cameras to record incidents, which can be linked to insurance policies, offering discounts for safe drivers.
+
+* **Driver hours compliance** - Ensure drivers adhere to legal limits on driving hours by tracking engine on/off times.
+
+These benefits can be combined—for instance, integrating driver hours compliance with location tracking to reroute drivers who cannot reach their destination within their allowed driving hours. Additional vehicle-specific telemetry, such as temperature data from refrigerated trucks, can also be used to reroute vehicles if their current path risks compromising temperature-sensitive goods.
+
+> 🎓 Logistics refers to the process of moving goods from one location to another, such as transporting produce from a farm to a supermarket via one or more warehouses. For example, a farmer might pack boxes of tomatoes that are loaded onto a truck, delivered to a central warehouse, and then transferred to another truck carrying a mix of produce types for delivery to a supermarket.
+
+The key technology for vehicle tracking is GPS—sensors that can determine their location anywhere on Earth. In this lesson, you’ll learn how to use a GPS sensor, starting with understanding how locations are defined on Earth.
+
+## Geospatial coordinates
+
+Geospatial coordinates are used to specify points on the Earth’s surface, similar to how coordinates are used to identify pixels on a computer screen or stitches in cross-stitch patterns. Each point is defined by a pair of coordinates. For example, the Microsoft Campus in Redmond, Washington, USA is located at 47.6423109, -122.1390293.
+
+### Latitude and longitude
+
+The Earth is a sphere—a three-dimensional circle. Points on its surface are defined by dividing it into 360 degrees, similar to the geometry of circles. Latitude measures degrees north to south, while longitude measures degrees east to west.
+
+> 💁 The original reason for dividing circles into 360 degrees is unclear. The [degree (angle) page on Wikipedia](https://wikipedia.org/wiki/Degree_(angle)) explores some possible explanations.
+
+
+
+Latitude is measured using lines that encircle the Earth parallel to the equator, dividing the Northern and Southern Hemispheres into 90° each. The equator is at 0°, the North Pole is at 90° (90° North), and the South Pole is at -90° (90° South).
+
+Longitude measures degrees east and west. The 0° origin of longitude is called the *Prime Meridian*, established in 1884 as a line running from the North to the South Pole through the [British Royal Observatory in Greenwich, England](https://wikipedia.org/wiki/Royal_Observatory,_Greenwich).
+
+
+
+> 🎓 A meridian is an imaginary line running from the North Pole to the South Pole, forming a semicircle.
+
+Longitude is measured by determining the number of degrees around the equator from the Prime Meridian to the meridian passing through the point of interest. Longitude ranges from -180° (180° West) to 0° at the Prime Meridian, to 180° (180° East). The points 180° and -180° refer to the same location, known as the antimeridian or 180th meridian, which is opposite the Prime Meridian.
+
+> 💁 The antimeridian is distinct from the International Date Line, which roughly follows the same path but is not a straight line and adjusts to accommodate geopolitical boundaries.
+
+✅ Do some research: Find the latitude and longitude of your current location.
+
+### Degrees, minutes, and seconds vs decimal degrees
+
+Historically, latitude and longitude were measured using sexagesimal numbering (base-60), a system developed by the Ancient Babylonians who first recorded time and distance. You likely use sexagesimal daily without realizing it—dividing hours into 60 minutes and minutes into 60 seconds.
+
+Latitude and longitude are traditionally expressed in degrees, minutes, and seconds, where one minute equals 1/60 of a degree, and one second equals 1/60 of a minute.
+
+For example, at the equator:
+* 1° of latitude equals **111.3 kilometers**
+* 1 minute of latitude equals 111.3/60 = **1.855 kilometers**
+* 1 second of latitude equals 1.855/60 = **0.031 kilometers**
+
+Minutes are denoted by a single quote (`'`), and seconds by a double quote (`"`). For instance, 2 degrees, 17 minutes, and 43 seconds would be written as `2°17'43"`. Fractions of seconds are expressed as decimals, e.g., half a second is `0°0'0.5"`.
+
+Computers, however, use decimal degrees for GPS data. For example, `2°17'43"` is expressed as `2.295277`. The degree symbol is often omitted.
+
+Coordinates are always given as `latitude, longitude`. For example, the Microsoft Campus at `47.6423109,-122.117198` has:
+* Latitude: `47.6423109` (47.6423109 degrees north of the equator)
+* Longitude: `-122.1390293` (122.1390293 degrees west of the Prime Meridian).
+
+
+
+## Global Positioning Systems (GPS)
+
+GPS systems use multiple satellites orbiting the Earth to determine your location. You’ve likely used GPS without realizing it—whether finding your location on a mapping app, tracking your ride in a ride-hailing app, or using satellite navigation (sat-nav) in your car.
+
+> 🎓 The satellites in 'satellite navigation' are GPS satellites!
+
+GPS works by using satellites that transmit signals containing their position and an accurate timestamp. These signals travel via radio waves and are detected by an antenna in the GPS sensor. The sensor measures how long it took for the signal to arrive, calculates the distance to the satellite based on the constant speed of radio waves, and uses data from at least three satellites to pinpoint its location.
+
+> 💁 GPS sensors require antennas to detect radio waves. Built-in antennas in vehicles are typically positioned for optimal signal reception, such as on the windshield or roof. For external GPS systems, like smartphones or IoT devices, ensure the antenna has a clear view of the sky, such as mounting it on the windshield.
+
+
+
+Since GPS satellites orbit the Earth, location data includes altitude above sea level in addition to latitude and longitude.
+
+Previously, GPS accuracy was limited to about 5 meters due to restrictions imposed by the US military. These restrictions were lifted in 2000, allowing accuracy up to 30 centimeters. However, achieving this level of precision may not always be possible due to signal interference.
+
+✅ If you have a smartphone, open a mapping app and check how accurate your location is. It may take a moment for your phone to connect to multiple satellites for improved accuracy.
+💁 The satellites are equipped with atomic clocks that are extremely precise, but they experience a drift of 38 microseconds (0.0000038 seconds) per day compared to atomic clocks on Earth. This occurs because time slows down as speed increases, as predicted by Einstein's theories of special and general relativity—the satellites move faster than the Earth's rotation. This drift has been used to confirm the predictions of special and general relativity and must be accounted for in the design of GPS systems. In essence, time moves slower on a GPS satellite.
+GPS systems have been developed and implemented by several countries and political unions, including the US, Russia, Japan, India, the EU, and China. Modern GPS sensors can connect to most of these systems to achieve faster and more accurate positioning.
+
+> 🎓 The groups of satellites in each system are called constellations.
+
+## Read GPS sensor data
+
+Most GPS sensors transmit GPS data via UART.
+
+> ⚠️ UART was covered in [project 2, lesson 2](../../../2-farm/lessons/2-detect-soil-moisture/README.md#universal-asynchronous-receiver-transmitter-uart). Refer back to that lesson if needed.
+
+You can use a GPS sensor on your IoT device to retrieve GPS data.
+
+### Task - Connect a GPS sensor and read GPS data
+
+Follow the relevant guide to read GPS data using your IoT device:
+
+* [Arduino - Wio Terminal](wio-terminal-gps-sensor.md)
+* [Single-board computer - Raspberry Pi](pi-gps-sensor.md)
+* [Single-board computer - Virtual device](virtual-device-gps-sensor.md)
+
+## NMEA GPS data
+
+When you run your code, the output might look like random text. This is actually standard GPS data, and it has specific meanings.
+
+GPS sensors output data using NMEA messages, which follow the NMEA 0183 standard. NMEA stands for the [National Marine Electronics Association](https://www.nmea.org), a US-based trade organization that sets standards for communication between marine electronics.
+
+> 💁 This standard is proprietary and costs at least US$2,000, but enough information is publicly available that most of the standard has been reverse-engineered and can be used in open-source and other non-commercial code.
+
+These messages are text-based. Each message consists of a *sentence* that starts with a `$` character, followed by 2 characters indicating the source of the message (e.g., GP for the US GPS system, GN for GLONASS, the Russian GPS system), and 3 characters indicating the type of message. The rest of the message contains fields separated by commas, ending with a newline character.
+
+Some types of messages that can be received include:
+
+| Type | Description |
+| ---- | ----------- |
+| GGA | GPS Fix Data, including the latitude, longitude, and altitude of the GPS sensor, along with the number of satellites used to calculate this fix. |
+| ZDA | The current date and time, including the local time zone. |
+| GSV | Details of the satellites in view—defined as the satellites the GPS sensor can detect signals from. |
+
+> 💁 GPS data includes timestamps, so your IoT device can retrieve the time from a GPS sensor if needed, rather than relying on an NTP server or an internal real-time clock.
+
+The GGA message provides the current location in the `(dd)dmm.mmmm` format, along with a single character indicating direction. In this format, `d` represents degrees, and `m` represents minutes, with seconds expressed as decimal fractions of minutes. For example, 2°17'43" would be represented as 217.716666667—2 degrees and 17.716666667 minutes.
+
+The direction character can be `N` or `S` for latitude to indicate north or south, and `E` or `W` for longitude to indicate east or west. For example, a latitude of 2°17'43" would have a direction character of `N`, while -2°17'43" would have a direction character of `S`.
+
+For example, the NMEA sentence `$GNGGA,020604.001,4738.538654,N,12208.341758,W,1,3,,164.7,M,-17.1,M,,*67` contains:
+
+* The latitude part `4738.538654,N`, which converts to 47.6423109 in decimal degrees. `4738.538654` is 47.6423109, and the direction is `N` (north), so it is a positive latitude.
+
+* The longitude part `12208.341758,W`, which converts to -122.1390293 in decimal degrees. `12208.341758` is 122.1390293°, and the direction is `W` (west), so it is a negative longitude.
+
+## Decode GPS sensor data
+
+Instead of using raw NMEA data, it’s better to decode it into a more useful format. There are several open-source libraries available to help extract meaningful data from raw NMEA messages.
+
+### Task - Decode GPS sensor data
+
+Follow the relevant guide to decode GPS sensor data using your IoT device:
+
+* [Arduino - Wio Terminal](wio-terminal-gps-decode.md)
+* [Single-board computer - Raspberry Pi/Virtual IoT device](single-board-computer-gps-decode.md)
+
+---
+
+## 🚀 Challenge
+
+Write your own NMEA decoder! Instead of relying on third-party libraries to decode NMEA sentences, can you create your own decoder to extract latitude and longitude from NMEA sentences?
+
+## Post-lecture quiz
+
+[Post-lecture quiz](https://black-meadow-040d15503.1.azurestaticapps.net/quiz/22)
+
+## Review & Self Study
+
+* Learn more about Geospatial Coordinates on the [Geographic coordinate system page on Wikipedia](https://wikipedia.org/wiki/Geographic_coordinate_system).
+* Read about the Prime Meridians on other celestial bodies besides Earth on the [Prime Meridian page on Wikipedia](https://wikipedia.org/wiki/Prime_meridian#Prime_meridian_on_other_planetary_bodies).
+* Research the various GPS systems developed by different world governments and political unions, such as the EU, Japan, Russia, India, and the US.
+
+## Assignment
+
+[Investigate other GPS data](assignment.md)
+
+---
+
+**Disclaimer**:
+This document has been translated using the AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). While we aim for accuracy, please note that automated translations may include errors or inaccuracies. The original document in its native language should be regarded as the authoritative source. For critical information, professional human translation is advised. We are not responsible for any misunderstandings or misinterpretations resulting from the use of this translation.
\ No newline at end of file
diff --git a/translations/en/3-transport/lessons/1-location-tracking/assignment.md b/translations/en/3-transport/lessons/1-location-tracking/assignment.md
new file mode 100644
index 00000000..a6c3a6a6
--- /dev/null
+++ b/translations/en/3-transport/lessons/1-location-tracking/assignment.md
@@ -0,0 +1,29 @@
+
+# Explore Additional GPS Data
+
+## Instructions
+
+The NMEA sentences from your GPS sensor contain more information beyond just location. Explore this additional data and incorporate it into your IoT device.
+
+For example - can you retrieve the current date and time? If you're using a microcontroller, can you set the clock using GPS data in the same way you used NTP signals in the previous project? Can you determine elevation (your height above sea level) or your current speed?
+
+If you're working with a virtual IoT device, you can obtain some of this data by generating NMEA sentences using tools like [nmeagen.org](https://www.nmeagen.org).
+
+## Rubric
+
+| Criteria | Exemplary | Adequate | Needs Improvement |
+| -------- | --------- | -------- | ----------------- |
+| Retrieve additional GPS data | Successfully retrieves and utilizes additional GPS data, either as telemetry or to configure the IoT device | Successfully retrieves additional GPS data but cannot utilize it | Fails to retrieve additional GPS data |
+
+---
+
+**Disclaimer**:
+This document has been translated using the AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). While we aim for accuracy, please note that automated translations may contain errors or inaccuracies. The original document in its native language should be regarded as the authoritative source. For critical information, professional human translation is recommended. We are not responsible for any misunderstandings or misinterpretations resulting from the use of this translation.
\ No newline at end of file
diff --git a/translations/en/3-transport/lessons/1-location-tracking/pi-gps-sensor.md b/translations/en/3-transport/lessons/1-location-tracking/pi-gps-sensor.md
new file mode 100644
index 00000000..aa4da220
--- /dev/null
+++ b/translations/en/3-transport/lessons/1-location-tracking/pi-gps-sensor.md
@@ -0,0 +1,193 @@
+
+# Read GPS data - Raspberry Pi
+
+In this part of the lesson, you will add a GPS sensor to your Raspberry Pi and read data from it.
+
+## Hardware
+
+The Raspberry Pi requires a GPS sensor.
+
+The sensor you'll use is a [Grove GPS Air530 sensor](https://www.seeedstudio.com/Grove-GPS-Air530-p-4584.html). This sensor can connect to multiple GPS systems for a fast and accurate signal. It consists of two parts: the core electronics of the sensor and an external antenna connected by a thin wire to receive radio signals from satellites.
+
+This is a UART sensor, meaning it transmits GPS data via UART.
+
+## Connect the GPS sensor
+
+The Grove GPS sensor can be connected to the Raspberry Pi.
+
+### Task - Connect the GPS sensor
+
+Connect the GPS sensor.
+
+
+
+1. Insert one end of a Grove cable into the socket on the GPS sensor. It will only fit in one way.
+
+1. With the Raspberry Pi powered off, connect the other end of the Grove cable to the UART socket labeled **UART** on the Grove Base Hat attached to the Pi. This socket is located in the middle row, on the side closest to the SD card slot, opposite the USB ports and Ethernet socket.
+
+ 
+
+1. Position the GPS sensor so that the attached antenna has a clear view of the sky—ideally near an open window or outside. A clear signal is easier to achieve with no obstructions around the antenna.
+
+## Program the GPS sensor
+
+The Raspberry Pi can now be programmed to use the connected GPS sensor.
+
+### Task - Program the GPS sensor
+
+Program the device.
+
+1. Power up the Pi and wait for it to boot.
+
+1. The GPS sensor has two LEDs: a blue LED that flashes when data is transmitted and a green LED that flashes every second when receiving data from satellites. Ensure the blue LED is flashing when you power up the Pi. After a few minutes, the green LED should start flashing. If it doesn’t, you may need to reposition the antenna.
+
+1. Launch VS Code, either directly on the Pi or by connecting via the Remote SSH extension.
+
+ > ⚠️ You can refer to [the instructions for setting up and launching VS Code in lesson 1 if needed](../../../1-getting-started/lessons/1-introduction-to-iot/pi.md).
+
+1. On newer Raspberry Pi models that support Bluetooth, there is a conflict between the serial port used for Bluetooth and the one used by the Grove UART port. To resolve this, follow these steps:
+
+ 1. From the VS Code terminal, edit the `/boot/config.txt` file using `nano`, a built-in terminal text editor, with the following command:
+
+ ```sh
+ sudo nano /boot/config.txt
+ ```
+
+ > This file cannot be edited directly in VS Code because it requires `sudo` permissions (elevated privileges). VS Code does not run with these permissions.
+
+ 1. Use the arrow keys to navigate to the end of the file, then copy and paste the following code at the end:
+
+ ```ini
+ dtoverlay=pi3-miniuart-bt
+ dtoverlay=pi3-disable-bt
+ enable_uart=1
+ ```
+
+ You can paste using the standard keyboard shortcuts for your device (`Ctrl+v` on Windows, Linux, or Raspberry Pi OS, `Cmd+v` on macOS).
+
+ 1. Save the file and exit nano by pressing `Ctrl+x`. Press `y` when prompted to save the changes, then press `Enter` to confirm overwriting `/boot/config.txt`.
+
+ > If you make a mistake, you can exit without saving and repeat these steps.
+
+ 1. Edit the `/boot/cmdline.txt` file in nano with the following command:
+
+ ```sh
+ sudo nano /boot/cmdline.txt
+ ```
+
+ 1. This file contains several key-value pairs separated by spaces. Remove any key-value pairs with the key `console`. These entries will likely look like this:
+
+ ```output
+ console=serial0,115200 console=tty1
+ ```
+
+ Use the arrow keys to navigate to these entries, then delete them using the `Del` or `Backspace` keys.
+
+ For example, if your original file looks like this:
+
+ ```output
+ console=serial0,115200 console=tty1 root=PARTUUID=058e2867-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait
+ ```
+
+ The updated version will look like this:
+
+ ```output
+ root=PARTUUID=058e2867-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait
+ ```
+
+ 1. Follow the same steps to save this file and exit nano.
+
+ 1. Reboot your Pi, then reconnect to it in VS Code after it restarts.
+
+1. From the terminal, create a new folder in the `pi` user's home directory called `gps-sensor`. Inside this folder, create a file named `app.py`.
+
+1. Open this folder in VS Code.
+
+1. The GPS module sends UART data over a serial port. Install the `pyserial` Pip package to enable communication with the serial port in your Python code:
+
+ ```sh
+ pip3 install pyserial
+ ```
+
+1. Add the following code to your `app.py` file:
+
+ ```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)
+ ```
+
+ This code imports the `serial` module from the `pyserial` Pip package. It then connects to the `/dev/ttyAMA0` serial port, which is the address of the serial port used by the Grove Pi Base Hat for its UART port. It also clears any existing data from this serial connection.
+
+ Next, a function called `print_gps_data` is defined to print the line passed to it to the console.
+
+ The code then enters an infinite loop, reading as many lines of text as possible from the serial port during each iteration. It calls the `print_gps_data` function for each line.
+
+ After processing all the data, the loop pauses for one second before repeating.
+
+1. Run this code. You will see raw output from the GPS sensor, which might look something like this:
+
+ ```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
+ ```
+
+ > If you encounter one of the following errors when stopping and restarting your code, add a `try - except` block to your while loop.
+
+ ```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)
+ ```
+
+> 💁 You can find this code in the [code-gps/pi](../../../../../3-transport/lessons/1-location-tracking/code-gps/pi) folder.
+
+😀 Congratulations! Your GPS sensor program is working successfully!
+
+---
+
+**Disclaimer**:
+This document has been translated using the AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). While we strive for accuracy, please note that automated translations may contain errors or inaccuracies. The original document in its native language should be regarded as the authoritative source. For critical information, professional human translation is recommended. We are not responsible for any misunderstandings or misinterpretations resulting from the use of this translation.
\ No newline at end of file
diff --git a/translations/en/3-transport/lessons/1-location-tracking/single-board-computer-gps-decode.md b/translations/en/3-transport/lessons/1-location-tracking/single-board-computer-gps-decode.md
new file mode 100644
index 00000000..c7043257
--- /dev/null
+++ b/translations/en/3-transport/lessons/1-location-tracking/single-board-computer-gps-decode.md
@@ -0,0 +1,75 @@
+
+# Decode GPS data - Virtual IoT Hardware and Raspberry Pi
+
+In this part of the lesson, you will decode the NMEA messages read from the GPS sensor by the Raspberry Pi or Virtual IoT Device, and extract the latitude and longitude.
+
+## Decode GPS data
+
+Once the raw NMEA data has been read from the serial port, it can be decoded using an open-source NMEA library.
+
+### Task - decode GPS data
+
+Program the device to decode the GPS data.
+
+1. Open the `gps-sensor` app project if it's not already open.
+
+1. Install the `pynmea2` Pip package. This package contains code for decoding NMEA messages.
+
+ ```sh
+ pip3 install pynmea2
+ ```
+
+1. Add the following code to the imports in the `app.py` file to import the `pynmea2` module:
+
+ ```python
+ import pynmea2
+ ```
+
+1. Replace the contents of the `print_gps_data` function with the following:
+
+ ```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')
+ ```
+
+ This code will use the `pynmea2` library to parse the line read from the UART serial port.
+
+ If the sentence type of the message is `GGA`, then this is a position fix message and is processed. The latitude and longitude values are read from the message and converted to decimal degrees from the NMEA `(d)ddmm.mmmm` format. The `dm_to_sd` function performs this conversion.
+
+ The direction of the latitude is then checked, and if the latitude is south, the value is converted to a negative number. Similarly, if the longitude is west, it is converted to a negative number.
+
+ Finally, the coordinates are printed to the console, along with the number of satellites used to determine the location.
+
+1. Run the code. If you are using a virtual IoT device, ensure the CounterFit app is running and the GPS data is being sent.
+
+ ```output
+ pi@raspberrypi:~/gps-sensor $ python3 app.py
+ 47.6423109,-122.1390293 - from 3 satellites
+ ```
+
+> 💁 You can find this code in the [code-gps-decode/virtual-device](../../../../../3-transport/lessons/1-location-tracking/code-gps-decode/virtual-device) folder, or the [code-gps-decode/pi](../../../../../3-transport/lessons/1-location-tracking/code-gps-decode/pi) folder.
+
+😀 Your GPS sensor program with data decoding was a success!
+
+---
+
+**Disclaimer**:
+This document has been translated using the AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). While we aim for accuracy, please note that automated translations may include errors or inaccuracies. The original document in its native language should be regarded as the authoritative source. For critical information, professional human translation is advised. We are not responsible for any misunderstandings or misinterpretations resulting from the use of this translation.
\ No newline at end of file
diff --git a/translations/en/3-transport/lessons/1-location-tracking/virtual-device-gps-sensor.md b/translations/en/3-transport/lessons/1-location-tracking/virtual-device-gps-sensor.md
new file mode 100644
index 00000000..56d865b6
--- /dev/null
+++ b/translations/en/3-transport/lessons/1-location-tracking/virtual-device-gps-sensor.md
@@ -0,0 +1,144 @@
+
+# Read GPS Data - Virtual IoT Hardware
+
+In this part of the lesson, you will add a GPS sensor to your virtual IoT device and read values from it.
+
+## Virtual Hardware
+
+The virtual IoT device will use a simulated GPS sensor that communicates over UART via a serial port.
+
+A physical GPS sensor typically has an antenna to receive radio signals from GPS satellites and converts these signals into GPS data. The virtual version simulates this by allowing you to set a latitude and longitude, send raw NMEA sentences, or upload a GPX file with multiple locations that can be returned sequentially.
+
+> 🎓 NMEA sentences will be explained later in this lesson.
+
+### Add the Sensor to CounterFit
+
+To use a virtual GPS sensor, you need to add one to the CounterFit app.
+
+#### Task - Add the Sensor to CounterFit
+
+Add the GPS sensor to the CounterFit app.
+
+1. Create a new Python app on your computer in a folder called `gps-sensor` with a single file named `app.py`, set up a Python virtual environment, and add the CounterFit pip packages.
+
+ > ⚠️ You can refer to [the instructions for creating and setting up a CounterFit Python project in lesson 1 if needed](../../../1-getting-started/lessons/1-introduction-to-iot/virtual-device.md).
+
+1. Install an additional Pip package to add a CounterFit shim that can communicate with UART-based sensors over a serial connection. Ensure you are installing this from a terminal with the virtual environment activated.
+
+ ```sh
+ pip install counterfit-shims-serial
+ ```
+
+1. Make sure the CounterFit web app is running.
+
+1. Create a GPS sensor:
+
+ 1. In the *Create sensor* box in the *Sensors* pane, open the *Sensor type* dropdown and select *UART GPS*.
+
+ 1. Leave the *Port* set to */dev/ttyAMA0*.
+
+ 1. Click the **Add** button to create the GPS sensor on port `/dev/ttyAMA0`.
+
+ 
+
+ The GPS sensor will be created and appear in the sensors list.
+
+ 
+
+## Program the GPS Sensor
+
+The virtual IoT device can now be programmed to use the virtual GPS sensor.
+
+### Task - Program the GPS Sensor
+
+Program the GPS sensor app.
+
+1. Make sure the `gps-sensor` app is open in VS Code.
+
+1. Open the `app.py` file.
+
+1. Add the following code to the top of `app.py` to connect the app to CounterFit:
+
+ ```python
+ from counterfit_connection import CounterFitConnection
+ CounterFitConnection.init('127.0.0.1', 5000)
+ ```
+
+1. Add the following code below this to import some required libraries, including the library for the CounterFit serial port:
+
+ ```python
+ import time
+ import counterfit_shims_serial
+
+ serial = counterfit_shims_serial.Serial('/dev/ttyAMA0')
+ ```
+
+ This code imports the `serial` module from the `counterfit_shims_serial` Pip package. It then connects to the `/dev/ttyAMA0` serial port, which is the address of the serial port used by the virtual GPS sensor for its UART port.
+
+1. Add the following code below this to read from the serial port and print the values to the 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)
+ ```
+
+ A function called `print_gps_data` is defined to print the line passed to it to the console.
+
+ Next, the code enters an infinite loop, reading as many lines of text as it can from the serial port during each iteration. It calls the `print_gps_data` function for each line.
+
+ After all the data has been read, the loop pauses for 1 second before trying again.
+
+1. Run this code, ensuring you use a different terminal than the one running the CounterFit app, so the CounterFit app remains active.
+
+1. From the CounterFit app, change the value of the GPS sensor. You can do this in one of the following ways:
+
+ * Set the **Source** to `Lat/Lon`, and specify a latitude, longitude, and the number of satellites used to get the GPS fix. This value will be sent only once, so check the **Repeat** box to have the data repeat every second.
+
+ 
+
+ * Set the **Source** to `NMEA` and add some NMEA sentences into the text box. All these values will be sent, with a delay of 1 second before each new GGA (position fix) sentence can be read.
+
+ 
+
+ You can use a tool like [nmeagen.org](https://www.nmeagen.org) to generate these sentences by drawing on a map. These values will be sent only once, so check the **Repeat** box to have the data repeat one second after all sentences have been sent.
+
+ * Set the **Source** to GPX file, and upload a GPX file with track locations. You can download GPX files from various popular mapping and hiking sites, such as [AllTrails](https://www.alltrails.com/). These files contain multiple GPS locations as a trail, and the GPS sensor will return each new location at 1-second intervals.
+
+ 
+
+ These values will be sent only once, so check the **Repeat** box to have the data repeat one second after all locations have been sent.
+
+ Once you have configured the GPS settings, click the **Set** button to apply these values to the sensor.
+
+1. You will see the raw output from the GPS sensor, which will look something like this:
+
+ ```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
+ ```
+
+> 💁 You can find this code in the [code-gps/virtual-device](../../../../../3-transport/lessons/1-location-tracking/code-gps/virtual-device) folder.
+
+😀 Your GPS sensor program was a success!
+
+---
+
+**Disclaimer**:
+This document has been translated using the AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). While we aim for accuracy, please note that automated translations may include errors or inaccuracies. The original document in its native language should be regarded as the authoritative source. For critical information, professional human translation is advised. We are not responsible for any misunderstandings or misinterpretations resulting from the use of this translation.
\ No newline at end of file
diff --git a/translations/en/3-transport/lessons/1-location-tracking/wio-terminal-gps-decode.md b/translations/en/3-transport/lessons/1-location-tracking/wio-terminal-gps-decode.md
new file mode 100644
index 00000000..a9a18d8b
--- /dev/null
+++ b/translations/en/3-transport/lessons/1-location-tracking/wio-terminal-gps-decode.md
@@ -0,0 +1,83 @@
+
+# Decode GPS data - Wio Terminal
+
+In this part of the lesson, you will decode the NMEA messages read from the GPS sensor by the Wio Terminal and extract the latitude and longitude.
+
+## Decode GPS data
+
+Once the raw NMEA data has been read from the serial port, it can be decoded using an open-source NMEA library.
+
+### Task - decode GPS data
+
+Program the device to decode the GPS data.
+
+1. Open the `gps-sensor` app project if it's not already open.
+
+1. Add a library dependency for the [TinyGPSPlus](https://github.com/mikalhart/TinyGPSPlus) library to the project's `platformio.ini` file. This library contains code for decoding NMEA data.
+
+ ```ini
+ lib_deps =
+ mikalhart/TinyGPSPlus @ 1.0.2
+ ```
+
+1. In `main.cpp`, add an include directive for the TinyGPSPlus library:
+
+ ```cpp
+ #include
+ ```
+
+1. Below the declaration of `Serial3`, declare a TinyGPSPlus object to process the NMEA sentences:
+
+ ```cpp
+ TinyGPSPlus gps;
+ ```
+
+1. Change the contents of the `printGPSData` function to the following:
+
+ ```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");
+ }
+ }
+ ```
+
+ This code reads the next character from the UART serial port into the `gps` NMEA decoder. After each character, it checks if the decoder has read a valid sentence, then verifies if it has read a valid location. If the location is valid, it sends the data to the serial monitor, along with the number of satellites that contributed to this fix.
+
+1. Build and upload the code to the Wio Terminal.
+
+1. Once uploaded, you can monitor the GPS location data using the serial monitor.
+
+ ```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
+ ```
+
+> 💁 You can find this code in the [code-gps-decode/wio-terminal](../../../../../3-transport/lessons/1-location-tracking/code-gps-decode/wio-terminal) folder.
+
+😀 Your GPS sensor program with data decoding was a success!
+
+---
+
+**Disclaimer**:
+This document has been translated using the AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). While we aim for accuracy, please note that automated translations may include errors or inaccuracies. The original document in its native language should be regarded as the authoritative source. For critical information, professional human translation is advised. We are not responsible for any misunderstandings or misinterpretations resulting from the use of this translation.
\ No newline at end of file
diff --git a/translations/en/3-transport/lessons/1-location-tracking/wio-terminal-gps-sensor.md b/translations/en/3-transport/lessons/1-location-tracking/wio-terminal-gps-sensor.md
new file mode 100644
index 00000000..3c20e58b
--- /dev/null
+++ b/translations/en/3-transport/lessons/1-location-tracking/wio-terminal-gps-sensor.md
@@ -0,0 +1,154 @@
+
+# Read GPS data - Wio Terminal
+
+In this part of the lesson, you will add a GPS sensor to your Wio Terminal and read values from it.
+
+## Hardware
+
+The Wio Terminal requires a GPS sensor.
+
+The sensor you'll use is a [Grove GPS Air530 sensor](https://www.seeedstudio.com/Grove-GPS-Air530-p-4584.html). This sensor can connect to multiple GPS systems for a fast and accurate location fix. It consists of two parts: the core electronics of the sensor and an external antenna connected by a thin wire to receive radio signals from satellites.
+
+This is a UART sensor, meaning it sends GPS data over UART.
+
+### Connect the GPS sensor
+
+The Grove GPS sensor can be connected to the Wio Terminal.
+
+#### Task - connect the GPS sensor
+
+Connect the GPS sensor.
+
+
+
+1. Insert one end of a Grove cable into the socket on the GPS sensor. It will only fit one way.
+
+1. With the Wio Terminal disconnected from your computer or other power source, connect the other end of the Grove cable to the left-hand Grove socket on the Wio Terminal as you face the screen. This is the socket closest to the power button.
+
+ 
+
+1. Position the GPS sensor so that the attached antenna has a clear view of the sky—ideally near an open window or outside. A clear signal is easier to achieve when there are no obstructions around the antenna.
+
+1. You can now connect the Wio Terminal to your computer.
+
+1. The GPS sensor has two LEDs: a blue LED that flashes when data is transmitted and a green LED that flashes every second when receiving data from satellites. Ensure the blue LED is flashing when you power up the Wio Terminal. After a few minutes, the green LED should start flashing. If it doesn't, you may need to reposition the antenna.
+
+## Program the GPS sensor
+
+The Wio Terminal can now be programmed to use the connected GPS sensor.
+
+### Task - program the GPS sensor
+
+Program the device.
+
+1. Create a new Wio Terminal project using PlatformIO. Name this project `gps-sensor`. Add code in the `setup` function to configure the serial port.
+
+1. Add the following include directive to the top of the `main.cpp` file. This includes a header file with functions to configure the left-hand Grove port for UART.
+
+ ```cpp
+ #include
+ ```
+
+1. Below this, add the following line of code to declare a serial port connection to the UART port:
+
+ ```cpp
+ static Uart Serial3(&sercom3, PIN_WIRE_SCL, PIN_WIRE_SDA, SERCOM_RX_PAD_1, UART_TX_PAD_0);
+ ```
+
+1. You need to add some code to redirect certain internal signal handlers to this serial port. Add the following code below the `Serial3` declaration:
+
+ ```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. In the `setup` function, below where the `Serial` port is configured, configure the UART serial port with the following code:
+
+ ```cpp
+ Serial3.begin(9600);
+
+ while (!Serial3)
+ ; // Wait for Serial3 to be ready
+
+ delay(1000);
+ ```
+
+1. Below this code in the `setup` function, add the following code to connect the Grove pin to the serial port:
+
+ ```cpp
+ pinPeripheral(PIN_WIRE_SCL, PIO_SERCOM_ALT);
+ ```
+
+1. Add the following function before the `loop` function to send the GPS data to the serial monitor:
+
+ ```cpp
+ void printGPSData()
+ {
+ Serial.println(Serial3.readStringUntil('\n'));
+ }
+ ```
+
+1. In the `loop` function, add the following code to read from the UART serial port and print the output to the serial monitor:
+
+ ```cpp
+ while (Serial3.available() > 0)
+ {
+ printGPSData();
+ }
+
+ delay(1000);
+ ```
+
+ This code reads from the UART serial port. The `readStringUntil` function reads up to a terminator character, in this case, a new line. This will read an entire NMEA sentence (NMEA sentences are terminated with a new line character). While data can be read from the UART serial port, it is read and sent to the serial monitor via the `printGPSData` function. Once no more data can be read, the `loop` delays for 1 second (1,000ms).
+
+1. Build and upload the code to the Wio Terminal.
+
+1. Once uploaded, you can monitor the GPS data using the serial monitor.
+
+ ```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
+ ```
+
+> 💁 You can find this code in the [code-gps/wio-terminal](../../../../../3-transport/lessons/1-location-tracking/code-gps/wio-terminal) folder.
+
+😀 Your GPS sensor program was a success!
+
+---
+
+**Disclaimer**:
+This document has been translated using the AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). While we aim for accuracy, please note that automated translations may include errors or inaccuracies. The original document in its native language should be regarded as the authoritative source. For critical information, professional human translation is advised. We are not responsible for any misunderstandings or misinterpretations resulting from the use of this translation.
\ No newline at end of file
diff --git a/translations/en/3-transport/lessons/2-store-location-data/README.md b/translations/en/3-transport/lessons/2-store-location-data/README.md
new file mode 100644
index 00000000..e065983c
--- /dev/null
+++ b/translations/en/3-transport/lessons/2-store-location-data/README.md
@@ -0,0 +1,477 @@
+
+# Store location data
+
+
+
+> Sketchnote by [Nitya Narasimhan](https://github.com/nitya). Click the image for a larger version.
+
+## Pre-lecture quiz
+
+[Pre-lecture quiz](https://black-meadow-040d15503.1.azurestaticapps.net/quiz/23)
+
+## Introduction
+
+In the previous lesson, you learned how to use a GPS sensor to capture location data. To visualize the location of a food-laden truck and its journey, this data needs to be sent to a cloud-based IoT service and stored appropriately.
+
+In this lesson, you'll explore different methods for storing IoT data and learn how to store data from your IoT service using serverless code.
+
+This lesson will cover:
+
+* [Structured and unstructured data](../../../../../3-transport/lessons/2-store-location-data)
+* [Send GPS data to an IoT Hub](../../../../../3-transport/lessons/2-store-location-data)
+* [Hot, warm, and cold paths](../../../../../3-transport/lessons/2-store-location-data)
+* [Handle GPS events using serverless code](../../../../../3-transport/lessons/2-store-location-data)
+* [Azure Storage Accounts](../../../../../3-transport/lessons/2-store-location-data)
+* [Connect your serverless code to storage](../../../../../3-transport/lessons/2-store-location-data)
+
+## Structured and unstructured data
+
+Computer systems process data, which comes in various forms and sizes. This data can range from single numbers to large text files, videos, images, and IoT data. Generally, data falls into one of two categories: *structured* data and *unstructured* data.
+
+* **Structured data** has a well-defined, rigid structure that doesn't change and often maps to tables with relationships. For example, a person's details, including their name, date of birth, and address.
+
+* **Unstructured data** lacks a fixed structure and can change frequently. Examples include documents like written reports or spreadsheets.
+
+✅ Research task: Can you think of other examples of structured and unstructured data?
+
+> 💁 There is also semi-structured data, which has some structure but doesn't fit neatly into fixed tables.
+
+IoT data is typically considered unstructured.
+
+Imagine equipping a fleet of vehicles on a large commercial farm with IoT devices. You might use different devices for different types of vehicles. For example:
+
+* For farm vehicles like tractors, you might want GPS data to ensure they are working in the correct fields.
+* For delivery trucks transporting food to warehouses, you might want GPS data, speed, and acceleration data to ensure safe driving, as well as driver identity and start/stop data to ensure compliance with local working hour laws.
+* For refrigerated trucks, you might want temperature data to ensure food remains at the correct temperature during transit.
+
+This data can change dynamically. For instance, if the IoT device is in a truck cab, the data it sends might vary depending on the trailer, such as sending temperature data only when a refrigerated trailer is attached.
+
+✅ What other IoT data might be captured? Consider the types of loads trucks carry and maintenance data.
+
+This data varies across vehicles but is sent to the same IoT service for processing. The IoT service must handle this unstructured data, storing it in a way that allows for searching and analysis while accommodating different data structures.
+
+### SQL vs NoSQL storage
+
+Databases are services that store and query data. They come in two types: SQL and NoSQL.
+
+#### SQL databases
+
+The first databases were Relational Database Management Systems (RDBMS), also known as relational databases or SQL databases. They use Structured Query Language (SQL) to add, remove, update, or query data. These databases consist of a schema—a predefined set of tables, similar to a spreadsheet. Each table has multiple named columns. When inserting data, you add a row to the table, filling in values for each column. This creates a rigid structure. While you can leave columns empty, adding a new column requires modifying the database and populating values for existing rows. These databases are relational, meaning one table can relate to another.
+
+
+
+For example, if you store a user's personal details in a table, you might assign a unique internal ID to each user. This ID can be used in another table to store details like their purchases. When looking up a user, you can use their ID to retrieve their personal details from one table and their purchases from another.
+
+SQL databases are ideal for storing structured data and ensuring it adheres to a schema.
+
+✅ If you're unfamiliar with SQL, take a moment to read about it on the [SQL page on Wikipedia](https://wikipedia.org/wiki/SQL).
+
+Popular SQL databases include Microsoft SQL Server, MySQL, and PostgreSQL.
+
+✅ Research task: Learn more about these SQL databases and their features.
+
+#### NoSQL databases
+
+NoSQL databases are named for their lack of rigid structure compared to SQL databases. They are also known as document databases because they can store unstructured data like documents.
+
+> 💁 Despite their name, some NoSQL databases allow SQL queries.
+
+
+
+NoSQL databases don't have a predefined schema, allowing you to insert unstructured data, often in JSON format. These documents can be organized into folders, similar to files on a computer. Each document can have different fields. For instance, if you store IoT data from farm vehicles, some documents might include accelerometer and speed data, while others might include trailer temperature data. Adding a new truck type with built-in scales to track produce weight would allow the IoT device to add this new field without requiring database changes.
+
+Popular NoSQL databases include Azure CosmosDB, MongoDB, and CouchDB.
+
+✅ Research task: Learn more about these NoSQL databases and their features.
+
+In this lesson, you'll use NoSQL storage to store IoT data.
+
+## Send GPS data to an IoT Hub
+
+In the previous lesson, you captured GPS data from a sensor connected to your IoT device. To store this data in the cloud, you need to send it to an IoT service. You'll use Azure IoT Hub, the same IoT cloud service from the previous project.
+
+
+
+### Task - send GPS data to an IoT Hub
+
+1. Create a new IoT Hub using the free tier.
+
+ > ⚠️ Refer to the [instructions for creating an IoT Hub from project 2, lesson 4](../../../2-farm/lessons/4-migrate-your-plant-to-the-cloud/README.md#create-an-iot-service-in-the-cloud) if needed.
+
+ Create a new Resource Group named `gps-sensor` and give the IoT Hub a unique name based on `gps-sensor`, such as `gps-sensor-`.
+
+ > 💁 If you still have your IoT Hub from the previous project, you can reuse it. Use the name of this IoT Hub and its Resource Group when creating other services.
+
+1. Add a new device to the IoT Hub named `gps-sensor`. Retrieve the connection string for the device.
+
+1. Update your device code to send GPS data to the new IoT Hub using the device connection string.
+
+ > ⚠️ Refer to the [instructions for connecting your device to an IoT Hub from project 2, lesson 4](../../../2-farm/lessons/4-migrate-your-plant-to-the-cloud/README.md#connect-your-device-to-the-iot-service) if needed.
+
+1. Send GPS data as JSON in the following format:
+
+ ```json
+ {
+ "gps" :
+ {
+ "lat" : ,
+ "lon" :
+ }
+ }
+ ```
+
+1. Send GPS data every minute to avoid exceeding your daily message limit.
+
+If you're using the Wio Terminal, ensure all necessary libraries are added, and set the time using an NTP server. Your code should read all data from the serial port before sending the GPS location, using the existing code from the previous lesson. Use the following code to construct the JSON document:
+
+```cpp
+DynamicJsonDocument doc(1024);
+doc["gps"]["lat"] = gps.location.lat();
+doc["gps"]["lon"] = gps.location.lng();
+```
+
+If you're using a Virtual IoT device, install all required libraries using a virtual environment.
+
+For both the Raspberry Pi and Virtual IoT device, use the existing code from the previous lesson to retrieve latitude and longitude values, then send them in the correct JSON format using the following code:
+
+```python
+message_json = { "gps" : { "lat":lat, "lon":lon } }
+print("Sending telemetry", message_json)
+message = Message(json.dumps(message_json))
+```
+
+> 💁 You can find this code in the [code/wio-terminal](../../../../../3-transport/lessons/2-store-location-data/code/wio-terminal), [code/pi](../../../../../3-transport/lessons/2-store-location-data/code/pi), or [code/virtual-device](../../../../../3-transport/lessons/2-store-location-data/code/virtual-device) folder.
+
+Run your device code and verify that messages are flowing into IoT Hub using the `az iot hub monitor-events` CLI command.
+
+## Hot, warm, and cold paths
+
+IoT data sent to the cloud isn't always processed in real time. Some data requires immediate processing, while other data can be processed later. The flow of data to services that process it at different times is categorized into hot, warm, and cold paths.
+
+### Hot path
+
+The hot path processes data in real time or near real time. This is used for alerts, such as notifying you when a vehicle approaches a depot or when the temperature in a refrigerated truck is too high.
+
+Hot path data is handled as soon as events are received by cloud services.
+
+### Warm path
+
+The warm path processes data shortly after it's received, often for reporting or short-term analytics. For example, you might use warm path data for daily mileage reports based on data collected the previous day.
+
+Warm path data is stored in quickly accessible storage.
+
+### Cold path
+
+The cold path stores historical data for long-term use, allowing processing whenever needed. For instance, you might use cold path data for annual mileage reports or analytics to optimize routes and reduce fuel costs.
+
+Cold path data is stored in data warehouses—databases designed for large, unchanging datasets that can be queried efficiently. Cloud applications typically run regular jobs to move data from warm path storage to the data warehouse.
+
+✅ Consider the data you've captured so far in these lessons. Is it hot, warm, or cold path data?
+
+## Handle GPS events using serverless code
+
+Once data is flowing into your IoT Hub, you can write serverless code to listen for events published to the Event-Hub-compatible endpoint. This represents the warm path, where data will be stored and used in the next lesson for journey reporting.
+
+
+
+### Task - handle GPS events using serverless code
+
+1. Create an Azure Functions app using the Azure Functions CLI. Use the Python runtime, create it in a folder named `gps-trigger`, and use the same name for the Functions App project. Ensure you set up a virtual environment for this.
+> ⚠️ You can refer to the [instructions for creating an Azure Functions Project from project 2, lesson 5](../../../2-farm/lessons/5-migrate-application-to-the-cloud/README.md#create-a-serverless-application) if needed.
+1. Add an IoT Hub event trigger that uses the Event Hub-compatible endpoint of the IoT Hub.
+
+ > ⚠️ You can refer to the [instructions for creating an IoT Hub event trigger from project 2, lesson 5](../../../2-farm/lessons/5-migrate-application-to-the-cloud/README.md#create-an-iot-hub-event-trigger) if needed.
+
+1. Set the Event Hub-compatible endpoint connection string in the `local.settings.json` file, and use the key for that entry in the `function.json` file.
+
+1. Use the Azurite app as a local storage emulator.
+
+1. Run your functions app to ensure it is receiving events from your GPS device. Make sure your IoT device is also running and sending GPS data.
+
+ ```output
+ Python EventHub trigger processed an event: {"gps": {"lat": 47.73481, "lon": -122.25701}}
+ ```
+
+## Azure Storage Accounts
+
+
+
+Azure Storage Accounts is a general-purpose storage service that can store data in various ways. You can store data as blobs, in queues, in tables, or as files, all at the same time.
+
+### Blob storage
+
+The term *Blob* stands for binary large objects, but it has become synonymous with any unstructured data. You can store any type of data in blob storage, from JSON documents containing IoT data to image and video files. Blob storage uses *containers*, which are named buckets where you can store data, similar to tables in a relational database. These containers can have one or more folders to store blobs, and each folder can contain additional folders, similar to how files are organized on your computer's hard drive.
+
+In this lesson, you will use blob storage to store IoT data.
+
+✅ Do some research: Read up on [Azure Blob Storage](https://docs.microsoft.com/azure/storage/blobs/storage-blobs-overview?WT.mc_id=academic-17441-jabenn)
+
+### Table storage
+
+Table storage allows you to store semi-structured data. It is essentially a NoSQL database, so it doesn't require a predefined schema, but it is designed to store data in one or more tables, with unique keys to identify each row.
+
+✅ Do some research: Read up on [Azure Table Storage](https://docs.microsoft.com/azure/storage/tables/table-storage-overview?WT.mc_id=academic-17441-jabenn)
+
+### Queue storage
+
+Queue storage allows you to store messages of up to 64KB in size in a queue. You can add messages to the back of the queue and read them from the front. Messages are stored indefinitely as long as there is available storage space, making it possible to store messages long-term and process them later. For example, you could add GPS data to a queue daily and process all the messages at the end of the month.
+
+✅ Do some research: Read up on [Azure Queue Storage](https://docs.microsoft.com/azure/storage/queues/storage-queues-introduction?WT.mc_id=academic-17441-jabenn)
+
+### File storage
+
+File storage allows you to store files in the cloud, which can be accessed by apps or devices using standard protocols. You can write files to file storage and mount it as a drive on your PC or Mac.
+
+✅ Do some research: Read up on [Azure File Storage](https://docs.microsoft.com/azure/storage/files/storage-files-introduction?WT.mc_id=academic-17441-jabenn)
+
+## Connect your serverless code to storage
+
+Your function app now needs to connect to blob storage to store messages from the IoT Hub. There are two ways to do this:
+
+* Use the blob storage Python SDK within the function code to write data as blobs.
+* Use an output function binding to automatically save the function's return value to blob storage.
+
+In this lesson, you will use the Python SDK to learn how to interact with blob storage.
+
+
+
+The data will be saved as a JSON blob with the following format:
+
+```json
+{
+ "device_id": ,
+ "timestamp" :