QuasarARM การกลับมาแก้ตัวอีกครั้ง #8

วันนี้ได้ R35 ขนาด 100 โอห์ม 0805 มาต่อแล้ว ทดลองจ่ายไฟ โลกก็สว่างขึ้นทันที

เท่านี้ก็สุขใจ ระหว่างรอ อุปกรณ์ที่เหลือทยอยมา หาเวลาประกอบอีก board ดู

QuasarARM การกลับมาแก้ตัวอีกครั้ง #7

วันนี้ได้ลองบัดกรี switch powerแและ menu ไล้ตะกั่ว ที่จุด switch UP DOWN LEFT RIGHT OK ครบ พอต่อไฟ กด POWER ก็ทำงาน กด MENU ก็แสดงได้ ยูเรก้าอีกครั้ง เอาสายไฟมาจิ้มครงปุ่มก็เลื่อนได้ โอเคเลย เป้าหมายคือการไปปรับ BACKLIGHT ของ LCD ในเมนู   หาข้อมูลของตารางเมนู จนเจอหวิธีปรับความสว่่าง Backlight ลองตั้ง Level จน 99 ก็ยังไม่สว่าง มานั่งเดาว่าขา 12 ของ STM32 บัดกรีไม่ดีหรือเปล่าหว่า ไล่ไปพบว่า R35 100 โอห์ม 1206 ไม่ได้ใส่ไว้  กำลังสั่งมา  ว่างๆจะเอา 100 โอห์ม 0805 ใส่ไปแทนก่อน    

QuasarARM การกลับมาแก้ตัวอีกครั้ง #6

คราวก่อนเราใช้ไฟ 3.3V จาก USB TTL UART  คราวนี้จะบัดกรีอุปกรณ์เพิ่มเติม โดยตั้งใจจะจ่ายไฟ ด้วยตนเอง และเชื่อม LCD 16×2 สีฟ้า เพื่อดูการทำงาน และเป็นกำลังใจให้ตัวเอง บนหนทางอีกยาวไกล
  • บัดกรี  AMS1117-3.3 ตามแบบต้องใช้ LD1117S33 แต่อันนี้ถอดจากอันเดิมได้ เอามาก่อน ไม่ลืมบัดกรีสาย ต่อ ไปยัง LP2985-33 แค่นี้ CPU ก็ทำงานแล้ว
  • จุดหนึ่งใช้ AMS1117 5 โวลท์ ตามแบบต้องใช้ LD1117S50 ของที่เพิ่งซื้อมายังงี้ แทนกันได้  จ่ายไฟให้กับ LCD มี VR10k อีก 1 ตัว
  • บัดกรี Resistor Capacitor และ Transistor BC846 องค์ประกอบให้ LCD ทำงาน
  • บัดกรี FM IC KT0803L  ส่วนนี้เกือบครบขาด L 1uH กับ Transistor 2SC3356
  • บัดกรี  MC34119
  • บัดกรี 24C08
มาดูที่ board  ต้องใช้ connector แบบยาว เอา LCD มาเชื่อม ลืมซื้ออุปกรณ์ ไม่มี ต้องโมดิฟายอุปกรณ์เอา เสียเวลามาก เชื่อมสายไฟเข้าก่อน AMS ทั้งคู่ต่อ power supply ตั้งไฟ 6V พอพร้อมแล้วจ่ายไฟ พบว่า LED สีฟ้า Diag แว๊บขึ้นมา มองจอ LCD เหมือนมีอะไรแว๊บ แต่มองไม่เห็นจอมืดมาก ลองปรับ VR10k พบตัวอักษร ขึ้นมารางๆ แสดงว่า ทำงานก็ดีใจ   แต่ก็สงสัยว่าทำไม LCD ไม่สว่างเลย  แม่บ้านให้ลูกมาตามไปนอนแล้ววันนี้คงพอแค่นี้ก่อน มีโอกาสพรุ่งนี้จะหาวิธีทำให้ LCD สว่างและทดสอบการทำงานของปุ่มต่างๆ รวมทั้งสั่งซื้ออุปกรณ์ที่เหลือให้ครบ นี่ยังไม่รวม การพัน Searchcoil คอยที่ยังต้องใช้เวลาศึกษาอีกนานสักระยะหนึ่ง  

QuasarARM การกลับมาแก้ตัวอีกครั้ง #5

วันนี้พอมีเวลา ก็ทำการทดลองการ upload  Firmware โดย Download มาจาก https://fandy.ucoz.org/publ/metalloiskatel_quot_kvazar_quot_quot_quasar_quot/metalloiskatel_quot_quasar_arm_quot/2-1-0-5  โดยใช้ Download Firmware รุ่น 2.6.3M ส่วนอุปกรณ์การอัพโหลด ได้ซื้อ FT232 USB to TTL UART มาไว้นานแล้ว และใช้ซอฟต์แวร์ upload ของ STMicroelectronics คือ STM32 Flash loader demonstrator (FLASHER-STM32) https://www.st.com/en/development-tools/flasher-stm32.html ความเข้าใจเดิมคือต้องupload ผ่าน ST-Link V2 ผ่านทาง Single wire interface module (SWIM) ผ่านทางขา NRST SWDCLK SWDIO GND VCC แต่ดูตัวอย่างจากเว็บ youtube ที่มีคนอัพโหลดเฟิร์มแวร์ที่ QuasarARM อุปกรณ์ที่สำเร็จมาแล้ว ก็ผ่าน TTL UART ในการ Upload ครั้งนี้ ใช้
  • ไฟ VCC 3.3V ของ UART บัดกรีขั้วมาลงบอร์ด
  •  GND จาก  UART กับ GND ของ board
  • เชื่อม TX ฝั่ง UART  เข้ากับ RX ของ board
  •  RX ฝั่ง UART เข้ากับ TX ของ board
จากนั้นเสียบ USB TTL เข้ากับคอม  Device Manager แสดง COM5 มาวัดไฟเข้าก็ 3.3V โอเค พร้อม โปรแกรม STM32 Flash loader demonstrator  ระบบแสดง COM5 อัตโนมัติ ปรับ speed จาก 115200 เป็น 9600 เอาแบบช้าแต่ชัวร์ 🙂 กด Next ถ้าระบบเชื่อมกัน จะผ่านไปเมนูถัดไป พอกดปุ่ม โปรแกรมค้างทันที แล้วขึ้น ข้อความ No response from the target,the Boot loader can not be started. Please, verify the boot mode configuration and the flash protection status, Reset your device then try again… ข้อความนี้เห็นมาเยอะมากแล้วใน board เดิม แสดงว่า อุปกรณ์ไม่เชื่อมกัน cpu ไม่ทำงาน ไม่ได้ตั้ง boot mode  แต่นี่เป็น board ใหม่ มีคนทำสำเร็จ YouTube แสดงว่า ต้องมีอะไรผิดพลาด ต้องตรวจสอบอีกครั้ง พบว่า ไม่ได้ต่อไฟ 3.3V อีกจุด จาก IC LP2985-33 เนื่องจาก สั่งของแล้วยังไม่มา จึงต่อสายไฟ เชื่อม 3.3V มาเข้าอีกจุด คราวนี้ลองย้อนการทำงานใหม่ พอกด Next จอก็ขึ้น ยูเรก้า ผ่านแล้ว เท่าที่ดูใน youtube มาจุดนี้นี่สำเร็จไปค่อนนึงแล้ว กด Next จากนั้นกด Next ใส่ชื่อไฟล์ ที่upload ลงไป ผมใช้ QuasarARM_261M.hex จากนั้นกด Next ขั้นตอน load ไปเรื่อยๆ จน upload เสร็จ ยูเรกา อีกครั้ง  

QuasarARM การกลับมาแก้ตัวอีกครั้ง #3

บอร์ด PCB และอุปกรณ์บางส่วนมาแล้ว น่าจะลองเริ่มทำเล่นๆ ได้ แต่ก็รอจน ชุด Capacitor และ Resistor มาถึงได้วันสองวัน แกะดูบอร์ด QuasarARM PCB ปรากฎว่า น่าผิดหวัง คือในเวปบอกว่า เป็น PCB รุ่น 0.6 แต่อันนี้ไม่ระบุรุ่น น่าจะเป็น รุ่น 0.5C ความแตกต่างของรุ่น 0.5 กับ 0.6 อยู่ที่ QuasarARM 0.6 – เพิ่ม IC CP2102 ทำให้ Quasar สามารถ UP Firmware ผ่าน USB ได้
  • เปลี่ยน LD1117 ที่เลี้ยง LCD เป็น LD1117S50
  • เปลี่ยน  LD1117V33 ตัวแรกที่เลี้ยง CPU เป็น LD1117S33 และ LD1117V33 เป็น  LP2985-33 ดูว่า เพื่อความเสถียรภาพทางไฟฟ้าและป้องกันการกวนของคลื่นต่อง CPU
  • เปลี่ยน MCP6022 เป็น LT6203 อันนี้แก้ noise โดยตรง
  • มีวงจรวิทยุ FM IC KT0803L
  • เปลี่ยน LM321 (ผมซื้อมาแล้ว) เป็น BC846 ร่วมกับ 2N7002
  • เปลี่ยน Jack Stereo จาก SJ1-3515 เป็น PJ-327A
ผมได้สั่งซื้ออุปกรณ์บางส่วนอ้างอิง Partlist 0.5 ไป พอมาดูจึงทยอยสั่งอุปกรณ์ของ 0.6 ไป เริ่มต้นการบัดกรี  STM32F100 โดย STM32F100C8 ชุดนี้ เหลือมาจากการซื้อเมื่อปี 2558  ลง PCB  ความยากของที่ต้องเจอที่ขาเล็กมากกกกกก ผมอายุ 40 กว่าปีแล้วสายตาไม่ใช่คนหนุ่มดังนั้น ยิ่งยากเข้าไปใหญ่ ใช้แว่นตาขนาดสายตายาว 110 ทำให้สามารถเห็นชัดเจนขึ้น และอุปกรณ์ช่วยดู ที่เคยซื้อมา นานแล้ว จริงๆแล้วซื้อแว่นช่วยดู มา แต่ปรากฏว่าใช้ประโยชน์อะไรไม่ได้เลย ห่วยมาก ใช้หัวแร้งที่ติดมากับเครื่องเป่าลมร้อน พยายามใจเย็นๆ เหนื่อย ล้าก็หยุด ไม่ดันทุรังต่อ สามารถทำไปได้  3 แผ่น น่าจะรอด 1 แผ่น อีกสองแผ่น ดูแย่หน่อย อาจโดนเป่าออก เพื่อลดความเสียง สั่ง STM32F100C8 มาเก็บไว้ก่อน ของเดิมเหลืออีก 4 สั่งมาอีก  10 ตัว จาก Aliexpress ตัวละ 0.754 us ประมาณ 24 บาทเศษ (1 us 32 บาท)  ถ้ามีเวลาจะลองใส่อุปกรณ์เพิ่มเติม ดูก่อนเพื่อทดสอบ  

QuasarARM การกลับมาแก้ตัวอีกครั้ง #2

สวัสดี ผมทำโปรเจคนี้เริ่มตั้งแต่ต้นเดือนมกราคม 2563 เป็นต้นมา สั่ง PCB  QuasarARM วงจรรุ่นใหม่ เวอร์ชั่น 0.6 จาก PCBWay เจ้าเก่า ซึ่งมีแผ่นรุ่นนี้ขาย รออยู่ 1 เดือนจะได้ของ Capacitor  Resistor Transistor IC ส่วนใหญ่ขนาด 0805 สามารถสั่งทาง Aliexpress ในราคาไม่แพงนัก ถ้าถูก จะรอนานหน่อย ประมาณ 2-3 สัปดาห์ บางอันเป็นเดือน รอได้ไม่รีบ รอมานานหลายปีแว้วววว ชิ้นส่วน บางส่วนได้มากจากของเดิม ที่ซื้อไว้  ตัวผมเองในขณะนี้ น่าจะมีความรู้ความเข้าใจมากขึ้น ไม่ต้องมั่ว เหมือนแต่ก่อน  อุปกรณ์ SMD มีความเข้าใจ เรื่องขนาดที่มีมากมาย ทั้ง  0603 1210 1206 0805  เยอะแยะไปหมด  ความรู้อันนี้นำไปสู่การซื้ออุปกรณ์ที่ถูกต้อง และมีส่วนให้ประกอบแล้ว ทำงานได้ตามมา รวมทั้ง มีคลิป youtube และหลายแหล่ง หลากภาษา มาประกอบความเข้าใจ ทั้งการจัดการเรื่อง upload firmware และจัดการอุปกรณ์ วันนี้พอมีเวลส ลองเอาบอร์ดเดิมกลับมาดูอีกครั้ง ลองแก้ไข บัดกรี วัดวงจร พบว่า ช็อต พยายามแก้ไขแล้วปรากฏว่ามัน ไม่ทำงาน  จึงลองถอดอุปกรณ์บางส่วนย้ายไปยัง PCB เดิม ที่มี STM32 อยู่แล้ว ก็ไม่รอด ดูแล้วยิ่งทำ ยิ่งทำให้ลดทอนกำลังใจ  ดังนั้นผมจึงทิ้งไม่ไปต่อกับบอร์ดเดิม รออุปกรณ์ชุดใหม่ดีกว่า  

QuasarARM การกลับมาแก้ตัวอีกครั้ง #1

ปี 2558 ภาคใต้เกิดปัญหาสามจังหวัด มีระเบิดหลายจุด  เลยมีความ มีความสนใจทดลองทำเครื่องตรวจโลหะ เพื่อค้นหาวัตถุระเบิดที่ฝังดินอยู่ ประกอบกับ ทองแพง โชคดีอาจมีคุณสมบัติตรวจหาทองได้ด้วย เลยคุยโวโอ้อวดโม้ไว้กับพี่ชายและภรรเมียไว้  โดยเฉพาะเมีย บอกว่าจะทำเครื่องหาทอง เพื่อจะได้ไม่ขัดขวางโครงการ ประมาณ เมษา 58 เริ่มค้นหาข้อมูล Google เครื่องตรวจจับโลหะ ก็มีหลายแบบมาก ส่วนใหญ่จะ บอกเป็นนัยๆ แล้วก็ขายของ หรือ วงจรระบบ มีแต่โบราณมากๆ หาไปก็ลงตัวที่แบบของรัสเซีย ชื่อว่า Quasar ซึ่งพัฒนามาหลายรุ่น จนพบว่า รุ่นหนึ่งชื่อว่า QuasarARM เริ่มพัฒนามาตั้งแต่มี 2556 (2013) ล่าสุดในตอนนั้น หัวใจเป็น Arm Cortex-M3 Microcontrollers ของ STMicroelectronics ชื่อ STM32F100 ดูแล้วไม่โบราณ แบบ อนาลอค แน่นอนว่า การอัพเดทอะไร ด้วย Firmware ทันสมัยไม่หยอก ด้วยความบ้าบิ่น ไฟแรง และเมื่อได้วงจรมาแล้ว ก็ทำการแกะข้อมูล แปลภาษารัสเซีย ซึ่งยากมาก Google Translate ช่วยได้เล็กน้อย แปลแล้ว งงในงง ในส่วนศัพท์ทางอิเล็กทรอนิกส์ของรัสเซียกับบ้านเราต่างกัน บ้านเรา มาตรฐานสากล นี่ งงมากๆ  เช่น Capacitor เขียน 15  เฉยๆ คือ 15pf   4700 คือ 4.7nf  0,033 คือ 33nf  0,1 คือ 100nf  1,0 คือ 1 uf  ไม่เข้าใจจนต้อง e-mail ไปถามคุณ fandy เจ้าของ Quasar ซึ่งเค้าดูแปลกใจ เล็กน้อย และดูจะไม่อยากตอบเท่าไหร่ เข้าใจว่า เหมือนโปรขั้นเทพ คุยกับเด็กพึ่งหัด พอได้รายละเอียดซึ่งผมคิดว่าสมบูรณ์แล้ว (จริงๆ คือไม่สมบูรณ์เลย ยังมั่วอยู่มาก ) ก็เริ่มซื้ออุปกรณ์ STM32 Capacitor ,Resistor  ทั้งการซื้อจากตัวต้วแทนในไทย บ้านหม้อ โชคชัย Electronics Source ฯลฯ  ส่วนใหญ่จะของที่ต้องการจะไม่มี มีก็แพง เลยค้นหาจาก Online จาก Mouser Electronics ,RS-Online ,Digikey Online มีของที่ต้องการ แต่แพงและ ในช่วงหลัง มาพบ WT ออนไลน์ ในไทย พบว่าของไม่แพง หาอุปกรณ์เสริมจาก Aliexpress,Alibaba ได้ ST-Link V2  ตะกั่วเหลว ,ทองแดงซับตะกั่ว , หัวทิปหัวแร้ง ,ที่จับ SMD (ได้มาแต่ไม่สมบูรณ์ ปัจจุบันใช้ปากคีบ) ชิ้นส่วน ได้ LCD Blue  16×2 5V เอามา 5 ตัว STM32F100 4 ตัว ตัวละ 0.9US 67 บาท ค่าเงิน 1 us =35.6 บาท (2015-2558)  ซึ่ง STM ชุดนี้ได้เอามาใช้ใน ชุดปัจจุบันที่ทำงานได้ด้วย น่าแปลกใจว่า ทำไมในขณะนั้นผมไม่ได้ซื้อชิ้นส่วนประกอบ ทั้ง R C ทาง Aliexpress เลย ในส่วน PCB ประกอบ เป็นวงจร พบว่า Quasar มี ไฟล์ Lay6 ซึ่งเป็น PCB Layout  มาแล้ว แต่ใช้ไม่เป็น ลองหา หา Protel มาเขียน PCB เพราะเคยใช้นานแล้ว  แต่ยาก เลยหาข้อมูลพบกว่า ไฟล์ Lay6  ใช้โปรแกรม Sprint Layout 6.0 (สร้างโดย Abacom Engineer เยอรมัน)  ในการ เปิดไฟล์ PCB มาแก้  โปรแกรม Sprint Layout เท่าที่ดูหลายเวป นิยมในแุถวยุโรปตะวันออกมาก ใช้ง่าย crack ได้ สามารถแปลงเป็น Gerber เพื่อส่งไปทำ PCBได้เลย และแก้ไขเล็กน้อย ได้เป็น PCB ไฟล์ ที่ต้องการ เดือน กรกฎาคม 2558 สั่งทำ PCB Online จาก PCBway China (ตอนนั้นอยู่ Hong kong)  เพราะติดต่อบ้านเรา หลายที่ทำไม่ได้ (ซีเกท เซอร์กิต)  ที่ทำได้ก็แพงมาก หลายพัน มีขั้นต่ำ ได้มา  5 แผ่น 24 US 8 ร้อยกว่าบาท ค่าเงิน 1 us =35.6 บาท (2015-2558) รอประมาณ ครึ่งเดือนได้ของ ดีใจมากๆ เป็นประสบการณ์การสั่ง PCB Online ครั้งแรกๆ เมื่อของมาเกือบครบ แล้วก็เริ่มประกอบ และเพิ่งพบว่า นรกที่แท้ทรู เพิ่งเริ่มนั่นเอง เริ่มจากนรก ขุมแรก การบัดกรี STM31F100C8 เป็น SMD แบบ LQFP48 ขาเล็กมาก ขนาด 0.22 มม. ระยะห่างระหว่างขา0.28 มม. แรกๆ ใช้หัวแร้งธรรมดา หัวใหญ่ ปาดไม่ดี ตะกั่วติดขาเป็นทาง ต้องใช้ แถบทองแดงไว้ดูดตะกั่ว  ลองใช้ตะกั่วเหลวร่วมกับที่เป่าลมร้อน ที่ซื้อมานานแล้ว แต่เป่าแล้วอุปกรณ์พัง เลยไม่ค่อยได้ใช้ อาจเพร่าะศึกษามาไม่ดี แต่มันก็มีประโยชน์ เพราะมี หัวแร้งปรับอุณหภูมิ มาด้วย ปลายแหลมเปี๊ยบ (ในตอนนั้น) และได้นำมาใช้ในเวลาต่อมา ไว้บัดกรี รวมทั้งสั่งหัวตะกั่วบัดกรีมาใหม่ แต่ดันใส่กับหัวแร้งเดิมไม่ได้ 🙁   รวมทั้งมีส่วนในความสำเร็จขั้นหนึ่งในโปรเจคแก้ตัวในปัจจุบัน (ผลงาน 2 PCB QuasarARM 0.5 วงจรทำงาน เสีย 1 PCB รอซ่อม ขา CPU) ที่จริงผมก็ซื้อ หัวแร้งมาใหม่นะ แต่ขาดันไม่ตรงกัน ต้องรอโมดิฟาย พอจะใช้ก็หาไม่เจอ เดีํยวเจอแล้วจะเอามาใช้ สิ่งที่ผมขาดไปคือแว่นขยาย ซึ่งเหมาะแก่การบัดกรีอุปกรณ์เล็กๆ ในเวลาต่อมาผมก็หาซื้อได้่ หลังจากบัดกรี STM32 ไป สาม PCB ก็ลองหาอันที่ เหมาะสมที่คิดว่ารอด และหวังว่า อันที่เหลือ จะเป่าออก แล้วบัดกรีใหม่ในเวลาอันเหมาะสม ซึ่งเวลานั้นยังไม่เคยเกิดขึ้นเลยจนถึงปัจจุบัน ต่อมาก็บัดกรี SMD Capacitor และ Resistor ที่ได้มาตาม ยถากรรม ใหญ่บ้างเล็กบ้าง ค่าตรงมั่ง ใกล้เคียงบ้าง ลุยบัดกรีจนเกือบครบ หลังจากลุยดึกมาเป็นสัปดาห์ก็บัดกรีเสร็จ ก็ได้เวลา ทดลองจ่ายไฟ แล้ว พบว่าไม่ทำงาน ก็พยายามวัดโน้นนี่นั่น ไปเรื่อย  นำไปสู่การบัดกรีอันที่ 2 ทดลองเชื่อมระบบ ST Link V2 กับวงจรแต่ไม่สำเร็จ ข้อสันนิษฐานในตอนนั้นคือ ตัว Microcontroller STM32F100 อาจถูกความร้อนจากที่เป่าลมร้อนจนเสียหาย  อาจต้องเปลี่ยน Microcontroller ทิ้ง ในเวลาถัดมา การมาถึงของสิ่งใหม่ ก็ยุติทุกอย่าง นั่นคือการมาถึงของ DJI Phantom 2 Drone ทำให้โครงการเครื่องตรวจโลหะ หยุดลงชั่วคราว มีนาคม 2559 สั่งหัวเป่าลมร้อนมาเพิ่ม เพื่อจะถอด STM32 อุปกรณ์ออก สั่ง GM328 ตัววัด Transistor ว่าเป็นแบบ MOS,NPN,PNP และวัดค่า L C R มาในตัว แต่ก็ไม่ได้ทำต่อ และหยุดโครงการไว้เพียงเท่านี้ เก็บเรื่องนี้ เป็นแผลลึกๆ ในใจในการทำงานด้านอิเล็กทรอนิกส์ ที่ไม่ได้เรื่องครั้งหนึ่ง และเป็นเรื่องให้ภรรเมียยกมาพูดในแต่ละครั้ง พูดทีไรแทงใจทุกที  รอวันนานไปเรื่องนี้คงเงียบลง  นานๆ จะยกอุปกรณ์มาดูสักครั้งเป็นที่ระลึก เมื่อต้นปี 2563 นี้ ภรรยาได้หยิบยกเรื่องนี้มาพูดขึ้นอีกครั้ง ผมรู้สึกว่า เรื่องนี้ยังไม่จบ และจะต้อง ทำไมมันใช้ได้  ดังนั้นผมจึงค้นหาข้อมูลใหม่อีกครั้ง  พบหลายปีมานี้ QuasarARM พัฒนามาเรื่อยๆ ทั้งอุปกรณ์และ firmware มีขายทั้งอุปกรณ์สำเร็จ (ราคาก็แพงเหมือนเดิม) มีข้อข้อมูลที่ เป็นสากลมากขึ้นและละเอียดมากขึ้น  และเราสามารถซื้อชิ้นส่วนอุปกรณ์ออนไลน์จาก aliexpress และที่อื่นๆ ได้  ในราคาจับต้องได้ เอาน่ามาลองกันอีกซักตั้ง สู้โว้ย

get WAN IP arduino

void GetExternalIP()
{
WiFiClient client;
if (!client.connect(“api.ipify.org”, 80)) {
Serial.println(“Failed to connect with ‘api.ipify.org’ !”);
}
else {
int timeout = millis() + 5000;
client.print(“GET /?format=json HTTP/1.1\r\nHost: api.ipify.org\r\n\r\n”);
while (client.available() == 0) {
if (timeout – millis() < 0) {
Serial.println(“>>> Client Timeout !”);
client.stop();
return;
}
}
int size;
while ((size = client.available()) > 0) {
uint8_t* msg = (uint8_t*)malloc(size);
size = client.read(msg, size);
Serial.write(msg, size);
free(msg);
}
}
}

credit:martinayotte

source:https://www.esp8266.com/viewtopic.php?f=6&t=12782

 

Arduino Fix IP wifi

ใส่ code นี้ตอนกำหนด parameter

IPAddress staticIP(192, 168, xx, xx); //ESP static IP address
IPAddress gateway(192, 168, xx, 1); //IP Address of your WiFi Router (Gateway)
IPAddress subnet(255, 255, 255, 0); //Subnet mask
IPAddress primaryDNS(8, 8, 8, 8); //optional
IPAddress secondaryDNS(8, 8, 4, 4); //optionalDNS

แทรก code ถัดจาก void setup()

// Configures static IP address
if (!WiFi.config(staticIP, gateway, subnet, primaryDNS, secondaryDNS)) {
Serial.println(“STA Failed to configure”);
}

 

ESP32 wind Speed (Anemometer) thingspeak+fix IP wifi

// create 04-dec-2019

#include<WiFi.h>
#include “ThingSpeak.h”

//—————- Fill in your credentails thingspeak 2019 ———————
char ssid[] = “XXXX”; // your network SSID (name)
char pass[] = “xxxxxx”; // your network password
unsigned long myChannelNumber = xxxxxx; // Replace the 0 with your channel number
const char * myWriteAPIKey = “xxxxxxxxxxxx”; // Paste your ThingSpeak Write API Key between the quotes
String myStatus = “”;
//——————————————————————

WiFiClient client;
int number = 0;
//Static IP address configuration
IPAddress staticIP(192, 168, xx,xx); //ESP static IP address
IPAddress gateway(192, 168, xx, 1); //IP Address of your WiFi Router (Gateway)
IPAddress subnet(255, 255, 255, 0); //Subnet mask
IPAddress primaryDNS(8, 8, 8, 8); //optional
IPAddress secondaryDNS(8, 8, 4, 4); //optionalDNS

//wind speed parameter
const int m_time = 5; //Measure time in Seconds
int wind_ct = 0;
float windkm = 0.0;
float windms = 0.0;
unsigned long ttime = 0;

void setup()
{
Serial.begin(115200);
// Configures static IP address
if (!WiFi.config(staticIP, gateway, subnet, primaryDNS, secondaryDNS)) {
Serial.println(“STA Failed to configure”);
}

// connect wifi
Connect_to_Wifi();

// time parameter
ttime = millis();

WiFi.mode(WIFI_STA);
ThingSpeak.begin(client); // Initialize ThingSpeak

}

void loop()
{

meassure();

Serial.print(“ความเร็วลม: “);
Serial.print(windkm); //Speed in Km/h
Serial.print(” km/h – “);
Serial.print(windms); //Speed in m/s
Serial.println(” m/s”);

// Write to ThingSpeak. There are up to 8 fields in a channel, allowing you to store up to 8 different
// pieces of information in a channel. Here, we write to field 1.
// set the fields with the values
ThingSpeak.setField(1, windkm);
ThingSpeak.setField(2, windms);

// set the status
ThingSpeak.setStatus(myStatus);

//int x = ThingSpeak.writeField(myChannelNumber, 1, windkm, myWriteAPIKey);
int x = ThingSpeak.writeFields(myChannelNumber, myWriteAPIKey);
// Check the return code
if(x == 200) {
Serial.println(“ThingSpeak Channel update successful.”);
}
else{
Serial.println(“Problem updating channel. HTTP error code ” + String(x));
}

number++;
if(number > 99){
number = 0;
}

delay(20000); // Wait 20 seconds before sending a new value
delay(20000);

}

void countWind() {
wind_ct ++;
}

void meassure() {
wind_ct = 0;
ttime = millis();
attachInterrupt(16, countWind, RISING);
delay(1000 * m_time);
detachInterrupt(1);
windkm = (float)wind_ct / (float)m_time * 2.4;
windms = windkm/3.6;
}

void Connect_to_Wifi()
{

// We start by connecting to a WiFi network
Serial.println(“Connecting to “);
Serial.println(ssid);
WiFi.begin(ssid, pass);
//Serial.println();
Serial.println();
Serial.print(“Wait for WiFi… “);

while (WiFi.status() != WL_CONNECTED) {
Serial.print(“.”);
delay(500);
}

Serial.println(“”);
Serial.println(“WiFi connected”);
Serial.print(“IP address: “);
Serial.println(WiFi.localIP());
}

source:https://github.com/mathworks/thingspeak-arduino